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);
}
}
}