chaining it.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@4932 c06c8d41-db1a-0410-9941-cceddc491573
AROBKQGZEY7IBWUQ6XNGEJQJMI3XB7BXLMX5PHU3L6DWIATCH7EAC
JDBTF7NKDHWDTAX5LRBQ75A5JBNELFITVYQ6KOGW5XM2SGW33STQC
MUTULQLON4W77RIYPCQSKWD6ZMQFKTD3G36UPABQSP2DKKXU65TAC
ZCSYP2AFLY5QD4NAZSLAO33QYTVITJVRAJMFOE33CZZRVCWYXHNQC
AUFEDZ4RUY32ZAXOPTZ5OX6X6GUUYJHNDEFZD4GHUBBAFOQCVPWQC
ZXYVKEDP7QYG66XFUCXXCKZXT7Z5OOEJWHICWOYAUZQ4SSLHIA4AC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
MPQIZUHUAHOF2CKNTLSYCGMR7FIC3EPA2RHZIY6JOQKAS6H6YY4AC
CGYTZT5QWIEGYKUOLOK7MFXSLJKLYRZONER5ZCDZO5XYWSLG475QC
OZ5D37MVA3M2COBXAFMD3IZAW55RVPQRQBNTH5HARFWU7SW4PARAC
35NWNQBNLDOHPPHMYA2722IIFGAA57LUN5NOZPRUFZBD5EVCSYCAC
FEXFEKY3QAJ4M2RIJB3SOV65ECDY6M6K5DQJ7FEOXNAGQDEYVKUAC
C56DCU3P3IMGE6GC4X55ZCUCFY45KQWKPWPCD5UBKH3QMELDOTLAC
HXAKQLE5VFM3TREGGSFH362HVJPZ2NE5JCQUTMKD5YBZCS4JTU4AC
I2B33Z7NZGC33AMDSSK446AZZYWKPHWLAGULVHKKZU4MVB4BNJOAC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
}
void revitalisation_chain(int amount)
{
if (amount <= 0)
return;
const int old_value = you.duration[DUR_REVITALISATION_CHAIN];
you.duration[DUR_REVITALISATION_CHAIN] += amount;
if (you.duration[DUR_REVITALISATION_CHAIN] > 15)
you.duration[DUR_REVITALISATION_CHAIN] = 15;
if (old_value == 0)
{
mpr("Zin magnifies your power of revitalisation!", MSGCH_DURATION);
you.duration[DUR_REVITALISATION_CHAIN] += 3;
}
}
void reduce_revitalisation_chain(int amount)
{
if (you.duration[DUR_REVITALISATION_CHAIN] == 0 || amount <= 0)
return;
you.duration[DUR_REVITALISATION_CHAIN] -= amount;
if (you.duration[DUR_REVITALISATION_CHAIN] <= 0)
{
you.duration[DUR_REVITALISATION_CHAIN] = 0;
mpr("Your vitality returns to normal.", MSGCH_DURATION);
}
canned_msg(MSG_NOTHING_HAPPENS);
step = 0;
return 0;
}
mprf("You feel %s %s.", (step == 0) ? "only nominally" :
(step == 1) ? "very slightly" :
(step == 2) ? "slightly" :
(step == 3) ? "somewhat" :
(step == 4) ? "appropriately"
: "impressively",
(type == 0) ? "better" :
(type == 1) ? "invigorated" :
(type == 2) ? "powerful"
: "renewed");
// If it succeeded, display an appropriate message.
mprf("You feel %s %s.", (step == 0) ? "only nominally" :
(step == 1) ? "very slightly" :
(step == 2) ? "slightly" :
(step == 3) ? "somewhat" :
(step == 4) ? "appropriately"
: "impressively",
(type == 0) ? "better" :
(type == 1) ? "invigorated" :
(type == 2) ? "powerful"
: "renewed");
// The more the step counter has advanced, the greater the piety
// cost is.
int loss_amt = step + 1 + (random2(3) - 1);
// Increment the step counter.
step++;
// If revitalisation has succeeded, and it hasn't succeeded as far
// as possible, turn on revitalisation chaining for several turns.
if (success && step != step_max)
revitalisation_chain(3);
// Otherwise, turn off revitalisation chaining.
else
reduce_revitalisation_chain(15);
// If revitalisation has gone as far as possible, reset the step
// counter and get out, indicating maximum success.
if (step == step_max)
{
step = 0;
return step_max;
}
// Otherwise, get out, indicating normal success.
return (step + 1);
return (success) ? (step + 1) : 0;