mimic statues & 2009 startup banner (trunk only)
A mimic posing as a statue was displayed as a tengu statue (and
recognizeable as such now that statues are displayed as the corresponding
monster rather than rock-class back tick), but the lookat code described
it as a giant ant statue (since there was no obj->corpsenm available to
indicate the monster type, it defaulted to 0). This adds monst->mextra
field `mcorpsenm' so that mimics have a place to remember what sort of
statue or corpse they are mimicking. And it picks a random monster type
when they take such forms so that the old tengu hack becomes irrelevant.
newmextra() and newoextra() initialized pointers via memset(...,0)
which is not portable; switch to explicit assignments. The wizard mode
code to display memory used for monsters and objects added in amounts
for the miscellaneous things pointed to by monst->mextra and obj->oextra
structs but didn't include memory for those structs themselves; add it.
Simplify monster save/restore slightly; there's no need for extra zeroes
to represent monst->mextra->X sizes when monst->mextra is null.
Update the startup banner for 2009. I should have done this with a
separate patch but I'm taking a shortcut. :-]
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
/* SCCS Id: @(#)display.c 3.5 2007/06/25 */
|
||||
/* SCCS Id: @(#)display.c 3.5 2009/01/30 */
|
||||
/* Copyright (c) Dean Luick, with acknowledgements to Kevin Darcy */
|
||||
/* and Dave Cohrs, 1990. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
@@ -420,11 +420,12 @@ display_monster(x, y, mon, sightflags, worm_tail)
|
||||
case M_AP_OBJECT: {
|
||||
struct obj obj; /* Make a fake object to send */
|
||||
/* to map_object(). */
|
||||
obj.oextra = (struct oextra *)0;
|
||||
obj = zeroobj;
|
||||
obj.ox = x;
|
||||
obj.oy = y;
|
||||
obj.otyp = mon->mappearance;
|
||||
obj.corpsenm = PM_TENGU; /* if mimicing a corpse */
|
||||
/* might be mimicing a corpse or statue */
|
||||
obj.corpsenm = has_mcorpsenm(mon) ? MCORPSENM(mon) : PM_TENGU;
|
||||
map_object(&obj,!sensed);
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user