using Content.Shared.Botany.Components; using Content.Shared.Botany.Events; using Content.Shared.Botany.Systems; using Content.Shared.Botany.Traits.Components; namespace Content.Shared.Botany.Traits.Systems; /// public sealed partial class PlantTraitKudzuSystem : EntitySystem { [Dependency] private PlantHolderSystem _plantHolder = default!; [Dependency] private PlantTraySystem _plantTray = default!; [Dependency] private SharedTransformSystem _transform = default!; [Dependency] private EntityQuery _trayQuery; [SubscribeLocalEvent] private void OnPlantGrow(Entity ent, ref PlantGrowEvent args) { var trayUid = args.Tray; if (!_trayQuery.TryComp(trayUid, out var trayComp)) return; if (trayComp is { WaterLevel: > 10, NutritionLevel: > 5 }) _plantTray.AdjustWeed(trayUid, ent.Comp.WeedGrowthAmount); // Handle kudzu transformation. if (trayComp.WeedLevel >= ent.Comp.WeedLevelThreshold) { PredictedSpawn(ent.Comp.KudzuPrototype, _transform.GetMapCoordinates(ent.Owner)); RemComp(ent.Owner); _plantHolder.KillPlant(ent.Owner); } } }