diff options
author | haranp <haranp@c06c8d41-db1a-0410-9941-cceddc491573> | 2007-12-01 23:47:56 +0000 |
---|---|---|
committer | haranp <haranp@c06c8d41-db1a-0410-9941-cceddc491573> | 2007-12-01 23:47:56 +0000 |
commit | 57ae10de70746396e8218821fcd8a93b7a4451dc (patch) | |
tree | d584c06f60ebd22b4fc6857937c26710bacfbe9c /crawl-ref/source/decks.cc | |
parent | 5480f286fa2ed4a7b90cf65e5a3bc203b27c7d0e (diff) | |
download | crawl-ref-57ae10de70746396e8218821fcd8a93b7a4451dc.tar.gz crawl-ref-57ae10de70746396e8218821fcd8a93b7a4451dc.zip |
Experience card now doesn't guarantee a level but does add XP to pool.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@2963 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/decks.cc')
-rw-r--r-- | crawl-ref/source/decks.cc | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/crawl-ref/source/decks.cc b/crawl-ref/source/decks.cc index 3f83a89dab..a1a686de2a 100644 --- a/crawl-ref/source/decks.cc +++ b/crawl-ref/source/decks.cc @@ -1926,6 +1926,40 @@ static void shuffle_card(int power, deck_rarity_type rarity) burden_change(); } +static void experience_card(int power, deck_rarity_type rarity) +{ + const int power_level = get_power_level(power, rarity); + + if ( you.experience_level < 27 ) + { + mpr("You feel more experienced."); + const unsigned long xp_cap = 1 + exp_needed(2 + you.experience_level); + + // power_level 2 means automatic level gain + if ( power_level == 2 ) + you.experience = xp_cap; + else + { + // Likely to give a level gain (power of ~500 is reasonable + // at high levels even for non-Nemelexites, so 50,000 XP.) + // But not guaranteed. + // Overrides archmagi effect, like potions of experience. + you.experience += power * 100; + if ( you.experience > xp_cap ) + you.experience = xp_cap; + } + } + else + mpr("You feel knowledgeable."); + + // Put some free XP into pool; power_level 2 means fill pool + you.exp_available += power * 50; + if ( power_level >= 2 || you.exp_available > 20000) + you.exp_available = 20000; + + level_change(); +} + static void helix_card(int power, deck_rarity_type rarity) { mutation_type bad_mutations[] = { @@ -2419,7 +2453,7 @@ bool card_effect(card_type which_card, deck_rarity_type rarity, case CARD_POTION: potion_card(power, rarity); break; case CARD_FOCUS: focus_card(power, rarity); break; case CARD_SHUFFLE: shuffle_card(power, rarity); break; - case CARD_EXPERIENCE: potion_effect(POT_EXPERIENCE, power/4); break; + case CARD_EXPERIENCE: experience_card(power, rarity); break; case CARD_HELIX: helix_card(power, rarity); break; case CARD_SAGE: sage_card(power, rarity); break; case CARD_GLASS: glass_card(power, rarity); break; |