scale reagent damage when under metabolism rate (#11578)

This commit is contained in:
Rane
2022-10-09 15:40:49 -04:00
committed by GitHub
parent bd86557f61
commit ee10581e88
6 changed files with 8 additions and 5 deletions

View File

@@ -172,7 +172,7 @@ namespace Content.Server.Body.Systems
var actualEntity = bodyEntityUid != null ? bodyEntityUid.Value : solutionEntityUid.Value;
var args = new ReagentEffectArgs(actualEntity, (meta).Owner, solution, proto, mostToRemove,
EntityManager, null);
EntityManager, null, entry);
// do all effects, if conditions apply
foreach (var effect in entry.Effects)

View File

@@ -34,6 +34,8 @@ namespace Content.Server.Chemistry.ReagentEffects
public override void Effect(ReagentEffectArgs args)
{
var scale = ScaleByQuantity ? args.Quantity : FixedPoint2.New(1);
if (args.MetabolismEffects != null)
scale *= (args.Quantity / args.MetabolismEffects.MetabolismRate);
EntitySystem.Get<DamageableSystem>().TryChangeDamage(args.SolutionEntity, Damage * scale, IgnoreResistances);
}
}

View File

@@ -192,7 +192,7 @@ namespace Content.Shared.Chemistry.Reaction
{
var args = new ReagentEffectArgs(owner, null, solution,
randomReagent,
unitReactions, EntityManager, null);
unitReactions, EntityManager, null, null);
foreach (var effect in reaction.Effects)
{

View File

@@ -47,7 +47,7 @@ namespace Content.Shared.Chemistry
// If we have a source solution, use the reagent quantity we have left. Otherwise, use the reaction volume specified.
var args = new ReagentEffectArgs(uid, null, source, reagent,
source?.GetReagentQuantity(reagent.ID) ?? reactVolume, EntityManager, method);
source?.GetReagentQuantity(reagent.ID) ?? reactVolume, EntityManager, method, null);
// First, check if the reagent wants to apply any effects.
if (reagent.ReactiveEffects != null && reactive.ReactiveGroups != null)

View File

@@ -82,6 +82,7 @@ namespace Content.Shared.Chemistry.Reagent
ReagentPrototype Reagent,
FixedPoint2 Quantity,
IEntityManager EntityManager,
ReactionMethod? Method
ReactionMethod? Method,
ReagentEffectsEntry? MetabolismEffects
);
}

View File

@@ -130,7 +130,7 @@ namespace Content.Shared.Chemistry.Reagent
var entMan = IoCManager.Resolve<IEntityManager>();
var random = IoCManager.Resolve<IRobustRandom>();
var args = new ReagentEffectArgs(plantHolder.Value, null, solution, this, amount.Quantity, entMan, null);
var args = new ReagentEffectArgs(plantHolder.Value, null, solution, this, amount.Quantity, entMan, null, null);
foreach (var plantMetabolizable in PlantMetabolisms)
{
if (!plantMetabolizable.ShouldApply(args, random))