mirror of
https://github.com/WWhiteDreamProject/wwdpublic.git
synced 2026-04-20 15:08:46 +03:00
* 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
54 lines
1.4 KiB
C#
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;
|
|
}
|
|
}
|