invisible pets

Invisible pet fix for the recently reported bug, as well as another one found
in the process.
This commit is contained in:
arromdee
2003-03-10 04:13:05 +00:00
parent 956c9727b0
commit 6cbff0150f
3 changed files with 12 additions and 2 deletions

View File

@@ -11,6 +11,10 @@ expert fireball/cone of cold could not target a monster seen only with
infravision or ESP infravision or ESP
display "lotus juice", not "lotu juice" for the fruit juice name 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 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 Platform- and/or Interface-Specific Fixes

View File

@@ -157,8 +157,10 @@ boolean devour;
/* TODO: Reveal presence of sea monster (especially sharks) */ /* TODO: Reveal presence of sea monster (especially sharks) */
} else } else
/* hack: observe the action if either new or old location is in view */ /* 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)) 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", devour ? "devours" : "eats",
(obj->oclass == FOOD_CLASS) ? (obj->oclass == FOOD_CLASS) ?
singular(obj, doname) : doname(obj)); singular(obj, doname) : doname(obj));

View File

@@ -78,6 +78,8 @@ missmm(magr, mdef, mattk)
char buf[BUFSZ], mdef_name[BUFSZ]; char buf[BUFSZ], mdef_name[BUFSZ];
if (vis) { if (vis) {
if (!canspotmon(magr))
map_invisible(magr->mx, magr->my);
if (!canspotmon(mdef)) if (!canspotmon(mdef))
map_invisible(mdef->mx, mdef->my); map_invisible(mdef->mx, mdef->my);
if (mdef->m_ap_type) seemimic(mdef); if (mdef->m_ap_type) seemimic(mdef);
@@ -221,7 +223,7 @@ mattackm(magr, mdef)
/* Set up the visibility of action */ /* 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 /* 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 * monster might get an attack out of sequence (i.e. before its move) in
@@ -371,6 +373,8 @@ hitmm(magr, mdef, mattk)
int compat; int compat;
char buf[BUFSZ], mdef_name[BUFSZ]; char buf[BUFSZ], mdef_name[BUFSZ];
if (!canspotmon(magr))
map_invisible(magr->mx, magr->my);
if (!canspotmon(mdef)) if (!canspotmon(mdef))
map_invisible(mdef->mx, mdef->my); map_invisible(mdef->mx, mdef->my);
if(mdef->m_ap_type) seemimic(mdef); if(mdef->m_ap_type) seemimic(mdef);