^X vs two-weapon
When dual-wielding and both weapons use the same skill, the weapon feedback by ^X was inadvertently skipping the part where it would tell the player whether either the weapons' skill or two-weapon skill or both had already been trained enough to to be advanced. Most of the diff is change in indentation.
This commit is contained in:
+64
-47
@@ -1,4 +1,4 @@
|
|||||||
/* NetHack 3.7 insight.c $NHDT-Date: 1586186430 2020/04/06 15:20:30 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.11 $ */
|
/* NetHack 3.7 insight.c $NHDT-Date: 1586265433 2020/04/07 13:17:13 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.12 $ */
|
||||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
|
|
||||||
@@ -1100,7 +1100,7 @@ int final;
|
|||||||
else
|
else
|
||||||
you_are(buf, "");
|
you_are(buf, "");
|
||||||
|
|
||||||
} else { /* twoweap, so two-weapon skill is at least unskilled */
|
} else { /* two-weapon */
|
||||||
static const char also_[] = "also ";
|
static const char also_[] = "also ";
|
||||||
char pfx[QBUFSZ], sfx[QBUFSZ],
|
char pfx[QBUFSZ], sfx[QBUFSZ],
|
||||||
sknambuf2[20], sklvlbuf2[20], twobuf[20];
|
sknambuf2[20], sklvlbuf2[20], twobuf[20];
|
||||||
@@ -1119,7 +1119,7 @@ int final;
|
|||||||
if (twoskl == P_ISRESTRICTED) {
|
if (twoskl == P_ISRESTRICTED) {
|
||||||
twoskl = P_UNSKILLED;
|
twoskl = P_UNSKILLED;
|
||||||
/* restricted is the same as unskilled as far as bonus
|
/* restricted is the same as unskilled as far as bonus
|
||||||
or penaly goes, and it isn't ordinarily seen so
|
or penalty goes, and it isn't ordinarily seen so
|
||||||
skill_level_name() returns "Unknown" for it */
|
skill_level_name() returns "Unknown" for it */
|
||||||
Strcpy(twobuf, "restricted");
|
Strcpy(twobuf, "restricted");
|
||||||
} else {
|
} else {
|
||||||
@@ -1154,61 +1154,78 @@ int final;
|
|||||||
else
|
else
|
||||||
you_are(buf, "");
|
you_are(buf, "");
|
||||||
|
|
||||||
if (wtype2 == wtype)
|
/* skip comparison between secondary and two-weapons if it is
|
||||||
return;
|
identical to the comparison between primary and twoweap */
|
||||||
|
if (wtype2 != wtype) {
|
||||||
Strcpy(sknambuf2, skill_name(wtype2));
|
Strcpy(sknambuf2, skill_name(wtype2));
|
||||||
(void) lcase(skill_level_name(wtype2, sklvlbuf2));
|
(void) lcase(skill_level_name(wtype2, sklvlbuf2));
|
||||||
verb_present = "is", verb_past = "was";
|
verb_present = "is", verb_past = "was";
|
||||||
pfx[0] = sfx[0] = buf[0] = '\0';
|
pfx[0] = sfx[0] = buf[0] = '\0';
|
||||||
if (twoskl < sklvl2) {
|
if (twoskl < sklvl2) {
|
||||||
/* twoskil is at least unskilled, sklvl2 at least basic */
|
/* twoskil is at least unskilled, sklvl2 at least basic */
|
||||||
Sprintf(pfx, "Your skill in %s ", sknambuf2);
|
Sprintf(pfx, "Your skill in %s ", sknambuf2);
|
||||||
Sprintf(sfx, " %slimited by being %s with two weapons",
|
Sprintf(sfx, " %slimited by being %s with two weapons",
|
||||||
also, twobuf);
|
also, twobuf);
|
||||||
} else if (twoskl > sklvl2) {
|
} else if (twoskl > sklvl2) {
|
||||||
/* sklvl2 might be restricted */
|
/* sklvl2 might be restricted */
|
||||||
Strcpy(pfx, "Your two weapon skill ");
|
Strcpy(pfx, "Your two weapon skill ");
|
||||||
Sprintf(sfx, " %slimited by ", also2);
|
Sprintf(sfx, " %slimited by ", also2);
|
||||||
if (sklvl2 > P_ISRESTRICTED)
|
if (sklvl2 > P_ISRESTRICTED)
|
||||||
Sprintf(eos(sfx), "being %s with", sklvlbuf2);
|
Sprintf(eos(sfx), "being %s with", sklvlbuf2);
|
||||||
else
|
else
|
||||||
Strcat(eos(sfx), "having no skill");
|
Strcat(eos(sfx), "having no skill");
|
||||||
Sprintf(eos(sfx), " with %s", sknambuf2);
|
Sprintf(eos(sfx), " with %s", sknambuf2);
|
||||||
|
} else {
|
||||||
} else {
|
/* equal; two-weapon is at least unskilled, so sklvl2 is
|
||||||
/* equal; two-weapon is at least unskilled, so so is sklvl2;
|
too; "you [also] have basic/expert/master/grand-master
|
||||||
"you [also] have basic/expert/master/grand-master skill
|
skill with <skill>" or "you [also] are unskilled/
|
||||||
with <skill>" or "you [also] are unskilled/skilled in*" */
|
skilled in <skill> */
|
||||||
Sprintf(buf, "%s %s %s", sklvlbuf2,
|
Sprintf(buf, "%s %s %s", sklvlbuf2,
|
||||||
hav2 ? "skill with" : "in", sknambuf2);
|
hav2 ? "skill with" : "in", sknambuf2);
|
||||||
Strcat(buf, " and two weapons");
|
Strcat(buf, " and two weapons");
|
||||||
if (also3) {
|
if (also3) {
|
||||||
Strcpy(pfx, "You also ");
|
Strcpy(pfx, "You also ");
|
||||||
Sprintf(sfx, " %s", buf), buf[0] = '\0';
|
Sprintf(sfx, " %s", buf), buf[0] = '\0';
|
||||||
verb_present = hav2 ? "have" : "are";
|
verb_present = hav2 ? "have" : "are";
|
||||||
verb_past = hav2 ? "had" : "were";
|
verb_past = hav2 ? "had" : "were";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
if (*pfx)
|
||||||
if (*pfx)
|
enl_msg(pfx, verb_present, verb_past, sfx, "");
|
||||||
enl_msg(pfx, verb_present, verb_past, sfx, "");
|
else if (hav2)
|
||||||
else if (hav2)
|
you_have(buf, "");
|
||||||
you_have(buf, "");
|
else
|
||||||
else
|
you_are(buf, "");
|
||||||
you_are(buf, "");
|
} /* wtype2 != wtype */
|
||||||
|
|
||||||
|
/* if training and available skill credits already allow
|
||||||
|
#enhance for any of primary, secondary, or two-weapon,
|
||||||
|
tell the player; avoid attempting figure out whether
|
||||||
|
spending skill credits enhancing one might make either
|
||||||
|
or both of the others become ineligible for enhancement */
|
||||||
a1 = can_advance(wtype, FALSE);
|
a1 = can_advance(wtype, FALSE);
|
||||||
a2 = can_advance(wtype2, FALSE);
|
a2 = (wtype2 != wtype) ? can_advance(wtype2, FALSE) : 0;
|
||||||
ab = can_advance(P_TWO_WEAPON_COMBAT, FALSE);
|
ab = can_advance(P_TWO_WEAPON_COMBAT, FALSE);
|
||||||
if (a1 || a2 || ab) {
|
if (a1 || a2 || ab) {
|
||||||
|
static const char also_wik_[] = " and also with ";
|
||||||
|
|
||||||
|
/* for just one, the conditionals yield
|
||||||
|
1) "skill with <that one>"; for more than one:
|
||||||
|
2) "skills with <primary> and also with <secondary>" or
|
||||||
|
3) "skills with <primary> and also with two-weapons" or
|
||||||
|
4) "skills with <secondary> and also with two-weapons" or
|
||||||
|
5) "skills with <primary>, <secondary>, and two-weapons"
|
||||||
|
(no 'also's or extra 'with's for case 5); when primary
|
||||||
|
and secondary use the same skill, only cases 1 and 3 are
|
||||||
|
possible because 'a2' gets forced to 0 above */
|
||||||
Sprintf(sfx, " skill%s with %s%s%s%s%s",
|
Sprintf(sfx, " skill%s with %s%s%s%s%s",
|
||||||
(a1 + a2 + ab > 1) ? "s" : "",
|
(a1 + a2 + ab > 1) ? "s" : "",
|
||||||
a1 ? skill_name(wtype) : "",
|
a1 ? skill_name(wtype) : "",
|
||||||
((a1 && a2 && ab) ? ", "
|
((a1 && a2 && ab) ? ", "
|
||||||
: (a1 && (a2 || ab)) ? " and " : ""),
|
: (a1 && (a2 || ab)) ? also_wik_ : ""),
|
||||||
a2 ? skill_name(wtype2) : "",
|
a2 ? skill_name(wtype2) : "",
|
||||||
((a1 && a2 && ab) ? ", and "
|
((a1 && a2 && ab) ? ", and "
|
||||||
: (a2 && ab) ? " and " : ""),
|
: (a2 && ab) ? also_wik_ : ""),
|
||||||
ab ? "two weapons" : "");
|
ab ? "two weapons" : "");
|
||||||
enl_msg(You_, "can enhance", "could have enhanced", sfx, "");
|
enl_msg(You_, "can enhance", "could have enhanced", sfx, "");
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user