Fire Brand and Frost Brand have a chance to avoid taking rust damage
support ^R (and ^L in numpad mode) to request display repaint during direction
choosing and location choosing prompting modes
+intelligent pets will use keys to unlock doors
Platform- and/or Interface-Specific New Features
{
register struct obj *obj;
struct obj *wep = MON_WEP(mon);
- boolean item1 = FALSE, item2 = FALSE;
+ boolean item1 = FALSE, item2 = FALSE, item3 = FALSE;
if (is_animal(mon->data) || mindless(mon->data))
- item1 = item2 = TRUE;
+ item1 = item2 = item3 = TRUE;
if (!tunnels(mon->data) || !needspick(mon->data))
item1 = TRUE;
+ if (nohands(mon->data) || verysmall(mon->data))
+ item3 = TRUE;
for(obj = mon->minvent; obj; obj = obj->nobj) {
if (!item1 && is_pick(obj) && (obj->otyp != DWARVISH_MATTOCK
|| !which_armor(mon, W_ARMS))) {
item2 = TRUE;
continue;
}
+ if (!item3 && obj->otyp == SKELETON_KEY) {
+ item3 = TRUE;
+ continue;
+ }
if (!obj->owornmask && obj != wep) return obj;
}
return (struct obj *)0;
You("get released!");
}
if (!nohands(mtmp->data) && !verysmall(mtmp->data)) {
- allowflags |= OPENDOOR;
- if (m_carrying(mtmp, SKELETON_KEY)) allowflags |= BUSTDOOR;
+ allowflags |= OPENDOOR;
+ if (m_carrying(mtmp, SKELETON_KEY)) allowflags |= UNLOCKDOOR;
+ /* note: the Wizard and Riders can unlock doors without a key;
+ they won't use that ability if someone manages to tame them */
}
if (is_giant(mtmp->data)) allowflags |= BUSTDOOR;
if (tunnels(mtmp->data)
if(mb_trapped(mtmp)) return(2);
} else {
if (flags.verbose) {
- if (canseeit)
- You_see("a door unlock and open.");
+ if (canseemon(mtmp))
+ pline("%s unlocks and opens a door.",
+ Monnam(mtmp));
+ else if (canseeit)
+ You_see("a door unlock and open.");
else if (!Deaf)
- You_hear("a door unlock and open.");
+ You_hear("a door unlock and open.");
}
here->doormask = D_ISOPEN;
/* newsym(mtmp->mx, mtmp->my); */