]> granicus.if.org Git - nethack/commitdiff
invisible pets
authorarromdee <arromdee>
Mon, 10 Mar 2003 04:13:05 +0000 (04:13 +0000)
committerarromdee <arromdee>
Mon, 10 Mar 2003 04:13:05 +0000 (04:13 +0000)
Invisible pet fix for the recently reported bug, as well as another one found
in the process.

doc/fixes35.0
src/dogmove.c
src/mhitm.c

index 5444a94d77f031f7542f7722d99120016bb18d2a..50d7185a76d9ff304d220021562d7d242630964a 100644 (file)
@@ -11,6 +11,10 @@ expert fireball/cone of cold could not target a monster seen only with
        infravision or ESP
 display "lotus juice", not "lotu juice" for the fruit juice name
 statue of any golem hit with stone-to-flesh spell animates as flesh golem
+two invisible monsters hitting one another should not be visible
+if only one monster in a monster-vs-monster fight is visible, show an I symbol
+       for the other one whether it is an attacker or defender
+display "It" and not "The invisible <pet>" when an invisible pet eats food.
 
 
 Platform- and/or Interface-Specific Fixes
index 0317f7822c21514e4d20880968c00ad436af5609..e51b15ea2aa8e0ab621e0fe44d6514ecdf7046e1 100644 (file)
@@ -157,8 +157,10 @@ boolean devour;
            /* TODO: Reveal presence of sea monster (especially sharks) */
        } else
        /* hack: observe the action if either new or old location is in view */
+       /* However, invisible monsters should still be "it" even though out of
+          sight locations should not. */
        if (cansee(x, y) || cansee(mtmp->mx, mtmp->my))
-           pline("%s %s %s.", noit_Monnam(mtmp),
+           pline("%s %s %s.", mon_visible(mtmp) ? noit_Monnam(mtmp) : "It",
                  devour ? "devours" : "eats",
                  (obj->oclass == FOOD_CLASS) ?
                        singular(obj, doname) : doname(obj));
index f6c258064f858f8d50babb7bda0b3010f8730732..e3cbc66454482f6c1304b3907a87d4448f7a5ce5 100644 (file)
@@ -78,6 +78,8 @@ missmm(magr, mdef, mattk)
        char buf[BUFSZ], mdef_name[BUFSZ];
 
        if (vis) {
+               if (!canspotmon(magr))
+                   map_invisible(magr->mx, magr->my);
                if (!canspotmon(mdef))
                    map_invisible(mdef->mx, mdef->my);
                if (mdef->m_ap_type) seemimic(mdef);
@@ -221,7 +223,7 @@ mattackm(magr, mdef)
 
 
     /* Set up the visibility of action */
-    vis = (cansee(magr->mx,magr->my) && cansee(mdef->mx,mdef->my));
+    vis = (cansee(magr->mx,magr->my) && cansee(mdef->mx,mdef->my) && (canspotmon(magr) || canspotmon(mdef)));
 
     /* Set flag indicating monster has moved this turn.  Necessary since a
      * monster might get an attack out of sequence (i.e. before its move) in
@@ -371,6 +373,8 @@ hitmm(magr, mdef, mattk)
                int compat;
                char buf[BUFSZ], mdef_name[BUFSZ];
 
+               if (!canspotmon(magr))
+                   map_invisible(magr->mx, magr->my);
                if (!canspotmon(mdef))
                    map_invisible(mdef->mx, mdef->my);
                if(mdef->m_ap_type) seemimic(mdef);