// SPDX-FileCopyrightText: 2025 GoobBot // SPDX-FileCopyrightText: 2025 Solstice // SPDX-FileCopyrightText: 2025 SolsticeOfTheWinter // // SPDX-License-Identifier: AGPL-3.0-or-later using Content.Shared.Polymorph; using Robust.Shared.Audio; using Robust.Shared.Prototypes; namespace Content.Shared._Goobstation.Devil.Condemned; /// /// Marks an entity as having sold their soul. /// When you die, do NOT collect 200, do NOT pass go. Go directly to hell /// /// /// This should *really* be two components. /// [RegisterComponent] public sealed partial class CondemnedComponent : Component { /// /// The current phase of the condemnation animation. /// [DataField] public CondemnedPhase CurrentPhase = CondemnedPhase.Waiting; /// /// Who owns this entities soul /// [DataField] public EntityUid? SoulOwner; /// /// The elapsed time of the phase. /// [DataField] public float PhaseTimer; /// /// How long the hand effect will last /// [DataField] public float HandDuration; /// /// Should the examine message show when examining someone with this component? /// [DataField("showExamine")] public bool ShowExamineMessage = true; /// /// Is this entities soul owned, but not by a devil? /// [DataField] public bool SoulOwnedNotDevil; /// /// Should this entity be sent to hell on death? /// [DataField] public bool CondemnOnDeath; /// /// Was this target already weak to holy before becoming condemned? /// [DataField] public bool WasWeakToHoly; /// /// Should movement be locked during the animation? /// [DataField] public bool FreezeDuringCondemnation; /// /// If true, scrambles the targets DNA after banishing them. /// [DataField] public bool ScrambleAfterBanish = true; /// /// Should this entity be banished (sent to limbo for several minutes) or should they just be deleted? /// [DataField] public CondemnedBehavior CondemnedBehavior = CondemnedBehavior.Delete; [DataField] public EntProtoId PentagramProto = "Pentagram"; [DataField] public EntProtoId HandProto = "HellHand"; [DataField] public SoundPathSpecifier SoundEffect = new("/Audio/_Goobstation/Effects/earth_quake.ogg"); [DataField] public ProtoId BanishProto = "ShadowJaunt180"; } public enum CondemnedPhase : byte { Waiting, PentagramActive, HandActive, Complete } public enum CondemnedBehavior : byte { Delete, Banish, }