diff options
author | haranp <haranp@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-08-28 19:23:44 +0000 |
---|---|---|
committer | haranp <haranp@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-08-28 19:23:44 +0000 |
commit | 80011c222ee25d7f12fce572c9058a7276355f85 (patch) | |
tree | 0df727b39b9289a1bc48eedb3ca7122f996ca3fb /crawl-ref/source/transfor.cc | |
parent | 36d43983b6cc312fefe3a2e67db91f5235084155 (diff) | |
download | crawl-ref-80011c222ee25d7f12fce572c9058a7276355f85.tar.gz crawl-ref-80011c222ee25d7f12fce572c9058a7276355f85.zip |
Fix 2079299: lichform should discard holy wrath weapons.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@6867 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/transfor.cc')
-rw-r--r-- | crawl-ref/source/transfor.cc | 32 |
1 files changed, 22 insertions, 10 deletions
diff --git a/crawl-ref/source/transfor.cc b/crawl-ref/source/transfor.cc index e426c8aba9..2c0ca22f41 100644 --- a/crawl-ref/source/transfor.cc +++ b/crawl-ref/source/transfor.cc @@ -67,6 +67,10 @@ static void _init_equipment_removal(std::set<equipment_type> &rem_stuff, } break; + case TRAN_LICH: + rem_stuff.clear(); + break; + case TRAN_BLADE_HANDS: rem_stuff.erase(EQ_CLOAK); rem_stuff.erase(EQ_HELMET); @@ -337,7 +341,7 @@ bool transform(int pow, transformation_type which_trans, bool quiet) } // We drop everything except jewellery by default. - equipment_type default_rem[] = { + const equipment_type default_rem[] = { EQ_WEAPON, EQ_CLOAK, EQ_HELMET, EQ_GLOVES, EQ_BOOTS, EQ_SHIELD, EQ_BODY_ARMOUR }; @@ -433,11 +437,6 @@ bool transform(int pow, transformation_type which_trans, bool quiet) return (true); case TRAN_BLADE_HANDS: - rem_stuff.erase(EQ_CLOAK); - rem_stuff.erase(EQ_HELMET); - rem_stuff.erase(EQ_BOOTS); - rem_stuff.erase(EQ_BODY_ARMOUR); - if (check_for_cursed_equipment( rem_stuff )) return (false); @@ -533,10 +532,9 @@ bool transform(int pow, transformation_type which_trans, bool quiet) return (true); case TRAN_LICH: - // Don't need to remove anything. - - // also AC +3, cold +1, neg +3, pois +1, is_undead, res magic +50, + // AC +3, cold +1, neg +3, pois +1, is_undead, res magic +50, // spec_death +1, and drain attack (if empty-handed) + if (you.duration[DUR_DEATHS_DOOR]) { if (!quiet) @@ -548,8 +546,23 @@ bool transform(int pow, transformation_type which_trans, bool quiet) return (false); } + // Remove holy wrath weapons if necessary. + if (you.weapon() + && get_weapon_brand(*you.weapon()) == SPWPN_HOLY_WRATH) + { + rem_stuff.insert(EQ_WEAPON); + } + + if (check_for_cursed_equipment(rem_stuff, quiet)) + return (false); + + if (check_transformation_stat_loss(rem_stuff, quiet)) + return (false); + mpr("Your body is suffused with negative energy!"); + remove_equipment(rem_stuff); + // undead cannot regenerate -- bwr if (you.duration[DUR_REGENERATION]) { @@ -560,7 +573,6 @@ bool transform(int pow, transformation_type which_trans, bool quiet) // silently removed since undead automatically resist poison -- bwr you.duration[DUR_RESIST_POISON] = 0; - // no remove_equip you.attribute[ATTR_TRANSFORMATION] = TRAN_LICH; you.duration[DUR_TRANSFORMATION] = 20 + random2(pow) + random2(pow); |