git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7409 c06c8d41-db1a-0410-9941-cceddc491573
46I36AWFYIFDOUPKFEMJSJTPQ27CQP7FNKOLT3ZOBUI6SF4EL7RQC SDDALWEPMKK7JFJBVBMFUOH4LKE3XSWYLQFBWH23PAKF2AZPGGBAC 7X5YDPAU34LOFKEGJYE6GC7EOEDKGT3O6CUGZBYJI45L3FQOAKHQC ISUJEAPPWKP2UIYPT6BJUUNSVH52NEXWGXNUATL7I3IO7TPO32HAC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC TGPVUXV5JRLW4FHYUHOUIPFXDVVMYN36WQHMNXCOXWMGZKWEAG2QC QDTVLBRGHDTRUVT7I3O72K6TMOYAUSAJBZUHGOEFU2RKJNUPWZSQC PWY4VZVHDLYL7UVNCCOW7BM7LYK2BOGTL23P75HXUJ33MHJPEJPQC EV6BXXAN3VYUHYVFSOQFOD3YRGYY6EVC6I2LFYFLO3ATK6BSD6AQC BKZ4VTEO2CJN7S6MMZSPDIBDRRNZNC5EN6T5CLMWMFK6KVRCK3DAC UAJN2CFA2QHYDHW2UFAVPPHDQFCD54RKM6V2UC4AMEDJUBBLNWIQC X5WLJCJVW55SXZVP7IKP7ADCJIGNKN4PKAXFECVR6TNK7XSMZR7QC RBAGQ2PB7V5YAM5KSHSZR2E3MLKDSRVM5XYGI2TIXP5QMVBOQHDQC PI5BATR2SER3RFE76IUGHM2AGXVFOUM3PLU7WC2K2Q2BA5K2E73QC XGHRLF5KASEHD5UTAT7XBQFET3EXXFBYNT5KM6VGWVW4URJNKAYQC 5BJPWUPLJFS34FUTFJVKA4A52YMIGV6EWDXLNSDCWBJWBGVSQFGQC 5ZTUKFQSIU3NVZGNX7MPQQ3IZVXRCWB5EZSQSYEXXA4G5UFCFPTQC FCZSQBKDNMJZRJS2LWQQWLUFGOXSKXDJZQIHC7L5S7HXCXQPOMMAC 4FQAKUKUO6PCAZ3N4HUR5XL6E4VA5UQUZ3AEDGRBLVY7W2LMWI7QC QEX3OFNT4IDUY3FNCPNKXB2RWHXRGEXTQQXB63GMVOTGQQ3IO5TAC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC RWCCZ64BG3HSOTM54ANIGENC3F3AIR42LJFRYSAKMCPCIUSOZY5QC NVSFIV2ZKP44XHCSCXG6OZVGL67OIFINC34J2EMKTA4KULCERUEAC }bool napalm_player(int amount){if (player_res_sticky_flame() || amount <= 0)return (false);const int old_value = you.duration[DUR_LIQUID_FLAMES];you.duration[DUR_LIQUID_FLAMES] += amount;if (you.duration[DUR_LIQUID_FLAMES] > 40)you.duration[DUR_LIQUID_FLAMES] = 40;if (you.duration[DUR_LIQUID_FLAMES] > old_value)mpr("You are covered in liquid flames!", MSGCH_WARN);return (true);
expose_player_to_element(BEAM_NAPALM, 12);const int res_fire = player_res_fire();if (res_fire > 0){ouch((((random2avg(9, 2) + 1) * you.time_taken) /(1 + (res_fire * res_fire))) / 10, NON_MONSTER,KILLED_BY_BURNING);}if (res_fire <= 0){ouch(((random2avg(9, 2) + 1) * you.time_taken) / 10, 0,KILLED_BY_BURNING);}if (res_fire < 0){ouch(((random2avg(9, 2) + 1) * you.time_taken) / 10, 0,KILLED_BY_BURNING);}if (you.duration[DUR_CONDENSATION_SHIELD] > 0)remove_condensation_shield();}else if (you.duration[DUR_LIQUID_FLAMES] == 1)you.duration[DUR_LIQUID_FLAMES] = 0;}
}}void melee_attack::mons_do_napalm(){if (defender->res_sticky_flame() > 0)return;if (one_chance_in(20) || (damage_done > 2 && one_chance_in(3))){if (needs_message){mprf("%s %s covered in liquid flames%s",def_name(DESC_CAP_THE).c_str(),defender->conj_verb("are").c_str(),special_attack_punctuation().c_str());}if (defender->atype() == ACT_PLAYER)napalm_player(random2avg(7, 3) + 1);else{napalm_monster(def, mons_friendly(atk) ? KC_FRIENDLY : KC_OTHER,std::min(4, 1 + random2(atk->hit_dice) / 2));}
if (defender->res_sticky_flame() > 0)break;if (one_chance_in(20) || (damage_done > 2 && one_chance_in(3))){if (needs_message){mprf("%s %s covered in liquid flames%s",def_name(DESC_CAP_THE).c_str(),defender->conj_verb("are").c_str(),special_attack_punctuation().c_str());}if (defender->atype() == ACT_PLAYER)sticky_flame_player();else{sticky_flame_monster(monster_index(def),mons_friendly(atk) ? KC_FRIENDLY : KC_OTHER,std::min(4, 1 + random2(atk->hit_dice) / 2));}}
mons_do_napalm();
if (mons_res_sticky_flame(monster))return;
const mon_enchant old_flame = monster->get_ench(ENCH_STICKY_FLAME);monster->add_ench(mon_enchant(ENCH_STICKY_FLAME, levels, who));const mon_enchant new_flame = monster->get_ench(ENCH_STICKY_FLAME);
// Paradox: It both lasts longer & does more damage overall if you're// moving slower.// Rationalisation: I guess it gets rubbed off/falls off/etc if you// move around more.if (you.duration[DUR_LIQUID_FLAMES] > 0)you.duration[DUR_LIQUID_FLAMES]--;if (you.duration[DUR_LIQUID_FLAMES] != 0){const int res_fire = player_res_fire();mpr("You are covered in liquid flames!", MSGCH_WARN);expose_player_to_element(BEAM_NAPALM, 12);if (res_fire > 0){ouch((((random2avg(9, 2) + 1) * you.time_taken) /(1 + (res_fire * res_fire))) / 10, NON_MONSTER,KILLED_BY_BURNING);}
if (res_fire <= 0){ouch(((random2avg(9, 2) + 1) * you.time_taken) / 10, 0,KILLED_BY_BURNING);}
// Sticky flame paradox: It both lasts longer and does more damage// overall if you're moving more slowly.//// Rationalisation: I guess it gets rubbed off/falls off/etc. if you// move around more.dec_napalm_player();
if (res_fire < 0){ouch(((random2avg(9, 2) + 1) * you.time_taken) / 10, 0,KILLED_BY_BURNING);}if (you.duration[DUR_CONDENSATION_SHIELD] > 0)remove_condensation_shield();}