fix #H7226 - vault guard should have whistle

Implement the suggestion that since teleporting away from the vault
while being confronted by the guard results in a shrill whistling
sound, the vault guard ought to have a tin whistle in his inventory.

I also added a check that he does have the whistle and to give an
alternate message if not, but after half a dozen tries to have a
squad of beefed up monkeys steal the whistle, they never accomplished
that.  At least three times they took everything except the whistle
but I never succeeded in verifying the alternate message.
This commit is contained in:
PatR
2018-06-15 16:24:02 -07:00
parent 3eb452ad94
commit f81818e85d
3 changed files with 20 additions and 5 deletions

View File

@@ -36,6 +36,8 @@ internals for 'sortloot' option have been changed to not reorder the actual
list of objects, so changing it to 'n'one will get the original order list of objects, so changing it to 'n'one will get the original order
back and having a persistent inventory window open when performing back and having a persistent inventory window open when performing
full-pack identify won't result in possibly skipping some items full-pack identify won't result in possibly skipping some items
give vault guards a cursed tin whistle since there is a shrill whistling
sound if hero teleports out of vault while being confronted by guard
Fixes to Post-3.6.1 Problems that Were Exposed Via git Repository Fixes to Post-3.6.1 Problems that Were Exposed Via git Repository

View File

@@ -653,16 +653,26 @@ register struct monst *mtmp;
nhUse(mac); /* suppress 'dead increment' from static analyzer */ nhUse(mac); /* suppress 'dead increment' from static analyzer */
if (ptr != &mons[PM_GUARD] && ptr != &mons[PM_WATCHMAN] if (ptr == &mons[PM_WATCH_CAPTAIN]) {
&& ptr != &mons[PM_WATCH_CAPTAIN]) { ; /* better weapon rather than extra gear here */
} else if (ptr == &mons[PM_WATCHMAN]) {
if (rn2(3)) /* most watchmen carry a whistle */
(void) mongets(mtmp, TIN_WHISTLE);
} else if (ptr == &mons[PM_GUARD]) {
/* if hero teleports out of a vault while being confronted
by the vault's guard, there is a shrill whistling sound,
so guard evidently carries a cursed whistle */
otmp = mksobj(TIN_WHISTLE, TRUE, FALSE);
curse(otmp);
(void) mpickobj(mtmp, otmp);
} else { /* soldiers and their officers */
if (!rn2(3)) if (!rn2(3))
(void) mongets(mtmp, K_RATION); (void) mongets(mtmp, K_RATION);
if (!rn2(2)) if (!rn2(2))
(void) mongets(mtmp, C_RATION); (void) mongets(mtmp, C_RATION);
if (ptr != &mons[PM_SOLDIER] && !rn2(3)) if (ptr != &mons[PM_SOLDIER] && !rn2(3))
(void) mongets(mtmp, BUGLE); (void) mongets(mtmp, BUGLE);
} else if (ptr == &mons[PM_WATCHMAN] && rn2(3)) }
(void) mongets(mtmp, TIN_WHISTLE);
} else if (ptr == &mons[PM_SHOPKEEPER]) { } else if (ptr == &mons[PM_SHOPKEEPER]) {
(void) mongets(mtmp, SKELETON_KEY); (void) mongets(mtmp, SKELETON_KEY);
switch (rn2(4)) { switch (rn2(4)) {

View File

@@ -665,7 +665,10 @@ register struct monst *grd;
grd->mpeaceful = 0; grd->mpeaceful = 0;
letknow: letknow:
if (!cansee(grd->mx, grd->my) || !mon_visible(grd)) if (!cansee(grd->mx, grd->my) || !mon_visible(grd))
You_hear("the shrill sound of a guard's whistle."); You_hear("%s.",
m_carrying(grd, TIN_WHISTLE)
? "the shrill sound of a guard's whistle"
: "angry shouting");
else else
You(um_dist(grd->mx, grd->my, 2) You(um_dist(grd->mx, grd->my, 2)
? "see %s approaching." ? "see %s approaching."