tuning: succubi
This one had been intended for longer than several years, but I hadn't gotten around to it. When consorting with succubi and incubi, very high Cha+Int no longer guarantees that a positive outcome will occur. Chance of positive outcome is still quite high and most of the negative outcomes are pretty easy to repair, so this isn't likely to make a significant impact. However, the possibility of losing spell power will matter for some players....
This commit is contained in:
29
src/mhitu.c
29
src/mhitu.c
@@ -2302,7 +2302,7 @@ register struct monst *mon;
|
|||||||
{
|
{
|
||||||
register struct obj *ring, *nring;
|
register struct obj *ring, *nring;
|
||||||
boolean fem = (mon->data == &mons[PM_SUCCUBUS]); /* otherwise incubus */
|
boolean fem = (mon->data == &mons[PM_SUCCUBUS]); /* otherwise incubus */
|
||||||
int tried_gloves = 0;
|
int attr_tot, tried_gloves = 0;
|
||||||
char qbuf[QBUFSZ];
|
char qbuf[QBUFSZ];
|
||||||
|
|
||||||
if (mon->mcan || mon->mspec_used) {
|
if (mon->mcan || mon->mspec_used) {
|
||||||
@@ -2443,7 +2443,12 @@ register struct monst *mon;
|
|||||||
/* by this point you have discovered mon's identity, blind or not... */
|
/* by this point you have discovered mon's identity, blind or not... */
|
||||||
pline("Time stands still while you and %s lie in each other's arms...",
|
pline("Time stands still while you and %s lie in each other's arms...",
|
||||||
noit_mon_nam(mon));
|
noit_mon_nam(mon));
|
||||||
if (rn2(35) > ACURR(A_CHA) + ACURR(A_INT)) {
|
/* 3.6.1: a combined total for charisma plus intelligence of 35-1
|
||||||
|
used to guarantee successful outcome; now total maxes out at 32
|
||||||
|
as far as deciding what will happen; chance for bad outcome when
|
||||||
|
Cha+Int is 32 or more is 2/35, a bit over 5.7% */
|
||||||
|
attr_tot = ACURR(A_CHA) + ACURR(A_INT);
|
||||||
|
if (rn2(35) > min(attr_tot, 32)) {
|
||||||
/* Don't bother with mspec_used here... it didn't get tired! */
|
/* Don't bother with mspec_used here... it didn't get tired! */
|
||||||
pline("%s seems to have enjoyed it more than you...",
|
pline("%s seems to have enjoyed it more than you...",
|
||||||
noit_Monnam(mon));
|
noit_Monnam(mon));
|
||||||
@@ -2475,16 +2480,20 @@ register struct monst *mon;
|
|||||||
} else {
|
} else {
|
||||||
You("have a curious feeling...");
|
You("have a curious feeling...");
|
||||||
}
|
}
|
||||||
|
exercise(A_CON, FALSE);
|
||||||
|
exercise(A_DEX, FALSE);
|
||||||
|
exercise(A_WIS, FALSE);
|
||||||
break;
|
break;
|
||||||
case 4: {
|
case 4: {
|
||||||
int tmp;
|
int tmp;
|
||||||
|
|
||||||
You_feel("exhausted.");
|
You_feel("exhausted.");
|
||||||
exercise(A_STR, FALSE);
|
exercise(A_STR, FALSE);
|
||||||
tmp = rn1(10, 6);
|
tmp = rn1(10, 6);
|
||||||
losehp(Maybe_Half_Phys(tmp), "exhaustion", KILLED_BY);
|
losehp(Maybe_Half_Phys(tmp), "exhaustion", KILLED_BY);
|
||||||
break;
|
break;
|
||||||
}
|
} /* case 4 */
|
||||||
}
|
} /* switch */
|
||||||
} else {
|
} else {
|
||||||
mon->mspec_used = rnd(100); /* monster is worn out */
|
mon->mspec_used = rnd(100); /* monster is worn out */
|
||||||
You("seem to have enjoyed it more than %s...", noit_mon_nam(mon));
|
You("seem to have enjoyed it more than %s...", noit_mon_nam(mon));
|
||||||
@@ -2522,14 +2531,14 @@ register struct monst *mon;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mon->mtame) /* don't charge */
|
if (mon->mtame) { /* don't charge */
|
||||||
;
|
;
|
||||||
else if (rn2(20) < ACURR(A_CHA)) {
|
} else if (rn2(20) < ACURR(A_CHA)) {
|
||||||
pline("%s demands that you pay %s, but you refuse...",
|
pline("%s demands that you pay %s, but you refuse...",
|
||||||
noit_Monnam(mon), Blind ? (fem ? "her" : "him") : mhim(mon));
|
noit_Monnam(mon), Blind ? (fem ? "her" : "him") : mhim(mon));
|
||||||
} else if (u.umonnum == PM_LEPRECHAUN)
|
} else if (u.umonnum == PM_LEPRECHAUN) {
|
||||||
pline("%s tries to take your money, but fails...", noit_Monnam(mon));
|
pline("%s tries to take your money, but fails...", noit_Monnam(mon));
|
||||||
else {
|
} else {
|
||||||
long cost;
|
long cost;
|
||||||
long umoney = money_cnt(invent);
|
long umoney = money_cnt(invent);
|
||||||
|
|
||||||
@@ -2544,9 +2553,9 @@ register struct monst *mon;
|
|||||||
}
|
}
|
||||||
if (cost > umoney)
|
if (cost > umoney)
|
||||||
cost = umoney;
|
cost = umoney;
|
||||||
if (!cost)
|
if (!cost) {
|
||||||
verbalize("It's on the house!");
|
verbalize("It's on the house!");
|
||||||
else {
|
} else {
|
||||||
pline("%s takes %ld %s for services rendered!", noit_Monnam(mon),
|
pline("%s takes %ld %s for services rendered!", noit_Monnam(mon),
|
||||||
cost, currency(cost));
|
cost, currency(cost));
|
||||||
money2mon(mon, cost);
|
money2mon(mon, cost);
|
||||||
|
|||||||
Reference in New Issue
Block a user