summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crawl-ref/source/acr.cc17
-rw-r--r--crawl-ref/source/religion.cc37
-rw-r--r--crawl-ref/source/spells1.cc20
-rw-r--r--crawl-ref/source/spells1.h2
-rw-r--r--crawl-ref/source/spells4.cc8
-rw-r--r--crawl-ref/source/spells4.h1
6 files changed, 45 insertions, 40 deletions
diff --git a/crawl-ref/source/acr.cc b/crawl-ref/source/acr.cc
index 4170989d79..b322622834 100644
--- a/crawl-ref/source/acr.cc
+++ b/crawl-ref/source/acr.cc
@@ -3066,23 +3066,10 @@ static void _decrement_durations()
reduce_revitalisation_chain(1);
if (_decrement_a_duration(DUR_DIVINE_ROBUSTNESS))
- {
- mpr("Your divine robustness fades.", MSGCH_DURATION);
- you.attribute[ATTR_DIVINE_ROBUSTNESS] = 0;
- calc_hp();
- }
+ remove_divine_robustness();
if (_decrement_a_duration(DUR_DIVINE_STAMINA))
- {
- mpr("Your divine stamina fades.", MSGCH_DURATION);
- modify_stat(STAT_STRENGTH, -you.attribute[ATTR_DIVINE_STAMINA],
- true, "Zin's divine stamina running out");
- modify_stat(STAT_INTELLIGENCE, -you.attribute[ATTR_DIVINE_STAMINA],
- true, "Zin's divine stamina running out");
- modify_stat(STAT_DEXTERITY, -you.attribute[ATTR_DIVINE_STAMINA],
- true, "Zin's divine stamina running out");
- you.attribute[ATTR_DIVINE_STAMINA] = 0;
- }
+ remove_divine_stamina();
}
static void _check_banished()
diff --git a/crawl-ref/source/religion.cc b/crawl-ref/source/religion.cc
index 2d59611356..054adedde8 100644
--- a/crawl-ref/source/religion.cc
+++ b/crawl-ref/source/religion.cc
@@ -475,7 +475,8 @@ static void _inc_penance(god_type god, int val)
// orcish bonuses don't apply under penance
if (god == GOD_BEOGH)
you.redraw_armour_class = true;
- // neither does Zin's revitalisation chaining or divine robustness
+ // neither does Zin's revitalisation chaining, divine
+ // robustness, or divine stamina
else if (god == GOD_ZIN)
{
if (you.duration[DUR_REVITALISATION_CHAIN])
@@ -485,12 +486,10 @@ static void _inc_penance(god_type god, int val)
}
if (you.duration[DUR_DIVINE_ROBUSTNESS])
- {
- mpr("Your divine robustness is withdrawn.");
- you.duration[DUR_DIVINE_ROBUSTNESS] = 0;
- you.duration[DUR_REVITALISATION_CHAIN] = 0;
- calc_hp();
- }
+ remove_divine_robustness();
+
+ if (you.duration[DUR_DIVINE_STAMINA])
+ remove_divine_stamina();
}
// neither does TSO's halo or divine shield
else if (god == GOD_SHINING_ONE)
@@ -499,12 +498,7 @@ static void _inc_penance(god_type god, int val)
mpr("Your divine halo fades away.");
if (you.duration[DUR_DIVINE_SHIELD])
- {
- mpr("Your divine shield disappears!");
- you.duration[DUR_DIVINE_SHIELD] = 0;
- you.attribute[ATTR_DIVINE_SHIELD] = 0;
- you.redraw_armour_class = true;
- }
+ remove_divine_shield();
_make_god_gifts_disappear(true); // only on level
}
@@ -4344,12 +4338,7 @@ void excommunication(god_type new_god)
mpr("Your divine halo fades away.");
if (you.duration[DUR_DIVINE_SHIELD])
- {
- mpr("Your divine shield disappears!");
- you.duration[DUR_DIVINE_SHIELD] = 0;
- you.attribute[ATTR_DIVINE_SHIELD] = 0;
- you.redraw_armour_class = true;
- }
+ remove_divine_shield();
if (!is_good_god(new_god))
_make_god_gifts_hostile(false);
@@ -4367,12 +4356,10 @@ void excommunication(god_type new_god)
}
if (you.duration[DUR_DIVINE_ROBUSTNESS])
- {
- mpr("Your divine robustness is withdrawn.");
- you.attribute[ATTR_DIVINE_ROBUSTNESS] = 0;
- you.duration[DUR_DIVINE_ROBUSTNESS] = 0;
- calc_hp();
- }
+ remove_divine_robustness();
+
+ if (you.duration[DUR_DIVINE_STAMINA])
+ remove_divine_stamina();
if (env.sanctuary_time)
remove_sanctuary();
diff --git a/crawl-ref/source/spells1.cc b/crawl-ref/source/spells1.cc
index 08e98a6fd1..312e2a17d6 100644
--- a/crawl-ref/source/spells1.cc
+++ b/crawl-ref/source/spells1.cc
@@ -789,6 +789,26 @@ void reduce_revitalisation_chain(int amount)
}
}
+void remove_divine_robustness()
+{
+ mpr("Your divine robustness is withdrawn.");
+ you.duration[DUR_DIVINE_ROBUSTNESS] = 0;
+ you.attribute[ATTR_DIVINE_ROBUSTNESS] = 0;
+ calc_hp();
+}
+
+void remove_divine_stamina()
+{
+ mpr("Your divine stamina fades.", MSGCH_DURATION);
+ modify_stat(STAT_STRENGTH, -you.attribute[ATTR_DIVINE_STAMINA],
+ true, "Zin's divine stamina running out");
+ modify_stat(STAT_INTELLIGENCE, -you.attribute[ATTR_DIVINE_STAMINA],
+ true, "Zin's divine stamina running out");
+ modify_stat(STAT_DEXTERITY, -you.attribute[ATTR_DIVINE_STAMINA],
+ true, "Zin's divine stamina running out");
+ you.attribute[ATTR_DIVINE_STAMINA] = 0;
+}
+
int cast_revitalisation(int pow)
{
const int step_max_chain = 6;
diff --git a/crawl-ref/source/spells1.h b/crawl-ref/source/spells1.h
index 0e11e96d30..e95537b97e 100644
--- a/crawl-ref/source/spells1.h
+++ b/crawl-ref/source/spells1.h
@@ -57,6 +57,8 @@ int cast_healing(int pow, int target_x = -1, int target_y = -1);
void revitalisation_chain(int amount);
void reduce_revitalisation_chain(int amount);
+void remove_divine_robustness();
+void remove_divine_stamina();
int cast_revitalisation(int pow);
// last updated 24may2000 {dlb}
diff --git a/crawl-ref/source/spells4.cc b/crawl-ref/source/spells4.cc
index 3cf98afe3b..9860f45ecf 100644
--- a/crawl-ref/source/spells4.cc
+++ b/crawl-ref/source/spells4.cc
@@ -2680,6 +2680,14 @@ void cast_condensation_shield(int pow)
return;
} // end cast_condensation_shield()
+void remove_divine_shield()
+{
+ mpr("Your divine shield disappears!");
+ you.duration[DUR_DIVINE_SHIELD] = 0;
+ you.attribute[ATTR_DIVINE_SHIELD] = 0;
+ you.redraw_armour_class = true;
+}
+
// shield bonus = attribute for duration turns, then decreasing by 1
// every two out of three turns
// overall shield duration = duration + attribute
diff --git a/crawl-ref/source/spells4.h b/crawl-ref/source/spells4.h
index 937bdabe13..b29418a055 100644
--- a/crawl-ref/source/spells4.h
+++ b/crawl-ref/source/spells4.h
@@ -25,6 +25,7 @@ int disperse_monsters(int x, int y, int pow, int message);
void cast_bend(int pow);
void cast_condensation_shield(int pow);
+void remove_divine_shield(void);
void cast_divine_shield(void);
void cast_detect_secret_doors(int pow);
void cast_discharge(int pow);