Fix healingcomp placement (#8045)
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user