fix #8924 - demonic bribery while hero is deaf
Even though it isn't using verbalize() to make a specific statement, don't let a demon ask the hero for a bribe when the hero is deaf. Also, give alternate setup messages in a couple of places where a divine voice is overriding deafness.
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.60 $ $NHDT-Date: 1561053256 2019/06/20 17:54:16 $
|
$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.61 $ $NHDT-Date: 1561061319 2019/06/20 20:08:39 $
|
||||||
|
|
||||||
This fixes36.3 file is here to capture information about updates in the 3.6.x
|
This fixes36.3 file is here to capture information about updates in the 3.6.x
|
||||||
lineage following the release of 3.6.2 in May 2019. Please note, however,
|
lineage following the release of 3.6.2 in May 2019. Please note, however,
|
||||||
@@ -77,6 +77,7 @@ for wizard mode 'monpolycontrol', allow usually disallowed type 'chameleon',
|
|||||||
'doppelganger', or 'sandestin' as answer to "change <monster> @ <x,y>
|
'doppelganger', or 'sandestin' as answer to "change <monster> @ <x,y>
|
||||||
into what?" prompt when <monster> is really that type of creature
|
into what?" prompt when <monster> is really that type of creature
|
||||||
add Space, Return, and Escape to '? k' (help for menu control keys)
|
add Space, Return, and Escape to '? k' (help for menu control keys)
|
||||||
|
hero can no longer negotiate a bribe with a demon lord when deaf
|
||||||
|
|
||||||
|
|
||||||
Fixes to Post-3.6.2 Problems that Were Exposed Via git Repository
|
Fixes to Post-3.6.2 Problems that Were Exposed Via git Repository
|
||||||
|
|||||||
51
src/minion.c
51
src/minion.c
@@ -1,4 +1,4 @@
|
|||||||
/* NetHack 3.6 minion.c $NHDT-Date: 1544998886 2018/12/16 22:21:26 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.40 $ */
|
/* NetHack 3.6 minion.c $NHDT-Date: 1561061319 2019/06/20 20:08:39 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.42 $ */
|
||||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||||
/*-Copyright (c) Robert Patrick Rankin, 2008. */
|
/*-Copyright (c) Robert Patrick Rankin, 2008. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
@@ -204,9 +204,13 @@ boolean talk;
|
|||||||
}
|
}
|
||||||
if (mon) {
|
if (mon) {
|
||||||
if (talk) {
|
if (talk) {
|
||||||
pline_The("voice of %s booms:", align_gname(alignment));
|
if (!Deaf)
|
||||||
|
pline_The("voice of %s booms:", align_gname(alignment));
|
||||||
|
else
|
||||||
|
You_feel("%s booming voice:",
|
||||||
|
s_suffix(align_gname(alignment)));
|
||||||
verbalize("Thou shalt pay for thine indiscretion!");
|
verbalize("Thou shalt pay for thine indiscretion!");
|
||||||
if (!Blind)
|
if (canspotmon(mon))
|
||||||
pline("%s appears before you.", Amonnam(mon));
|
pline("%s appears before you.", Amonnam(mon));
|
||||||
mon->mstrategy &= ~STRAT_APPEARMSG;
|
mon->mstrategy &= ~STRAT_APPEARMSG;
|
||||||
}
|
}
|
||||||
@@ -254,16 +258,18 @@ register struct monst *mtmp;
|
|||||||
newsym(mtmp->mx, mtmp->my);
|
newsym(mtmp->mx, mtmp->my);
|
||||||
}
|
}
|
||||||
if (youmonst.data->mlet == S_DEMON) { /* Won't blackmail their own. */
|
if (youmonst.data->mlet == S_DEMON) { /* Won't blackmail their own. */
|
||||||
pline("%s says, \"Good hunting, %s.\"", Amonnam(mtmp),
|
if (!Deaf)
|
||||||
flags.female ? "Sister" : "Brother");
|
pline("%s says, \"Good hunting, %s.\"", Amonnam(mtmp),
|
||||||
|
flags.female ? "Sister" : "Brother");
|
||||||
|
else if (canseemon(mtmp))
|
||||||
|
pline("%s says something.", Amonnam(mtmp));
|
||||||
if (!tele_restrict(mtmp))
|
if (!tele_restrict(mtmp))
|
||||||
(void) rloc(mtmp, TRUE);
|
(void) rloc(mtmp, TRUE);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
cash = money_cnt(invent);
|
cash = money_cnt(invent);
|
||||||
demand =
|
demand = (cash * (rnd(80) + 20 * Athome))
|
||||||
(cash * (rnd(80) + 20 * Athome))
|
/ (100 * (1 + (sgn(u.ualign.type) == sgn(mtmp->data->maligntyp))));
|
||||||
/ (100 * (1 + (sgn(u.ualign.type) == sgn(mtmp->data->maligntyp))));
|
|
||||||
|
|
||||||
if (!demand || multi < 0) { /* you have no gold or can't move */
|
if (!demand || multi < 0) { /* you have no gold or can't move */
|
||||||
mtmp->mpeaceful = 0;
|
mtmp->mpeaceful = 0;
|
||||||
@@ -273,13 +279,22 @@ register struct monst *mtmp;
|
|||||||
/* make sure that the demand is unmeetable if the monster
|
/* make sure that the demand is unmeetable if the monster
|
||||||
has the Amulet, preventing monster from being satisfied
|
has the Amulet, preventing monster from being satisfied
|
||||||
and removed from the game (along with said Amulet...) */
|
and removed from the game (along with said Amulet...) */
|
||||||
if (mon_has_amulet(mtmp))
|
/* [actually the Amulet is safe; it would be dropped when
|
||||||
demand = cash + (long) rn1(1000, 40);
|
mongone() gets rid of the monster; force combat anyway;
|
||||||
|
also make it unmeetable if the player is Deaf, to simplify
|
||||||
|
handling that case as player-won't-pay] */
|
||||||
|
if (mon_has_amulet(mtmp) || Deaf)
|
||||||
|
/* 125: 5*25 in case hero has maximum possible charisma */
|
||||||
|
demand = cash + (long) rn1(1000, 125);
|
||||||
|
|
||||||
pline("%s demands %ld %s for safe passage.", Amonnam(mtmp), demand,
|
if (!Deaf)
|
||||||
currency(demand));
|
pline("%s demands %ld %s for safe passage.",
|
||||||
|
Amonnam(mtmp), demand, currency(demand));
|
||||||
|
else if (canseemon(mtmp))
|
||||||
|
pline("%s seems to be demanding something.", Amonnam(mtmp));
|
||||||
|
|
||||||
if ((offer = bribe(mtmp)) >= demand) {
|
offer = 0L;
|
||||||
|
if (!Deaf && ((offer = bribe(mtmp)) >= demand)) {
|
||||||
pline("%s vanishes, laughing about cowardly mortals.",
|
pline("%s vanishes, laughing about cowardly mortals.",
|
||||||
Amonnam(mtmp));
|
Amonnam(mtmp));
|
||||||
} else if (offer > 0L
|
} else if (offer > 0L
|
||||||
@@ -447,12 +462,18 @@ gain_guardian_angel()
|
|||||||
Hear_again(); /* attempt to cure any deafness now (divine
|
Hear_again(); /* attempt to cure any deafness now (divine
|
||||||
message will be heard even if that fails) */
|
message will be heard even if that fails) */
|
||||||
if (Conflict) {
|
if (Conflict) {
|
||||||
pline("A voice booms:");
|
if (!Deaf)
|
||||||
|
pline("A voice booms:");
|
||||||
|
else
|
||||||
|
You_feel("a booming voice:");
|
||||||
verbalize("Thy desire for conflict shall be fulfilled!");
|
verbalize("Thy desire for conflict shall be fulfilled!");
|
||||||
/* send in some hostile angels instead */
|
/* send in some hostile angels instead */
|
||||||
lose_guardian_angel((struct monst *) 0);
|
lose_guardian_angel((struct monst *) 0);
|
||||||
} else if (u.ualign.record > 8) { /* fervent */
|
} else if (u.ualign.record > 8) { /* fervent */
|
||||||
pline("A voice whispers:");
|
if (!Deaf)
|
||||||
|
pline("A voice whispers:");
|
||||||
|
else
|
||||||
|
You_feel("a soft voice:");
|
||||||
verbalize("Thou hast been worthy of me!");
|
verbalize("Thou hast been worthy of me!");
|
||||||
mm.x = u.ux;
|
mm.x = u.ux;
|
||||||
mm.y = u.uy;
|
mm.y = u.uy;
|
||||||
|
|||||||
13
src/pray.c
13
src/pray.c
@@ -1,4 +1,4 @@
|
|||||||
/* NetHack 3.6 pray.c $NHDT-Date: 1559853037 2019/06/06 20:30:37 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.114 $ */
|
/* NetHack 3.6 pray.c $NHDT-Date: 1561061321 2019/06/20 20:08:41 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.115 $ */
|
||||||
/* Copyright (c) Benson I. Margulies, Mike Stephenson, Steve Linhart, 1989. */
|
/* Copyright (c) Benson I. Margulies, Mike Stephenson, Steve Linhart, 1989. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
|
|
||||||
@@ -489,7 +489,7 @@ int trouble;
|
|||||||
what = rightglow;
|
what = rightglow;
|
||||||
else if (otmp == uleft)
|
else if (otmp == uleft)
|
||||||
what = leftglow;
|
what = leftglow;
|
||||||
decurse:
|
decurse:
|
||||||
if (!otmp) {
|
if (!otmp) {
|
||||||
impossible("fix_worst_trouble: nothing to uncurse.");
|
impossible("fix_worst_trouble: nothing to uncurse.");
|
||||||
return;
|
return;
|
||||||
@@ -721,8 +721,9 @@ aligntyp resp_god;
|
|||||||
(on_altar() && (a_align(u.ux, u.uy) != resp_god))
|
(on_altar() && (a_align(u.ux, u.uy) != resp_god))
|
||||||
? "scorn"
|
? "scorn"
|
||||||
: "call upon");
|
: "call upon");
|
||||||
|
/* [why isn't this using verbalize()?] */
|
||||||
pline("\"Then die, %s!\"",
|
pline("\"Then die, %s!\"",
|
||||||
youmonst.data->mlet == S_HUMAN ? "mortal" : "creature");
|
(youmonst.data->mlet == S_HUMAN) ? "mortal" : "creature");
|
||||||
summon_minion(resp_god, FALSE);
|
summon_minion(resp_god, FALSE);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -802,7 +803,7 @@ gcrownu()
|
|||||||
&& uwep->oartifact != ART_STORMBRINGER))
|
&& uwep->oartifact != ART_STORMBRINGER))
|
||||||
&& !carrying(SPE_FINGER_OF_DEATH)) {
|
&& !carrying(SPE_FINGER_OF_DEATH)) {
|
||||||
class_gift = SPE_FINGER_OF_DEATH;
|
class_gift = SPE_FINGER_OF_DEATH;
|
||||||
make_splbk:
|
make_splbk:
|
||||||
obj = mksobj(class_gift, TRUE, FALSE);
|
obj = mksobj(class_gift, TRUE, FALSE);
|
||||||
bless(obj);
|
bless(obj);
|
||||||
obj->bknown = 1; /* ok to skip set_bknown() */
|
obj->bknown = 1; /* ok to skip set_bknown() */
|
||||||
@@ -1488,7 +1489,7 @@ dosacrifice()
|
|||||||
|
|
||||||
if (otmp->otyp == AMULET_OF_YENDOR) {
|
if (otmp->otyp == AMULET_OF_YENDOR) {
|
||||||
if (!highaltar) {
|
if (!highaltar) {
|
||||||
too_soon:
|
too_soon:
|
||||||
if (altaralign == A_NONE && Inhell)
|
if (altaralign == A_NONE && Inhell)
|
||||||
/* hero has left Moloch's Sanctum so is in the process
|
/* hero has left Moloch's Sanctum so is in the process
|
||||||
of getting away with the Amulet (outside of Gehennom,
|
of getting away with the Amulet (outside of Gehennom,
|
||||||
@@ -1584,7 +1585,7 @@ dosacrifice()
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (altaralign != u.ualign.type && highaltar) {
|
if (altaralign != u.ualign.type && highaltar) {
|
||||||
desecrate_high_altar:
|
desecrate_high_altar:
|
||||||
/*
|
/*
|
||||||
* REAL BAD NEWS!!! High altars cannot be converted. Even an attempt
|
* REAL BAD NEWS!!! High altars cannot be converted. Even an attempt
|
||||||
* gets the god who owns it truly pissed off.
|
* gets the god who owns it truly pissed off.
|
||||||
|
|||||||
Reference in New Issue
Block a user