From 541e9a0711e4dafaedc7eb93dde4a7d401487d58 Mon Sep 17 00:00:00 2001 From: Doru991 <75124791+Doru991@users.noreply.github.com> Date: Sat, 2 Dec 2023 19:01:58 +0200 Subject: [PATCH] Botany balancing fixes and QoL ('No romerol ambrosia' edition) (#21756) MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit * 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 --- .../Botany/Systems/MutationSystem.cs | 25 ++-- .../Objects/Consumable/Food/produce.yml | 18 +-- .../Prototypes/Hydroponics/mutations.yml | 114 ++++++++++++++++++ Resources/Prototypes/Hydroponics/seeds.yml | 12 +- 4 files changed, 143 insertions(+), 26 deletions(-) create mode 100644 Resources/Prototypes/Hydroponics/mutations.yml diff --git a/Content.Server/Botany/Systems/MutationSystem.cs b/Content.Server/Botany/Systems/MutationSystem.cs index 672139fbca..cfa944a221 100644 --- a/Content.Server/Botany/Systems/MutationSystem.cs +++ b/Content.Server/Botany/Systems/MutationSystem.cs @@ -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 _allChemicals = default!; + private WeightedRandomFillSolutionPrototype _randomChems = default!; + public override void Initialize() { - _allChemicals = _prototypeManager.EnumeratePrototypes().ToList(); + _randomChems = _prototypeManager.Index("RandomPickBotanyReagent"); } /// @@ -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 chemicals, int max, int bits, int totalbits, float mult) + private void MutateChemicals(ref Dictionary 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)) { diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/produce.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/produce.yml index 52c654b17c..ed5fccb793 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/produce.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/produce.yml @@ -172,8 +172,8 @@ - type: MeleeWeapon damage: types: - Heat: 6 - Caustic: 6 + Heat: 7.5 + Caustic: 7.5 - type: SolutionContainerManager solutions: food: @@ -677,12 +677,12 @@ - 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 @@ -1242,10 +1242,10 @@ - type: SolutionContainerManager solutions: food: - maxVol: 22 + maxVol: 20 reagents: - ReagentId: Omnizine - Quantity: 5 + Quantity: 3 - ReagentId: SpaceDrugs Quantity: 5 - ReagentId: Nutriment @@ -1398,19 +1398,19 @@ - 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 index 0000000000..dd37e0cda0 --- /dev/null +++ b/Resources/Prototypes/Hydroponics/mutations.yml @@ -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 diff --git a/Resources/Prototypes/Hydroponics/seeds.yml b/Resources/Prototypes/Hydroponics/seeds.yml index eec238d1d4..818ecbb3ca 100644 --- a/Resources/Prototypes/Hydroponics/seeds.yml +++ b/Resources/Prototypes/Hydroponics/seeds.yml @@ -427,8 +427,8 @@ Max: 5 PotencyDivisor: 20 SpaceLube: - Min: 1 - Max: 10 + Min: 5 + Max: 15 PotencyDivisor: 10 Vitamin: Min: 1 @@ -1028,8 +1028,8 @@ PotencyDivisor: 10 Omnizine: # Don't kill me Min: 1 - Max: 5 - PotencyDivisor: 20 + Max: 3 + PotencyDivisor: 35 SpaceDrugs: Min: 1 Max: 5 @@ -1164,8 +1164,8 @@ chemicals: Nutriment: Min: 1 - Max: 3 - PotencyDivisor: 25 + Max: 2 + PotencyDivisor: 50 - type: seed id: koibean -- 2.51.2