git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7439 c06c8d41-db1a-0410-9941-cceddc491573
SUIDQIK6BZDJSYSFG6AK5A6K76EKGPKBKGGRCIU2AN6XOTCUHOBAC
STZQCHS5Q45AVVPKQFF5FWKWXZ246BC6FXUTCLDUUVAAZ47F7GNQC
VVVOUK7QZU3NNYAI6SJNWM5ZK7362HIXXSQI5BKVMHHL2CXMYXMQC
46I36AWFYIFDOUPKFEMJSJTPQ27CQP7FNKOLT3ZOBUI6SF4EL7RQC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
I2B33Z7NZGC33AMDSSK446AZZYWKPHWLAGULVHKKZU4MVB4BNJOAC
QDTVLBRGHDTRUVT7I3O72K6TMOYAUSAJBZUHGOEFU2RKJNUPWZSQC
JI4NDSOXGGZ7QHXXFB3ZTHAKHABXYBZXPDGLUFV5SKYEOL5FT7JQC
ENOQQ6DEA6ECRNTBGYYNK7G3DFEILMKQBNKP4SUQIZW2L6HWVR7QC
KFULGQQOHWUTXOM3BXCCYPGGVGGY4Z6265XUFRCBPNLTZAEHJZSQC
ISUJEAPPWKP2UIYPT6BJUUNSVH52NEXWGXNUATL7I3IO7TPO32HAC
7X5YDPAU34LOFKEGJYE6GC7EOEDKGT3O6CUGZBYJI45L3FQOAKHQC
TGPVUXV5JRLW4FHYUHOUIPFXDVVMYN36WQHMNXCOXWMGZKWEAG2QC
S34LKQDIQJLIWVIPASOJBBZ6ZCXDHP5KPS7TRBZJSCDRVNCLK6UAC
KBBSDMAXAGEDFMIVL6BSPMMSOBZKWPJTFCLBGCHRLE5DGTVAACSAC
FBK5ECMQ6HJSQSN7C3DICKJIRJ3CSO3CHCQ3ONPBKLLSHDGPBQ7QC
LFBNFE3PZBXTR2ROPKYPARUWLJAYWAKGTS7VBWADZWVVSJ5CLX6AC
77H4BWWPPGLM3PLZH4QTAJRXIZTSDVNCOKZE223I437FN2UJ34RQC
YCL3W2PFE6ILTGBFODCSXNPDIA46KVSZP2TI7HDMYAOEJT65RIEAC
27JI3J23EXDY2G4X7NHTFTSHSEUDGDPFOYPG6P53UNSSJP3DDQTAC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
5FHWTG7M6FW4B3I33YI7QSM3OZIB6ZGC6TI6JISSLY5Y43HI56VAC
GVW4OBPGXY2Q75HB7QHADZIOHKL22FI2BSJ2TM4K5SBJENBFTQKAC
PI5BATR2SER3RFE76IUGHM2AGXVFOUM3PLU7WC2K2Q2BA5K2E73QC
FZKMVCODMWQEVVBBQHTTXFBRO4LZEYLB646ZPVUMLHH6EER7FAOAC
C5U3HSOOQ7BKXKXIDS7MLVXUKDTHAWJ5NXNX6YDXTM3GWY5UWX4QC
TCZNXMPFNAWJYUIBTUEOTT73KLB4CU5S6HBKTHRT6KCD4ZVGBGUQC
X6W4FXCQ72PYSDPGMQCZ44QQANZFGTXPUHDC5GW4YFSJ2KPBVAMAC
KAOE5HB3THUKVGFZRO5EZESHEB3Q34WUO5DFMLWIKOBF47LZTIYAC
X5WLJCJVW55SXZVP7IKP7ADCJIGNKN4PKAXFECVR6TNK7XSMZR7QC
PHBACPMH3F34GODHVDKNCMXWU373RJQGVTDLBFCCDLLWDXVYOLTAC
RWCCZ64BG3HSOTM54ANIGENC3F3AIR42LJFRYSAKMCPCIUSOZY5QC
QEX3OFNT4IDUY3FNCPNKXB2RWHXRGEXTQQXB63GMVOTGQQ3IO5TAC
if (!you.duration[DUR_POISONING])
canned_msg(MSG_NOTHING_HAPPENS);
if (you.duration[DUR_POISONING] > 0)
reduce_poison_player(2 + random2(pow) + random2(3));
const bool res_poison = player_res_poison();
if (amount <= 0)
return (false);
if (resistable && wearing_amulet(AMU_CLARITY))
{
mpr("You feel momentarily confused.");
return (false);
}
const int old_value = you.duration[DUR_CONF];
you.duration[DUR_CONF] += amount;
if (you.duration[DUR_CONF] > 40)
you.duration[DUR_CONF] = 40;
if (you.duration[DUR_CONF] > old_value)
{
you.check_awaken(500);
mprf(MSGCH_WARN, "You are %sconfused.",
old_value > 0 ? "more " : "");
learned_something_new(TUT_YOU_ENCHANTED);
xom_is_stimulated(you.duration[DUR_CONF] - old_value);
}
}
void dec_poison_player()
{
if (you.duration[DUR_POISONING] > 0)
{
if (x_chance_in_y(you.duration[DUR_POISONING], 5))
{
int hurted = 1;
msg_channel_type channel = MSGCH_PLAIN;
const char *adj = "";
if (you.duration[DUR_POISONING] > 10
&& random2(you.duration[DUR_POISONING]) >= 8)
{
hurted = random2(10) + 5;
channel = MSGCH_DANGER;
adj = "extremely ";
}
else if (you.duration[DUR_POISONING] > 5 && coinflip())
{
hurted = coinflip() ? 3 : 2;
channel = MSGCH_WARN;
adj = "very ";
}
ouch(hurted, NON_MONSTER, KILLED_BY_POISON);
mprf(channel, "You feel %ssick.", adj);
if ((you.hp == 1 && one_chance_in(3)) || one_chance_in(8))
reduce_poison_player(1);
}
}
}
bool confuse_player(int amount, bool resistable)
{
if (amount <= 0)
return (false);
if (resistable && wearing_amulet(AMU_CLARITY))
{
mpr("You feel momentarily confused.");
return (false);
}
const int old_value = you.duration[DUR_CONF];
you.duration[DUR_CONF] += amount;
if (you.duration[DUR_CONF] > 40)
you.duration[DUR_CONF] = 40;
if (you.duration[DUR_CONF] > old_value)
{
you.check_awaken(500);
mprf(MSGCH_WARN, "You are %sconfused.",
(old_value > 0) ? "more " : "" );
learned_something_new(TUT_YOU_ENCHANTED);
xom_is_stimulated(you.duration[DUR_CONF] - old_value);
}
return (true);
}
void reduce_confuse_player(int amount)
{
if (you.duration[DUR_CONF] == 0 || amount <= 0)
return;
you.duration[DUR_CONF] -= amount;
if (you.duration[DUR_CONF] <= 0)
{
you.duration[DUR_CONF] = 0;
mpr("You feel less confused.");
}
}
bool wake_mimic = true;
if (item && item->base_type == OBJ_MISSILES
&& item->special == SPMSL_CURARE)
{
if (beam.ench_power == AUTOMATIC_HIT
&& curare_hits_monster( beam, mon, _whose_kill(beam), 2 ))
else if (item->special == SPMSL_CURARE)
if (you.duration[DUR_POISONING] > 0)
{
if (x_chance_in_y(you.duration[DUR_POISONING], 5))
{
if (you.duration[DUR_POISONING] > 10 && random2(you.duration[DUR_POISONING]) >= 8)
{
ouch(random2(10) + 5, NON_MONSTER, KILLED_BY_POISON);
mpr("You feel extremely sick.", MSGCH_DANGER);
}
else if (you.duration[DUR_POISONING] > 5 && coinflip())
{
ouch((coinflip() ? 3 : 2), NON_MONSTER, KILLED_BY_POISON);
mpr("You feel very sick.", MSGCH_WARN);
}
else
{
// "the poison running through your veins.");
ouch(1, NON_MONSTER, KILLED_BY_POISON);
mpr("You feel sick.");
}