Clean up terrible solution entity reaction copy pasta.

This commit is contained in:
Pieter-Jan Briers
2021-01-23 16:49:22 +01:00
parent ae91059c0b
commit 85fcf7290c
6 changed files with 23 additions and 36 deletions

View File

@@ -201,19 +201,11 @@ namespace Content.Server.GameObjects.Components.Chemistry
// TODO: Account for partial transfer.
foreach (var (reagentId, quantity) in removedSolution.Contents)
{
if(!_prototypeManager.TryIndex(reagentId, out ReagentPrototype reagent)) continue;
removedSolution.RemoveReagent(reagentId, reagent.ReactionEntity(solution.Owner, ReactionMethod.Injection, quantity));
}
removedSolution.DoEntityReaction(solution.Owner, ReactionMethod.Injection);
solution.TryAddSolution(removedSolution);
foreach (var (reagentId, quantity) in removedSolution.Contents)
{
if(!_prototypeManager.TryIndex(reagentId, out ReagentPrototype reagent)) continue;
reagent.ReactionEntity(targetBloodstream.Owner, ReactionMethod.Injection, quantity);
}
removedSolution.DoEntityReaction(targetBloodstream.Owner, ReactionMethod.Injection);
Owner.PopupMessage(user, Loc.GetString("You inject {0}u into {1:theName}!", removedSolution.TotalVolume, targetBloodstream.Owner));
Dirty();
@@ -243,11 +235,7 @@ namespace Content.Server.GameObjects.Components.Chemistry
return;
}
foreach (var (reagentId, quantity) in removedSolution.Contents)
{
if(!_prototypeManager.TryIndex(reagentId, out ReagentPrototype reagent)) continue;
removedSolution.RemoveReagent(reagentId, reagent.ReactionEntity(targetSolution.Owner, ReactionMethod.Injection, quantity));
}
removedSolution.DoEntityReaction(targetSolution.Owner, ReactionMethod.Injection);
targetSolution.TryAddSolution(removedSolution);

View File

@@ -103,11 +103,7 @@ namespace Content.Server.GameObjects.Components.Chemistry
// TODO: Account for partial transfer.
foreach (var (reagentId, quantity) in split.Contents)
{
if (!_prototypeManager.TryIndex(reagentId, out ReagentPrototype reagent)) continue;
split.RemoveReagent(reagentId, reagent.ReactionEntity(trueTarget, ReactionMethod.Ingestion, quantity));
}
split.DoEntityReaction(trueTarget, ReactionMethod.Ingestion);
firstStomach.TryTransferSolution(split);

View File

@@ -135,12 +135,7 @@ namespace Content.Server.GameObjects.Components.Chemistry
if (!Owner.TryGetComponent(out SolutionContainerComponent contents))
return;
foreach (var reagentQuantity in contents.ReagentList.ToArray())
{
if (reagentQuantity.Quantity == ReagentUnit.Zero) continue;
var reagent = _prototypeManager.Index<ReagentPrototype>(reagentQuantity.ReagentId);
contents.TryRemoveReagent(reagentQuantity.ReagentId, reagent.ReactionEntity(collidedWith, ReactionMethod.Touch, reagentQuantity.Quantity * 0.125f));
}
contents.Solution.DoEntityReaction(collidedWith, ReactionMethod.Touch);
// Check for collision with a impassable object (e.g. wall) and stop
if (collidedWith.TryGetComponent(out IPhysicsComponent physics))