summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/transfor.cc
diff options
context:
space:
mode:
authorharanp <haranp@c06c8d41-db1a-0410-9941-cceddc491573>2008-08-28 19:23:44 +0000
committerharanp <haranp@c06c8d41-db1a-0410-9941-cceddc491573>2008-08-28 19:23:44 +0000
commit80011c222ee25d7f12fce572c9058a7276355f85 (patch)
tree0df727b39b9289a1bc48eedb3ca7122f996ca3fb /crawl-ref/source/transfor.cc
parent36d43983b6cc312fefe3a2e67db91f5235084155 (diff)
downloadcrawl-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.cc32
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);