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;
}