Fix healingcomp placement (#8045)

This commit is contained in:
metalgearsloth
2022-05-09 16:21:32 +10:00
committed by GitHub
parent 07d94ddf4e
commit 4c3c814077

View File

@@ -78,44 +78,37 @@ public sealed class HealingSystem : EntitySystem
{ {
if (args.Handled) return; if (args.Handled) return;
args.Handled = true; if (TryHeal(uid, args.User, args.User, component))
Heal(uid, args.User, args.User, component); args.Handled = true;
} }
private void OnHealingAfterInteract(EntityUid uid, HealingComponent component, AfterInteractEvent args) private void OnHealingAfterInteract(EntityUid uid, HealingComponent component, AfterInteractEvent args)
{ {
if (args.Handled || !args.CanReach || args.Target == null) return; if (args.Handled || !args.CanReach || args.Target == null) return;
args.Handled = true; if (TryHeal(uid, args.User, args.Target.Value, component))
Heal(uid, args.User, args.Target.Value, component); args.Handled = true;
} }
private void Heal(EntityUid uid, EntityUid user, EntityUid target, HealingComponent component) private bool TryHeal(EntityUid uid, EntityUid user, EntityUid target, HealingComponent component)
{ {
if (component.CancelToken != null)
{
component.CancelToken?.Cancel();
component.CancelToken = null;
return;
}
if (TryComp<MobStateComponent>(target, out var state) && state.IsDead()) if (TryComp<MobStateComponent>(target, out var state) && state.IsDead())
return; return false;
if (!TryComp<DamageableComponent>(target, out var targetDamage)) if (!TryComp<DamageableComponent>(target, out var targetDamage))
return; return false;
if (component.DamageContainerID is not null && !component.DamageContainerID.Equals(targetDamage.DamageContainerID)) if (component.DamageContainerID is not null && !component.DamageContainerID.Equals(targetDamage.DamageContainerID))
return; return false;
if (user != target && if (user != target &&
!_interactionSystem.InRangeUnobstructed(user, target, popup: true)) !_interactionSystem.InRangeUnobstructed(user, target, popup: true))
{ {
return; return false;
} }
if (TryComp<SharedStackComponent>(component.Owner, out var stack) && stack.Count < 1) if (TryComp<SharedStackComponent>(component.Owner, out var stack) && stack.Count < 1)
return; return false;
component.CancelToken = new CancellationTokenSource(); component.CancelToken = new CancellationTokenSource();
@@ -148,6 +141,8 @@ public sealed class HealingSystem : EntitySystem
return true; return true;
}, },
}); });
return true;
} }
private sealed class HealingCompleteEvent : EntityEventArgs private sealed class HealingCompleteEvent : EntityEventArgs