summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/player.cc
diff options
context:
space:
mode:
authorharanp <haranp@c06c8d41-db1a-0410-9941-cceddc491573>2006-12-22 11:22:49 +0000
committerharanp <haranp@c06c8d41-db1a-0410-9941-cceddc491573>2006-12-22 11:22:49 +0000
commitdfebce7241da1ef5b2506cb175b9abf5eb32e533 (patch)
tree8d42712a51b5aa3e107960e4d0e14f8ef48e7c61 /crawl-ref/source/player.cc
parenta0e9510354f540e98f556aec2b655c33651f45d1 (diff)
downloadcrawl-ref-dfebce7241da1ef5b2506cb175b9abf5eb32e533.tar.gz
crawl-ref-dfebce7241da1ef5b2506cb175b9abf5eb32e533.zip
Some more work towards integrating race abilities and mutations:
- Draconian resistances are now mutations. As a side effect, this means that red draconians can't become resistant to cold, for example. I think this is a feature. - Troll metabolism and regeneration is now (partially) a mutation. So now trolls can't get the slow metabolism mutation. It might be better to go with a size system here. - Nagas and centaurs now have deformation as an initial mutation. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@691 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/player.cc')
-rw-r--r--crawl-ref/source/player.cc41
1 files changed, 14 insertions, 27 deletions
diff --git a/crawl-ref/source/player.cc b/crawl-ref/source/player.cc
index 8df05fdbf1..e48b343516 100644
--- a/crawl-ref/source/player.cc
+++ b/crawl-ref/source/player.cc
@@ -682,10 +682,9 @@ int player_regen(void)
if (you.duration[DUR_REGENERATION])
rr += 100;
- /* troll or troll leather -- trolls can't get both */
- if (you.species == SP_TROLL)
- rr += 40;
- else if (player_equip( EQ_BODY_ARMOUR, ARM_TROLL_LEATHER_ARMOUR ))
+ /* troll leather (except for trolls) */
+ if (player_equip( EQ_BODY_ARMOUR, ARM_TROLL_LEATHER_ARMOUR ) &&
+ you.species != SP_TROLL)
rr += 30;
/* fast heal mutation */
@@ -735,7 +734,7 @@ int player_hunger_rate(void)
break;
case SP_TROLL:
- hunger += 6;
+ hunger += 3; // in addition to the +3 for fast metabolism
break;
}
@@ -916,8 +915,6 @@ int player_res_fire(bool calc_unid)
// species:
if (you.species == SP_MUMMY)
rf--;
- else if (you.species == SP_RED_DRACONIAN && you.experience_level > 17)
- rf++;
// mutations:
rf += you.mutation[MUT_HEAT_RESISTANCE];
@@ -976,10 +973,6 @@ int player_res_cold(bool calc_unid)
// randart weapons:
rc += scan_randarts(RAP_COLD, calc_unid);
- // species:
- if (you.species == SP_WHITE_DRACONIAN && you.experience_level > 17)
- rc++;
-
// mutations:
rc += you.mutation[MUT_COLD_RESISTANCE];
@@ -1152,10 +1145,6 @@ int player_res_poison(bool calc_unid)
// randart weapons:
rp += scan_randarts(RAP_POISON, calc_unid);
- // species:
- if (you.species == SP_GREEN_DRACONIAN && you.experience_level > 6)
- rp++;
-
// mutations:
rp += you.mutation[MUT_POISON_RESISTANCE];
@@ -1533,12 +1522,10 @@ int player_AC(void)
AC += ac_value * (15 + you.skills[SK_ARMOUR] + racial_bonus) / 15;
- /* Nagas/Centaurs/the deformed don't fit into body armour very well */
- if ((you.species == SP_NAGA || you.species == SP_CENTAUR
- || you.mutation[MUT_DEFORMED] > 0) && i == EQ_BODY_ARMOUR)
- {
+ /* The deformed don't fit into body armour very well
+ (this includes nagas and centaurs) */
+ if (i == EQ_BODY_ARMOUR && you.mutation[MUT_DEFORMED])
AC -= ac_value / 2;
- }
}
AC += player_equip( EQ_RINGS_PLUS, RING_PROTECTION );
@@ -2470,7 +2457,8 @@ void level_change(void)
case SP_GREEN_DRACONIAN:
mpr("Your scales start taking on a green colour.",
MSGCH_INTRINSIC_GAIN);
- mpr("You feel resistant to poison.", MSGCH_INTRINSIC_GAIN);
+ // green dracos get this at level 7
+ perma_mutate(MUT_POISON_RESISTANCE, 1);
break;
case SP_GOLDEN_DRACONIAN:
@@ -2503,14 +2491,15 @@ void level_change(void)
switch (you.species)
{
case SP_RED_DRACONIAN:
- mpr("You feel resistant to fire.", MSGCH_INTRINSIC_GAIN);
+ perma_mutate(MUT_HEAT_RESISTANCE, 1);
break;
case SP_WHITE_DRACONIAN:
- mpr("You feel resistant to cold.", MSGCH_INTRINSIC_GAIN);
+ perma_mutate(MUT_COLD_RESISTANCE, 1);
break;
case SP_BLACK_DRACONIAN:
- mpr("You feel resistant to electrical energy.",
- MSGCH_INTRINSIC_GAIN);
+ perma_mutate(MUT_SHOCK_RESISTANCE, 1);
+ break;
+ default:
break;
}
}
@@ -2667,8 +2656,6 @@ void level_change(void)
demonspawn();
}
-/*if (you.attribute [ATTR_NUM_DEMONIC_POWERS] == 6 && (you.experience_level == 8 || (you.experience_level < 8 && one_chance_in(3) ) )
- demonspawn(); */
if (!(you.experience_level % 4))
modify_stat(STAT_RANDOM, 1, false);
break;