- type: entity
  parent: BaseItem
  id: AnomalyScanner
  name: anomaly scanner
  description: A hand-held scanner built to collect information on various anomalous objects.
  components:
  - type: Sprite
    sprite: Objects/Specific/Research/anomalyscanner.rsi
    layers:
      - state: icon
        map: ["enum.AnomalyScannerVisualLayers.Base"]
      - map: ["enum.AnomalyScannerVisualLayers.Screen"]
        visible: false
        shader: unshaded
      - state: severity_mask
        map: ["enum.AnomalyScannerVisualLayers.SeverityMask"]
        visible: false
        shader: unshaded
      - map: ["enum.AnomalyScannerVisualLayers.Stability"]
        visible: false
        shader: unshaded
      - visible: false
        map: ["enum.AnomalyScannerVisualLayers.Pulse"]
        shader: unshaded
      - state: supercritical
        map: ["enum.AnomalyScannerVisualLayers.Supercritical"]
        shader: unshaded
        visible: false
  - type: ActivatableUI
    key: enum.AnomalyScannerUiKey.Key
    requireActiveHand: false
    inHandsOnly: true
  - type: UserInterface
    interfaces:
      enum.AnomalyScannerUiKey.Key:
        type: AnomalyScannerBoundUserInterface
  - type: Appearance
  - type: GenericVisualizer
    visuals:
      enum.AnomalyScannerVisuals.HasAnomaly:
        enum.AnomalyScannerVisualLayers.Screen:
          True: { visible: true }
          False: { visible: false }
        enum.AnomalyScannerVisualLayers.SeverityMask:
          True: { visible: true }
          False: { visible: false }
      enum.AnomalyScannerVisuals.AnomalyStability:
        enum.AnomalyScannerVisualLayers.Stability:
          Stable: { visible: false }
          Decaying: { visible: true, state: decaying }
          Growing: { visible: true, state: growing }
      enum.AnomalyScannerVisuals.AnomalyNextPulse:
        enum.AnomalyScannerVisualLayers.Pulse:
          0: { visible: false }
          1: { visible: true, state: timer_1 }
          2: { visible: true, state: timer_2 }
          3: { visible: true, state: timer_3 }
          4: { visible: true, state: timer_4 }
          5: { visible: true, state: timer_5 }
      enum.AnomalyScannerVisuals.AnomalyIsSupercritical:
        enum.AnomalyScannerVisualLayers.Supercritical:
          True: { visible: true }
          False: { visible: false }
  - type: AnomalyScanner
  - type: AnomalyScannerScreen
  - type: GuideHelp
    guides:
    - ScannersAndVessels
  - type: Item
    storedRotation: -90

- type: entity
  id: AnomalyLocatorUnpowered
  parent: BaseItem
  name: anomaly locator
  description: A device designed to aid in the locating of anomalies. Did you check the gas miners?
  suffix: Always Powered
  components:
  - type: Sprite
    sprite: Objects/Specific/Research/anomalylocator.rsi
    layers:
      - state: icon
      - state: screen
        shader: unshaded
        visible: false
        map: ["enum.ToggleableVisuals.Layer"]
  - type: Appearance
  - type: GenericVisualizer
    visuals:
      enum.ToggleableVisuals.Enabled:
        enum.ToggleableVisuals.Layer:
          True: { visible: true }
          False: { visible: false }
  - type: ItemToggle
  - type: ProximityBeeper
  - type: ProximityDetector
    range: 20
    components:
    - type: Anomaly
  - type: Beeper
    isMuted: true
    minBeepInterval: 0.15
    maxBeepInterval: 1.00
    beepSound:
      path: "/Audio/Items/locator_beep.ogg"
      params:
        maxDistance: 1
        volume: -8

- type: entity
  id: AnomalyLocator
  parent: [ AnomalyLocatorUnpowered, PowerCellSlotSmallItem ]
  suffix: ""
  components:
  - type: PowerCellDraw
    drawRate: 1
    useRate: 0
  - type: ToggleCellDraw

- type: entity
  id: AnomalyLocatorEmpty
  parent: AnomalyLocator
  suffix: Empty
  components:
  - type: ItemSlots
    slots:
      cell_slot:
        name: power-cell-slot-component-slot-name-default

- type: entity
  id: AnomalyLocatorWideUnpowered
  parent: AnomalyLocatorUnpowered
  name: wide-spectrum anomaly locator
  description: A device that looks for anomalies from an extended distance, but has no way to determine the distance to them.
  suffix: Always Powered
  components:
  - type: Sprite
    sprite: Objects/Specific/Research/anomalylocatorwide.rsi
  - type: Beeper
    minBeepInterval: 0.5
    maxBeepInterval: 0.5
  - type: ProximityDetector
    range: 40

- type: entity
  id: AnomalyLocatorWide
  parent: [ AnomalyLocatorWideUnpowered, PowerCellSlotSmallItem ]
  suffix: ""
  components:
  - type: PowerCellDraw
    drawRate: 1
    useRate: 0
  - type: ToggleCellDraw

- type: entity
  id: AnomalyLocatorWideEmpty
  parent: AnomalyLocatorWide
  suffix: Empty
  components:
  - type: ItemSlots
    slots:
      cell_slot:
        name: power-cell-slot-component-slot-name-default

- type: entity
  name: G.O.R.I.L.L.A. gauntlet
  parent: BaseItem
  id: WeaponGauntletGorilla
  description: A robust piece of research equipment. When powered with an anomaly core, a single blow can launch anomalous objects through the air.
  components:
  - type: Sprite
    sprite: Objects/Weapons/Melee/gorilla.rsi
    state: icon
  - type: Item
    size: Large
    storedSprite:
      state: storage
      sprite: Objects/Weapons/Melee/gorilla.rsi
  - type: MeleeWeapon
    attackRate: 0.5
    angle: 0
    animation: WeaponArcFist
    wideAnimationRotation: -135
    damage:
      types:
        Blunt: 20
    soundHit:
      path: "/Audio/Weapons/Guns/Gunshots/kinetic_accel.ogg"
  - type: CorePoweredThrower
  - type: MeleeThrowOnHit
    unanchorOnHit: true
  - type: ItemSlots
    slots:
      core_slot:
        name: anomaly-gorilla-core-slot-name
        insertSound: /Audio/Weapons/Guns/MagIn/batrifle_magin.ogg
        ejectSound: /Audio/Weapons/Guns/MagOut/pistol_magout.ogg
        whitelist:
          components:
          - AnomalyCore
  - type: ContainerContainer
    containers:
      core_slot: !type:ContainerSlot
  - type: DamageOnAttackedProtection
    damageProtection:
      flatReductions:
        Heat: 100
        Cold: 100
        Radiation: 100
    slots: NONE
