Refactor reaction effects to use reagent effects (#5426)

* reaction effect refactor

* works now
This commit is contained in:
mirrorcult
2021-11-21 00:35:02 -07:00
committed by GitHub
parent 9b39838db7
commit 1ab7170adb
36 changed files with 83 additions and 82 deletions

View File

@@ -16,15 +16,18 @@ namespace Content.Server.Chemistry.ReagentEffects
[DataField("solution")]
private string _solution = "reagents";
public override void Metabolize(ReagentEffectArgs args)
public override void Effect(ReagentEffectArgs args)
{
if (args.Reagent == null)
return;
// TODO see if this is correct
if (!EntitySystem.Get<SolutionContainerSystem>()
.TryGetSolution(args.SolutionEntity, _solution, out var solutionContainer))
return;
if (EntitySystem.Get<SolutionContainerSystem>()
.TryAddReagent(args.SolutionEntity, solutionContainer, args.Reagent.ID, args.Metabolizing, out var accepted))
.TryAddReagent(args.SolutionEntity, solutionContainer, args.Reagent.ID, args.Quantity, out var accepted))
args.Source?.RemoveReagent(args.Reagent.ID, accepted);
}
}

View File

@@ -10,7 +10,7 @@ namespace Content.Server.Chemistry.ReagentEffects
[DataField("amount")]
public float Amount;
public override void Metabolize(ReagentEffectArgs args)
public override void Effect(ReagentEffectArgs args)
{
if (args.EntityManager.TryGetComponent(args.SolutionEntity, out TemperatureComponent temp))
{

View File

@@ -14,13 +14,13 @@ namespace Content.Server.Chemistry.ReagentEffects
[UsedImplicitly]
public class ExtinguishReaction : ReagentEffect
{
public override void Metabolize(ReagentEffectArgs args)
public override void Effect(ReagentEffectArgs args)
{
if (!args.EntityManager.TryGetComponent(args.SolutionEntity, out FlammableComponent? flammable)) return;
var flammableSystem = EntitySystem.Get<FlammableSystem>();
flammableSystem.Extinguish(args.SolutionEntity, flammable);
flammableSystem.AdjustFireStacks(args.SolutionEntity, -1.5f * (float) args.Metabolizing, flammable);
flammableSystem.AdjustFireStacks(args.SolutionEntity, -1.5f * (float) args.Quantity, flammable);
}
}
}

View File

@@ -14,12 +14,12 @@ namespace Content.Server.Chemistry.ReagentEffects
[UsedImplicitly]
public class FlammableReaction : ReagentEffect
{
public override void Metabolize(ReagentEffectArgs args)
public override void Effect(ReagentEffectArgs args)
{
if (!args.EntityManager.TryGetComponent(args.SolutionEntity, out FlammableComponent? flammable)) return;
EntitySystem.Get<FlammableSystem>().AdjustFireStacks(args.SolutionEntity, args.Metabolizing.Float() / 5f, flammable);
args.Source?.RemoveReagent(args.Reagent.ID, args.Metabolizing);
EntitySystem.Get<FlammableSystem>().AdjustFireStacks(args.SolutionEntity, args.Quantity.Float() / 5f, flammable);
args.Source?.RemoveReagent(args.Reagent.ID, args.Quantity);
}
}
}

View File

@@ -19,9 +19,9 @@ namespace Content.Server.Chemistry.ReagentEffects
[DataField("damage", required: true)]
public DamageSpecifier Damage = default!;
public override void Metabolize(ReagentEffectArgs args)
public override void Effect(ReagentEffectArgs args)
{
EntitySystem.Get<DamageableSystem>().TryChangeDamage(args.SolutionEntity, Damage * args.Metabolizing, true);
EntitySystem.Get<DamageableSystem>().TryChangeDamage(args.SolutionEntity, Damage * args.Quantity, true);
}
}
}

View File

@@ -37,7 +37,7 @@ namespace Content.Server.Chemistry.ReagentEffects
/// <summary>
/// Remove reagent at set rate, changes the movespeed modifiers and adds a MovespeedModifierMetabolismComponent if not already there.
/// </summary>
public override void Metabolize(ReagentEffectArgs args)
public override void Effect(ReagentEffectArgs args)
{
var status = args.EntityManager.EnsureComponent<MovespeedModifierMetabolismComponent>(args.SolutionEntity);
@@ -48,7 +48,7 @@ namespace Content.Server.Chemistry.ReagentEffects
status.WalkSpeedModifier = WalkSpeedModifier;
status.SprintSpeedModifier = SprintSpeedModifier;
IncreaseTimer(status, StatusLifetime * args.Metabolizing.Float());
IncreaseTimer(status, StatusLifetime * args.Quantity.Float());
if (modified)
EntitySystem.Get<MovementSpeedModifierSystem>().RefreshMovementSpeedModifiers(args.SolutionEntity);

View File

@@ -7,7 +7,7 @@ namespace Content.Server.Chemistry.ReagentEffects.PlantMetabolism
{
public class PlantAdjustHealth : PlantAdjustAttribute
{
public override void Metabolize(ReagentEffectArgs args)
public override void Effect(ReagentEffectArgs args)
{
if (!CanMetabolize(args.SolutionEntity, out var plantHolderComp, args.EntityManager))
return;

View File

@@ -7,7 +7,7 @@ namespace Content.Server.Chemistry.ReagentEffects.PlantMetabolism
{
public class PlantAdjustMutationLevel : PlantAdjustAttribute
{
public override void Metabolize(ReagentEffectArgs args)
public override void Effect(ReagentEffectArgs args)
{
if (!CanMetabolize(args.SolutionEntity, out var plantHolderComp, args.EntityManager))
return;

View File

@@ -8,7 +8,7 @@ namespace Content.Server.Chemistry.ReagentEffects.PlantMetabolism
[UsedImplicitly]
public class PlantAdjustMutationMod : PlantAdjustAttribute
{
public override void Metabolize(ReagentEffectArgs args)
public override void Effect(ReagentEffectArgs args)
{
if (!CanMetabolize(args.SolutionEntity, out var plantHolderComp, args.EntityManager))
return;

View File

@@ -8,7 +8,7 @@ namespace Content.Server.Chemistry.ReagentEffects.PlantMetabolism
[UsedImplicitly]
public class PlantAdjustNutrition : PlantAdjustAttribute
{
public override void Metabolize(ReagentEffectArgs args)
public override void Effect(ReagentEffectArgs args)
{
if (!CanMetabolize(args.SolutionEntity, out var plantHolderComp, args.EntityManager))
return;

View File

@@ -8,7 +8,7 @@ namespace Content.Server.Chemistry.ReagentEffects.PlantMetabolism
[UsedImplicitly]
public class PlantAdjustPests : PlantAdjustAttribute
{
public override void Metabolize(ReagentEffectArgs args)
public override void Effect(ReagentEffectArgs args)
{
if (!CanMetabolize(args.SolutionEntity, out var plantHolderComp, args.EntityManager))
return;

View File

@@ -8,7 +8,7 @@ namespace Content.Server.Chemistry.ReagentEffects.PlantMetabolism
[UsedImplicitly]
public class PlantAdjustToxins : PlantAdjustAttribute
{
public override void Metabolize(ReagentEffectArgs args)
public override void Effect(ReagentEffectArgs args)
{
if (!CanMetabolize(args.SolutionEntity, out var plantHolderComp, args.EntityManager))
return;

View File

@@ -8,7 +8,7 @@ namespace Content.Server.Chemistry.ReagentEffects.PlantMetabolism
[UsedImplicitly]
public class PlantAdjustWater : PlantAdjustAttribute
{
public override void Metabolize(ReagentEffectArgs args)
public override void Effect(ReagentEffectArgs args)
{
if (!CanMetabolize(args.SolutionEntity, out var plantHolderComp, args.EntityManager))
return;

View File

@@ -8,7 +8,7 @@ namespace Content.Server.Chemistry.ReagentEffects.PlantMetabolism
[UsedImplicitly]
public class PlantAdjustWeeds : PlantAdjustAttribute
{
public override void Metabolize(ReagentEffectArgs args)
public override void Effect(ReagentEffectArgs args)
{
if (!CanMetabolize(args.SolutionEntity, out var plantHolderComp, args.EntityManager))
return;

View File

@@ -8,7 +8,7 @@ namespace Content.Server.Chemistry.ReagentEffects.PlantMetabolism
[UsedImplicitly]
public class PlantAffectGrowth : PlantAdjustAttribute
{
public override void Metabolize(ReagentEffectArgs args)
public override void Effect(ReagentEffectArgs args)
{
if (!CanMetabolize(args.SolutionEntity, out var plantHolderComp, args.EntityManager))
return;

View File

@@ -15,7 +15,7 @@ namespace Content.Server.Chemistry.ReagentEffects.PlantMetabolism
[DataDefinition]
public class PlantClonexadone : ReagentEffect
{
public override void Metabolize(ReagentEffectArgs args)
public override void Effect(ReagentEffectArgs args)
{
if (!args.EntityManager.TryGetComponent(args.SolutionEntity, out PlantHolderComponent? plantHolderComp)
|| plantHolderComp.Seed == null || plantHolderComp.Dead)

View File

@@ -15,7 +15,7 @@ namespace Content.Server.Chemistry.ReagentEffects.PlantMetabolism
[DataDefinition]
public class PlantDiethylamine : ReagentEffect
{
public override void Metabolize(ReagentEffectArgs args)
public override void Effect(ReagentEffectArgs args)
{
if (!args.EntityManager.TryGetComponent(args.SolutionEntity, out PlantHolderComponent? plantHolderComp)
|| plantHolderComp.Seed == null || plantHolderComp.Dead ||

View File

@@ -15,7 +15,7 @@ namespace Content.Server.Chemistry.ReagentEffects.PlantMetabolism
[DataDefinition]
public class RobustHarvest : ReagentEffect
{
public override void Metabolize(ReagentEffectArgs args)
public override void Effect(ReagentEffectArgs args)
{
if (!args.EntityManager.TryGetComponent(args.SolutionEntity, out PlantHolderComponent? plantHolderComp)
|| plantHolderComp.Seed == null || plantHolderComp.Dead ||

View File

@@ -16,7 +16,7 @@ namespace Content.Server.Chemistry.ReagentEffects
[DataField("type")]
public PopupType Type = PopupType.Local;
public override void Metabolize(ReagentEffectArgs args)
public override void Effect(ReagentEffectArgs args)
{
var popupSys = args.EntityManager.EntitySysManager.GetEntitySystem<SharedPopupSystem>();
var random = IoCManager.Resolve<IRobustRandom>();

View File

@@ -29,7 +29,7 @@ namespace Content.Server.Chemistry.ReagentEffects
[DataField("amount", required: true)]
public FixedPoint2 Amount = default!;
public override void Metabolize(ReagentEffectArgs args)
public override void Effect(ReagentEffectArgs args)
{
if (args.Source != null)
{

View File

@@ -18,10 +18,10 @@ namespace Content.Server.Chemistry.ReagentEffects
[DataField("factor")] public float NutritionFactor { get; set; } = 3.0f;
//Remove reagent at set rate, satiate hunger if a HungerComponent can be found
public override void Metabolize(ReagentEffectArgs args)
public override void Effect(ReagentEffectArgs args)
{
if (args.EntityManager.TryGetComponent(args.SolutionEntity, out HungerComponent? hunger))
hunger.UpdateFood(NutritionFactor * (float) args.Metabolizing);
hunger.UpdateFood(NutritionFactor * (float) args.Quantity);
}
}
}

View File

@@ -18,10 +18,10 @@ namespace Content.Server.Chemistry.ReagentEffects
public float HydrationFactor { get; set; } = 3.0f;
/// Satiate thirst if a ThirstComponent can be found
public override void Metabolize(ReagentEffectArgs args)
public override void Effect(ReagentEffectArgs args)
{
if (args.EntityManager.TryGetComponent(args.SolutionEntity, out ThirstComponent? thirst))
thirst.UpdateThirst(HydrationFactor * (float) args.Metabolizing);
thirst.UpdateThirst(HydrationFactor * (float) args.Quantity);
}
}
}

View File

@@ -36,7 +36,7 @@ namespace Content.Server.Chemistry.ReagentEffects.StatusEffects
[DataField("type")]
public StatusEffectMetabolismType Type = StatusEffectMetabolismType.Add;
public override void Metabolize(ReagentEffectArgs args)
public override void Effect(ReagentEffectArgs args)
{
var statusSys = args.EntityManager.EntitySysManager.GetEntitySystem<StatusEffectsSystem>();
if (Type == StatusEffectMetabolismType.Add && Component != String.Empty)

View File

@@ -23,7 +23,7 @@ namespace Content.Server.Chemistry.ReagentEffects.StatusEffects
[DataField("time")]
public float Time = 2.0f;
public override void Metabolize(ReagentEffectArgs args)
public override void Effect(ReagentEffectArgs args)
{
args.EntityManager.EntitySysManager.GetEntitySystem<SharedJitteringSystem>()
.DoJitter(args.SolutionEntity, TimeSpan.FromSeconds(Time), Amplitude, Frequency);

View File

@@ -14,7 +14,7 @@ namespace Content.Server.Chemistry.ReagentEffects
[UsedImplicitly]
public class WashCreamPieReaction : ReagentEffect
{
public override void Metabolize(ReagentEffectArgs args)
public override void Effect(ReagentEffectArgs args)
{
if (!args.EntityManager.TryGetComponent(args.SolutionEntity, out CreamPiedComponent? creamPied)) return;