Botany balancing fixes and QoL ('No romerol ambrosia' edition) (#21756)

* 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
This commit is contained in:
Doru991
2023-12-02 19:01:58 +02:00
committed by GitHub
parent b8ded78305
commit 541e9a0711
4 changed files with 143 additions and 26 deletions

View 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))
{