CatStation/Content.Shared/Projectiles/ComplexProjectileDamageComponent.cs
Rami bcf6324781
Xenoborg Nanite Gun + ComplexProjectileComponent (#43120)
* Xenoborg Nanite Gun

* Fix Sprite

* All the C# + Bullet Impact

* Muzzle flash + module

* Audio + Mag Sprites + Broken Crystals

* Fix fails + description

* fix

* Requested Changes Thanks B-krill :)

* Change healing values to 8

* Fix fails mayhaps

* Tweak Balancing two

* Balance changes final

* Requested chnages

* Cartridge Resprite

* New sounds by Sadie :D

* unrelated test

* Forgot to make module sprites

* Beck Changes

* Fix?

* New sprites :/

* Thanks Samuka :)

* Fix failure thanks orks :)

* Muzzle flash

* FURTHERgit add -A

* offset change

* Requested changes

* oops

* add whiteline

* make it for all borgs

* revert to whatever

* old sprites yay

* Fix heisentest

* oops

* new sprites

* fix

* description change

* ammo sprites

* attributions

* fifty commits yaygit add -A

* wtf

* MACROBALANCE RAHH

---------

Co-authored-by: beck-thompson <beck314159@hotmail.com>
Co-authored-by: Samuel-C <samuelcamilo8@gmail.com>
2026-08-03 16:40:13 +00:00

52 lines
1.6 KiB
C#

using Content.Shared.Damage;
using Content.Shared.Whitelist;
using Robust.Shared.GameStates;
namespace Content.Shared.Projectiles;
/// <summary>
/// A projectile with this component will not deal <see cref="ProjectileComponent.Damage"/>.
/// Instead, it will do damage based on the target if
/// said target passes the whitelist and blacklist of the options
/// </summary>
/// <remarks>
/// If the target doesn't match any option, the projectile will deal <see cref="ProjectileComponent.Damage"/>.
/// </remarks>
[RegisterComponent, NetworkedComponent]
public sealed partial class ComplexProjectileDamageComponent : Component
{
/// <summary>
/// Array of options of damage for specific entities.
/// </summary>
/// <remarks>
/// Only one option will choosen, if a target fits 2 options,
/// it will receive damage only from the first option that matches.
/// </remarks>
[DataField]
public DamageOption[] DamageOptions = [];
}
/// <summary>
/// Specifies a amount of damage to deal to entities that fit the whitelist and are not blacklisted.
/// </summary>
[DataDefinition]
public partial struct DamageOption
{
/// <summary>
/// The damage to deal to certain entities.
/// </summary>
[DataField]
public DamageSpecifier Damage;
/// <summary>
/// The whitelist of entities to deal the damage to.
/// </summary>
[DataField]
public EntityWhitelist? Whitelist;
/// <summary>
/// The blacklist of entities to not deal the damage to.
/// </summary>
[DataField]
public EntityWhitelist? Blacklist;
}