using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; using Robust.Shared.Prototypes; using Content.Shared.Actions.ActionTypes; using Robust.Shared.Utility; namespace Content.Server.Bible.Components { /// /// This lets you summon a mob or item with an alternative verb on the item /// [RegisterComponent] public sealed class SummonableComponent : Component { /// /// 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("requriesBibleUser")] public bool RequiresBibleUser = true; /// /// The specific creature this summoned, if the SpecialItemPrototype has a mobstate. /// [ViewVariables] public EntityUid? Summon = null; [DataField("summonAction")] public InstantAction SummonAction = new() { Icon = new SpriteSpecifier.Texture(new ResourcePath("Clothing/Head/Hats/witch.rsi/icon.png")), Name = "bible-summon-verb", Description = "bible-summon-verb-desc", Event = new SummonActionEvent(), }; /// Used for respawning [ViewVariables] [DataField("accumulator")] public float Accumulator = 0f; [ViewVariables] [DataField("respawnTime")] public float RespawnTime = 180f; } }