# Non diggable walls
NON_DIGGABLE:(30,06,46,13)
# Objects
-CONTAINER:'`',"statue",(36,10),uncursed,"knight",1,"Perseus"
+CONTAINER:'`',"statue",(36,10),uncursed,"knight",3,"Perseus"
OBJECT[75%]:'[',"shield of reflection",contained,cursed,+0
OBJECT[25%]:'[',"levitation boots",contained,random,+0
OBJECT[50%]:')',"scimitar",contained,blessed,+2
NON_DIGGABLE:(01,02,06,17)
NON_DIGGABLE:(60,02,73,17)
# Objects
-CONTAINER:'`',"statue",(68,10),uncursed,"knight",1,"Perseus"
+CONTAINER:'`',"statue",(68,10),uncursed,"knight",3,"Perseus"
OBJECT[25%]:'[',"shield of reflection",contained,cursed,+0
OBJECT[75%]:'[',"levitation boots",contained,random,+0
OBJECT[50%]:')',"scimitar",contained,blessed,+2
avoid integer division rounding error when calculating carrying capacity
don't lock/unlock a door while in a pit, to be consistent with door opening
infravision should not make invisible player "visible" (it doesn't for monsters)
+Perseus statue should always be male
Platform- and/or Interface-Specific Fixes
marks your eggs, spinach tins
royal coffers for a court ( == 2)
tells which fruit a fruit is
- special for uball and amulet %% BAH */
+ special for uball and amulet
+ historic and gender for statues */
+#define STATUE_HISTORIC 0x01
+#define STATUE_MALE 0x02
+#define STATUE_FEMALE 0x04
char oclass; /* object class */
char invlet; /* designation in inventory */
char oartifact; /* artifact array index */
case ROCK_CLASS:
if (typ == STATUE)
Sprintf(buf, "%s%s of %s%s",
- (Role_if(PM_ARCHEOLOGIST) && obj->spe) ? "historic " : "" ,
+ (Role_if(PM_ARCHEOLOGIST) && (obj->spe & STATUE_HISTORIC)) ? "historic " : "" ,
actualn,
type_is_pname(&mons[obj->corpsenm]) ? "" :
(mons[obj->corpsenm].geno & G_UNIQ) ? "the " :
case STATUE: otmp->corpsenm = mntmp;
if (Has_contents(otmp) && verysmall(&mons[mntmp]))
delete_contents(otmp); /* no spellbook */
- otmp->spe = ishistoric;
+ otmp->spe = ishistoric ? STATUE_HISTORIC : 0;
break;
case SCALE_MAIL:
/* Dragon mail - depends on the order of objects */
struct monst *mon = 0;
struct obj *item;
coord cc;
- boolean historic = (Role_if(PM_ARCHEOLOGIST) && !flags.mon_moving && statue->spe);
+ boolean historic = (Role_if(PM_ARCHEOLOGIST) && !flags.mon_moving && (statue->spe & STATUE_HISTORIC));
if (statue->oxlth && statue->oattached == OATTACHED_MONST) {
cc.x = x, cc.y = y;
return (struct monst *)0;
}
+ /* allow statues to be of a specific gender */
+ if (statue->spe & STATUE_MALE)
+ mon->female = FALSE;
+ else if (statue->spe & STATUE_FEMALE)
+ mon->female = TRUE;
/* if statue has been named, give same name to the monster */
if (statue->onamelth)
mon = christen_monst(mon, ONAME(statue));
obj_extract_self(item);
place_object(item, obj->ox, obj->oy);
}
- if (Role_if(PM_ARCHEOLOGIST) && !flags.mon_moving && obj->spe) {
+ if (Role_if(PM_ARCHEOLOGIST) && !flags.mon_moving && (obj->spe & STATUE_HISTORIC)) {
You_feel("guilty about damaging such a historic statue.");
adjalign(-1);
}