Files
OldThink/Content.Server/White/Crossbow/ThrowDamageModifierSystem.cs
Aviu00 d0431ee61e Crossbow (#327)
* Add powered crossbow

* Add spear embedding (#18578)

* Add spear embedding

* fuck this copy-paste

* Juicier

* the river

* Add crossbow embedding

* Fix crossbow construction

* Finish crossbow

* Remove unused

---------

Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2024-01-21 07:04:30 +03:00

44 lines
1.4 KiB
C#

using Content.Shared.Projectiles;
using Content.Shared.Throwing;
using Content.Shared.White.Crossbow;
namespace Content.Server.White.Crossbow;
public sealed class ThrowDamageModifierSystem : EntitySystem
{
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<ThrowDamageModifierComponent, StopThrowEvent>(OnStopped);
SubscribeLocalEvent<ThrowDamageModifierComponent, EmbedStartEvent>(OnEmbedStart);
SubscribeLocalEvent<ThrowDamageModifierComponent, EmbedRemovedEvent>(OnEmbedRemoved);
}
private void OnEmbedStart(EntityUid uid, ThrowDamageModifierComponent component, ref EmbedStartEvent args)
{
component.ClearDamageOnRemove = true;
if (component.AddEmbedding)
args.Embed.PreventEmbedding = true;
}
private void OnEmbedRemoved(EntityUid uid, ThrowDamageModifierComponent component, EmbedRemovedEvent args)
{
if (!component.ClearDamageOnRemove)
return;
component.ClearDamageOnRemove = false;
component.Damage.DamageDict.Clear();
if (component.AddEmbedding)
RemComp<EmbeddableProjectileComponent>(uid);
}
private void OnStopped(EntityUid uid, ThrowDamageModifierComponent component, StopThrowEvent args)
{
if (!component.ClearDamageOnRemove)
component.Damage.DamageDict.Clear();
}
}