From: nethack.rankin Date: Tue, 20 Jun 2006 02:31:37 +0000 (+0000) Subject: #tip horn of plenty (trunk only) X-Git-Tag: MOVE2GIT~978 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ed202000f10fbeff9d921345c7fb9d870972fab5;p=nethack #tip horn of plenty (trunk only) Bug in #tip handling for horn of plenty. Emptying one while levitating would trigger an "obj not free" panic by flooreffects() due to following hitfloor() with redundant/inappropriate dropy(). --- diff --git a/src/mkobj.c b/src/mkobj.c index 0df94c503..be3a68b55 100644 --- a/src/mkobj.c +++ b/src/mkobj.c @@ -1815,14 +1815,16 @@ boolean tipping; /* caller emptying entire contents; affects shop handling */ (const char *)0); } else { /* assumes this is taking place at hero's location */ - if (!can_reach_floor(TRUE)) - hitfloor(obj); - else if (IS_ALTAR(levl[u.ux][u.uy].typ)) - doaltarobj(obj); - else - pline("%s %s to the %s.", Doname2(obj), - otense(obj, "drop"), surface(u.ux, u.uy)); - dropy(obj); + if (!can_reach_floor(TRUE)) { + hitfloor(obj); /* does altar check, message, drop */ + } else { + if (IS_ALTAR(levl[u.ux][u.uy].typ)) + doaltarobj(obj); /* does its own drop message */ + else + pline("%s %s to the %s.", Doname2(obj), + otense(obj, "drop"), surface(u.ux, u.uy)); + dropy(obj); + } } if (horn->dknown) makeknown(HORN_OF_PLENTY); }