- type: entity
  abstract: true
  id: ArcadeBase
  description: An arcade cabinet.
  name: arcade
  parent: BaseComputer
  components:
  - type: ApcPowerReceiver
    powerLoad: 350
  - type: ExtensionCableReceiver
  - type: PointLight
    radius: 1.8
    energy: 3.0
    color: "#3db83b"
  - type: LitOnPowered
  - type: Sprite
    sprite: Structures/Machines/arcade.rsi
    layers:
    - map: ["computerLayerBody"]
      state: arcade
    - map: ["computerLayerScreen"]
      state: screen_invaders
    - map: ["enum.WiresVisualLayers.MaintenancePanel"]
      state: panel
      visible: false
  - type: Icon
    sprite: Structures/Machines/arcade.rsi
    state: arcade
  - type: WiresPanel
  - type: Wires
    layoutId: Arcade
    boardName: wires-board-name-arcade
  - type: WiresVisuals
  - type: TypingIndicator
    proto: robot
  - type: Speech
    speechVerb: Robotic
    speechSounds: Vending
  - type: SpookySpeaker
    messageSet: SpookySpeakerMessagesGeneric
    speakChance: 0.2
  - type: Anchorable
  - type: Pullable
  - type: StaticPrice
    price: 300
  - type: SpamEmitSoundRequirePower
  - type: SpamEmitSound
    minInterval: 30
    maxInterval: 90
    sound:
      collection: ArcadeNoise
      params:
        volume: -8
        maxDistance: 10
        variation: 0.05

- type: entity
  id: SpaceVillainArcade
  name: space villain arcade
  parent: ArcadeBase
  components:
  - type: Sprite
    sprite: Structures/Machines/arcade.rsi
    layers:
    - map: ["computerLayerBody"]
      state: arcade
    - map: ["computerLayerScreen"]
      state: screen_spacevillain
    - map: ["enum.WiresVisualLayers.MaintenancePanel"]
      state: panel
      visible: false
  - type: PointLight
    color: "#e3a136"
  - type: SpaceVillainArcade
    rewardMinAmount: 0
    rewardMaxAmount: 0
    possibleRewards:
    - Basketball
    - BalloonNT
    - BalloonCorgi
    - BoxDonkSoftBox
    - BoxCartridgeCap
    - BeachBall
    - CandyBucket
    - CrayonBox
    - ClothingHeadHatCowboyRed
    - FoamCrossbow
    - FoamBlade
    - FoamCutlass
    - Football
    - GlowstickGreen
    - GlowstickBlue
    - GlowstickYellow
    - GlowstickPurple
    - GlowstickRed
    - HarmonicaInstrument
    - OcarinaInstrument
    - RecorderInstrument
    - GunpetInstrument
    - BirdToyInstrument
    - MysteryFigureBox
    - PlushieHampter
    - PlushieLizard
    - PlushieRainbowLizard
    - PlushieAtmosian
    - PlushieSpaceLizard
    - PlushieNuke
    - PlushieCarp
    - PlushieMagicarp
    - PlushieHolocarp
    - PlushieRainbowCarp
    - PlushieRatvar
    - PlushieNar
    - PlushieSnake
    - PlushieArachind
    - PlushieMoth
    - PlushieVulp
    - PlushieHampter
    - PlushiePenguin
    - PlushieHuman
    - PlushieRouny
    - PlushieBee
    - PlushieSlime
    - PlushieGhost
    - PlushieDiona
    - PlushieSharkBlue
    - PlushieVox
    - PlushieXeno
    - PlasticBanana
    - RevolverCapGun
    - SnapPopBox
    - TennisBall
    - ToyMouse
    - ToyAi
    - ToyNuke
    - ToyFigurineGriffin
    - ToyHonk
    - ToyIan
    - ToyMarauder
    - ToyMauler
    - ToyGygax
    - ToyOdysseus
    - ToyFigurineOwlman
    - ToyDeathRipley
    - ToyPhazon
    - ToyFireRipley
    - ToyReticence
    - ToyRipley
    - ToySeraph
    - ToyDurand
    - ToyFigurineSkeleton
    - ToySword
    - ToyAmongPequeno
    - ToyRubberDuck
    - ToyHammer
    - WeaponWaterPistol
    - WhoopieCushion
    - Whistle
  - type: WiresPanel
  - type: Wires
    layoutId: Arcade
    boardName: wires-board-name-arcade
  - type: ActivatableUI
    key: enum.SpaceVillainArcadeUiKey.Key
  - type: ActivatableUIRequiresPower
  - type: StationAiWhitelist
  - type: UserInterface
    interfaces:
      enum.SpaceVillainArcadeUiKey.Key:
        type: SpaceVillainArcadeBoundUserInterface
      enum.WiresUiKey.Key:
        type: WiresBoundUserInterface
  - type: Computer
    board: SpaceVillainArcadeComputerCircuitboard
  - type: Vocalizer
    minVocalizeInterval: 1m # Arcades are noisy
    maxVocalizeInterval: 4m
    hideChat: true
  - type: DatasetVocalizer
    dataset: SpaceVillainAds
  - type: SpeakOnUIClosed
    pack: SpaceVillainGoodbyes

- type: entity
  id: SpaceVillainArcadeFilled
  parent: SpaceVillainArcade
  suffix: Filled
  components:
  - type: SpaceVillainArcade
    rewardMinAmount: 5
    rewardMaxAmount: 8

- type: entity
  id: BlockGameArcade
  description: An arcade cabinet with a strangely familiar game.
  name: NT block game
  parent: ArcadeBase
  components:
  - type: Sprite
    sprite: Structures/Machines/arcade.rsi
    layers:
    - map: ["computerLayerBody"]
      state: arcade
    - map: ["computerLayerScreen"]
      state: screen_blockgame
    - map: ["enum.WiresVisualLayers.MaintenancePanel"]
      state: panel
      visible: false
  - type: BlockGameArcade
  - type: ActivatableUI
    key: enum.BlockGameUiKey.Key
  - type: ActivatableUIRequiresPower
  - type: StationAiWhitelist
  - type: UserInterface
    interfaces:
      enum.BlockGameUiKey.Key:
        type: BlockGameBoundUserInterface
      enum.WiresUiKey.Key:
        type: WiresBoundUserInterface
  - type: Computer
    board: BlockGameArcadeComputerCircuitboard
  - type: Vocalizer
    minVocalizeInterval: 1m # Arcades are noisy
    maxVocalizeInterval: 4m
    hideChat: true
  - type: DatasetVocalizer
    dataset: BlockGameAds
  - type: SpeakOnUIClosed
    pack: BlockGameGoodbyes
