diff options
author | dolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-09-25 04:55:41 +0000 |
---|---|---|
committer | dolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-09-25 04:55:41 +0000 |
commit | 915c2ffc0aa07bb33e09b11b5e2275c034fb5d96 (patch) | |
tree | 97c79cd1a1a1d929799d656e2463edce432b9517 /crawl-ref/source | |
parent | 87df3f8adf2ce93247abaece1b11a10bedd9c44c (diff) | |
download | crawl-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/source')
-rw-r--r-- | crawl-ref/source/abl-show.cc | 37 | ||||
-rw-r--r-- | crawl-ref/source/acr.cc | 4 | ||||
-rw-r--r-- | crawl-ref/source/dat/descript/ability.txt | 7 | ||||
-rw-r--r-- | crawl-ref/source/enum.h | 8 | ||||
-rw-r--r-- | crawl-ref/source/output.cc | 2 | ||||
-rw-r--r-- | crawl-ref/source/player.cc | 10 | ||||
-rw-r--r-- | crawl-ref/source/religion.cc | 23 | ||||
-rw-r--r-- | crawl-ref/source/spells1.cc | 35 | ||||
-rw-r--r-- | crawl-ref/source/spells1.h | 3 |
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(); |