Merge branch 'NetHack-3.6'

This commit is contained in:
nhmall
2019-09-28 20:23:05 -04:00
5 changed files with 20 additions and 13 deletions

View File

@@ -154,6 +154,8 @@ wielded aklys that returned to hero when thrown while inside an engulfer left
panic if same weapon killed any engulfer via melee from inside
uarmh null pointer dereference if a helm of opposite alignment came off due
to being polymorphed
verb tense was inappropriate in some messages when a mon/pet had a name
ending in 's'
Fixes to Post-3.6.2 Problems that Were Exposed Via git Repository

View File

@@ -316,7 +316,8 @@ struct c_common_strings {
const char *const c_nothing_happens, *const c_thats_enough_tries,
*const c_silly_thing_to, *const c_shudder_for_moment,
*const c_something, *const c_Something, *const c_You_can_move_again,
*const c_Never_mind, *c_vision_clears, *const c_the_your[2];
*const c_Never_mind, *c_vision_clears, *const c_the_your[2],
*const c_fakename[2];
};
E const struct c_common_strings c_common_strings;
@@ -331,6 +332,9 @@ E const struct c_common_strings c_common_strings;
#define Never_mind c_common_strings.c_Never_mind
#define vision_clears c_common_strings.c_vision_clears
#define the_your c_common_strings.c_the_your
/* fakename[] used occasionally so vtense() won't be fooled by an assigned
name ending in 's' */
#define fakename c_common_strings.c_fakename
/* material strings */
E const char *materialnm[];

View File

@@ -983,10 +983,10 @@ boolean vis; /* whether the action can be seen */
char *hittee; /* target's name: "you" or mon_nam(mdef) */
{
struct permonst *old_uasmon;
const char *verb, *fakename;
const char *verb;
boolean youattack = (magr == &g.youmonst), youdefend = (mdef == &g.youmonst),
resisted = FALSE, do_stun, do_confuse, result;
int attack_indx, scare_dieroll = MB_MAX_DIEROLL / 2;
int attack_indx, fakeidx, scare_dieroll = MB_MAX_DIEROLL / 2;
result = FALSE; /* no message given yet */
/* the most severe effects are less likely at higher enchantment */
@@ -1126,13 +1126,13 @@ char *hittee; /* target's name: "you" or mon_nam(mdef) */
mdef->mconf = 1;
}
/* now give message(s) describing side-effects;
don't let vtense() be fooled by assigned name ending in 's' */
fakename = youdefend ? "you" : "mon";
/* now give message(s) describing side-effects; Use fakename
so vtense() won't be fooled by assigned name ending in 's' */
fakeidx = youdefend ? 1 : 0;
if (youattack || youdefend || vis) {
(void) upstart(hittee); /* capitalize */
if (resisted) {
pline("%s %s!", hittee, vtense(fakename, "resist"));
pline("%s %s!", hittee, vtense(fakename[fakeidx], "resist"));
shieldeff(youdefend ? u.ux : mdef->mx,
youdefend ? u.uy : mdef->my);
}
@@ -1146,7 +1146,7 @@ char *hittee; /* target's name: "you" or mon_nam(mdef) */
Strcat(buf, " and ");
if (do_confuse)
Strcat(buf, "confused");
pline("%s %s %s%c", hittee, vtense(fakename, "are"), buf,
pline("%s %s %s%c", hittee, vtense(fakename[fakeidx], "are"), buf,
(do_stun && do_confuse) ? '!' : '.');
}
}

View File

@@ -93,7 +93,8 @@ const struct c_common_strings c_common_strings = { "Nothing happens.",
"You can move again.",
"Never mind.",
"vision quickly clears.",
{ "the", "your" } };
{ "the", "your" },
{ "mon", "you" } };
/* NOTE: the order of these words exactly corresponds to the
order of oc_material values #define'd in objclass.h. */

View File

@@ -827,7 +827,7 @@ struct monst *mtmp;
Mnam = Monnam(mtmp);
pline("%s %s into a %s!", Mnam,
vtense(Mnam, locomotion(mtmp->data, "jump")),
vtense(fakename[0], locomotion(mtmp->data, "jump")),
(t->ttyp == TRAPDOOR) ? "trap door" : "hole");
if (levl[g.trapx][g.trapy].typ == SCORR) {
levl[g.trapx][g.trapy].typ = CORR;
@@ -924,7 +924,7 @@ struct monst *mtmp;
if (vis) {
Mnam = Monnam(mtmp);
pline("%s %s onto a teleport trap!", Mnam,
vtense(Mnam, locomotion(mtmp->data, "jump")));
vtense(fakename[0], locomotion(mtmp->data, "jump")));
seetrap(t_at(g.trapx, g.trapy));
}
/* don't use rloc_to() because worm tails must "move" */
@@ -1873,7 +1873,7 @@ struct monst *mtmp;
const char *Mnam = Monnam(mtmp);
pline("%s deliberately %s onto a polymorph trap!", Mnam,
vtense(Mnam, locomotion(mtmp->data, "jump")));
vtense(fakename[0], locomotion(mtmp->data, "jump")));
}
if (vis)
seetrap(t_at(g.trapx, g.trapy));
@@ -2451,7 +2451,7 @@ boolean by_you; /* true: if mon kills itself, hero gets credit/blame */
newsym(mon->mx, mon->my);
if (vis)
pline("%s %s %s %s fire trap!", Mnam,
vtense(Mnam, locomotion(mon->data, "move")),
vtense(fakename[0], locomotion(mon->data, "move")),
is_floater(mon->data) ? "over" : "onto",
trap->tseen ? "the" : "a");
}