make attack result macros more distinguishable from makemon macros

Use the MM_ prefix only for the makemon macros, and change these five as follows:

 MM_MISS 0x0     -> M_ATTK_MISS      /* aggressor missed */
 MM_HIT 0x1      -> M_ATTK_HIT       /* aggressor hit defender */
 MM_DEF_DIED 0x2 -> M_ATTK_DEF_DIED  /* defender died */
 MM_AGR_DIED 0x4 -> M_ATTK_AGR_DIED  /* aggressor died */
 MM_AGR_DONE 0x8 -> M_ATTK_AGR_DONE  /* aggressor is done with their turn */

include/hack.h:#define NO_MM_FLAGS     0x000000L /* use this rather than plain 0 */
include/hack.h:#define MM_NOWAIT       0x000002L /* don't set STRAT_WAITMASK flags */
include/hack.h:#define MM_NOCOUNTBIRTH 0x000004L /* don't increment born count (for revival) */
include/hack.h:#define MM_IGNOREWATER  0x000008L /* ignore water when positioning */
include/hack.h:#define MM_ADJACENTOK   0x000010L /* acceptable to use adjacent coordinates */
include/hack.h:#define MM_ANGRY        0x000020L /* monster is created angry */
include/hack.h:#define MM_NONAME       0x000040L /* monster is not christened */
include/hack.h:#define MM_EGD          0x000100L /* add egd structure */
include/hack.h:#define MM_EPRI         0x000200L /* add epri structure */
include/hack.h:#define MM_ESHK         0x000400L /* add eshk structure */
include/hack.h:#define MM_EMIN         0x000800L /* add emin structure */
include/hack.h:#define MM_EDOG         0x001000L /* add edog structure */
include/hack.h:#define MM_ASLEEP       0x002000L /* monsters should be generated asleep */
include/hack.h:#define MM_NOGRP        0x004000L /* suppress creation of monster groups */
include/hack.h:#define MM_NOTAIL       0x008000L /* if a long worm, don't give it a tail */
include/hack.h:#define MM_MALE         0x010000L /* male variation */
include/hack.h:#define MM_FEMALE       0x020000L /* female variation */
include/hack.h:#define MM_NOMSG        0x040000L /* no appear message */

include/hack.h:#define MM_NOEXCLAM     0x400000L /* more sedate "<mon> appears." mesg for ^G */
include/hack.h:#define MM_IGNORELAVA   0x800000L /* ignore lava when positioning */
This commit is contained in:
nhmall
2023-03-19 12:19:34 -04:00
parent e29bfcab54
commit 5f69dc6228
10 changed files with 227 additions and 227 deletions
+6 -6
View File
@@ -93,7 +93,7 @@
struct mhitm_data { struct mhitm_data {
int damage; int damage;
int hitflags; /* MM_DEF_DIED | MM_AGR_DIED | ... */ int hitflags; /* M_ATTK_DEF_DIED | M_ATTK_AGR_DIED | ... */
boolean done; boolean done;
boolean permdmg; boolean permdmg;
int specialdmg; int specialdmg;
@@ -105,10 +105,10 @@ struct mhitm_data {
* any or all of the following can be returned. See mattackm() for more * any or all of the following can be returned. See mattackm() for more
* details. * details.
*/ */
#define MM_MISS 0x0 /* aggressor missed */ #define M_ATTK_MISS 0x0 /* aggressor missed */
#define MM_HIT 0x1 /* aggressor hit defender */ #define M_ATTK_HIT 0x1 /* aggressor hit defender */
#define MM_DEF_DIED 0x2 /* defender died */ #define M_ATTK_DEF_DIED 0x2 /* defender died */
#define MM_AGR_DIED 0x4 /* aggressor died */ #define M_ATTK_AGR_DIED 0x4 /* aggressor died */
#define MM_AGR_DONE 0x8 /* aggressor is done with their turn */ #define M_ATTK_AGR_DONE 0x8 /* aggressor is done with their turn */
#endif /* MONATTK_H */ #endif /* MONATTK_H */
+11 -11
View File
@@ -876,7 +876,7 @@ pet_ranged_attk(struct monst *mtmp)
/* Hungry pets are unlikely to use breath/spit attacks */ /* Hungry pets are unlikely to use breath/spit attacks */
if (mtarg && (!hungry || !rn2(5))) { if (mtarg && (!hungry || !rn2(5))) {
int mstatus = MM_MISS; int mstatus = M_ATTK_MISS;
if (mtarg == &gy.youmonst) { if (mtarg == &gy.youmonst) {
if (mattacku(mtmp)) if (mattacku(mtmp))
@@ -887,19 +887,19 @@ pet_ranged_attk(struct monst *mtmp)
* and "attacked but didn't die" cases, and this is preferable * and "attacked but didn't die" cases, and this is preferable
* to letting the pet attack the player and continuing to move. * to letting the pet attack the player and continuing to move.
*/ */
mstatus = MM_HIT; mstatus = M_ATTK_HIT;
} else { } else {
mstatus = mattackm(mtmp, mtarg); mstatus = mattackm(mtmp, mtarg);
/* Shouldn't happen, really */ /* Shouldn't happen, really */
if (mstatus & MM_AGR_DIED) if (mstatus & M_ATTK_AGR_DIED)
return MMOVE_DIED; return MMOVE_DIED;
/* Allow the targeted nasty to strike back - if /* Allow the targeted nasty to strike back - if
* the targeted beast doesn't have a ranged attack, * the targeted beast doesn't have a ranged attack,
* nothing will happen. * nothing will happen.
*/ */
if ((mstatus & MM_HIT) && !(mstatus & MM_DEF_DIED) if ((mstatus & M_ATTK_HIT) && !(mstatus & M_ATTK_DEF_DIED)
&& rn2(4) && mtarg != &gy.youmonst) { && rn2(4) && mtarg != &gy.youmonst) {
/* Can monster see? If it can, it can retaliate /* Can monster see? If it can, it can retaliate
@@ -909,7 +909,7 @@ pet_ranged_attk(struct monst *mtmp)
*/ */
if (mtarg->mcansee && haseyes(mtarg->data)) { if (mtarg->mcansee && haseyes(mtarg->data)) {
mstatus = mattackm(mtarg, mtmp); mstatus = mattackm(mtarg, mtmp);
if (mstatus & MM_DEF_DIED) if (mstatus & M_ATTK_DEF_DIED)
return MMOVE_DIED; return MMOVE_DIED;
} }
} }
@@ -922,9 +922,9 @@ pet_ranged_attk(struct monst *mtmp)
* only ever try ranged options * only ever try ranged options
* 2. if the only attacks available to mattackm are ranged * 2. if the only attacks available to mattackm are ranged
* options, and the monster cannot make a ranged attack, it * options, and the monster cannot make a ranged attack, it
* will return MM_MISS. * will return M_ATTK_MISS.
*/ */
if (mstatus != MM_MISS) if (mstatus != M_ATTK_MISS)
return MMOVE_DONE; return MMOVE_DONE;
} }
return MMOVE_NOTHING; return MMOVE_NOTHING;
@@ -1097,16 +1097,16 @@ dog_move(register struct monst *mtmp,
mstatus = mattackm(mtmp, mtmp2); mstatus = mattackm(mtmp, mtmp2);
/* aggressor (pet) died */ /* aggressor (pet) died */
if (mstatus & MM_AGR_DIED) if (mstatus & M_ATTK_AGR_DIED)
return MMOVE_DIED; return MMOVE_DIED;
if ((mstatus & MM_HIT) && !(mstatus & MM_DEF_DIED) && rn2(4) if ((mstatus & M_ATTK_HIT) && !(mstatus & M_ATTK_DEF_DIED) && rn2(4)
&& mtmp2->mlstmv != gm.moves && mtmp2->mlstmv != gm.moves
&& !onscary(mtmp->mx, mtmp->my, mtmp2) && !onscary(mtmp->mx, mtmp->my, mtmp2)
/* monnear check needed: long worms hit on tail */ /* monnear check needed: long worms hit on tail */
&& monnear(mtmp2, mtmp->mx, mtmp->my)) { && monnear(mtmp2, mtmp->mx, mtmp->my)) {
mstatus = mattackm(mtmp2, mtmp); /* return attack */ mstatus = mattackm(mtmp2, mtmp); /* return attack */
if (mstatus & MM_DEF_DIED) if (mstatus & M_ATTK_DEF_DIED)
return MMOVE_DIED; return MMOVE_DIED;
} }
return MMOVE_DONE; return MMOVE_DONE;
@@ -1117,7 +1117,7 @@ dog_move(register struct monst *mtmp,
register struct monst *mtmp2 = m_at(nx, ny); register struct monst *mtmp2 = m_at(nx, ny);
mstatus = mdisplacem(mtmp, mtmp2, FALSE); /* displace monster */ mstatus = mdisplacem(mtmp, mtmp2, FALSE); /* displace monster */
if (mstatus & MM_DEF_DIED) if (mstatus & M_ATTK_DEF_DIED)
return MMOVE_DIED; return MMOVE_DIED;
return MMOVE_NOTHING; return MMOVE_NOTHING;
} }
+3 -3
View File
@@ -207,9 +207,9 @@ kick_monster(struct monst *mon, coordxy x, coordxy y)
} else if (tmp > kickdieroll) { } else if (tmp > kickdieroll) {
You("kick %s.", mon_nam(mon)); You("kick %s.", mon_nam(mon));
sum = damageum(mon, uattk, specialdmg); sum = damageum(mon, uattk, specialdmg);
(void) passive(mon, uarmf, (sum != MM_MISS), (void) passive(mon, uarmf, (sum != M_ATTK_MISS),
!(sum & MM_DEF_DIED), AT_KICK, FALSE); !(sum & M_ATTK_DEF_DIED), AT_KICK, FALSE);
if ((sum & MM_DEF_DIED)) if ((sum & M_ATTK_DEF_DIED))
break; /* Defender died */ break; /* Defender died */
} else { } else {
missum(mon, uattk, (tmp + armorpenalty > kickdieroll)); missum(mon, uattk, (tmp + armorpenalty > kickdieroll));
+7 -7
View File
@@ -582,13 +582,13 @@ eat_brains(
{ {
struct permonst *pd = mdef->data; struct permonst *pd = mdef->data;
boolean give_nutrit = FALSE; boolean give_nutrit = FALSE;
int result = MM_HIT, xtra_dmg = rnd(10); int result = M_ATTK_HIT, xtra_dmg = rnd(10);
if (noncorporeal(pd)) { if (noncorporeal(pd)) {
if (visflag) if (visflag)
pline("%s brain is unharmed.", pline("%s brain is unharmed.",
(mdef == &gy.youmonst) ? "Your" : s_suffix(Monnam(mdef))); (mdef == &gy.youmonst) ? "Your" : s_suffix(Monnam(mdef)));
return MM_MISS; /* side-effects can't occur */ return M_ATTK_MISS; /* side-effects can't occur */
} else if (magr == &gy.youmonst) { } else if (magr == &gy.youmonst) {
You("eat %s brain!", s_suffix(mon_nam(mdef))); You("eat %s brain!", s_suffix(mon_nam(mdef)));
} else if (mdef == &gy.youmonst) { } else if (mdef == &gy.youmonst) {
@@ -614,12 +614,12 @@ eat_brains(
monstone(magr); monstone(magr);
if (!DEADMONSTER(magr)) { if (!DEADMONSTER(magr)) {
/* life-saved; don't continue eating the brains */ /* life-saved; don't continue eating the brains */
return MM_MISS; return M_ATTK_MISS;
} else { } else {
if (magr->mtame && !visflag) if (magr->mtame && !visflag)
/* parallels mhitm.c's brief_feeling */ /* parallels mhitm.c's brief_feeling */
You("have a sad thought for a moment, then it passes."); You("have a sad thought for a moment, then it passes.");
return MM_AGR_DIED; return M_ATTK_AGR_DIED;
} }
} }
} }
@@ -632,7 +632,7 @@ eat_brains(
if (mindless(pd)) { /* (cannibalism not possible here) */ if (mindless(pd)) { /* (cannibalism not possible here) */
pline("%s doesn't notice.", Monnam(mdef)); pline("%s doesn't notice.", Monnam(mdef));
/* all done; no extra harm inflicted upon target */ /* all done; no extra harm inflicted upon target */
return MM_MISS; return M_ATTK_MISS;
} else if (is_rider(pd)) { } else if (is_rider(pd)) {
pline("Ingesting that is fatal."); pline("Ingesting that is fatal.");
Sprintf(gk.killer.name, "unwisely ate the brain of %s", Sprintf(gk.killer.name, "unwisely ate the brain of %s",
@@ -697,11 +697,11 @@ eat_brains(
if (mindless(pd)) { if (mindless(pd)) {
if (visflag && canspotmon(mdef)) if (visflag && canspotmon(mdef))
pline("%s doesn't notice.", Monnam(mdef)); pline("%s doesn't notice.", Monnam(mdef));
return MM_MISS; return M_ATTK_MISS;
} else if (is_rider(pd)) { } else if (is_rider(pd)) {
mondied(magr); mondied(magr);
if (DEADMONSTER(magr)) if (DEADMONSTER(magr))
result = MM_AGR_DIED; result = M_ATTK_AGR_DIED;
/* Rider takes extra damage regardless of whether attacker dies */ /* Rider takes extra damage regardless of whether attacker dies */
*dmg_p += xtra_dmg; *dmg_p += xtra_dmg;
} else { } else {
+11 -11
View File
@@ -210,20 +210,20 @@ castmu(
if (foundyou) if (foundyou)
impossible( impossible(
"spellcasting monster found you and doesn't know it?"); "spellcasting monster found you and doesn't know it?");
return MM_MISS; return M_ATTK_MISS;
} }
break; break;
} }
} while (--cnt > 0 } while (--cnt > 0
&& spell_would_be_useless(mtmp, mattk->adtyp, spellnum)); && spell_would_be_useless(mtmp, mattk->adtyp, spellnum));
if (cnt == 0) if (cnt == 0)
return MM_MISS; return M_ATTK_MISS;
} }
/* monster unable to cast spells? */ /* monster unable to cast spells? */
if (mtmp->mcan || mtmp->mspec_used || !ml) { if (mtmp->mcan || mtmp->mspec_used || !ml) {
cursetxt(mtmp, is_undirected_spell(mattk->adtyp, spellnum)); cursetxt(mtmp, is_undirected_spell(mattk->adtyp, spellnum));
return MM_MISS; return M_ATTK_MISS;
} }
if (mattk->adtyp == AD_SPEL || mattk->adtyp == AD_CLRC) { if (mattk->adtyp == AD_SPEL || mattk->adtyp == AD_CLRC) {
@@ -241,7 +241,7 @@ castmu(
canseemon(mtmp) ? Monnam(mtmp) : "Something", canseemon(mtmp) ? Monnam(mtmp) : "Something",
is_waterwall(mtmp->mux,mtmp->muy) ? "empty water" is_waterwall(mtmp->mux,mtmp->muy) ? "empty water"
: "thin air"); : "thin air");
return MM_MISS; return M_ATTK_MISS;
} }
nomul(0); nomul(0);
@@ -249,7 +249,7 @@ castmu(
Soundeffect(se_air_crackles, 60); Soundeffect(se_air_crackles, 60);
if (canseemon(mtmp) && !Deaf) if (canseemon(mtmp) && !Deaf)
pline_The("air crackles around %s.", mon_nam(mtmp)); pline_The("air crackles around %s.", mon_nam(mtmp));
return MM_MISS; return M_ATTK_MISS;
} }
if (canspotmon(mtmp) || !is_undirected_spell(mattk->adtyp, spellnum)) { if (canspotmon(mtmp) || !is_undirected_spell(mattk->adtyp, spellnum)) {
pline("%s casts a spell%s!", pline("%s casts a spell%s!",
@@ -275,7 +275,7 @@ castmu(
impossible( impossible(
"%s casting non-hand-to-hand version of hand-to-hand spell %d?", "%s casting non-hand-to-hand version of hand-to-hand spell %d?",
Monnam(mtmp), mattk->adtyp); Monnam(mtmp), mattk->adtyp);
return MM_MISS; return M_ATTK_MISS;
} }
} else if (mattk->damd) } else if (mattk->damd)
dmg = d((int) ((ml / 2) + mattk->damn), (int) mattk->damd); dmg = d((int) ((ml / 2) + mattk->damn), (int) mattk->damd);
@@ -284,7 +284,7 @@ castmu(
if (Half_spell_damage) if (Half_spell_damage)
dmg = (dmg + 1) / 2; dmg = (dmg + 1) / 2;
ret = MM_HIT; ret = M_ATTK_HIT;
switch (mattk->adtyp) { switch (mattk->adtyp) {
case AD_FIRE: case AD_FIRE:
pline("You're enveloped in flames."); pline("You're enveloped in flames.");
@@ -913,11 +913,11 @@ buzzmu(struct monst *mtmp, struct attack *mattk)
/* don't print constant stream of curse messages for 'normal' /* don't print constant stream of curse messages for 'normal'
spellcasting monsters at range */ spellcasting monsters at range */
if (!BZ_VALID_ADTYP(mattk->adtyp)) if (!BZ_VALID_ADTYP(mattk->adtyp))
return MM_MISS; return M_ATTK_MISS;
if (mtmp->mcan || m_seenres(mtmp, cvt_adtyp_to_mseenres(mattk->adtyp))) { if (mtmp->mcan || m_seenres(mtmp, cvt_adtyp_to_mseenres(mattk->adtyp))) {
cursetxt(mtmp, FALSE); cursetxt(mtmp, FALSE);
return MM_MISS; return M_ATTK_MISS;
} }
if (lined_up(mtmp) && rn2(3)) { if (lined_up(mtmp) && rn2(3)) {
nomul(0); nomul(0);
@@ -928,9 +928,9 @@ buzzmu(struct monst *mtmp, struct attack *mattk)
buzz(BZ_M_SPELL(BZ_OFS_AD(mattk->adtyp)), (int) mattk->damn, buzz(BZ_M_SPELL(BZ_OFS_AD(mattk->adtyp)), (int) mattk->damn,
mtmp->mx, mtmp->my, sgn(gt.tbx), sgn(gt.tby)); mtmp->mx, mtmp->my, sgn(gt.tbx), sgn(gt.tby));
gb.buzzer = 0; gb.buzzer = 0;
return MM_HIT; return M_ATTK_HIT;
} }
return MM_MISS; return M_ATTK_MISS;
} }
/*mcastu.c*/ /*mcastu.c*/
+70 -70
View File
@@ -144,7 +144,7 @@ fightm(register struct monst *mtmp)
gn.notonhead = 0; gn.notonhead = 0;
result = mattackm(mtmp, mon); result = mattackm(mtmp, mon);
if (result & MM_AGR_DIED) if (result & M_ATTK_AGR_DIED)
return 1; /* mtmp died */ return 1; /* mtmp died */
/* /*
* If mtmp has the hero swallowed, lie and say there * If mtmp has the hero swallowed, lie and say there
@@ -156,14 +156,14 @@ fightm(register struct monst *mtmp)
/* Allow attacked monsters a chance to hit back. Primarily /* Allow attacked monsters a chance to hit back. Primarily
* to allow monsters that resist conflict to respond. * to allow monsters that resist conflict to respond.
*/ */
if ((result & MM_HIT) && !(result & MM_DEF_DIED) && rn2(4) if ((result & M_ATTK_HIT) && !(result & M_ATTK_DEF_DIED) && rn2(4)
&& mon->movement >= NORMAL_SPEED) { && mon->movement >= NORMAL_SPEED) {
mon->movement -= NORMAL_SPEED; mon->movement -= NORMAL_SPEED;
gn.notonhead = 0; gn.notonhead = 0;
(void) mattackm(mon, mtmp); /* return attack */ (void) mattackm(mon, mtmp); /* return attack */
} }
return (result & MM_HIT) ? 1 : 0; return (result & M_ATTK_HIT) ? 1 : 0;
} }
} }
} }
@@ -183,23 +183,23 @@ mdisplacem(register struct monst *magr, register struct monst *mdef,
/* sanity checks; could matter if we unexpectedly get a long worm */ /* sanity checks; could matter if we unexpectedly get a long worm */
if (!magr || !mdef || magr == mdef) if (!magr || !mdef || magr == mdef)
return MM_MISS; return M_ATTK_MISS;
pa = magr->data, pd = mdef->data; pa = magr->data, pd = mdef->data;
tx = mdef->mx, ty = mdef->my; /* destination */ tx = mdef->mx, ty = mdef->my; /* destination */
fx = magr->mx, fy = magr->my; /* current location */ fx = magr->mx, fy = magr->my; /* current location */
if (m_at(fx, fy) != magr || m_at(tx, ty) != mdef) if (m_at(fx, fy) != magr || m_at(tx, ty) != mdef)
return MM_MISS; return M_ATTK_MISS;
/* The 1 in 7 failure below matches the chance in do_attack() /* The 1 in 7 failure below matches the chance in do_attack()
* for pet displacement. * for pet displacement.
*/ */
if (!rn2(7)) if (!rn2(7))
return MM_MISS; return M_ATTK_MISS;
/* Grid bugs cannot displace at an angle. */ /* Grid bugs cannot displace at an angle. */
if (pa == &mons[PM_GRID_BUG] && magr->mx != mdef->mx if (pa == &mons[PM_GRID_BUG] && magr->mx != mdef->mx
&& magr->my != mdef->my) && magr->my != mdef->my)
return MM_MISS; return M_ATTK_MISS;
/* undetected monster becomes un-hidden if it is displaced */ /* undetected monster becomes un-hidden if it is displaced */
if (mdef->mundetected) if (mdef->mundetected)
@@ -222,7 +222,7 @@ mdisplacem(register struct monst *magr, register struct monst *mdef,
if (!which_armor(magr, W_ARMG)) { if (!which_armor(magr, W_ARMG)) {
if (poly_when_stoned(pa)) { if (poly_when_stoned(pa)) {
mon_to_stone(magr); mon_to_stone(magr);
return MM_HIT; /* no damage during the polymorph */ return M_ATTK_HIT; /* no damage during the polymorph */
} }
if (!quietly && canspotmon(magr)) { if (!quietly && canspotmon(magr)) {
if (gv.vis) { if (gv.vis) {
@@ -233,10 +233,10 @@ mdisplacem(register struct monst *magr, register struct monst *mdef,
} }
monstone(magr); monstone(magr);
if (!DEADMONSTER(magr)) if (!DEADMONSTER(magr))
return MM_HIT; /* lifesaved */ return M_ATTK_HIT; /* lifesaved */
else if (magr->mtame && !gv.vis) else if (magr->mtame && !gv.vis)
You(brief_feeling, "peculiarly sad"); You(brief_feeling, "peculiarly sad");
return MM_AGR_DIED; return M_ATTK_AGR_DIED;
} }
} }
@@ -260,7 +260,7 @@ mdisplacem(register struct monst *magr, register struct monst *mdef,
newsym(tx, ty); /* all happen */ newsym(tx, ty); /* all happen */
flush_screen(0); /* make sure it shows up */ flush_screen(0); /* make sure it shows up */
return MM_HIT; return M_ATTK_HIT;
} }
/* /*
@@ -272,11 +272,11 @@ mdisplacem(register struct monst *magr, register struct monst *mdef,
* / / / * / / /
* x x x * x x x
* *
* 0x8 MM_AGR_DONE * 0x8 M_ATTK_AGR_DONE
* 0x4 MM_AGR_DIED * 0x4 M_ATTK_AGR_DIED
* 0x2 MM_DEF_DIED * 0x2 M_ATTK_DEF_DIED
* 0x1 MM_HIT * 0x1 M_ATTK_HIT
* 0x0 MM_MISS * 0x0 M_ATTK_MISS
* *
* Each successive attack has a lower probability of hitting. Some rely on * Each successive attack has a lower probability of hitting. Some rely on
* success of previous attacks. ** this doesn't seem to be implemented -dl ** * success of previous attacks. ** this doesn't seem to be implemented -dl **
@@ -298,16 +298,16 @@ mattackm(register struct monst *magr, register struct monst *mdef)
struct permonst *pa, *pd; struct permonst *pa, *pd;
if (!magr || !mdef) if (!magr || !mdef)
return MM_MISS; /* mike@genat */ return M_ATTK_MISS; /* mike@genat */
if (helpless(magr)) if (helpless(magr))
return MM_MISS; return M_ATTK_MISS;
pa = magr->data; pa = magr->data;
pd = mdef->data; pd = mdef->data;
/* Grid bugs cannot attack at an angle. */ /* Grid bugs cannot attack at an angle. */
if (pa == &mons[PM_GRID_BUG] && magr->mx != mdef->mx if (pa == &mons[PM_GRID_BUG] && magr->mx != mdef->mx
&& magr->my != mdef->my) && magr->my != mdef->my)
return MM_MISS; return M_ATTK_MISS;
/* Calculate the armour class differential. */ /* Calculate the armour class differential. */
tmp = find_mac(mdef) + magr->m_lev; tmp = find_mac(mdef) + magr->m_lev;
@@ -358,7 +358,7 @@ mattackm(register struct monst *magr, register struct monst *mdef)
/* Now perform all attacks for the monster. */ /* Now perform all attacks for the monster. */
for (i = 0; i < NATTK; i++) { for (i = 0; i < NATTK; i++) {
res[i] = MM_MISS; res[i] = M_ATTK_MISS;
mattk = getmattk(magr, mdef, i, res, &alt_attk); mattk = getmattk(magr, mdef, i, res, &alt_attk);
mwep = (struct obj *) 0; mwep = (struct obj *) 0;
attk = 1; attk = 1;
@@ -372,20 +372,20 @@ mattackm(register struct monst *magr, register struct monst *mdef)
case AT_WEAP: /* "hand to hand" attacks */ case AT_WEAP: /* "hand to hand" attacks */
if (distmin(magr->mx, magr->my, mdef->mx, mdef->my) > 1) { if (distmin(magr->mx, magr->my, mdef->mx, mdef->my) > 1) {
/* D: Do a ranged attack here! */ /* D: Do a ranged attack here! */
strike = (thrwmm(magr, mdef) == MM_MISS) ? 0 : 1; strike = (thrwmm(magr, mdef) == M_ATTK_MISS) ? 0 : 1;
if (strike) if (strike)
/* don't really know if we hit or not; pretend we did */ /* don't really know if we hit or not; pretend we did */
res[i] |= MM_HIT; res[i] |= M_ATTK_HIT;
if (DEADMONSTER(mdef)) if (DEADMONSTER(mdef))
res[i] = MM_DEF_DIED; res[i] = M_ATTK_DEF_DIED;
if (DEADMONSTER(magr)) if (DEADMONSTER(magr))
res[i] |= MM_AGR_DIED; res[i] |= M_ATTK_AGR_DIED;
break; break;
} }
if (magr->weapon_check == NEED_WEAPON || !MON_WEP(magr)) { if (magr->weapon_check == NEED_WEAPON || !MON_WEP(magr)) {
magr->weapon_check = NEED_HTH_WEAPON; magr->weapon_check = NEED_HTH_WEAPON;
if (mon_wield_item(magr) != 0) if (mon_wield_item(magr) != 0)
return MM_MISS; return M_ATTK_MISS;
} }
possibly_unwield(magr, FALSE); possibly_unwield(magr, FALSE);
if ((mwep = MON_WEP(magr)) != 0) { if ((mwep = MON_WEP(magr)) != 0) {
@@ -444,7 +444,7 @@ mattackm(register struct monst *magr, register struct monst *mdef)
break; break;
case AT_HUGS: /* automatic if prev two attacks succeed */ case AT_HUGS: /* automatic if prev two attacks succeed */
strike = (i >= 2 && res[i - 1] == MM_HIT && res[i - 2] == MM_HIT); strike = (i >= 2 && res[i - 1] == M_ATTK_HIT && res[i - 2] == M_ATTK_HIT);
if (strike) if (strike)
res[i] = hitmm(magr, mdef, mattk, (struct obj *) 0, 0); res[i] = hitmm(magr, mdef, mattk, (struct obj *) 0, 0);
@@ -461,7 +461,7 @@ mattackm(register struct monst *magr, register struct monst *mdef)
continue; continue;
res[i] = explmm(magr, mdef, mattk); res[i] = explmm(magr, mdef, mattk);
if (res[i] == MM_MISS) { /* cancelled--no attack */ if (res[i] == M_ATTK_MISS) { /* cancelled--no attack */
strike = 0; strike = 0;
attk = 0; attk = 0;
} else } else
@@ -494,15 +494,15 @@ mattackm(register struct monst *magr, register struct monst *mdef)
case AT_BREA: case AT_BREA:
if (!monnear(magr, mdef->mx, mdef->my)) { if (!monnear(magr, mdef->mx, mdef->my)) {
strike = (breamm(magr, mattk, mdef) == MM_MISS) ? 0 : 1; strike = (breamm(magr, mattk, mdef) == M_ATTK_MISS) ? 0 : 1;
/* We don't really know if we hit or not; pretend we did. */ /* We don't really know if we hit or not; pretend we did. */
if (strike) if (strike)
res[i] |= MM_HIT; res[i] |= M_ATTK_HIT;
if (DEADMONSTER(mdef)) if (DEADMONSTER(mdef))
res[i] = MM_DEF_DIED; res[i] = M_ATTK_DEF_DIED;
if (DEADMONSTER(magr)) if (DEADMONSTER(magr))
res[i] |= MM_AGR_DIED; res[i] |= M_ATTK_AGR_DIED;
} }
else else
strike = 0; strike = 0;
@@ -510,15 +510,15 @@ mattackm(register struct monst *magr, register struct monst *mdef)
case AT_SPIT: case AT_SPIT:
if (!monnear(magr, mdef->mx, mdef->my)) { if (!monnear(magr, mdef->mx, mdef->my)) {
strike = (spitmm(magr, mattk, mdef) == MM_MISS) ? 0 : 1; strike = (spitmm(magr, mattk, mdef) == M_ATTK_MISS) ? 0 : 1;
/* We don't really know if we hit or not; pretend we did. */ /* We don't really know if we hit or not; pretend we did. */
if (strike) if (strike)
res[i] |= MM_HIT; res[i] |= M_ATTK_HIT;
if (DEADMONSTER(mdef)) if (DEADMONSTER(mdef))
res[i] = MM_DEF_DIED; res[i] = M_ATTK_DEF_DIED;
if (DEADMONSTER(magr)) if (DEADMONSTER(magr))
res[i] |= MM_AGR_DIED; res[i] |= M_ATTK_AGR_DIED;
} }
break; break;
@@ -528,23 +528,23 @@ mattackm(register struct monst *magr, register struct monst *mdef)
break; break;
} }
if (attk && !(res[i] & MM_AGR_DIED) if (attk && !(res[i] & M_ATTK_AGR_DIED)
&& distmin(magr->mx, magr->my, mdef->mx, mdef->my) <= 1) && distmin(magr->mx, magr->my, mdef->mx, mdef->my) <= 1)
res[i] = passivemm(magr, mdef, strike, res[i] = passivemm(magr, mdef, strike,
(res[i] & MM_DEF_DIED), mwep); (res[i] & M_ATTK_DEF_DIED), mwep);
if (res[i] & MM_DEF_DIED) if (res[i] & M_ATTK_DEF_DIED)
return res[i]; return res[i];
if (res[i] & MM_AGR_DIED) if (res[i] & M_ATTK_AGR_DIED)
return res[i]; return res[i];
/* return if aggressor can no longer attack */ /* return if aggressor can no longer attack */
if (helpless(magr)) if (helpless(magr))
return res[i]; return res[i];
if (res[i] & MM_HIT) if (res[i] & M_ATTK_HIT)
struck = 1; /* at least one hit */ struck = 1; /* at least one hit */
} }
return (struck ? MM_HIT : MM_MISS); return (struck ? M_ATTK_HIT : M_ATTK_MISS);
} }
/* Returns the result of mdamagem(). */ /* Returns the result of mdamagem(). */
@@ -566,7 +566,7 @@ hitmm(
compat = !magr->mcan ? could_seduce(magr, mdef, mattk) : 0; compat = !magr->mcan ? could_seduce(magr, mdef, mattk) : 0;
if (!compat && shade_miss(magr, mdef, mwep, FALSE, gv.vis)) if (!compat && shade_miss(magr, mdef, mwep, FALSE, gv.vis))
return MM_MISS; /* bypass mdamagem() */ return M_ATTK_MISS; /* bypass mdamagem() */
if (gv.vis) { if (gv.vis) {
char buf[BUFSZ], magr_name[BUFSZ]; char buf[BUFSZ], magr_name[BUFSZ];
@@ -667,7 +667,7 @@ gazemm(struct monst *magr, struct monst *mdef, struct attack *mattk)
|| (magr->minvis && !perceives(mdef->data)) || mdef->msleeping) { || (magr->minvis && !perceives(mdef->data)) || mdef->msleeping) {
if (gv.vis && canspotmon(mdef)) if (gv.vis && canspotmon(mdef))
pline("but nothing happens."); pline("but nothing happens.");
return MM_MISS; return M_ATTK_MISS;
} }
/* call mon_reflects 2x, first test, then, if visible, print message */ /* call mon_reflects 2x, first test, then, if visible, print message */
if (magr->data == &mons[PM_MEDUSA] && mon_reflects(mdef, (char *) 0)) { if (magr->data == &mons[PM_MEDUSA] && mon_reflects(mdef, (char *) 0)) {
@@ -678,7 +678,7 @@ gazemm(struct monst *magr, struct monst *mdef, struct attack *mattk)
if (canseemon(magr)) if (canseemon(magr))
(void) mon_reflects(magr, (void) mon_reflects(magr,
"The gaze is reflected away by %s %s."); "The gaze is reflected away by %s %s.");
return MM_MISS; return M_ATTK_MISS;
} }
if (mdef->minvis && !perceives(magr->data)) { if (mdef->minvis && !perceives(magr->data)) {
if (canseemon(magr)) { if (canseemon(magr)) {
@@ -686,14 +686,14 @@ gazemm(struct monst *magr, struct monst *mdef, struct attack *mattk)
"%s doesn't seem to notice that %s gaze was reflected.", "%s doesn't seem to notice that %s gaze was reflected.",
Monnam(magr), mhis(magr)); Monnam(magr), mhis(magr));
} }
return MM_MISS; return M_ATTK_MISS;
} }
if (canseemon(magr)) if (canseemon(magr))
pline("%s is turned to stone!", Monnam(magr)); pline("%s is turned to stone!", Monnam(magr));
monstone(magr); monstone(magr);
if (!DEADMONSTER(magr)) if (!DEADMONSTER(magr))
return MM_MISS; return M_ATTK_MISS;
return MM_AGR_DIED; return M_ATTK_AGR_DIED;
} }
} else if (archon) { } else if (archon) {
mhitm_ad_blnd(magr, mattk, mdef, (struct mhitm_data *) 0); mhitm_ad_blnd(magr, mattk, mdef, (struct mhitm_data *) 0);
@@ -757,7 +757,7 @@ gulpmm(
struct obj *obj; struct obj *obj;
if (!engulf_target(magr, mdef)) if (!engulf_target(magr, mdef))
return MM_MISS; return M_ATTK_MISS;
if (gv.vis) { if (gv.vis) {
pline("%s %s %s.", Monnam(magr), pline("%s %s %s.", Monnam(magr),
@@ -785,7 +785,7 @@ gulpmm(
| SUPPRESS_INVISIBLE), FALSE)); | SUPPRESS_INVISIBLE), FALSE));
} }
} }
return MM_HIT; /* bypass mdamagem() */ return M_ATTK_HIT; /* bypass mdamagem() */
} }
/* /*
@@ -809,10 +809,10 @@ gulpmm(
status = mdamagem(magr, mdef, mattk, (struct obj *) 0, 0); status = mdamagem(magr, mdef, mattk, (struct obj *) 0, 0);
if ((status & (MM_AGR_DIED | MM_DEF_DIED)) if ((status & (M_ATTK_AGR_DIED | M_ATTK_DEF_DIED))
== (MM_AGR_DIED | MM_DEF_DIED)) { == (M_ATTK_AGR_DIED | M_ATTK_DEF_DIED)) {
; /* both died -- do nothing */ ; /* both died -- do nothing */
} else if (status & MM_DEF_DIED) { /* defender died */ } else if (status & M_ATTK_DEF_DIED) { /* defender died */
/* /*
* Note: mdamagem() -> monkilled() -> mondead() -> m_detach() * Note: mdamagem() -> monkilled() -> mondead() -> m_detach()
* -> relmon() used to call remove_monster() for the dead * -> relmon() used to call remove_monster() for the dead
@@ -843,8 +843,8 @@ gulpmm(
if (minliquid(magr) if (minliquid(magr)
|| (t_at(dx, dy) || (t_at(dx, dy)
&& mintrap(magr, NO_TRAP_FLAGS) == Trap_Killed_Mon)) && mintrap(magr, NO_TRAP_FLAGS) == Trap_Killed_Mon))
status |= MM_AGR_DIED; status |= M_ATTK_AGR_DIED;
} else if (status & MM_AGR_DIED) { /* aggressor died */ } else if (status & M_ATTK_AGR_DIED) { /* aggressor died */
place_monster(mdef, dx, dy); place_monster(mdef, dx, dy);
newsym(dx, dy); newsym(dx, dy);
} else { /* both alive, put them back */ } else { /* both alive, put them back */
@@ -871,7 +871,7 @@ explmm(struct monst *magr, struct monst *mdef, struct attack *mattk)
int result; int result;
if (magr->mcan) if (magr->mcan)
return MM_MISS; return M_ATTK_MISS;
if (cansee(magr->mx, magr->my)) if (cansee(magr->mx, magr->my))
pline("%s explodes!", Monnam(magr)); pline("%s explodes!", Monnam(magr));
@@ -883,19 +883,19 @@ explmm(struct monst *magr, struct monst *mdef, struct attack *mattk)
|| mattk->adtyp == AD_ELEC) { || mattk->adtyp == AD_ELEC) {
mon_explodes(magr, mattk); mon_explodes(magr, mattk);
/* unconditionally set AGR_DIED here; lifesaving is accounted below */ /* unconditionally set AGR_DIED here; lifesaving is accounted below */
result = MM_AGR_DIED | (DEADMONSTER(mdef) ? MM_DEF_DIED : 0); result = M_ATTK_AGR_DIED | (DEADMONSTER(mdef) ? M_ATTK_DEF_DIED : 0);
} else { } else {
result = mdamagem(magr, mdef, mattk, (struct obj *) 0, 0); result = mdamagem(magr, mdef, mattk, (struct obj *) 0, 0);
} }
/* Kill off aggressor if it didn't die. */ /* Kill off aggressor if it didn't die. */
if (!(result & MM_AGR_DIED)) { if (!(result & M_ATTK_AGR_DIED)) {
boolean was_leashed = (magr->mleashed != 0); boolean was_leashed = (magr->mleashed != 0);
mondead(magr); mondead(magr);
if (!DEADMONSTER(magr)) if (!DEADMONSTER(magr))
return result; /* life saved */ return result; /* life saved */
result |= MM_AGR_DIED; result |= M_ATTK_AGR_DIED;
/* mondead() -> m_detach() -> m_unleash() always suppresses /* mondead() -> m_detach() -> m_unleash() always suppresses
the m_unleash() slack message, so deliver it here instead */ the m_unleash() slack message, so deliver it here instead */
@@ -918,7 +918,7 @@ mdamagem(struct monst *magr, struct monst *mdef,
struct permonst *pa = magr->data, *pd = mdef->data; struct permonst *pa = magr->data, *pd = mdef->data;
struct mhitm_data mhm; struct mhitm_data mhm;
mhm.damage = d((int) mattk->damn, (int) mattk->damd); mhm.damage = d((int) mattk->damn, (int) mattk->damd);
mhm.hitflags = MM_MISS; mhm.hitflags = M_ATTK_MISS;
mhm.permdmg = 0; mhm.permdmg = 0;
mhm.specialdmg = 0; mhm.specialdmg = 0;
mhm.dieroll = dieroll; mhm.dieroll = dieroll;
@@ -938,16 +938,16 @@ mdamagem(struct monst *magr, struct monst *mdef,
|| (protector != ~0L && (wornitems & protector) != protector)) { || (protector != ~0L && (wornitems & protector) != protector)) {
if (poly_when_stoned(pa)) { if (poly_when_stoned(pa)) {
mon_to_stone(magr); mon_to_stone(magr);
return MM_HIT; /* no damage during the polymorph */ return M_ATTK_HIT; /* no damage during the polymorph */
} }
if (gv.vis && canspotmon(magr)) if (gv.vis && canspotmon(magr))
pline("%s turns to stone!", Monnam(magr)); pline("%s turns to stone!", Monnam(magr));
monstone(magr); monstone(magr);
if (!DEADMONSTER(magr)) if (!DEADMONSTER(magr))
return MM_HIT; /* lifesaved */ return M_ATTK_HIT; /* lifesaved */
else if (magr->mtame && !gv.vis) else if (magr->mtame && !gv.vis)
You(brief_feeling, "peculiarly sad"); You(brief_feeling, "peculiarly sad");
return MM_AGR_DIED; return M_ATTK_AGR_DIED;
} }
} }
@@ -955,7 +955,7 @@ mdamagem(struct monst *magr, struct monst *mdef,
if (mhitm_knockback(magr, mdef, mattk, &mhm.hitflags, if (mhitm_knockback(magr, mdef, mattk, &mhm.hitflags,
(MON_WEP(magr) != 0)) (MON_WEP(magr) != 0))
&& ((mhm.hitflags & MM_DEF_DIED) != 0 && ((mhm.hitflags & M_ATTK_DEF_DIED) != 0
|| (mdef->mstate & (MON_DETACH|MON_MIGRATING|MON_LIMBO)) != 0)) || (mdef->mstate & (MON_DETACH|MON_MIGRATING|MON_LIMBO)) != 0))
return mhm.hitflags; return mhm.hitflags;
@@ -985,8 +985,8 @@ mdamagem(struct monst *magr, struct monst *mdef,
gm.mkcorpstat_norevive = FALSE; gm.mkcorpstat_norevive = FALSE;
if (!DEADMONSTER(mdef)) if (!DEADMONSTER(mdef))
return mhm.hitflags; /* mdef lifesaved */ return mhm.hitflags; /* mdef lifesaved */
else if (mhm.hitflags == MM_AGR_DIED) else if (mhm.hitflags == M_ATTK_AGR_DIED)
return (MM_DEF_DIED | MM_AGR_DIED); return (M_ATTK_DEF_DIED | M_ATTK_AGR_DIED);
if (mattk->adtyp == AD_DGST) { if (mattk->adtyp == AD_DGST) {
/* various checks similar to dog_eat and meatobj. /* various checks similar to dog_eat and meatobj.
@@ -998,7 +998,7 @@ mdamagem(struct monst *magr, struct monst *mdef,
} else if (pd == &mons[PM_WRAITH]) { } else if (pd == &mons[PM_WRAITH]) {
(void) grow_up(magr, (struct monst *) 0); (void) grow_up(magr, (struct monst *) 0);
/* don't grow up twice */ /* don't grow up twice */
return (MM_DEF_DIED | (!DEADMONSTER(magr) ? 0 : MM_AGR_DIED)); return (M_ATTK_DEF_DIED | (!DEADMONSTER(magr) ? 0 : M_ATTK_AGR_DIED));
} else if (pd == &mons[PM_NURSE]) { } else if (pd == &mons[PM_NURSE]) {
magr->mhp = magr->mhpmax; magr->mhp = magr->mhpmax;
} }
@@ -1006,9 +1006,9 @@ mdamagem(struct monst *magr, struct monst *mdef,
} }
/* caveat: above digestion handling doesn't keep `pa' up to date */ /* caveat: above digestion handling doesn't keep `pa' up to date */
return (MM_DEF_DIED | (grow_up(magr, mdef) ? 0 : MM_AGR_DIED)); return (M_ATTK_DEF_DIED | (grow_up(magr, mdef) ? 0 : M_ATTK_AGR_DIED));
} }
return (mhm.hitflags == MM_AGR_DIED) ? MM_AGR_DIED : MM_HIT; return (mhm.hitflags == M_ATTK_AGR_DIED) ? M_ATTK_AGR_DIED : M_ATTK_HIT;
} }
int int
@@ -1194,7 +1194,7 @@ passivemm(register struct monst *magr, register struct monst *mdef,
register struct permonst *madat = magr->data; register struct permonst *madat = magr->data;
char buf[BUFSZ]; char buf[BUFSZ];
int i, tmp; int i, tmp;
int mhit = mhitb ? MM_HIT : MM_MISS; int mhit = mhitb ? M_ATTK_HIT : M_ATTK_MISS;
for (i = 0;; i++) { for (i = 0;; i++) {
if (i >= NATTK) if (i >= NATTK)
@@ -1334,7 +1334,7 @@ passivemm(register struct monst *magr, register struct monst *mdef,
assess_dmg: assess_dmg:
if ((magr->mhp -= tmp) <= 0) { if ((magr->mhp -= tmp) <= 0) {
monkilled(magr, "", (int) mddat->mattk[i].adtyp); monkilled(magr, "", (int) mddat->mattk[i].adtyp);
return (mdead | mhit | MM_AGR_DIED); return (mdead | mhit | M_ATTK_AGR_DIED);
} }
return (mdead | mhit); return (mdead | mhit);
} }
+32 -32
View File
@@ -314,7 +314,7 @@ getmattk(struct monst *magr, struct monst *mdef,
/* prevent a monster with two consecutive disease or hunger attacks /* prevent a monster with two consecutive disease or hunger attacks
from hitting with both of them on the same turn; if the first has from hitting with both of them on the same turn; if the first has
already hit, switch to a stun attack for the second */ already hit, switch to a stun attack for the second */
if (indx > 0 && prev_result[indx - 1] > MM_MISS if (indx > 0 && prev_result[indx - 1] > M_ATTK_MISS
&& (attk->adtyp == AD_DISE || attk->adtyp == AD_PEST && (attk->adtyp == AD_DISE || attk->adtyp == AD_PEST
|| attk->adtyp == AD_FAMN) || attk->adtyp == AD_FAMN)
&& attk->adtyp == mptr->mattk[indx - 1].adtyp) { && attk->adtyp == mptr->mattk[indx - 1].adtyp) {
@@ -457,14 +457,14 @@ mattacku(register struct monst *mtmp)
&& next2u(mtmp->mx, mtmp->my)) { && next2u(mtmp->mx, mtmp->my)) {
/* Attack your steed instead */ /* Attack your steed instead */
i = mattackm(mtmp, u.usteed); i = mattackm(mtmp, u.usteed);
if ((i & MM_AGR_DIED)) if ((i & M_ATTK_AGR_DIED))
return 1; return 1;
/* make sure steed is still alive and within range */ /* make sure steed is still alive and within range */
if ((i & MM_DEF_DIED) || !u.usteed if ((i & M_ATTK_DEF_DIED) || !u.usteed
|| !next2u(mtmp->mx, mtmp->my)) || !next2u(mtmp->mx, mtmp->my))
return 0; return 0;
/* Let your steed retaliate */ /* Let your steed retaliate */
return !!(mattackm(u.usteed, mtmp) & MM_DEF_DIED); return !!(mattackm(u.usteed, mtmp) & M_ATTK_DEF_DIED);
} }
} }
@@ -677,7 +677,7 @@ mattacku(register struct monst *mtmp)
for (i = 0; i < NATTK; i++) { for (i = 0; i < NATTK; i++) {
/* recalc in case attack moved hero */ /* recalc in case attack moved hero */
calc_mattacku_vars(mtmp, &ranged, &range2, &foundyou, &youseeit); calc_mattacku_vars(mtmp, &ranged, &range2, &foundyou, &youseeit);
sum[i] = MM_MISS; sum[i] = M_ATTK_MISS;
if (i > 0 && firstfoundyou /* previous attack might have moved hero */ if (i > 0 && firstfoundyou /* previous attack might have moved hero */
&& (mtmp->mux != u.ux || mtmp->muy != u.uy)) && (mtmp->mux != u.ux || mtmp->muy != u.uy))
continue; /* fill in sum[] with 'miss' but skip other actions */ continue; /* fill in sum[] with 'miss' but skip other actions */
@@ -825,15 +825,15 @@ mattacku(register struct monst *mtmp)
if (gc.context.botl) if (gc.context.botl)
bot(); bot();
/* give player a chance of waking up before dying -kaa */ /* give player a chance of waking up before dying -kaa */
if (sum[i] == MM_HIT) { /* successful attack */ if (sum[i] == M_ATTK_HIT) { /* successful attack */
if (u.usleep && u.usleep < gm.moves && !rn2(10)) { if (u.usleep && u.usleep < gm.moves && !rn2(10)) {
gm.multi = -1; gm.multi = -1;
gn.nomovemsg = "The combat suddenly awakens you."; gn.nomovemsg = "The combat suddenly awakens you.";
} }
} }
if ((sum[i] & MM_AGR_DIED)) if ((sum[i] & M_ATTK_AGR_DIED))
return 1; /* attacker dead */ return 1; /* attacker dead */
if ((sum[i] & MM_AGR_DONE)) if ((sum[i] & M_ATTK_AGR_DONE))
break; /* attacker teleported, no more attacks */ break; /* attacker teleported, no more attacks */
/* sum[i] == 0: unsuccessful attack */ /* sum[i] == 0: unsuccessful attack */
} }
@@ -1028,7 +1028,7 @@ hitmu(register struct monst *mtmp, register struct attack *mattk)
struct permonst *olduasmon = gy.youmonst.data; struct permonst *olduasmon = gy.youmonst.data;
int res; int res;
struct mhitm_data mhm; struct mhitm_data mhm;
mhm.hitflags = MM_MISS; mhm.hitflags = M_ATTK_MISS;
mhm.permdmg = 0; mhm.permdmg = 0;
mhm.specialdmg = 0; mhm.specialdmg = 0;
mhm.done = FALSE; mhm.done = FALSE;
@@ -1141,7 +1141,7 @@ hitmu(register struct monst *mtmp, register struct attack *mattk)
if (mhm.damage) if (mhm.damage)
res = passiveum(olduasmon, mtmp, mattk); res = passiveum(olduasmon, mtmp, mattk);
else else
res = MM_HIT; res = M_ATTK_HIT;
stop_occupation(); stop_occupation();
return res; return res;
} }
@@ -1179,9 +1179,9 @@ gulpmu(struct monst *mtmp, struct attack *mattk)
int omx = mtmp->mx, omy = mtmp->my; int omx = mtmp->mx, omy = mtmp->my;
if (!engulf_target(mtmp, &gy.youmonst)) if (!engulf_target(mtmp, &gy.youmonst))
return MM_MISS; return M_ATTK_MISS;
if ((t && is_pit(t->ttyp)) && sobj_at(BOULDER, u.ux, u.uy)) if ((t && is_pit(t->ttyp)) && sobj_at(BOULDER, u.ux, u.uy))
return MM_MISS; return M_ATTK_MISS;
if (Punished) if (Punished)
unplacebc(); /* ball&chain go away */ unplacebc(); /* ball&chain go away */
@@ -1247,7 +1247,7 @@ gulpmu(struct monst *mtmp, struct attack *mattk)
if (Punished) if (Punished)
placebc(); placebc();
set_ustuck((struct monst *) 0); set_ustuck((struct monst *) 0);
return (!DEADMONSTER(mtmp)) ? MM_MISS : MM_AGR_DIED; return (!DEADMONSTER(mtmp)) ? M_ATTK_MISS : M_ATTK_AGR_DIED;
} }
display_nhwindow(WIN_MESSAGE, FALSE); display_nhwindow(WIN_MESSAGE, FALSE);
@@ -1280,7 +1280,7 @@ gulpmu(struct monst *mtmp, struct attack *mattk)
} }
if (mtmp != u.ustuck) if (mtmp != u.ustuck)
return MM_MISS; return M_ATTK_MISS;
if (Punished) { if (Punished) {
/* ball&chain are in limbo while swallowed; update their internal /* ball&chain are in limbo while swallowed; update their internal
location to be at swallower's spot */ location to be at swallower's spot */
@@ -1443,7 +1443,7 @@ gulpmu(struct monst *mtmp, struct attack *mattk)
pline("Obviously %s doesn't like your taste.", mon_nam(mtmp)); pline("Obviously %s doesn't like your taste.", mon_nam(mtmp));
expels(mtmp, mtmp->data, FALSE); expels(mtmp, mtmp->data, FALSE);
} }
return MM_HIT; return M_ATTK_HIT;
} }
/* monster explodes in your face */ /* monster explodes in your face */
@@ -1455,7 +1455,7 @@ explmu(struct monst *mtmp, struct attack *mattk, boolean ufound)
int tmp; int tmp;
if (mtmp->mcan) if (mtmp->mcan)
return MM_MISS; return M_ATTK_MISS;
tmp = d((int) mattk->damn, (int) mattk->damd); tmp = d((int) mattk->damn, (int) mattk->damd);
not_affected = defended(mtmp, (int) mattk->adtyp); not_affected = defended(mtmp, (int) mattk->adtyp);
@@ -1517,7 +1517,7 @@ explmu(struct monst *mtmp, struct attack *mattk, boolean ufound)
if (kill_agr && !DEADMONSTER(mtmp)) if (kill_agr && !DEADMONSTER(mtmp))
mondead(mtmp); mondead(mtmp);
wake_nearto(mtmp->mx, mtmp->my, 7 * 7); wake_nearto(mtmp->mx, mtmp->my, 7 * 7);
return (!DEADMONSTER(mtmp)) ? MM_MISS : MM_AGR_DIED; return (!DEADMONSTER(mtmp)) ? M_ATTK_MISS : M_ATTK_AGR_DIED;
} }
/* monster gazes at you */ /* monster gazes at you */
@@ -1539,7 +1539,7 @@ gazemu(struct monst *mtmp, struct attack *mattk)
&& mtmp->mcansee); && mtmp->mcansee);
if (m_seenres(mtmp, cvt_adtyp_to_mseenres(mattk->adtyp))) if (m_seenres(mtmp, cvt_adtyp_to_mseenres(mattk->adtyp)))
return MM_MISS; return M_ATTK_MISS;
is_medusa = (mtmp->data == &mons[PM_MEDUSA]); is_medusa = (mtmp->data == &mons[PM_MEDUSA]);
reflectable = (Reflecting && couldsee(mtmp->mx, mtmp->my) && is_medusa); reflectable = (Reflecting && couldsee(mtmp->mx, mtmp->my) && is_medusa);
@@ -1599,7 +1599,7 @@ gazemu(struct monst *mtmp, struct attack *mattk)
if (!DEADMONSTER(mtmp)) if (!DEADMONSTER(mtmp))
break; break;
return MM_AGR_DIED; return M_ATTK_AGR_DIED;
} }
if (canseemon(mtmp) && couldsee(mtmp->mx, mtmp->my) if (canseemon(mtmp) && couldsee(mtmp->mx, mtmp->my)
&& !Stone_resistance && !Unaware) { && !Stone_resistance && !Unaware) {
@@ -1750,7 +1750,7 @@ gazemu(struct monst *mtmp, struct attack *mattk)
: (!rn2(2) ? "a bit " : "somewhat "), : (!rn2(2) ? "a bit " : "somewhat "),
reactions[react]); reactions[react]);
} }
return MM_MISS; return M_ATTK_MISS;
} }
/* mtmp hits you for n points damage */ /* mtmp hits you for n points damage */
@@ -2212,7 +2212,7 @@ passiveum(
*/ */
for (i = 0; !oldu_mattk; i++) { for (i = 0; !oldu_mattk; i++) {
if (i >= NATTK) if (i >= NATTK)
return MM_HIT; return M_ATTK_HIT;
if (olduasmon->mattk[i].aatyp == AT_NONE if (olduasmon->mattk[i].aatyp == AT_NONE
|| olduasmon->mattk[i].aatyp == AT_BOOM) || olduasmon->mattk[i].aatyp == AT_BOOM)
oldu_mattk = &olduasmon->mattk[i]; oldu_mattk = &olduasmon->mattk[i];
@@ -2265,10 +2265,10 @@ passiveum(
gs.stoned = 1; gs.stoned = 1;
xkilled(mtmp, XKILL_NOMSG); xkilled(mtmp, XKILL_NOMSG);
if (!DEADMONSTER(mtmp)) if (!DEADMONSTER(mtmp))
return MM_HIT; return M_ATTK_HIT;
return MM_AGR_DIED; return M_ATTK_AGR_DIED;
} }
return MM_HIT; return M_ATTK_HIT;
} }
case AD_ENCH: /* KMH -- remove enchantment (disenchanter) */ case AD_ENCH: /* KMH -- remove enchantment (disenchanter) */
if (mon_currwep) { if (mon_currwep) {
@@ -2277,12 +2277,12 @@ passiveum(
(void) drain_item(mon_currwep, TRUE); (void) drain_item(mon_currwep, TRUE);
/* No message */ /* No message */
} }
return MM_HIT; return M_ATTK_HIT;
default: default:
break; break;
} }
if (!Upolyd) if (!Upolyd)
return MM_HIT; return M_ATTK_HIT;
/* These affect the enemy only if you are still a monster */ /* These affect the enemy only if you are still a monster */
if (rn2(3)) if (rn2(3))
@@ -2313,15 +2313,15 @@ passiveum(
return 1; return 1;
pline("%s is frozen by your gaze!", Monnam(mtmp)); pline("%s is frozen by your gaze!", Monnam(mtmp));
paralyze_monst(mtmp, tmp); paralyze_monst(mtmp, tmp);
return MM_AGR_DONE; return M_ATTK_AGR_DONE;
} }
} }
} else { /* gelatinous cube */ } else { /* gelatinous cube */
pline("%s is frozen by you.", Monnam(mtmp)); pline("%s is frozen by you.", Monnam(mtmp));
paralyze_monst(mtmp, tmp); paralyze_monst(mtmp, tmp);
return MM_AGR_DONE; return M_ATTK_AGR_DONE;
} }
return MM_HIT; return M_ATTK_HIT;
case AD_COLD: /* Brown mold or blue jelly */ case AD_COLD: /* Brown mold or blue jelly */
if (resists_cold(mtmp)) { if (resists_cold(mtmp)) {
shieldeff(mtmp->mx, mtmp->my); shieldeff(mtmp->mx, mtmp->my);
@@ -2377,10 +2377,10 @@ passiveum(
pline("%s dies!", Monnam(mtmp)); pline("%s dies!", Monnam(mtmp));
xkilled(mtmp, XKILL_NOMSG); xkilled(mtmp, XKILL_NOMSG);
if (!DEADMONSTER(mtmp)) if (!DEADMONSTER(mtmp))
return MM_HIT; return M_ATTK_HIT;
return MM_AGR_DIED; return M_ATTK_AGR_DIED;
} }
return MM_HIT; return M_ATTK_HIT;
} }
struct monst * struct monst *
+6 -6
View File
@@ -756,7 +756,7 @@ dochug(register struct monst* mtmp)
for (a = &mdat->mattk[0]; a < &mdat->mattk[NATTK]; a++) { for (a = &mdat->mattk[0]; a < &mdat->mattk[NATTK]; a++) {
if (a->aatyp == AT_MAGC if (a->aatyp == AT_MAGC
&& (a->adtyp == AD_SPEL || a->adtyp == AD_CLRC)) { && (a->adtyp == AD_SPEL || a->adtyp == AD_CLRC)) {
if ((castmu(mtmp, a, FALSE, FALSE) & MM_HIT)) { if ((castmu(mtmp, a, FALSE, FALSE) & M_ATTK_HIT)) {
status = MMOVE_DONE; /* bypass m_move() */ status = MMOVE_DONE; /* bypass m_move() */
break; break;
} }
@@ -1506,9 +1506,9 @@ m_move(register struct monst* mtmp, register int after)
mtmp2 = m_at(nix, niy); mtmp2 = m_at(nix, niy);
mstatus = mdisplacem(mtmp, mtmp2, FALSE); mstatus = mdisplacem(mtmp, mtmp2, FALSE);
if ((mstatus & MM_AGR_DIED) || (mstatus & MM_DEF_DIED)) if ((mstatus & M_ATTK_AGR_DIED) || (mstatus & M_ATTK_DEF_DIED))
return MMOVE_DIED; return MMOVE_DIED;
if (mstatus & MM_HIT) if (mstatus & M_ATTK_HIT)
return MMOVE_MOVED; return MMOVE_MOVED;
return MMOVE_DONE; return MMOVE_DONE;
} }
@@ -1796,15 +1796,15 @@ m_move_aggress(struct monst* mtmp, coordxy x, coordxy y)
/* note: mstatus returns 0 if mtmp2 is nonexistent */ /* note: mstatus returns 0 if mtmp2 is nonexistent */
mstatus = mattackm(mtmp, mtmp2); mstatus = mattackm(mtmp, mtmp2);
if (mstatus & MM_AGR_DIED) /* aggressor died */ if (mstatus & M_ATTK_AGR_DIED) /* aggressor died */
return MMOVE_DIED; return MMOVE_DIED;
if ((mstatus & MM_HIT) && !(mstatus & MM_DEF_DIED) && rn2(4) if ((mstatus & M_ATTK_HIT) && !(mstatus & M_ATTK_DEF_DIED) && rn2(4)
&& mtmp2->movement >= NORMAL_SPEED) { && mtmp2->movement >= NORMAL_SPEED) {
mtmp2->movement -= NORMAL_SPEED; mtmp2->movement -= NORMAL_SPEED;
gn.notonhead = 0; gn.notonhead = 0;
mstatus = mattackm(mtmp2, mtmp); /* return attack */ mstatus = mattackm(mtmp2, mtmp); /* return attack */
if (mstatus & MM_DEF_DIED) if (mstatus & M_ATTK_DEF_DIED)
return MMOVE_DIED; return MMOVE_DIED;
} }
return MMOVE_DONE; return MMOVE_DONE;
+12 -12
View File
@@ -785,13 +785,13 @@ thrwmm(struct monst* mtmp, struct monst* mtarg)
mtmp->weapon_check = NEED_RANGED_WEAPON; mtmp->weapon_check = NEED_RANGED_WEAPON;
/* mon_wield_item resets weapon_check as appropriate */ /* mon_wield_item resets weapon_check as appropriate */
if (mon_wield_item(mtmp) != 0) if (mon_wield_item(mtmp) != 0)
return MM_MISS; return M_ATTK_MISS;
} }
/* Pick a weapon */ /* Pick a weapon */
otmp = select_rwep(mtmp); otmp = select_rwep(mtmp);
if (!otmp) if (!otmp)
return MM_MISS; return M_ATTK_MISS;
ispole = is_pole(otmp); ispole = is_pole(otmp);
x = mtmp->mx; x = mtmp->mx;
@@ -806,17 +806,17 @@ thrwmm(struct monst* mtmp, struct monst* mtarg)
if (ammo_and_launcher(otmp, mwep) if (ammo_and_launcher(otmp, mwep)
&& dist2(mtmp->mx, mtmp->my, mtarg->mx, mtarg->my) && dist2(mtmp->mx, mtmp->my, mtarg->mx, mtarg->my)
> PET_MISSILE_RANGE2) > PET_MISSILE_RANGE2)
return MM_MISS; /* Out of range */ return M_ATTK_MISS; /* Out of range */
/* Set target monster */ /* Set target monster */
gm.mtarget = mtarg; gm.mtarget = mtarg;
gm.marcher = mtmp; gm.marcher = mtmp;
monshoot(mtmp, otmp, mwep); /* multishot shooting or throwing */ monshoot(mtmp, otmp, mwep); /* multishot shooting or throwing */
gm.marcher = gm.mtarget = (struct monst *) 0; gm.marcher = gm.mtarget = (struct monst *) 0;
nomul(0); nomul(0);
return MM_HIT; return M_ATTK_HIT;
} }
} }
return MM_MISS; return M_ATTK_MISS;
} }
/* monster spits substance at monster */ /* monster spits substance at monster */
@@ -835,7 +835,7 @@ spitmm(struct monst* mtmp, struct attack* mattk, struct monst* mtarg)
You_hear("a dry rattle nearby."); You_hear("a dry rattle nearby.");
} }
} }
return MM_MISS; return M_ATTK_MISS;
} }
if (m_lined_up(mtarg, mtmp)) { if (m_lined_up(mtarg, mtmp)) {
boolean utarg = (mtarg == &gy.youmonst); boolean utarg = (mtarg == &gy.youmonst);
@@ -874,13 +874,13 @@ spitmm(struct monst* mtmp, struct attack* mattk, struct monst* mtarg)
dog->hungrytime -= 5; dog->hungrytime -= 5;
} }
return MM_HIT; return M_ATTK_HIT;
} else { } else {
obj_extract_self(otmp); obj_extract_self(otmp);
obfree(otmp, (struct obj *) 0); obfree(otmp, (struct obj *) 0);
} }
} }
return MM_MISS; return M_ATTK_MISS;
} }
/* Return the name of a breath weapon. If the player is hallucinating, return /* Return the name of a breath weapon. If the player is hallucinating, return
@@ -911,7 +911,7 @@ breamm(struct monst* mtmp, struct attack* mattk, struct monst* mtarg)
You_hear("a cough."); You_hear("a cough.");
} }
} }
return MM_MISS; return M_ATTK_MISS;
} }
/* if we've seen the actual resistance, don't bother, or /* if we've seen the actual resistance, don't bother, or
@@ -919,7 +919,7 @@ breamm(struct monst* mtmp, struct attack* mattk, struct monst* mtarg)
if (m_seenres(mtmp, cvt_adtyp_to_mseenres(typ)) if (m_seenres(mtmp, cvt_adtyp_to_mseenres(typ))
|| (m_seenres(mtmp, M_SEEN_REFL) || (m_seenres(mtmp, M_SEEN_REFL)
&& monnear(mtmp, mtmp->mux, mtmp->muy))) && monnear(mtmp, mtmp->mux, mtmp->muy)))
return MM_HIT; return M_ATTK_HIT;
if (!mtmp->mspec_used && rn2(3)) { if (!mtmp->mspec_used && rn2(3)) {
if (BZ_VALID_ADTYP(typ)) { if (BZ_VALID_ADTYP(typ)) {
@@ -951,9 +951,9 @@ breamm(struct monst* mtmp, struct attack* mattk, struct monst* mtarg)
} }
} else impossible("Breath weapon %d used", typ-1); } else impossible("Breath weapon %d used", typ-1);
} else } else
return MM_MISS; return M_ATTK_MISS;
} }
return MM_HIT; return M_ATTK_HIT;
} }
/* remove an entire item from a monster's inventory; destroy that item */ /* remove an entire item from a monster's inventory; destroy that item */
+69 -69
View File
@@ -2088,7 +2088,7 @@ mhitm_ad_rust(struct monst *magr, struct attack *mattk, struct monst *mdef,
pline("%s %s to pieces!", Monnam(mdef), pline("%s %s to pieces!", Monnam(mdef),
!mlifesaver(mdef) ? "falls" : "starts to fall"); !mlifesaver(mdef) ? "falls" : "starts to fall");
xkilled(mdef, XKILL_NOMSG); xkilled(mdef, XKILL_NOMSG);
mhm->hitflags |= MM_DEF_DIED; mhm->hitflags |= M_ATTK_DEF_DIED;
} }
erode_armor(mdef, ERODE_RUST); erode_armor(mdef, ERODE_RUST);
mhm->damage = 0; /* damageum(), int tmp */ mhm->damage = 0; /* damageum(), int tmp */
@@ -2115,12 +2115,12 @@ mhitm_ad_rust(struct monst *magr, struct attack *mattk, struct monst *mdef,
!mlifesaver(mdef) ? "falls" : "starts to fall"); !mlifesaver(mdef) ? "falls" : "starts to fall");
monkilled(mdef, (char *) 0, AD_RUST); monkilled(mdef, (char *) 0, AD_RUST);
if (!DEADMONSTER(mdef)) { if (!DEADMONSTER(mdef)) {
mhm->hitflags = MM_MISS; mhm->hitflags = M_ATTK_MISS;
mhm->done = TRUE; mhm->done = TRUE;
return; return;
} }
mhm->hitflags = (MM_DEF_DIED | (grow_up(magr, mdef) ? 0 mhm->hitflags = (M_ATTK_DEF_DIED | (grow_up(magr, mdef) ? 0
: MM_AGR_DIED)); : M_ATTK_AGR_DIED));
mhm->done = TRUE; mhm->done = TRUE;
return; return;
} }
@@ -2194,12 +2194,12 @@ mhitm_ad_dcay(struct monst *magr, struct attack *mattk, struct monst *mdef,
monkilled(mdef, (char *) 0, AD_DCAY); monkilled(mdef, (char *) 0, AD_DCAY);
if (!DEADMONSTER(mdef)) { if (!DEADMONSTER(mdef)) {
mhm->done = TRUE; mhm->done = TRUE;
mhm->hitflags = MM_MISS; mhm->hitflags = M_ATTK_MISS;
return; return;
} }
mhm->done = TRUE; mhm->done = TRUE;
mhm->hitflags = (MM_DEF_DIED mhm->hitflags = (M_ATTK_DEF_DIED
| (grow_up(magr, mdef) ? 0 : MM_AGR_DIED)); | (grow_up(magr, mdef) ? 0 : M_ATTK_AGR_DIED));
return; return;
} }
erode_armor(mdef, ERODE_ROT); erode_armor(mdef, ERODE_ROT);
@@ -2398,12 +2398,12 @@ mhitm_ad_fire(
: "is totally engulfed in flames"); : "is totally engulfed in flames");
monkilled(mdef, (char *) 0, AD_FIRE); monkilled(mdef, (char *) 0, AD_FIRE);
if (!DEADMONSTER(mdef)) { if (!DEADMONSTER(mdef)) {
mhm->hitflags = MM_MISS; mhm->hitflags = M_ATTK_MISS;
mhm->done = TRUE; mhm->done = TRUE;
return; return;
} }
mhm->hitflags = (MM_DEF_DIED mhm->hitflags = (M_ATTK_DEF_DIED
| (grow_up(magr, mdef) ? 0 : MM_AGR_DIED)); | (grow_up(magr, mdef) ? 0 : M_ATTK_AGR_DIED));
mhm->done = TRUE; mhm->done = TRUE;
return; return;
} }
@@ -2867,14 +2867,14 @@ mhitm_ad_curs(struct monst *magr, struct attack *mattk, struct monst *mdef,
} }
mondied(mdef); mondied(mdef);
if (!DEADMONSTER(mdef)) { if (!DEADMONSTER(mdef)) {
mhm->hitflags = MM_MISS; mhm->hitflags = M_ATTK_MISS;
mhm->done = TRUE; mhm->done = TRUE;
return; return;
} else if (mdef->mtame && !gv.vis) { } else if (mdef->mtame && !gv.vis) {
You(brief_feeling, "strangely sad"); You(brief_feeling, "strangely sad");
} }
mhm->hitflags = (MM_DEF_DIED mhm->hitflags = (M_ATTK_DEF_DIED
| (grow_up(magr, mdef) ? 0 : MM_AGR_DIED)); | (grow_up(magr, mdef) ? 0 : M_ATTK_AGR_DIED));
mhm->done = TRUE; mhm->done = TRUE;
return; return;
} }
@@ -3017,7 +3017,7 @@ mhitm_ad_drin(
regardless of current shape) or is noncorporeal regardless of current shape) or is noncorporeal
(can't happen here; no one can poly into a ghost (can't happen here; no one can poly into a ghost
or shade) so this check for missing is academic */ or shade) so this check for missing is academic */
if (eat_brains(magr, mdef, TRUE, (int *) 0) == MM_MISS) if (eat_brains(magr, mdef, TRUE, (int *) 0) == M_ATTK_MISS)
return; return;
} }
/* adjattrib gives dunce cap message when appropriate */ /* adjattrib gives dunce cap message when appropriate */
@@ -3273,7 +3273,7 @@ mhitm_ad_slim(
} }
/* munslime attempt could have been fatal */ /* munslime attempt could have been fatal */
if (DEADMONSTER(mdef)) { if (DEADMONSTER(mdef)) {
mhm->hitflags = MM_DEF_DIED; /* skip death message */ mhm->hitflags = M_ATTK_DEF_DIED; /* skip death message */
mhm->done = TRUE; mhm->done = TRUE;
return; return;
} }
@@ -3314,14 +3314,14 @@ mhitm_ad_slim(
if (newcham(mdef, &mons[PM_GREEN_SLIME], ncflags)) if (newcham(mdef, &mons[PM_GREEN_SLIME], ncflags))
pd = mdef->data; pd = mdef->data;
mdef->mstrategy &= ~STRAT_WAITFORU; mdef->mstrategy &= ~STRAT_WAITFORU;
mhm->hitflags = MM_HIT; mhm->hitflags = M_ATTK_HIT;
} }
/* munslime attempt could have been fatal, /* munslime attempt could have been fatal,
potentially to multiple monsters (SCR_FIRE) */ potentially to multiple monsters (SCR_FIRE) */
if (DEADMONSTER(magr)) if (DEADMONSTER(magr))
mhm->hitflags |= MM_AGR_DIED; mhm->hitflags |= M_ATTK_AGR_DIED;
if (DEADMONSTER(mdef)) if (DEADMONSTER(mdef))
mhm->hitflags |= MM_DEF_DIED; mhm->hitflags |= M_ATTK_DEF_DIED;
mhm->damage = 0; mhm->damage = 0;
} }
} }
@@ -3667,14 +3667,14 @@ do_stone_mon(struct monst *magr, struct attack *mattk UNUSED,
monstone(mdef); monstone(mdef);
post_stone: post_stone:
if (!DEADMONSTER(mdef)) { if (!DEADMONSTER(mdef)) {
mhm->hitflags = MM_MISS; mhm->hitflags = M_ATTK_MISS;
mhm->done = TRUE; mhm->done = TRUE;
return; return;
} else if (mdef->mtame && !gv.vis) { } else if (mdef->mtame && !gv.vis) {
You(brief_feeling, "peculiarly sad"); You(brief_feeling, "peculiarly sad");
} }
mhm->hitflags = (MM_DEF_DIED mhm->hitflags = (M_ATTK_DEF_DIED
| (grow_up(magr, mdef) ? 0 : MM_AGR_DIED)); | (grow_up(magr, mdef) ? 0 : M_ATTK_AGR_DIED));
mhm->done = TRUE; mhm->done = TRUE;
return; return;
} }
@@ -3728,11 +3728,11 @@ mhitm_ad_phys(
if (!u.ustuck && rn2(2)) { if (!u.ustuck && rn2(2)) {
if (u_slip_free(magr, mattk)) { if (u_slip_free(magr, mattk)) {
mhm->damage = 0; mhm->damage = 0;
mhm->hitflags |= MM_MISS; mhm->hitflags |= M_ATTK_MISS;
} else { } else {
set_ustuck(magr); set_ustuck(magr);
pline("%s grabs you!", Monnam(magr)); pline("%s grabs you!", Monnam(magr));
mhm->hitflags |= MM_HIT; mhm->hitflags |= M_ATTK_HIT;
} }
} else if (u.ustuck == magr) { } else if (u.ustuck == magr) {
exercise(A_STR, FALSE); exercise(A_STR, FALSE);
@@ -3753,7 +3753,7 @@ mhitm_ad_phys(
mons[otmp->corpsenm].pmnames[NEUTRAL]); mons[otmp->corpsenm].pmnames[NEUTRAL]);
if (!Stoned) { if (!Stoned) {
if (do_stone_u(magr)) { if (do_stone_u(magr)) {
mhm->hitflags = MM_HIT; mhm->hitflags = M_ATTK_HIT;
mhm->done = 1; mhm->done = 1;
return; return;
} }
@@ -3769,7 +3769,7 @@ mhitm_ad_phys(
|| !artifact_hit(magr, mdef, otmp, &mhm->damage, || !artifact_hit(magr, mdef, otmp, &mhm->damage,
gm.mhitu_dieroll)) { gm.mhitu_dieroll)) {
hitmsg(magr, mattk); hitmsg(magr, mattk);
mhm->hitflags |= MM_HIT; mhm->hitflags |= M_ATTK_HIT;
} }
if (!mhm->damage) if (!mhm->damage)
return; return;
@@ -3805,7 +3805,7 @@ mhitm_ad_phys(
} else if (mattk->aatyp != AT_TUCH || mhm->damage != 0 } else if (mattk->aatyp != AT_TUCH || mhm->damage != 0
|| magr != u.ustuck) { || magr != u.ustuck) {
hitmsg(magr, mattk); hitmsg(magr, mattk);
mhm->hitflags |= MM_HIT; mhm->hitflags |= M_ATTK_HIT;
} }
} }
} else { } else {
@@ -3849,14 +3849,14 @@ mhitm_ad_phys(
if (gv.vis) if (gv.vis)
pline("%s hits %s.", Monnam(magr), pline("%s hits %s.", Monnam(magr),
mon_nam_too(mdef, magr)); mon_nam_too(mdef, magr));
mhm->hitflags |= MM_HIT; mhm->hitflags |= M_ATTK_HIT;
} }
/* artifact_hit updates 'tmp' but doesn't inflict any /* artifact_hit updates 'tmp' but doesn't inflict any
damage; however, it might cause carried items to be damage; however, it might cause carried items to be
destroyed and they might do so */ destroyed and they might do so */
if (DEADMONSTER(mdef)) { if (DEADMONSTER(mdef)) {
mhm->hitflags = (MM_DEF_DIED | (grow_up(magr, mdef) ? 0 mhm->hitflags = (M_ATTK_DEF_DIED | (grow_up(magr, mdef) ? 0
: MM_AGR_DIED)); : M_ATTK_AGR_DIED));
mhm->done = TRUE; mhm->done = TRUE;
return; return;
} }
@@ -3919,7 +3919,7 @@ mhitm_ad_ston(
*/ */
if (!rn2(10) || flags.moonphase == NEW_MOON) { if (!rn2(10) || flags.moonphase == NEW_MOON) {
if (do_stone_u(magr)) { if (do_stone_u(magr)) {
mhm->hitflags = MM_HIT; mhm->hitflags = M_ATTK_HIT;
mhm->done = TRUE; mhm->done = TRUE;
return; return;
} }
@@ -4028,14 +4028,14 @@ mhitm_ad_heal(struct monst *magr, struct attack *mattk, struct monst *mdef,
if (goaway) { if (goaway) {
mongone(magr); mongone(magr);
mhm->done = TRUE; mhm->done = TRUE;
mhm->hitflags = MM_DEF_DIED; /* return 2??? */ mhm->hitflags = M_ATTK_DEF_DIED; /* return 2??? */
return; return;
} else if (!rn2(33)) { } else if (!rn2(33)) {
if (!tele_restrict(magr)) if (!tele_restrict(magr))
(void) rloc(magr, RLOC_MSG); (void) rloc(magr, RLOC_MSG);
monflee(magr, d(3, 6), TRUE, FALSE); monflee(magr, d(3, 6), TRUE, FALSE);
mhm->done = TRUE; mhm->done = TRUE;
mhm->hitflags = MM_HIT | MM_DEF_DIED; /* return 3??? */ mhm->hitflags = M_ATTK_HIT | M_ATTK_DEF_DIED; /* return 3??? */
return; return;
} }
mhm->damage = 0; mhm->damage = 0;
@@ -4187,12 +4187,12 @@ mhitm_ad_dgst(struct monst *magr, struct attack *mattk UNUSED,
: "vomits violently and drops dead"); : "vomits violently and drops dead");
mondied(magr); mondied(magr);
if (!DEADMONSTER(magr)) { if (!DEADMONSTER(magr)) {
mhm->hitflags = MM_MISS; /* lifesaved */ mhm->hitflags = M_ATTK_MISS; /* lifesaved */
mhm->done = TRUE; mhm->done = TRUE;
return; return;
} else if (magr->mtame && !gv.vis) } else if (magr->mtame && !gv.vis)
You(brief_feeling, "queasy"); You(brief_feeling, "queasy");
mhm->hitflags = MM_AGR_DIED; mhm->hitflags = M_ATTK_AGR_DIED;
mhm->done = TRUE; mhm->done = TRUE;
return; return;
} }
@@ -4318,7 +4318,7 @@ mhitm_ad_sedu(
: "makes some remarks about how difficult theft is lately"); : "makes some remarks about how difficult theft is lately");
if (!tele_restrict(magr)) if (!tele_restrict(magr))
(void) rloc(magr, RLOC_MSG); (void) rloc(magr, RLOC_MSG);
mhm->hitflags = MM_AGR_DONE; /* return 3??? */ mhm->hitflags = M_ATTK_AGR_DONE; /* return 3??? */
mhm->done = TRUE; mhm->done = TRUE;
return; return;
} else if (magr->mcan) { } else if (magr->mcan) {
@@ -4330,7 +4330,7 @@ mhitm_ad_sedu(
if (rn2(3)) { if (rn2(3)) {
if (!tele_restrict(magr)) if (!tele_restrict(magr))
(void) rloc(magr, RLOC_MSG); (void) rloc(magr, RLOC_MSG);
mhm->hitflags = MM_AGR_DONE; /* return 3??? */ mhm->hitflags = M_ATTK_AGR_DONE; /* return 3??? */
mhm->done = TRUE; mhm->done = TRUE;
return; return;
} }
@@ -4339,7 +4339,7 @@ mhitm_ad_sedu(
buf[0] = '\0'; buf[0] = '\0';
switch (steal(magr, buf)) { switch (steal(magr, buf)) {
case -1: case -1:
mhm->hitflags = MM_AGR_DIED; /* return 2??? */ mhm->hitflags = M_ATTK_AGR_DIED; /* return 2??? */
mhm->done = TRUE; mhm->done = TRUE;
return; return;
case 0: case 0:
@@ -4353,7 +4353,7 @@ mhitm_ad_sedu(
locomotion(magr->data, "run"), buf); locomotion(magr->data, "run"), buf);
} }
monflee(magr, 0, FALSE, FALSE); monflee(magr, 0, FALSE, FALSE);
mhm->hitflags = MM_AGR_DONE; /* return 3??? */ mhm->hitflags = M_ATTK_AGR_DONE; /* return 3??? */
mhm->done = TRUE; mhm->done = TRUE;
return; return;
} }
@@ -4393,8 +4393,8 @@ mhitm_ad_sedu(
mdef->mstrategy &= ~STRAT_WAITFORU; mdef->mstrategy &= ~STRAT_WAITFORU;
mselftouch(mdef, (const char *) 0, FALSE); mselftouch(mdef, (const char *) 0, FALSE);
if (DEADMONSTER(mdef)) { if (DEADMONSTER(mdef)) {
mhm->hitflags = (MM_DEF_DIED mhm->hitflags = (M_ATTK_DEF_DIED
| (grow_up(magr, mdef) ? 0 : MM_AGR_DIED)); | (grow_up(magr, mdef) ? 0 : M_ATTK_AGR_DIED));
mhm->done = TRUE; mhm->done = TRUE;
return; return;
} }
@@ -4425,7 +4425,7 @@ mhitm_ad_ssex(struct monst *magr, struct attack *mattk, struct monst *mdef,
if (SYSOPT_SEDUCE) { if (SYSOPT_SEDUCE) {
if (could_seduce(magr, mdef, mattk) == 1 && !magr->mcan) if (could_seduce(magr, mdef, mattk) == 1 && !magr->mcan)
if (doseduce(magr)) { if (doseduce(magr)) {
mhm->hitflags = MM_AGR_DONE; mhm->hitflags = M_ATTK_AGR_DONE;
mhm->done = TRUE; mhm->done = TRUE;
return; return;
} }
@@ -4504,7 +4504,7 @@ damageum(
struct mhitm_data mhm; struct mhitm_data mhm;
mhm.damage = d((int) mattk->damn, (int) mattk->damd); mhm.damage = d((int) mattk->damn, (int) mattk->damd);
mhm.hitflags = MM_MISS; mhm.hitflags = M_ATTK_MISS;
mhm.permdmg = 0; mhm.permdmg = 0;
mhm.specialdmg = specialdmg; mhm.specialdmg = specialdmg;
mhm.done = FALSE; mhm.done = FALSE;
@@ -4512,7 +4512,7 @@ damageum(
if (is_demon(gy.youmonst.data) && !rn2(13) && !uwep if (is_demon(gy.youmonst.data) && !rn2(13) && !uwep
&& u.umonnum != PM_AMOROUS_DEMON && u.umonnum != PM_BALROG) { && u.umonnum != PM_AMOROUS_DEMON && u.umonnum != PM_BALROG) {
demonpet(); demonpet();
return MM_MISS; return M_ATTK_MISS;
} }
mhitm_adtyping(&gy.youmonst, mattk, mdef, &mhm); mhitm_adtyping(&gy.youmonst, mattk, mdef, &mhm);
@@ -4542,9 +4542,9 @@ damageum(
killed(mdef); /* regular "you kill <mdef>" message */ killed(mdef); /* regular "you kill <mdef>" message */
} }
gm.mkcorpstat_norevive = FALSE; gm.mkcorpstat_norevive = FALSE;
return MM_DEF_DIED; return M_ATTK_DEF_DIED;
} }
return MM_HIT; return M_ATTK_HIT;
} }
/* Hero, as a monster which is capable of an exploding attack mattk, is /* Hero, as a monster which is capable of an exploding attack mattk, is
@@ -4581,14 +4581,14 @@ explum(struct monst *mdef, struct attack *mattk)
if (mdef && DEADMONSTER(mdef)) { if (mdef && DEADMONSTER(mdef)) {
/* Other monsters may have died too, but return this if the actual /* Other monsters may have died too, but return this if the actual
target died. */ target died. */
return MM_DEF_DIED; return M_ATTK_DEF_DIED;
} }
break; break;
default: default:
break; break;
} }
wake_nearto(u.ux, u.uy, 7 * 7); /* same radius as exploding monster */ wake_nearto(u.ux, u.uy, 7 * 7); /* same radius as exploding monster */
return MM_HIT; return M_ATTK_HIT;
} }
static void static void
@@ -4642,7 +4642,7 @@ gulpum(struct monst *mdef, struct attack *mattk)
*/ */
if (!engulf_target(&gy.youmonst, mdef)) if (!engulf_target(&gy.youmonst, mdef))
return MM_MISS; return M_ATTK_MISS;
if (!(u_digest && u.uhunger >= 1500) && !u.uswallow) { if (!(u_digest && u.uhunger >= 1500) && !u.uswallow) {
if (!flaming(gy.youmonst.data)) { if (!flaming(gy.youmonst.data)) {
@@ -4668,7 +4668,7 @@ gulpum(struct monst *mdef, struct attack *mattk)
} else { } else {
map_invisible(mdef->mx, mdef->my); map_invisible(mdef->mx, mdef->my);
} }
return MM_HIT; return M_ATTK_HIT;
} }
/* engulfing a cockatrice or digesting a Rider or Medusa */ /* engulfing a cockatrice or digesting a Rider or Medusa */
@@ -4705,7 +4705,7 @@ gulpum(struct monst *mdef, struct attack *mattk)
pmname(pd, Mgender(mdef))); pmname(pd, Mgender(mdef)));
gk.killer.format = NO_KILLER_PREFIX; gk.killer.format = NO_KILLER_PREFIX;
done(DIED); done(DIED);
return MM_MISS; /* lifesaved */ return M_ATTK_MISS; /* lifesaved */
} }
if (Slow_digestion) { if (Slow_digestion) {
@@ -4765,7 +4765,7 @@ gulpum(struct monst *mdef, struct attack *mattk)
exercise(A_CON, TRUE); exercise(A_CON, TRUE);
} }
end_engulf(); end_engulf();
return MM_DEF_DIED; return M_ATTK_DEF_DIED;
case AD_PHYS: case AD_PHYS:
if (gy.youmonst.data == &mons[PM_FOG_CLOUD]) { if (gy.youmonst.data == &mons[PM_FOG_CLOUD]) {
pline("%s is laden with your moisture.", Monnam(mdef)); pline("%s is laden with your moisture.", Monnam(mdef));
@@ -4844,7 +4844,7 @@ gulpum(struct monst *mdef, struct attack *mattk)
if (DEADMONSTER(mdef)) { if (DEADMONSTER(mdef)) {
killed(mdef); killed(mdef);
if (DEADMONSTER(mdef)) /* not lifesaved */ if (DEADMONSTER(mdef)) /* not lifesaved */
return MM_DEF_DIED; return M_ATTK_DEF_DIED;
} }
You("%s %s!", expel_verb, mon_nam(mdef)); You("%s %s!", expel_verb, mon_nam(mdef));
if ((Slow_digestion || is_animal(gy.youmonst.data)) && u_digest) { if ((Slow_digestion || is_animal(gy.youmonst.data)) && u_digest) {
@@ -4853,7 +4853,7 @@ gulpum(struct monst *mdef, struct attack *mattk)
} }
} }
} }
return MM_MISS; return M_ATTK_MISS;
} }
void void
@@ -4960,7 +4960,7 @@ mhitm_knockback(
/* the attack must have hit */ /* the attack must have hit */
/* mon-vs-mon code path doesn't set up hitflags */ /* mon-vs-mon code path doesn't set up hitflags */
if ((u_agr || u_def) && !(*hitflags & MM_HIT)) if ((u_agr || u_def) && !(*hitflags & M_ATTK_HIT))
return FALSE; return FALSE;
/* steadfast defender cannot be pushed around */ /* steadfast defender cannot be pushed around */
@@ -5028,7 +5028,7 @@ mhitm_knockback(
mhurtle(mdef, dx, dy, knockdistance); mhurtle(mdef, dx, dy, knockdistance);
if (DEADMONSTER(mdef)) { if (DEADMONSTER(mdef)) {
if (!was_u) if (!was_u)
*hitflags |= MM_DEF_DIED; *hitflags |= M_ATTK_DEF_DIED;
} else if (!rn2(4)) { } else if (!rn2(4)) {
mdef->mstun = 1; mdef->mstun = 1;
/* if steed and hero were knocked back, update attacker's idea /* if steed and hero were knocked back, update attacker's idea
@@ -5039,7 +5039,7 @@ mhitm_knockback(
} }
if (!u_agr) { if (!u_agr) {
if (DEADMONSTER(magr)) if (DEADMONSTER(magr))
*hitflags |= MM_AGR_DIED; *hitflags |= M_ATTK_AGR_DIED;
} }
return TRUE; return TRUE;
@@ -5063,7 +5063,7 @@ hmonas(struct monst *mon)
with more than one, alternate right and left when checking with more than one, alternate right and left when checking
whether silver ring causes successful hit */ whether silver ring causes successful hit */
for (i = 0; i < NATTK; i++) { for (i = 0; i < NATTK; i++) {
sum[i] = MM_MISS; sum[i] = M_ATTK_MISS;
mattk = getmattk(&gy.youmonst, mon, i, sum, &alt_attk); mattk = getmattk(&gy.youmonst, mon, i, sum, &alt_attk);
if (mattk->aatyp == AT_WEAP if (mattk->aatyp == AT_WEAP
|| mattk->aatyp == AT_CLAW || mattk->aatyp == AT_TUCH) || mattk->aatyp == AT_CLAW || mattk->aatyp == AT_TUCH)
@@ -5074,7 +5074,7 @@ hmonas(struct monst *mon)
gs.skipdrin = FALSE; /* [see mattackm(mhitm.c)] */ gs.skipdrin = FALSE; /* [see mattackm(mhitm.c)] */
for (i = 0; i < NATTK; i++) { for (i = 0; i < NATTK; i++) {
/* sum[i] = MM_MISS; -- now done above */ /* sum[i] = M_ATTK_MISS; -- now done above */
mattk = getmattk(&gy.youmonst, mon, i, sum, &alt_attk); mattk = getmattk(&gy.youmonst, mon, i, sum, &alt_attk);
if (gs.skipdrin && mattk->aatyp == AT_TENT && mattk->adtyp == AD_DRIN) if (gs.skipdrin && mattk->aatyp == AT_TENT && mattk->adtyp == AD_DRIN)
continue; continue;
@@ -5088,7 +5088,7 @@ hmonas(struct monst *mon)
get to make another weapon attack (note: monsters who get to make another weapon attack (note: monsters who
use weapons do not have this restriction, but they also use weapons do not have this restriction, but they also
never have the opportunity to use two weapons) */ never have the opportunity to use two weapons) */
if (weapon_used && (sum[i - 1] > MM_MISS) if (weapon_used && (sum[i - 1] > M_ATTK_MISS)
&& uwep && bimanual(uwep)) && uwep && bimanual(uwep))
continue; continue;
/* Certain monsters don't use weapons when encountered as enemies, /* Certain monsters don't use weapons when encountered as enemies,
@@ -5144,10 +5144,10 @@ hmonas(struct monst *mon)
weapon = *originalweapon; /* might receive passive erosion */ weapon = *originalweapon; /* might receive passive erosion */
if (!monster_survived) { if (!monster_survived) {
/* enemy dead, before any special abilities used */ /* enemy dead, before any special abilities used */
sum[i] = MM_DEF_DIED; sum[i] = M_ATTK_DEF_DIED;
break; break;
} else } else
sum[i] = dhit ? MM_HIT : MM_MISS; sum[i] = dhit ? M_ATTK_HIT : M_ATTK_MISS;
/* might be a worm that gets cut in half; if so, early return */ /* might be a worm that gets cut in half; if so, early return */
if (m_at(u.ux + u.dx, u.uy + u.dy) != mon) { if (m_at(u.ux + u.dx, u.uy + u.dy) != mon) {
i = NATTK; /* skip additional attacks */ i = NATTK; /* skip additional attacks */
@@ -5342,8 +5342,8 @@ hmonas(struct monst *mon)
if (silverhit && Verbose(4, hmonas3)) if (silverhit && Verbose(4, hmonas3))
silver_sears(&gy.youmonst, mon, silverhit); silver_sears(&gy.youmonst, mon, silverhit);
sum[i] = damageum(mon, mattk, specialdmg); sum[i] = damageum(mon, mattk, specialdmg);
} else if (i >= 2 && (sum[i - 1] > MM_MISS) } else if (i >= 2 && (sum[i - 1] > M_ATTK_MISS)
&& (sum[i - 2] > MM_MISS)) { && (sum[i - 2] > M_ATTK_MISS)) {
/* in case we're hugging a new target while already /* in case we're hugging a new target while already
holding something else; yields feedback holding something else; yields feedback
"<u.ustuck> is no longer in your clutches" */ "<u.ustuck> is no longer in your clutches" */
@@ -5375,7 +5375,7 @@ hmonas(struct monst *mon)
Your("attempt to surround %s is harmless.", mon_nam(mon)); Your("attempt to surround %s is harmless.", mon_nam(mon));
} else { } else {
sum[i] = gulpum(mon, mattk); sum[i] = gulpum(mon, mattk);
if (sum[i] == MM_DEF_DIED && (mon->data->mlet == S_ZOMBIE if (sum[i] == M_ATTK_DEF_DIED && (mon->data->mlet == S_ZOMBIE
|| mon->data->mlet == S_MUMMY) || mon->data->mlet == S_MUMMY)
&& rn2(5) && !Sick_resistance) { && rn2(5) && !Sick_resistance) {
You_feel("%ssick.", (Sick) ? "very " : ""); You_feel("%ssick.", (Sick) ? "very " : "");
@@ -5415,11 +5415,11 @@ hmonas(struct monst *mon)
u.mh = -1; /* dead in the current form */ u.mh = -1; /* dead in the current form */
rehumanize(); rehumanize();
} }
if (sum[i] == MM_DEF_DIED) { if (sum[i] == M_ATTK_DEF_DIED) {
/* defender dead */ /* defender dead */
(void) passive(mon, weapon, 1, 0, mattk->aatyp, FALSE); (void) passive(mon, weapon, 1, 0, mattk->aatyp, FALSE);
} else { } else {
(void) passive(mon, weapon, (sum[i] != MM_MISS), 1, (void) passive(mon, weapon, (sum[i] != M_ATTK_MISS), 1,
mattk->aatyp, FALSE); mattk->aatyp, FALSE);
} }
@@ -5463,8 +5463,8 @@ passive(struct monst *mon,
{ {
register struct permonst *ptr = mon->data; register struct permonst *ptr = mon->data;
register int i, tmp; register int i, tmp;
int mhit = mhitb ? MM_HIT : MM_MISS; int mhit = mhitb ? M_ATTK_HIT : M_ATTK_MISS;
int malive = maliveb ? MM_HIT : MM_MISS; int malive = maliveb ? M_ATTK_HIT : M_ATTK_MISS;
for (i = 0;; i++) { for (i = 0;; i++) {
if (i >= NATTK) if (i >= NATTK)
@@ -5539,7 +5539,7 @@ passive(struct monst *mon,
&& !(poly_when_stoned(gy.youmonst.data) && !(poly_when_stoned(gy.youmonst.data)
&& polymon(PM_STONE_GOLEM))) { && polymon(PM_STONE_GOLEM))) {
done_in_by(mon, STONING); /* "You turn to stone..." */ done_in_by(mon, STONING); /* "You turn to stone..." */
return MM_DEF_DIED; return M_ATTK_DEF_DIED;
} }
} }
} }