allow vengeance against nymphs except for specific case

From: "Ken Arromdee" :
> My point is that you should be allowed to take vengeance on thieving
> nymphs too.  The reasoning "a real knight wouldn't kill a nymph for stealing"
> doesn't make sense because the things a real knight would do instead (like
> arresting) aren't part of the game.

This is a compromise.  This doesn't allow vengeance when you were
told "you gladly hand over ...", but does for most other cases, and for
leprechauns.
This commit is contained in:
nethack.allison
2002-04-07 13:42:18 +00:00
parent 817bdf58e7
commit 7c386ab823
3 changed files with 9 additions and 5 deletions
+1
View File
@@ -62,6 +62,7 @@ assorted monsters can pass through iron bars; ditto for polymorphed character
attempting to dig iron bars will wake nearby monsters instead of yielding attempting to dig iron bars will wake nearby monsters instead of yielding
"you swing your pick-axe through thin air" "you swing your pick-axe through thin air"
autodig won't accept iron bars as candidate location autodig won't accept iron bars as candidate location
allow knight to retaliate for all thefts except those "you gladly hand over..."
Platform- and/or Interface-Specific Fixes Platform- and/or Interface-Specific Fixes
-5
View File
@@ -1236,11 +1236,6 @@ do_stone:
if (!is_animal(mtmp->data) && !tele_restrict(mtmp)) if (!is_animal(mtmp->data) && !tele_restrict(mtmp))
rloc(mtmp); rloc(mtmp);
if (is_animal(mtmp->data) && *buf) { if (is_animal(mtmp->data) && *buf) {
/* set mavenge bit for animals so knights won't
suffer an alignment penalty during retaliation;
note that only happens when the thief succeeds
in getting something (*buf != 0) */
mtmp->mavenge = 1;
if (canseemon(mtmp)) if (canseemon(mtmp))
pline("%s tries to %s away with %s.", pline("%s tries to %s away with %s.",
Monnam(mtmp), Monnam(mtmp),
+8
View File
@@ -51,6 +51,7 @@ register struct monst *mtmp;
Monnam(mtmp), makeplural(body_part(FOOT))); Monnam(mtmp), makeplural(body_part(FOOT)));
if(!u.ugold || !rn2(5)) { if(!u.ugold || !rn2(5)) {
if (!tele_restrict(mtmp)) rloc(mtmp); if (!tele_restrict(mtmp)) rloc(mtmp);
/* do not set mtmp->mavenge here; gold on the floor is fair game */
monflee(mtmp, 0, FALSE, FALSE); monflee(mtmp, 0, FALSE, FALSE);
} }
} else if(u.ugold) { } else if(u.ugold) {
@@ -58,6 +59,7 @@ register struct monst *mtmp;
Your("purse feels lighter."); Your("purse feels lighter.");
mtmp->mgold += tmp; mtmp->mgold += tmp;
if (!tele_restrict(mtmp)) rloc(mtmp); if (!tele_restrict(mtmp)) rloc(mtmp);
mtmp->mavenge = 1;
monflee(mtmp, 0, FALSE, FALSE); monflee(mtmp, 0, FALSE, FALSE);
flags.botl = 1; flags.botl = 1;
} }
@@ -157,6 +159,8 @@ stealarm()
freeinv(otmp); freeinv(otmp);
pline("%s steals %s!", Monnam(mtmp), doname(otmp)); pline("%s steals %s!", Monnam(mtmp), doname(otmp));
(void) mpickobj(mtmp,otmp); /* may free otmp */ (void) mpickobj(mtmp,otmp); /* may free otmp */
/* Implies seduction, "you gladly hand over ..."
so we don't set mavenge bit here. */
monflee(mtmp, 0, FALSE, FALSE); monflee(mtmp, 0, FALSE, FALSE);
if (!tele_restrict(mtmp)) rloc(mtmp); if (!tele_restrict(mtmp)) rloc(mtmp);
break; break;
@@ -398,6 +402,10 @@ gotobj:
/* do this before removing it from inventory */ /* do this before removing it from inventory */
if (objnambuf) Strcpy(objnambuf, yname(otmp)); if (objnambuf) Strcpy(objnambuf, yname(otmp));
/* set mavenge bit so knights won't suffer an
* alignment penalty during retaliation;
*/
mtmp->mavenge = 1;
freeinv(otmp); freeinv(otmp);
pline("%s stole %s.", named ? "She" : Monnam(mtmp), doname(otmp)); pline("%s stole %s.", named ? "She" : Monnam(mtmp), doname(otmp));