empty horn of plenty
Format a horn of plenty whose charge count is unknown but is known to be empty as "empty horn of plenty" like is done for real containers. This was too easy; I must have missed something....
This commit is contained in:
@@ -121,10 +121,22 @@ struct obj {
|
||||
Bitfield(in_use, 1); /* for magic items before useup items */
|
||||
Bitfield(bypass, 1); /* mark this as an object to be skipped by bhito() */
|
||||
Bitfield(cknown, 1); /* for containers (including statues): the contents
|
||||
* are known; also applicable to tins */
|
||||
Bitfield(lknown, 1); /* locked/unlocked status is known */
|
||||
* are known; also applicable to tins; also applies
|
||||
* to horn of plenty but only for empty/non-empty */
|
||||
Bitfield(lknown, 1); /* locked/unlocked status is known; assigned for bags
|
||||
* and for horn of plenty (when tipping) even though
|
||||
* they have no locks */
|
||||
Bitfield(pickup_prev, 1); /* was picked up previously */
|
||||
#if 0
|
||||
/* 3 free bits */
|
||||
#else
|
||||
/* not implemented */
|
||||
Bitfield(tknown, 1); /* trap status known for chests */
|
||||
Bitfield(eknown, 1); /* effect known for wands zapped or rings worn when
|
||||
* not seen yet after being picked up while blind
|
||||
* [maybe for remaining stack of used potion too] */
|
||||
/* 1 free bit */
|
||||
#endif
|
||||
|
||||
int corpsenm; /* type of corpse is mons[corpsenm] */
|
||||
#define leashmon corpsenm /* gets m_id of attached pet */
|
||||
|
||||
@@ -2556,6 +2556,10 @@ hornoplenty(
|
||||
impossible("bad horn o' plenty");
|
||||
} else if (horn->spe < 1) {
|
||||
pline1(nothing_happens);
|
||||
if (!horn->cknown) {
|
||||
horn->cknown = 1;
|
||||
update_inventory();
|
||||
}
|
||||
} else {
|
||||
struct obj *obj;
|
||||
const char *what;
|
||||
@@ -2604,8 +2608,10 @@ hornoplenty(
|
||||
targetbox->owt = weight(targetbox);
|
||||
/* item still in magic horn was weightless; when it's now in
|
||||
a carried container, hero's encumbrance could change */
|
||||
if (carried(targetbox))
|
||||
if (carried(targetbox)) {
|
||||
(void) encumber_msg();
|
||||
update_inventory(); /* for contents count or wizweight */
|
||||
}
|
||||
} else {
|
||||
/* assumes this is taking place at hero's location */
|
||||
if (!can_reach_floor(TRUE)) {
|
||||
|
||||
10
src/objnam.c
10
src/objnam.c
@@ -1144,10 +1144,12 @@ doname_base(
|
||||
(when that is known, suffix of "(n:0)" will be appended,
|
||||
making the prefix be redundant; note that 'known' flag
|
||||
isn't set when emptiness gets discovered because then
|
||||
charging magic would yield known number of new charges) */
|
||||
&& ((obj->otyp == BAG_OF_TRICKS)
|
||||
? (obj->spe == 0 && !obj->known)
|
||||
/* not bag of tricks: empty if container which has no contents */
|
||||
charging magic would yield known number of new charges);
|
||||
horn of plenty isn't a container but is close enough */
|
||||
&& ((obj->otyp == BAG_OF_TRICKS || obj->otyp == HORN_OF_PLENTY)
|
||||
? (obj->spe == 0 && !known)
|
||||
/* not a bag of tricks or horn of plenty: it's empty if
|
||||
it is a container that has no contents */
|
||||
: ((Is_container(obj) || obj->otyp == STATUE)
|
||||
&& !Has_contents(obj))))
|
||||
Strcat(prefix, "empty ");
|
||||
|
||||
Reference in New Issue
Block a user