# Numbers for armor here largely taken from /tg/.
# armor.yml covers both armored vests (e.g. not just cosmetic) and armor that covers multiple bodyparts/limbs


#Basic armor vest for inheritance
- type: entity
  abstract: true
  parent: [ ClothingOuterBaseMedium, AllowSuitStorageClothing ]
  id: ClothingOuterArmorBase
  name: armor vest
  description: A standard Type I armored vest that provides decent protection against most types of damage.
  components:
  - type: Sprite
    sprite: Clothing/OuterClothing/Armor/security.rsi
  - type: Clothing
    sprite: Clothing/OuterClothing/Armor/security.rsi
  - type: Armor #Based on /tg/ but slightly compensated to fit the fact that armor stacks in SS14.
    modifiers:
      coefficients:
        Blunt: 0.70
        Slash: 0.70
        Piercing: 0.70 #Can save you, but bullets will still hurt. Will take about 10 shots from a Viper before critting, as opposed to 7 while unarmored and 16~ with a bulletproof vest.
        Heat: 0.80
  - type: ExplosionResistance
    damageCoefficient: 0.90

#Standard armor vest, allowed for security only
- type: entity
  parent: [ BaseSecurityContraband, ClothingOuterArmorBase ]
  id: ClothingOuterArmorBasic
  components:
  - type: Tag
    tags:
    - WhitelistChameleon

#Alternate / slim basic armor vest, allowed for security and bartenders
- type: entity
  parent: [ BaseSecurityBartenderContraband, ClothingOuterArmorBasic ]
  id: ClothingOuterArmorBasicSlim
  name: armor vest
  suffix: slim
  description: A slim Type I armored vest that provides decent protection against most types of damage.
  components:
  - type: Sprite
    sprite: Clothing/OuterClothing/Armor/security_slim.rsi
  - type: Clothing
    sprite: Clothing/OuterClothing/Armor/security_slim.rsi

- type: entity
  parent: ClothingOuterArmorBasic
  id: ClothingOuterArmorBulletproof
  name: bulletproof vest
  description: A Type III heavy bulletproof vest that excels in protecting the wearer against traditional projectile weaponry and explosives to a minor extent.
  components:
  - type: Sprite
    sprite: Clothing/OuterClothing/Armor/bulletproof.rsi
  - type: Clothing
    sprite: Clothing/OuterClothing/Armor/bulletproof.rsi
  - type: Armor
    modifiers:
      coefficients:
        Blunt: 0.9
        Slash: 0.9
        Piercing: 0.4
        Heat: 0.9
  - type: ExplosionResistance
    damageCoefficient: 0.80

- type: entity
  parent: ClothingOuterArmorBasic
  id: ClothingOuterArmorReflective
  name: reflective vest
  description: An armored vest with advanced shielding to protect against energy weapons.
  components:
  - type: Sprite
    sprite: Clothing/OuterClothing/Armor/armor_reflec.rsi
  - type: Clothing
    sprite: Clothing/OuterClothing/Armor/armor_reflec.rsi
  - type: Armor
    modifiers:
      coefficients:
        Blunt: 0.9
        Slash: 0.9
        Piercing: 0.9
        Heat: 0.4 # this technically means it protects against fires pretty well? -heat is just for lasers and stuff, not atmos temperature
  - type: Reflect
    reflectProb: 1
    reflects:
      - Energy
    reflectingInHands: false

#Detective's vest
- type: entity
  parent: [ClothingOuterArmorBasic, BaseSecurityContraband]
  id: ClothingOuterVestDetective
  name: detective's vest
  description: A hard-boiled private investigator's armored vest.
  components:
  - type: Sprite
    sprite: Clothing/OuterClothing/Vests/detvest.rsi
  - type: Clothing
    sprite: Clothing/OuterClothing/Vests/detvest.rsi

- type: entity
  parent: [ ClothingOuterBaseMedium, AllowSuitStorageClothing ]
  id: ClothingOuterArmorBaseCarapace
  abstract: true
  components:
  - type: Armor
    modifiers:
      coefficients:
        Blunt: 0.5
        Slash: 0.5
        Piercing: 0.6
        Heat: 0.5
        Caustic: 0.9
  - type: GroupExamine

- type: entity
  parent: [ClothingOuterArmorBaseCarapace, BaseCommandContraband]
  id: ClothingOuterArmorCaptainCarapace
  name: captain's carapace
  description: An armored chestpiece that provides protection whilst still offering maximum mobility and flexibility. Issued only to the station's finest.
  components:
  - type: Sprite
    sprite: Clothing/OuterClothing/Armor/captain_carapace.rsi
  - type: Clothing
    sprite: Clothing/OuterClothing/Armor/captain_carapace.rsi
  - type: Tag
    tags:
    - WhitelistChameleon

- type: entity
  parent: [ClothingOuterArmorBaseCarapace, BaseCentcommContraband]
  id: ClothingOuterArmorCentcommCarapace
  name: centcomm carapace
  description: An armored chestpiece that provides protection whilst still offering maximum mobility and flexibility. Issued only to centcomm officials and agents.
  components:
  - type: Sprite
    sprite: Clothing/OuterClothing/Armor/centcomm_carapace.rsi
  - type: Clothing
    sprite: Clothing/OuterClothing/Armor/centcomm_carapace.rsi

#Web vest
- type: entity
  parent: [ClothingOuterArmorBase, ClothingOuterStorageBase, BaseSyndicateContraband]
  id: ClothingOuterVestWeb
  name: web vest
  description: A synthetic armor vest. This one has added webbing and ballistic plates.
  components:
  - type: Sprite
    sprite: Clothing/OuterClothing/Vests/webvest.rsi
  - type: Clothing
    sprite: Clothing/OuterClothing/Vests/webvest.rsi
  - type: Armor
    modifiers:
      coefficients:
        Blunt: 0.6 #ballistic plates = better protection
        Slash: 0.6
        Piercing: 0.3
        Heat: 0.9
  - type: StaticPrice
    price: 1500

#Elite web vest
- type: entity
  parent: [ClothingOuterArmorBase, TemperatureProtection, ClothingOuterStorageBase, BaseSyndicateContraband]
  id: ClothingOuterVestWebElite
  name: elite web vest
  description: A synthetic armor vest. This one has added webbing and heat resistant fibers.
  components:
  - type: Sprite
    sprite: Clothing/OuterClothing/Vests/elitevest.rsi
  - type: Clothing
    sprite: Clothing/OuterClothing/Vests/elitevest.rsi
  - type: Armor
    modifiers:
      coefficients:
        Blunt: 0.5
        Slash: 0.5
        Piercing: 0.7
        Heat: 0.3
        Radiation: 0.5
        Caustic: 0.5
  - type: FireProtection
    reduction: 0.85
  - type: StaticPrice
    price: 2500

#Mercenary web vest
- type: entity
  parent: [ BaseMajorContraband, ClothingOuterVestWeb] #web vest so it should have some pockets for ammo
  id: ClothingOuterVestWebMerc
  name: mercenary web vest
  description: A high-quality armored vest made from a hard synthetic material. It's surprisingly flexible and light, despite formidable armor plating.
  components:
  - type: Sprite
    sprite: Clothing/OuterClothing/Vests/mercwebvest.rsi
  - type: Clothing
    sprite: Clothing/OuterClothing/Vests/mercwebvest.rsi
  - type: Armor
    modifiers:
      coefficients:
        Blunt: 0.7 #slightly better overall protection but slightly worse than bulletproof armor against bullets seems sensible
        Slash: 0.7
        Piercing: 0.5
        Heat: 0.9


# Armor covering multiple body parts including limbs
- type: entity
  parent: [ClothingOuterBaseLarge, AllowSuitStorageClothing, BaseSyndicateContraband ]
  id: ClothingOuterArmorRaid
  name: syndicate raid suit
  description: A somewhat flexible and well-armored suit with a powerful shoulder mounted flashlight manufactured in the Gorlex Marauder's iconic blood-red color scheme, it does not protect its wearer from space.
  components:
  - type: Sprite
    sprite: Clothing/OuterClothing/Armor/syndie-raid.rsi
    layers:
    - state: icon
    - state: light-overlay
      visible: false
      shader: unshaded
  - type: Clothing
    sprite: Clothing/OuterClothing/Armor/syndie-raid.rsi
  - type: Armor
    modifiers:
      coefficients:
        Blunt: 0.35
        Slash: 0.35
        Piercing: 0.35
        Heat: 0.35
        Caustic: 0.5
  - type: StaminaResistance # do not add these to other equipment or mobs, we don't want to microbalance these everywhere
    damageCoefficient: 0.45
  - type: ClothingSpeedModifier
    walkModifier: 0.9
    sprintModifier: 0.9
  #Shoulder mounted flashlight
  - type: ToggleableVisuals
    spriteLayer: light
    clothingVisuals:
      outerClothing:
      - state: equipped-OUTERCLOTHING-light
        shader: unshaded
      outerClothing-vox:
      - state: equipped-OUTERCLOTHING-light-vox
        shader: unshaded
  - type: ItemTogglePointLight
  - type: Appearance
  - type: HandheldLight
    addPrefix: false
    blinkingBehaviourId: blinking
    radiatingBehaviourId: radiating
  - type: PointLight
    enabled: false
    color: "#80ff80"
    radius: 5
    energy: 2
    mask: /Textures/Effects/LightMasks/cone.png
    autoRot: true
    netsync: false
  - type: LightBehaviour
    behaviours:
      - !type:FadeBehaviour
        id: radiating
        interpolate: Linear
        maxDuration: 2.0
        startValue: 3.0
        endValue: 2.0
        isLooped: true
        reverseWhenFinished: true
      - !type:PulseBehaviour
        id: blinking
        interpolate: Nearest
        maxDuration: 1.0
        startValue: 0.1
        endValue: 2.0
        isLooped: true
  - type: Battery
    maxCharge: 600
    startingCharge: 600
  - type: BatterySelfRecharger
    autoRechargeRate: 2
  - type: Item
    size: Normal

- type: entity
  parent: [ClothingOuterBaseLarge, AllowSuitStorageClothing, BaseSecurityContraband]
  id: ClothingOuterArmorRiot
  name: riot suit
  description: A suit of semi-flexible polycarbonate body armor with heavy padding to protect against melee attacks. Perfect for fighting delinquents around the station.
  components:
  - type: Sprite
    sprite: Clothing/OuterClothing/Armor/riot.rsi
  - type: Clothing
    sprite: Clothing/OuterClothing/Armor/riot.rsi
  - type: Armor
    modifiers:
      coefficients:
        Blunt: 0.4
        Slash: 0.4
        Piercing: 0.7
        Heat: 0.9
        Caustic: 0.9
  - type: ExplosionResistance
    damageCoefficient: 0.9
  - type: GroupExamine

- type: entity
  parent: [ ClothingOuterBaseLarge, BaseMajorContraband, AllowSuitStorageClothing ]
  id: ClothingOuterArmorCult
  name: acolyte armor
  description: An evil-looking piece of cult armor, made of bones.
  components:
  - type: Sprite
    sprite: Clothing/OuterClothing/Armor/cult_armour.rsi
  - type: Clothing
    sprite: Clothing/OuterClothing/Armor/cult_armour.rsi
  - type: Armor
    modifiers:
      coefficients:
        Blunt: 0.5
        Slash: 0.5
        Piercing: 0.5
        Heat: 0.5
  - type: GroupExamine

- type: entity
  parent: [ClothingOuterBaseLarge, AllowSuitStorageClothing]
  id: ClothingOuterArmorHeavy
  name: heavy armor suit
  description: A heavily armored suit that protects against excessive damage.
  components:
  - type: Sprite
    sprite: Clothing/OuterClothing/Armor/heavy.rsi
  - type: Clothing
    sprite: Clothing/OuterClothing/Armor/heavy.rsi
  - type: Armor
    modifiers:
      coefficients:
        Blunt: 0.2
        Slash: 0.2
        Piercing: 0.2
        Heat: 0.5
        Radiation: 0
        Caustic: 0.75
  - type: GroupExamine
  - type: ProtectedFromStepTriggers
    slots: WITHOUT_POCKET

- type: entity
  parent: ClothingOuterArmorHeavy
  id: ClothingOuterArmorHeavyGreen
  name: green heavy armor suit
  description: A heavily armored suit with green accents that protects against excessive damage.
  components:
  - type: Sprite
    sprite: Clothing/OuterClothing/Armor/heavygreen.rsi
  - type: Clothing
    sprite: Clothing/OuterClothing/Armor/heavygreen.rsi

- type: entity
  parent: ClothingOuterArmorHeavy
  id: ClothingOuterArmorHeavyRed
  name: red heavy armor suit
  description: A heavily armored suit with red accents that protects against excessive damage.
  components:
  - type: Sprite
    sprite: Clothing/OuterClothing/Armor/heavyred.rsi
  - type: Clothing
    sprite: Clothing/OuterClothing/Armor/heavyred.rsi

- type: entity
  parent: ClothingOuterArmorHeavy
  id: ClothingOuterArmorMagusblue
  name: blue magus armor
  description: An blue armored suit that provides good protection.
  components:
  - type: Sprite
    sprite: Clothing/OuterClothing/Armor/magusblue.rsi
  - type: Clothing
    sprite: Clothing/OuterClothing/Armor/magusblue.rsi

- type: entity
  parent: ClothingOuterArmorHeavy
  id: ClothingOuterArmorMagusred
  name: red magus armor
  description: A red armored suit that provides good protection.
  components:
  - type: Sprite
    sprite: Clothing/OuterClothing/Armor/magusred.rsi
  - type: Clothing
    sprite: Clothing/OuterClothing/Armor/magusred.rsi

- type: entity
  parent: [ ClothingOuterBaseLarge, BaseMajorContraband, AllowSuitStorageClothing ]
  id: ClothingOuterArmorChangeling
  name: chitinous armor
  description: Inflates the changeling's body into an all-consuming chitinous mass of armor.
  components:
  - type: Sprite
    sprite: Clothing/OuterClothing/Armor/lingarmor.rsi
  - type: Clothing
    sprite: Clothing/OuterClothing/Armor/lingarmor.rsi
  - type: Armor
    modifiers:
      coefficients:
        Blunt: 0.5
        Slash: 0.5
        Piercing: 0.5
        Heat: 0.9
        Radiation: 0.8
  - type: ClothingSpeedModifier
    walkModifier: 0.65
    sprintModifier: 0.65
  - type: HeldSpeedModifier
  - type: ExplosionResistance
    damageCoefficient: 0.75
  - type: GroupExamine
  - type: ProtectedFromStepTriggers
    slots: WITHOUT_POCKET

- type: entity
  parent: [ ClothingOuterBaseLarge, BaseMajorContraband, AllowSuitStorageClothing ]
  id: ClothingOuterArmorBone
  name: bone armor
  description: Sits on you like a second skin.
  components:
  - type: Sprite
    sprite: Clothing/OuterClothing/Armor/bone_armor.rsi
  - type: Clothing
    sprite: Clothing/OuterClothing/Armor/bone_armor.rsi
  - type: Armor
    modifiers:
      coefficients:
        Blunt: 0.6
        Slash: 0.8
        Piercing: 0.4
  - type: ClothingSpeedModifier
    walkModifier: 0.8
    sprintModifier: 0.8
  - type: HeldSpeedModifier
  - type: ExplosionResistance
    damageCoefficient: 0.6
  - type: GroupExamine
  - type: Construction
    graph: BoneArmor
    node: armor
  - type: ProtectedFromStepTriggers
    slots: WITHOUT_POCKET

- type: entity
  parent: [ ClothingOuterBaseLarge, BaseMajorContraband, AllowSuitStorageClothing ]
  id: ClothingOuterArmorPodWars
  name: ironclad II armor
  description: A repurposed suit of ironclad II armor, a relic of the pod wars.
  components:
  - type: Sprite
    sprite: Clothing/OuterClothing/Armor/podwars_armor.rsi
  - type: Clothing
    sprite: Clothing/OuterClothing/Armor/podwars_armor.rsi
  - type: Armor
    modifiers:
      coefficients:
        Blunt: 0.5
        Slash: 0.5
        Piercing: 0.6
        Heat: 0.5
  - type: GroupExamine
  - type: ProtectedFromStepTriggers
    slots: WITHOUT_POCKET

- type: entity
  parent: ClothingOuterArmorBase
  id: CardArmour
  name: cardboard armour
  description: A medieval chestpiece built from cardboard.
  components:
  - type: Sprite
    sprite: Clothing/OuterClothing/Armor/card_armour.rsi
  - type: Clothing
    sprite: Clothing/OuterClothing/Armor/card_armour.rsi
  - type: Armor
    modifiers:
      coefficients:
        Blunt: 0.9
  - type: Construction
    graph: cardArmour
    node: cardarmour
