Make SEDUCE unconditional.
This commit is contained in:
@@ -417,7 +417,6 @@ typedef unsigned char uchar;
|
||||
/* 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)
|
||||
|
||||
@@ -1112,9 +1112,7 @@ E boolean NDECL(gulp_blnd_check);
|
||||
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 ### */
|
||||
|
||||
|
||||
@@ -72,7 +72,6 @@
|
||||
#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 */
|
||||
|
||||
@@ -35,11 +35,7 @@ struct sysopt {
|
||||
};
|
||||
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 */
|
||||
|
||||
|
||||
@@ -1083,9 +1083,7 @@ mdamagem(magr, mdef, mattk)
|
||||
/* 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;
|
||||
|
||||
23
src/mhitu.c
23
src/mhitu.c
@@ -12,9 +12,7 @@ STATIC_DCL void FDECL(urustm, (struct monst *, struct obj *));
|
||||
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 *));
|
||||
@@ -1256,7 +1254,6 @@ dopois:
|
||||
if(!mtmp->mcan) stealgold(mtmp);
|
||||
break;
|
||||
|
||||
#ifdef SEDUCE
|
||||
case AD_SSEX:
|
||||
if(SYSOPT_SEDUCE){
|
||||
if(could_seduce(mtmp, &youmonst, mattk) == 1
|
||||
@@ -1266,7 +1263,6 @@ dopois:
|
||||
break;
|
||||
}
|
||||
/* else FALLTHRU */
|
||||
#endif
|
||||
case AD_SITM: /* for now these are the same */
|
||||
case AD_SEDU:
|
||||
if (is_animal(mtmp->data)) {
|
||||
@@ -1274,10 +1270,7 @@ dopois:
|
||||
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");
|
||||
@@ -2198,19 +2191,13 @@ struct attack *mattk;
|
||||
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)
|
||||
@@ -2219,7 +2206,6 @@ struct attack *mattk;
|
||||
return (pagr->mlet == S_NYMPH) ? 2 : 0;
|
||||
}
|
||||
|
||||
#ifdef SEDUCE
|
||||
/* Returns 1 if monster teleported */
|
||||
int
|
||||
doseduce(mon)
|
||||
@@ -2485,7 +2471,6 @@ const char *str;
|
||||
}
|
||||
remove_worn_item(obj, TRUE);
|
||||
}
|
||||
#endif /* SEDUCE */
|
||||
|
||||
STATIC_OVL int
|
||||
passiveum(olduasmon,mtmp,mattk)
|
||||
|
||||
10
src/monst.c
10
src/monst.c
@@ -2554,14 +2554,9 @@ struct permonst _mons2[] = {
|
||||
#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,
|
||||
@@ -2577,12 +2572,11 @@ struct permonst _mons2[] = {
|
||||
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,
|
||||
|
||||
@@ -807,7 +807,6 @@ register struct monst *mtmp;
|
||||
case MS_SEDUCE:
|
||||
{
|
||||
int swval;
|
||||
#ifdef SEDUCE
|
||||
if (SYSOPT_SEDUCE) {
|
||||
if (ptr->mlet != S_NYMPH &&
|
||||
could_seduce(mtmp, &youmonst, (struct attack *)0) == 1) {
|
||||
@@ -816,7 +815,6 @@ register struct monst *mtmp;
|
||||
}
|
||||
swval = ((poly_gender() != (int) mtmp->female) ? rn2(3) : 0);
|
||||
} else
|
||||
#endif
|
||||
swval = ((poly_gender() == 0) ? rn2(3) : 0);
|
||||
switch(swval){
|
||||
case 2:
|
||||
|
||||
@@ -54,10 +54,8 @@ sys_early_init(){
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef SEDUCE
|
||||
sysopt.seduce = 1; /* if it's compiled in, default to on */
|
||||
sysopt_seduce_set(sysopt.seduce);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1452,9 +1452,7 @@ register struct attack *mattk;
|
||||
minstapetrify(mdef, TRUE);
|
||||
tmp = 0;
|
||||
break;
|
||||
#ifdef SEDUCE
|
||||
case AD_SSEX:
|
||||
#endif
|
||||
case AD_SEDU:
|
||||
case AD_SITM:
|
||||
steal_it(mdef, mattk);
|
||||
|
||||
@@ -584,9 +584,7 @@ coord *cc;
|
||||
/* 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;
|
||||
|
||||
@@ -1298,9 +1298,6 @@ static const char *build_opts[] = {
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
#ifdef SEDUCE
|
||||
"seduction",
|
||||
#endif
|
||||
#ifdef SHELL
|
||||
"shell command",
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user