/* dungeon levels */
#define WALLIFIED_MAZE /* Fancy mazes - Jean-Christophe Collet */
/* monsters & objects */
-#define SEDUCE /* Succubi/incubi seduction, by KAA, suggested by IM */
/* I/O */
#define REDO /* support for redoing last command - DGK */
#if !defined(MAC)
E int FDECL(gazemu, (struct monst *,struct attack *));
E void FDECL(mdamageu, (struct monst *,int));
E int FDECL(could_seduce, (struct monst *,struct monst *,struct attack *));
-#ifdef SEDUCE
E int FDECL(doseduce, (struct monst *));
-#endif
/* ### minion.c ### */
#define AD_DISE 33 /* confers diseases */
#define AD_DCAY 34 /* decays organics (brown Pudding) */
#define AD_SSEX 35 /* Succubus seduction (extended) */
- /* If no SEDUCE then same as AD_SEDU */
#define AD_HALU 36 /* causes hallucination */
#define AD_DETH 37 /* for Death only */
#define AD_PEST 38 /* for Pestilence only */
};
E struct sysopt sysopt;
-#ifdef SEDUCE
-# define SYSOPT_SEDUCE sysopt.seduce
-#else
-# define SYSOPT_SEDUCE 0
-#endif
+#define SYSOPT_SEDUCE sysopt.seduce
#endif /* SYS_H */
/* Automatic kill if drained past level 0 */
}
break;
-#ifdef SEDUCE
case AD_SSEX:
-#endif
case AD_SITM: /* for now these are the same */
case AD_SEDU:
if (magr->mcan) break;
STATIC_DCL boolean FDECL(u_slip_free, (struct monst *,struct attack *));
STATIC_DCL int FDECL(passiveum, (struct permonst *,struct monst *,struct attack *));
-#ifdef SEDUCE
STATIC_DCL void FDECL(mayberem, (struct obj *, const char *));
-#endif
STATIC_DCL boolean FDECL(diseasemu, (struct permonst *));
STATIC_DCL int FDECL(hitmu, (struct monst *,struct attack *));
if(!mtmp->mcan) stealgold(mtmp);
break;
-#ifdef SEDUCE
case AD_SSEX:
if(SYSOPT_SEDUCE){
if(could_seduce(mtmp, &youmonst, mattk) == 1
break;
}
/* else FALLTHRU */
-#endif
case AD_SITM: /* for now these are the same */
case AD_SEDU:
if (is_animal(mtmp->data)) {
if (mtmp->mcan) break;
/* Continue below */
} else if (dmgtype(youmonst.data, AD_SEDU)
-#ifdef SEDUCE
- || (SYSOPT_SEDUCE && dmgtype(youmonst.data, AD_SSEX))
-#endif
- ) {
+ || (SYSOPT_SEDUCE && dmgtype(youmonst.data, AD_SSEX))) {
pline("%s %s.", Monnam(mtmp), mtmp->minvent ?
"brags about the goods some dungeon explorer provided" :
"makes some remarks about how difficult theft is lately");
gendef = gender(mdef);
}
- if(agrinvis && !defperc
-#ifdef SEDUCE
- && (!SYSOPT_SEDUCE || ( mattk && mattk->adtyp != AD_SSEX))
-#endif
- )
+ if(agrinvis && !defperc &&
+ (!SYSOPT_SEDUCE || ( mattk && mattk->adtyp != AD_SSEX)))
return 0;
if(pagr->mlet != S_NYMPH
&& ((pagr != &mons[PM_INCUBUS] && pagr != &mons[PM_SUCCUBUS])
-#ifdef SEDUCE
- || (SYSOPT_SEDUCE && mattk && mattk->adtyp != AD_SSEX)
-#endif
- ))
+ || (SYSOPT_SEDUCE && mattk && mattk->adtyp != AD_SSEX)))
return 0;
if(genagr == 1 - gendef)
return (pagr->mlet == S_NYMPH) ? 2 : 0;
}
-#ifdef SEDUCE
/* Returns 1 if monster teleported */
int
doseduce(mon)
}
remove_worn_item(obj, TRUE);
}
-#endif /* SEDUCE */
STATIC_OVL int
passiveum(olduasmon,mtmp,mattk)
#define SEDUCTION_ATTACKS_NO \
A(ATTK(AT_CLAW, AD_PHYS, 1, 3), ATTK(AT_CLAW, AD_PHYS, 1, 3), \
ATTK(AT_BITE, AD_DRLI, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK)
-#ifdef SEDUCE
-# define SEDUCTION_ATTACKS SEDUCTION_ATTACKS_YES
-#else
-# define SEDUCTION_ATTACKS SEDUCTION_ATTACKS_NO
-#endif
MON("succubus", S_DEMON,
LVL(6, 12, 0, 70, -9), (G_NOCORPSE|1),
- SEDUCTION_ATTACKS,
+ SEDUCTION_ATTACKS_YES,
SIZ(WT_HUMAN, 400, MS_SEDUCE, MZ_HUMAN), MR_FIRE|MR_POISON, 0,
M1_HUMANOID|M1_FLY|M1_POIS,
M2_DEMON|M2_STALK|M2_HOSTILE|M2_NASTY|M2_FEMALE,
CLR_BROWN),
MON("incubus", S_DEMON,
LVL(6, 12, 0, 70, -9), (G_NOCORPSE|1),
- SEDUCTION_ATTACKS,
+ SEDUCTION_ATTACKS_YES,
SIZ(WT_HUMAN, 400, MS_SEDUCE, MZ_HUMAN), MR_FIRE|MR_POISON, 0,
M1_HUMANOID|M1_FLY|M1_POIS,
M2_DEMON|M2_STALK|M2_HOSTILE|M2_NASTY|M2_MALE,
M3_INFRAVISIBLE|M3_INFRAVISION, CLR_GRAY),
-#undef SEDUCTION_ATTACKS
/* Used by AD&D for a type of demon, originally one of the Furies */
/* and spelled this way */
MON("erinys", S_DEMON,
case MS_SEDUCE:
{
int swval;
-#ifdef SEDUCE
if (SYSOPT_SEDUCE) {
if (ptr->mlet != S_NYMPH &&
could_seduce(mtmp, &youmonst, (struct attack *)0) == 1) {
}
swval = ((poly_gender() != (int) mtmp->female) ? rn2(3) : 0);
} else
-#endif
swval = ((poly_gender() == 0) ? rn2(3) : 0);
switch(swval){
case 2:
# endif
#endif
-#ifdef SEDUCE
sysopt.seduce = 1; /* if it's compiled in, default to on */
sysopt_seduce_set(sysopt.seduce);
-#endif
}
minstapetrify(mdef, TRUE);
tmp = 0;
break;
-#ifdef SEDUCE
case AD_SSEX:
-#endif
case AD_SEDU:
case AD_SITM:
steal_it(mdef, mattk);
/* most cancelled monsters return to normal,
but some need to stay cancelled */
if (!dmgtype(mtmp2->data, AD_SEDU)
-#ifdef SEDUCE
&& (!SYSOPT_SEDUCE || !dmgtype(mtmp2->data, AD_SSEX))
-#endif
) mtmp2->mcan = 0;
mtmp2->mcansee = 1; /* set like in makemon */
mtmp2->mblinded = 0;
# endif
# endif
#endif
-#ifdef SEDUCE
- "seduction",
-#endif
#ifdef SHELL
"shell command",
#endif