diff options
Diffstat (limited to 'crawl-ref/source')
-rw-r--r-- | crawl-ref/source/debug.cc | 2 | ||||
-rw-r--r-- | crawl-ref/source/effects.cc | 8 | ||||
-rw-r--r-- | crawl-ref/source/enum.h | 1 | ||||
-rw-r--r-- | crawl-ref/source/fight.cc | 5 | ||||
-rw-r--r-- | crawl-ref/source/item_use.cc | 7 | ||||
-rw-r--r-- | crawl-ref/source/itemprop.cc | 18 | ||||
-rw-r--r-- | crawl-ref/source/mutation.cc | 36 | ||||
-rw-r--r-- | crawl-ref/source/newgame.cc | 3 | ||||
-rw-r--r-- | crawl-ref/source/output.cc | 6 | ||||
-rw-r--r-- | crawl-ref/source/player.cc | 2 | ||||
-rw-r--r-- | crawl-ref/source/transfor.cc | 4 |
11 files changed, 58 insertions, 34 deletions
diff --git a/crawl-ref/source/debug.cc b/crawl-ref/source/debug.cc index 60fe8dfa7f..d4aea3a01a 100644 --- a/crawl-ref/source/debug.cc +++ b/crawl-ref/source/debug.cc @@ -1847,7 +1847,7 @@ static const char *mutation_type_names[] = { "green marks", "drifting", "saprovorous", - "", + "talons", "", "red scales", "nacreous scales", diff --git a/crawl-ref/source/effects.cc b/crawl-ref/source/effects.cc index 6c18ebf4cc..034a9885cd 100644 --- a/crawl-ref/source/effects.cc +++ b/crawl-ref/source/effects.cc @@ -857,7 +857,8 @@ static int find_acquirement_subtype(object_class_type class_wanted, type_wanted = (coinflip()) ? OBJ_RANDOM : ARM_SHIELD + random2(5); // mutation specific problems (horns allow caps) - if ((you.mutation[MUT_HOOVES] && type_wanted == ARM_BOOTS) + if (((you.mutation[MUT_HOOVES] || you.mutation[MUT_TALONS]) + && type_wanted == ARM_BOOTS) || (you.mutation[MUT_CLAWS] >= 3 && type_wanted == ARM_GLOVES)) { type_wanted = OBJ_RANDOM; @@ -899,11 +900,6 @@ static int find_acquirement_subtype(object_class_type class_wanted, } break; - case SP_KENKU: - if (type_wanted == ARM_BOOTS) - type_wanted = OBJ_RANDOM; - break; - default: break; } diff --git a/crawl-ref/source/enum.h b/crawl-ref/source/enum.h index 02882954c1..ce65a8a404 100644 --- a/crawl-ref/source/enum.h +++ b/crawl-ref/source/enum.h @@ -2013,6 +2013,7 @@ enum mutation_type MUT_GREEN_MARKS, // 65 MUT_DRIFTING, MUT_SAPROVOROUS, + MUT_TALONS, MUT_RED_SCALES = 70, // 70 MUT_NACREOUS_SCALES, MUT_GREY2_SCALES, diff --git a/crawl-ref/source/fight.cc b/crawl-ref/source/fight.cc index 4a7d141921..c74cdbaad6 100644 --- a/crawl-ref/source/fight.cc +++ b/crawl-ref/source/fight.cc @@ -641,7 +641,7 @@ bool melee_attack::player_aux_unarmed() { if (uattack != UNAT_KICK) //jmf: hooves mutation { - if (you.species != SP_KENKU && !you.mutation[MUT_HOOVES] + if (!you.mutation[MUT_HOOVES] && !you.mutation[MUT_TALONS] || coinflip()) { continue; @@ -658,8 +658,7 @@ bool melee_attack::player_aux_unarmed() } // Kenku have large taloned feet that do good damage. - const bool clawed_kick = - you.species == SP_KENKU && !you.mutation[MUT_HOOVES]; + const bool clawed_kick = you.mutation[MUT_TALONS]; if (clawed_kick) { diff --git a/crawl-ref/source/item_use.cc b/crawl-ref/source/item_use.cc index 40c032c3c0..615fb82fd6 100644 --- a/crawl-ref/source/item_use.cc +++ b/crawl-ref/source/item_use.cc @@ -790,6 +790,13 @@ bool can_wear_armour(const item_def &item, bool verbose, bool ignore_temporary) return (false); } + if (you.mutation[MUT_TALONS]) + { + if (verbose) + mpr("Boots don't fit your talons!"); + return (false); + } + if (you.species == SP_NAGA) { if (verbose) diff --git a/crawl-ref/source/itemprop.cc b/crawl-ref/source/itemprop.cc index e794789610..fef0cf534f 100644 --- a/crawl-ref/source/itemprop.cc +++ b/crawl-ref/source/itemprop.cc @@ -1085,6 +1085,14 @@ bool check_armour_shape( const item_def &item, bool quiet ) return (false); } + if (you.mutation[MUT_TALONS]) + { + if (!quiet) + mpr("Boots don't fit your talons!"); + + return (false); + } + switch (you.species) { case SP_NAGA: @@ -1107,16 +1115,6 @@ bool check_armour_shape( const item_def &item, bool quiet ) } break; - case SP_KENKU: - if (!quiet) - { - if (item.sub_type == ARM_BOOTS) - mpr( "Boots don't fit your feet!" ); - else - mpr( "You can't wear barding!" ); - } - return (false); - case SP_MERFOLK: if (player_in_water() && item.sub_type == ARM_BOOTS) { diff --git a/crawl-ref/source/mutation.cc b/crawl-ref/source/mutation.cc index a246b8d9da..ec7a694c8b 100644 --- a/crawl-ref/source/mutation.cc +++ b/crawl-ref/source/mutation.cc @@ -298,8 +298,9 @@ const char *mutation_descrip[][3] = { {"You can tolerate rotten meat.", "You can eat rotten meat.", "You thrive on rotten meat."}, - - {"", "", ""}, + + {"You have talons in place of feet.", "", ""}, + {"", "", ""}, // 70 @@ -551,7 +552,8 @@ const char *gain_mutation[][3] = { // saprovorous: can never be gained or lost, only started with {"", "", ""}, - {"", "", ""}, + {"Your feet stretch and sharpen into talons.", "", ""}, + {"", "", ""}, // 70 @@ -771,8 +773,9 @@ const char *lose_mutation[][3] = { // saprovorous: can never be gained or lost, only started with {"", "", ""}, - - {"", "", ""}, + + {"Your talons dull and shrink into feet.", "", ""}, + {"", "", ""}, // 70 @@ -910,11 +913,11 @@ static const mutation_def mutation_defs[] = { // 65 { MUT_GREEN_MARKS, 0, 3 }, { MUT_DRIFTING, 3, 3 }, - { MUT_SAPROVOROUS, 0, 3 }, + { MUT_TALONS, 1, 1 }, + { RANDOM_MUTATION, 0, 3 }, - { RANDOM_MUTATION, 0, 3 }, - + // 70 { MUT_RED_SCALES, 2, 3 }, { MUT_NACREOUS_SCALES, 1, 3 }, @@ -1047,7 +1050,7 @@ formatted_string describe_mutations() break; case SP_KENKU: - result += "You cannot wear boots or helmets." EOL; + result += "You cannot wear helmets." EOL; if (you.experience_level > 4) { result += "You can fly"; @@ -1323,6 +1326,7 @@ static int calc_mutation_amusement_value(mutation_type which_mutation) case MUT_BLUE_MARKS: case MUT_GREEN_MARKS: case MUT_DRIFTING: + case MUT_TALONS: amusement *= 2; // funny! break; @@ -1510,7 +1514,15 @@ bool mutate(mutation_type which_mutation, bool failMsg, bool force_mutation, // putting boots on after they are forced off. -- bwr if (mutat == MUT_HOOVES - && (you.species == SP_NAGA || you.species == SP_KENKU + && (you.mutation[MUT_TALONS] || you.species == SP_NAGA + || player_genus(GENPC_DRACONIAN))) + { + return false; + } + + // putting boots on after they are forced off. -- bwr + if (mutat == MUT_TALONS + && (you.mutation[MUT_HOOVES] || you.species == SP_NAGA || player_genus(GENPC_DRACONIAN))) { return false; @@ -1659,7 +1671,9 @@ bool mutate(mutation_type which_mutation, bool failMsg, bool force_mutation, mpr(gain_mutation[mutat][you.mutation[mutat]], MSGCH_MUTATION); break; - case MUT_HOOVES: //jmf: like horns + //jmf: like horns + case MUT_HOOVES: + case MUT_TALONS: mpr(gain_mutation[mutat][you.mutation[mutat]], MSGCH_MUTATION); remove_one_equip(EQ_BOOTS); break; diff --git a/crawl-ref/source/newgame.cc b/crawl-ref/source/newgame.cc index cb5b6f9c6e..8ab7aabc7f 100644 --- a/crawl-ref/source/newgame.cc +++ b/crawl-ref/source/newgame.cc @@ -1939,6 +1939,9 @@ static void give_basic_mutations(species_type speci) you.mutation[MUT_SAPROVOROUS] = 3; you.mutation[MUT_CARNIVOROUS] = 3; break; + case SP_KENKU: + you.mutation[MUT_TALONS] = 1; + break; case SP_TROLL: you.mutation[MUT_REGENERATION] = 2; you.mutation[MUT_FAST_METABOLISM] = 3; diff --git a/crawl-ref/source/output.cc b/crawl-ref/source/output.cc index c82506c82b..995039e0e5 100644 --- a/crawl-ref/source/output.cc +++ b/crawl-ref/source/output.cc @@ -2051,6 +2051,12 @@ std::string status_mut_abilities() text += "hooves"; have_any = true; break; + case MUT_TALONS: + if (have_any) + text += ", "; + text += "talons"; + have_any = true; + break; case MUT_FANGS: if (have_any) text += ", "; diff --git a/crawl-ref/source/player.cc b/crawl-ref/source/player.cc index e542da415e..d844270520 100644 --- a/crawl-ref/source/player.cc +++ b/crawl-ref/source/player.cc @@ -523,7 +523,7 @@ bool you_tran_can_wear(int eq, bool check_mutation) if (eq == EQ_BOOTS && (player_is_swimming() && you.species == SP_MERFOLK - || you.mutation[MUT_HOOVES])) + || (you.mutation[MUT_HOOVES] || you.mutation[MUT_TALONS]))) { return false; } diff --git a/crawl-ref/source/transfor.cc b/crawl-ref/source/transfor.cc index 913f395bbf..3070123ac1 100644 --- a/crawl-ref/source/transfor.cc +++ b/crawl-ref/source/transfor.cc @@ -610,7 +610,6 @@ bool can_equip( equipment_type use_which, bool ignore_temporary ) switch (you.species) { case SP_NAGA: - case SP_KENKU: return (false); default: break; @@ -631,7 +630,8 @@ bool can_equip( equipment_type use_which, bool ignore_temporary ) if (use_which == EQ_HELMET && you.mutation[MUT_HORNS]) return (false); - if (use_which == EQ_BOOTS && you.mutation[MUT_HOOVES]) + if (use_which == EQ_BOOTS && + (you.mutation[MUT_HOOVES] || you.mutation[MUT_TALONS])) return (false); if (use_which == EQ_GLOVES && you.mutation[MUT_CLAWS] >= 3) |