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:
PatR
2022-09-15 14:14:12 -07:00
parent 5b0f4a2e6d
commit aa8f73c890
3 changed files with 27 additions and 7 deletions

View File

@@ -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)) {

View File

@@ -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 ");