polyself weapon drop feedback

Don't say "you must drop your weapon" when it doesn't actually get
dropped.  And make "weapon" be more specific, comparable to the handing
for slippery fingers.
This commit is contained in:
nethack.rankin
2007-02-18 03:33:43 +00:00
parent 12cb6f5afe
commit 1e7ace58f7
2 changed files with 23 additions and 6 deletions

View File

@@ -722,6 +722,8 @@ drop_weapon(alone)
int alone;
{
struct obj *otmp;
const char *what, *which, *whichtoo;
boolean candropwep, candropswapwep;
if (uwep) {
/* !alone check below is currently superfluous but in the
@@ -729,16 +731,29 @@ int alone;
* wear gloves but can wield weapons
*/
if (!alone || cantwield(youmonst.data)) {
if (alone) You("find you must drop your weapon%s!",
u.twoweap ? "s" : "");
candropwep = canletgo(uwep, "");
candropswapwep = !u.twoweap || canletgo(uswapwep, "");
if (alone) {
what = (candropwep && candropswapwep) ? "drop" : "release";
which = is_sword(uwep) ? "sword" : weapon_descr(uwep);
if (u.twoweap) {
whichtoo = is_sword(uswapwep) ? "sword" :
weapon_descr(uswapwep);
if (strcmp(which, whichtoo)) which = "weapon";
}
if (uwep->quan != 1L || u.twoweap) which = makeplural(which);
You("find you must %s %s %s!", what,
the_your[!!strncmp(which, "corpse", 6)], which);
}
if (u.twoweap) {
otmp = uswapwep;
uswapwepgone();
if (canletgo(otmp, "")) dropx(otmp);
if (candropswapwep) dropx(otmp);
}
otmp = uwep;
uwepgone();
if (canletgo(otmp, "")) dropx(otmp);
if (candropwep) dropx(otmp);
update_inventory();
} else if (!could_twoweap(youmonst.data)) {
untwoweapon();

View File

@@ -102,7 +102,8 @@ static NEARDATA const char kebabable[] = {
};
/* weapon's skill category name for use as generalized description of weapon */
const char *weapon_descr(obj)
const char *
weapon_descr(obj)
struct obj *obj;
{
int skill = weapon_type(obj);
@@ -112,7 +113,8 @@ struct obj *obj;
switch (skill) {
case P_NONE:
/* not a weapon: use item class name; override "food" for corpses */
descr = (obj->otyp == CORPSE) ? "corpse" :
descr = (obj->otyp == CORPSE || obj->otyp == TIN || obj->otyp == EGG) ?
OBJ_NAME(objects[obj->otyp]) :
def_oc_syms[(int)obj->oclass].name;
break;
case P_SLING: