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 *,
}
}
-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
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";
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");