Reduce explicit species checks: barachi
authorEdgar A. Bering IV <trizor@gmail.com>
Mon, 19 Apr 2021 20:29:20 +0000 (23:29 +0300)
committerEdgar A. Bering IV <trizor@gmail.com>
Tue, 20 Apr 2021 07:34:38 +0000 (10:34 +0300)
Create a MUT_DAYSTALKER as a + counterpart to MUT_NIGHTSTALKER to
replace Ba's LOS fakemut.

crawl-ref/source/dat/species/barachi.yaml
crawl-ref/source/mutation-data.h
crawl-ref/source/mutation-type.h
crawl-ref/source/player.cc
crawl-ref/source/tags.cc

index c67d68b..bdd5655 100644 (file)
@@ -43,11 +43,9 @@ mutations:
   1:
     MUT_SLOW: 1
     MUT_HOP: 1
+    MUT_DAYSTALKER: 1
   13:
     MUT_HOP: 1
-fake_mutations:
-  - long: You have an extended range of vision and can be seen from far away.
-    short: +LOS
 recommended_jobs:
   - JOB_FIGHTER
   - JOB_BERSERKER
index a14d0ae..fb8582a 100644 (file)
@@ -2208,7 +2208,17 @@ static const mutation_def mut_data[] =
     {"Your melee attacks may engulf your foes in ooze.", "", ""},
     {"You begin exuding ooze.", "", ""},
     {"You stop exuding ooze.", "", ""},
-}
+},
+
+// Sadly console size restrictions prevent more than one level of this existing
+{ MUT_DAYSTALKER, 0, 1, mutflag::good, false,
+  "+LOS",
+
+    {"You have an extended range of vision and can be seen from far away.",
+      "", ""},
+    {"The darkness flees at your approach.", "", ""},
+    {"The shadows grow bolder once more.", "", ""},
+},
 
 };
 
index 24ae64b..9b90591 100644 (file)
@@ -272,6 +272,7 @@ enum mutation_type
     MUT_WORD_OF_CHAOS,
     MUT_DEMONIC_WILL,
 #endif
+    MUT_DAYSTALKER,
     NUM_MUTATIONS,
     CATEGORY_MUTATIONS,
     RANDOM_MUTATION = CATEGORY_MUTATIONS,
index 88b4529..c16bb62 100644 (file)
@@ -682,9 +682,10 @@ void update_vision_range()
 {
     you.normal_vision = LOS_DEFAULT_RANGE;
 
-    // Barachi have +1 base LOS.
-    if (you.species == SP_BARACHI)
-        you.normal_vision += 1;
+    // Daystalker gives +1 base LOS. (currently capped to one level for
+    // console reasons, a modular hud might someday permit more levels)
+    if (you.get_mutation_level(MUT_DAYSTALKER))
+        you.normal_vision += you.get_mutation_level(MUT_DAYSTALKER);
 
     // Nightstalker gives -1/-2/-3 to base LOS.
     if (you.get_mutation_level(MUT_NIGHTSTALKER))
index c80f768..1a65237 100644 (file)
@@ -3180,6 +3180,7 @@ static void _tag_read_you(reader &th)
     SP_MUT_FIX(MUT_HP_CASTING, SP_DJINNI);
     SP_MUT_FIX(MUT_FLAT_HP, SP_DJINNI);
     SP_MUT_FIX(MUT_FORLORN, SP_DEMIGOD);
+    SP_MUT_FIX(MUT_DAYSTALKER, SP_BARACHI);
 
     if (you.has_innate_mutation(MUT_NIMBLE_SWIMMER)
         || you.species == SP_MERFOLK || you.species == SP_OCTOPODE)