// SPDX-FileCopyrightText: 2025 GoobBot // SPDX-FileCopyrightText: 2025 Solstice // SPDX-FileCopyrightText: 2025 SolsticeOfTheWinter // // SPDX-License-Identifier: AGPL-3.0-or-later namespace Content.Shared._Goobstation.Devil.Contract; [RegisterComponent] public sealed partial class DevilContractComponent : Component { /// /// The entity who signed the paper, AKA, the entity who has the effects applied. /// [DataField] public EntityUid? Signer; /// /// The entity who created the contract, AKA, the entity who gains the soul. /// [DataField] public EntityUid? ContractOwner; /// /// All current clauses. /// [DataField] public HashSet CurrentClauses = []; /// /// Has the contract been signed by the signer? /// [DataField] public bool IsVictimSigned; /// /// Has the contract been signed by the devil? /// [DataField] public bool IsDevilSigned; /// /// Has the contract been signed by both the devil and the victim? /// public bool IsContractFullySigned => IsVictimSigned && IsDevilSigned; public bool IsContractSignable => ContractWeight >= 0; public bool CanApplyEffects => IsContractFullySigned && IsContractSignable && Signer != null && ContractOwner != null; /// /// Does the contract weigh positively or negatively? /// /// /// The higher it is, the more the cons. /// [DataField] public int ContractWeight; }