using Robust.Shared.Audio; using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; namespace Content.Server.Bible.Components { /// /// This lets you summon a mob or item with an alternative verb on the item /// [RegisterComponent] public sealed partial class SummonableComponent : Component { /// /// Default sound to play when entity is summoned. /// private static readonly ProtoId DefaultSummonSound = new("Summon"); /// /// Sound to play when entity is summoned. /// [DataField] public SoundSpecifier SummonSound = new SoundCollectionSpecifier(DefaultSummonSound, AudioParams.Default.WithVolume(-4f)); /// /// Used for a special item only the Chaplain can summon. Usually a mob, but supports regular items too. /// [DataField("specialItem", customTypeSerializer: typeof(PrototypeIdSerializer))] public string? SpecialItemPrototype = null; public bool AlreadySummoned = false; [DataField("requiresBibleUser")] public bool RequiresBibleUser = true; /// /// The specific creature this summoned, if the SpecialItemPrototype has a mobstate. /// [ViewVariables] public EntityUid? Summon = null; [DataField("summonAction", customTypeSerializer: typeof(PrototypeIdSerializer))] public string SummonAction = "ActionBibleSummon"; [DataField("summonActionEntity")] public EntityUid? SummonActionEntity; /// Used for respawning [DataField("accumulator")] public float Accumulator = 0f; [DataField("respawnTime")] public float RespawnTime = 180f; } }