# SPDX-License-Identifier: AGPL-3.0-or-later

- type: entity
  id: BaseWeaponBattery
  parent: BaseItem
  abstract: true
  components:
  - type: Sprite
  - type: Item
    size: Huge
  - type: Clothing
    sprite: Objects/Weapons/Guns/Battery/laser_retro.rsi
    quickEquip: false
    slots:
    - Back
    - suitStorage
  - type: AmmoCounter
  - type: Gun
    fireRate: 2
    selectedMode: SemiAuto
    availableModes:
    - SemiAuto
    soundGunshot:
      path: /Audio/Weapons/Guns/Gunshots/laser.ogg
  - type: Battery
    maxCharge: 1000
    startingCharge: 1000
  - type: StaticPrice
    price: 500
  - type: Cautery # Shitmed
    speed: 0.9
  - type: SurgeryTool # Shitmed
    endSound:
      path: /Audio/Weapons/Guns/Gunshots/laser.ogg
  # Goobstation edit start
  - type: EmitSoundOnPickup
    sound:
      collection: LasersPickUp
  - type: EmitSoundOnDrop
    sound:
      collection: LasersDrop
  - type: EmitSoundOnLand
    sound:
      collection: LasersDrop
  # Goobstation edit end
  - type: AlwaysHot # Goobstation V
  - type: MeleeWeapon
    damage:
      types:
       Blunt: 12
    angle: 0
    wideAnimationRotation: 90 # -90 if it takes bayonets (hits with muzzle) 90 if not (hits with butt)
    soundHit:
      collection: MetalThud # Goobstation ^
  - type: BatteryDrinkerSource # Goobstation - Energycrit
    maxAmount: 180 # you probably don't want to drain your entire gun charging in battle
  - type: Multishot # Goobstation V
    missChance: 0.4
    spreadMultiplier: 3
    spreadAddition: 40

- type: entity
  parent: [BaseWeaponBattery, BaseGunWieldable]
  id: BaseLaserRifle
  abstract: true
  components:
  - type: Item
    size: Large
  - type: Sprite
    sprite: Objects/Weapons/Guns/Battery/laser_gun.rsi
    layers:
    - state: base
      map: ["enum.GunVisualLayers.Base"]
    - state: mag-unshaded-4
      map: ["enum.GunVisualLayers.MagUnshaded"]
      shader: unshaded
  - type: MagazineVisuals
    magState: mag
    steps: 5
    zeroVisible: false
  - type: Appearance
  - type: Clothing
    sprite: Objects/Weapons/Guns/Battery/laser_gun.rsi
  - type: Gun
    selectedMode: SemiAuto
    availableModes:
    - SemiAuto
  - type: BatteryAmmoProvider
    proto: RedLaser
    fireCost: 62.5
  - type: StaticPrice
    price: 420
  - type: Tag
    tags:
    - LaserWeapon

- type: entity
  id: BaseWeaponPowerCell
  parent: BaseItem
  abstract: true
  components:
  - type: Sprite
  - type: Item
    size: Huge
  - type: AmmoCounter
  - type: Gun
    fireRate: 2
    selectedMode: SemiAuto
    availableModes:
    - SemiAuto
    soundGunshot:
      path: /Audio/Weapons/Guns/Gunshots/laser.ogg
  - type: BatteryAmmoProvider
    proto: RedLightLaser
    fireCost: 50
  - type: ItemSlots
    slots:
      cell_slot:
        name: Magazine
        startingItem: PowerCellSmall
        insertSound: /Audio/Weapons/Guns/MagIn/batrifle_magin.ogg
        ejectSound: /Audio/Weapons/Guns/MagOut/batrifle_magout.ogg
        whitelist:
          tags:
            - PowerCell
            - PowerCellSmall
  - type: PowerCellSlot
    cellSlotId: cell_slot
  - type: Appearance
  - type: StaticPrice
    price: 500
  - type: ContainerContainer
    containers:
      cell_slot: !type:ContainerSlot
  - type: Cautery # Shitmed
    speed: 0.9
  - type: SurgeryTool # Shitmed
    endSound:
      path: /Audio/Weapons/Guns/Gunshots/laser.ogg
  - type: AlwaysHot # Goobstation V
  - type: MeleeWeapon
    damage:
      types:
       Blunt: 12
    angle: 0
    wideAnimationRotation: 90 # -90 if it takes bayonets (hits with muzzle) 90 if not (hits with butt)
    soundHit:
      collection: MetalThud # Goobstation ^

- type: entity
  id: BaseWeaponBatterySmall
  parent: BaseWeaponBattery
  abstract: true
  components:
  - type: Item
    size: Small
    shape:
    - 0,0,1,0
    - 0,1,0,1
  - type: Tag
    tags:
    - Sidearm
  - type: Clothing
    sprite: Objects/Weapons/Guns/Battery/taser.rsi
    quickEquip: false
    slots:
    - Belt
    - suitStorage
  - type: MeleeWeapon # Goobstation V
    damage:
      types:
       Blunt: 8 # pistol whip
    angle: 0
    wideAnimationRotation: 90 # -90 if it takes bayonets (hits with muzzle) 90 if not (hits with butt)
    soundHit:
      collection: MetalThud # Goobstation ^

- type: entity
  id: BaseWeaponPowerCellSmall
  parent: BaseWeaponPowerCell
  abstract: true
  components:
  - type: Item
    size: Small
    shape: # Goobstation
    - 0,0,1,0
    - 0,1,0,1
  - type: Tag
    tags:
    - Sidearm
  - type: Clothing
    sprite: Objects/Weapons/Guns/Battery/taser.rsi
    quickEquip: false
    slots:
    - Belt
  - type: MeleeWeapon # Goobstation V
    damage:
      types:
       Blunt: 8 # pistol whip
    angle: 0
    wideAnimationRotation: 90 # -90 if it takes bayonets (hits with muzzle) 90 if not (hits with butt)
    soundHit:
      collection: MetalThud # Goobstation ^
  - type: Multishot # Goobstation V
    missChance: 0.4
    spreadMultiplier: 2
    spreadAddition: 40

- type: entity
  name: Svalinn # Goobstation
  parent: [BaseWeaponCustomCellSmall, BaseSecurityContraband] # goob edit - svalinn buff fix
  id: WeaponLaserSvalinn
  description: A cheap and modular laser pistol often carried by civilians. Takes standard power cells, with higher capacity ones amplifying the capacity and power of the resulting beam. # Goobstation
  components:
  - type: Sprite
    sprite: Objects/Weapons/Guns/Battery/svalinn.rsi
    layers:
    - state: base
      map: ["enum.GunVisualLayers.Base"]
    - state: mag-unshaded-4
      map: ["enum.GunVisualLayers.MagUnshaded"]
      shader: unshaded
  - type: Item
    shape:
    - 0,0,1,0
    - 0,1,0,1
    storedOffset: 0,-7
    sprite: Objects/Weapons/Guns/Battery/svalinn.rsi
  - type: RestrictGunshotsByUserTag # Goobstation
    doesntContain:
    - Oni
    messages:
    - oni-cannot-shoot-guns-1
    - oni-cannot-shoot-guns-2
    - oni-cannot-shoot-guns-3
  - type: MagazineVisuals
    magState: mag
    steps: 5
    zeroVisible: true
  - type: Tag
    tags:
    - Sidearm
    - LaserWeapon
  - type: PhysicalComposition #Goobstation - Recycle update
    materialComposition:
      Steel: 500
      Gold: 125
  - type: ItemSlots # goob edit - let svalinns use potato batteries
    slots:
      gun_magazine:
        name: Magazine
        startingItem: PowerCellMedium
        insertSound: /Audio/Weapons/Guns/MagIn/batrifle_magin.ogg
        ejectSound: /Audio/Weapons/Guns/MagOut/batrifle_magout.ogg
        whitelist:
          tags:
            - PowerCell
            - PowerCellSmall
            - PotatoBattery

- type: entity
  name: retro laser blaster
  parent: [BaseWeaponBatterySmall, BaseMajorContraband]
  id: WeaponLaserGun
  description: A laser pistol from another time. Its design is pretty rare in the current era, but it's compatible with modern rechargers. # Goobstation
  components:
  - type: Sprite
    sprite: Objects/Weapons/Guns/Battery/laser_retro.rsi
    layers:
    - state: base
      map: ["enum.GunVisualLayers.Base"]
    - state: mag-unshaded-4
      map: ["enum.GunVisualLayers.MagUnshaded"]
      shader: unshaded
  - type: Item
    storedOffset: 0,-5
  - type: RestrictGunshotsByUserTag # Goobstation
    doesntContain:
    - Oni
    messages:
    - oni-cannot-shoot-guns-1
    - oni-cannot-shoot-guns-2
    - oni-cannot-shoot-guns-3
  - type: BatteryAmmoProvider
    proto: RedMediumLaser
    fireCost: 62.5
  - type: MagazineVisuals
    magState: mag
    steps: 5
    zeroVisible: true
  - type: Appearance
  - type: Tag
    tags:
    - Sidearm
    - LaserWeapon

- type: entity
  name: makeshift laser pistol
  parent: [BaseWeaponBatterySmall, BaseMinorContraband]
  id: WeaponMakeshiftLaser
  description: Better pray it won't burn your hands off.
  components:
  - type: Sprite
    sprite: Objects/Weapons/Guns/Battery/makeshift.rsi
    layers:
    - state: base
      map: ["enum.GunVisualLayers.Base"]
    - state: mag-unshaded-4
      map: ["enum.GunVisualLayers.MagUnshaded"]
      shader: unshaded
  - type: Item
    storedOffset: 0,-4
  - type: RestrictGunshotsByUserTag # Goobstation
    doesntContain:
    - Oni
    messages:
    - oni-cannot-shoot-guns-1
    - oni-cannot-shoot-guns-2
    - oni-cannot-shoot-guns-3
  - type: MagazineVisuals
    magState: mag
    steps: 5
    zeroVisible: false
  - type: Appearance
  - type: Clothing
    sprite: Objects/Weapons/Guns/Battery/makeshift.rsi
  - type: BatteryAmmoProvider
    proto: RedLaser
    fireCost: 62.5
  - type: Battery
    maxCharge: 500
    startingCharge: 500
  - type: Tag
    tags:
    - Sidearm
    - LaserWeapon

- type: entity
  name: tesla gun
  parent: [BaseWeaponBattery, BaseMajorContraband]
  id: WeaponTeslaGun
  description: The power of the primordial element of lightning in your hands.
  components:
  - type: Item
    size: Large
    shape:
    - 0,0,2,1
  - type: Sprite
    sprite: Objects/Weapons/Guns/Battery/tesla_gun.rsi
    layers:
      - state: base
        map: ["enum.GunVisualLayers.Base"]
      - state: mag-unshaded-4
        map: ["enum.GunVisualLayers.MagUnshaded"]
        shader: unshaded
  - type: Gun
    projectileSpeed: 10
    soundGunshot:
      path: /Audio/Effects/Lightning/lightningshock.ogg
      params:
        variation: 0.2
  - type: BatteryAmmoProvider
    proto: TeslaGunBullet
    fireCost: 300
  - type: MagazineVisuals
    magState: mag
    steps: 5
    zeroVisible: true
  - type: Appearance

- type: entity
  name: laser carbine
  parent: [BaseLaserRifle, BaseGunWieldable, BaseSecurityContraband]
  id: WeaponLaserCarbine
  description: Favoured by Nanotrasen Security for being cheap and easy to use.
  components:
  - type: BatteryAmmoProvider
    proto: RedLaser
    fireCost: 50 # Goobstation
  - type: Gun # Goobstation
    fireRate: 4 # <- its for this
    selectedMode: SemiAuto
    availableModes:
    - SemiAuto

- type: entity
  name: practice laser carbine
  parent: [BaseLaserRifle, BaseGunWieldable]
  id: WeaponLaserCarbinePractice
  description: This modified laser carbine fires nearly harmless beams in the 40-watt range, for target practice.
  components:
  - type: StaticPrice
    price: 300
  - type: BatteryAmmoProvider
    proto: RedLaserPractice
    fireCost: 62.5
  - type: PacifismAllowedGun

- type: entity
  name: pulse pistol
  parent: [BaseWeaponBatterySmall, BaseCentcommContraband]
  id: WeaponPulsePistol
  description: A state-of-the-art laser pistol that fires a rapidly pulsing beam. It's favored as a sidearm for the Emergency Response corps due to its self-recharging design. # Goobstation
  components:
  - type: Sprite
    sprite: Objects/Weapons/Guns/Battery/pulse_pistol.rsi
    layers:
    - state: base
      map: ["enum.GunVisualLayers.Base"]
    - state: mag-unshaded-4
      map: ["enum.GunVisualLayers.MagUnshaded"]
      shader: unshaded
  - type: Item
    storedOffset: -2,-5
  - type: MagazineVisuals
    magState: mag
    steps: 5
    zeroVisible: false
  - type: Appearance
  - type: Clothing
    sprite: Objects/Weapons/Guns/Battery/pulse_pistol.rsi
  - type: Gun
    selectedMode: SemiAuto
    availableModes:
    - SemiAuto
    soundGunshot:
      path: /Audio/Weapons/Guns/Gunshots/laser3.ogg
  - type: BatteryAmmoProvider
    proto: LightPulse # Goobstation
    fireCost: 200
  - type: Battery
    maxCharge: 2000
    startingCharge: 2000
  - type: Tag
    tags:
    - Sidearm
    - LaserWeapon
  - type: BatterySelfRecharger # Goobstation - CentComm Job Revamp
    autoRechargeRate: 40

- type: entity
  name: pulse carbine
  parent: [BaseWeaponBattery, BaseGunWieldable, BaseCentcommContraband]
  id: WeaponPulseCarbine
  description: A state-of-the-art laser carbine that fires a rapidly pulsing beam. Cheaper than its advanced counterpart, though lacks the ability to self-recharge. # Goobstation
  components:
#  - type: Item #Goob
#    size: Large
  - type: Sprite
    sprite: Objects/Weapons/Guns/Battery/pulse_carbine.rsi
    layers:
    - state: base
      map: ["enum.GunVisualLayers.Base"]
    - state: mag-unshaded-4
      map: ["enum.GunVisualLayers.MagUnshaded"]
      shader: unshaded
  - type: MagazineVisuals
    magState: mag
    steps: 5
    zeroVisible: false
  - type: Appearance
  - type: Clothing
    sprite: Objects/Weapons/Guns/Battery/pulse_carbine.rsi
  - type: Gun
    selectedMode: SemiAuto
    fireRate: 3
    availableModes:
      - SemiAuto
      - FullAuto
    soundGunshot:
      path: /Audio/Weapons/Guns/Gunshots/laser3.ogg
  - type: BatteryAmmoProvider
    proto: Pulse
    fireCost: 200
  - type: AmmoSelector # Goobstation - Start
    prototypes:
    - Pulse
    - StunPulse
  - type: UserInterface
    interfaces:
      enum.AmmoSelectorUiKey.Key:
        type: AmmoSelectorMenuBoundUserInterface
  - type: ActivatableUI
    altVerb: true
    verbOnly: true
    verbText: mode-select-verb-text
    key: enum.AmmoSelectorUiKey.Key # Goobstation - End
  - type: Battery
    maxCharge: 5000
    startingCharge: 5000
  # Goobstation
  - type: Tag
    tags:
    - Rifle
  - type: Item
    size: Huge
    shape:
    - 0,0,4,1

- type: entity
  name: pulse rifle
  parent: [BaseWeaponBattery, BaseGunWieldable, BaseCentcommContraband]
  id: WeaponPulseRifle
  description: A weapon almost as infamous as its users. # Goobstation - Sometimes less is more.
  components:
  - type: Item
    size: Huge
    shape:
    - 0,0,4,1
  - type: Sprite
    sprite: Objects/Weapons/Guns/Battery/pulse_rifle.rsi
    layers:
    - state: base
      map: ["enum.GunVisualLayers.Base"]
    - state: mag-unshaded-4
      map: ["enum.GunVisualLayers.MagUnshaded"]
      shader: unshaded
  - type: MagazineVisuals
    magState: mag
    steps: 5
    zeroVisible: false
  - type: Appearance
  - type: Clothing
    sprite: Objects/Weapons/Guns/Battery/pulse_rifle.rsi
  - type: Gun
    fireRate: 1.5
    soundGunshot:
      path: /Audio/Weapons/Guns/Gunshots/laser3.ogg
  - type: BatteryAmmoProvider
    proto: HeavyPulse # Goobstation - Start
    fireCost: 100
  - type: AmmoSelector
    prototypes:
    - HeavyPulse
    - LightPulse
    - StunPulse
  - type: UserInterface
    interfaces:
      enum.AmmoSelectorUiKey.Key:
        type: AmmoSelectorMenuBoundUserInterface
  - type: ActivatableUI
    altVerb: true
    verbOnly: true
    verbText: mode-select-verb-text
    key: enum.AmmoSelectorUiKey.Key # Goobstation - End
  - type: Battery
    maxCharge: 40000
    startingCharge: 40000
  # Goobstation
  - type: Tag
    tags:
    - Rifle

- type: entity
  name: laser cannon
  parent: [BaseWeaponBattery, BaseGunWieldable, BaseSecurityContraband]
  id: WeaponLaserCannon
  description: A heavy and advanced laser weapon that trades out the capacity of a carbine for greatly increased power. Known to inflict third-degree burns straight through bulletproof armor.
  components:
  - type: Item
    size: Huge
    shape:
    - 0,0,4,1
  - type: Sprite
    sprite: Objects/Weapons/Guns/Battery/laser_cannon.rsi
    layers:
    - state: base
      map: ["enum.GunVisualLayers.Base"]
    - state: mag-unshaded-4
      map: ["enum.GunVisualLayers.MagUnshaded"]
      shader: unshaded
  - type: MagazineVisuals
    magState: mag
    steps: 5
    zeroVisible: false
  - type: Appearance
  - type: Clothing
    sprite: Objects/Weapons/Guns/Battery/laser_cannon.rsi
  - type: Gun
    fireRate: 2 # Goobstation
    soundGunshot:
      path: /Audio/Weapons/Guns/Gunshots/laser_cannon.ogg
  - type: BatteryAmmoProvider
    proto: RedHeavyLaser
    fireCost: 100
  - type: Tag
    tags:
    - TurretCompatibleWeapon
    - Rifle # Goobstation

- type: entity
  name: portable particle decelerator
  parent: [BaseWeaponBattery, BaseEngineeringContraband]
  id: WeaponParticleDecelerator
  description: A portable particle decelerator capable of decomposing a tesla or singularity.
  components:
    - type: Item
      size: Ginormous
    - type: MultiHandedItem
    - type: ClothingSpeedModifier
      walkModifier: 0.6
      sprintModifier: 0.6
    - type: HeldSpeedModifier
    - type: Sprite
      sprite: Objects/Weapons/Guns/Battery/particle_decelerator.rsi
      layers:
        - state: base
          map: ["enum.GunVisualLayers.Base"]
    - type: Gun
      fireRate: 0.5
      soundGunshot:
        path: /Audio/Weapons/emitter.ogg
        params:
          pitch: 2
    - type: BatteryAmmoProvider
      proto: AntiParticlesProjectile
      fireCost: 500
    - type: Battery
      maxCharge: 10000
      startingCharge: 10000
    - type: PhysicalComposition #Goobstation - Recycle update
      materialComposition:
        Steel: 187
        Plasma: 37
        Uranium: 37
    - type: Tag # Goobstation
      tags:
      - Rifle

- type: entity
  name: x-ray cannon
  parent: [BaseWeaponBattery, BaseGunWieldable, BaseSecurityContraband]
  id: WeaponXrayCannon
  description: An experimental laser weapon that fires a dense x-ray beam. Leaves intense radiation burns.
  components:
  - type: Item
    size: Huge
    shape:
    - 0,0,4,1
  - type: Sprite
    sprite: Objects/Weapons/Guns/Battery/xray.rsi
    layers:
    - state: base
      map: ["enum.GunVisualLayers.Base"]
    - state: mag-unshaded-0
      map: ["enum.GunVisualLayers.MagUnshaded"]
      shader: unshaded
  - type: Clothing
    sprite: Objects/Weapons/Guns/Battery/xray.rsi
  - type: Gun
    soundGunshot:
      path: /Audio/Weapons/Guns/Gunshots/laser3.ogg
  - type: BatteryAmmoProvider
    proto: XrayLaser
    fireCost: 100
  - type: MagazineVisuals
    magState: mag
    steps: 5
    zeroVisible: true
  - type: Appearance
  - type: RestrictGunshotsByUserTag # Goobstation
    doesntContain:
    - Oni
    messages:
    - oni-cannot-shoot-guns-1
    - oni-cannot-shoot-guns-2
    - oni-cannot-shoot-guns-3
  # Goobstation
  - type: Tag
    tags:
    - Rifle

- type: entity
  name: practice disabler
  parent: BaseWeaponBatterySmall
  id: WeaponDisablerPractice
  description: A self-defense weapon that exhausts organic targets, weakening them until they collapse. This one has been undertuned for use in training scenarios or target practice.
  components:
  - type: Sprite
    sprite: Objects/Weapons/Guns/Battery/practice_disabler.rsi
    layers:
    - state: base
      map: ["enum.GunVisualLayers.Base"]
    - state: mag-unshaded-0
      map: ["enum.GunVisualLayers.MagUnshaded"]
      shader: unshaded
  - type: Item
    storedOffset: -1,-5
  - type: Clothing
    sprite: Objects/Weapons/Guns/Battery/practice_disabler.rsi
    quickEquip: false
    slots:
    - Belt
  - type: Appearance
  - type: MagazineVisuals
    magState: mag
    steps: 5
    zeroVisible: true
  - type: StaticPrice
    price: 100
  - type: Gun
    fireRate: 2
    #projectileSpeed: 35 # Goobstation - nuh uh
    soundGunshot:
      path: /Audio/Weapons/Guns/Gunshots/taser2.ogg
  - type: BatteryAmmoProvider
    proto: BulletDisablerPractice
    fireCost: 62.5
  - type: Tag
    tags:
    - Taser
    - Sidearm
  - type: PacifismAllowedGun
  - type: GunExecutionBlacklist # Goobstation


- type: entity
  name: disabler
  parent: [WeaponDisablerPractice, BaseSecurityCommandContraband]
  id: WeaponDisabler
  description: A self-defense weapon that exhausts organic targets, weakening them until they collapse.
  components:
  - type: Sprite
    sprite: Objects/Weapons/Guns/Battery/disabler.rsi
    layers:
      - state: base
        map: ["enum.GunVisualLayers.Base"]
      - state: mag-unshaded-0
        map: ["enum.GunVisualLayers.MagUnshaded"]
        shader: unshaded
  - type: Clothing
    sprite: Objects/Weapons/Guns/Battery/disabler.rsi
    quickEquip: false
    slots:
      - suitStorage
      - Belt
  - type: BatteryAmmoProvider
    proto: BulletDisabler
    fireCost: 62.5
  - type: GuideHelp
    guides:
    - Security
    - Antagonists
  - type: PacifismAllowedGun
  # Goobstation start
  - type: Tag
    tags:
    - Taser
    - Sidearm
    - WeaponDisabler
  # Goobstation end

- type: entity
  name: disabler SMG
  parent: [BaseWeaponBattery, BaseSecurityContraband]
  id: WeaponDisablerSMG
  description: An iteration of the disabler, reducing the power of each shot for a massive increase in firerate. Though a lot bulkier, the lightweight frame and lack of recoil make it fully usable one-handed. # Goobstation
  components:
  - type: Item
    size: Large
    shape:
    - 0,0,2,1
  - type: Tag
    tags:
      - Taser
  - type: Sprite
    sprite: Objects/Weapons/Guns/Battery/disabler_smg.rsi
    layers:
      - state: base
        map: ["enum.GunVisualLayers.Base"]
      - state: mag-unshaded-0
        map: ["enum.GunVisualLayers.MagUnshaded"]
        shader: unshaded
  - type: Gun
    selectedMode: FullAuto
    fireRate: 4.5
    availableModes:
      - SemiAuto
      - FullAuto
    soundGunshot:
      path: /Audio/Weapons/Guns/Gunshots/taser2.ogg
  - type: BatteryAmmoProvider
    proto: BulletDisablerSmg
    fireCost: 25
  - type: MagazineVisuals
    magState: mag
    steps: 5
    zeroVisible: true
  - type: Appearance
  - type: StaticPrice
    price: 260
  - type: PacifismAllowedGun
  - type: GunExecutionBlacklist # Goobstation


- type: entity
  name: Taser # Goobstation
  parent: [BaseWeaponBatterySmall, BaseSecurityContraband]
  id: WeaponTaser
  description: A handheld stun weapon that fires two electrified darts at the target. Formerly used by NanoTrasen security, though it's mostly been phased out. # Goobstation
  components:
  - type: Tag
    tags:
    - Taser
    - Sidearm
  - type: Sprite
    sprite: Objects/Weapons/Guns/Battery/taser.rsi
    layers:
    - state: base
      map: ["enum.GunVisualLayers.Base"]
    - state: mag-unshaded-0
      map: ["enum.GunVisualLayers.MagUnshaded"]
      shader: unshaded
  - type: Item
    heldPrefix: taser4
  - type: Clothing
    quickEquip: false
    slots:
    - Belt
  - type: Gun
    fireRate: 0.5
    soundGunshot:
      path: /Audio/Weapons/Guns/Gunshots/taser.ogg
    projectileSpeed: 25
  - type: BatteryAmmoProvider
    proto: BulletTaser
    fireCost: 200
  - type: MagazineVisuals
    magState: mag
    steps: 5
    zeroVisible: true
  - type: Appearance
  - type: PacifismAllowedGun
  - type: GunExecutionBlacklist # Goobstation


- type: entity
  name: elite taser
  parent: [ BaseCentcommContraband, WeaponTaser ]
  id: WeaponTaserSuper
  suffix: ADMEME
  description: A low-capacity, energy-based stun gun used by elite security teams to disable even the toughest of targets.
  components:
  - type: Gun
    fireRate: 0.5
    soundGunshot:
      path: /Audio/Effects/tesla_collapse.ogg # The wrath of god...
      params:
        volume: -6
  - type: BatteryAmmoProvider
    proto: BulletTaserSuper
    fireCost: 200

- type: entity
  name: antique laser pistol
  parent: [BaseWeaponBatterySmall, BaseGrandTheftContraband]
  id: WeaponAntiqueLaser
  description: A premium laser pistol from another age, customised with a mahogany grip and sleek chrome filigree. The chamber glows with menacing spikes of energy. There are clown and captain stick figures scratched into the side plate. The clown is dead. The captain is striking a heroic pose. # Goobstation
  components:
  - type: Sprite
    sprite: Objects/Weapons/Guns/Battery/antiquelasergun.rsi
    layers:
    - state: base
      map: ["enum.GunVisualLayers.Base"]
    - state: mag-unshaded-4
      map: ["enum.GunVisualLayers.MagUnshaded"]
      shader: unshaded
  - type: Clothing
    sprite: Objects/Weapons/Guns/Battery/antiquelasergun.rsi
  - type: Gun
    soundGunshot:
      path: /Audio/Weapons/Guns/Gunshots/laser_cannon.ogg
  - type: BatteryAmmoProvider
    proto: RedMediumLaser
    fireCost: 100
  - type: BatterySelfRecharger
    autoRechargeRate: 40
  - type: MagazineVisuals
    magState: mag
    steps: 5
    zeroVisible: true
  - type: Appearance
  - type: Tag
    tags:
    - HighRiskItem
    - Sidearm
    - WeaponAntiqueLaser
    - LaserWeapon
  - type: StaticPrice
    price: 750
  - type: StealTarget
    stealGroup: WeaponAntiqueLaser
  - type: SentienceTarget # I hope this is only the captain's gun
    flavorKind: station-event-random-sentience-flavor-inanimate
    weight: 0.0002 # 5,000 times less likely than 1 regular animal
    # not putting a BlockMovement component here cause that's funny.

- type: entity
  name: advanced laser pistol # Goobstation
  parent: [BaseWeaponBatterySmall, BaseSecurityContraband]
  id: WeaponAdvancedLaser
  description: An experimental laser pistol fitted with a self-charging nuclear battery. # Goobstation
  components:
  - type: Item
    #size: Normal # Goob we want the L shaped size
    #shape:
    #- 0,0,1,1
  - type: Sprite
    sprite: Objects/Weapons/Guns/Battery/advancedlasergun.rsi
    layers:
    - state: base
      map: ["enum.GunVisualLayers.Base"]
    - state: mag-unshaded-4
      map: ["enum.GunVisualLayers.MagUnshaded"]
      shader: unshaded
  - type: Clothing
    sprite: Objects/Weapons/Guns/Battery/advancedlasergun.rsi
  - type: Gun
    soundGunshot:
      path: /Audio/Weapons/Guns/Gunshots/laser_cannon.ogg
  - type: BatteryAmmoProvider
    proto: RedMediumLaser
    fireCost: 100
  - type: BatterySelfRecharger
    autoRechargeRate: 30
  - type: RestrictGunshotsByUserTag # Goobstation
    doesntContain:
    - Oni
    messages:
    - oni-cannot-shoot-guns-1
    - oni-cannot-shoot-guns-2
    - oni-cannot-shoot-guns-3
  - type: MagazineVisuals
    magState: mag
    steps: 5
    zeroVisible: true
  - type: Appearance
  - type: StaticPrice
    price: 63
  - type: Tag
    tags:
    - Sidearm
    - LaserWeapon

- type: entity
  name: C.H.I.M.P. handcannon
  parent: [BaseWeaponBatterySmall, BaseScienceContraband]
  id: WeaponPistolCHIMP
  description: Just because it's a little C.H.I.M.P. doesn't mean it can't punch like an A.P.E.
  components:
  - type: Sprite
    sprite: Objects/Weapons/Guns/Revolvers/chimp.rsi
    layers:
    - state: base
      map: ["enum.GunVisualLayers.Base"]
    - state: mag-unshaded-1
      visible: false
      map: ["enum.GunVisualLayers.MagUnshaded"]
      shader: unshaded
  - type: Item
    storedOffset: 0,-6
  - type: Appearance
  - type: MagazineVisuals
    magState: mag
    steps: 3
    zeroVisible: false
  - type: Clothing
    sprite: Objects/Weapons/Guns/Revolvers/chimp.rsi
  - type: Gun
    projectileSpeed: 10
    fireRate: 1.5
    soundGunshot:
      path: /Audio/Weapons/Guns/Gunshots/taser2.ogg
  - type: BatteryAmmoProvider
    proto: AnomalousParticleDeltaStrong
    fireCost: 100
  - type: BatteryWeaponFireModes
    fireModes:
    - proto: AnomalousParticleDeltaStrong
      fireCost: 100
    - proto: AnomalousParticleEpsilonStrong
      fireCost: 100
    - proto: AnomalousParticleZetaStrong
      fireCost: 100
    - proto: AnomalousParticleSigmaStrong
      fireCost: 100
  - type: Construction
    graph: UpgradeWeaponPistolCHIMP
    node: start
  - type: StaticPrice
    price: 100
  - type: PhysicalComposition #Goobstation - Recycle update
    materialComposition:
      Steel: 125
      Glass: 100
  - type: PacifismAllowedGun


- type: entity
  name: experimental C.H.I.M.P. handcannon
  parent: [WeaponPistolCHIMP, BaseSyndicateContraband]
  id: WeaponPistolCHIMPUpgraded
  description: This C.H.I.M.P. seems to have a greater punch than usual...
  components:
  - type: BatteryWeaponFireModes
    fireModes:
    - proto: AnomalousParticleDeltaStrong
      fireCost: 100
    - proto: AnomalousParticleEpsilonStrong
      fireCost: 100
    - proto: AnomalousParticleOmegaStrong
      fireCost: 100
    - proto: AnomalousParticleZetaStrong
      fireCost: 100
    - proto: AnomalousParticleSigmaStrong
      fireCost: 100

- type: entity
  name: eye of a behonker
  parent: BaseWeaponBatterySmall
  id: WeaponBehonkerLaser
  description: The eye of a behonker, it fires a laser when squeezed.
  components:
  - type: Sprite
    sprite: Objects/Weapons/Guns/Battery/behonker_eye.rsi
    layers:
    - state: base
      map: ["enum.GunVisualLayers.Base"]
  - type: Gun
    fireRate: 0.5
    soundGunshot:
      path: /Audio/Weapons/Guns/Gunshots/laser_clown.ogg
  - type: BatteryAmmoProvider
    proto: RedMediumLaser
    fireCost: 100
  - type: BatterySelfRecharger
    autoRechargeRate: 40
  - type: StaticPrice
    price: 750
  - type: Tag
    tags:
    - Sidearm
    - LaserWeapon

- type: entity
  name: Energy Shotgun # Goobstation
  parent: [BaseWeaponBattery, BaseGunWieldable, BaseGrandTheftContraband] # Goobstation
  id: WeaponEnergyShotgun
  description: A one-of-a-kind energy weapon that fires a barrage of red-hot plasma rather than a laser beam. Comes with a fire selector between narrow, wide, and disabling, making it a diverse weapon in the right hands. # Goobstation
  components:
  - type: Sprite
    sprite: Objects/Weapons/Guns/Battery/energy_shotgun.rsi
    layers:
      - state: base
        map: ["enum.GunVisualLayers.Base"]
      - state: mag-unshaded-4
        map: ["enum.GunVisualLayers.MagUnshaded"]
        shader: unshaded
  - type: MagazineVisuals
    magState: mag
    steps: 5
    zeroVisible: false
  - type: Appearance
  - type: Clothing
    sprite: Objects/Weapons/Guns/Battery/energy_shotgun.rsi
  - type: Gun
    fireRate: 2
    soundGunshot:
      path: /Audio/Weapons/Guns/Gunshots/laser_cannon.ogg
  - type: BatteryAmmoProvider
    proto: BulletLaserSpreadNarrow
    fireCost: 80
  # Goob edit start
  #  - type: BatteryWeaponFireModes
  #    fireModes:
  #    - proto: BulletLaserSpreadNarrow
  #      fireCost: 80
  #    - proto: BulletDisablerSmgSpread
  #      fireCost: 48
  #      pacifismAllowedMode: true
  - type: AmmoSelector
    prototypes:
      - BulletLaserSpread
      - BulletLaserSpreadNarrow
      - BulletDisablerSmgSpread
  - type: UserInterface
    interfaces:
      enum.AmmoSelectorUiKey.Key:
        type: AmmoSelectorMenuBoundUserInterface
  - type: ActivatableUI
    altVerb: true
    verbOnly: true
    verbText: mode-select-verb-text
    key: enum.AmmoSelectorUiKey.Key
  - type: Item
    size: Large
    shape:
    - 0,0,4,1
  # Goob edit end
    sprite: Objects/Weapons/Guns/Battery/inhands_64x.rsi
    heldPrefix: energy
  - type: GunRequiresWield #remove when inaccuracy on spreads is fixed
  - type: Battery
    maxCharge: 1200 # Goobstation
    startingCharge: 1200 # Goobstation

- type: entity
  name: energy magnum
  parent: [BaseWeaponBatterySmall, BaseGrandTheftContraband]
  id: WeaponEnergyMagnum
  description: A high powered self-charging energy pistol designed for elite security personnel. It has has three firing modes allowing for either high damage, window piercing, or non-lethal disabling.
  components:
  - type: Sprite
    sprite: Objects/Weapons/Guns/Battery/energy_magnum.rsi
    layers:
    - state: base
      map: [ "enum.GunVisualLayers.Base" ]
    - state: mag-unshaded-1
      visible: false
      map: [ "enum.GunVisualLayers.MagUnshaded" ]
      shader: unshaded
  - type: MagazineVisuals
    magState: mag
    steps: 4
    zeroVisible: true
  - type: Appearance
  - type: Clothing
    sprite: Objects/Weapons/Guns/Battery/energy_magnum.rsi
  - type: Tag
    tags:
    - HighRiskItem
    - Sidearm
  - type: StealTarget
    stealGroup: WeaponEnergyMagnum
  - type: Gun
    soundGunshot:
      path: /Audio/Weapons/Guns/Gunshots/laser_cannon.ogg
  - type: BatteryAmmoProvider
    proto: BulletLaserMagnum
    fireCost: 150
  - type: BatteryWeaponFireModes
    fireModes:
    - proto: BulletLaserMagnum
      fireCost: 150
    - proto: BulletLaserWindowPiercingMagnum
      fireCost: 150
    - proto: BulletDisabler
      fireCost: 62.5
      pacifismAllowedMode: true
  - type: BatterySelfRecharger
    autoRechargeRate: 48
    autoRechargePauseTime: 10

- type: entity
  name: temperature gun # Goobstation
  parent: [BaseWeaponBattery, BaseGunWieldable, BaseSecurityContraband]
  id: WeaponTemperatureGun
  description: A versatile energy gun that fires projectiles that modify internal body temperature, originally designed for use against opponents in armored hardsuits. Probably constitutes some kind of war crime in corporate space. # Goobstation
  components:
  - type: Sprite
    sprite: _Goobstation/Objects/Weapons/Guns/Battery/tempgun.rsi # Goobstation
    layers:
    - state: base
      map: [ "enum.GunVisualLayers.Base" ]
    - state: mode-cooling
      shader: unshaded
      map: [ "Firemode" ]
    - state: mag-unshaded-4
      map: [ "enum.GunVisualLayers.MagUnshaded" ]
      shader: unshaded
  - type: Appearance
  - type: Item
    size: Large
    shape:
    - 0,0,3,1
  - type: MagazineVisuals
    magState: mag
    steps: 5
    zeroVisible: false
  - type: Clothing
    sprite: _Goobstation/Objects/Weapons/Guns/Battery/tempgun.rsi # Goobstation
  - type: Gun
    fireRate: 1
    soundGunshot:
      path: /Audio/Weapons/Guns/Gunshots/taser2.ogg
  - type: BatteryAmmoProvider
    proto: BulletTemperatureCold # Goobstation
    fireCost: 100
  - type: BatteryWeaponFireModes
    fireModes:
    - proto: BulletTemperatureCold # Goobstation
      fireCost: 100
    - proto: BulletTemperatureHot # Goobstation - im lazy to port shit from wizden so i just use goob prototypes that are already balanced
      fireCost: 100
  - type: Battery
    maxCharge: 2500 # Goobstation - 1000 -> 2500
    startingCharge: 2500 # 1000 -> 2500
  - type: StaticPrice
    price: 100
  - type: GenericVisualizer # Goobstation
    visuals:
      enum.EnergyGunFireModeVisuals.State:
        Firemode:
          Cooling: { state: mode-cooling }
          Heating: { state: mode-heating }

- type: entity
  parent: [WeaponAdvancedLaser, BaseXenoborgContraband]
  id: WeaponLaserGunXenoborg
  name: xenoborg laser gun

- type: entity
  parent: [WeaponLaserCannon, BaseXenoborgContraband]
  id: WeaponLaserCannonXenoborg
  name: xenoborg laser cannon
  components:
  - type: BatterySelfRecharger
    autoRechargeRate: 30
  # "remove" wield bonus and penalty so borgs can use it
  - type: GunWieldBonus
    minAngle: 0
    maxAngle: 0
  - type: Gun
    fireRate: 2
    minAngle: 1
    maxAngle: 2
