]> granicus.if.org Git - nethack/commitdiff
Remove the `victim` argument to `rust_dmg()`.
authorSean Hunt <scshunt@csclub.uwaterloo.ca>
Mon, 23 Feb 2015 20:08:30 +0000 (15:08 -0500)
committerPasi Kallinen <paxed@alt.org>
Tue, 17 Mar 2015 16:46:58 +0000 (18:46 +0200)
The argument can be calculated from `otmp`.

include/extern.h
src/dokick.c
src/mhitu.c
src/sit.c
src/trap.c
src/uhitm.c

index 0f7fb0d3ffaa3a61236b991d79087e2aa26405eb..120f7d506286fc485c5650807a39e66e6f1c6e7a 100644 (file)
@@ -2203,7 +2203,7 @@ E coord *FDECL(gettrack, (int,int));
 /* ### trap.c ### */
 
 E boolean FDECL(burnarmor,(struct monst *));
-E boolean FDECL(rust_dmg, (struct obj *,const char *,int,BOOLEAN_P,struct monst *));
+E boolean FDECL(rust_dmg, (struct obj *,const char *,int,BOOLEAN_P));
 E void FDECL(grease_protect, (struct obj *,const char *,struct monst *));
 E struct trap *FDECL(maketrap, (int,int,int));
 E void FDECL(fall_through, (BOOLEAN_P));
index b17379e076099cb9f3b29b59e38fd207de8ed366..06ff075e6f048c4be2a8ee9ab2cf0872a2a113fd 100644 (file)
@@ -983,7 +983,7 @@ dokick()
                    if(!rn2(3)) goto ouch;
                    /* make metal boots rust */
                    if(uarmf && rn2(3))
-                       if (!rust_dmg(uarmf, "metal boots", 1, FALSE, &youmonst)) {
+                       if (!rust_dmg(uarmf, "metal boots", 1, FALSE)) {
                                Your("boots get wet.");
                                /* could cause short-lived fumbling here */
                        }
index 6f298ff6310ba742e843407f08dd60cd61b2a4bf..416edaa5be3572c2529a7c2efe631af9afeada56 100644 (file)
@@ -740,12 +740,12 @@ int attk;
        while (1) {
            switch(rn2(5)) {
            case 0:
-               if (!uarmh || !rust_dmg(uarmh, xname(uarmh), hurt, FALSE, &youmonst))
+               if (!uarmh || !rust_dmg(uarmh, xname(uarmh), hurt, FALSE))
                        continue;
                break;
            case 1:
                if (uarmc) {
-                   (void)rust_dmg(uarmc, xname(uarmc), hurt, TRUE, &youmonst);
+                   (void)rust_dmg(uarmc, xname(uarmc), hurt, TRUE);
                    break;
                }
                /* Note the difference between break and continue;
@@ -754,20 +754,20 @@ int attk;
                 * something else did.
                 */
                if (uarm)
-                   (void)rust_dmg(uarm, xname(uarm), hurt, TRUE, &youmonst);
+                   (void)rust_dmg(uarm, xname(uarm), hurt, TRUE);
                else if (uarmu)
-                   (void)rust_dmg(uarmu, xname(uarmu), hurt, TRUE, &youmonst);
+                   (void)rust_dmg(uarmu, xname(uarmu), hurt, TRUE);
                break;
            case 2:
-               if (!uarms || !rust_dmg(uarms, xname(uarms), hurt, FALSE, &youmonst))
+               if (!uarms || !rust_dmg(uarms, xname(uarms), hurt, FALSE))
                    continue;
                break;
            case 3:
-               if (!uarmg || !rust_dmg(uarmg, xname(uarmg), hurt, FALSE, &youmonst))
+               if (!uarmg || !rust_dmg(uarmg, xname(uarmg), hurt, FALSE))
                    continue;
                break;
            case 4:
-               if (!uarmf || !rust_dmg(uarmf, xname(uarmf), hurt, FALSE, &youmonst))
+               if (!uarmf || !rust_dmg(uarmf, xname(uarmf), hurt, FALSE))
                    continue;
                break;
            }
index aa3a16605411e2bc53601146ff2ef9a7e39ed146..e5e77aa42528bbcc33afda49afccb076b02650fa 100644 (file)
--- a/src/sit.c
+++ b/src/sit.c
@@ -113,9 +113,9 @@ dosit()
  in_water:
            You("sit in the water.");
            if (!rn2(10) && uarm)
-               (void) rust_dmg(uarm, "armor", 1, TRUE, &youmonst);
+               (void) rust_dmg(uarm, "armor", 1, TRUE);
            if (!rn2(10) && uarmf && uarmf->otyp != WATER_WALKING_BOOTS)
-               (void) rust_dmg(uarm, "armor", 1, TRUE, &youmonst);
+               (void) rust_dmg(uarm, "armor", 1, TRUE);
        } else if(IS_SINK(typ)) {
            You(sit_message, defsyms[S_sink].explanation);
            Your("%s gets wet.", humanoid(youmonst.data) ? "rump" : "underside");
index 6365987899c82dbedc2c4ed49c03f65ab9389c16..d819724a5c89c6f78292f218d50b5577d8104fc1 100644 (file)
@@ -55,7 +55,7 @@ struct monst *victim;
     int mat_idx;
     
     if (!victim) return 0;
-#define burn_dmg(obj,descr) rust_dmg(obj, descr, 0, FALSE, victim)
+#define burn_dmg(obj,descr) rust_dmg(obj, descr, 0, FALSE)
     while (1) {
        switch (rn2(5)) {
        case 0:
@@ -107,20 +107,21 @@ struct monst *victim;
  * returned only for rustable items.
  */
 boolean
-rust_dmg(otmp, ostr, type, print, victim)
+rust_dmg(otmp, ostr, type, print)
 register struct obj *otmp;
 register const char *ostr;
 int type;
 boolean print;
-struct monst *victim;
 {
        static NEARDATA const char * const action[] = { "smoulder", "rust", "rot", "corrode" };
        static NEARDATA const char * const msg[] =  { "burnt", "rusted", "rotten", "corroded" };
        boolean vulnerable = FALSE;
        boolean grprot = FALSE;
        boolean is_primary = TRUE;
-       boolean vismon = (victim != &youmonst) && canseemon(victim);
        int erosion;
+        struct monst *victim =
+            carried(otmp) ? &youmonst : mcarried(otmp) ? otmp->ocarry : NULL;
+       boolean vismon = (victim != &youmonst) && canseemon(victim);
 
        if (!otmp) return(FALSE);
        switch(type) {
@@ -920,17 +921,17 @@ unsigned trflags;
                        pline("%s you on the %s!", A_gush_of_water_hits,
                                    body_part(HEAD));
                        (void) rust_dmg(uarmh, helm_simple_name(uarmh),
-                                       1, TRUE, &youmonst);
+                                       1, TRUE);
                        break;
                    case 1:
                        pline("%s your left %s!", A_gush_of_water_hits,
                                    body_part(ARM));
-                       if (rust_dmg(uarms, "shield", 1, TRUE, &youmonst))
+                       if (rust_dmg(uarms, "shield", 1, TRUE))
                            break;
                        if (u.twoweap || (uwep && bimanual(uwep)))
                            (void) erode_obj(u.twoweap ? uswapwep : uwep,
                                             1, TRUE, FALSE);
-glovecheck:            (void) rust_dmg(uarmg, "gauntlets", 1, TRUE, &youmonst);
+glovecheck:            (void) rust_dmg(uarmg, "gauntlets", 1, TRUE);
                        /* Not "metal gauntlets" since it gets called
                         * even if it's leather for the message
                         */
@@ -948,11 +949,11 @@ glovecheck:               (void) rust_dmg(uarmg, "gauntlets", 1, TRUE, &youmonst);
                                (void) snuff_lit(otmp);
                        if (uarmc)
                            (void) rust_dmg(uarmc, cloak_simple_name(uarmc),
-                                               1, TRUE, &youmonst);
+                                               1, TRUE);
                        else if (uarm)
-                           (void) rust_dmg(uarm, "armor", 1, TRUE, &youmonst);
+                           (void) rust_dmg(uarm, "armor", 1, TRUE);
                        else if (uarmu)
-                           (void) rust_dmg(uarmu, "shirt", 1, TRUE, &youmonst);
+                           (void) rust_dmg(uarmu, "shirt", 1, TRUE);
                }
                update_inventory();
                break;
@@ -2051,20 +2052,20 @@ register struct monst *mtmp;
                                    mon_nam(mtmp), mbodypart(mtmp, HEAD));
                            target = which_armor(mtmp, W_ARMH);
                            (void) rust_dmg(target, helm_simple_name(target),
-                                           1, TRUE, mtmp);
+                                           1, TRUE);
                            break;
                        case 1:
                            if (in_sight)
                                pline("%s %s's left %s!", A_gush_of_water_hits,
                                    mon_nam(mtmp), mbodypart(mtmp, ARM));
                            target = which_armor(mtmp, W_ARMS);
-                           if (rust_dmg(target, "shield", 1, TRUE, mtmp))
+                           if (rust_dmg(target, "shield", 1, TRUE))
                                break;
                            target = MON_WEP(mtmp);
                            if (target && bimanual(target))
                                (void) erode_obj(target, 1, TRUE, FALSE);
 glovecheck:                target = which_armor(mtmp, W_ARMG);
-                           (void) rust_dmg(target, "gauntlets", 1, TRUE, mtmp);
+                           (void) rust_dmg(target, "gauntlets", 1, TRUE);
                            break;
                        case 2:
                            if (in_sight)
@@ -2083,11 +2084,11 @@ glovecheck:                 target = which_armor(mtmp, W_ARMG);
                            if ((target = which_armor(mtmp, W_ARMC)) != 0)
                                (void) rust_dmg(target,
                                                cloak_simple_name(target),
-                                               1, TRUE, mtmp);
+                                               1, TRUE);
                            else if ((target = which_armor(mtmp, W_ARM)) != 0)
-                               (void) rust_dmg(target, "armor", 1, TRUE, mtmp);
+                               (void) rust_dmg(target, "armor", 1, TRUE);
                            else if ((target = which_armor(mtmp, W_ARMU)) != 0)
-                               (void) rust_dmg(target, "shirt", 1, TRUE, mtmp);
+                               (void) rust_dmg(target, "shirt", 1, TRUE);
                        }
 
                        if (mptr == &mons[PM_IRON_GOLEM]) {
index bbb3a7fb49366d04315b6338a859849e55a4d456..1ccb8a2cb9f53e4c501ff1e2b63f178f992062e7 100644 (file)
@@ -56,34 +56,34 @@ int attk;
            switch(rn2(5)) {
            case 0:
                target = which_armor(mdef, W_ARMH);
-               if (!target || !rust_dmg(target, xname(target), hurt, FALSE, mdef))
+               if (!target || !rust_dmg(target, xname(target), hurt, FALSE))
                    continue;
                break;
            case 1:
                target = which_armor(mdef, W_ARMC);
                if (target) {
-                   (void)rust_dmg(target, xname(target), hurt, TRUE, mdef);
+                   (void)rust_dmg(target, xname(target), hurt, TRUE);
                    break;
                }
                if ((target = which_armor(mdef, W_ARM)) != (struct obj *)0) {
-                   (void)rust_dmg(target, xname(target), hurt, TRUE, mdef);
+                   (void)rust_dmg(target, xname(target), hurt, TRUE);
                } else if ((target = which_armor(mdef, W_ARMU)) != (struct obj *)0) {
-                   (void)rust_dmg(target, xname(target), hurt, TRUE, mdef);
+                   (void)rust_dmg(target, xname(target), hurt, TRUE);
                }
                break;
            case 2:
                target = which_armor(mdef, W_ARMS);
-               if (!target || !rust_dmg(target, xname(target), hurt, FALSE, mdef))
+               if (!target || !rust_dmg(target, xname(target), hurt, FALSE))
                    continue;
                break;
            case 3:
                target = which_armor(mdef, W_ARMG);
-               if (!target || !rust_dmg(target, xname(target), hurt, FALSE, mdef))
+               if (!target || !rust_dmg(target, xname(target), hurt, FALSE))
                    continue;
                break;
            case 4:
                target = which_armor(mdef, W_ARMF);
-               if (!target || !rust_dmg(target, xname(target), hurt, FALSE, mdef))
+               if (!target || !rust_dmg(target, xname(target), hurt, FALSE))
                    continue;
                break;
            }
@@ -2231,7 +2231,7 @@ boolean wep_was_destroyed;
            if(mhit && !mon->mcan) {
                if (aatyp == AT_KICK) {
                    if (uarmf && !rn2(6))
-                       (void)rust_dmg(uarmf, xname(uarmf), 0, TRUE, &youmonst);
+                       (void)rust_dmg(uarmf, xname(uarmf), 0, TRUE);
                } else if (aatyp == AT_WEAP || aatyp == AT_CLAW ||
                           aatyp == AT_MAGC || aatyp == AT_TUCH)
                    passive_obj(mon, (struct obj*)0, &(ptr->mattk[i]));
@@ -2251,7 +2251,7 @@ boolean wep_was_destroyed;
            if (mhit) {
                if (aatyp == AT_KICK) {
                    if (uarmf && !rn2(6))
-                       (void)rust_dmg(uarmf, xname(uarmf), 3, TRUE, &youmonst);
+                       (void)rust_dmg(uarmf, xname(uarmf), 3, TRUE);
                } else if (aatyp == AT_WEAP || aatyp == AT_CLAW ||
                           aatyp == AT_MAGC || aatyp == AT_TUCH)
                    passive_obj(mon, (struct obj*)0, &(ptr->mattk[i]));
@@ -2284,7 +2284,7 @@ boolean wep_was_destroyed;
            if(mhit && !mon->mcan) {
                if (aatyp == AT_KICK) {
                    if (uarmf)
-                       (void)rust_dmg(uarmf, xname(uarmf), 1, TRUE, &youmonst);
+                       (void)rust_dmg(uarmf, xname(uarmf), 1, TRUE);
                } else if (aatyp == AT_WEAP || aatyp == AT_CLAW ||
                           aatyp == AT_MAGC || aatyp == AT_TUCH)
                    passive_obj(mon, (struct obj*)0, &(ptr->mattk[i]));
@@ -2294,7 +2294,7 @@ boolean wep_was_destroyed;
            if(mhit && !mon->mcan) {
                if (aatyp == AT_KICK) {
                    if (uarmf)
-                       (void)rust_dmg(uarmf, xname(uarmf), 3, TRUE, &youmonst);
+                       (void)rust_dmg(uarmf, xname(uarmf), 3, TRUE);
                } else if (aatyp == AT_WEAP || aatyp == AT_CLAW ||
                           aatyp == AT_MAGC || aatyp == AT_TUCH)
                    passive_obj(mon, (struct obj*)0, &(ptr->mattk[i]));