Files
wwdpublic/Content.Shared/_White/Guns/ProjectileDamageModifier.cs
RedFoxIV 0536fc8645 Fuselage rust stage 2 (#629)
* the definition of insanity

* the definition of insanity

* the definition of insanity

* we have hullrot at home

* maybe the real hullrot was the friends we made along the way

* john hullrot

* i am going to hullroooooot

* it's hullrotver

* we're so hullback

* we're rotting the hull with this one

* hullmerge

* the hullrot is leaking

* never gonna rot you up

* hullfresh

* john starsector

* god i wish we had grid collision damage

* you can tell I am very tired because I stopped forcing a hullrot joke into every commit message

* hr

* this is a surprise sprite that will help us later

* motherfucker

* i have nothing good to say

* still nothing

* brb

* random letter random letter random letter dash random number random number random number

* ass

* blast

* ffs

* fcuk

* RE: ffs

* RE: RE: ffs

* гнида жестяная

* continue

* i hate tests

* i love tests

* slide to the right

* i hate tests again

* what the fuck

* ты шиз?

* ??

* bbgun
2025-06-28 11:31:07 +03:00

54 lines
1.4 KiB
C#

using Content.Shared.Projectiles;
using Content.Shared.Whitelist;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Content.Shared._White.Guns;
[RegisterComponent]
public sealed partial class ProjectileDamageModifierComponent : Component
{
[DataField(required: true)]
public List<WhitelistMultiplierPair> Multipliers = new();
[DataField]
public float DefaultMultiplier = 1f;
}
[DataDefinition]
public sealed partial class WhitelistMultiplierPair
{
[DataField(required: true)]
public EntityWhitelist Whitelist = new();
[DataField(required: true)]
public float Multiplier;
}
public sealed class ProjectileDamageMultiplierSystem : EntitySystem
{
[Dependency] private readonly EntityWhitelistSystem _whitelist = default!;
public override void Initialize()
{
SubscribeLocalEvent<ProjectileDamageModifierComponent, ProjectileHitEvent>(OnHit);
}
private void OnHit(EntityUid uid, ProjectileDamageModifierComponent comp, ref ProjectileHitEvent args)
{
foreach(var pair in comp.Multipliers)
{
if (_whitelist.IsWhitelistPass(pair.Whitelist, args.Target))
{
args.Damage *= pair.Multiplier;
return;
}
}
args.Damage *= comp.DefaultMultiplier;
}
}