using Content.Shared.Arcade; using Content.Shared.Dataset; using Robust.Shared.Audio; using Robust.Shared.Prototypes; namespace Content.Server.Arcade.SpaceVillain; [RegisterComponent] public sealed partial class SpaceVillainArcadeComponent : SharedSpaceVillainArcadeComponent { /// /// Unused flag that can be hacked via wires. /// Name suggests that it was intended to either make the health/mana values underflow while playing the game or turn the arcade machine into an infinite prize fountain. /// [ViewVariables] public bool OverflowFlag; /// /// The current session of the SpaceVillain game for this arcade machine. /// [ViewVariables] public SpaceVillainGame? Game = null; /// /// The sound played when a new session of the SpaceVillain game is begun. /// [DataField] public SoundSpecifier NewGameSound = new SoundPathSpecifier("/Audio/Effects/Arcade/newgame.ogg"); /// /// The sound played when the player chooses to attack. /// [DataField] public SoundSpecifier PlayerAttackSound = new SoundPathSpecifier("/Audio/Effects/Arcade/player_attack.ogg"); /// /// The sound played when the player chooses to heal. /// [DataField] public SoundSpecifier PlayerHealSound = new SoundPathSpecifier("/Audio/Effects/Arcade/player_heal.ogg"); /// /// The sound played when the player chooses to regain mana. /// [DataField] public SoundSpecifier PlayerChargeSound = new SoundPathSpecifier("/Audio/Effects/Arcade/player_charge.ogg"); /// /// The sound played when the player wins. /// [DataField] public SoundSpecifier WinSound = new SoundPathSpecifier("/Audio/Effects/Arcade/win.ogg"); /// /// The sound played when the player loses. /// [DataField] public SoundSpecifier GameOverSound = new SoundPathSpecifier("/Audio/Effects/Arcade/gameover.ogg"); /// /// The prefixes that can be used to create the game name. /// [DataField] public ProtoId PossibleFightVerbs = "SpaceVillainVerbsFight"; /// /// The first names/titles that can be used to construct the name of the villain. /// [DataField] public ProtoId PossibleFirstEnemyNames = "SpaceVillainNamesEnemyFirst"; /// /// The last names that can be used to construct the name of the villain. /// [DataField] public ProtoId PossibleLastEnemyNames = "SpaceVillainNamesEnemyLast"; /// /// The prototypes that can be dispensed as a reward for winning the game. /// [DataField] public List PossibleRewards = new(); /// /// The minimum number of prizes the arcade machine can have. /// [DataField] public int RewardMinAmount; /// /// The maximum number of prizes the arcade machine can have. /// [DataField] public int RewardMaxAmount; /// /// The remaining number of prizes the arcade machine can dispense. /// [ViewVariables(VVAccess.ReadWrite)] public int RewardAmount = 0; }