Make SEDUCE unconditional.
This commit is contained in:
@@ -417,7 +417,6 @@ typedef unsigned char uchar;
|
|||||||
/* dungeon levels */
|
/* dungeon levels */
|
||||||
#define WALLIFIED_MAZE /* Fancy mazes - Jean-Christophe Collet */
|
#define WALLIFIED_MAZE /* Fancy mazes - Jean-Christophe Collet */
|
||||||
/* monsters & objects */
|
/* monsters & objects */
|
||||||
#define SEDUCE /* Succubi/incubi seduction, by KAA, suggested by IM */
|
|
||||||
/* I/O */
|
/* I/O */
|
||||||
#define REDO /* support for redoing last command - DGK */
|
#define REDO /* support for redoing last command - DGK */
|
||||||
#if !defined(MAC)
|
#if !defined(MAC)
|
||||||
|
|||||||
@@ -1112,9 +1112,7 @@ E boolean NDECL(gulp_blnd_check);
|
|||||||
E int FDECL(gazemu, (struct monst *,struct attack *));
|
E int FDECL(gazemu, (struct monst *,struct attack *));
|
||||||
E void FDECL(mdamageu, (struct monst *,int));
|
E void FDECL(mdamageu, (struct monst *,int));
|
||||||
E int FDECL(could_seduce, (struct monst *,struct monst *,struct attack *));
|
E int FDECL(could_seduce, (struct monst *,struct monst *,struct attack *));
|
||||||
#ifdef SEDUCE
|
|
||||||
E int FDECL(doseduce, (struct monst *));
|
E int FDECL(doseduce, (struct monst *));
|
||||||
#endif
|
|
||||||
|
|
||||||
/* ### minion.c ### */
|
/* ### minion.c ### */
|
||||||
|
|
||||||
|
|||||||
@@ -72,7 +72,6 @@
|
|||||||
#define AD_DISE 33 /* confers diseases */
|
#define AD_DISE 33 /* confers diseases */
|
||||||
#define AD_DCAY 34 /* decays organics (brown Pudding) */
|
#define AD_DCAY 34 /* decays organics (brown Pudding) */
|
||||||
#define AD_SSEX 35 /* Succubus seduction (extended) */
|
#define AD_SSEX 35 /* Succubus seduction (extended) */
|
||||||
/* If no SEDUCE then same as AD_SEDU */
|
|
||||||
#define AD_HALU 36 /* causes hallucination */
|
#define AD_HALU 36 /* causes hallucination */
|
||||||
#define AD_DETH 37 /* for Death only */
|
#define AD_DETH 37 /* for Death only */
|
||||||
#define AD_PEST 38 /* for Pestilence only */
|
#define AD_PEST 38 /* for Pestilence only */
|
||||||
|
|||||||
+1
-5
@@ -35,11 +35,7 @@ struct sysopt {
|
|||||||
};
|
};
|
||||||
E struct sysopt sysopt;
|
E struct sysopt sysopt;
|
||||||
|
|
||||||
#ifdef SEDUCE
|
#define SYSOPT_SEDUCE sysopt.seduce
|
||||||
# define SYSOPT_SEDUCE sysopt.seduce
|
|
||||||
#else
|
|
||||||
# define SYSOPT_SEDUCE 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* SYS_H */
|
#endif /* SYS_H */
|
||||||
|
|
||||||
|
|||||||
@@ -1083,9 +1083,7 @@ mdamagem(magr, mdef, mattk)
|
|||||||
/* Automatic kill if drained past level 0 */
|
/* Automatic kill if drained past level 0 */
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
#ifdef SEDUCE
|
|
||||||
case AD_SSEX:
|
case AD_SSEX:
|
||||||
#endif
|
|
||||||
case AD_SITM: /* for now these are the same */
|
case AD_SITM: /* for now these are the same */
|
||||||
case AD_SEDU:
|
case AD_SEDU:
|
||||||
if (magr->mcan) break;
|
if (magr->mcan) break;
|
||||||
|
|||||||
+4
-19
@@ -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 boolean FDECL(u_slip_free, (struct monst *,struct attack *));
|
||||||
STATIC_DCL int FDECL(passiveum, (struct permonst *,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 *));
|
STATIC_DCL void FDECL(mayberem, (struct obj *, const char *));
|
||||||
#endif
|
|
||||||
|
|
||||||
STATIC_DCL boolean FDECL(diseasemu, (struct permonst *));
|
STATIC_DCL boolean FDECL(diseasemu, (struct permonst *));
|
||||||
STATIC_DCL int FDECL(hitmu, (struct monst *,struct attack *));
|
STATIC_DCL int FDECL(hitmu, (struct monst *,struct attack *));
|
||||||
@@ -1256,7 +1254,6 @@ dopois:
|
|||||||
if(!mtmp->mcan) stealgold(mtmp);
|
if(!mtmp->mcan) stealgold(mtmp);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
#ifdef SEDUCE
|
|
||||||
case AD_SSEX:
|
case AD_SSEX:
|
||||||
if(SYSOPT_SEDUCE){
|
if(SYSOPT_SEDUCE){
|
||||||
if(could_seduce(mtmp, &youmonst, mattk) == 1
|
if(could_seduce(mtmp, &youmonst, mattk) == 1
|
||||||
@@ -1266,7 +1263,6 @@ dopois:
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
/* else FALLTHRU */
|
/* else FALLTHRU */
|
||||||
#endif
|
|
||||||
case AD_SITM: /* for now these are the same */
|
case AD_SITM: /* for now these are the same */
|
||||||
case AD_SEDU:
|
case AD_SEDU:
|
||||||
if (is_animal(mtmp->data)) {
|
if (is_animal(mtmp->data)) {
|
||||||
@@ -1274,10 +1270,7 @@ dopois:
|
|||||||
if (mtmp->mcan) break;
|
if (mtmp->mcan) break;
|
||||||
/* Continue below */
|
/* Continue below */
|
||||||
} else if (dmgtype(youmonst.data, AD_SEDU)
|
} else if (dmgtype(youmonst.data, AD_SEDU)
|
||||||
#ifdef SEDUCE
|
|| (SYSOPT_SEDUCE && dmgtype(youmonst.data, AD_SSEX))) {
|
||||||
|| (SYSOPT_SEDUCE && dmgtype(youmonst.data, AD_SSEX))
|
|
||||||
#endif
|
|
||||||
) {
|
|
||||||
pline("%s %s.", Monnam(mtmp), mtmp->minvent ?
|
pline("%s %s.", Monnam(mtmp), mtmp->minvent ?
|
||||||
"brags about the goods some dungeon explorer provided" :
|
"brags about the goods some dungeon explorer provided" :
|
||||||
"makes some remarks about how difficult theft is lately");
|
"makes some remarks about how difficult theft is lately");
|
||||||
@@ -2198,19 +2191,13 @@ struct attack *mattk;
|
|||||||
gendef = gender(mdef);
|
gendef = gender(mdef);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(agrinvis && !defperc
|
if(agrinvis && !defperc &&
|
||||||
#ifdef SEDUCE
|
(!SYSOPT_SEDUCE || ( mattk && mattk->adtyp != AD_SSEX)))
|
||||||
&& (!SYSOPT_SEDUCE || ( mattk && mattk->adtyp != AD_SSEX))
|
|
||||||
#endif
|
|
||||||
)
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if(pagr->mlet != S_NYMPH
|
if(pagr->mlet != S_NYMPH
|
||||||
&& ((pagr != &mons[PM_INCUBUS] && pagr != &mons[PM_SUCCUBUS])
|
&& ((pagr != &mons[PM_INCUBUS] && pagr != &mons[PM_SUCCUBUS])
|
||||||
#ifdef SEDUCE
|
|| (SYSOPT_SEDUCE && mattk && mattk->adtyp != AD_SSEX)))
|
||||||
|| (SYSOPT_SEDUCE && mattk && mattk->adtyp != AD_SSEX)
|
|
||||||
#endif
|
|
||||||
))
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if(genagr == 1 - gendef)
|
if(genagr == 1 - gendef)
|
||||||
@@ -2219,7 +2206,6 @@ struct attack *mattk;
|
|||||||
return (pagr->mlet == S_NYMPH) ? 2 : 0;
|
return (pagr->mlet == S_NYMPH) ? 2 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef SEDUCE
|
|
||||||
/* Returns 1 if monster teleported */
|
/* Returns 1 if monster teleported */
|
||||||
int
|
int
|
||||||
doseduce(mon)
|
doseduce(mon)
|
||||||
@@ -2485,7 +2471,6 @@ const char *str;
|
|||||||
}
|
}
|
||||||
remove_worn_item(obj, TRUE);
|
remove_worn_item(obj, TRUE);
|
||||||
}
|
}
|
||||||
#endif /* SEDUCE */
|
|
||||||
|
|
||||||
STATIC_OVL int
|
STATIC_OVL int
|
||||||
passiveum(olduasmon,mtmp,mattk)
|
passiveum(olduasmon,mtmp,mattk)
|
||||||
|
|||||||
+2
-8
@@ -2554,14 +2554,9 @@ struct permonst _mons2[] = {
|
|||||||
#define SEDUCTION_ATTACKS_NO \
|
#define SEDUCTION_ATTACKS_NO \
|
||||||
A(ATTK(AT_CLAW, AD_PHYS, 1, 3), ATTK(AT_CLAW, AD_PHYS, 1, 3), \
|
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)
|
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,
|
MON("succubus", S_DEMON,
|
||||||
LVL(6, 12, 0, 70, -9), (G_NOCORPSE|1),
|
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,
|
SIZ(WT_HUMAN, 400, MS_SEDUCE, MZ_HUMAN), MR_FIRE|MR_POISON, 0,
|
||||||
M1_HUMANOID|M1_FLY|M1_POIS,
|
M1_HUMANOID|M1_FLY|M1_POIS,
|
||||||
M2_DEMON|M2_STALK|M2_HOSTILE|M2_NASTY|M2_FEMALE,
|
M2_DEMON|M2_STALK|M2_HOSTILE|M2_NASTY|M2_FEMALE,
|
||||||
@@ -2577,12 +2572,11 @@ struct permonst _mons2[] = {
|
|||||||
CLR_BROWN),
|
CLR_BROWN),
|
||||||
MON("incubus", S_DEMON,
|
MON("incubus", S_DEMON,
|
||||||
LVL(6, 12, 0, 70, -9), (G_NOCORPSE|1),
|
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,
|
SIZ(WT_HUMAN, 400, MS_SEDUCE, MZ_HUMAN), MR_FIRE|MR_POISON, 0,
|
||||||
M1_HUMANOID|M1_FLY|M1_POIS,
|
M1_HUMANOID|M1_FLY|M1_POIS,
|
||||||
M2_DEMON|M2_STALK|M2_HOSTILE|M2_NASTY|M2_MALE,
|
M2_DEMON|M2_STALK|M2_HOSTILE|M2_NASTY|M2_MALE,
|
||||||
M3_INFRAVISIBLE|M3_INFRAVISION, CLR_GRAY),
|
M3_INFRAVISIBLE|M3_INFRAVISION, CLR_GRAY),
|
||||||
#undef SEDUCTION_ATTACKS
|
|
||||||
/* Used by AD&D for a type of demon, originally one of the Furies */
|
/* Used by AD&D for a type of demon, originally one of the Furies */
|
||||||
/* and spelled this way */
|
/* and spelled this way */
|
||||||
MON("erinys", S_DEMON,
|
MON("erinys", S_DEMON,
|
||||||
|
|||||||
@@ -807,7 +807,6 @@ register struct monst *mtmp;
|
|||||||
case MS_SEDUCE:
|
case MS_SEDUCE:
|
||||||
{
|
{
|
||||||
int swval;
|
int swval;
|
||||||
#ifdef SEDUCE
|
|
||||||
if (SYSOPT_SEDUCE) {
|
if (SYSOPT_SEDUCE) {
|
||||||
if (ptr->mlet != S_NYMPH &&
|
if (ptr->mlet != S_NYMPH &&
|
||||||
could_seduce(mtmp, &youmonst, (struct attack *)0) == 1) {
|
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);
|
swval = ((poly_gender() != (int) mtmp->female) ? rn2(3) : 0);
|
||||||
} else
|
} else
|
||||||
#endif
|
|
||||||
swval = ((poly_gender() == 0) ? rn2(3) : 0);
|
swval = ((poly_gender() == 0) ? rn2(3) : 0);
|
||||||
switch(swval){
|
switch(swval){
|
||||||
case 2:
|
case 2:
|
||||||
|
|||||||
@@ -54,10 +54,8 @@ sys_early_init(){
|
|||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef SEDUCE
|
|
||||||
sysopt.seduce = 1; /* if it's compiled in, default to on */
|
sysopt.seduce = 1; /* if it's compiled in, default to on */
|
||||||
sysopt_seduce_set(sysopt.seduce);
|
sysopt_seduce_set(sysopt.seduce);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1452,9 +1452,7 @@ register struct attack *mattk;
|
|||||||
minstapetrify(mdef, TRUE);
|
minstapetrify(mdef, TRUE);
|
||||||
tmp = 0;
|
tmp = 0;
|
||||||
break;
|
break;
|
||||||
#ifdef SEDUCE
|
|
||||||
case AD_SSEX:
|
case AD_SSEX:
|
||||||
#endif
|
|
||||||
case AD_SEDU:
|
case AD_SEDU:
|
||||||
case AD_SITM:
|
case AD_SITM:
|
||||||
steal_it(mdef, mattk);
|
steal_it(mdef, mattk);
|
||||||
|
|||||||
@@ -584,9 +584,7 @@ coord *cc;
|
|||||||
/* most cancelled monsters return to normal,
|
/* most cancelled monsters return to normal,
|
||||||
but some need to stay cancelled */
|
but some need to stay cancelled */
|
||||||
if (!dmgtype(mtmp2->data, AD_SEDU)
|
if (!dmgtype(mtmp2->data, AD_SEDU)
|
||||||
#ifdef SEDUCE
|
|
||||||
&& (!SYSOPT_SEDUCE || !dmgtype(mtmp2->data, AD_SSEX))
|
&& (!SYSOPT_SEDUCE || !dmgtype(mtmp2->data, AD_SSEX))
|
||||||
#endif
|
|
||||||
) mtmp2->mcan = 0;
|
) mtmp2->mcan = 0;
|
||||||
mtmp2->mcansee = 1; /* set like in makemon */
|
mtmp2->mcansee = 1; /* set like in makemon */
|
||||||
mtmp2->mblinded = 0;
|
mtmp2->mblinded = 0;
|
||||||
|
|||||||
@@ -1298,9 +1298,6 @@ static const char *build_opts[] = {
|
|||||||
# endif
|
# endif
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
#ifdef SEDUCE
|
|
||||||
"seduction",
|
|
||||||
#endif
|
|
||||||
#ifdef SHELL
|
#ifdef SHELL
|
||||||
"shell command",
|
"shell command",
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user