# Settings for cloning bodies
# If you add a new trait, job specific component or a component doing visual/examination changes for humanoids
# then add it here to the correct prototype.
# The datafields of the components copied using CopyComp.
# Subscribe to CloningEvent instead if that is not enough.

# Traits that root mentally or otherwise only affect you mentally.
- type: cloningSettings
  id: TraitsMental
  components:
  - Clumsy
  - Pacified
  - Paracusia
  - LightweightDrunk

# Traits that root in physical things in your body.
- type: cloningSettings
  id: TraitsPhysical
  components:
  - BlackAndWhiteOverlay
  - Narcolepsy
  - ImpairedMobility
  # - LegsParalyzed (you get healed)
  - Muted
  - PermanentBlindness
  - Snoring
  - Unrevivable

- type: cloningSettings
  parent: [TraitsMental, TraitsPhysical]
  id: Traits

# for basic physical traits
- type: cloningSettings
  id: Body
  components:
  # general
  - CreamPied
  - DetailExaminable
  - Dna
  - Fingerprint
  - Grammar # Pronouns
  - HumanoidProfile # Age, Sex, Gender
  - MeleeWeapon # Attack animation, damage and sound
  - NpcFactionMember
  - RandomPrice
  - TemperatureDamage
  - TemperatureSpeed
  # accents
  - Accentless
  - BackwardsAccent
  - BarkAccent
  - BleatingAccent
  - DamagedSiliconAccent
  - FrenchAccent
  - FrontalLisp
  - GermanAccent
  - LizardAccent
  - MobsterAccent
  - MonkeyAccent
  - MothAccent
  - MumbleAccent
  - OwOAccent
  - ParrotAccent
  - PirateAccent
  # - ReplacementAccent
  # Not supported at the moment because AddAccentClothingComponent will make it permanent when cloned.
  # TODO: AddAccentClothingComponent should use an inventory relay event.
  # Also ZombieComponent overwrites the old replacement accent, because you can only have one at a time.
  - RussianAccent
  - ScrambledAccent
  - SkeletonAccent
  - SlurredAccent
  - SouthernAccent
  - SpanishAccent
  - StutteringAccent
  eventComponents:
  - Puller
  - Vocal # voice sounds

# for job-specific traits etc.
- type: cloningSettings
  id: Special
  components:
  - BibleUser
  - CommandStaff
  - MindShield
  - MimePowers
  - SpaceNinja
  - Thieving

# antag roles
- type: cloningSettings
  id: Antag
  components:
  - HeadRevolutionary
  - Revolutionary
  - NukeOperative

- type: cloningSettings
  abstract: true
  id: BaseEquipmentBlacklist
  equipmentBlacklist:
    components:
    - AttachedClothing # helmets, which are part of the suit
    - Implanter # they will spawn full again, but you already get the implant. And we can't do item slot copying yet
    - VirtualItem

# a full clone with all traits and items, but no antag roles
- type: cloningSettings
  id: BaseClone
  parent: [Body, Special, Traits, BaseEquipmentBlacklist]

# for cloning pods
- type: cloningSettings
  id: CloningPod
  parent: [BaseClone, Antag]
  forceCloning: false
  copyEquipment: null
  copyInternalStorage: false
  copyImplants: false

# for paradox clones
- type: cloningSettings
  id: ParadoxCloningSettings
  parent: [BaseClone, Antag]
  components:
  - Forensics # This is so hugging data is copied to the clone, so you can't hug metagame them

# changeling identity copying
- type: cloningSettings
  id: ChangelingCloningSettings
  parent: [Body, TraitsPhysical, BaseEquipmentBlacklist]
  statusEffectWhitelist:
    components:
    - ChangelingCloneableStatusEffect
  components:
  # These are already part of the base species prototype that is spawned for the clone,
  # that means we only need to copy them over when switching between species.
  # So these don't need to be part of the Body settings, unless someone makes a trait that adjusts these components.
  - BodyEmotes
  - MessyDrinker
  # - Fixtures TODO: A better way to clone fixtures or a fixture fix. Currently if you devour someone on the ground and transform, you lose collision with tables as they were knocked down when they were copied.
  - Speech
  - TemperatureProtection
  - TypingIndicator
  - ScaleVisuals # for dwarf height
  eventComponents:
  # these need special treatment in the event subscription
  - Inventory # arachnid pockets and diona feet
  - Wagging # lizard tails
  - Storage # slime storage
  - Rootable # diona
  - Sericulture # arachnids
  - MovementSpeedModifier # moths when weightless
  - JumpAbility # vulp leaping
  copyInternalStorage: false
  copyImplants: false
  raiseEntityRenamedEvent: false


# spawner
- type: entity
  id: RandomCloneSpawner
  name: Random Clone
  suffix: Non-Antag
  components:
  - type: Sprite
    sprite: Mobs/Aliens/paradox_clone.rsi
    state: preview
  - type: RandomCloneSpawner
    settings: BaseClone
