fix stone-to-flesh on petrified long worm
montraits() didn't have any handling for long worm tails, makemon() didn't have any provision for creating a long worm without a tail, replmon() uses place_wegs() to put tail segments on the map when replacing a dummy new monster with the mtraits one but place_wsegs() wasn't updating the head segment since it isn't put on the map. That turned out to be key because there is always an extra segment co-located with the monster and when its coordinates were wrong, worm_known() gave bad results for visibility checking. The statue-goes-away message was the one for not being able to see the monster that it just animated into, even though 'w' appeared at the spot. It took quite a while to track down what was going on there. Sanity checking for worms has been updated and could conceivably start triggering complaints about things that it used ignore.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 hack.h $NHDT-Date: 1580600495 2020/02/01 23:41:35 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.128 $ */
|
||||
/* NetHack 3.6 hack.h $NHDT-Date: 1591178395 2020/06/03 09:59:55 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.138 $ */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/*-Copyright (c) Pasi Kallinen, 2017. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
@@ -305,10 +305,11 @@ typedef struct sortloot_item Loot;
|
||||
#define MM_EDOG 0x001000L /* add edog structure */
|
||||
#define MM_ASLEEP 0x002000L /* monsters should be generated asleep */
|
||||
#define MM_NOGRP 0x004000L /* suppress creation of monster groups */
|
||||
#define MM_NOTAIL 0x008000L /* if a long worm, don't give it a tail */
|
||||
/* if more MM_ flag masks are added, skip or renumber the GP_ one(s) */
|
||||
#define GP_ALLOW_XY 0x008000L /* [actually used by enexto() to decide whether
|
||||
#define GP_ALLOW_XY 0x010000L /* [actually used by enexto() to decide whether
|
||||
* to make an extra call to goodpos()] */
|
||||
#define GP_ALLOW_U 0x010000L /* don't reject hero's location */
|
||||
#define GP_ALLOW_U 0x020000L /* don't reject hero's location */
|
||||
|
||||
/* flags for make_corpse() and mkcorpstat() */
|
||||
#define CORPSTAT_NONE 0x00
|
||||
|
||||
Reference in New Issue
Block a user