H143 - bugles affecting all monsters
<Someone> pointed out that bugles, although noisy, only affect soldiers. This didn't make sense to me either. Added code so they will also affect monsters near the bugler.
This commit is contained in:
@@ -159,6 +159,7 @@ tame/peaceful grabber/engulfer will release hero after conflict ends
|
||||
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
|
||||
|
||||
@@ -1427,7 +1427,7 @@ E boolean FDECL(munstone, (struct monst *,BOOLEAN_P));
|
||||
|
||||
/* ### music.c ### */
|
||||
|
||||
E void NDECL(awaken_soldiers);
|
||||
E void FDECL(awaken_soldiers, (struct monst *));
|
||||
E int FDECL(do_play_instrument, (struct obj *));
|
||||
|
||||
/* ### nhlan.c ### */
|
||||
|
||||
@@ -574,7 +574,7 @@ struct monst *mtmp;
|
||||
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))
|
||||
|
||||
26
src/music.c
26
src/music.c
@@ -161,12 +161,17 @@ int distance;
|
||||
}
|
||||
}
|
||||
|
||||
/* 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;
|
||||
@@ -178,6 +183,19 @@ awaken_soldiers()
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -476,7 +494,7 @@ struct obj *instr;
|
||||
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 */
|
||||
|
||||
Reference in New Issue
Block a user