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