summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/ability.cc
diff options
context:
space:
mode:
authorSteve Melenchuk <smelenchuk@gmail.com>2014-01-09 21:11:46 -0700
committerSteve Melenchuk <smelenchuk@gmail.com>2014-01-10 11:27:24 -0700
commit571dd195bbc7a084b21f076b5810ec51aba60026 (patch)
treeecfeef0782787465816865b67d38cc85024fb336 /crawl-ref/source/ability.cc
parentc961fcdee648c1d4480faa3625dd4e7946c9a1ed (diff)
downloadcrawl-ref-571dd195bbc7a084b21f076b5810ec51aba60026.tar.gz
crawl-ref-571dd195bbc7a084b21f076b5810ec51aba60026.zip
Shadow god: Shadow Form.
For 9 MP, 10 piety, and skill drain, you transform into a swirling mass of dark shadows with immunity to poison, draining, torment, and hostile enchantments as well as 50% damage reduction and a transformation of your bled smoke into miasma (guaranteed on hit). However, you also only deal 50% melee damage and suffer a double-strength spell anti-enhancer.
Diffstat (limited to 'crawl-ref/source/ability.cc')
-rw-r--r--crawl-ref/source/ability.cc24
1 files changed, 23 insertions, 1 deletions
diff --git a/crawl-ref/source/ability.cc b/crawl-ref/source/ability.cc
index f63da87061..efae1928b9 100644
--- a/crawl-ref/source/ability.cc
+++ b/crawl-ref/source/ability.cc
@@ -104,6 +104,7 @@ enum ability_flag_type
ABFLAG_LEVEL_DRAIN = 0x00010000, // drains 2 levels
ABFLAG_STAT_DRAIN = 0x00020000, // stat drain
ABFLAG_ZOTDEF = 0x00040000, // ZotDef ability, w/ appropriate hotkey
+ ABFLAG_SKILL_DRAIN = 0x00080000, // drains skill levels
};
static int _find_ability_slot(const ability_def& abil);
@@ -192,7 +193,7 @@ ability_type god_abilities[NUM_GODS][MAX_GOD_ABILITIES] =
ABIL_ASHENZARI_SCRYING, ABIL_ASHENZARI_TRANSFER_KNOWLEDGE },
// Dsomething
{ ABIL_NON_ABILITY, ABIL_DSOMETHING_SHADOW_STEP, ABIL_NON_ABILITY,
- ABIL_NON_ABILITY, ABIL_NON_ABILITY },
+ ABIL_NON_ABILITY, ABIL_DSOMETHING_SHADOW_FORM },
};
// The description screen was way out of date with the actual costs.
@@ -403,6 +404,8 @@ static const ability_def Ability_List[] =
// Dsomething
{ ABIL_DSOMETHING_SHADOW_STEP, "Shadow Step",
4, 0, 0, 4, 0, ABFLAG_NONE },
+ { ABIL_DSOMETHING_SHADOW_FORM, "Shadow Form",
+ 9, 0, 0, 10, 0, ABFLAG_SKILL_DRAIN },
{ ABIL_STOP_RECALL, "Stop Recall", 0, 0, 0, 0, 0, ABFLAG_NONE},
@@ -714,6 +717,9 @@ const string make_cost_description(ability_type ability)
if (abil.flags & ABFLAG_STAT_DRAIN)
ret += ", Stat drain";
+ if (abil.flags & ABFLAG_SKILL_DRAIN)
+ ret += ", Skill drain";
+
// If we haven't output anything so far, then the effect has no cost
if (ret.empty())
return "None";
@@ -814,6 +820,9 @@ static const string _detailed_cost_description(ability_type ability)
if (abil.flags & ABFLAG_STAT_DRAIN)
ret << "\nIt will temporarily drain your strength, intelligence or dexterity when used.";
+ if (abil.flags & ABFLAG_SKILL_DRAIN)
+ ret << "\nIt will temporarily drain your skills when used.";
+
return ret.str();
}
@@ -842,6 +851,10 @@ static ability_type _fixup_ability(ability_type ability)
if (you.species == SP_FORMICID)
return ABIL_NON_ABILITY;
+ case ABIL_DSOMETHING_SHADOW_FORM:
+ if (you.species == SP_MUMMY || you.species == SP_GHOUL)
+ return ABIL_NON_ABILITY;
+
default:
return ability;
}
@@ -1059,6 +1072,7 @@ talent get_talent(ability_type ability, bool check_confused)
case ABIL_JIYVA_CURE_BAD_MUTATION:
case ABIL_JIYVA_JELLY_PARALYSE:
case ABIL_DSOMETHING_SHADOW_STEP:
+ case ABIL_DSOMETHING_SHADOW_FORM:
case ABIL_STOP_RECALL:
invoc = true;
failure = 0;
@@ -2836,6 +2850,14 @@ static bool _do_ability(const ability_def& abil)
}
break;
+ case ABIL_DSOMETHING_SHADOW_FORM:
+ if (!transform(100, TRAN_SHADOW))
+ {
+ crawl_state.zero_turns_taken();
+ return false;
+ }
+ break;
+
case ABIL_RENOUNCE_RELIGION:
if (yesno("Really renounce your faith, foregoing its fabulous benefits?",
false, 'n')