- type: entity
  parent: BaseBullet
  id: BulletTaser
  categories: [ HideSpawnMenu ]
  name: taser bolt
  components:
  - type: FlyBySound
    sound:
      collection: EnergyMiss
      params:
        volume: 5
  - type: Sprite
    noRot: true
    sprite: Objects/Weapons/Guns/Projectiles/projectiles2.rsi
    color: "#ffff33"
    layers:
    - state: spark
      shader: unshaded
  - type: Physics
  - type: Fixtures
    fixtures:
      projectile:
        shape:
          !type:PhysShapeAabb
          bounds: "-0.15,-0.45,0.15,0.15"
        hard: false
        mask:
        - Opaque
        - Impassable
        - BulletImpassable
      fly-by: &flybyfixture
        shape:
          !type:PhysShapeCircle
          radius: 1.5
        layer:
        - Impassable
        - MidImpassable
        - HighImpassable
        - LowImpassable
        hard: false
  - type: Ammo
  - type: Projectile
    damage:
      types:
        Shock: 0
    soundHit:
      path: "/Audio/Weapons/Guns/Hits/taser_hit.ogg"
    forceSound: true
  - type: TimedDespawn
    lifetime: 0.170 # Very short range
  - type: StunOnCollide
    stunAmount: 0
    knockdownAmount: 2.5 # Enough to subdue and follow up with a stun baton
    drop: false #Ranged KD and item drop are too strong in one package
    slowdownAmount: 2.5
    walkSpeedModifier: 0.5
    sprintSpeedModifier: 0.5

- type: entity
  parent: BulletTaser
  id: BulletTaserSuper
  categories: [ HideSpawnMenu ]
  name: taser bolt
  description: If you can see this, you've probably been stun-meta'd
  components:
  - type: Sprite
    noRot: true
    sprite: Structures/Power/Generation/Tesla/energy_miniball.rsi
    color: "#ffff33"
    layers:
    - state: tesla_projectile
      shader: unshaded
  - type: PointLight
    enabled: true
    color: "#ffff33"
    radius: 2.0
    energy: 7.01
  - type: TimedDespawn
    lifetime: 1.0 # Not so short range
  - type: StunOnCollide
    stunAmount: 5
    drop: true # this is the evil taser
    knockdownAmount: 10
    slowdownAmount: 10
    walkSpeedModifier: 0.5
    sprintSpeedModifier: 0.5

- type: entity
  parent: BaseBullet
  id: BulletDisabler
  categories: [ HideSpawnMenu ]
  name: disabler bolt
  components:
  - type: Reflective
    reflective:
    - Energy
  - type: FlyBySound
    sound:
      collection: EnergyMiss
      params:
        volume: 5
  - type: Sprite
    sprite: Objects/Weapons/Guns/Projectiles/projectiles_tg.rsi
    layers:
    - state: omnilaser
      shader: unshaded
  - type: Physics
  - type: Fixtures
    fixtures:
      projectile:
        shape:
          !type:PhysShapeAabb
          bounds: "-0.15,-0.3,0.15,0.3"
        hard: false
        mask:
        - Opaque
        - Impassable
        - BulletImpassable
      fly-by: *flybyfixture
  - type: Ammo
  - type: StaminaDamageOnCollide
    damage: 33
  - type: Projectile
    impactEffect: BulletImpactEffectDisabler
    damage:
      types:
        Heat: 0
    soundHit:
      collection: WeakHit
    forceSound: true

- type: entity
  parent: BaseBullet
  id: BulletDisablerPractice
  categories: [ HideSpawnMenu ]
  name: disabler bolt practice
  components:
  - type: FlyBySound
    sound:
      collection: EnergyMiss
      params:
        volume: 5
  - type: Sprite
    sprite: Objects/Weapons/Guns/Projectiles/projectiles_tg.rsi
    layers:
    - state: omnilaser
      shader: unshaded
  - type: Physics
  - type: Fixtures
    fixtures:
      projectile:
        shape:
          !type:PhysShapeAabb
          bounds: "-0.15,-0.3,0.15,0.3"
        hard: false
        mask:
        - Opaque
        - Impassable
        - BulletImpassable
      fly-by: *flybyfixture
  - type: Ammo
  - type: StaminaDamageOnCollide
    damage: 1
  - type: Projectile
    impactEffect: BulletImpactEffectDisabler
    damage:
      types:
        Heat: 0
    soundHit:
      collection: WeakHit
    forceSound: true

- type: entity
  parent: BaseBullet
  id: BulletDisablerSmg
  categories: [ HideSpawnMenu ]
  name: disabler bolt smg
  components:
  - type: Reflective
    reflective:
    - Energy
  - type: FlyBySound
    sound:
      collection: EnergyMiss
      params:
        volume: 5
  - type: Sprite
    sprite: Objects/Weapons/Guns/Projectiles/projectiles_tg.rsi
    layers:
    - state: omnilaser
      shader: unshaded
  - type: Physics
  - type: Fixtures
    fixtures:
      projectile:
        shape:
          !type:PhysShapeAabb
          bounds: "-0.15,-0.3,0.15,0.3"
        hard: false
        mask:
        - Opaque
        - Impassable
        - BulletImpassable
      fly-by: *flybyfixture
  - type: Ammo
  - type: StaminaDamageOnCollide
    damage: 15
  - type: Projectile
    impactEffect: BulletImpactEffectDisabler
    damage:
      types:
        Heat: 0
    soundHit:
      collection: WeakHit
    forceSound: true

- type: entity
  parent: BulletDisablerSmg
  id: BulletDisablerSmgSpread
  categories: [ HideSpawnMenu ]
  name: disabling laser barrage
  components:
  - type: ProjectileSpread
    proto: BulletDisablerSmg
    count: 3 #bit stronger than a disabler if you hit your shots you goober, still not a 2 hit stun though
    spread: 9

# Energy crossbow
- type: entity
  parent: [ SolutionAmmo, BaseBullet ]
  id: EnergyCrossbowBolt
  categories: [ HideSpawnMenu ]
  name: energy bolt
  description: This'll hurt.
  components:
  - type: Reflective
    reflective:
    - NonEnergy
  - type: Ammo
    muzzleFlash: null
  - type: Sprite
    sprite: Objects/Weapons/Guns/Projectiles/projectiles2.rsi
    layers:
    - state: crossbowbolt
      shader: unshaded
  - type: Projectile
    damage:
      types:
        Piercing: 2
  - type: StunOnCollide #somewhat mirror to taser stats, meant to be tot 'sidegrade'
    stunAmount: 0
    knockdownAmount: 2.5
    slowdownAmount: 2.5
    walkSpeedModifier: 0.2
    sprintSpeedModifier: 0.2
    drop: false
  - type: StaminaDamageOnCollide #additional stam damage to make repeated pushups less of a viable counter
    damage: 45
  - type: Solution
    solution:
      maxVol: 1.5
      reagents:
      - ReagentId: Toxin
        Quantity: 1.5
  - type: SolutionInjectOnProjectileHit
    transferAmount: 1.5
    solution: ammo
