split "finishi_splitting" into a separate function

This commit is contained in:
SHIRAKATA Kentaro
2024-07-22 03:21:12 +09:00
parent 6e32407e12
commit d6890a38fa

View File

@@ -56,6 +56,7 @@ staticfn boolean cant_wield_corpse(struct obj *) NONNULLARG1;
staticfn int ready_weapon(struct obj *) NO_NNARGS;
staticfn int ready_ok(struct obj *) NO_NNARGS;
staticfn int wield_ok(struct obj *) NO_NNARGS;
staticfn void finish_splitting(struct obj *);
/* used by will_weld() */
/* probably should be renamed */
@@ -336,13 +337,20 @@ wield_ok(struct obj *obj)
return GETOBJ_DOWNPLAY;
}
staticfn void
finish_splitting(struct obj *obj)
{
/* obj was split off from something; give it its own invlet */
freeinv(obj);
addinv_nomerge(obj);
}
/* the #wield command - wield a weapon */
int
dowield(void)
{
char qbuf[QBUFSZ];
struct obj *wep, *oldwep;
boolean finish_splitting = FALSE;
int result;
/* May we attempt this? */
@@ -384,7 +392,7 @@ dowield(void)
wep = uwep;
goto already_wielded;
}
finish_splitting = TRUE;
finish_splitting(wep);
goto wielding;
}
@@ -405,7 +413,7 @@ dowield(void)
case 'y':
/* leave N-1 quivered, split off 1 to wield */
wep = splitobj(uquiver, 1L);
finish_splitting = TRUE;
finish_splitting(wep);
goto wielding;
default:
break;
@@ -433,12 +441,6 @@ dowield(void)
}
wielding:
if (finish_splitting) {
/* wep was split off from something; give it its own invlet */
freeinv(wep);
addinv_nomerge(wep);
}
/* Set your new primary weapon */
oldwep = uwep;
result = ready_weapon(wep);
@@ -507,8 +509,7 @@ doquiver_core(const char *verb) /* "ready" or "fire" */
char qbuf[QBUFSZ];
struct obj *newquiver;
int res;
boolean finish_splitting = FALSE,
was_uwep = FALSE, was_twoweap = u.twoweap;
boolean was_uwep = FALSE, was_twoweap = u.twoweap;
/* Since the quiver isn't in your hands, don't check cantwield(),
will_weld(), touch_petrifies(), etc. */
@@ -551,7 +552,7 @@ doquiver_core(const char *verb) /* "ready" or "fire" */
unsplitobj(newquiver);
return ECMD_OK;
}
finish_splitting = TRUE;
finish_splitting(newquiver);
} else if (newquiver == uquiver) {
already_quivered:
pline("That ammunition is already readied!");
@@ -578,7 +579,7 @@ doquiver_core(const char *verb) /* "ready" or "fire" */
case 'y':
/* leave 1 wielded, split rest off and put into quiver */
newquiver = splitobj(uwep, uwep->quan - 1L);
finish_splitting = TRUE;
finish_splitting(newquiver);
goto quivering;
default:
break;
@@ -616,7 +617,7 @@ doquiver_core(const char *verb) /* "ready" or "fire" */
case 'y':
/* leave 1 alt-wielded, split rest off and put into quiver */
newquiver = splitobj(uswapwep, uswapwep->quan - 1L);
finish_splitting = TRUE;
finish_splitting(newquiver);
goto quivering;
default:
break;
@@ -644,11 +645,6 @@ doquiver_core(const char *verb) /* "ready" or "fire" */
}
quivering:
if (finish_splitting) {
freeinv(newquiver);
addinv_nomerge(newquiver);
}
if (!strcmp(verb, "ready")) {
/* place item in quiver before printing so that inventory feedback
includes "(at the ready)" */