Gnolls Redux Part III: Remove stat lock
authorgammafunk <gammafunk@gmail.com>
Mon, 25 Sep 2017 20:39:27 +0000 (15:39 -0500)
committergammafunk <gammafunk@gmail.com>
Thu, 28 Sep 2017 06:30:36 +0000 (01:30 -0500)
since the stat-lock is no longer part of their design. Gnolls now have
stat gain choice normally every three levels and their SID/4 works as
well.

crawl-ref/source/describe-god.cc
crawl-ref/source/god-abil.cc
crawl-ref/source/item-name.cc
crawl-ref/source/item-use.cc
crawl-ref/source/jobs.cc
crawl-ref/source/mutation.cc
crawl-ref/source/output.cc
crawl-ref/source/player-stats.cc
crawl-ref/source/religion.cc
crawl-ref/source/transform.cc

index 575b05c..94fd53d 100644 (file)
@@ -894,12 +894,9 @@ static void _describe_god_powers(god_type which_god)
                 piety >= piety_breakpoint(5) ? "greatly " :
                 piety >= piety_breakpoint(2) ? "" :
                                                "slightly ");
-        if (you.species != SP_GNOLL)
-        {
-            cprintf("%s supports your attributes. (+%d)\n",
-                    uppercase_first(god_name(which_god)).c_str(),
-                    chei_stat_boost(piety));
-        }
+        cprintf("%s supports your attributes. (+%d)\n",
+                uppercase_first(god_name(which_god)).c_str(),
+                chei_stat_boost(piety));
         break;
 
     case GOD_VEHUMET:
index fd68213..25940e3 100644 (file)
@@ -5145,13 +5145,6 @@ static mutation_type _random_valid_sacrifice(const vector<mutation_type> &muts)
             continue;
         }
 
-        // Gnolls can't get stat-changing mutations
-        if ((mut == MUT_DOPEY || mut == MUT_WEAK || mut == MUT_CLUMSY)
-            && you.species == SP_GNOLL)
-        {
-            continue;
-        }
-
         // The Grunt Algorithm
         // (choose a random element from a set of unknown size without building
         // an explicit list, by giving each one a chance to be chosen equal to
index b918c7b..2634793 100644 (file)
@@ -3279,8 +3279,7 @@ bool is_bad_item(const item_def &item, bool temp)
             return !you.stasis();
 #endif
         case POT_DEGENERATION:
-            // Only useless if your stats can't be drained.
-            return you.species != SP_GNOLL;
+            return true;
 #if TAG_MAJOR_VERSION == 34
         case POT_DECAY:
             return you.res_rotting(temp) <= 0;
@@ -3587,8 +3586,6 @@ bool is_useless_item(const item_def &item, bool temp)
             return !you.can_potion_heal();
         case POT_INVISIBILITY:
             return _invisibility_is_useless(temp);
-        case POT_DEGENERATION:
-            return you.species == SP_GNOLL;
         }
 
         return false;
@@ -3665,12 +3662,6 @@ bool is_useless_item(const item_def &item, bool temp)
         case RING_STEALTH:
             return you.get_mutation_level(MUT_NO_STEALTH);
 
-        // Gnolls can't boost stats
-        case RING_STRENGTH:
-        case RING_INTELLIGENCE:
-        case RING_DEXTERITY:
-            return you.species == SP_GNOLL;
-
         default:
             return false;
         }
index fc83b1e..3cc0124 100644 (file)
@@ -1316,10 +1316,6 @@ static bool _safe_to_remove_or_wear(const item_def &item, bool remove, bool quie
     if (remove && !safe_to_remove(item, quiet))
         return false;
 
-    //Gnolls don't get stat changes from items, so don't warn about stat zero
-    if (you.species == SP_GNOLL)
-        return true;
-
     int prop_str = 0;
     int prop_dex = 0;
     int prop_int = 0;
index 4de7017..d898ae3 100644 (file)
@@ -70,10 +70,6 @@ void job_stat_init(job_type job)
 {
     you.hp_max_adj_perm = 0;
 
-    // Gnolls don't get stats from background
-    if (you.species == SP_GNOLL)
-        return;
-
     you.base_stats[STAT_STR] += _job_def(job).s;
     you.base_stats[STAT_INT] += _job_def(job).i;
     you.base_stats[STAT_DEX] += _job_def(job).d;
index 4b06315..d4fb5de 100644 (file)
@@ -1259,23 +1259,6 @@ bool physiology_mutation_conflict(mutation_type mutat)
     if (you.species == SP_GARGOYLE && mutat == MUT_POISON_RESISTANCE)
         return true;
 
-    // Gnolls can't get any stat-affecting mutations
-    if (you.species == SP_GNOLL)
-    {
-        if (mutat == MUT_STRONG
-            || mutat == MUT_CLEVER
-            || mutat == MUT_AGILE
-            || mutat == MUT_WEAK
-            || mutat == MUT_DOPEY
-            || mutat == MUT_CLUMSY
-            || mutat == MUT_THIN_SKELETAL_STRUCTURE
-            || mutat == MUT_ROUGH_BLACK_SCALES
-            || mutat == MUT_DETERIORATION)
-        {
-            return true;
-        }
-    }
-
     // We can't use is_useless_skill() here, since species that can still wear
     // body armour can sacrifice armour skill with Ru.
     if (species_apt(SK_ARMOUR) == UNUSABLE_SKILL
index e8172ca..e3fdc1e 100644 (file)
@@ -798,10 +798,6 @@ static void _print_stats_hp(int x, int y)
 
 static short _get_stat_colour(stat_type stat)
 {
-    // If player is Gnoll, stats don't change; always return HUD_VALUE_COLOUR
-    if (you.species == SP_GNOLL)
-        return HUD_VALUE_COLOUR;
-
     if (you.duration[stat_zero_duration(stat)])
         return LIGHTRED;
 
index 1c7154f..fcead03 100644 (file)
@@ -104,10 +104,6 @@ static void _handle_stat_change(stat_type stat);
  */
 bool attribute_increase()
 {
-    // Gnolls don't get stat gains
-    if (you.species == SP_GNOLL)
-        return true;
-
     const string stat_gain_message = make_stringf("Your experience leads to a%s "
                                                   "increase in your attributes!",
                                                   you.species == SP_DEMIGOD ?
@@ -344,10 +340,6 @@ void notify_stat_change(stat_type which_stat, int amount, bool suppress_msg)
     if (amount == 0)
         return;
 
-    // Gnolls don't change stats, so don't notify
-    if (you.species == SP_GNOLL)
-        return;
-
     // Stop delays if a stat drops.
     if (amount < 0)
         interrupt_activity(AI_STAT_CHANGE);
@@ -378,10 +370,6 @@ static int _mut_level(mutation_type mut, bool innate_only)
 
 static int _strength_modifier(bool innate_only)
 {
-    // Gnolls can't modify their stats
-    if (you.species == SP_GNOLL)
-        return 0;
-
     int result = 0;
 
     if (!innate_only)
@@ -420,9 +408,6 @@ static int _strength_modifier(bool innate_only)
 
 static int _int_modifier(bool innate_only)
 {
-    if (you.species == SP_GNOLL)
-        return 0;
-
     int result = 0;
 
     if (!innate_only)
@@ -454,10 +439,6 @@ static int _int_modifier(bool innate_only)
 
 static int _dex_modifier(bool innate_only)
 {
-    // Gnolls can't modify their stats
-    if (you.species == SP_GNOLL)
-        return 0;
-
     int result = 0;
 
     if (!innate_only)
@@ -534,10 +515,6 @@ int stat_loss_roll()
 
 bool lose_stat(stat_type which_stat, int stat_loss, bool force)
 {
-    // Gnolls cannot be stat drained
-    if (you.species == SP_GNOLL)
-        return false;
-
     if (stat_loss <= 0)
         return false;
 
index ff11a25..1517e04 100644 (file)
@@ -2397,8 +2397,7 @@ static void _gain_piety_point()
         update_player_symbol();
 
     if (have_passive(passive_t::stat_boost)
-        && chei_stat_boost(old_piety) < chei_stat_boost()
-        && you.species != SP_GNOLL)
+        && chei_stat_boost(old_piety) < chei_stat_boost())
     {
         string msg = " raises the support of your attributes";
         if (have_passive(passive_t::slowed))
@@ -2544,8 +2543,7 @@ void lose_piety(int pgn)
         _grant_temporary_waterwalk();
     }
     if (will_have_passive(passive_t::stat_boost)
-        && chei_stat_boost(old_piety) > chei_stat_boost()
-        && you.species != SP_GNOLL)
+        && chei_stat_boost(old_piety) > chei_stat_boost())
     {
         string msg = " lowers the support of your attributes";
         if (will_have_passive(passive_t::slowed))
@@ -3533,13 +3531,9 @@ static void _join_pakellas()
 // Setup for joining the easygoing followers of Cheibriados.
 static void _join_cheibriados()
 {
-    // Gnolls don't gain attribute bonuses under Chei
-    if (you.species != SP_GNOLL)
-    {
-        simple_god_message(" begins to support your attributes as your "
-                           "movement slows.");
-        notify_stat_change();
-    }
+    simple_god_message(" begins to support your attributes as your "
+                       "movement slows.");
+    notify_stat_change();
 }
 
 /// What special things happen when you join a god?
index bc0485c..16783f3 100644 (file)
@@ -1456,10 +1456,6 @@ static bool _transformation_is_safe(transformation which_trans,
  */
 bool check_form_stat_safety(transformation new_form)
 {
-    // Gnolls don't have to worry about forms changing stats
-    if (you.species == SP_GNOLL)
-        return true;
-
     const int str_mod = get_form(new_form)->str_mod - get_form()->str_mod;
     const int dex_mod = get_form(new_form)->dex_mod - get_form()->dex_mod;