summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/abl-show.cc
diff options
context:
space:
mode:
Diffstat (limited to 'crawl-ref/source/abl-show.cc')
-rw-r--r--crawl-ref/source/abl-show.cc46
1 files changed, 17 insertions, 29 deletions
diff --git a/crawl-ref/source/abl-show.cc b/crawl-ref/source/abl-show.cc
index f37ccb2854..3d3e7f7adc 100644
--- a/crawl-ref/source/abl-show.cc
+++ b/crawl-ref/source/abl-show.cc
@@ -39,6 +39,7 @@
#include "abyss.h"
#include "beam.h"
#include "decks.h"
+#include "delay.h"
#include "effects.h"
#include "food.h"
#include "it_use2.h"
@@ -78,7 +79,7 @@ enum ability_flag_type
{
ABFLAG_NONE = 0x00000000,
ABFLAG_BREATH = 0x00000001, // ability uses DUR_BREATH_WEAPON
- ABFLAG_DELAY = 0x00000002, // ability has its own delay (ie glamour)
+ ABFLAG_DELAY = 0x00000002, // ability has its own delay (ie recite)
ABFLAG_PAIN = 0x00000004, // ability must hurt player (ie torment)
ABFLAG_EXHAUSTION = 0x00000008, // fails if you.exhausted
ABFLAG_INSTANT = 0x00000010, // doesn't take time to use
@@ -110,7 +111,7 @@ ability_type god_abilities[MAX_NUM_GODS][MAX_GOD_ABILITIES] =
{ ABIL_NON_ABILITY, ABIL_NON_ABILITY, ABIL_NON_ABILITY,
ABIL_NON_ABILITY, ABIL_NON_ABILITY },
// Zin
- { ABIL_NON_ABILITY, ABIL_ZIN_SMITING, ABIL_ZIN_REVITALISATION,
+ { ABIL_ZIN_RECITE, ABIL_ZIN_SMITING, ABIL_ZIN_REVITALISATION,
ABIL_NON_ABILITY, ABIL_ZIN_SANCTUARY },
// TSO
{ ABIL_TSO_REPEL_UNDEAD, ABIL_TSO_DIVINE_SHIELD, ABIL_TSO_ANNIHILATE_UNDEAD,
@@ -173,7 +174,6 @@ static const ability_def Ability_List[] =
// NON_ABILITY should always come first
{ ABIL_NON_ABILITY, "No ability", 0, 0, 0, 0, ABFLAG_NONE },
{ ABIL_SPIT_POISON, "Spit Poison", 0, 0, 40, 0, ABFLAG_BREATH },
- { ABIL_GLAMOUR, "Glamour", 5, 0, 40, 0, ABFLAG_DELAY },
{ ABIL_MAPPING, "Sense Surroundings", 0, 0, 30, 0, ABFLAG_NONE },
{ ABIL_TELEPORTATION, "Teleportation", 3, 0, 200, 0, ABFLAG_NONE },
@@ -232,6 +232,7 @@ static const ability_def Ability_List[] =
// INVOCATIONS:
// Zin
+ { ABIL_ZIN_RECITE, "Recite", 3, 0, 150, 0, ABFLAG_DELAY },
{ ABIL_ZIN_SMITING, "Smiting",
3, 0, 50, generic_cost::fixed(2), ABFLAG_NONE },
{ ABIL_ZIN_REVITALISATION, "Revitalisation", 0, 0, 100, 3, ABFLAG_NONE },
@@ -483,10 +484,6 @@ static talent get_talent(ability_type ability, bool check_confused)
break;
// begin species abilities - some are mutagenic, too {dlb}
- case ABIL_GLAMOUR:
- failure = 50 - (you.experience_level * 2);
- break;
-
case ABIL_SPIT_POISON:
failure = ((you.species == SP_NAGA) ? 20 : 40)
- 10 * you.mutation[MUT_SPIT_POISON]
@@ -635,6 +632,7 @@ static talent get_talent(ability_type ability, bool check_confused)
failure = 20 - (you.piety / 20) - (5 * you.skills[SK_INVOCATIONS]);
break;
+ case ABIL_ZIN_RECITE:
case ABIL_TSO_REPEL_UNDEAD:
case ABIL_KIKU_RECALL_UNDEAD_SLAVES:
case ABIL_BEOGH_RECALL_ORCISH_FOLLOWERS:
@@ -994,21 +992,6 @@ static bool do_ability(const ability_def& abil)
you.attribute[ ATTR_DELAYED_FIREBALL ] = 0;
break;
- case ABIL_GLAMOUR:
- if (you.duration[DUR_GLAMOUR])
- {
- canned_msg(MSG_CANNOT_DO_YET);
- return (false);
- }
-
- mpr("You use your Elvish wiles.");
-
- cast_glamour( 10 + random2(you.experience_level)
- + random2(you.experience_level) );
-
- you.duration[DUR_GLAMOUR] = 20 + random2avg(13, 3);
- break;
-
case ABIL_SPIT_POISON: // Naga + spit poison mutation
if (you.duration[DUR_BREATH_WEAPON])
{
@@ -1318,6 +1301,18 @@ static bool do_ability(const ability_def& abil)
break;
// INVOCATIONS:
+
+ case ABIL_ZIN_RECITE:
+ {
+ if (!check_recital_audience())
+ {
+ mpr("There's no-one here to preach to!");
+ return (false);
+ }
+ const int pow = (you.skills[SK_INVOCATIONS] + 12) * (50 + you.piety) / 600;
+ start_delay(DELAY_RECITE, 3, pow, you.hp);
+ break;
+ }
case ABIL_ZIN_SMITING:
if (your_spells( SPELL_SMITING, (2 + skill_bump(SK_INVOCATIONS)) * 6,
false ) == SPRET_ABORT)
@@ -1946,13 +1941,6 @@ std::vector<talent> your_talents( bool check_confused )
if (you.species == SP_MUMMY && you.experience_level >= 13)
add_talent(talents, ABIL_MUMMY_RESTORATION, check_confused);
- if ( ((you.species == SP_GREY_ELF && you.experience_level >= 5) ||
- (you.species == SP_HIGH_ELF && you.experience_level >= 15)) &&
- you.attribute[ATTR_TRANSFORMATION] == TRAN_NONE )
- {
- add_talent(talents, ABIL_GLAMOUR, check_confused);
- }
-
if (you.species == SP_NAGA)
{
add_talent(talents, you.mutation[MUT_BREATHE_POISON] ?