mirror of
https://codeberg.org/noisytoot/notnotdnethack.git
synced 2025-07-30 01:12:25 +01:00
Move Rider-resurection and corpse-deadlyness out of special casing
This commit is contained in:
parent
a8f2caa274
commit
2d22d564f3
4 changed files with 31 additions and 50 deletions
|
@ -328,16 +328,8 @@
|
|||
#define mteleport(ptr) (((ptr)->mflagsm & MM_TENGTPORT))
|
||||
#define is_mplayer(ptr) (((ptr) >= &mons[PM_ARCHEOLOGIST]) && \
|
||||
((ptr) <= &mons[PM_WIZARD]))
|
||||
#define is_rider(ptr) ((ptr) == &mons[PM_DEATH] || \
|
||||
(ptr) == &mons[PM_FAMINE] || \
|
||||
(ptr) == &mons[PM_PESTILENCE] || \
|
||||
(ptr) == &mons[PM_LUCIFER] || \
|
||||
(ptr) == &mons[PM_GREAT_CTHULHU] || \
|
||||
(ptr) == &mons[PM_AXUS] || \
|
||||
(ptr) == &mons[PM_NAZGUL] || \
|
||||
(ptr) == &mons[PM_STRANGE_CORPSE] || \
|
||||
(ptr) == &mons[PM_ELDER_PRIEST] || \
|
||||
(ptr) == &mons[PM_PRIEST_OF_AN_UNKNOWN_GOD])
|
||||
#define is_deadly(ptr) ((ptr)->mflagsg & MG_DEADLY)
|
||||
#define is_rider(ptr) ((ptr)->mflagsg & MG_RIDER)
|
||||
#define is_placeholder(ptr) ((ptr) == &mons[PM_ORC] || \
|
||||
(ptr) == &mons[PM_GIANT] || \
|
||||
(ptr) == &mons[PM_ELF] || \
|
||||
|
|
|
@ -193,6 +193,8 @@
|
|||
#define MG_HATESSILVER 0x00000400L /* Monster hates silver */
|
||||
#define MG_HATESIRON 0x00000800L /* Monster hates iron/steel */
|
||||
#define MG_HATESUNHOLY 0x00001000L /* Monster hates cursed objects */
|
||||
#define MG_RIDER 0x00002000L /* Monster has perfect resurection */
|
||||
#define MG_DEADLY 0x00004000L /* Monster's corpse is deadly to taste */
|
||||
|
||||
//Monster rAce
|
||||
#define MA_UNDEAD 0x00000001L /* is walking dead */
|
||||
|
|
41
src/eat.c
41
src/eat.c
|
@ -717,12 +717,18 @@ BOOLEAN_P bld, nobadeffects;
|
|||
if (Stoned) fix_petrification();
|
||||
make_sick(0L, (char *) 0, TRUE, SICK_ALL);
|
||||
break;
|
||||
/*Note: these three imply corpse*/
|
||||
case PM_GREAT_CTHULHU:
|
||||
case PM_DEATH:
|
||||
case PM_PESTILENCE:
|
||||
case PM_FAMINE:
|
||||
{ char buf[BUFSZ];
|
||||
case PM_GREEN_SLIME:
|
||||
case PM_FLUX_SLIME:
|
||||
if (!nobadeffects && !Slimed && !Unchanging && !flaming(youracedata) &&
|
||||
youmonst.data != &mons[PM_GREEN_SLIME]) {
|
||||
You("don't feel very well.");
|
||||
Slimed = 10L;
|
||||
flags.botl = 1;
|
||||
}
|
||||
/* Fall through */
|
||||
default:
|
||||
if(is_deadly(&mons[pm])){
|
||||
char buf[BUFSZ];
|
||||
if(!nobadeffects){
|
||||
pline("Eating that is instantly fatal.");
|
||||
Sprintf(buf, "unwisely ate the body of %s",
|
||||
|
@ -731,6 +737,8 @@ BOOLEAN_P bld, nobadeffects;
|
|||
killer_format = NO_KILLER_PREFIX;
|
||||
done(DIED);
|
||||
}
|
||||
}
|
||||
if(is_rider(&mons[pm])){
|
||||
/* It so happens that since we know these monsters */
|
||||
/* cannot appear in tins, victual.piece will always */
|
||||
/* be what we want, which is not generally true. */
|
||||
|
@ -738,27 +746,6 @@ BOOLEAN_P bld, nobadeffects;
|
|||
victual.piece = (struct obj *)0;
|
||||
return;
|
||||
}
|
||||
case PM_AXUS:
|
||||
case PM_NAZGUL:
|
||||
case PM_ELDER_PRIEST:
|
||||
case PM_PRIEST_OF_AN_UNKNOWN_GOD:
|
||||
/* It so happens that since we know these monsters */
|
||||
/* cannot appear in tins, victual.piece will always */
|
||||
/* be what we want, which is not generally true. */
|
||||
if (revive_corpse(victual.piece, REVIVE_MONSTER))
|
||||
victual.piece = (struct obj *)0;
|
||||
return;
|
||||
break;
|
||||
case PM_GREEN_SLIME:
|
||||
case PM_FLUX_SLIME:
|
||||
if (!nobadeffects && !Slimed && !Unchanging && !flaming(youmonst.data) &&
|
||||
youmonst.data != &mons[PM_GREEN_SLIME]) {
|
||||
You("don't feel very well.");
|
||||
Slimed = 10L;
|
||||
flags.botl = 1;
|
||||
}
|
||||
/* Fall through */
|
||||
default:
|
||||
if (acidic(&mons[pm]) && Stoned)
|
||||
fix_petrification();
|
||||
break;
|
||||
|
|
26
src/monst.c
26
src/monst.c
|
@ -3691,7 +3691,7 @@ struct permonst _mons2[] = {
|
|||
SIZ(WT_HUMAN, 0, 0, MS_SPELL, MZ_HUMAN),
|
||||
MR_COLD|MR_SLEEP|MR_POISON, 0,
|
||||
MM_BREATHLESS /*MM*/, MT_STALK|MT_HOSTILE|MT_COLLECT /*MT*/,
|
||||
MB_HUMANOID|MB_STRONG|MB_MALE /*MB*/, MG_NOPOLY|MG_NASTY|MG_HATESSILVER /*MG*/,
|
||||
MB_HUMANOID|MB_STRONG|MB_MALE /*MB*/, MG_NOPOLY|MG_NASTY|MG_HATESSILVER|MG_RIDER /*MG*/,
|
||||
MA_UNDEAD /*MA*/, MV_NORMAL /*MV*/, HI_LORD),
|
||||
/*
|
||||
* Xorn
|
||||
|
@ -4363,7 +4363,7 @@ struct permonst _mons2[] = {
|
|||
SIZ(WT_HUMAN, 400, sizeof(struct epri), MS_PRIEST, MZ_HUMAN),
|
||||
MR_FIRE|MR_ELEC|MR_SLEEP|MR_POISON|MR_STONE, 0,
|
||||
MM_SWIM|MM_AMPHIBIOUS /*MM*/, MT_WANTSAMUL|MT_OMNIVORE|MT_COLLECT|MT_MAGIC /*MT*/,
|
||||
MB_HUMANOID|MB_NEUTER|MB_STRONG /*MB*/, MG_NOPOLY|MG_PRINCE|MG_NASTY|MG_INFRAVISIBLE /*MG*/,
|
||||
MB_HUMANOID|MB_NEUTER|MB_STRONG /*MB*/, MG_NOPOLY|MG_PRINCE|MG_NASTY|MG_INFRAVISIBLE|MG_RIDER /*MG*/,
|
||||
MA_PRIMORDIAL /*MA*/, MV_NORMAL|MV_SEE_INVIS /*MV*/, CLR_YELLOW),
|
||||
MON("priest of an unknown god", S_DEMON,//27
|
||||
LVL(25, 0, -7, 70, A_NONE), (G_NOGEN),
|
||||
|
@ -4373,7 +4373,7 @@ struct permonst _mons2[] = {
|
|||
SIZ(WT_HUMAN, 400, 0, MS_SILENT, MZ_HUMAN),
|
||||
MR_FIRE|MR_ELEC|MR_SLEEP|MR_POISON|MR_STONE|MR_DRAIN, 0,
|
||||
MM_SWIM|MM_AMPHIBIOUS /*MM*/, MT_OMNIVORE|MT_COLLECT|MT_MAGIC|MT_HOSTILE /*MT*/,
|
||||
0 /*MB*/, MG_NOPOLY|MG_PRINCE|MG_NASTY /*MG*/,
|
||||
0 /*MB*/, MG_NOPOLY|MG_PRINCE|MG_NASTY|MG_RIDER /*MG*/,
|
||||
MA_PRIMORDIAL /*MA*/, MV_NORMAL|MV_SEE_INVIS /*MV*/, CLR_WHITE),
|
||||
MON("soldier", S_HUMAN,//8
|
||||
LVL(6, 10, 10, 0, 2), (G_SGROUP|G_GENO|1),
|
||||
|
@ -5079,31 +5079,31 @@ is a red right hand
|
|||
/* Riders -- the Four Horsemen of the Apocalypse ("War" == player)
|
||||
*/
|
||||
MON("Death", S_DEMON,//34
|
||||
LVL(30, 12, -15, 125, 0), (G_UNIQ|G_NOGEN),
|
||||
LVL(30, 12, 0, 125, 0), (G_UNIQ|G_NOGEN),
|
||||
A(ATTK(AT_TUCH, AD_DETH, 8, 8), ATTK(AT_TUCH, AD_DETH, 8, 8),
|
||||
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
||||
SIZ(WT_HUMAN, 1, 0, MS_RIDER, MZ_HUMAN),
|
||||
MR_FIRE|MR_COLD|MR_ELEC|MR_SLEEP|MR_POISON|MR_STONE|MR_SICK, 0,
|
||||
MM_FLY|MM_TPORT_CNTRL|MM_BREATHLESS /*MM*/, MT_STALK|MT_HOSTILE|MT_TRAITOR /*MT*/,
|
||||
MB_HUMANOID|MB_STRONG /*MB*/, MG_PNAME|MG_NOPOLY|MG_REGEN|MG_NASTY /*MG*/,
|
||||
MB_HUMANOID|MB_STRONG|MB_MALE /*MB*/, MG_PNAME|MG_NOPOLY|MG_REGEN|MG_NASTY|MG_RIDER|MG_DEADLY /*MG*/,
|
||||
MA_PRIMORDIAL /*MA*/, MV_EXTRAMISSION|MV_SEE_INVIS /*MV*/, HI_LORD),
|
||||
MON("Pestilence", S_DEMON,//34
|
||||
LVL(30, 12, -15, 125, 0), (G_UNIQ|G_NOGEN),
|
||||
LVL(30, 12, 0, 125, 0), (G_UNIQ|G_NOGEN),
|
||||
A(ATTK(AT_TUCH, AD_PEST, 8, 8), ATTK(AT_TUCH, AD_PEST, 8, 8),
|
||||
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
||||
SIZ(WT_HUMAN, 1, 0, MS_RIDER, MZ_HUMAN),
|
||||
MR_FIRE|MR_COLD|MR_ELEC|MR_SLEEP|MR_POISON|MR_STONE|MR_SICK, 0,
|
||||
MM_FLY|MM_TPORT_CNTRL|MM_BREATHLESS /*MM*/, MT_STALK|MT_HOSTILE|MT_TRAITOR /*MT*/,
|
||||
MB_HUMANOID|MB_STRONG /*MB*/, MG_PNAME|MG_NOPOLY|MG_REGEN|MG_NASTY /*MG*/,
|
||||
MB_HUMANOID|MB_STRONG|MB_MALE /*MB*/, MG_PNAME|MG_NOPOLY|MG_REGEN|MG_NASTY|MG_RIDER|MG_DEADLY /*MG*/,
|
||||
MA_PRIMORDIAL /*MA*/, MV_EXTRAMISSION|MV_SEE_INVIS /*MV*/, HI_LORD),
|
||||
MON("Famine", S_DEMON,//34
|
||||
LVL(30, 12, -15, 125, 0), (G_UNIQ|G_NOGEN),
|
||||
LVL(30, 12, 0, 125, 0), (G_UNIQ|G_NOGEN),
|
||||
A(ATTK(AT_TUCH, AD_FAMN, 8, 8), ATTK(AT_TUCH, AD_FAMN, 8, 8),
|
||||
NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
||||
SIZ(WT_HUMAN, 1, 0, MS_RIDER, MZ_HUMAN),
|
||||
MR_FIRE|MR_COLD|MR_ELEC|MR_SLEEP|MR_POISON|MR_STONE|MR_SICK, 0,
|
||||
MM_FLY|MM_TPORT_CNTRL|MM_BREATHLESS /*MM*/, MT_STALK|MT_HOSTILE|MT_TRAITOR /*MT*/,
|
||||
MB_HUMANOID|MB_STRONG /*MB*/, MG_PNAME|MG_NOPOLY|MG_REGEN|MG_NASTY /*MG*/,
|
||||
MB_HUMANOID|MB_STRONG|MB_MALE /*MB*/, MG_PNAME|MG_NOPOLY|MG_REGEN|MG_NASTY|MG_RIDER|MG_DEADLY /*MG*/,
|
||||
MA_PRIMORDIAL /*MA*/, MV_EXTRAMISSION|MV_SEE_INVIS /*MV*/, HI_LORD),
|
||||
/* other demons
|
||||
*/
|
||||
|
@ -6406,7 +6406,7 @@ is a red right hand
|
|||
SIZ(10000, 4000, 0, MS_SILENT, MZ_GIGANTIC),
|
||||
MR_ACID|MR_POISON|MR_FIRE|MR_COLD|MR_DISINT|MR_ELEC|MR_STONE|MR_DRAIN, 0,
|
||||
MM_SWIM|MM_FLY /*MM*/, MT_HOSTILE|MT_WANDER|MT_OMNIVORE|MT_METALLIVORE|MT_TRAITOR /*MT*/,
|
||||
MB_HUMANOID|MB_WINGS|MB_STRONG|MB_NEUTER /*MB*/, MG_NOPOLY|MG_NASTY|MG_PNAME|MG_OPAQUE /*MG*/,
|
||||
MB_HUMANOID|MB_WINGS|MB_STRONG|MB_NEUTER /*MB*/, MG_NOPOLY|MG_NASTY|MG_PNAME|MG_OPAQUE|MG_RIDER|MG_DEADLY /*MG*/,
|
||||
MA_PRIMORDIAL|MA_ET /*MA*/, MV_TELEPATHIC|MV_RLYEHIAN|MV_SEE_INVIS /*MV*/, CLR_GREEN),
|
||||
MON("arcadian avenger", S_LAW_ANGEL,//11 /*Needs tile*/
|
||||
LVL(6, 12, 1, 0, 5), (G_SGROUP|G_NOCORPSE|G_NOGEN),
|
||||
|
@ -6425,7 +6425,7 @@ is a red right hand
|
|||
NO_ATTK, NO_ATTK),
|
||||
SIZ(10000, 10000, 0, MS_SILENT, MZ_GIGANTIC), MR_ALL, MR_SLEEP,
|
||||
MM_AMPHIBIOUS|MM_BREATHLESS|MM_STATIONARY /*MM*/, 0 /*MT*/,
|
||||
MB_HUMANOID|MB_NEUTER /*MB*/, MG_NOPOLY|MG_INFRAVISIBLE|MG_NASTY|MG_PNAME|MG_PRINCE|MG_OPAQUE /*MG*/,
|
||||
MB_HUMANOID|MB_NEUTER /*MB*/, MG_NOPOLY|MG_INFRAVISIBLE|MG_NASTY|MG_PNAME|MG_PRINCE|MG_OPAQUE|MG_RIDER /*MG*/,
|
||||
MA_CLOCK /*MA*/, MV_NORMAL|MV_INFRAVISION|MV_SEE_INVIS /*MV*/, HI_LORD),
|
||||
MON("Arsenal", S_GOLEM,//21 /*Needs encyc entry*/
|
||||
LVL(18, 6, -10, 127, 10), (G_NOCORPSE|G_NOGEN|G_UNIQ),
|
||||
|
@ -6464,8 +6464,8 @@ is a red right hand
|
|||
SIZ(2000, 0, 0, MS_DJINNI, MZ_LARGE),
|
||||
MR_FIRE|MR_COLD|MR_ELEC|MR_SLEEP|MR_POISON|MR_STONE, 0,
|
||||
MM_BREATHLESS /*MM*/, MT_HOSTILE|MT_TRAITOR /*MT*/,
|
||||
MB_HUMANOID|MB_WINGS|MB_THICK_HIDE|MB_POIS|MB_STRONG|MB_MALE /*MB*/, MG_NOPOLY|MG_PNAME /*MG*/,
|
||||
MA_MINION /*MA*/, MV_NORMAL|MV_INFRAVISION /*MV*/, HI_LORD),
|
||||
MB_HUMANOID|MB_WINGS|MB_THICK_HIDE|MB_POIS|MB_STRONG|MB_MALE /*MB*/, MG_NOPOLY|MG_PNAME|MG_RIDER /*MG*/,
|
||||
0 /*MA*/, MV_NORMAL|MV_INFRAVISION /*MV*/, HI_LORD),
|
||||
/*
|
||||
* quest "guardians"
|
||||
*/
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue