]> granicus.if.org Git - nethack/commitdiff
allow vengeance against nymphs except for specific case
authornethack.allison <nethack.allison>
Sun, 7 Apr 2002 13:42:18 +0000 (13:42 +0000)
committernethack.allison <nethack.allison>
Sun, 7 Apr 2002 13:42:18 +0000 (13:42 +0000)
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.

doc/fixes34.1
src/mhitu.c
src/steal.c

index 954c35fb259270c1e1a54bc5a6bc5a771826017d..e2b06391c2f5c6fe87f673231fc2d0e4e22cc571 100644 (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
        "you swing your pick-axe through thin air"
 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
index 8ac2262fab49da0b71830c33cca716def1b2ce8a..df9350aba2a2c9e33593bf68290cba3618618c25 100644 (file)
@@ -1236,11 +1236,6 @@ do_stone:
                        if (!is_animal(mtmp->data) && !tele_restrict(mtmp))
                            rloc(mtmp);
                        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))
                                pline("%s tries to %s away with %s.",
                                      Monnam(mtmp),
index 482699d7d310147893bb82b0da3630bcb0ae2bbf..9f5fed4a11920cc85bd49b439419d7997fb608c6 100644 (file)
@@ -51,6 +51,7 @@ register struct monst *mtmp;
                    Monnam(mtmp), makeplural(body_part(FOOT)));
            if(!u.ugold || !rn2(5)) {
                if (!tele_restrict(mtmp)) rloc(mtmp);
+               /* do not set mtmp->mavenge here; gold on the floor is fair game */
                monflee(mtmp, 0, FALSE, FALSE);
            }
        } else if(u.ugold) {
@@ -58,6 +59,7 @@ register struct monst *mtmp;
            Your("purse feels lighter.");
            mtmp->mgold += tmp;
        if (!tele_restrict(mtmp)) rloc(mtmp);
+           mtmp->mavenge = 1;
            monflee(mtmp, 0, FALSE, FALSE);
            flags.botl = 1;
        }
@@ -157,6 +159,8 @@ stealarm()
                        freeinv(otmp);
                        pline("%s steals %s!", Monnam(mtmp), doname(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);
                        if (!tele_restrict(mtmp)) rloc(mtmp);
                        break;
@@ -398,6 +402,10 @@ gotobj:
 
        /* do this before removing it from inventory */
        if (objnambuf) Strcpy(objnambuf, yname(otmp));
+       /* set mavenge bit so knights won't suffer an
+        * alignment penalty during retaliation;
+        */
+       mtmp->mavenge = 1;
 
        freeinv(otmp);
        pline("%s stole %s.", named ? "She" : Monnam(mtmp), doname(otmp));