Improve feedback for trying to bribe the watch

Members of the watch can never be bribed, no matter how much gold is
thrown at them, but when a bribe was attempted they would say "that's
not enough" (implying incorrectly some higher amount would be enough to
pacify them).  Also, an already-peaceful mercenary would take on an
unusually aggressive tone when given any amount of gold, giving the
player the same message to "beat it" as when a bribe succeeds in
pacifying them.

Adjust the mercenary bribery code a bit so that a more friendly message
is given if the monster is already peaceful, and so that unbribeable
monsters don't imply they are just not being given enough gold.  I think
the actual effects of bribery shouldn't be affected by this commit, just
the messages/feedback.
This commit is contained in:
Michael Meyer
2022-08-10 19:57:48 +03:00
committed by Pasi Kallinen
parent beb99c0e72
commit ddce73502e
+15 -9
View File
@@ -353,9 +353,9 @@ ghitm(register struct monst *mtmp, register struct obj *gold)
? "I'll take care of that; please move along." ? "I'll take care of that; please move along."
: "I'll take that; now get moving."); : "I'll take that; now get moving.");
} else if (is_mercenary(mtmp->data)) { } else if (is_mercenary(mtmp->data)) {
boolean was_angry = !mtmp->mpeaceful;
long goldreqd = 0L; long goldreqd = 0L;
if (rn2(3)) {
if (mtmp->data == &mons[PM_SOLDIER]) if (mtmp->data == &mons[PM_SOLDIER])
goldreqd = 100L; goldreqd = 100L;
else if (mtmp->data == &mons[PM_SERGEANT]) else if (mtmp->data == &mons[PM_SERGEANT])
@@ -365,18 +365,24 @@ ghitm(register struct monst *mtmp, register struct obj *gold)
else if (mtmp->data == &mons[PM_CAPTAIN]) else if (mtmp->data == &mons[PM_CAPTAIN])
goldreqd = 750L; goldreqd = 750L;
if (goldreqd) { if (goldreqd && rn2(3)) {
umoney = money_cnt(g.invent); umoney = money_cnt(g.invent);
if (value goldreqd += (umoney + u.ulevel * rn2(5)) / ACURR(A_CHA);
> goldreqd if (value > goldreqd)
+ (umoney + u.ulevel * rn2(5)) / ACURR(A_CHA))
mtmp->mpeaceful = TRUE; mtmp->mpeaceful = TRUE;
} }
}
if (mtmp->mpeaceful) if (!mtmp->mpeaceful) {
verbalize("That should do. Now beat it!"); if (goldreqd)
else
verbalize("That's not enough, coward!"); verbalize("That's not enough, coward!");
else /* unbribeable (watchman) */
verbalize("I don't take bribes from scum like you!");
} else if (was_angry) {
verbalize("That should do. Now beat it!");
} else {
verbalize("Thanks for the tip, %s.",
flags.female ? "lady" : "buddy");
}
} }
return TRUE; return TRUE;
} }