code change - oextra
move oattached and oname and other things that vary the size of the obj structure into a separate non-adjacent oextra structure, similar to what has already been done for mextra. The obj structure itself becomes a fixed size. New macros: #define ONAME(o) ((o)->oextra->oname) #define OMID(o) ((o)->oextra->omid) #define OMONST(o) ((o)->oextra->omonst) #define OLONG(o) ((o)->oextra->olong) #define OMAILCMD(o) ((o)->oextra->omailcmd) #define has_oname(o) ((o)->oextra && ONAME(o)) #define has_omid(o) ((o)->oextra && OMID(o)) #define has_omonst(o) ((o)->oextra && OMONST(o)) #define has_olong(o) ((o)->oextra && OLONG(o)) #define has_omailcmd(o) ((o)->oextra && OMAILCMD(o)) changed macros: has_name(mon) becomes has_mname(mon) to correspond. The CVS repository was tagged with NETHACK_PRE_OEXTRA before commiting these, and tagged with NETHACK_POST_OEXTRA immediately after. The diff between those two tags is this oextra patch. The associated mail daemon changes to use an oextra structure instead of a hidden command located in the name after the terminating NUL, have not been tried or tested.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
/* SCCS Id: @(#)wield.c 3.5 2005/12/26 */
|
||||
/* SCCS Id: @(#)wield.c 3.5 2006/04/14 */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -707,7 +707,7 @@ register struct obj *otmp;
|
||||
register int amount;
|
||||
{
|
||||
const char *color = hcolor((amount < 0) ? NH_BLACK : NH_BLUE);
|
||||
const char *xtime;
|
||||
const char *xtime, *wepname = "";
|
||||
int otyp = STRANGE_OBJECT;
|
||||
|
||||
if(!uwep || (uwep->oclass != WEAPON_CLASS && !is_weptool(uwep))) {
|
||||
@@ -742,7 +742,9 @@ register int amount;
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (amount < 0 && uwep->oartifact && restrict_name(uwep, ONAME(uwep))) {
|
||||
if (has_oname(uwep))
|
||||
wepname = ONAME(uwep);
|
||||
if (amount < 0 && uwep->oartifact && restrict_name(uwep, wepname)) {
|
||||
if (!Blind)
|
||||
pline("%s %s.", Yobjnam2(uwep, "faintly glow"), color);
|
||||
return(1);
|
||||
|
||||
Reference in New Issue
Block a user