# 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

# starlight start
# split base laser hitscan into a variant with and without visual beams
# this is done so that projectiles such as disablers and tasers do not have laser travel visuals
- type: entity
  id: BasicHitscan
  parent: BasicHitscanNoBeam
  name: basic laser ray
  categories: [ HideSpawnMenu ]
  components:
  - 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
# starlight end

- type: entity
  parent: BasicHitscan
  id: RedLightLaser
  name: red light laser ray
  categories: [ HideSpawnMenu ]
  components:
  - type: HitscanBasicDamage
    damage:
      types:
        Heat: 7

- type: entity
  parent: BasicHitscan
  id: RedLaser
  name: red laser ray
  categories: [ HideSpawnMenu ]
  components:
  - type: HitscanBasicDamage
    damage:
      types:
        Heat: 20 # Starlight

- type: entity
  parent: BasicHitscan
  id: RedMediumLaser
  name: red amplified laser ray
  categories: [ HideSpawnMenu ]
  components:
  - type: HitscanBasicDamage
    damage:
      types:
        Heat: 17

- type: entity
  parent: BasicHitscan
  id: RedHeavyLaser
  name: red high-energy laser ray
  categories: [ HideSpawnMenu ]
  components:
  - type: HitscanBasicDamage
    damage:
      types:
        Heat: 28
  - 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
  name: red practice laser ray
  categories: [ HideSpawnMenu ]
  components:
  - type: HitscanBasicDamage
    damage:
      types:
        Heat: 1

- type: entity
  parent: BasicHitscan
  id: XrayLaser
  name: X-ray pulse beam
  categories: [ HideSpawnMenu ]
  components:
  - type: HitscanBasicDamage
    damage:
      types:
        Heat: 10
        Radiation: 10
  - 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
  name: blue high-energy laser ray
  categories: [ HideSpawnMenu ]
  components:
  - type: HitscanBasicDamage
    damage:
      types:
        Heat: 35
  - 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
  name: shuttle class red laser ray
  categories: [ HideSpawnMenu ]
  components:
  - type: HitscanBasicRaycast
    maxDistance: 60.0
  - type: HitscanBasicDamage
    damage:
      types:
        Heat: 45
        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

- type: entity
  parent: BasicHitscan
  id: DebugLaser
  name: debug laser ray
  suffix: DEBUG
  categories: [ HideSpawnMenu ]
  components:
  - type: HitscanBasicDamage
    damage:
      types:
        Heat: 1
  - type: HitscanBasicVisuals
    muzzleFlash:
      sprite: Objects/Weapons/Guns/Projectiles/projectiles.rsi
      state: muzzle_debug
    travelFlash:
      sprite: Objects/Weapons/Guns/Projectiles/projectiles.rsi
      state: debug
    impactFlash:
      sprite: Objects/Weapons/Guns/Projectiles/projectiles.rsi
      state: impact_debug

- type: entity
  parent: DebugLaser
  id: DebugLaserGib
  name: debug gibbing ray
  suffix: DEBUG
  categories: [ HideSpawnMenu ]
  components:
  - type: HitscanBasicDamage
    damage:
      types:
        Blunt: 20000
