Display obvious plant mutations in examine text (#32650)

* Effect mutations now display on examine

* ChangeSpecies shouldn't stay on the list after running. Name cleanup

* EmoGarbage Review - convert description to LocId and add minor logic fix

* fix the dastardly yaml

---------

Co-authored-by: PraxisMapper <praxismapper@gmail.com>
Co-authored-by: EmoGarbage404 <retron404@gmail.com>
This commit is contained in:
drakewill-CRL
2025-04-29 00:45:10 -04:00
committed by GitHub
parent 9a3e70ca13
commit 294a5a1b69
6 changed files with 53 additions and 2 deletions

View File

@@ -1,5 +1,6 @@
using Content.Server.Botany.Components;
using Content.Shared.EntityEffects;
using Content.Shared.Examine;
using Content.Shared.FixedPoint;
namespace Content.Server.Botany.Systems;
@@ -37,4 +38,23 @@ public sealed partial class BotanySystem
solutionContainer.AddReagent(chem, amount);
}
}
public void OnProduceExamined(EntityUid uid, ProduceComponent comp, ExaminedEvent args)
{
if (comp.Seed == null)
return;
using (args.PushGroup(nameof(ProduceComponent)))
{
foreach (var m in comp.Seed.Mutations)
{
// Don't show mutations that have no effect on produce (sentience)
if (!m.AppliesToProduce)
continue;
if (m.Description != null)
args.PushMarkup(Loc.GetString(m.Description));
}
}
}
}

View File

@@ -36,6 +36,7 @@ public sealed partial class BotanySystem : EntitySystem
base.Initialize();
SubscribeLocalEvent<SeedComponent, ExaminedEvent>(OnExamined);
SubscribeLocalEvent<ProduceComponent, ExaminedEvent>(OnProduceExamined);
}
public bool TryGetSeed(SeedComponent comp, [NotNullWhen(true)] out SeedData? seed)

View File

@@ -116,6 +116,20 @@ public sealed class PlantHolderSystem : EntitySystem
? "plant-holder-component-plant-old-adjective"
: "plant-holder-component-plant-unhealthy-adjective"))));
}
// For future reference, mutations should only appear on examine if they apply to a plant, not to produce.
if (component.Seed.Ligneous)
args.PushMarkup(Loc.GetString("mutation-plant-ligneous"));
if (component.Seed.TurnIntoKudzu)
args.PushMarkup(Loc.GetString("mutation-plant-kudzu"));
if (component.Seed.CanScream)
args.PushMarkup(Loc.GetString("mutation-plant-scream"));
if (component.Seed.Viable == false)
args.PushMarkup(Loc.GetString("mutation-plant-unviable"));
}
else
{