using Content.Shared.FixedPoint; using Content.Shared.Store; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; namespace Content.Shared.PAI; /// /// pAIs, or Personal AIs, are essentially portable ghost role generators. /// In their current implementation in SS14, they create a ghost role anyone can access, /// and that a player can also "wipe" (reset/kick out player). /// Theoretically speaking pAIs are supposed to use a dedicated "offer and select" system, /// with the player holding the pAI being able to choose one of the ghosts in the round. /// This seems too complicated for an initial implementation, though, /// and there's not always enough players and ghost roles to justify it. /// All logic in PAISystem. /// [RegisterComponent, NetworkedComponent, AutoGenerateComponentState] public sealed partial class PAIComponent : Component { /// /// The last person who activated this PAI. /// Used for assigning the name. /// [DataField, ViewVariables(VVAccess.ReadWrite)] public EntityUid? LastUser; [DataField] public EntProtoId ShopActionId = "ActionPAIOpenShop"; [DataField, AutoNetworkedField] public EntityUid? ShopAction; /// /// When microwaved there is this chance to brick the pai, kicking out its player and preventing it from being used again. /// [DataField] public float BrickChance = 0.5f; /// /// Locale id for the popup shown when the pai gets bricked. /// [DataField] public string BrickPopup = "pai-system-brick-popup"; /// /// Locale id for the popup shown when the pai is microwaved but does not get bricked. /// [DataField] public string ScramblePopup = "pai-system-scramble-popup"; }