mirror of
https://github.com/wega-team/ss14-wega.git
synced 2026-02-14 19:30:01 +01:00
* Hitscans are now entities * Cleanup * Cleanup * Silly mistakes but stop sign testing helps :) * Address most of the review * Reviews * perry :( * Final reviews * Add comments * Split event up * better comment * cleanup
39 lines
1.1 KiB
C#
39 lines
1.1 KiB
C#
using Content.Shared.Damage;
|
|
using Content.Shared.Weapons.Hitscan.Components;
|
|
using Content.Shared.Weapons.Hitscan.Events;
|
|
|
|
namespace Content.Shared.Weapons.Hitscan.Systems;
|
|
|
|
public sealed class HitscanBasicDamageSystem : EntitySystem
|
|
{
|
|
[Dependency] private readonly DamageableSystem _damage = default!;
|
|
|
|
public override void Initialize()
|
|
{
|
|
base.Initialize();
|
|
|
|
SubscribeLocalEvent<HitscanBasicDamageComponent, HitscanRaycastFiredEvent>(OnHitscanHit);
|
|
}
|
|
|
|
private void OnHitscanHit(Entity<HitscanBasicDamageComponent> ent, ref HitscanRaycastFiredEvent args)
|
|
{
|
|
if (args.Data.HitEntity == null)
|
|
return;
|
|
|
|
var dmg = ent.Comp.Damage * _damage.UniversalHitscanDamageModifier;
|
|
|
|
var damageDealt = _damage.TryChangeDamage(args.Data.HitEntity, dmg, origin: args.Data.Gun);
|
|
|
|
if (damageDealt == null)
|
|
return;
|
|
|
|
var damageEvent = new HitscanDamageDealtEvent
|
|
{
|
|
Target = args.Data.HitEntity.Value,
|
|
DamageDealt = damageDealt,
|
|
};
|
|
|
|
RaiseLocalEvent(ent, ref damageEvent);
|
|
}
|
|
}
|