# SPDX-FileCopyrightText: 2025 Aiden <28298836+Aidenkrz@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Aiden <aiden@djkraz.com>
# SPDX-FileCopyrightText: 2025 Aidenkrz <aiden@djkraz.com>
# SPDX-FileCopyrightText: 2025 Armok <155400926+ARMOKS@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 BombasterDS <deniskaporoshok@gmail.com>
# SPDX-FileCopyrightText: 2025 Errant <35878406+Errant-4@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Fishbait <Fishbait@git.ml>
# SPDX-FileCopyrightText: 2025 GMWQ <garethquaile@gmail.com>
# SPDX-FileCopyrightText: 2025 Gareth Quaile <garethquaile@gmail.com>
# SPDX-FileCopyrightText: 2025 GoobBot <uristmchands@proton.me>
# SPDX-FileCopyrightText: 2025 Ilya246 <57039557+Ilya246@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 IrisTheAmped <iristheamped@gmail.com>
# SPDX-FileCopyrightText: 2025 Rouge2t7 <81053047+Sarahon@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Theodore Lukin <66275205+pheenty@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 fishbait <gnesse@gmail.com>
# SPDX-FileCopyrightText: 2025 gluesniffler <159397573+gluesniffler@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 unknown <Administrator@DESKTOP-PMRIVVA.kommune.indresogn.no>
#
# SPDX-License-Identifier: AGPL-3.0-or-later

# This is for random skins
- type: entity
  id: MobBingleRandom
  parent: MarkerBase
  name: bingle
  suffix: Random
  components:
  - type: Sprite
    sprite: _Goobstation/Mobs/Bingle/bingle.rsi
    state: alive
  - type: EntityTableSpawner
    table: !type:GroupSelector
      children:
      - id: MobBingle
        weight: 49    # 49/50
      - id: MobTurkle
        weight: 1     # 01/50

# Base bingle
- type: entity
  name: bingle
  id: MobBingle
  parent: MobSpaceBasic
  description: bingle
  components:
  - type: Bingle
    upgradedID: MobBingleUpgraded
  - type: GhostTakeoverAvailable
  - type: GhostRole
    name: ghost-role-information-bingle-name
    description: ghost-role-information-bingle-description
    rules: ghost-role-information-bingle-rules
    mindRoles:
    - MindRoleGhostRoleTeamAntagonist
    raffle:
      settings: default
  - type: Sprite
    drawdepth: Mobs
    sprite: _Goobstation/Mobs/Bingle/bingle.rsi
    layers:
    - map: ["enum.DamageStateVisualLayers.Base", "movement"]
      state: alive
    - map: ["enum.BingleVisual.Upgraded"]
      state: Upgraded
      visible: false
    - map: ["enum.BingleVisual.Combat"]
      state: combat
      visible: false
  - type: MobThresholds
    thresholds:
      0: Alive
      100: Dead # by request
  - type: MobState
    allowedStates:
      - Alive
      - Dead
  - type: DamageStateVisuals
    states:
      Alive:
        Base: alive
      Dead:
        Base: dead
  - type: Bloodstream
    bloodMaxVolume: 100
    bloodReagent: Nitrogen # by request
  - type: MeleeWeapon
    soundHit:
        path: /Audio/Weapons/Xeno/alien_claw_flesh3.ogg
    angle: 0
    wideAnimationRotation: 0
    animation: WeaponArcSlash
    damage:
      types:
        Blunt: 7
        Structural: 14 # breaks down the walls and airlocks in 10 hits
        Ion: 5
    bluntStaminaDamageFactor: 2.0
  - type: MovementSpeedModifier
    baseWalkSpeed : 2 # same as slime
    baseSprintSpeed : 4
  - type: Stamina
    critThreshold: 120
  - type: Damageable
    damageContainer: Biological
    damageModifierSet: Bingle
  - type: FootstepModifier
    footstepSoundCollection:
      path: /Audio/Effects/Footsteps/slime1.ogg
      params:
        volume: 3
  - type: TypingIndicator
    proto: alien
  - type: Speech
    speechVerb: Bingle
    speechSounds: Slime
  - type: LanguageKnowledge
    speaks:
    - Bingle
    understands: []
  - type: CollectiveMind
    defaultChannel: Binglemind
    respectAccents: true
    channels:
    - Binglemind
  - type: PassiveDamage #passive Healing
    allowedStates:
    - Alive
    damage:
      types:
        Poison: -0.5
      groups:
        Brute: -0.5
        Burn: -0.5
  - type: NightVision
    color: "#008080"
    activateSound: null
    deactivateSound: null
  - type: FlashImmunity
  - type: ScannableForPoints # NTR update
    points: 2 # this would be abused so much if i made it more
  - type: Butcherable
    spawned:
    - id: FoodMeatBingle
      amount: 3

- type: entity
  id: MobBinglePrime
  parent: MobBingle
  suffix: Prime
  components:
  - type: Bingle
    prime: true
  - type: ScannableForPoints # NTR update, 5 points is the default.

- type: entity
  id: MobBingleUpgraded
  parent: MobBingle
  suffix: Upgraded
  components:
  - type: Bingle
    upgraded: true
  - type: Sprite
    drawdepth: Mobs
    sprite: _Goobstation/Mobs/Bingle/bingle.rsi
    layers:
    - map: [ "enum.DamageStateVisualLayers.Base", "movement" ]
      state: Upgraded
    - map: [ "enum.BingleVisual.Combat" ]
      state: combat
      visible: false
  - type: DamageStateVisuals
    states:
      Alive:
        Base: Upgraded
      Dead:
        Base: dead_upgraded
  - type: MeleeWeapon
    soundHit:
      path: /Audio/Weapons/Xeno/alien_claw_flesh3.ogg
    angle: 0
    wideAnimationRotation: 0
    animation: WeaponArcSlash
    damage:
      types:
        Blunt: 14
        Structural: 28
        Ion: 7
  - type: Damageable
    damageContainer: Biological
    damageModifierSet: BingleUpgraded

# Skin - turkle
- type: entity
  name: turkle
  id: MobTurkle
  parent: MobBingle
  description: A bingle from foreign lands lost to time. Seems very proud of their homeland.
  components:
  - type: Bingle
    upgradedID: MobTurkleUpgraded
  - type: Sprite
    drawdepth: Mobs
    sprite: _Goobstation/Mobs/Bingle/turkle.rsi
    layers:
    - map: ["enum.DamageStateVisualLayers.Base", "movement"]
      state: alive
    - map: ["enum.BingleVisual.Upgraded"]
      state: Upgraded
      visible: false
    - map: ["enum.BingleVisual.Combat"]
      state: combat
      visible: false
  - type: NightVision
    color: "#802000"
    activateSound: null
    deactivateSound: null
  - type: PointLight
    radius: 1.2
    energy: 2
    color: "#ad2a33"

- type: entity
  id: MobTurkleUpgraded
  parent: MobBingleUpgraded
  suffix: Upgraded
  components:
  - type: Bingle
    upgraded: true
  - type: Sprite
    drawdepth: Mobs
    sprite: _Goobstation/Mobs/Bingle/turkle.rsi
    layers:
    - map: [ "enum.DamageStateVisualLayers.Base", "movement" ]
      state: Upgraded
    - map: [ "enum.BingleVisual.Combat" ]
      state: combat
      visible: false

