From: Pasi Kallinen Date: Sat, 8 Feb 2020 21:38:06 +0000 (+0200) Subject: Unify revealing hiding monsters for mvm attacks X-Git-Tag: NetHack-3.7.0_WIP-2020-02-14~39^2~1 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1e915a9a52bd56c892fc27d68c4d33f512b2bab2;p=nethack Unify revealing hiding monsters for mvm attacks Whether the monster-vs-monster hits or misses, hiders are revealed the same way. Unify that part of the code. Use git show --patience to have a better view of the changes. --- diff --git a/src/mhitm.c b/src/mhitm.c index ba19dc957..65f23c82a 100644 --- a/src/mhitm.c +++ b/src/mhitm.c @@ -22,6 +22,7 @@ static int FDECL(mdamagem, (struct monst *, struct monst *, static void FDECL(mswingsm, (struct monst *, struct monst *, struct obj *)); static void FDECL(noises, (struct monst *, struct attack *)); +static void FDECL(pre_mm_attack, (struct monst *, struct monst *)); static void FDECL(missmm, (struct monst *, struct monst *, struct attack *)); static int FDECL(passivemm, (struct monst *, struct monst *, @@ -44,14 +45,10 @@ register struct attack *mattk; } } -static -void -missmm(magr, mdef, mattk) -register struct monst *magr, *mdef; -struct attack *mattk; +static void +pre_mm_attack(magr, mdef) +struct monst *magr, *mdef; { - const char *fmt; - char buf[BUFSZ]; boolean showit = FALSE; /* unhiding or unmimicking happens even if hero can't see it @@ -80,7 +77,21 @@ struct attack *mattk; map_invisible(mdef->mx, mdef->my); else if (showit) newsym(mdef->mx, mdef->my); + } +} + +static +void +missmm(magr, mdef, mattk) +register struct monst *magr, *mdef; +struct attack *mattk; +{ + const char *fmt; + char buf[BUFSZ]; + + pre_mm_attack(magr, mdef); + if (g.vis) { fmt = (could_seduce(magr, mdef, mattk) && !magr->mcan) ? "%s pretends to be friendly to" : "%s misses"; @@ -530,39 +541,14 @@ struct attack *mattk; boolean weaponhit = ((mattk->aatyp == AT_WEAP || (mattk->aatyp == AT_CLAW && g.otmp))), silverhit = (weaponhit && g.otmp - && objects[g.otmp->otyp].oc_material == SILVER), - showit = FALSE; + && objects[g.otmp->otyp].oc_material == SILVER); - /* unhiding or unmimicking happens even if hero can't see it - because the formerly concealed monster is now in action */ - if (M_AP_TYPE(mdef)) { - seemimic(mdef); - showit |= g.vis; - } else if (mdef->mundetected) { - mdef->mundetected = 0; - showit |= g.vis; - } - if (M_AP_TYPE(magr)) { - seemimic(magr); - showit |= g.vis; - } else if (magr->mundetected) { - magr->mundetected = 0; - showit |= g.vis; - } + pre_mm_attack(magr, mdef); if (g.vis) { int compat; char buf[BUFSZ]; - if (!canspotmon(magr)) - map_invisible(magr->mx, magr->my); - else if (showit) - newsym(magr->mx, magr->my); - if (!canspotmon(mdef)) - map_invisible(mdef->mx, mdef->my); - else if (showit) - newsym(mdef->mx, mdef->my); - if ((compat = could_seduce(magr, mdef, mattk)) && !magr->mcan) { Sprintf(buf, "%s %s", Monnam(magr), mdef->mcansee ? "smiles at" : "talks to");