using Content.Shared.Botany.Components;
using Content.Shared.Botany.Systems;
using Content.Shared.Random.Helpers;
using Robust.Shared.Prototypes;
using Robust.Shared.Random;
using Robust.Shared.Timing;
namespace Content.Shared.EntityEffects.Effects.Botany;
///
/// Plant mutation entity effect that forces plant to exude gas while living.
///
///
public sealed partial class PlantMutateExudeGasesEntityEffectSystem : EntityEffectSystem
{
[Dependency] private IGameTiming _timing = default!;
[Dependency] private SharedPlantConsumeExudeGasSystem _plantConsumeExudeGas = default!;
protected override void Effect(Entity entity, ref EntityEffectEvent args)
{
var random = SharedRandomExtensions.PredictedRandom(_timing, GetNetEntity(entity));
var amount = random.NextFloat(args.Effect.MinValue, args.Effect.MaxValue);
_plantConsumeExudeGas.MutateRandomExudeGasses(entity.Owner, amount);
}
}
///
public sealed partial class PlantMutateExudeGases : EntityEffectBase
{
///
/// The minimum amount of gas to consume.
///
[DataField]
public float MinValue = 0.01f;
///
/// The maximum amount of gas to consume.
///
[DataField]
public float MaxValue = 0.5f;
///
public override string EntityEffectGuidebookText(IPrototypeManager prototype, IEntitySystemManager entSys)
{
return Loc.GetString("entity-effect-guidebook-plant-mutate-exude-gasses",
("chance", Probability),
("minValue", MinValue),
("maxValue", MaxValue));
}
}
///
/// Plant mutation entity effect that forces plant to consume gas while living.
///
///
public sealed partial class PlantMutateConsumeGasesEntityEffectSystem : EntityEffectSystem
{
[Dependency] private IGameTiming _timing = default!;
[Dependency] private SharedPlantConsumeExudeGasSystem _plantConsumeExudeGas = default!;
protected override void Effect(Entity entity, ref EntityEffectEvent args)
{
var random = SharedRandomExtensions.PredictedRandom(_timing, GetNetEntity(entity));
var amount = random.NextFloat(args.Effect.MinValue, args.Effect.MaxValue);
_plantConsumeExudeGas.MutateRandomConsumeGasses(entity.Owner, amount);
}
}
///
public sealed partial class PlantMutateConsumeGases : EntityEffectBase
{
///
/// The minimum amount of gas to exude.
///
[DataField]
public float MinValue = 0.01f;
///
/// The maximum amount of gas to exude.
///
[DataField]
public float MaxValue = 0.5f;
///
public override string EntityEffectGuidebookText(IPrototypeManager prototype, IEntitySystemManager entSys)
{
return Loc.GetString("entity-effect-guidebook-plant-mutate-consume-gasses",
("chance", Probability),
("minValue", MinValue),
("maxValue", MaxValue));
}
}