summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/abl-show.cc
diff options
context:
space:
mode:
authorharanp <haranp@c06c8d41-db1a-0410-9941-cceddc491573>2006-12-23 18:30:26 +0000
committerharanp <haranp@c06c8d41-db1a-0410-9941-cceddc491573>2006-12-23 18:30:26 +0000
commit1066dfb75a2e07bc860ef737f6a8339bea501835 (patch)
tree048f7a160f1c79c598d072b6ff40f8a06537f249 /crawl-ref/source/abl-show.cc
parentb94742c45d3488f4fda29c5e1977e58b5409ebaf (diff)
downloadcrawl-ref-1066dfb75a2e07bc860ef737f6a8339bea501835.tar.gz
crawl-ref-1066dfb75a2e07bc860ef737f6a8339bea501835.zip
Implemented David Ploog's "Lucy" abyssal god. An altar has a 20%
chance of showing up in each Abyss area. Many things still need to be done: better naming, better descriptive text, differentiation from Makhleb in preferences, etc. Playtesting and debugging required. Breaks savefiles. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@698 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/abl-show.cc')
-rw-r--r--crawl-ref/source/abl-show.cc53
1 files changed, 52 insertions, 1 deletions
diff --git a/crawl-ref/source/abl-show.cc b/crawl-ref/source/abl-show.cc
index 39688e93e4..f55de41952 100644
--- a/crawl-ref/source/abl-show.cc
+++ b/crawl-ref/source/abl-show.cc
@@ -127,7 +127,11 @@ ability_type god_abilities[MAX_NUM_GODS][MAX_GOD_ABILITIES] =
// Elyvilon
{ ABIL_ELYVILON_LESSER_HEALING, ABIL_ELYVILON_PURIFICATION,
ABIL_ELYVILON_HEALING, ABIL_ELYVILON_RESTORATION,
- ABIL_ELYVILON_GREATER_HEALING }
+ ABIL_ELYVILON_GREATER_HEALING },
+ // Lucy
+ { ABIL_LUCY_ABYSS_EXIT, ABIL_NON_ABILITY,
+ ABIL_LUCY_SUMMON_DEMONS, ABIL_NON_ABILITY,
+ ABIL_LUCY_ABYSS_ENTER }
};
// The description screen was way out of date with the actual costs.
@@ -251,6 +255,11 @@ static const struct ability_def Ability_List[] =
{ ABIL_ELYVILON_RESTORATION, "Restoration", 3, 0, 400, 3, ABFLAG_NONE },
{ ABIL_ELYVILON_GREATER_HEALING, "Greater Healing", 6, 0, 600, 4, ABFLAG_NONE },
+ // Lucy
+ { ABIL_LUCY_ABYSS_EXIT, "Depart the Abyss", 0, 0, 100, 10, ABFLAG_PAIN },
+ { ABIL_LUCY_SUMMON_DEMONS, "Summon Abyssal Servants", 7, 0, 100, 5, ABFLAG_NONE },
+ { ABIL_LUCY_ABYSS_ENTER, "Enter the Abyss", 9, 0, 200, 40, ABFLAG_NONE },
+
// These six are unused "evil" god abilities:
{ ABIL_CHARM_SNAKE, "Charm Snake", 6, 0, 200, 5, ABFLAG_NONE },
{ ABIL_TRAN_SERPENT_OF_HELL, "Turn into Demonic Serpent", 16, 0, 600, 8, ABFLAG_NONE },
@@ -1173,6 +1182,48 @@ bool activate_ability(void)
exercise( SK_INVOCATIONS, 6 + random2(10) );
break;
+ case ABIL_LUCY_ABYSS_EXIT:
+ if ( you.level_type != LEVEL_ABYSS )
+ {
+ mpr("You aren't in the Abyss!");
+ return false; // don't incur costs
+ }
+ banished(DNGN_EXIT_ABYSS);
+ exercise(SK_INVOCATIONS, 8 + random2(10));
+
+ // Lose 1d2 permanent HP
+ you.hp_max -= (coinflip() ? 2 : 1);
+ // Deflate HP
+ set_hp( 1 + random2(you.hp), false );
+
+ // Lose 1d2 permanent MP
+ rot_mp(coinflip() ? 2 : 1);
+ // Deflate MP
+ if (you.magic_points)
+ set_mp(random2(you.magic_points), false);
+ break;
+
+ case ABIL_LUCY_SUMMON_DEMONS:
+ for ( int i = 0; i < you.skills[SK_INVOCATIONS] / 4; ++i )
+ summon_ice_beast_etc( 20 + you.skills[SK_INVOCATIONS] * 3,
+ summon_any_demon(DEMON_COMMON), true);
+ exercise(SK_INVOCATIONS, 6 + random2(6));
+ break;
+
+ case ABIL_LUCY_ABYSS_ENTER:
+ if (you.level_type == LEVEL_ABYSS)
+ {
+ mpr("You're already here.");
+ return false;
+ }
+ else if (you.level_type == LEVEL_PANDEMONIUM)
+ {
+ mpr("That doesn't work from Pandemonium.");
+ return false;
+ }
+ banished(DNGN_ENTER_ABYSS);
+ break;
+
//jmf: intended as invocations from evil god(s):
case ABIL_CHARM_SNAKE:
cast_snake_charm( you.experience_level * 2