non-moving goal-oriented monsters

Monsters with goals like M3_WANTSBOOK often wouldn't move if another
monster was standing on the the goal object, add code for the missing case
This commit is contained in:
cohrs
2002-02-13 03:26:24 +00:00
parent 648cad154f
commit 6d0723aae2
2 changed files with 19 additions and 14 deletions

View File

@@ -427,6 +427,7 @@ make wands of speed or slow monster known if their effect
on monsters is observed; likewise for speed boots
gold detection "materially poor" message inappropriate if you have hidden_gold()
cannot reflect back an invisible umber hulk or medusa's attack
monsters with M3_WANTSBOOK often couldn't move in the Wizard-level
Platform- and/or Interface-Specific Fixes

View File

@@ -341,21 +341,25 @@ tactics(mtmp)
return(0);
}
if(where == STRAT_GROUND) {
if(!MON_AT(tx, ty) || (mtmp->mx == tx && mtmp->my == ty)) {
/* teleport to it and pick it up */
rloc_to(mtmp, tx, ty); /* clean old pos */
if(!MON_AT(tx, ty) || (mtmp->mx == tx && mtmp->my == ty)) {
/* teleport to it and pick it up */
rloc_to(mtmp, tx, ty); /* clean old pos */
if ((otmp = on_ground(which_arti(targ))) != 0) {
if (cansee(mtmp->mx, mtmp->my))
pline("%s picks up %s.",
Monnam(mtmp),
(distu(mtmp->my, mtmp->my) <= 5) ?
doname(otmp) : distant_name(otmp, doname));
obj_extract_self(otmp);
(void) mpickobj(mtmp, otmp);
return(1);
} else return(0);
}
if ((otmp = on_ground(which_arti(targ))) != 0) {
if (cansee(mtmp->mx, mtmp->my))
pline("%s picks up %s.",
Monnam(mtmp),
(distu(mtmp->my, mtmp->my) <= 5) ?
doname(otmp) : distant_name(otmp, doname));
obj_extract_self(otmp);
(void) mpickobj(mtmp, otmp);
return(1);
} else return(0);
} else {
/* a monster is standing on it - cause some trouble */
if (!rn2(5)) mnexto(mtmp);
return(0);
}
} else { /* a monster has it - 'port beside it. */
(void) mnearto(mtmp, tx, ty, TRUE);
return(0);