# SPDX-FileCopyrightText: 2019 Acruid <shatter66@gmail.com>
# SPDX-FileCopyrightText: 2019 DamianX <DamianX@users.noreply.github.com>
# SPDX-FileCopyrightText: 2019 L.E.D <10257081+unusualcrow@users.noreply.github.com>
# SPDX-FileCopyrightText: 2020 GlassEclipse <tsymall5@gmail.com>
# SPDX-FileCopyrightText: 2020 Paul Ritter <ritter.paul1@googlemail.com>
# SPDX-FileCopyrightText: 2020 Swept <jamesurquhartwebb@gmail.com>
# SPDX-FileCopyrightText: 2020 Vince <39844191+Visne@users.noreply.github.com>
# SPDX-FileCopyrightText: 2020 Víctor Aguilera Puerto <6766154+Zumorica@users.noreply.github.com>
# SPDX-FileCopyrightText: 2020 Ygg01 <daniel.fath7@gmail.com>
# SPDX-FileCopyrightText: 2020 py01 <60152240+collinlunn@users.noreply.github.com>
# SPDX-FileCopyrightText: 2020 py01 <pyronetics01@gmail.com>
# SPDX-FileCopyrightText: 2020 zionnBE <bennyprofanee@protonmail.com>
# SPDX-FileCopyrightText: 2020 zionnBE <zionn@tfwno.gf>
# SPDX-FileCopyrightText: 2020 zumorica <zddm@outlook.es>
# SPDX-FileCopyrightText: 2021 20kdc <asdd2808@gmail.com>
# SPDX-FileCopyrightText: 2021 BulletGrade <66234359+BulletGrade@users.noreply.github.com>
# SPDX-FileCopyrightText: 2021 Metal Gear Sloth <metalgearsloth@gmail.com>
# SPDX-FileCopyrightText: 2021 Moses <StrawberryMoses@gmail.com>
# SPDX-FileCopyrightText: 2021 Pieter-Jan Briers <pieterjan.briers@gmail.com>
# SPDX-FileCopyrightText: 2021 Swept <sweptwastaken@protonmail.com>
# SPDX-FileCopyrightText: 2021 Vera Aguilera Puerto <gradientvera@outlook.com>
# SPDX-FileCopyrightText: 2021 Vera Aguilera Puerto <zddm@outlook.es>
# SPDX-FileCopyrightText: 2021 Visne <39844191+Visne@users.noreply.github.com>
# SPDX-FileCopyrightText: 2021 mirrorcult <lunarautomaton6@gmail.com>
# SPDX-FileCopyrightText: 2022 Ablankmann <103340990+Ablankmann@users.noreply.github.com>
# SPDX-FileCopyrightText: 2022 Andreas Kämper <andreas@kaemper.tech>
# SPDX-FileCopyrightText: 2022 Deahaka <96499407+Deahaka@users.noreply.github.com>
# SPDX-FileCopyrightText: 2022 EmoGarbage404 <98561806+EmoGarbage404@users.noreply.github.com>
# SPDX-FileCopyrightText: 2022 Fishfish458 <47410468+Fishfish458@users.noreply.github.com>
# SPDX-FileCopyrightText: 2022 Flipp Syder <76629141+vulppine@users.noreply.github.com>
# SPDX-FileCopyrightText: 2022 Jacob Tong <10494922+ShadowCommander@users.noreply.github.com>
# SPDX-FileCopyrightText: 2022 Michael Phillips <1194692+MeltedPixel@users.noreply.github.com>
# SPDX-FileCopyrightText: 2022 Moony <moonheart08@users.noreply.github.com>
# SPDX-FileCopyrightText: 2022 Profane McBane <profanedbane+github@gmail.com>
# SPDX-FileCopyrightText: 2022 Rane <60792108+Elijahrane@users.noreply.github.com>
# SPDX-FileCopyrightText: 2022 corentt <36075110+corentt@users.noreply.github.com>
# SPDX-FileCopyrightText: 2022 fishfish458 <fishfish458>
# SPDX-FileCopyrightText: 2022 hubismal <47284081+hubismal@users.noreply.github.com>
# SPDX-FileCopyrightText: 2022 metalgearsloth <metalgearsloth@gmail.com>
# SPDX-FileCopyrightText: 2022 theashtronaut <112137107+theashtronaut@users.noreply.github.com>
# SPDX-FileCopyrightText: 2022 wrexbe <81056464+wrexbe@users.noreply.github.com>
# SPDX-FileCopyrightText: 2023 AJCM-git <60196617+AJCM-git@users.noreply.github.com>
# SPDX-FileCopyrightText: 2023 ChilbroBaggins <107660393+ChilbroBaggins@users.noreply.github.com>
# SPDX-FileCopyrightText: 2023 Doru991 <75124791+Doru991@users.noreply.github.com>
# SPDX-FileCopyrightText: 2023 Morb <14136326+Morb0@users.noreply.github.com>
# SPDX-FileCopyrightText: 2023 Nairod <110078045+Nairodian@users.noreply.github.com>
# SPDX-FileCopyrightText: 2023 OctoRocket <88291550+OctoRocket@users.noreply.github.com>
# SPDX-FileCopyrightText: 2023 Puro <103608145+PuroSlavKing@users.noreply.github.com>
# SPDX-FileCopyrightText: 2023 Velcroboy <107660393+ChilbroBaggins@users.noreply.github.com>
# SPDX-FileCopyrightText: 2023 brainfood1183 <113240905+brainfood1183@users.noreply.github.com>
# SPDX-FileCopyrightText: 2023 crazybrain23 <44417085+crazybrain23@users.noreply.github.com>
# SPDX-FileCopyrightText: 2023 freeman2651 <104049107+freeman2651@users.noreply.github.com>
# SPDX-FileCopyrightText: 2023 potato1234_x <79580518+potato1234x@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Aiden <aiden@djkraz.com>
# SPDX-FileCopyrightText: 2024 Alzore <140123969+Blackern5000@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Brandon Hu <103440971+Brandon-Huu@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 CaasGit <87243814+CaasGit@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Chief-Engineer <119664036+Chief-Engineer@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Cojoke <83733158+Cojoke-dot@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Debug <49997488+DebugOk@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 DrSmugleaf <10968691+DrSmugleaf@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 DrSmugleaf <DrSmugleaf@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Ed <96445749+TheShuEd@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Emisse <99158783+Emisse@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 EmoGarbage404 <retron404@gmail.com>
# SPDX-FileCopyrightText: 2024 Eoin Mcloughlin <helloworld@eoinrul.es>
# SPDX-FileCopyrightText: 2024 Errant <35878406+Errant-4@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Flareguy <78941145+Flareguy@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 FoxxoTrystan <45297731+FoxxoTrystan@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Hannah Giovanna Dawson <karakkaraz@gmail.com>
# SPDX-FileCopyrightText: 2024 Hrosts <35345601+Hrosts@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 IProduceWidgets <107586145+IProduceWidgets@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Ian <ignaz.k@live.de>
# SPDX-FileCopyrightText: 2024 Jeff <velcroboy333@hotmail.com>
# SPDX-FileCopyrightText: 2024 Joel Zimmerman <JoelZimmerman@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 JustCone <141039037+JustCone14@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Kara <lunarautomaton6@gmail.com>
# SPDX-FileCopyrightText: 2024 Killerqu00 <47712032+Killerqu00@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Ko4ergaPunk <62609550+Ko4ergaPunk@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Kukutis96513 <146854220+Kukutis96513@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Leon Friedrich <60421075+ElectroJr@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Lye <128915833+Lyroth001@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 MerrytheManokit <167581110+MerrytheManokit@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Mervill <mervills.email@gmail.com>
# SPDX-FileCopyrightText: 2024 Mr. 27 <45323883+Dutch-VanDerLinde@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 MureixloI <132683811+MureixloI@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 NakataRin <45946146+NakataRin@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Nemanja <98561806+EmoGarbage404@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 OrangeMoronage9622 <whyteterry0092@gmail.com>
# SPDX-FileCopyrightText: 2024 PJBot <pieterjan.briers+bot@gmail.com>
# SPDX-FileCopyrightText: 2024 Peptide90 <78795277+Peptide90@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Pieter-Jan Briers <pieterjan.briers+git@gmail.com>
# SPDX-FileCopyrightText: 2024 Plykiya <58439124+Plykiya@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Preston Smith <92108534+thetolbean@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Pspritechologist <naaronn@gmail.com>
# SPDX-FileCopyrightText: 2024 Psychpsyo <60073468+Psychpsyo@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Repo <47093363+Titian3@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 RiceMar1244 <138547931+RiceMar1244@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 ScarKy0 <106310278+ScarKy0@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Scruq445 <storchdamien@gmail.com>
# SPDX-FileCopyrightText: 2024 ShadowCommander <10494922+ShadowCommander@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Simon <63975668+Simyon264@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Stalen <33173619+stalengd@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 TakoDragon <69509841+BackeTako@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Thomas <87614336+Aeshus@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 TsjipTsjip <19798667+TsjipTsjip@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Ubaser <134914314+UbaserB@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Unkn0wn_Gh0st <shadowstalkermll@gmail.com>
# SPDX-FileCopyrightText: 2024 VMSolidus <evilexecutive@gmail.com>
# SPDX-FileCopyrightText: 2024 Vasilis <vasilis@pikachu.systems>
# SPDX-FileCopyrightText: 2024 Velcroboy <107660393+IamVelcroboy@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Vigers Ray <60344369+VigersRay@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 beck-thompson <107373427+beck-thompson@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 deathride58 <deathride58@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 degradka <69397649+degradka@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 dffdff2423 <dffdff2423@gmail.com>
# SPDX-FileCopyrightText: 2024 eoineoineoin <github@eoinrul.es>
# SPDX-FileCopyrightText: 2024 erohrs2 <157842463+erohrs2@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 foboscheshir <156405958+foboscheshir@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 lzk <124214523+lzk228@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 metalgearsloth <comedian_vs_clown@hotmail.com>
# SPDX-FileCopyrightText: 2024 nikthechampiongr <32041239+nikthechampiongr@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 plykiya <plykiya@protonmail.com>
# SPDX-FileCopyrightText: 2024 saintmuntzer <47153094+saintmuntzer@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 shamp <140359015+shampunj@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 slarticodefast <161409025+slarticodefast@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 strO0pwafel <153459934+strO0pwafel@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 stroopwafel <j.o.luijkx@student.tudelft.nl>
# SPDX-FileCopyrightText: 2024 themias <89101928+themias@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 to4no_fix <156101927+chavonadelal@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 voidnull000 <18663194+voidnull000@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Aiden <28298836+Aidenkrz@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Aidenkrz <aiden@djkraz.com>
# SPDX-FileCopyrightText: 2025 Aineias1 <dmitri.s.kiselev@gmail.com>
# SPDX-FileCopyrightText: 2025 Alpaccalypse <21291379+Alpaccalypse@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Dorragon <101672978+Dorragon@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 FaDeOkno <143940725+FaDeOkno@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Fishbait <Fishbait@git.ml>
# SPDX-FileCopyrightText: 2025 GoobBot <uristmchands@proton.me>
# SPDX-FileCopyrightText: 2025 Ilya246 <57039557+Ilya246@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Ilya246 <ilyukarno@gmail.com>
# SPDX-FileCopyrightText: 2025 McBosserson <148172569+McBosserson@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Milon <plmilonpl@gmail.com>
# SPDX-FileCopyrightText: 2025 Piras314 <p1r4s@proton.me>
# SPDX-FileCopyrightText: 2025 Rouden <149893554+Roudenn@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Southbridge <7013162+southbridge-fur@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Tayrtahn <tayrtahn@gmail.com>
# SPDX-FileCopyrightText: 2025 TheBorzoiMustConsume <197824988+TheBorzoiMustConsume@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Unlumination <144041835+Unlumy@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 deltanedas <39013340+deltanedas@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 deltanedas <@deltanedas:kde.org>
# SPDX-FileCopyrightText: 2025 fishbait <gnesse@gmail.com>
# SPDX-FileCopyrightText: 2025 gluesniffler <159397573+gluesniffler@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 gluesniffler <linebarrelerenthusiast@gmail.com>
# SPDX-FileCopyrightText: 2025 username <113782077+whateverusername0@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 whateverusername0 <whateveremail>
#
# SPDX-License-Identifier: AGPL-3.0-or-later

- type: entity
  id: VendingMachine
  parent: BaseMachinePowered
  name: vending machine
  description: Just add capitalism!
  abstract: true
  components:
  - type: ActionGrant
    actions:
    - ActionVendingThrow
  - type: StationAiWhitelist
  - type: AmbientOnPowered
  - type: AmbientSound
    volume: -9
    range: 3
    enabled: false
    sound:
      path: /Audio/Ambience/Objects/vending_machine_hum.ogg
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/empty.rsi
    snapCardinals: false
  - type: Physics
    bodyType: Static
  - type: Transform
    noRot: true
  - type: Fixtures
    fixtures:
      fix1:
        shape:
          !type:PhysShapeAabb
          bounds: "-0.25,-0.45,0.25,0.45"
        mask:
        - MachineMask
        layer:
        - MachineLayer
        density: 200
  - type: Destructible
    thresholds:
    - trigger: # Excess damage, don't do anything
        !type:DamageTrigger
        damage: 200
      behaviors:
      - !type:PlaySoundBehavior
        sound:
          collection: MetalGlassBreak
      - !type:DoActsBehavior
        acts: [ "Destruction" ]
    - trigger:
        !type:DamageTrigger
        damage: 100
      behaviors:
      - !type:DoActsBehavior
        acts: ["Breakage"]
      - !type:EjectVendorItems
  - type: Repairable
    doAfterDelay: 8
  - type: ActivatableUI
    key: enum.VendingMachineUiKey.Key
  - type: ActivatableUIRequiresPower
  - type: UserInterface
    interfaces:
      enum.VendingMachineUiKey.Key:
        type: VendingMachineBoundUserInterface
      enum.WiresUiKey.Key:
        type: WiresBoundUserInterface
  - type: WiresPanel
  - type: Wires
    boardName: wires-board-name-vendingmachine
    layoutId: Vending
  - type: Anchorable
  - type: TypingIndicator
    proto: robot
  - type: Speech
    speechVerb: Robotic
    speechSounds: Vending
  - type: Vocalizer
    minVocalizeInterval: 8m
    maxVocalizeInterval: 10m
    hideChat: true
  - type: VocalizerRequiresPower
  - type: SpookySpeaker
    messageSet: SpookySpeakerMessagesGeneric
    speakChance: 0.2
  - type: IntrinsicRadioReceiver
  #- type: IntrinsicRadioTransmitter
  #  channels:
  #  - Binary # Goobstation - replaced with collective mind
  - type: ActiveRadio
    channels:
    # - Binary # Goobstation - replaced with collective mind
    - Common
  # Goobstation
  - type: CollectiveMind
    defaultChannel: Binary
    channels:
    - Binary
  - type: DoAfter
  - type: Electrified
    enabled: false
    usesApcPower: true
  - type: PointLight
    enabled: false
    castShadows: false
    radius: 2
    energy: 1.5
    mask: /Textures/Effects/LightMasks/cone.png
    autoRot: true
  - type: LitOnPowered
  - type: ApcPowerReceiver
    powerLoad: 200
  - type: Actions
  - type: SentienceTarget
    flavorKind: station-event-random-sentience-flavor-mechanical
    weight: 0.025 # fuck you in particular (it now needs 40 vending machines to be as likely as 1 interesting animal)
  - type: StaticPrice
    price: 100
  - type: Appearance
  - type: WiresVisuals
  - type: LanguageSpeaker # Einstein Engines - Languages
  - type: LanguageKnowledge # Einstein Engines - Languages
    speaks:
    - TauCetiBasic
    - RobotTalk
    understands:
    - TauCetiBasic
    - RobotTalk

- type: entity
  parent: VendingMachine
  id: VendingMachineCondiments
  name: condiment station
  description: Slather these thick gooey substances on your food for a full flavor effect.
  components:
  - type: VendingMachine
    pack: CondimentInventory
    offState: off
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/condiments.rsi
    drawdepth: SmallObjects
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
  - type: Fixtures
    fixtures:
      fix1:
        shape:
          !type:PhysShapeAabb
          bounds: "-0.3,-0.16,0.3,0.40"
        mask:
        - MachineMask
        layer:
        - MachineLayer
        density: 190
  - type: DatasetVocalizer
    dataset: CondimentVendAds
  - type: SpeakOnUIClosed
    pack: GenericVendGoodbyes
  - type: Transform
    noRot: false

- type: entity
  parent: VendingMachine
  id: VendingMachineAmmo
  name: liberation station
  description: An overwhelming amount of ancient patriotism washes over you just by looking at the machine.
  components:
  - type: VendingMachine
    pack: AmmoVendInventory
    offState: off
    brokenState: broken
    normalState: normal-unshaded
  - type: DatasetVocalizer
    dataset: CondimentVendAds
  - type: SpeakOnUIClosed
    pack: GenericVendGoodbyes
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/ammo.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]

- type: entity
  parent: VendingMachine
  id: VendingMachineBooze
  name: Booze-O-Mat
  description: A technological marvel, supposedly able to mix just the mixture you'd like to drink the moment you ask for one.
  components:
  - type: VendingMachine
    pack: BoozeOMatInventory
    offState: off
    brokenState: broken
    normalState: normal-unshaded
    denyState: deny-unshaded
    loopDeny: false
  - type: DatasetVocalizer
    dataset: BoozeOMatAds
  - type: SpeakOnUIClosed
    pack: BoozeOMatGoodbyes
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/boozeomat.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: AccessReader
    access: [["Bar"]]
  - type: GuideHelp
    guides:
    - Bartender
    - Drinks

- type: entity
  parent: VendingMachineBooze
  id: VendingMachineBoozeSyndicate # syndie booze-o-mat for nukie outpost
  name: Bruise-O-Mat
  description: A refurbished Booze-O-Mat for boosting operative morale. An imprint of a blood-red hardsuit is visible on one side, and the paint seems ashed off on the other side.
  components:
  - type: VendingMachine
    pack: BoozeOMatInventory
    offState: off
    brokenState: broken
    normalState: normal-unshaded
    denyState: deny-unshaded
    loopDeny: false
  - type: DatasetVocalizer
    dataset: BruiseOMatAds
  - type: SpeakOnUIClosed
    pack: BruiseOMatGoodbyes
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/bruiseomat.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: AccessReader
    access: [["SyndicateAgent"]]
  - type: GuideHelp
    guides:
    - Bartender
    - Drinks

- type: entity
  parent: VendingMachine
  id: VendingMachineCart
  name: PTech
  description: PTech vending! Providing a ROBUST selection of PDAs, cartridges, and anything else a dull paper pusher needs!
  components:
  - type: VendingMachine
    pack: PTechInventory
    offState: off
    brokenState: broken
    normalState: normal-unshaded
    ejectState: eject-unshaded
    denyState: deny-unshaded
  - type: Sprite
    noRot: true
    sprite: Structures/Machines/VendingMachines/laptop.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: PointLight
    radius: 2
    energy: 1.3
    color: "#ffb0b0"
    mask: /Textures/Effects/LightMasks/cone.png
    autoRot: true
  - type: AccessReader
    access: [["HeadOfPersonnel"]]
  - type: Transform
    noRot: false
  - type: Rotatable
    rotateWhileAnchored: false
    rotateWhilePulling: true

- type: entity
  parent: VendingMachine
  id: VendingMachineChefvend
  name: ChefVend
  description: An ingredient vendor for all your cheffin needs.
  components:
  - type: VendingMachine
    pack: ChefvendInventory
    offState: off
    brokenState: broken
    normalState: normal-unshaded
    ejectState: eject-unshaded
  - type: DatasetVocalizer
    dataset: ChefvendAds
  - type: SpeakOnUIClosed
    pack: ChefvendGoodbyes
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/chefvend.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: AccessReader
    access: [["Service"]]
  - type: PointLight
    radius: 2
    energy: 1.6
    color: "#4b93ad"
    mask: /Textures/Effects/LightMasks/cone.png
    autoRot: true

- type: entity
  parent: VendingMachine
  id: VendingMachineCigs
  name: ShadyCigs Deluxe
  description: If you want to get cancer, might as well do it in style.
  components:
  - type: VendingMachine
    pack: CigaretteMachineInventory
    dispenseOnHitChance: 0.25
    dispenseOnHitThreshold: 2
    offState: off
    brokenState: broken
    normalState: normal-unshaded
    ejectState: eject-unshaded
    denyState: deny-unshaded
  - type: DatasetVocalizer
    dataset: CigaretteMachineAds
  - type: SpeakOnUIClosed
    pack: CigaretteMachineGoodbyes
  - type: Sprite
    noRot: true
    sprite: Structures/Machines/VendingMachines/cigs.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: Transform
    noRot: false
  - type: Rotatable
    rotateWhileAnchored: false
    rotateWhilePulling: true

- type: entity
  parent: VendingMachine
  id: VendingMachineClothing
  name: ClothesMate
  description: A vending machine for clothing.
  components:
  - type: VendingMachine
    pack: ClothesMateInventory
    offState: off
    brokenState: broken
    normalState: normal-unshaded
    denyState: deny-unshaded
  - type: DatasetVocalizer
    dataset: ClothesMateAds
  - type: SpeakOnUIClosed
    pack: GenericVendGoodbyes
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/clothing.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: PointLight
    radius: 2
    energy: 1.6
    color: "#3db83b"
    mask: /Textures/Effects/LightMasks/cone.png
    autoRot: true
  - type: Tag
    tags:
      - DroneUsable # Goobstation

- type: entity
  parent: VendingMachine
  id: VendingMachineWinter
  name: WinterDrobe
  description: The best place to enjoy the cold!
  components:
  - type: VendingMachine
    pack: WinterDrobeInventory
    offState: off
    brokenState: broken
    normalState: normal-unshaded
    denyState: deny-unshaded
  - type: DatasetVocalizer
    dataset: ClothesMateAds
  - type: SpeakOnUIClosed
    pack: GenericVendGoodbyes
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/winterdrobe.rsi
    layers:
    - state: "off"
      map: [ "enum.VendingMachineVisualLayers.Base" ]
    - state: "off"
      map: [ "enum.VendingMachineVisualLayers.BaseUnshaded" ]
      shader: unshaded
    - state: panel
      map: [ "enum.WiresVisualLayers.MaintenancePanel" ]
  - type: PointLight
    radius: 2
    energy: 1.6
    color: "#3db83b"
    mask: /Textures/Effects/LightMasks/cone.png
    autoRot: true
  - type: Tag
    tags:
    - DroneUsable # Goobstation

- type: entity
  parent: VendingMachine
  id: VendingMachineCoffee
  name: Solar's Best Hot Drinks
  description: Served boiling so it stays hot all shift!
  components:
  - type: VendingMachine
    pack: HotDrinksMachineInventory
    dispenseOnHitChance: 0.25
    dispenseOnHitThreshold: 2
    offState: off
    brokenState: broken
    normalState: normal-unshaded
    ejectState: eject-unshaded
    denyState: deny-unshaded
    screenState: screen
    ejectDelay: 5
    soundVend: /Audio/Machines/machine_vend_hot_drink.ogg
    initialStockQuality: 0.33
  - type: DatasetVocalizer
    dataset: HotDrinksMachineAds
  - type: SpeakOnUIClosed
    pack: HotDrinksMachineGoodbyes
  - type: Sprite
    noRot: true
    sprite: Structures/Machines/VendingMachines/coffee.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: "screen"
      map: ["enum.VendingMachineVisualLayers.Screen"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: PointLight
    radius: 2
    energy: 1.3
    color: "#ad7c4b"
    mask: /Textures/Effects/LightMasks/cone.png
    autoRot: true
  - type: Transform
    noRot: false
  - type: Rotatable
    rotateWhileAnchored: false
    rotateWhilePulling: true

- type: entity
  parent: VendingMachine
  id: VendingMachineCola
  name: Robust Softdrinks
  description: A softdrink vendor provided by Robust Industries, LLC.
  components:
  - type: VendingMachine
    pack: RobustSoftdrinksInventory
    dispenseOnHitChance: 0.25
    dispenseOnHitThreshold: 2
    offState: off
    brokenState: broken
    normalState: normal-unshaded
    ejectState: eject-unshaded
    denyState: deny-unshaded
    ejectDelay: 1.9
    initialStockQuality: 0.33
  - type: DatasetVocalizer
    dataset: RobustSoftdrinksAds
  - type: SpeakOnUIClosed
    pack: RobustSoftdrinksGoodbyes
  - type: Sprite
    noRot: true
    sprite: Structures/Machines/VendingMachines/cola.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: PointLight
    radius: 2
    energy: 1.6
    color: "#3c5eb5"
    mask: /Textures/Effects/LightMasks/cone.png
    autoRot: true
  - type: Transform
    noRot: false
  - type: Rotatable
    rotateWhileAnchored: false
    rotateWhilePulling: true

- type: entity
  parent: VendingMachineCola
  id: VendingMachineColaBlack
  suffix: Black
  components:
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/soda2.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: PointLight
    radius: 2
    energy: 1.6
    color: "#423438"
    mask: /Textures/Effects/LightMasks/cone.png
    autoRot: true

- type: entity
  parent: VendingMachineCola
  id: VendingMachineColaRed
  name: Space Cola Vendor
  description: It vends cola, in space.
  components:
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/cola.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: PointLight
    radius: 2
    energy: 1.6
    color: "#A50824"
    mask: /Textures/Effects/LightMasks/cone.png
    autoRot: true

- type: entity
  parent: VendingMachine
  id: VendingMachineSpaceUp
  name: Space-Up! Vendor
  description: Indulge in an explosion of flavor.
  components:
  - type: VendingMachine
    pack: SpaceUpInventory
    offState: off
    normalState: normal-unshaded
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/spaceup.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: PointLight
    radius: 2
    energy: 1.6
    color: "#44964A"
    mask: /Textures/Effects/LightMasks/cone.png
    autoRot: true

- type: entity
  parent: VendingMachineCola
  id: VendingMachineSoda
  suffix: Soda
  components:
  - type: VendingMachine
    pack: SodaInventory
    offState: off
    normalState: normal-unshaded
    denyState: deny-unshaded
    ejectState: eject-unshaded
  - type: Sprite
    noRot: true
    sprite: Structures/Machines/VendingMachines/soda.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: PointLight
    radius: 2
    energy: 1.6
    color: "#CBC6BE"
    mask: /Textures/Effects/LightMasks/cone.png
    autoRot: true
  - type: Transform
    noRot: false
  - type: Rotatable
    rotateWhileAnchored: false
    rotateWhilePulling: true

- type: entity
  parent: VendingMachine
  id: VendingMachineStarkist
  name: Star-kist Vendor
  description: The taste of a star in liquid form.
  components:
  - type: VendingMachine
    pack: StarkistInventory
    offState: off
    normalState: normal-unshaded
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/starkist.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: PointLight
    radius: 2
    energy: 1.6
    color: "#D3A44D"
    mask: /Textures/Effects/LightMasks/cone.png
    autoRot: true
  - type: Transform
    noRot: true

- type: entity
  parent: VendingMachine
  id: VendingMachineShamblersJuice
  name: Shambler's Juice Vendor
  description: ~Shake me up some of that Shambler's Juice!~
  components:
  - type: VendingMachine
    pack: ShamblersJuiceInventory
    dispenseOnHitChance: 0.25
    dispenseOnHitThreshold: 2
    offState: off
    brokenState: broken
    normalState: normal-unshaded
    ejectState: eject-unshaded
    denyState: deny-unshaded
    ejectDelay: 1.9
    initialStockQuality: 0.33
  - type: DatasetVocalizer
    dataset: RobustSoftdrinksAds
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/shamblersjuice.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: PointLight
    radius: 2
    energy: 1.6
    color: "#66538F"
    mask: /Textures/Effects/LightMasks/cone.png
    autoRot: true

- type: entity
  parent: VendingMachine
  id: VendingMachinePwrGame
  name: Pwr Game Vendor
  description: You want it, we got it. Brought to you in partnership with Vlad's Salads.
  components:
  - type: VendingMachine
    pack: PwrGameInventory
    dispenseOnHitChance: 0.25
    dispenseOnHitThreshold: 2
    offState: off
    brokenState: broken
    normalState: normal-unshaded
    ejectState: eject-unshaded
    denyState: deny-unshaded
    ejectDelay: 1.9
    initialStockQuality: 0.33
  - type: DatasetVocalizer
    dataset: RobustSoftdrinksAds
  - type: SpeakOnUIClosed
    pack: GenericVendGoodbyes
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/pwrgame.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: PointLight
    radius: 2
    energy: 1.6
    color: "#6927C5"
    mask: /Textures/Effects/LightMasks/cone.png
    autoRot: true

- type: entity
  parent: VendingMachine
  id: VendingMachineDrGibb
  name: Dr. Gibb Vendor
  description: Canned explosion of different flavors in this very vendor!
  components:
  - type: VendingMachine
    pack: DrGibbInventory
    dispenseOnHitChance: 0.25
    dispenseOnHitThreshold: 2
    offState: off
    brokenState: broken
    normalState: normal-unshaded
    ejectState: eject-unshaded
    denyState: deny-unshaded
    ejectDelay: 1.9
    initialStockQuality: 0.33
  - type: DatasetVocalizer
    dataset: DrGibbAds
  - type: SpeakOnUIClosed
    pack: DrGibbGoodbyes
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/gib.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: PointLight
    radius: 2
    energy: 1.6
    color: "#D82929"
    mask: /Textures/Effects/LightMasks/cone.png
    autoRot: true

- type: entity
  parent: VendingMachine
  id: VendingMachineSmite
  name: Smite Vendor
  description: Popular with the administration.
  components:
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/smite.rsi
    layers:
    - state: "off"
      map: [ "enum.VendingMachineVisualLayers.Base" ]
    - state: "off"
      map: [ "enum.VendingMachineVisualLayers.BaseUnshaded" ]
      shader: unshaded
    - state: panel
      map: [ "enum.WiresVisualLayers.MaintenancePanel" ]
  - type: VendingMachine
    pack: SmiteInventory
    dispenseOnHitChance: 0.25
    dispenseOnHitThreshold: 2
    offState: off
    brokenState: broken
    normalState: normal-unshaded
    ejectState: eject-unshaded
    denyState: deny-unshaded
    ejectDelay: 1.9
    initialStockQuality: 0.33
  - type: DatasetVocalizer
    dataset: SmiteAds
  - type: SpeakOnUIClosed
    pack: SmiteGoodbyes
  - type: PointLight
    radius: 1.5
    energy: 1.6
    color: "#00E645"

- type: entity
  parent: VendingMachine
  id: VendingMachineDinnerware
  name: Plasteel Chef's Dinnerware Vendor
  description: A kitchen and restaurant equipment vendor.
  components:
  - type: VendingMachine
    pack: DinnerwareInventory
    offState: off
    brokenState: broken
    normalState: normal-unshaded
    ejectState: eject-unshaded
    denyState: deny-unshaded
  - type: DatasetVocalizer
    dataset: DinnerwareAds
  - type: SpeakOnUIClosed
    pack: GenericVendGoodbyes
  - type: Sprite
    noRot: true
    sprite: Structures/Machines/VendingMachines/dinnerware.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: AccessReader
    access: [["Kitchen"]]
  - type: PointLight
    radius: 2
    energy: 1.6
    color: "#4b93ad"
    mask: /Textures/Effects/LightMasks/cone.png
    autoRot: true
  - type: Transform
    noRot: false
  - type: Rotatable
    rotateWhileAnchored: false
    rotateWhilePulling: true

- type: entity
  parent: VendingMachine
  id: VendingMachineMagivend
  name: MagiVend
  description: A magic vending machine.
  components:
  - type: VendingMachine
    pack: MagiVendInventory
    offState: off
    brokenState: broken
    normalState: normal-unshaded
    denyState: deny-unshaded
    ejectState: eject-unshaded
  - type: DatasetVocalizer
    dataset: MagiVendAds
  - type: SpeakOnUIClosed
    pack: GenericVendGoodbyes
  - type: Sprite
    noRot: true
    sprite: Structures/Machines/VendingMachines/magivend.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: PointLight
    radius: 2
    energy: 1.6
    color: "#9a18d6"
    mask: /Textures/Effects/LightMasks/cone.png
    autoRot: true
  - type: Transform
    noRot: false
  - type: Rotatable
    rotateWhileAnchored: false
    rotateWhilePulling: true

- type: entity
  parent: VendingMachine
  id: VendingMachineDiscount
  name: Discount Dan's
  description: A vending machine containing discount snacks from the infamous 'Discount Dan' franchise.
  components:
  - type: VendingMachine
    pack: DiscountDansInventory
    dispenseOnHitChance: 0.25
    dispenseOnHitThreshold: 2
    offState: off
    brokenState: broken
    normalState: normal-unshaded
    initialStockQuality: 0.33
  - type: DatasetVocalizer
    dataset: DiscountDansAds
  - type: SpeakOnUIClosed
    pack: DiscountDansGoodbyes
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/discount.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - texture: Structures/Machines/VendingMachines/maintenance_panel.png
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: PointLight
    radius: 2
    energy: 1.6
    color: "#6148c7"
    mask: /Textures/Effects/LightMasks/cone.png
    autoRot: true

- type: entity
  parent: VendingMachine
  id: VendingMachineEngivend
  name: Engi-Vend
  description: Spare tool vending. What? Did you expect some witty description?
  components:
  - type: VendingMachine
    pack: EngiVendInventory
    offState: off
    brokenState: broken
    normalState: normal-unshaded
    ejectState: eject-unshaded
    denyState: deny-unshaded
  - type: Sprite
    noRot: true
    sprite: Structures/Machines/VendingMachines/engivend.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: AccessReader
    access: [["Engineering"]]
  - type: PointLight
    radius: 2
    energy: 1.6
    color: "#b89e2a"
    mask: /Textures/Effects/LightMasks/cone.png
    autoRot: true
  - type: Transform
    noRot: false
  - type: Rotatable
    rotateWhileAnchored: false
    rotateWhilePulling: true
  - type: Tag
    tags:
    - DroneUsable # Goobstation

- type: entity
  parent: VendingMachine
  id: VendingMachineMedical
  name: NanoMed Plus
  description: It's a medical drug dispenser. Natural chemicals only! (And wheelchairs, why not) # Goobstation
  components:
  - type: VendingMachine
    pack: NanoMedPlusInventory
    offState: off
    brokenState: broken
    normalState: normal-unshaded
    ejectState: eject-unshaded
    denyState: deny-unshaded
    ejectDelay: 0.6
  - type: DatasetVocalizer
    dataset: NanoMedAds
  - type: SpeakOnUIClosed
    pack: GenericVendGoodbyes
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/medivend.rsi
    noRot: true
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: AccessReader
    access: [["Medical"]]
  - type: PointLight
    radius: 2
    energy: 1.6
    color: "#9dc5c9"
    mask: /Textures/Effects/LightMasks/cone.png
    autoRot: true
  - type: GuideHelp
    guides:
    - MedicalDoctor
  - type: Transform
    noRot: false
  - type: Rotatable
    rotateWhileAnchored: false
    rotateWhilePulling: true

- type: entity
  parent: VendingMachine
  id: VendingMachineNutri
  name: NutriMax
  description: A vending machine containing nutritional substances for plants and botanical tools.
  components:
  - type: VendingMachine
    pack: NutriMaxInventory
    offState: off
    brokenState: broken
    normalState: normal-unshaded
    ejectState: eject-unshaded
    denyState: deny-unshaded
  - type: DatasetVocalizer
    dataset: NutriMaxAds
  - type: SpeakOnUIClosed
    pack: NutriMaxGoodbyes
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/nutri_green.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: AccessReader
    access: [["Hydroponics"]]
  - type: PointLight
    radius: 2
    energy: 1.6
    color: "#326e3f"
    mask: /Textures/Effects/LightMasks/cone.png
    autoRot: true

- type: entity
  parent: VendingMachine
  id: VendingMachineSec
  name: SecTech
  description: A vending machine containing Security equipment. A label reads SECURITY PERSONNEL ONLY.
  components:
  - type: VendingMachine
    pack: SecTechInventory
    offState: off
    brokenState: broken
    normalState: normal-unshaded
    ejectState: eject-unshaded
    denyState: deny-unshaded
  - type: DatasetVocalizer
    dataset: SecTechAds
  - type: SpeakOnUIClosed
    pack: SecTechGoodbyes
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/security.rsi
    noRot: true
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: AccessReader
    access: [["Security"]]
  - type: PointLight
    radius: 2
    energy: 1.8
    color: "#78645c"
    mask: /Textures/Effects/LightMasks/cone.png
    autoRot: true
  - type: GuideHelp
    guides:
    - Security
    - Antagonists
  - type: Transform
    noRot: false
  - type: Rotatable
    rotateWhileAnchored: false
    rotateWhilePulling: true


- type: entity
  parent: VendingMachine
  id: VendingMachineSeedsUnlocked
  name: MegaSeed Servitor
  description: For when you need seeds fast. Hands down the best seed selection on the station!
  suffix: Unlocked
  components:
  - type: VendingMachine
    pack: MegaSeedServitorInventory
    offState: off
    brokenState: broken
    normalState: normal-unshaded
    ejectState: eject-unshaded
    denyState: deny-unshaded
  - type: DatasetVocalizer
    dataset: MegaSeedAds
  - type: SpeakOnUIClosed
    pack: GenericVendGoodbyes
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/seeds_green.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: PointLight
    radius: 2
    energy: 1.6
    color: "#326e3f"
    mask: /Textures/Effects/LightMasks/cone.png
    autoRot: true

- type: entity
  parent: VendingMachineSeedsUnlocked
  id: VendingMachineSeeds
  suffix: Hydroponics
  components:
  - type: AccessReader
    access: [["Hydroponics"]]

- type: entity
  parent: VendingMachine
  id: VendingMachineSnack
  name: Getmore Chocolate Corp
  description: A snack machine courtesy of the Getmore Chocolate Corporation, based out of Mars.
  components:
  - type: VendingMachine
    pack: GetmoreChocolateCorpInventory
    dispenseOnHitChance: 0.25
    dispenseOnHitThreshold: 2
    offState: off
    brokenState: broken
    normalState: normal-unshaded
    ejectState: eject-unshaded
    denyState: deny-unshaded
    initialStockQuality: 0.33
  - type: DatasetVocalizer
    dataset: GetmoreChocolateCorpAds
  - type: SpeakOnUIClosed
    pack: GetmoreChocolateCorpGoodbyes
  - type: Sprite
    noRot: true
    sprite: Structures/Machines/VendingMachines/snack.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: PointLight
    radius: 2
    energy: 1.6
    color: "#c73434"
    mask: /Textures/Effects/LightMasks/cone.png
    autoRot: true
  - type: Transform
    noRot: false
  - type: Rotatable
    rotateWhileAnchored: false
    rotateWhilePulling: true

- type: entity
  parent: VendingMachineSnack
  id: VendingMachineSustenance
  name: Sustenance Vendor
  description: A vending machine which vends food, as required by section 47-C of the NT's Prisoner Ethical Treatment Agreement.
  components:
  - type: VendingMachine
    pack: SustenanceInventory
    dispenseOnHitChance: 0.25
    dispenseOnHitThreshold: 2
    offState: off
    brokenState: broken
    normalState: normal-unshaded
    ejectState: eject-unshaded
    denyState: deny-unshaded
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/sustenance.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: PointLight
    radius: 2
    energy: 1.6
    color: "#737785"
    mask: /Textures/Effects/LightMasks/cone.png
    autoRot: true

- type: entity
  parent: VendingMachineSnack
  id: VendingMachineSnackBlue
  suffix: Blue
  components:
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/snack-blue.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: PointLight
    radius: 2
    energy: 1.6
    color: "#3c5eb5"
    mask: /Textures/Effects/LightMasks/cone.png
    autoRot: true

- type: entity
  parent: VendingMachineSnack
  id: VendingMachineSnackOrange
  suffix: Orange
  components:
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/snack-orange.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: PointLight
    radius: 2
    energy: 1.6
    color: "#CE3401"
    mask: /Textures/Effects/LightMasks/cone.png
    autoRot: true

- type: entity
  parent: VendingMachineSnack
  id: VendingMachineSnackGreen
  suffix: Green
  components:
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/snack-green.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: PointLight
    radius: 2
    energy: 1.6
    color: "#5F6A1C"
    mask: /Textures/Effects/LightMasks/cone.png
    autoRot: true

- type: entity
  parent: VendingMachineSnack
  id: VendingMachineSnackTeal
  suffix: Teal
  components:
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/snack-teal.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: PointLight
    radius: 2
    energy: 1.6
    color: "#207E79"
    mask: /Textures/Effects/LightMasks/cone.png
    autoRot: true

- type: entity
  parent: VendingMachine
  id: VendingMachineSovietSoda
  name: BODA
  description: An old vending machine containing sweet water.
  components:
  - type: VendingMachine
    pack: BodaInventory
    dispenseOnHitChance: 0.25
    dispenseOnHitThreshold: 2
    offState: off
    brokenState: broken
    normalState: normal-unshaded
    ejectState: eject-unshaded
    denyState: deny-unshaded
    initialStockQuality: 0.33
  - type: DatasetVocalizer
    dataset: BodaAds
  - type: SpeakOnUIClosed
    pack: BodaGoodbyes
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/sodasoviet.rsi
    noRot: true
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: PointLight
    radius: 2
    energy: 1.6
    color: "#B80F0A"
    mask: /Textures/Effects/LightMasks/cone.png
    autoRot: true
  - type: Transform
    noRot: false
  - type: Rotatable
    rotateWhileAnchored: false
    rotateWhilePulling: true
  - type: RussianAccent

- type: entity
  parent: VendingMachine
  id: VendingMachineTheater
  name: AutoDrobe
  description: A vending machine containing costumes.
  components:
  - type: VendingMachine
    pack: AutoDrobeInventory
    offState: off
    brokenState: broken
    normalState: normal-unshaded
    ejectState: eject-unshaded
    denyState: deny-unshaded
    screenState: screen
  - type: DatasetVocalizer
    dataset: AutoDrobeAds
  - type: SpeakOnUIClosed
    pack: GenericVendGoodbyes
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/theater.rsi
    noRot: true
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
    - state: "screen"
      map: ["enum.VendingMachineVisualLayers.Screen"]
      shader: unshaded
  - type: PointLight
    radius: 2
    energy: 1.6
    color: "#c73434"
    mask: /Textures/Effects/LightMasks/cone.png
    autoRot: true
  - type: Transform
    noRot: false
  - type: Rotatable
    rotateWhileAnchored: false
    rotateWhilePulling: true
  - type: Tag
    tags:
    - DroneUsable # Goobstation

- type: entity
  parent: VendingMachine
  id: VendingMachineVendomat
  name: Vendomat
  description: Only the finest robust equipment in space!
  components:
  - type: VendingMachine
    pack: VendomatInventory
    offState: off
    brokenState: broken
    normalState: normal-unshaded
    ejectState: eject-unshaded
    denyState: deny-unshaded
  - type: DatasetVocalizer
    dataset: VendomatAds
  - type: SpeakOnUIClosed
    pack: GenericVendGoodbyes
  - type: Sprite
    noRot: true
    sprite: Structures/Machines/VendingMachines/vendomat.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: PointLight
    radius: 2
    energy: 1.6
    color: "#9dc5c9"
    mask: /Textures/Effects/LightMasks/cone.png
    autoRot: true
  - type: Transform
    noRot: false
  - type: Rotatable
    rotateWhileAnchored: false
    rotateWhilePulling: true

- type: entity
  parent: VendingMachine
  id: VendingMachineRobotics
  name: Robotech Deluxe
  description: All the tools you need to create your own robot army.
  components:
  - type: VendingMachine
    pack: RoboticsInventory
    offState: off
    brokenState: broken
    normalState: normal-unshaded
    ejectState: eject-unshaded
    denyState: deny-unshaded
  - type: DatasetVocalizer
    dataset: VendomatAds
  - type: SpeakOnUIClosed
    pack: GenericVendGoodbyes
  - type: Sprite
    noRot: true
    sprite: Structures/Machines/VendingMachines/robotics.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: AccessReader
    access: [["Research"]]
  - type: PointLight
    radius: 2
    energy: 1.6
    color: "#B0ADA9"
    mask: /Textures/Effects/LightMasks/cone.png
    autoRot: true
  - type: Transform
    noRot: false
  - type: Rotatable
    rotateWhileAnchored: false
    rotateWhilePulling: true
  - type: GuideHelp
    guides:
    - Robotics

- type: entity
  parent: VendingMachine
  id: VendingMachineYouTool
  name: YouTool
  description: "A vending machine containing standard tools. A label reads: Tools for tools."
  components:
  - type: VendingMachine
    pack: YouToolInventory
    offState: off
    brokenState: broken
    normalState: normal-unshaded
    ejectState: eject-unshaded
    denyState: deny-unshaded
  - type: Sprite
    noRot: true
    sprite: Structures/Machines/VendingMachines/youtool.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: PointLight
    radius: 2
    energy: 1.6
    color: "#d4ab33"
    mask: /Textures/Effects/LightMasks/cone.png
    autoRot: true
  - type: Transform
    noRot: false
  - type: Rotatable
    rotateWhileAnchored: false
    rotateWhilePulling: true
  - type: Tag
    tags:
    - DroneUsable # Goobstation

- type: entity
  parent: VendingMachine
  id: VendingMachineGames
  name: Good Clean Fun
  description: Vends things that the Captain and Head of Personnel are probably not going to appreciate you fiddling with instead of your job...
  components:
  - type: VendingMachine
    pack: GoodCleanFunInventory
    offState: off
    brokenState: broken
    normalState: normal-unshaded
    ejectState: eject-unshaded
    ejectDelay: 1.8
  - type: DatasetVocalizer
    dataset: GoodCleanFunAds
  - type: SpeakOnUIClosed
    pack: GoodCleanFunGoodbyes
  - type: Sprite
    noRot: true
    sprite: Structures/Machines/VendingMachines/games.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: PointLight
    radius: 2
    energy: 1.6
    color: "#326e3f"
    mask: /Textures/Effects/LightMasks/cone.png
    autoRot: true
  - type: Transform
    noRot: false
  - type: Rotatable
    rotateWhileAnchored: false
    rotateWhilePulling: true

- type: entity
  parent: VendingMachine
  id: VendingMachineChang
  name: Mr. Chang
  description: A self-serving Chinese food machine, for all your Chinese food needs.
  components:
  - type: VendingMachine
    pack: ChangInventory
    dispenseOnHitChance: 0.25
    dispenseOnHitThreshold: 2
    offState: off
    brokenState: broken
    normalState: normal-unshaded
    denyState: deny-unshaded
    ejectState: eject-unshaded
    initialStockQuality: 0.33
  - type: DatasetVocalizer
    dataset: ChangAds
  - type: SpeakOnUIClosed
    pack: ChangGoodbyes
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/snix.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: PointLight
    radius: 2
    energy: 1.6
    color: "#ffe599"
    mask: /Textures/Effects/LightMasks/cone.png
    autoRot: true
  - type: Transform
    noRot: false
  - type: Rotatable
    rotateWhileAnchored: false
    rotateWhilePulling: true

- type: entity
  parent: VendingMachine
  id: VendingMachineSalvage
  name: Salvage Vendor
  description: A dwarf's best friend!
  components:
  #- type: VendingMachine # DeltaV: Use mining points instead of limited stock
  #  pack: SalvageEquipmentInventory
  #  offState: off
  #  brokenState: broken
  #  normalState: normal-unshaded
  #  denyState: deny-unshaded
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/mining.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: PointLight
    radius: 2
    energy: 1.6
    color: "#b89f25"
    mask: /Textures/Effects/LightMasks/cone.png
    autoRot: true
  - type: ShopVendor # DeltaV
    pack: SalvageVendorInventory
    offState: off
    brokenState: broken
    normalState: normal-unshaded
    denyState: deny-unshaded
  - type: PointsVendor # DeltaV
  - type: UserInterface # DeltaV: Replace vending machine BUI with shop vendor
    interfaces:
      enum.VendingMachineUiKey.Key:
        type: ShopVendorBoundUserInterface
      enum.WiresUiKey.Key:
        type: WiresBoundUserInterface
      enum.MiningVoucherUiKey.Key:
        type: MiningVoucherBoundUserInterface
  - type: MiningVendor # Lavaland Change
    kits:
    - MiningCrusher
    - MiningExtraction
    #- MiningResonator
    - MiningSurvival
    #- MiningDrone
    - MiningConscription
  - type: Wires # DeltaV: Use shop vendor wires layout
    layoutId: ShopVendor
  - type: AccessReader
    access: [["Salvage"]]
  - type: GuideHelp
    guides:
    - Salvage

- type: entity
  parent: VendingMachine
  id: VendingMachineDonut
  name: Monkin' Donuts
  description: A donut vendor provided by Robust Industries, LLC.
  components:
  - type: VendingMachine
    pack: DonutInventory
    dispenseOnHitChance: 0.25
    dispenseOnHitThreshold: 2
    offState: off
    brokenState: broken
    normalState: normal-unshaded
    initialStockQuality: 0.33
  - type: DatasetVocalizer
    dataset: DonutAds
  - type: SpeakOnUIClosed
    pack: DonutGoodbyes
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/donut.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: PointLight
    radius: 2
    energy: 1.6
    color: "#d4ab33"
    mask: /Textures/Effects/LightMasks/cone.png
    autoRot: true

# wallmounted machines

- type: entity
  id: VendingMachineWallmount
  parent: VendingMachine
  name: vending machine
  abstract: true
  placement:
    mode: SnapgridCenter
    snap:
    - Wallmount
  components:
  - type: Sprite
    drawdepth: WallMountedItems
    snapCardinals: false
  - type: WallMount
    arc: 175
  - type: Transform
    noRot: false
  - type: Rotatable
    rotateWhileAnchored: false
    rotateWhilePulling: true

- type: entity
  parent: VendingMachineWallmount
  id: VendingMachineWallMedical
  name: NanoMed
  description: "It's a wall-mounted medical equipment dispenser. Natural chemicals only!"
  components:
  - type: VendingMachine
    pack: NanoMedInventory
    offState: off
    brokenState: broken
    normalState: normal-unshaded
    denyState: deny-unshaded
    ejectState: eject-unshaded
  - type: Sprite
    noRot: true
    sprite: Structures/Machines/VendingMachines/wallmed.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - texture: Structures/Machines/VendingMachines/maintenance_panel.png
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: AccessReader
    access: [["Medical"]]
  - type: GuideHelp
    guides:
    - Medical
  - type: Transform
    noRot: false
  - type: Rotatable
    rotateWhileAnchored: false
    rotateWhilePulling: true
  - type: PointLight
    radius: 1.3
    energy: 1.6
    color: "#43ccb5"
    mask: /Textures/Effects/LightMasks/cone.png
    autoRot: true

# job clothing

- type: entity
  parent: VendingMachine
  id: VendingMachineHydrobe
  name: HyDrobe
  description: A machine with a catchy name. It dispenses botany related clothing and gear.
  components:
  - type: VendingMachine
    pack: HyDrobeInventory
    offState: off
    brokenState: broken
    normalState: normal-unshaded
  - type: DatasetVocalizer
    dataset: HyDrobeAds
  - type: SpeakOnUIClosed
    pack: GenericVendGoodbyes
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/hydrobe.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: PointLight
    radius: 1.5
    energy: 1.6
    color: "#326e3f"
  - type: AccessReader
    access: [["Hydroponics"]]

- type: entity
  parent: VendingMachine
  id: VendingMachineLawDrobe
  name: LawDrobe
  description: Objection! This wardrobe dispenses the rule of law... and lawyer clothing..
  components:
  - type: VendingMachine
    pack: LawDrobeInventory
    offState: off
    brokenState: broken
    normalState: normal-unshaded
  - type: DatasetVocalizer
    dataset: LawDrobeAds
  - type: SpeakOnUIClosed
    pack: LawDrobeGoodbyes
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/lawdrobe.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: AccessReader
    access: [["Lawyer"]]

- type: entity
  parent: VendingMachine
  id: VendingMachineSecDrobe
  name: SecDrobe
  description: A vending machine for security and security-related clothing!
  components:
  - type: VendingMachine
    pack: SecDrobeInventory
    offState: off
    brokenState: broken
    normalState: normal-unshaded
  - type: DatasetVocalizer
    dataset: SecDrobeAds
  - type: SpeakOnUIClosed
    pack: GenericVendGoodbyes
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/secdrobe.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: PointLight
    radius: 1.5
    energy: 1.6
    color: "#d82929"
  - type: AccessReader
    access: [["Security"]]

- type: entity
  parent: VendingMachine
  id: VendingBarDrobe
  name: BarDrobe
  description: A stylish vendor to dispense the most stylish bar clothing!
  components:
  - type: VendingMachine
    pack: BarDrobeInventory
    offState: off
    brokenState: broken
    normalState: normal-unshaded
  - type: DatasetVocalizer
    dataset: BarDrobeAds
  - type: SpeakOnUIClosed
    pack: GenericVendGoodbyes
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/bardrobe.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: AccessReader
    access: [["Bar"]]

- type: entity
  parent: VendingMachine
  id: VendingMachineChapel
  name: PietyVend
  components:
  - type: VendingMachine
    pack: PietyVendInventory
    offState: off
    brokenState: broken
    normalState: normal-unshaded
    denyState: deny-unshaded
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/chapdrobe.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: AccessReader
    access: [["Chapel"]]
  - type: PointLight
    radius: 2
    energy: 1.6
    color: "#CCCCCC" #The holy C
    mask: /Textures/Effects/LightMasks/cone.png
    autoRot: true

- type: entity
  parent: VendingMachine
  id: VendingMachineCargoDrobe
  name: CargoDrobe
  description: A highly advanced vending machine for buying cargo related clothing for free.
  components:
  - type: VendingMachine
    pack: CargoDrobeInventory
    offState: off
    brokenState: broken
    normalState: normal-unshaded
  - type: DatasetVocalizer
    dataset: CargoDrobeAds
  - type: SpeakOnUIClosed
    pack: GenericVendGoodbyes
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/cargodrobe.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: PointLight
    radius: 1.5
    energy: 1.6
    color: "#b89e2a"
  - type: AccessReader
    access: [["Cargo"]]

- type: entity
  parent: VendingMachine
  id: VendingMachineMediDrobe
  name: MediDrobe
  description: A vending machine rumoured to be capable of dispensing clothing for medical personnel.
  components:
  - type: VendingMachine
    pack: MediDrobeInventory
    offState: off
    brokenState: broken
    normalState: normal-unshaded
  - type: DatasetVocalizer
    dataset: MediDrobeAds
  - type: SpeakOnUIClosed
    pack: GenericVendGoodbyes
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/medidrobe.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: AccessReader
    access: [["Medical"]]

- type: entity
  parent: VendingMachine
  id: VendingMachineChemDrobe
  name: ChemDrobe
  description: A vending machine for dispensing chemistry related clothing.
  components:
  - type: VendingMachine
    pack: ChemDrobeInventory
    offState: off
    brokenState: broken
    normalState: normal-unshaded
  - type: DatasetVocalizer
    dataset: ChemDrobeAds
  - type: SpeakOnUIClosed
    pack: GenericVendGoodbyes
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/chemdrobe.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: AccessReader
    access: [["Chemistry"]]

- type: entity
  parent: VendingMachine
  id: VendingMachineCuraDrobe
  name: CuraDrobe
  description: A lowstock vendor only capable of vending clothing for curators and librarians.
  components:
  - type: VendingMachine
    pack: CuraDrobeInventory
    offState: off
    brokenState: broken
    normalState: normal-unshaded
  - type: DatasetVocalizer
    dataset: CuraDrobeAds
  - type: SpeakOnUIClosed
    pack: GenericVendGoodbyes
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/curadrobe.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: AccessReader
    access: [["Service"]]

- type: entity
  parent: VendingMachine
  id: VendingMachineAtmosDrobe
  name: AtmosDrobe
  description: This relatively unknown vending machine delivers clothing for Atmospherics Technicians, an equally unknown job.
  components:
  - type: VendingMachine
    pack: AtmosDrobeInventory
    offState: off
    brokenState: broken
    normalState: normal-unshaded
  - type: DatasetVocalizer
    dataset: AtmosDrobeAds
  - type: SpeakOnUIClosed
    pack: GenericVendGoodbyes
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/atmosdrobe.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: PointLight
    radius: 1.5
    energy: 1.6
    color: "#b89e2a"
  - type: AccessReader
    access: [["Engineering"]]

- type: entity
  parent: VendingMachine
  id: VendingMachineEngiDrobe
  name: EngiDrobe
  description: A vending machine renowned for vending industrial grade clothing.
  components:
  - type: VendingMachine
    pack: EngiDrobeInventory
    offState: off
    brokenState: broken
    normalState: normal-unshaded
  - type: DatasetVocalizer
    dataset: EngiDrobeAds
  - type: SpeakOnUIClosed
    pack: GenericVendGoodbyes
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/engidrobe.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: PointLight
    radius: 1.5
    energy: 1.6
    color: "#b89e2a"
  - type: AccessReader
    access: [["Engineering"]]

- type: entity
  parent: VendingMachine
  id: VendingMachineChefDrobe
  name: ChefDrobe
  description: This vending machine might not dispense meat, but it certainly dispenses chef related clothing.
  components:
  - type: VendingMachine
    pack: ChefDrobeInventory
    offState: off
    brokenState: broken
    normalState: normal-unshaded
  - type: DatasetVocalizer
    dataset: ChefDrobeAds
  - type: SpeakOnUIClosed
    pack: GenericVendGoodbyes
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/chefdrobe.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: AccessReader
    access: [["Kitchen"]]

- type: entity
  parent: VendingMachine
  id: VendingMachineDetDrobe
  name: DetDrobe
  description: A machine for all your detective needs, as long as you need clothes.
  components:
  - type: VendingMachine
    pack: DetDrobeInventory
    offState: off
    brokenState: broken
    normalState: normal-unshaded
  - type: DatasetVocalizer
    dataset: DetDrobeAds
  - type: SpeakOnUIClosed
    pack: GenericVendGoodbyes
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/detdrobe.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: AccessReader
    access: [["Detective"]]

- type: entity
  parent: VendingMachine
  id: VendingMachineJaniDrobe
  name: JaniDrobe
  description: A self cleaning vending machine capable of dispensing clothing for janitors.
  components:
  - type: VendingMachine
    pack: JaniDrobeInventory
    offState: off
    brokenState: broken
    normalState: normal-unshaded
  - type: DatasetVocalizer
    dataset: JaniDrobeAds
  - type: SpeakOnUIClosed
    pack: GenericVendGoodbyes
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/janidrobe.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: AccessReader
    access: [["Janitor"]]
  - type: PointLight
    radius: 1.5
    energy: 1.6
    color: "#6927C5"
    mask: /Textures/Effects/LightMasks/cone.png
    autoRot: true

- type: entity
  parent: VendingMachine
  id: VendingMachineSciDrobe
  name: SciDrobe
  description: A simple vending machine suitable to dispense well tailored science clothing. Endorsed by Space Cubans.
  components:
  - type: VendingMachine
    pack: SciDrobeInventory
    offState: off
    brokenState: broken
    normalState: normal-unshaded
  - type: DatasetVocalizer
    dataset: SciDrobeAds
  - type: SpeakOnUIClosed
    pack: GenericVendGoodbyes
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/scidrobe.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: AccessReader
    access: [["Research"]]

- type: entity
  parent: VendingMachine
  id: VendingMachineSyndieDrobe
  name: SyndieDrobe
  description: Wardrobe machine encoded by the syndicate, contains elite outfits for various operations.
  components:
  - type: VendingMachine
    pack: SyndieDrobeInventory
    offState: off
    brokenState: broken
    normalState: normal-unshaded
  - type: DatasetVocalizer
    dataset: SyndieDrobeAds
  - type: SpeakOnUIClosed
    pack: SyndieDrobeGoodbyes
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/syndiedrobe.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: PointLight
    radius: 1.5
    energy: 1.6
    color: "#d82929"
  - type: AccessReader
    access: [["NuclearOperative"], ["SyndicateAgent"]]

- type: entity
  parent: VendingMachine
  id: VendingMachineRoboDrobe
  name: RoboDrobe
  description: A vending machine designed to dispense clothing known only to roboticists.
  components:
  - type: VendingMachine
    pack: RoboDrobeInventory
    offState: off
    brokenState: broken
    normalState: normal-unshaded
  - type: DatasetVocalizer
    dataset: RoboDrobeAds
  - type: SpeakOnUIClosed
    pack: GenericVendGoodbyes
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/robodrobe.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: AccessReader
    access: [["Research"]]

- type: entity
  parent: VendingMachine
  id: VendingMachineGeneDrobe
  name: GeneDrobe
  description: A machine for dispensing clothing related to genetics.
  components:
  - type: VendingMachine
    pack: GeneDrobeInventory
    offState: off
    brokenState: broken
    normalState: normal-unshaded
  - type: DatasetVocalizer
    dataset: GeneDrobeAds
  - type: SpeakOnUIClosed
    pack: GenericVendGoodbyes
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/genedrobe.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: AccessReader
    access: [["Medical"]]

- type: entity
  parent: VendingMachine
  id: VendingMachineViroDrobe
  name: ViroDrobe
  description: An unsterilized machine for dispending virology related clothing.
  components:
  - type: VendingMachine
    pack: ViroDrobeInventory
    offState: off
    brokenState: broken
    normalState: normal-unshaded
  - type: DatasetVocalizer
    dataset: ViroDrobeAds
  - type: SpeakOnUIClosed
    pack: GenericVendGoodbyes
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/virodrobe.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: AccessReader
    access: [["Medical"]]

- type: entity
  parent: VendingMachine
  id: VendingMachineCentDrobe
  name: CentDrobe
  description: A one-of-a-kind vending machine for all your centcomm aesthetic needs!
  components:
  - type: VendingMachine
    pack: CentDrobeInventory
    offState: off
    brokenState: broken
    normalState: normal-unshaded
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/centdrobe.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: PointLight
    radius: 2
    energy: 1.6
    color: "#48CF48"
    mask: /Textures/Effects/LightMasks/cone.png
    autoRot: true
  - type: AccessReader
    access: [["CentralCommand"]]

- type: entity
  parent: VendingMachine
  id: VendingMachineHappyHonk
  name: Happy Honk Dispenser
  description: A happy honk meal box dispenser made by honk! co.
  components:
  - type: VendingMachine
    pack: HappyHonkDispenserInventory
    dispenseOnHitChance: 0.25
    dispenseOnHitThreshold: 2
    offState: off
    brokenState: broken
    normalState: normal-unshaded
    denyState: deny-unshaded
    ejectDelay: 1.9
    soundVend: /Audio/Items/bikehorn.ogg
    initialStockQuality: 1.0 # Nobody knows how Honk does it, but their vending machines always seem well-stocked...
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/happyhonk.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: PointLight
    radius: 2
    energy: 1.6
    color: "#3c5eb5"
    mask: /Textures/Effects/LightMasks/cone.png
    autoRot: true
  - type: DatasetVocalizer
    dataset: HappyHonkAds
  - type: SpeakOnUIClosed
    pack: HappyHonkGoodbyes
  - type: AccessReader
    access: [["Kitchen"], ["Theatre"]]

# Pride Vending Machine

- type: entity
  parent: VendingMachine
  id: VendingMachinePride
  name: Pride-O-Mat
  description: A vending machine containing pride.
  components:
  - type: VendingMachine
    pack: PrideDrobeInventory
    offState: off
    brokenState: broken
    normalState: normal-unshaded
  - type: DatasetVocalizer
    dataset: PrideDrobeAds
  - type: SpeakOnUIClosed
    pack: PrideDrobeGoodbyes
  - type: Speech
  - type: PointLight
    radius: 1.5
    energy: 1.3 # reduced energy since the color is pure white
    color: "#FFFFFF"
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/pride.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
      shader: unshaded
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]

# Gas Tank Dispenser

- type: entity
  parent: VendingMachine
  id: VendingMachineTankDispenserEVA
  suffix: EVA [O2, N2]
  name: gas tank dispenser
  description: A vendor for dispensing gas tanks.
  components:
  - type: VendingMachine
    pack: TankDispenserEVAInventory
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/tankdispenser.rsi #TODO add visualiser for remaining tanks as layers
    state: dispenser

- type: entity
  parent: VendingMachine
  id: VendingMachineTankDispenserEngineering
  suffix: ENG [O2, Plasma]
  name: gas tank dispenser
  description: A vendor for dispensing gas tanks. This one has an engineering livery.
  components:
  - type: VendingMachine
    pack: TankDispenserEngineeringInventory
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/tankdispenser.rsi #TODO add visualiser for remaining tanks as layers
    layers:
    - state: dispenser
    - state: dispensereng

- type: entity
  parent: VendingMachine
  id: VendingMachineChemicals
  name: ChemVend
  description: Probably not the coffee machine.
  components:
  - type: VendingMachine
    pack: ChemVendInventory
    offState: off
    brokenState: broken
    normalState: normal
    denyState: deny
    ejectDelay: 2
  - type: Sprite
    sprite: Structures/Machines/VendingMachines/chemvend.rsi
    layers:
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.Base"]
    - state: "off"
      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: AccessReader
    access: [["Chemistry"]]
  - type: GuideHelp
    guides:
    - Chemicals
    - Chemist

- type: entity
  parent: VendingMachineChemicals
  id: VendingMachineChemicalsSyndicate
  name: SyndieJuice
  description: Not made with freshly squeezed syndies I hope.
  components:
  - type: VendingMachine
    pack: ChemVendInventorySyndicate
    offState: off
    brokenState: broken
    normalState: normal
    denyState: deny
    ejectDelay: 2
  - type: AccessReader
    access: [["SyndicateAgent"]]
