missile light sources
Throwing or kicking a lit lamp, lit candle, or lit potion of oil wasn't giving off any light as it travelled to its destination. Now it does, and dungeon features, objects, or monsters that are temporarily seen as it moves from square to square till appear on the map. In the monster case, they go away as soon as the light moves beyond range, but when it finishes moving the "remembered, unseen monster" glyph will be drawn at their location. I think that part has some room for improvement, but mapping temporarily seen terrain features is the primary impetus for this change. Also, any message delivery while the "lit missile" travelled still showed its light around the hero. Noticeable for lamps or stacks of sufficient candles if hero has no other light source. This cannibalizes the monst->mburied bit for temporarily seeing a monster. It has been present but unused for ages. I needed to replace a couple of vision macros to make sure they didn't examine it any more so that overloading for transient lighting doesn't introduce any vision oddities. For version $NEXT, monst->mtemplit can be given its own bit. It is only set during bhit() execution and cleared by the time that returns, so has no effect on save files.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 save.c $NHDT-Date: 1558880688 2019/05/26 14:24:48 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.120 $ */
|
||||
/* NetHack 3.6 save.c $NHDT-Date: 1559994625 2019/06/08 11:50:25 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.121 $ */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/*-Copyright (c) Michael Allison, 2009. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
@@ -1078,6 +1078,8 @@ struct monst *mtmp;
|
||||
{
|
||||
int buflen;
|
||||
|
||||
mtmp->mtemplit = 0; /* normally clear; if set here then a panic save
|
||||
* is being written while bhit() was executing */
|
||||
buflen = (int) sizeof (struct monst);
|
||||
bwrite(fd, (genericptr_t) &buflen, sizeof buflen);
|
||||
bwrite(fd, (genericptr_t) mtmp, buflen);
|
||||
|
||||
Reference in New Issue
Block a user