summaryrefslogtreecommitdiffstats
path: root/crawl-ref
diff options
context:
space:
mode:
authordolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573>2008-09-25 04:55:41 +0000
committerdolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573>2008-09-25 04:55:41 +0000
commit915c2ffc0aa07bb33e09b11b5e2275c034fb5d96 (patch)
tree97c79cd1a1a1d929799d656e2463edce432b9517 /crawl-ref
parent87df3f8adf2ce93247abaece1b11a10bedd9c44c (diff)
downloadcrawl-ref-915c2ffc0aa07bb33e09b11b5e2275c034fb5d96.tar.gz
crawl-ref-915c2ffc0aa07bb33e09b11b5e2275c034fb5d96.zip
Adapt Zin's old Divine Robustness into Elyvilon's Divine Vigour,
replacing the old Incredible Healing. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@6980 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref')
-rw-r--r--crawl-ref/source/abl-show.cc37
-rw-r--r--crawl-ref/source/acr.cc4
-rw-r--r--crawl-ref/source/dat/descript/ability.txt7
-rw-r--r--crawl-ref/source/enum.h8
-rw-r--r--crawl-ref/source/output.cc2
-rw-r--r--crawl-ref/source/player.cc10
-rw-r--r--crawl-ref/source/religion.cc23
-rw-r--r--crawl-ref/source/spells1.cc35
-rw-r--r--crawl-ref/source/spells1.h3
9 files changed, 83 insertions, 46 deletions
diff --git a/crawl-ref/source/abl-show.cc b/crawl-ref/source/abl-show.cc
index 4dc17540b8..700c8bc781 100644
--- a/crawl-ref/source/abl-show.cc
+++ b/crawl-ref/source/abl-show.cc
@@ -138,8 +138,8 @@ ability_type god_abilities[MAX_NUM_GODS][MAX_GOD_ABILITIES] =
ABIL_NEMELEX_STACK_FIVE },
// Elyvilon
{ ABIL_ELYVILON_LESSER_HEALING, ABIL_ELYVILON_PURIFICATION,
- ABIL_ELYVILON_HEALING, ABIL_ELYVILON_RESTORATION,
- ABIL_ELYVILON_GREATER_HEALING },
+ ABIL_ELYVILON_GREATER_HEALING, ABIL_ELYVILON_RESTORATION,
+ ABIL_ELYVILON_DIVINE_VIGOUR },
// Lugonu
{ ABIL_LUGONU_ABYSS_EXIT, ABIL_LUGONU_BEND_SPACE,
ABIL_LUGONU_BANISH, ABIL_LUGONU_CORRUPT,
@@ -268,9 +268,10 @@ static const ability_def Ability_List[] =
1, 0, 100, generic_cost::range(0, 1), ABFLAG_CONF_OK },
{ ABIL_ELYVILON_PURIFICATION, "Purification", 2, 0, 150, 1,
ABFLAG_CONF_OK },
- { ABIL_ELYVILON_HEALING, "Healing", 2, 0, 250, 2, ABFLAG_CONF_OK },
+ { ABIL_ELYVILON_GREATER_HEALING, "Greater Healing",
+ 2, 0, 250, 2, ABFLAG_CONF_OK },
{ ABIL_ELYVILON_RESTORATION, "Restoration", 3, 0, 400, 3, ABFLAG_CONF_OK },
- { ABIL_ELYVILON_GREATER_HEALING, "Greater Healing", 6, 0, 600, 5,
+ { ABIL_ELYVILON_DIVINE_VIGOUR, "Divine Vigour", 6, 0, 600, 5,
ABFLAG_CONF_OK },
// Lugonu
@@ -666,7 +667,7 @@ static talent _get_talent(ability_type ability, bool check_confused)
case ABIL_KIKU_ENSLAVE_UNDEAD:
case ABIL_YRED_ANIMATE_DEAD:
case ABIL_MAKHLEB_LESSER_SERVANT_OF_MAKHLEB:
- case ABIL_ELYVILON_HEALING:
+ case ABIL_ELYVILON_GREATER_HEALING:
case ABIL_LUGONU_BEND_SPACE:
invoc = true;
failure = 40 - (you.piety / 20) - (5 * you.skills[SK_INVOCATIONS]);
@@ -706,7 +707,7 @@ static talent _get_talent(ability_type ability, bool check_confused)
case ABIL_ZIN_SANCTUARY:
case ABIL_TSO_SUMMON_DAEVA:
case ABIL_KIKU_INVOKE_DEATH:
- case ABIL_ELYVILON_GREATER_HEALING:
+ case ABIL_ELYVILON_DIVINE_VIGOUR:
case ABIL_LUGONU_ABYSS_ENTER:
invoc = true;
failure = 80 - (you.piety / 25) - (you.skills[SK_INVOCATIONS] * 4);
@@ -1667,36 +1668,36 @@ static bool _do_ability(const ability_def& abil)
break;
case ABIL_ELYVILON_LESSER_HEALING:
- if (!cast_healing( 3 + (you.skills[SK_INVOCATIONS] / 6) ))
+ if (!cast_healing(3 + (you.skills[SK_INVOCATIONS] / 6)))
return (false);
- exercise( SK_INVOCATIONS, 1 );
+ exercise(SK_INVOCATIONS, 1);
break;
case ABIL_ELYVILON_PURIFICATION:
purification();
- exercise( SK_INVOCATIONS, 2 + random2(3) );
+ exercise(SK_INVOCATIONS, 2 + random2(3));
break;
- case ABIL_ELYVILON_HEALING:
- if (!cast_healing( 10 + (you.skills[SK_INVOCATIONS] / 3) ))
+ case ABIL_ELYVILON_GREATER_HEALING:
+ if (!cast_healing(10 + (you.skills[SK_INVOCATIONS] / 3)))
return (false);
- exercise( SK_INVOCATIONS, 3 + random2(5) );
+ exercise(SK_INVOCATIONS, 3 + random2(5));
break;
case ABIL_ELYVILON_RESTORATION:
- restore_stat( STAT_ALL, 0, false );
- unrot_hp( 100 );
+ restore_stat(STAT_ALL, 0, false);
+ unrot_hp(100);
- exercise( SK_INVOCATIONS, 4 + random2(6) );
+ exercise(SK_INVOCATIONS, 4 + random2(6));
break;
- case ABIL_ELYVILON_GREATER_HEALING:
- if (!cast_healing( 20 + you.skills[SK_INVOCATIONS] * 2 ))
+ case ABIL_ELYVILON_DIVINE_VIGOUR:
+ if (!cast_divine_vigour())
return (false);
- exercise( SK_INVOCATIONS, 6 + random2(10) );
+ exercise(SK_INVOCATIONS, 6 + random2(10));
break;
case ABIL_LUGONU_ABYSS_EXIT:
diff --git a/crawl-ref/source/acr.cc b/crawl-ref/source/acr.cc
index 62869bbf9e..2714b4945c 100644
--- a/crawl-ref/source/acr.cc
+++ b/crawl-ref/source/acr.cc
@@ -2993,8 +2993,8 @@ static void _decrement_durations()
}
}
- if (_decrement_a_duration(DUR_DIVINE_ROBUSTNESS))
- remove_divine_robustness();
+ if (_decrement_a_duration(DUR_DIVINE_VIGOUR))
+ remove_divine_vigour();
if (_decrement_a_duration(DUR_DIVINE_STAMINA))
remove_divine_stamina();
diff --git a/crawl-ref/source/dat/descript/ability.txt b/crawl-ref/source/dat/descript/ability.txt
index 91a0b0a0fa..7beabe5064 100644
--- a/crawl-ref/source/dat/descript/ability.txt
+++ b/crawl-ref/source/dat/descript/ability.txt
@@ -320,7 +320,7 @@ Purification
Purge your body of bad effects such as sickness, poisoning, slowness,
confusion, and rotting.
%%%%
-Healing
+Greater Healing
Depending on your Invocations skill, heal a moderate amount of your hitpoints.
%%%%
@@ -329,9 +329,10 @@ Restoration
Fully restore your Strength, Dexterity and Intelligence, and heal a large
amount of rotted hitpoints.
%%%%
-Greater Healing
+Divine Vigour
-Depending on your Invocations skill, heal a great amount of your hitpoints.
+Depending on your Invocations skill, heal a moderate amount of, and
+temporarily increase, your hitpoints.
%%%%
# Lugonu
Depart the Abyss
diff --git a/crawl-ref/source/enum.h b/crawl-ref/source/enum.h
index e09bb22bae..992ee7fcee 100644
--- a/crawl-ref/source/enum.h
+++ b/crawl-ref/source/enum.h
@@ -84,9 +84,9 @@ enum ability_type
ABIL_ELYVILON_DESTROY_WEAPONS = 219,
ABIL_ELYVILON_LESSER_HEALING = 220, // 220
ABIL_ELYVILON_PURIFICATION,
- ABIL_ELYVILON_HEALING,
+ ABIL_ELYVILON_GREATER_HEALING,
ABIL_ELYVILON_RESTORATION,
- ABIL_ELYVILON_GREATER_HEALING, // 224
+ ABIL_ELYVILON_DIVINE_VIGOUR, // 224
ABIL_LUGONU_ABYSS_EXIT, // 225
ABIL_LUGONU_BEND_SPACE,
ABIL_LUGONU_BANISH,
@@ -151,7 +151,7 @@ enum attribute_type
ATTR_HELD, // caught in a net
ATTR_ABYSS_ENTOURAGE, // maximum number of hostile monsters in
// sight of the player while in the Abyss.
- ATTR_DIVINE_ROBUSTNESS, // strength of Zin's Divine Robustness
+ ATTR_DIVINE_VIGOUR, // strength of Ely's Divine Vigour
ATTR_DIVINE_STAMINA, // strength of Zin's Divine Stamina
ATTR_DIVINE_SHIELD, // strength of TSO's Divine Shield
ATTR_UNIQUE_RUNES,
@@ -1092,7 +1092,7 @@ enum duration_type
DUR_REPEL_MISSILES,
DUR_PRAYER,
DUR_PIETY_POOL, // distribute piety over time
- DUR_DIVINE_ROBUSTNESS, // duration of Zin's Divine Robustness
+ DUR_DIVINE_VIGOUR, // duration of Ely's Divine Vigour
DUR_DIVINE_STAMINA, // duration of Zin's Divine Stamina
DUR_DIVINE_SHIELD, // duration of TSO's Divine Shield
DUR_REGENERATION,
diff --git a/crawl-ref/source/output.cc b/crawl-ref/source/output.cc
index f1f219a514..6efba29125 100644
--- a/crawl-ref/source/output.cc
+++ b/crawl-ref/source/output.cc
@@ -2153,7 +2153,7 @@ std::string _status_mut_abilities()
if (you.duration[DUR_MIGHT])
text += "mighty, ";
- if (you.duration[DUR_DIVINE_ROBUSTNESS])
+ if (you.duration[DUR_DIVINE_VIGOUR])
text += "divinely robust, ";
if (you.duration[DUR_DIVINE_STAMINA])
diff --git a/crawl-ref/source/player.cc b/crawl-ref/source/player.cc
index 15488f5747..664fc387ff 100644
--- a/crawl-ref/source/player.cc
+++ b/crawl-ref/source/player.cc
@@ -3921,7 +3921,7 @@ void display_char_status()
if (you.duration[DUR_MIGHT])
mpr( "You are mighty." );
- if (you.duration[DUR_DIVINE_ROBUSTNESS])
+ if (you.duration[DUR_DIVINE_VIGOUR])
mpr( "You are divinely robust." );
if (you.duration[DUR_DIVINE_STAMINA])
@@ -4912,10 +4912,10 @@ int get_real_hp(bool trans, bool rotted)
if (rotted)
hitp += player_rotted();
- // Frail and robust mutations, and divine robustness.
- hitp *= (10 + player_mutation_level(MUT_ROBUST)
- + you.attribute[ATTR_DIVINE_ROBUSTNESS]
- - player_mutation_level(MUT_FRAIL));
+ // Frail and robust mutations, and divine vigour.
+ hitp *= 10 + player_mutation_level(MUT_ROBUST)
+ + you.attribute[ATTR_DIVINE_VIGOUR]
+ - player_mutation_level(MUT_FRAIL);
hitp /= 10;
return (hitp);
diff --git a/crawl-ref/source/religion.cc b/crawl-ref/source/religion.cc
index eb18e2a988..0a764d40ed 100644
--- a/crawl-ref/source/religion.cc
+++ b/crawl-ref/source/religion.cc
@@ -253,11 +253,11 @@ const char* god_gain_power_messages[NUM_GODS][MAX_GOD_ABILITIES] =
"mark four cards in a deck",
"order the top five cards of a deck, losing the rest" },
// Elyvilon
- { "call upon Elyvilon for minor healing",
+ { "call upon Elyvilon for lesser healing",
"call upon Elyvilon for purification",
- "call upon Elyvilon for moderate healing",
+ "call upon Elyvilon for greater healing",
"call upon Elyvilon to restore your abilities",
- "call upon Elyvilon for greater healing" },
+ "call upon Elyvilon for divine vigour" },
// Lugonu
{ "depart the Abyss",
"bend space around yourself",
@@ -339,11 +339,11 @@ const char* god_lose_power_messages[NUM_GODS][MAX_GOD_ABILITIES] =
"mark decks",
"stack decks" },
// Elyvilon
- { "call upon Elyvilon for minor healing",
+ { "call upon Elyvilon for lesser healing",
"call upon Elyvilon for purification",
- "call upon Elyvilon for moderate healing",
+ "call upon Elyvilon for greater healing",
"call upon Elyvilon to restore your abilities",
- "call upon Elyvilon for greater healing" },
+ "call upon Elyvilon for divine vigour" },
// Lugonu
{ "depart the Abyss at will",
"bend space around yourself",
@@ -760,7 +760,7 @@ static void _inc_penance(god_type god, int val)
if (you.duration[DUR_DIVINE_STAMINA])
remove_divine_stamina();
}
- // neither does TSO's halo or divine shield
+ // Neither does TSO's halo or divine shield.
else if (god == GOD_SHINING_ONE)
{
if (you.haloed())
@@ -771,6 +771,12 @@ static void _inc_penance(god_type god, int val)
_make_god_gifts_disappear(); // only on level
}
+ // Neither does Ely's divine vigour.
+ else if (god == GOD_ELYVILON)
+ {
+ if (you.duration[DUR_DIVINE_VIGOUR])
+ remove_divine_vigour();
+ }
}
if (you.penance[god] + val > 200)
@@ -4860,6 +4866,9 @@ void excommunication(god_type new_god)
break;
case GOD_ELYVILON:
+ if (you.duration[DUR_DIVINE_VIGOUR])
+ remove_divine_vigour();
+
// Leaving Elyvilon for a non-good god will make all your
// followers (originally from TSO) abandon you.
if (!is_good_god(new_god))
diff --git a/crawl-ref/source/spells1.cc b/crawl-ref/source/spells1.cc
index d9310edd33..fcbe4e7e99 100644
--- a/crawl-ref/source/spells1.cc
+++ b/crawl-ref/source/spells1.cc
@@ -798,14 +798,39 @@ int cast_healing(int pow, const coord_def& where)
return (_healing_spell(pow + roll_dice(2, pow) - 2, where));
}
-void remove_divine_robustness()
+void remove_divine_vigour()
{
- mpr("Your divine robustness fades.", MSGCH_DURATION);
- you.duration[DUR_DIVINE_ROBUSTNESS] = 0;
- you.attribute[ATTR_DIVINE_ROBUSTNESS] = 0;
+ mpr("Your divine vigour fades.", MSGCH_DURATION);
+ you.duration[DUR_DIVINE_VIGOUR] = 0;
+ you.attribute[ATTR_DIVINE_VIGOUR] = 0;
calc_hp();
}
+bool cast_divine_vigour()
+{
+ bool success = false;
+
+ if (!you.duration[DUR_DIVINE_VIGOUR])
+ {
+ mprf("%s grants you divine vigour.",
+ god_name(you.religion).c_str());
+
+ const int vigour_amt = 1 + (you.skills[SK_INVOCATIONS]/6);
+ const int old_hp_max = you.hp_max;
+ you.attribute[ATTR_DIVINE_VIGOUR] = vigour_amt;
+ you.duration[DUR_DIVINE_VIGOUR]
+ = 35 + (you.skills[SK_INVOCATIONS]*5)/3;
+ calc_hp();
+ inc_hp(you.hp_max - old_hp_max, false);
+
+ success = true;
+ }
+ else
+ canned_msg(MSG_NOTHING_HAPPENS);
+
+ return (success);
+}
+
void remove_divine_stamina()
{
mpr("Your divine stamina fades.", MSGCH_DURATION);
@@ -926,7 +951,7 @@ bool cast_vitalisation()
god_name(you.religion).c_str());
const int stamina_amt = 3;
- you.attribute[ATTR_DIVINE_STAMINA] += stamina_amt;
+ you.attribute[ATTR_DIVINE_STAMINA] = stamina_amt;
you.duration[DUR_DIVINE_STAMINA]
= 35 + (you.skills[SK_INVOCATIONS]*5)/3;
diff --git a/crawl-ref/source/spells1.h b/crawl-ref/source/spells1.h
index 945fd360ef..cad0bbaef2 100644
--- a/crawl-ref/source/spells1.h
+++ b/crawl-ref/source/spells1.h
@@ -28,7 +28,8 @@ bool cast_sure_blade(int power);
* *********************************************************************** */
int cast_healing(int pow, const coord_def& where = coord_def(0,0));
-void remove_divine_robustness();
+void remove_divine_vigour();
+bool cast_divine_vigour();
void remove_divine_stamina();
bool cast_vitalisation();