# Used to animate the hitscan effects because effectsystem doesn't support it
- type: entity
  id: HitscanEffect
  categories: [ HideSpawnMenu ]
  components:
  - type: TimedDespawn
    lifetime: 2.0
  - type: Sprite
    drawdepth: Effects
    layers:
    - shader: unshaded
      map: ["enum.EffectLayers.Unshaded"]
  - type: EffectVisuals
  - type: Tag
    tags:
      - HideContextMenu
  - type: AnimationPlayer

- type: entity
  id: BasicHitscan
  categories: [ HideSpawnMenu ]
  components:
  - type: HitscanAmmo
  - type: HitscanBasicRaycast
  - type: HitscanBasicVisuals
    muzzleFlash:
      sprite: Objects/Weapons/Guns/Projectiles/projectiles.rsi
      state: muzzle_laser
    travelFlash:
      sprite: Objects/Weapons/Guns/Projectiles/projectiles.rsi
      state: beam
    impactFlash:
      sprite: Objects/Weapons/Guns/Projectiles/projectiles.rsi
      state: impact_laser
  - type: HitscanReflect
  - type: HitscanBasicEffects

- type: entity
  parent: BasicHitscan
  id: RedLightLaser
  categories: [ HideSpawnMenu ]
  components:
  - type: HitscanBasicDamage
    damage:
      types:
        Heat: 10 # Mono

- type: entity
  parent: BasicHitscan
  id: RedLaser
  categories: [ HideSpawnMenu ]
  components:
  - type: HitscanBasicDamage
    damage:
      types:
        Heat: 18 # Mono

- type: entity
  parent: BasicHitscan
  id: RedMediumLaser
  categories: [ HideSpawnMenu ]
  components:
  - type: HitscanBasicDamage
    damage:
      types:
        Heat: 22 # Mono

- type: entity
  parent: BasicHitscan
  id: RedHeavyLaser
  categories: [ HideSpawnMenu ]
  components:
  - type: HitscanBasicDamage
    damage:
      types:
        Heat: 32 # Mono
  - type: HitscanBasicVisuals
    muzzleFlash:
      sprite: Objects/Weapons/Guns/Projectiles/projectiles.rsi
      state: muzzle_beam_heavy
    travelFlash:
      sprite: Objects/Weapons/Guns/Projectiles/projectiles.rsi
      state: beam_heavy
    impactFlash:
      sprite: Objects/Weapons/Guns/Projectiles/projectiles.rsi
      state: impact_beam_heavy

- type: entity
  parent: BasicHitscan
  id: RedLaserPractice
  categories: [ HideSpawnMenu ]
  components:
  - type: HitscanBasicDamage
    damage:
      types:
        Heat: 1

- type: entity
  parent: BasicHitscan
  id: XrayLaser
  categories: [ HideSpawnMenu ]
  components:
  - type: HitscanBasicDamage
    damage:
      types:
        Heat: 14 # Mono
        Radiation: 14 # Mono
  - type: HitscanBasicVisuals
    muzzleFlash:
      sprite: Objects/Weapons/Guns/Projectiles/projectiles.rsi
      state: muzzle_xray
    travelFlash:
      sprite: Objects/Weapons/Guns/Projectiles/projectiles.rsi
      state: xray
    impactFlash:
      sprite: Objects/Weapons/Guns/Projectiles/projectiles.rsi
      state: impact_xray

- type: entity
  parent: BasicHitscan
  id: Pulse
  categories: [ HideSpawnMenu ]
  components:
  - type: HitscanBasicDamage
    damage:
      types:
        Heat: 28 # Mono
        Shock: 7
  - type: HitscanBasicVisuals
    muzzleFlash:
      sprite: Objects/Weapons/Guns/Projectiles/projectiles.rsi
      state: muzzle_blue
    travelFlash:
      sprite: Objects/Weapons/Guns/Projectiles/projectiles.rsi
      state: beam_blue
    impactFlash:
      sprite: Objects/Weapons/Guns/Projectiles/projectiles.rsi
      state: impact_blue

- type: entity
  parent: BasicHitscan
  id: RedShuttleLaser
  categories: [ HideSpawnMenu ]
  components:
  - type: HitscanBasicRaycast
    maxDistance: 60.0
  - type: HitscanBasicDamage
    damage:
      types:
        Heat: 55 # Mono
        Structural: 10
  - type: HitscanBasicVisuals
    muzzleFlash:
      sprite: Objects/Weapons/Guns/Projectiles/projectiles.rsi
      state: muzzle_beam_heavy2
    travelFlash:
      sprite: Objects/Weapons/Guns/Projectiles/projectiles.rsi
      state: beam_heavy2
    impactFlash:
      sprite: Objects/Weapons/Guns/Projectiles/projectiles.rsi
      state: impact_beam_heavy2
