-/* NetHack 3.6 wield.c $NHDT-Date: 1446887539 2015/11/07 09:12:19 $ $NHDT-Branch: master $:$NHDT-Revision: 1.47 $ */
+/* NetHack 3.6 wield.c $NHDT-Date: 1559670611 2019/06/04 17:50:11 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.59 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
+/*-Copyright (c) Robert Patrick Rankin, 2009. */
/* NetHack may be freely redistributed. See license for details. */
/* JNetHack Copyright */
/* (c) Issei Numata, Naoki Hamada, Shigehiro Miyashita, 1994-2000 */
-/* For 3.4-, Copyright (c) SHIRAKATA Kentaro, 2002-2016 */
+/* For 3.4-, Copyright (c) SHIRAKATA Kentaro, 2002-2023 */
/* JNetHack may be freely redistributed. See license for details. */
#include "hack.h"
*/
pline("%s\82Í\8bP\82«\82ð\8e~\82ß\82½\81D", xname(olduwep));
}
+ if (uwep == obj
+ && ((uwep && uwep->oartifact == ART_OGRESMASHER)
+ || (olduwep && olduwep->oartifact == ART_OGRESMASHER)))
+ context.botl = 1;
/* Note: Explicitly wielding a pick-axe will not give a "bashing"
* message. Wielding one via 'a'pplying it will.
* 3.2.2: Wielding arbitrary objects will give bashing message too.
: !is_weptool(obj) && !is_wet_towel(obj);
} else
unweapon = TRUE; /* for "bare hands" message */
- update_inventory();
}
STATIC_OVL boolean
return FALSE;
/* Prevent wielding cockatrice when not wearing gloves --KAA */
-#if 0 /*JP*/
+#if 0 /*JP:T*/
You("wield %s in your bare %s.",
corpse_xname(obj, (const char *) 0, CXN_PFX_THE),
makeplural(body_part(HAND)));
/* hero must have been life-saved to get here; use a turn */
res++; /* corpse won't be wielded */
} else if (uarms && bimanual(wep)) {
-#if 0 /*JP*/
+#if 0 /*JP:T*/
You("cannot wield a two-handed %s while wearing a shield.",
is_sword(wep) ? "sword" : wep->otyp == BATTLE_AXE ? "axe"
: "weapon");
pline("%s\82Í\8f\9f\8eè\82É\82 \82È\82½\82Ì%s\82É\91\95\94õ\82³\82ê\82½\81D",
xname(wep), body_part(HAND));
#endif
- wep->bknown = TRUE;
+ set_bknown(wep, 1);
} else {
/* The message must be printed before setuwep (since
* you might die and be revived from changing weapons),
* and the message must be before the death message and
* Lifesaved rewielding. Yet we want the message to
* say "weapon in hand", thus this kludge.
+ * [That comment is obsolete. It dates from the days (3.0)
+ * when unwielding Firebrand could cause hero to be burned
+ * to death in Hell due to loss of fire resistance.
+ * "Lifesaved re-wielding or re-wearing" is ancient history.]
*/
long dummy = wep->owornmask;
wep->owornmask |= W_WEP;
+ if (wep->otyp == AKLYS && (wep->owornmask & W_WEP) != 0)
+/*JP
+ You("secure the tether.");
+*/
+ You("\82Ð\82à\82ð\82µ\82Á\82©\82è\82Æ\8cÅ\92è\82µ\82½\81D");
prinv((char *) 0, wep, 0L);
wep->owornmask = dummy;
}
if (artifact_light(wep) && !wep->lamplit) {
begin_burn(wep, FALSE);
if (!Blind)
-#if 0 /*JP*/
+#if 0 /*JP:T*/
pline("%s to shine %s!", Tobjnam(wep, "begin"),
arti_light_description(wep));
#else
if (Race_if(PM_ELF) && !wep->oartifact
&& objects[wep->otyp].oc_material == IRON) {
/* Elves are averse to wielding cold iron */
+/*JP
You("have an uneasy feeling about wielding cold iron.");
+*/
+ You("\97â\82½\82¢\93S\82ð\91\95\94õ\82·\82é\82±\82Æ\82É\95s\88À\82È\8bC\8e\9d\82É\82È\82Á\82½.");
change_luck(-1);
}
#endif
if ((this_shkp = shop_keeper(inside_shop(u.ux, u.uy)))
!= (struct monst *) 0) {
-#if 0 /*JP*/
+#if 0 /*JP:T*/
pline("%s says \"You be careful with my %s!\"",
shkname(this_shkp), xname(wep));
#else
register struct obj *obj;
{
setworn(obj, W_QUIVER);
- update_inventory();
+ /* no extra handling needed; this used to include a call to
+ update_inventory() but that's already performed by setworn() */
+ return;
}
void
register struct obj *obj;
{
setworn(obj, W_SWAPWEP);
- update_inventory();
+ return;
}
/*** Commands to change particular slot(s) ***/
-static NEARDATA const char wield_objs[] = { ALL_CLASSES, ALLOW_NONE,
- WEAPON_CLASS, TOOL_CLASS, 0 };
-static NEARDATA const char ready_objs[] = { COIN_CLASS, ALL_CLASSES,
- ALLOW_NONE, WEAPON_CLASS, 0 };
-static NEARDATA const char bullets[] = /* (note: different from dothrow.c) */
- { COIN_CLASS, ALL_CLASSES, ALLOW_NONE, GEM_CLASS, WEAPON_CLASS, 0 };
+static NEARDATA const char wield_objs[] = {
+ ALL_CLASSES, ALLOW_NONE, WEAPON_CLASS, TOOL_CLASS, 0
+};
+static NEARDATA const char ready_objs[] = {
+ ALLOW_COUNT, COIN_CLASS, ALL_CLASSES, ALLOW_NONE, WEAPON_CLASS, 0
+};
+static NEARDATA const char bullets[] = { /* (note: different from dothrow.c) */
+ ALLOW_COUNT, COIN_CLASS, ALL_CLASSES, ALLOW_NONE,
+ GEM_CLASS, WEAPON_CLASS, 0
+};
int
dowield()
result = ready_weapon(oldswap);
/* Set your new secondary weapon */
- if (uwep == oldwep)
+ if (uwep == oldwep) {
/* Wield failed for some reason */
setuswapwep(oldswap);
- else {
+ } else {
setuswapwep(oldwep);
if (uswapwep)
prinv((char *) 0, uswapwep, 0L);
int
dowieldquiver()
{
- register struct obj *newquiver;
- const char *quivee_types =
- (uslinging()
- || (uswapwep && objects[uswapwep->otyp].oc_skill == P_SLING))
- ? bullets
- : ready_objs;
+ char qbuf[QBUFSZ];
+ struct obj *newquiver;
+ const char *quivee_types;
+ int res;
+ boolean finish_splitting = FALSE,
+ was_uwep = FALSE, was_twoweap = u.twoweap;
/* Since the quiver isn't in your hands, don't check cantwield(), */
/* will_weld(), touch_petrifies(), etc. */
multi = 0;
-
- /* Prompt for a new quiver */
- if (!(newquiver = getobj(quivee_types, "ready")))
+ /* forget last splitobj() before calling getobj() with ALLOW_COUNT */
+ context.objsplit.child_oid = context.objsplit.parent_oid = 0;
+
+ /* Prompt for a new quiver: "What do you want to ready?"
+ (Include gems/stones as likely candidates if either primary
+ or secondary weapon is a sling.) */
+ quivee_types = (uslinging()
+ || (uswapwep
+ && objects[uswapwep->otyp].oc_skill == P_SLING))
+ ? bullets
+ : ready_objs;
+ newquiver = getobj(quivee_types, "ready");
+
+ if (!newquiver) {
/* Cancelled */
return 0;
-
- /* Handle no object, or object in other slot */
- /* Any type is okay, since we give no intrinsics anyways */
- if (newquiver == &zeroobj) {
+ } else if (newquiver == &zeroobj) { /* no object */
/* Explicitly nothing */
if (uquiver) {
/*JP
You("now have no ammunition readied.");
*/
pline("\91\95\93U\82·\82é\82½\82ß\82Ì\96î\92e\82ª\82È\82\82È\82Á\82½\81D");
- setuqwep(newquiver = (struct obj *) 0);
+ /* skip 'quivering: prinv()' */
+ setuqwep((struct obj *) 0);
} else {
/*JP
You("already have no ammunition readied!");
*/
pline("\91\95\93U\82·\82é\82½\82ß\82Ì\96î\92e\82ª\82È\82¢\81D");
- return 0;
}
+ return 0;
+ } else if (newquiver->o_id == context.objsplit.child_oid) {
+ /* if newquiver is the result of supplying a count to getobj()
+ we don't want to split something already in the quiver;
+ for any other item, we need to give it its own inventory slot */
+ if (uquiver && uquiver->o_id == context.objsplit.parent_oid) {
+ unsplitobj(newquiver);
+ goto already_quivered;
+ }
+ finish_splitting = TRUE;
} else if (newquiver == uquiver) {
+ already_quivered:
/*JP
pline("That ammunition is already readied!");
*/
pline("\82à\82¤\91\95\93U\82³\82ê\82Ä\82¢\82é\81I");
return 0;
- } else if (newquiver == uwep) {
- /* Prevent accidentally readying the main weapon */
-#if 0 /*JP*/
- pline("%s already being used as a weapon!",
- !is_plural(uwep) ? "That is" : "They are");
-#else
- pline("\82à\82¤\95\90\8aí\82Æ\82µ\82Ä\8eg\82í\82ê\82Ä\82¢\82é\81I");
-#endif
- return 0;
} else if (newquiver->owornmask & (W_ARMOR | W_ACCESSORY | W_SADDLE)) {
/*JP
You("cannot ready that!");
*/
You("\82»\82ê\82Í\8eg\82¦\82È\82¢\81I");
return 0;
- } else {
- long dummy;
+ } else if (newquiver == uwep) {
+ int weld_res = !uwep->bknown;
- /* Check if it's the secondary weapon */
- if (newquiver == uswapwep) {
- setuswapwep((struct obj *) 0);
- untwoweapon();
+ if (welded(uwep)) {
+ weldmsg(uwep);
+ reset_remarm(); /* same as dowield() */
+ return weld_res;
}
+ /* offer to split stack if wielding more than 1 */
+ if (uwep->quan > 1L && inv_cnt(FALSE) < 52 && splittable(uwep)) {
+#if 0 /*JP:T*/
+ Sprintf(qbuf, "You are wielding %ld %s. Ready %ld of them?",
+ uwep->quan, simpleonames(uwep), uwep->quan - 1L);
+#else
+ Sprintf(qbuf, "\82 \82È\82½\82Í%ld%s\82Ì%s\82ð\91\95\94õ\82µ\82Ä\82¢\82é\81D\82»\82Ì\82¤\82¿%ld%s\82ð\8f\80\94õ\82·\82é\81H",
+ uwep->quan, numeral(uwep), simpleonames(uwep),
+ uwep->quan - 1L, numeral(uwep));
+#endif
+ switch (ynq(qbuf)) {
+ case 'q':
+ return 0;
+ case 'y':
+ /* leave 1 wielded, split rest off and put into quiver */
+ newquiver = splitobj(uwep, uwep->quan - 1L);
+ finish_splitting = TRUE;
+ goto quivering;
+ default:
+ break;
+ }
+/*JP
+ Strcpy(qbuf, "Ready all of them instead?");
+*/
+ Strcpy(qbuf, "\91ã\82í\82è\82É\82±\82ê\82ç\91S\95\94\82ð\8f\80\94õ\82·\82é\81H");
+ } else {
+#if 0 /*JP*/
+ boolean use_plural = (is_plural(uwep) || pair_of(uwep));
- /* Okay to put in quiver; print it */
- dummy = newquiver->owornmask;
- newquiver->owornmask |= W_QUIVER;
- prinv((char *) 0, newquiver, 0L);
- newquiver->owornmask = dummy;
+ Sprintf(qbuf, "You are wielding %s. Ready %s instead?",
+ !use_plural ? "that" : "those",
+ !use_plural ? "it" : "them");
+#else /* \95s\8e©\91R\82¾\82¯\82Ç\82Æ\82è\82 \82¦\82¸\82±\82ê\82Å\82æ\82µ\82Æ\82·\82é */
+ Strcpy(qbuf, "\82 \82È\82½\82Í\82»\82ê\82ð\91\95\94õ\82µ\82Ä\82¢\82é\81D\91ã\82í\82è\82É\82»\82ê\82ð\8f\80\94õ\82·\82é\81H");
+#endif
+ }
+ /* require confirmation to ready the main weapon */
+ if (ynq(qbuf) != 'y') {
+ (void) Shk_Your(qbuf, uwep); /* replace qbuf[] contents */
+#if 0 /*JP:T*/
+ pline("%s%s %s wielded.", qbuf,
+ simpleonames(uwep), otense(uwep, "remain"));
+#else
+ pline("%s%s\82ð\91\95\94õ\82µ\82½\82Ü\82Ü\82É\82µ\82½\81D", qbuf,
+ simpleonames(uwep));
+#endif
+ return 0;
+ }
+ /* quivering main weapon, so no longer wielding it */
+ setuwep((struct obj *) 0);
+ untwoweapon();
+ was_uwep = TRUE;
+ } else if (newquiver == uswapwep) {
+ if (uswapwep->quan > 1L && inv_cnt(FALSE) < 52
+ && splittable(uswapwep)) {
+#if 0 /*JP*/
+ Sprintf(qbuf, "%s %ld %s. Ready %ld of them?",
+ u.twoweap ? "You are dual wielding"
+ : "Your alternate weapon is",
+ uswapwep->quan, simpleonames(uswapwep),
+ uswapwep->quan - 1L);
+#else
+ Sprintf(qbuf, "\82 \82È\82½%s\82Í%ld%s\82Ì%s\82¾\81D\82»\82Ì\82¤\82¿%ld%s\82ð\8f\80\94õ\82·\82é\81H",
+ u.twoweap ? "\82ª\93ñ\93\81\97¬\82Å\91\95\94õ\82µ\82Ä\82¢\82é\82Ì"
+ : "\82Ì\97\\94õ\82Ì\95\90\8aí",
+ uswapwep->quan, numeral(uswapwep), simpleonames(uswapwep),
+ uswapwep->quan - 1L, numeral(uswapwep));
+#endif
+ switch (ynq(qbuf)) {
+ case 'q':
+ return 0;
+ case 'y':
+ /* leave 1 alt-wielded, split rest off and put into quiver */
+ newquiver = splitobj(uswapwep, uswapwep->quan - 1L);
+ finish_splitting = TRUE;
+ goto quivering;
+ default:
+ break;
+ }
+/*JP
+ Strcpy(qbuf, "Ready all of them instead?");
+*/
+ Strcpy(qbuf, "\91ã\82í\82è\82É\82±\82ê\82ç\91S\95\94\82ð\8f\80\94õ\82·\82é\81H");
+ } else {
+#if 0 /*JP*/
+ boolean use_plural = (is_plural(uswapwep) || pair_of(uswapwep));
+
+ Sprintf(qbuf, "%s your %s weapon. Ready %s instead?",
+ !use_plural ? "That is" : "Those are",
+ u.twoweap ? "second" : "alternate",
+ !use_plural ? "it" : "them");
+#else
+ Sprintf(qbuf, "\82»\82ê\82Í%s\95\90\8aí\82¾\81D\91ã\82í\82è\82É\82»\82ê\82ð\8f\80\94õ\82·\82é\81H",
+ u.twoweap ? "\93ñ\94Ô\96Ú\82Ì" : "\97\\94õ\82Ì");
+#endif
+ }
+ /* require confirmation to ready the alternate weapon */
+ if (ynq(qbuf) != 'y') {
+ (void) Shk_Your(qbuf, uswapwep); /* replace qbuf[] contents */
+#if 0 /*JP:T*/
+ pline("%s%s %s %s.", qbuf,
+ simpleonames(uswapwep), otense(uswapwep, "remain"),
+ u.twoweap ? "wielded" : "as secondary weapon");
+#else
+ pline("%s%s\82ð%s\82Ü\82Ü\82É\82µ\82½\81D", qbuf,
+ simpleonames(uswapwep),
+ u.twoweap ? "\91\95\94õ\82µ\82½" : "\93ñ\94Ô\96Ú\82Ì\95\90\8aí\82Ì");
+#endif
+ return 0;
+ }
+ /* quivering alternate weapon, so no more uswapwep */
+ setuswapwep((struct obj *) 0);
+ untwoweapon();
}
- /* Finally, place it in the quiver */
+ quivering:
+ if (finish_splitting) {
+ freeinv(newquiver);
+ newquiver->nomerge = 1;
+ addinv(newquiver);
+ newquiver->nomerge = 0;
+ }
+ /* place item in quiver before printing so that inventory feedback
+ includes "(at the ready)" */
setuqwep(newquiver);
- /* Take no time since this is a convenience slot */
- return 0;
+ prinv((char *) 0, newquiver, 0L);
+
+ /* quiver is a convenience slot and manipulating it ordinarily
+ consumes no time, but unwielding primary or secondary weapon
+ should take time (perhaps we're adjacent to a rust monster
+ or disenchanter and want to hit it immediately, but not with
+ something we're wielding that's vulnerable to its damage) */
+ res = 0;
+ if (was_uwep) {
+/*JP
+ You("are now empty %s.", body_part(HANDED));
+*/
+ You("\95\90\8aí\82ð\8e\9d\82½\82È\82\82È\82Á\82½\81D");
+ res = 1;
+ } else if (was_twoweap && !u.twoweap) {
+/*JP
+ You("are no longer wielding two weapons at once.");
+*/
+ You("\93ñ\93\81\97¬\82ð\82â\82ß\82½\81D");
+ res = 1;
+ }
+ return res;
}
/* used for #rub and for applying pick-axe, whip, grappling hook or polearm */
struct obj *obj;
const char *verb; /* "rub",&c */
{
+#if 0 /*JP*/
const char *what;
boolean more_than_1;
+#endif
if (obj == uwep)
return TRUE; /* nothing to do if already wielding it */
#if 0 /*JP*/
if (!verb)
verb = "wield";
-#endif
what = xname(obj);
-#if 0 /*JP*/
more_than_1 = (obj->quan > 1L || strstri(what, "pair of ") != 0
|| strstri(what, "s of ") != 0);
#endif
if (obj->owornmask & (W_ARMOR | W_ACCESSORY)) {
-#if 0 /*JP*/
+#if 0 /*JP:T*/
You_cant("%s %s while wearing %s.", verb, yname(obj),
more_than_1 ? "them" : "it");
#else
}
/* check shield */
if (uarms && bimanual(obj)) {
-#if 0 /*JP*/
+#if 0 /*JP:T*/
You("cannot %s a two-handed %s while wearing a shield.", verb,
(obj->oclass == WEAPON_CLASS) ? "weapon" : "tool");
#else
} else {
struct obj *oldwep = uwep;
+ if (will_weld(obj)) {
+ /* hope none of ready_weapon()'s early returns apply here... */
+ (void) ready_weapon(obj);
+ } else {
/*JP
- You("now wield %s.", doname(obj));
+ You("now wield %s.", doname(obj));
*/
- You("%s\82ð\91\95\94õ\82µ\82½\81D", doname(obj));
- setuwep(obj);
+ You("%s\82ð\91\95\94õ\82µ\82½\81D", doname(obj));
+ setuwep(obj);
+ }
if (flags.pushweapon && oldwep && uwep != oldwep)
setuswapwep(oldwep);
}
*/
You("\8f\82\82ð\8e\9d\82Á\82Ä\82¢\82é\8aÔ\82Í\97¼\8eè\8e\9d\82¿\82Å\82«\82È\82¢\81D");
else if (uswapwep->oartifact)
-#if 0 /*JP*/
+#if 0 /*JP:T*/
pline("%s being held second to another weapon!",
Yobjnam2(uswapwep, "resist"));
#else
; /* must be life-saved to reach here; return FALSE */
} else if (Glib || uswapwep->cursed) {
if (!Glib)
- uswapwep->bknown = TRUE;
+ set_bknown(uswapwep, 1);
drop_uswapwep();
} else
return TRUE;
register struct obj *otmp;
register int amount;
{
+#if 0 /*JP*/
const char *color = hcolor((amount < 0) ? NH_BLACK : NH_BLUE);
+#else
+ const char *color = hcolor_adv((amount < 0) ? NH_BLACK : NH_BLUE);
+#endif
const char *xtime, *wepname = "";
boolean multiple;
int otyp = STRANGE_OBJECT;
if (!uwep || (uwep->oclass != WEAPON_CLASS && !is_weptool(uwep))) {
char buf[BUFSZ];
-#if 0 /*JP*/
- Sprintf(buf, "Your %s %s.", makeplural(body_part(HAND)),
- (amount >= 0) ? "twitch" : "itch");
+ if (amount >= 0 && uwep && will_weld(uwep)) { /* cursed tin opener */
+ if (!Blind) {
+#if 0 /*JP:T*/
+ Sprintf(buf, "%s with %s aura.",
+ Yobjnam2(uwep, "glow"), an(hcolor(NH_AMBER)));
+#else
+ Sprintf(buf, "%s\82Í%s\83I\81[\83\89\82É\82Â\82Â\82Ü\82ê\82½\81D",
+ xname(uwep), hcolor(NH_AMBER));
+#endif
+ uwep->bknown = !Hallucination; /* ok to bypass set_bknown() */
+ } else {
+ /* cursed tin opener is wielded in right hand */
+/*JP
+ Sprintf(buf, "Your right %s tingles.", body_part(HAND));
+*/
+ Sprintf(buf, "\82 \82È\82½\82Ì\89E%s\82Í\82¿\82\82¿\82\82µ\82½\81D", body_part(HAND));
+ }
+ uncurse(uwep);
+ update_inventory();
+ } else {
+#if 0 /*JP:T*/
+ Sprintf(buf, "Your %s %s.", makeplural(body_part(HAND)),
+ (amount >= 0) ? "twitch" : "itch");
#else
- Sprintf(buf, "\82 \82È\82½\82Ì%s\82Í%s\81D", makeplural(body_part(HAND)),
- (amount >= 0) ? "\82Ð\82«\82Â\82Á\82½" : "\83\80\83Y\83\80\83Y\82µ\82½");
+ Sprintf(buf, "\82 \82È\82½\82Ì%s\82Í%s\81D", makeplural(body_part(HAND)),
+ (amount >= 0) ? "\82Ð\82«\82Â\82Á\82½" : "\83\80\83Y\83\80\83Y\82µ\82½");
#endif
- strange_feeling(otmp, buf);
+ }
+ strange_feeling(otmp, buf); /* pline()+docall()+useup() */
exercise(A_DEX, (boolean) (amount >= 0));
return 0;
}
if (uwep->otyp == WORM_TOOTH && amount >= 0) {
multiple = (uwep->quan > 1L);
/* order: message, transformation, shop handling */
-#if 0 /*JP*/
+#if 0 /*JP:T*/
Your("%s %s much sharper now.", simpleonames(uwep),
multiple ? "fuse, and become" : "is");
#else
} else if (uwep->otyp == CRYSKNIFE && amount < 0) {
multiple = (uwep->quan > 1L);
/* order matters: message, shop handling, transformation */
-#if 0 /*JP*/
+#if 0 /*JP:T*/
Your("%s %s much duller now.", simpleonames(uwep),
multiple ? "fuse, and become" : "is");
#else
/*JP
pline("%s %s.", Yobjnam2(uwep, "faintly glow"), color);
*/
- Your("%s\82Í\82í\82¸\82©\82É%s\8bP\82¢\82½\81D", xname(uwep),jconj_adj(color));
+ Your("%s\82Í\82í\82¸\82©\82É%s\8bP\82¢\82½\81D", xname(uwep), color);
return 1;
}
/* there is a (soft) upper and lower limit to uwep->spe */
if (((uwep->spe > 5 && amount >= 0) || (uwep->spe < -5 && amount < 0))
&& rn2(3)) {
if (!Blind)
-#if 0 /*JP*/
+#if 0 /*JP:T*/
pline("%s %s for a while and then %s.",
Yobjnam2(uwep, "violently glow"), color,
otense(uwep, "evaporate"));
#else
Your("%s\82Í\82µ\82Î\82ç\82\8c\83\82µ\82%s\8bP\82«\81C\8fö\94\82µ\82½\81D",
- xname(uwep), jconj_adj(color));
+ xname(uwep), color);
#endif
else
/*JP
xtime = (amount * amount == 1) ? "moment" : "while";
*/
xtime = (amount*amount == 1) ? "\88ê\8fu" : "\82µ\82Î\82ç\82\82Ì\8aÔ";
-#if 0 /*JP*/
+#if 0 /*JP:T*/
pline("%s %s for a %s.",
Yobjnam2(uwep, amount == 0 ? "violently glow" : "glow"), color,
xtime);
#else
Your("%s\82Í%s%s%s\8bP\82¢\82½\81D",
- xname(uwep), xtime, jconj_adj(color),
+ xname(uwep), xtime, color,
amount == 0 ? "\8c\83\82µ\82" : "");
#endif
if (otyp != STRANGE_OBJECT && uwep->known
* spe dependent. Give an obscure clue here.
*/
if (uwep->oartifact == ART_MAGICBANE && uwep->spe >= 0) {
-#if 0 /*JP*/
+#if 0 /*JP:T*/
Your("right %s %sches!", body_part(HAND),
(((amount > 1) && (uwep->spe > 1)) ? "flin" : "it"));
#else
register struct obj *obj;
{
if (obj && obj == uwep && will_weld(obj)) {
- obj->bknown = TRUE;
+ set_bknown(obj, 1);
return 1;
}
return 0;