]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Botany balancing fixes and QoL ('No romerol ambrosia' edition) (#21756)
authorDoru991 <75124791+Doru991@users.noreply.github.com>
Sat, 2 Dec 2023 17:01:58 +0000 (19:01 +0200)
committerGitHub <noreply@github.com>
Sat, 2 Dec 2023 17:01:58 +0000 (12:01 -0500)
* Chem 1984 phase 1

* Chem 1984 phase 2

* Notification on species mutation

* Plant yml balancing

* Better localization

* First version of reagent list

* Revert "Better localization"
nvm
This reverts commit bab87cb1bd58523164d306dccaefc1ac5c6b64ad.

* cooler reagents and no more popups

* :trollface:

* I’m blind

Content.Server/Botany/Systems/MutationSystem.cs
Resources/Prototypes/Entities/Objects/Consumable/Food/produce.yml
Resources/Prototypes/Hydroponics/mutations.yml [new file with mode: 0644]
Resources/Prototypes/Hydroponics/seeds.yml

index 672139fbca2dec6763a1578705a870abb85a89eb..cfa944a221a62bfe165c2d7c3f5c66138a08c3f0 100644 (file)
@@ -1,5 +1,7 @@
 using Robust.Shared.Prototypes;
 using Robust.Shared.Random;
+using Content.Shared.Random;
+using Content.Shared.Random.Helpers;
 using Content.Shared.Chemistry.Reagent;
 using System.Linq;
 using Content.Shared.Atmos;
@@ -11,11 +13,12 @@ public sealed class MutationSystem : EntitySystem
 {
     [Dependency] private readonly IRobustRandom _robustRandom = default!;
     [Dependency] private readonly IPrototypeManager _prototypeManager = default!;
-    private List<ReagentPrototype> _allChemicals = default!;
+    private WeightedRandomFillSolutionPrototype _randomChems = default!;
+
 
     public override void Initialize()
     {
-        _allChemicals = _prototypeManager.EnumeratePrototypes<ReagentPrototype>().ToList();
+        _randomChems = _prototypeManager.Index<WeightedRandomFillSolutionPrototype>("RandomPickBotanyReagent");
     }
 
     /// <summary>
@@ -37,7 +40,7 @@ public sealed class MutationSystem : EntitySystem
         }
 
         // Add up everything in the bits column and put the number here.
-        const int totalbits = 270;
+        const int totalbits = 275;
 
         // Tolerances (55)
         MutateFloat(ref seed.NutrientConsumption  , 0.05f, 1.2f, 5, totalbits, severity);
@@ -81,10 +84,10 @@ public sealed class MutationSystem : EntitySystem
         MutateGasses(ref seed.ConsumeGasses, 0.01f, 0.5f, 1, totalbits, severity);
 
         // Chems (20)
-        MutateChemicals(ref seed.Chemicals, 5, 20, totalbits, severity);
+        MutateChemicals(ref seed.Chemicals, 20, totalbits, severity);
 
-        // Species (5)
-        MutateSpecies(ref seed, 5, totalbits, severity);
+        // Species (10)
+        MutateSpecies(ref seed, 10, totalbits, severity);
     }
 
     public SeedData Cross(SeedData a, SeedData b)
@@ -246,7 +249,7 @@ public sealed class MutationSystem : EntitySystem
         }
     }
 
-    private void MutateChemicals(ref Dictionary<string, SeedChemQuantity> chemicals, int max, int bits, int totalbits, float mult)
+    private void MutateChemicals(ref Dictionary<string, SeedChemQuantity> chemicals, int bits, int totalbits, float mult)
     {
         float probModify = mult * bits / totalbits;
         probModify = Math.Clamp(probModify, 0, 1);
@@ -254,11 +257,11 @@ public sealed class MutationSystem : EntitySystem
             return;
 
         // Add a random amount of a random chemical to this set of chemicals
-        ReagentPrototype selectedChemical = _robustRandom.Pick(_allChemicals);
-        if (selectedChemical != null)
+        if (_randomChems != null)
         {
-            string chemicalId = selectedChemical.ID;
-            int amount = _robustRandom.Next(1, max);
+            var pick = _randomChems.Pick(_robustRandom);
+            string chemicalId = pick.reagent;
+            int amount = _robustRandom.Next(1, ((int)pick.quantity));
             SeedChemQuantity seedChemQuantity = new SeedChemQuantity();
             if (chemicals.ContainsKey(chemicalId))
             {
index 52c654b17c2d17fe266671592599153deaf63eab..ed5fccb793288cfb61fcdf6e164d0babc7accd0a 100644 (file)
   - type: MeleeWeapon
     damage:
       types:
-        Heat: 6
-        Caustic: 6
+        Heat: 7.5
+        Caustic: 7.5
   - type: SolutionContainerManager
     solutions:
       food:
   - type: SolutionContainerManager
     solutions:
       food:
-        maxVol: 19
+        maxVol: 24
         reagents:
         - ReagentId: Nutriment
           Quantity: 5
         - ReagentId: SpaceLube
-          Quantity: 10
+          Quantity: 15
         - ReagentId: Vitamin
           Quantity: 4
   - type: Sprite
   - type: SolutionContainerManager
     solutions:
       food:
-        maxVol: 22
+        maxVol: 20
         reagents:
         - ReagentId: Omnizine
-          Quantity: 5
+          Quantity: 3
         - ReagentId: SpaceDrugs
           Quantity: 5
         - ReagentId: Nutriment
   - type: SolutionContainerManager
     solutions:
       food:
-        maxVol: 9
+        maxVol: 7
         reagents:
         - ReagentId: Nutriment
           Quantity: 5
         - ReagentId: CarpoToxin
-          Quantity: 4
+          Quantity: 2
   - type: Produce
     seedId: koibean
   - type: Extractable
     juiceSolution:
       reagents:
       - ReagentId: CarpoToxin
-        Quantity: 4
+        Quantity: 2
 
 - type: entity
   name: watermelon
diff --git a/Resources/Prototypes/Hydroponics/mutations.yml b/Resources/Prototypes/Hydroponics/mutations.yml
new file mode 100644 (file)
index 0000000..dd37e0c
--- /dev/null
@@ -0,0 +1,114 @@
+- type: weightedRandomFillSolution
+  id: RandomPickBotanyReagent
+  fills:
+  - quantity: 5
+    weight: 0.5
+    reagents:
+    - Omnizine
+    - Nocturine
+    - Barozine
+    - Lexorin
+    - Honk
+    - BuzzochloricBees
+    - Stimulants
+  - quantity: 5
+    weight: 1
+    reagents:
+    - Cognizine
+    - Toxin
+    - Leporazine
+    - Epinephrine
+    - CarpoToxin
+    - SulfuricAcid
+    - Licoxide
+    - Napalm
+    - ChlorineTrifluoride
+    - Radium
+    - Gold
+    - Uranium
+    - Phosphorus
+    - AtomicBomb
+    - Neurotoxin
+    - ChangelingSting
+    - CogChamp
+  - quantity: 5
+    weight: 2
+    reagents:
+    - Desoxyephedrine
+    - ChloralHydrate
+    - Ipecac
+    - Hyronalin
+    - Pax
+    - Cryoxadone
+    - Ethylredoxrazine
+    - Dylovene
+    - Histamine
+    - Blood
+    - WeldingFuel
+    - Mercury
+    - Silver
+    - Phenol
+    - Ultravasculine
+    - Carbon
+    - THC
+    - Nicotine
+    - DoctorsDelight
+    - IceCream
+    - Cola
+    - Diphenhydramine
+    - Iron
+  - quantity: 10
+    weight: 3
+    reagents:
+    - Bicaridine
+    - Dermaline
+    - Ephedrine
+    - NorepinephricAcid
+    - Tricordrazine
+    - Saline
+    - PulpedBananaPeel
+    - Cryptobiolin
+    - EZNutrient
+    - Ammonia
+    - RobustHarvest
+    - SpaceLube
+    - Theobromine
+    - Allicin
+    - Acetone
+    - Ash
+    - SodiumCarbonate
+    - SpaceDrugs
+    - MuteToxin
+    - JuiceBerryPoison
+    - Pilk
+    - Posca
+    - Ethanol
+    - FourteenLoko
+    - LemonLime
+    - Enzyme
+    - Vinegar
+    - Potassium
+    - Fluorine
+    - Aluminium
+  - quantity: 10
+    weight: 3.5
+    reagents:
+    - Vitamin
+    - Kelotane
+    - Inaprovaline
+    - Oil
+    - Slime
+    - Fiber
+    - Water
+    - Sugar
+    - Cream
+    - SodaWater
+    - Ice
+    - JuiceCarrot
+    - JuicePotato
+    - Protein
+    - Flour
+    - Soysauce
+    - TableSalt
+    - Chlorine
+    - Mercury
\ No newline at end of file
index eec238d1d4a4779dc8018724265411631d3dd6f4..818ecbb3caad08f83380cba44d0ee759ba693d68 100644 (file)
       Max: 5
       PotencyDivisor: 20
     SpaceLube:
-      Min: 1
-      Max: 10
+      Min: 5
+      Max: 15
       PotencyDivisor: 10
     Vitamin:
       Min: 1
       PotencyDivisor: 10
     Omnizine: # Don't kill me
       Min: 1
-      Max: 5
-      PotencyDivisor: 20
+      Max: 3
+      PotencyDivisor: 35
     SpaceDrugs:
       Min: 1
       Max: 5
   chemicals:
     Nutriment:
       Min: 1
-      Max: 3
-      PotencyDivisor: 25
+      Max: 2
+      PotencyDivisor: 50
 
 - type: seed
   id: koibean