diff options
author | haranp <haranp@c06c8d41-db1a-0410-9941-cceddc491573> | 2006-12-22 11:22:49 +0000 |
---|---|---|
committer | haranp <haranp@c06c8d41-db1a-0410-9941-cceddc491573> | 2006-12-22 11:22:49 +0000 |
commit | dfebce7241da1ef5b2506cb175b9abf5eb32e533 (patch) | |
tree | 8d42712a51b5aa3e107960e4d0e14f8ef48e7c61 /crawl-ref/source/player.cc | |
parent | a0e9510354f540e98f556aec2b655c33651f45d1 (diff) | |
download | crawl-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.cc | 41 |
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; |