From ab3ea04380fd89fb89f061ca6611b6a7cf4f11e1 Mon Sep 17 00:00:00 2001 From: Jude Brown Date: Sun, 22 Nov 2009 15:54:24 +1000 Subject: Stop Deep Dwarf MP from regenerating with spirit shield. Don't allow Deep Dwarves to use spirit shields as a free source of regenerating HP. However, this simply stops natural regeneration. Potions of magic, crystal balls, staffs of channeling, and other God powers (Makhleb, Vehumet and Sif Muna) are still acceptable methods. --- crawl-ref/source/delay.cc | 4 +++- crawl-ref/source/it_use2.cc | 4 ++++ crawl-ref/source/item_use.cc | 8 ++++++++ crawl-ref/source/main.cc | 4 ++++ 4 files changed, 19 insertions(+), 1 deletion(-) (limited to 'crawl-ref') diff --git a/crawl-ref/source/delay.cc b/crawl-ref/source/delay.cc index ff8585be12..ba445ba920 100644 --- a/crawl-ref/source/delay.cc +++ b/crawl-ref/source/delay.cc @@ -1547,7 +1547,9 @@ void armour_wear_effects(const int item_slot) { set_mp(0, false); mpr("You feel spirits watching over you."); - } + if (you.species == SP_DEEP_DWARF) + mpr("Now linked to your health, your magic stops regenerating."); + } break; case SPARM_ARCHERY: diff --git a/crawl-ref/source/it_use2.cc b/crawl-ref/source/it_use2.cc index bbd9480716..daf3ac6a1b 100644 --- a/crawl-ref/source/it_use2.cc +++ b/crawl-ref/source/it_use2.cc @@ -659,7 +659,11 @@ void unwear_armour(int slot) case SPARM_SPIRIT_SHIELD: if (!player_spirit_shield()) + { mpr("You feel strangely alone."); + if (you.species == SP_DEEP_DWARF) + mpr("Your magic begins regenerating once more."); + } else if (player_equip(EQ_AMULET, AMU_GUARDIAN_SPIRIT, true)) { item_def& amu(you.inv[you.equip[EQ_AMULET]]); diff --git a/crawl-ref/source/item_use.cc b/crawl-ref/source/item_use.cc index 15fc4e28b5..cde532b561 100644 --- a/crawl-ref/source/item_use.cc +++ b/crawl-ref/source/item_use.cc @@ -3445,6 +3445,8 @@ void jewellery_wear_effects(item_def &item) { set_mp(0, false); mpr("You feel your power drawn to a protective spirit."); + if (you.species == SP_DEEP_DWARF) + mpr("Now linked to your health, your magic stops regenerating."); ident = ID_KNOWN_TYPE; } break; @@ -3983,6 +3985,9 @@ void jewellery_remove_effects(item_def &item, bool mesg) case AMU_THE_GOURMAND: you.duration[DUR_GOURMAND] = 0; break; + + case AMU_GUARDIAN_SPIRIT: + mpr("Your magic begins regenerating once more."); } if (is_artefact(item)) @@ -5700,6 +5705,9 @@ void use_artefact(item_def &item, bool *show_msgs, bool unmeld) { set_mp(0, false); mpr("You feel the spirits watch over you."); + if (you.species == SP_DEEP_DWARF) + mpr("Now linked to your health, your magic stops regenerating."); + artefact_wpn_learn_prop(item, ARTP_SPIRIT_SHIELD); } diff --git a/crawl-ref/source/main.cc b/crawl-ref/source/main.cc index 0ec454e220..14704c6352 100644 --- a/crawl-ref/source/main.cc +++ b/crawl-ref/source/main.cc @@ -2739,6 +2739,10 @@ static void _regenerate_hp_and_mp(int delay) tmp -= 100; } + // XXX: Don't let DD use guardian spirit for free HP. (due, dpeg) + if (player_spirit_shield() && you.species == SP_DEEP_DWARF) + return; + ASSERT( tmp >= 0 && tmp < 100 ); you.hit_points_regeneration = static_cast(tmp); -- cgit v1.2.3-54-g00ecf