make changes in hallucination be reflected by changes in mimickery feedback
add Unaware pseudo-property to suppress various messages while unconscious
missile which kills engulfer will now be placed prior to hero's return to map
+bugles affect all monsters to some extent
Platform- and/or Interface-Specific Fixes
pline("%s plays %s!", Monnam(mtmp), doname(otmp));
else if (!Deaf)
You_hear("a bugle playing reveille!");
- awaken_soldiers();
+ awaken_soldiers(mtmp);
return 2;
case MUSE_WAN_TELEPORTATION_SELF:
if ((mtmp->isshk && inhishop(mtmp))
}
}
-/* Awake only soldiers of the level. */
-
+/* Awake soldiers anywhere the level (and any nearby monster). */
void
-awaken_soldiers()
+awaken_soldiers(bugler)
+ struct monst *bugler; /* monster that played instrument */
{
register struct monst *mtmp;
+ int distance, distm;
+
+ /* distance of affected non-soldier monsters to bugler */
+ distance = ((bugler == &youmonst) ?
+ u.ulevel : bugler->data->mlevel) * 30;
for (mtmp = fmon; mtmp; mtmp = mtmp->nmon) {
if (DEADMONSTER(mtmp)) continue;
pline("%s is now ready for battle!", Monnam(mtmp));
else
Norep("You hear the rattle of battle gear being readied.");
+ } else if ((distm = ((bugler == &youmonst) ?
+ distu(mtmp->mx, mtmp->my) :
+ dist2(bugler->mx, bugler->my, mtmp->mx, mtmp->my)))
+ < distance) {
+ mtmp->msleeping = 0;
+ mtmp->mcanmove = 1;
+ mtmp->mfrozen = 0;
+ /* may scare some monsters -- waiting monsters excluded */
+ if ((mtmp->mstrategy & STRAT_WAITMASK) != 0)
+ mtmp->mstrategy &= ~STRAT_WAITMASK;
+ else if (distm < distance/3 &&
+ !resist(mtmp, TOOL_CLASS, 0, NOTELL))
+ monflee(mtmp, 0, FALSE, TRUE);
}
}
}
break;
case BUGLE: /* Awaken & attract soldiers */
You("extract a loud noise from %s.", the(xname(instr)));
- awaken_soldiers();
+ awaken_soldiers(&youmonst);
exercise(A_WIS, FALSE);
break;
case MAGIC_HARP: /* Charm monsters */