Unify wake up and scare a monster by music
This commit is contained in:
+22
-28
@@ -28,6 +28,7 @@
|
|||||||
|
|
||||||
#include "hack.h"
|
#include "hack.h"
|
||||||
|
|
||||||
|
static void awaken_scare(struct monst *, boolean);
|
||||||
static void awaken_monsters(int);
|
static void awaken_monsters(int);
|
||||||
static void put_monsters_to_sleep(int);
|
static void put_monsters_to_sleep(int);
|
||||||
static void charm_snakes(int);
|
static void charm_snakes(int);
|
||||||
@@ -38,6 +39,24 @@ static const char *generic_lvl_desc(void);
|
|||||||
static int do_improvisation(struct obj *);
|
static int do_improvisation(struct obj *);
|
||||||
static char *improvised_notes(boolean *);
|
static char *improvised_notes(boolean *);
|
||||||
|
|
||||||
|
/* wake up monster, possibly scare it */
|
||||||
|
static void
|
||||||
|
awaken_scare(struct monst *mtmp, boolean scary)
|
||||||
|
{
|
||||||
|
mtmp->msleeping = 0;
|
||||||
|
mtmp->mcanmove = 1;
|
||||||
|
mtmp->mfrozen = 0;
|
||||||
|
/* may scare some monsters -- waiting monsters excluded */
|
||||||
|
if (!unique_corpstat(mtmp->data)
|
||||||
|
&& (mtmp->mstrategy & STRAT_WAITMASK) != 0)
|
||||||
|
mtmp->mstrategy &= ~STRAT_WAITMASK;
|
||||||
|
else if (scary
|
||||||
|
&& !mindless(mtmp->data)
|
||||||
|
&& !resist(mtmp, TOOL_CLASS, 0, NOTELL)
|
||||||
|
/* some monsters are immune */
|
||||||
|
&& onscary(0, 0, mtmp))
|
||||||
|
monflee(mtmp, 0, FALSE, TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Wake every monster in range...
|
* Wake every monster in range...
|
||||||
@@ -52,21 +71,8 @@ awaken_monsters(int distance)
|
|||||||
for (mtmp = fmon; mtmp; mtmp = mtmp->nmon) {
|
for (mtmp = fmon; mtmp; mtmp = mtmp->nmon) {
|
||||||
if (DEADMONSTER(mtmp))
|
if (DEADMONSTER(mtmp))
|
||||||
continue;
|
continue;
|
||||||
if ((distm = mdistu(mtmp)) < distance) {
|
if ((distm = mdistu(mtmp)) < distance)
|
||||||
mtmp->msleeping = 0;
|
awaken_scare(mtmp, (distm < distance / 3));
|
||||||
mtmp->mcanmove = 1;
|
|
||||||
mtmp->mfrozen = 0;
|
|
||||||
/* may scare some monsters -- waiting monsters excluded */
|
|
||||||
if (!unique_corpstat(mtmp->data)
|
|
||||||
&& (mtmp->mstrategy & STRAT_WAITMASK) != 0)
|
|
||||||
mtmp->mstrategy &= ~STRAT_WAITMASK;
|
|
||||||
else if (distm < distance / 3
|
|
||||||
&& !mindless(mtmp->data)
|
|
||||||
&& !resist(mtmp, TOOL_CLASS, 0, NOTELL)
|
|
||||||
/* some monsters are immune */
|
|
||||||
&& onscary(0, 0, mtmp))
|
|
||||||
monflee(mtmp, 0, FALSE, TRUE);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -179,19 +185,7 @@ awaken_soldiers(struct monst* bugler /* monster that played instrument */)
|
|||||||
? mdistu(mtmp)
|
? mdistu(mtmp)
|
||||||
: dist2(bugler->mx, bugler->my, mtmp->mx,
|
: dist2(bugler->mx, bugler->my, mtmp->mx,
|
||||||
mtmp->my))) < distance) {
|
mtmp->my))) < distance) {
|
||||||
mtmp->msleeping = 0;
|
awaken_scare(mtmp, (distm < distance / 3));
|
||||||
mtmp->mcanmove = 1;
|
|
||||||
mtmp->mfrozen = 0;
|
|
||||||
/* may scare some monsters -- waiting monsters excluded */
|
|
||||||
if (!unique_corpstat(mtmp->data)
|
|
||||||
&& (mtmp->mstrategy & STRAT_WAITMASK) != 0)
|
|
||||||
mtmp->mstrategy &= ~STRAT_WAITMASK;
|
|
||||||
else if (distm < distance / 3
|
|
||||||
&& !mindless(mtmp->data)
|
|
||||||
&& !resist(mtmp, TOOL_CLASS, 0, NOTELL)
|
|
||||||
/* some monsters are immune */
|
|
||||||
&& onscary(0, 0, mtmp))
|
|
||||||
monflee(mtmp, 0, FALSE, TRUE);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user