summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crawl-ref/source/decks.cc8
-rw-r--r--crawl-ref/source/it_use2.cc15
-rw-r--r--crawl-ref/source/makeitem.cc2
-rw-r--r--crawl-ref/source/newgame.cc81
-rw-r--r--crawl-ref/source/shopping.cc2
-rw-r--r--crawl-ref/source/skills2.cc23
6 files changed, 59 insertions, 72 deletions
diff --git a/crawl-ref/source/decks.cc b/crawl-ref/source/decks.cc
index fccf5447a9..ad2b4dfba0 100644
--- a/crawl-ref/source/decks.cc
+++ b/crawl-ref/source/decks.cc
@@ -2031,7 +2031,13 @@ static void _potion_card(int power, deck_rarity_type rarity)
pot = (coinflip() ? POT_CURE_MUTATION : POT_MUTATION);
if (power_level >= 2 && one_chance_in(5))
- pot = POT_MAGIC;
+ {
+ // +1 to a random stat.
+ const potion_type gain_stat_pots[] = {
+ POT_GAIN_STRENGTH, POT_GAIN_DEXTERITY, POT_GAIN_INTELLIGENCE
+ };
+ pot = RANDOM_ELEMENT(gain_stat_pots);
+ }
potion_effect(pot, random2(power/4));
}
diff --git a/crawl-ref/source/it_use2.cc b/crawl-ref/source/it_use2.cc
index f55396eba7..f3625fae6b 100644
--- a/crawl-ref/source/it_use2.cc
+++ b/crawl-ref/source/it_use2.cc
@@ -301,19 +301,8 @@ bool potion_effect(potion_type pot_eff, int pow, bool drank_it, bool was_known)
break; // I'll let this slip past robe of archmagi
case POT_MAGIC:
- // Restore all MP
- you.magic_points = you.max_magic_points;
-
- // Sometimes boost max
- if (one_chance_in(3))
- {
- mpr("You feel extremely magical!");
- inc_mp(1, true);
- }
- else
- {
- mpr("You feel magical!");
- }
+ inc_mp((10 + random2avg(28, 3)), false);
+ mpr("Magic courses through your body.");
break;
case POT_RESTORE_ABILITIES:
diff --git a/crawl-ref/source/makeitem.cc b/crawl-ref/source/makeitem.cc
index 4843130936..a28f3df31d 100644
--- a/crawl-ref/source/makeitem.cc
+++ b/crawl-ref/source/makeitem.cc
@@ -2333,7 +2333,7 @@ static void _generate_potion_item(item_def& item, int force_type,
38, POT_GAIN_DEXTERITY,
38, POT_GAIN_INTELLIGENCE,
13, POT_EXPERIENCE,
- 14, POT_MAGIC,
+ 140, POT_MAGIC,
900, POT_RESTORE_ABILITIES,
648, POT_POISON,
162, POT_STRONG_POISON,
diff --git a/crawl-ref/source/newgame.cc b/crawl-ref/source/newgame.cc
index 61894e43cb..84e155df2d 100644
--- a/crawl-ref/source/newgame.cc
+++ b/crawl-ref/source/newgame.cc
@@ -2783,55 +2783,54 @@ static void _jobs_stat_init(job_type which_job)
int i = 0; // intelligence mod
int d = 0; // dexterity mod
int hp = 0; // HP base
- int mp = 0; // MP base
// Note: Wanderers are correct, they're a challenging class. -- bwr
switch (which_job)
{
- case JOB_FIGHTER: s = 7; i = 0; d = 3; hp = 15; mp = 0; break;
- case JOB_BERSERKER: s = 7; i = -1; d = 4; hp = 15; mp = 0; break;
- case JOB_GLADIATOR: s = 6; i = 0; d = 4; hp = 14; mp = 0; break;
- case JOB_PALADIN: s = 6; i = 2; d = 2; hp = 14; mp = 0; break;
-
- case JOB_CRUSADER: s = 4; i = 3; d = 3; hp = 13; mp = 1; break;
- case JOB_DEATH_KNIGHT: s = 4; i = 3; d = 3; hp = 13; mp = 1; break;
- case JOB_CHAOS_KNIGHT: s = 4; i = 3; d = 3; hp = 13; mp = 1; break;
-
- case JOB_REAVER: s = 4; i = 4; d = 2; hp = 13; mp = 1; break;
- case JOB_HEALER: s = 4; i = 4; d = 2; hp = 13; mp = 1; break;
- case JOB_PRIEST: s = 4; i = 4; d = 2; hp = 12; mp = 1; break;
-
- case JOB_ASSASSIN: s = 2; i = 2; d = 6; hp = 12; mp = 0; break;
- case JOB_THIEF: s = 3; i = 2; d = 5; hp = 13; mp = 0; break;
- case JOB_STALKER: s = 2; i = 3; d = 5; hp = 12; mp = 1; break;
-
- case JOB_HUNTER: s = 3; i = 3; d = 4; hp = 13; mp = 0; break;
- case JOB_WARPER: s = 3; i = 4; d = 3; hp = 12; mp = 1; break;
-
- case JOB_MONK: s = 2; i = 2; d = 6; hp = 13; mp = 0; break;
- case JOB_TRANSMUTER: s = 2; i = 4; d = 4; hp = 12; mp = 1; break;
-
- case JOB_WIZARD: s = -1; i = 8; d = 3; hp = 8; mp = 5; break;
- case JOB_CONJURER: s = 0; i = 6; d = 4; hp = 10; mp = 3; break;
- case JOB_ENCHANTER: s = 0; i = 6; d = 4; hp = 10; mp = 3; break;
- case JOB_FIRE_ELEMENTALIST: s = 0; i = 6; d = 4; hp = 10; mp = 3; break;
- case JOB_ICE_ELEMENTALIST: s = 0; i = 6; d = 4; hp = 10; mp = 3; break;
- case JOB_AIR_ELEMENTALIST: s = 0; i = 6; d = 4; hp = 10; mp = 3; break;
- case JOB_EARTH_ELEMENTALIST:s = 0; i = 6; d = 4; hp = 10; mp = 3; break;
- case JOB_SUMMONER: s = 0; i = 6; d = 4; hp = 10; mp = 3; break;
- case JOB_VENOM_MAGE: s = 0; i = 6; d = 4; hp = 10; mp = 3; break;
- case JOB_NECROMANCER: s = 0; i = 6; d = 4; hp = 10; mp = 3; break;
-
- case JOB_WANDERER: s = 2; i = 2; d = 2; hp = 11; mp = 1; break;
-
- case JOB_ARTIFICER: s = 2; i = 3; d = 4; hp = 13; mp = 0; break;
- default: s = 0; i = 0; d = 0; hp = 10; mp = 0; break;
+ case JOB_FIGHTER: s = 7; i = 0; d = 3; hp = 15; break;
+ case JOB_BERSERKER: s = 7; i = -1; d = 4; hp = 15; break;
+ case JOB_GLADIATOR: s = 6; i = 0; d = 4; hp = 14; break;
+ case JOB_PALADIN: s = 6; i = 2; d = 2; hp = 14; break;
+
+ case JOB_CRUSADER: s = 4; i = 3; d = 3; hp = 13; break;
+ case JOB_DEATH_KNIGHT: s = 4; i = 3; d = 3; hp = 13; break;
+ case JOB_CHAOS_KNIGHT: s = 4; i = 3; d = 3; hp = 13; break;
+
+ case JOB_REAVER: s = 4; i = 4; d = 2; hp = 13; break;
+ case JOB_HEALER: s = 4; i = 4; d = 2; hp = 13; break;
+ case JOB_PRIEST: s = 4; i = 4; d = 2; hp = 12; break;
+
+ case JOB_ASSASSIN: s = 2; i = 2; d = 6; hp = 12; break;
+ case JOB_THIEF: s = 3; i = 2; d = 5; hp = 13; break;
+ case JOB_STALKER: s = 2; i = 3; d = 5; hp = 12; break;
+
+ case JOB_HUNTER: s = 3; i = 3; d = 4; hp = 13; break;
+ case JOB_WARPER: s = 3; i = 4; d = 3; hp = 12; break;
+
+ case JOB_MONK: s = 2; i = 2; d = 6; hp = 13; break;
+ case JOB_TRANSMUTER: s = 2; i = 4; d = 4; hp = 12; break;
+
+ case JOB_WIZARD: s = -1; i = 8; d = 3; hp = 8; break;
+ case JOB_CONJURER: s = 0; i = 6; d = 4; hp = 10; break;
+ case JOB_ENCHANTER: s = 0; i = 6; d = 4; hp = 10; break;
+ case JOB_FIRE_ELEMENTALIST: s = 0; i = 6; d = 4; hp = 10; break;
+ case JOB_ICE_ELEMENTALIST: s = 0; i = 6; d = 4; hp = 10; break;
+ case JOB_AIR_ELEMENTALIST: s = 0; i = 6; d = 4; hp = 10; break;
+ case JOB_EARTH_ELEMENTALIST:s = 0; i = 6; d = 4; hp = 10; break;
+ case JOB_SUMMONER: s = 0; i = 6; d = 4; hp = 10; break;
+ case JOB_VENOM_MAGE: s = 0; i = 6; d = 4; hp = 10; break;
+ case JOB_NECROMANCER: s = 0; i = 6; d = 4; hp = 10; break;
+
+ case JOB_WANDERER: s = 2; i = 2; d = 2; hp = 11; break;
+
+ case JOB_ARTIFICER: s = 2; i = 3; d = 4; hp = 13; break;
+ default: s = 0; i = 0; d = 0; hp = 10; break;
}
modify_all_stats( s, i, d );
- set_hp( hp, true );
- set_mp( mp, true );
+ set_hp(hp, true);
+ set_mp(0, true);
}
void give_basic_mutations(species_type speci)
diff --git a/crawl-ref/source/shopping.cc b/crawl-ref/source/shopping.cc
index 9ca277ad22..24cd1631bd 100644
--- a/crawl-ref/source/shopping.cc
+++ b/crawl-ref/source/shopping.cc
@@ -1338,8 +1338,6 @@ unsigned int item_value( item_def item, bool ident )
valued += 150;
break;
case POT_MAGIC:
- valued += 120;
- break;
case POT_RESISTANCE:
valued += 70;
break;
diff --git a/crawl-ref/source/skills2.cc b/crawl-ref/source/skills2.cc
index e33b7643e5..300b190b84 100644
--- a/crawl-ref/source/skills2.cc
+++ b/crawl-ref/source/skills2.cc
@@ -2152,28 +2152,23 @@ void init_skill_order( void )
int calc_hp(bool real_hp)
{
int hitp = get_real_hp(!real_hp, false);
-
you.hp_max = hitp;
-
- deflate_hp( you.hp_max, false );
-
+ deflate_hp(you.hp_max, false);
return (hitp);
-} // end calc_hp()
+}
int calc_mp(bool real_mp)
{
- int enp;
+ // base_magic_points2 accounts for species
+ int enp = (you.base_magic_points2 - 5000);
- // base_magic_points2 accounts for species and magic potions
- enp = (you.base_magic_points2 - 5000);
+ // You get 1 bonus MP for each of the first five levels of Spellcasting.
+ int spell_extra = (you.experience_level * you.skills[SK_SPELLCASTING]) / 4
+ + std::min<int>(you.skills[SK_SPELLCASTING], 5);
- int spell_extra = (you.experience_level * you.skills[SK_SPELLCASTING]) / 4;
int invoc_extra = (you.experience_level * you.skills[SK_INVOCATIONS]) / 6;
- if (spell_extra > invoc_extra)
- enp += spell_extra;
- else
- enp += invoc_extra;
+ enp += std::max(spell_extra, invoc_extra);
you.max_magic_points = stepdown_value( enp, 9, 18, 45, 100 );
@@ -2207,7 +2202,7 @@ int calc_mp(bool real_mp)
you.redraw_magic_points = true;
return (you.max_magic_points);
-} // end calc_mp()
+}
unsigned int skill_exp_needed(int lev)
{