diff options
author | haranp <haranp@c06c8d41-db1a-0410-9941-cceddc491573> | 2006-12-23 18:30:26 +0000 |
---|---|---|
committer | haranp <haranp@c06c8d41-db1a-0410-9941-cceddc491573> | 2006-12-23 18:30:26 +0000 |
commit | 1066dfb75a2e07bc860ef737f6a8339bea501835 (patch) | |
tree | 048f7a160f1c79c598d072b6ff40f8a06537f249 /crawl-ref/source/abl-show.cc | |
parent | b94742c45d3488f4fda29c5e1977e58b5409ebaf (diff) | |
download | crawl-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.cc | 53 |
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 |