Make SEDUCE unconditional.

This commit is contained in:
Sean Hunt
2015-02-27 19:05:01 -05:00
parent 612852f7de
commit 6e9fa71b05
12 changed files with 7 additions and 49 deletions

View File

@@ -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)

View File

@@ -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 ### */

View File

@@ -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 */

View File

@@ -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 */

View File

@@ -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;

View File

@@ -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)

View File

@@ -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,

View File

@@ -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:

View File

@@ -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
}

View File

@@ -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);

View File

@@ -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;

View File

@@ -1298,9 +1298,6 @@ static const char *build_opts[] = {
# endif
# endif
#endif
#ifdef SEDUCE
"seduction",
#endif
#ifdef SHELL
"shell command",
#endif