stinking nemesis

Noticed when testing erodeproof Mitre of Holiness:  the cloud of
stinking gas released by Nalzok when he died ending up killing my pet
and my hero got blamed for that.  Don't blame--or credit--the hero for
monsters affected by the gas cloud when a dying nemesis produces such.
This commit is contained in:
PatR
2023-06-17 14:15:49 -07:00
parent 8fd8d1defa
commit 8b9a93f797
5 changed files with 27 additions and 15 deletions

View File

@@ -1,4 +1,4 @@
HDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1196 $ $NHDT-Date: 1686386794 2023/06/10 08:46:34 $
HDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1201 $ $NHDT-Date: 1687036542 2023/06/17 21:15:42 $
General Fixes and Modified Features
-----------------------------------
@@ -1621,6 +1621,7 @@ entering the tutorial stashed hero's equipment for eventual return to normal
entering the tutorial and then returning to play made the tutorial branch be
eligible for a portal destination via wizard's Eye of the Aethiopica
'hard helmet' was based on being metallic so overlooked crystal helmet
don't blame/credit hero for stinking cloud if dying quest nemesis releases one
Fixes to 3.7.0-x Platform and/or Interface Problems Exposed Via git Repository

View File

@@ -1,4 +1,4 @@
/* NetHack 3.7 extern.h $NHDT-Date: 1684138080 2023/05/15 08:08:00 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1263 $ */
/* NetHack 3.7 extern.h $NHDT-Date: 1687036542 2023/06/17 21:15:42 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1275 $ */
/* Copyright (c) Steve Creps, 1988. */
/* NetHack may be freely redistributed. See license for details. */
@@ -2311,6 +2311,7 @@ extern void artitouch(struct obj *);
extern boolean ok_to_quest(void);
extern void leader_speaks(struct monst *);
extern void nemesis_speaks(void);
extern void nemesis_stinks(coordxy, coordxy);
extern void quest_chat(struct monst *);
extern void quest_talk(struct monst *);
extern void quest_stat_check(struct monst *);

View File

@@ -1,4 +1,4 @@
/* NetHack 3.7 mon.c $NHDT-Date: 1683831104 2023/05/11 18:51:44 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.501 $ */
/* NetHack 3.7 mon.c $NHDT-Date: 1687036544 2023/06/17 21:15:44 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.509 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Derek S. Ray, 2015. */
/* NetHack may be freely redistributed. See license for details. */
@@ -2478,7 +2478,7 @@ m_detach(
if (mtmp->mleashed)
m_unleash(mtmp, FALSE);
if (mtmp->mx > 0 && emits_light(mptr))
if (mx > 0 && emits_light(mptr))
del_light_source(LS_MONSTER, monst_to_any(mtmp));
/*
@@ -2505,7 +2505,7 @@ m_detach(
/* The Archeologist, Caveman, and Priest quest texts describe
the nemesis's body creating noxious fumes/gas when killed. */
if (stinky_nemesis(mtmp))
create_gas_cloud(mx, my, 5, 8);
nemesis_stinks(mx, my);
}
if (mtmp->data->msound == MS_LEADER)
leaddead();
@@ -2759,12 +2759,6 @@ mondead(struct monst *mtmp)
break;
}
}
#if 0 /* moved to m_detach() to kick in if mongone() happens */
if (mtmp->iswiz)
wizdead();
if (mtmp->data->msound == MS_NEMESIS)
nemdead();
#endif
if (mndx == PM_MEDUSA && gm.mvitals[mndx].died == 1) {
record_achievement(ACH_MEDU); /* also generates a livelog event */

View File

@@ -1,4 +1,4 @@
/* NetHack 3.7 quest.c $NHDT-Date: 1596498200 2020/08/03 23:43:20 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.29 $ */
/* NetHack 3.7 quest.c $NHDT-Date: 1687036547 2023/06/17 21:15:47 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.38 $ */
/* Copyright 1991, M. Stephenson */
/* NetHack may be freely redistributed. See license for details. */
@@ -378,6 +378,22 @@ nemesis_speaks(void)
qt_pager("discourage");
}
/* create cloud of stinking gas around dying nemesis */
void
nemesis_stinks(coordxy mx, coordxy my)
{
boolean save_mon_moving = gc.context.mon_moving;
/*
* Some nemeses (determined by caller) release a cloud of noxious
* gas when they die. Don't make the hero be responsible for such
* a cloud even if hero has just killed nemesis.
*/
gc.context.mon_moving = TRUE;
create_gas_cloud(mx, my, 5, 8);
gc.context.mon_moving = save_mon_moving;
}
static void
chat_with_guardian(void)
{

View File

@@ -1,4 +1,4 @@
/* NetHack 3.7 questpgr.c $NHDT-Date: 1655065145 2022/06/12 20:19:05 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.79 $ */
/* NetHack 3.7 questpgr.c $NHDT-Date: 1687036548 2023/06/17 21:15:48 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.82 $ */
/* Copyright 1991, M. Stephenson */
/* NetHack may be freely redistributed. See license for details. */
@@ -171,8 +171,8 @@ stinky_nemesis(struct monst *mon)
(void) com_pager_core(gu.urole.filecode, "killed_nemesis", FALSE, &mesg);
#endif
/* this is somewhat fragile; it assumes that when both (noxious or
poisonous or toxic) and (gas or fumes) are present, the latter
/* this is somewhat fragile; it assumes that when both {noxious or
poisonous or toxic} and {gas or fumes} are present, the latter
refers to the former rather than to something unrelated; it does
make sure that fumes occurs after noxious rather than before */
if (mesg) {