summaryrefslogtreecommitdiffstats
path: root/crawl-ref
diff options
context:
space:
mode:
Diffstat (limited to 'crawl-ref')
-rw-r--r--crawl-ref/source/debug.cc2
-rw-r--r--crawl-ref/source/effects.cc8
-rw-r--r--crawl-ref/source/enum.h1
-rw-r--r--crawl-ref/source/fight.cc5
-rw-r--r--crawl-ref/source/item_use.cc7
-rw-r--r--crawl-ref/source/itemprop.cc18
-rw-r--r--crawl-ref/source/mutation.cc36
-rw-r--r--crawl-ref/source/newgame.cc3
-rw-r--r--crawl-ref/source/output.cc6
-rw-r--r--crawl-ref/source/player.cc2
-rw-r--r--crawl-ref/source/transfor.cc4
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)