R888 - panic while quaffing a potion of levitation
Now that the in_use flag is set for potions being quaffed, use the in_use flag in general in destroy_item to avoid destroying the in use object, on the assumption that the caller will call useup when finished. There are a few places that set then unset in_use, but these don't currently result in a call to destroy_item. The current_wand hack was not removed, since its logic appears to allow destroy_item to still destroy the item.
This commit is contained in:
@@ -159,6 +159,8 @@ blessed gain level when already at level 30 won't reduce experience points
|
||||
keep counting spell skill exercise even after expert status is reached
|
||||
when a fountain dries up or a throne vanishes, make sure it really happens
|
||||
allow player to name polymorph potion if nothing seems to happen
|
||||
avoid crash when drinking a potion causes the hero to float up over a fire
|
||||
trap, for example, which might try to destroy the in-use potion
|
||||
|
||||
|
||||
Platform- and/or Interface-Specific Fixes
|
||||
|
||||
@@ -3758,6 +3758,7 @@ register int osym, dmgtyp;
|
||||
obj2 = obj->nobj;
|
||||
if(obj->oclass != osym) continue; /* test only objs of type osym */
|
||||
if(obj->oartifact) continue; /* don't destroy artifacts */
|
||||
if(obj->in_use && obj->quan == 1) continue; /* not available */
|
||||
xresist = skip = 0;
|
||||
#ifdef GCC_WARN
|
||||
dmg = dindx = 0;
|
||||
@@ -3829,6 +3830,7 @@ register int osym, dmgtyp;
|
||||
break;
|
||||
}
|
||||
if(!skip) {
|
||||
if (obj->in_use) --quan; /* one will be used up elsewhere */
|
||||
for(i = cnt = 0L; i < quan; i++)
|
||||
if(!rn2(3)) cnt++;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user