From ca0b40abcf5cf86cbb387c75d661908cb5107708 Mon Sep 17 00:00:00 2001 From: Skubman Date: Mon, 6 Jan 2025 04:46:36 +0800 Subject: [PATCH 01/12] The Den Mass Cherry-Pick 01/06/25 (#1443) # Description **(Use a MERGE COMMIT, not squash if possible to ~~avoid~~ reduce merge conflicts for our downstream)** Cherry-picks some PRs from The Den: - https://github.com/TheDenSS14/TheDen/pull/8 - https://github.com/TheDenSS14/TheDen/pull/31 - https://github.com/TheDenSS14/TheDen/pull/108 - https://github.com/TheDenSS14/TheDen/pull/116 - https://github.com/TheDenSS14/TheDen/pull/117 - https://github.com/TheDenSS14/TheDen/pull/123 - https://github.com/TheDenSS14/TheDen/pull/124 # Changelog :cl: The Den Contributors - fix: Put actual prescription lenses in the prescription medhuds and sechuds (by KyuPolaris) - add: Added the CMO turtleneck and head mirror to the CMO loadouts. (by sleepyyapril, KyuPolaris) - add: Added an armored trenchcoat for the Captain. Enjoy your swag! (by Rosycup) - fix: Fixed uneven pants leg on summer security uniforms. (by Rosycup) - add: Added the Captain's Combat Gas Mask, for those more fond of close encounters. (by Rosycup) - tweak: Added the Captain's Trenchcoat to the other captain locker variants. (by Rosycup) - fix: Fixed they/them pronouns being displayed for it/its characters in the character preview. (by Azzy) --------- Co-authored-by: flyingkarii <123355664+flyingkarii@users.noreply.github.com> Co-authored-by: sleepyyapril <123355664+sleepyyapril@users.noreply.github.com> --- .../humanoid-character-profile.ftl | 3 +- .../Catalog/Fills/Lockers/dressers.yml | 3 ++ .../Catalog/Fills/Lockers/heads.yml | 5 ++- .../Catalog/Fills/Lockers/medical.yml | 2 + .../Catalog/Fills/Lockers/suit_storage.yml | 1 + .../Jobs/Command/captain.yml | 4 ++ .../Jobs/Medical/chiefMedicalOfficer.yml | 6 +++ .../DeltaV/Entities/Clothing/Eyes/hud.yml | 2 + .../Entities/Clothing/Head/misc.yml | 11 +++++ .../Entities/Clothing/Masks/masks.yml | 11 +++++ .../Entities/Clothing/OuterClothing/coats.yml | 11 +++++ .../Entities/Clothing/Uniforms/jumpskirts.yml | 11 +++++ .../Entities/Clothing/Uniforms/jumpsuits.yml | 11 +++++ .../Entities/Structures/Machines/lathe.yml | 2 + .../Loadouts/Jobs/Command/captain.yml | 28 +++++++++++++ .../Jobs/Medical/chiefMedicalOfficer.yml | 39 ++++++++++++++++++ .../Prototypes/Loadouts/loadout_groups.yml | 0 .../Prototypes/Recipes/Lathes/clothing.yml | 16 +++++++ .../Misc/head_mirror.rsi/equipped-HELMET.png | Bin 0 -> 631 bytes .../Head/Misc/head_mirror.rsi/icon.png | Bin 0 -> 714 bytes .../Head/Misc/head_mirror.rsi/inhand-left.png | Bin 0 -> 678 bytes .../Misc/head_mirror.rsi/inhand-right.png | Bin 0 -> 680 bytes .../Head/Misc/head_mirror.rsi/meta.json | 26 ++++++++++++ .../equipped-MASK-reptilian.png | Bin 0 -> 749 bytes .../equipped-MASK-vox.png | Bin 0 -> 811 bytes .../equipped-MASK-vulpkanin.png | Bin 0 -> 819 bytes .../gascaptaincombat.rsi/equipped-MASK.png | Bin 0 -> 772 bytes .../Mask/gascaptaincombat.rsi/icon.png | Bin 0 -> 570 bytes .../Mask/gascaptaincombat.rsi/inhand-left.png | Bin 0 -> 336 bytes .../gascaptaincombat.rsi/inhand-right.png | Bin 0 -> 343 bytes .../Mask/gascaptaincombat.rsi/meta.json | 38 +++++++++++++++++ .../equipped-OUTERCLOTHING.png | Bin 0 -> 1318 bytes .../Coats/cap_trenchcoat.rsi/icon.png | Bin 0 -> 535 bytes .../Coats/cap_trenchcoat.rsi/inhand-left.png | Bin 0 -> 759 bytes .../Coats/cap_trenchcoat.rsi/inhand-right.png | Bin 0 -> 709 bytes .../Coats/cap_trenchcoat.rsi/meta.json | 26 ++++++++++++ .../equipped-INNERCLOTHING-monkey.png | Bin 0 -> 1183 bytes .../cmo_turtle.rsi/equipped-INNERCLOTHING.png | Bin 0 -> 1338 bytes .../Jumpskirt/cmo_turtle.rsi/icon.png | Bin 0 -> 842 bytes .../Jumpskirt/cmo_turtle.rsi/inhand-left.png | Bin 0 -> 893 bytes .../Jumpskirt/cmo_turtle.rsi/inhand-right.png | Bin 0 -> 921 bytes .../Jumpskirt/cmo_turtle.rsi/meta.json | 30 ++++++++++++++ .../equipped-INNERCLOTHING-monkey.png | Bin 0 -> 1277 bytes .../cmo_turtle.rsi/equipped-INNERCLOTHING.png | Bin 0 -> 1449 bytes .../Uniforms/Jumpsuit/cmo_turtle.rsi/icon.png | Bin 0 -> 837 bytes .../Jumpsuit/cmo_turtle.rsi/inhand-left.png | Bin 0 -> 892 bytes .../Jumpsuit/cmo_turtle.rsi/inhand-right.png | Bin 0 -> 917 bytes .../Jumpsuit/cmo_turtle.rsi/meta.json | 30 ++++++++++++++ .../equipped-INNERCLOTHING.png | Bin 422 -> 1125 bytes 49 files changed, 314 insertions(+), 2 deletions(-) create mode 100644 Resources/Prototypes/Loadouts/loadout_groups.yml create mode 100644 Resources/Textures/Clothing/Head/Misc/head_mirror.rsi/equipped-HELMET.png create mode 100644 Resources/Textures/Clothing/Head/Misc/head_mirror.rsi/icon.png create mode 100644 Resources/Textures/Clothing/Head/Misc/head_mirror.rsi/inhand-left.png create mode 100644 Resources/Textures/Clothing/Head/Misc/head_mirror.rsi/inhand-right.png create mode 100644 Resources/Textures/Clothing/Head/Misc/head_mirror.rsi/meta.json create mode 100644 Resources/Textures/Clothing/Mask/gascaptaincombat.rsi/equipped-MASK-reptilian.png create mode 100644 Resources/Textures/Clothing/Mask/gascaptaincombat.rsi/equipped-MASK-vox.png create mode 100644 Resources/Textures/Clothing/Mask/gascaptaincombat.rsi/equipped-MASK-vulpkanin.png create mode 100644 Resources/Textures/Clothing/Mask/gascaptaincombat.rsi/equipped-MASK.png create mode 100644 Resources/Textures/Clothing/Mask/gascaptaincombat.rsi/icon.png create mode 100644 Resources/Textures/Clothing/Mask/gascaptaincombat.rsi/inhand-left.png create mode 100644 Resources/Textures/Clothing/Mask/gascaptaincombat.rsi/inhand-right.png create mode 100644 Resources/Textures/Clothing/Mask/gascaptaincombat.rsi/meta.json create mode 100644 Resources/Textures/Clothing/OuterClothing/Coats/cap_trenchcoat.rsi/equipped-OUTERCLOTHING.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Coats/cap_trenchcoat.rsi/icon.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Coats/cap_trenchcoat.rsi/inhand-left.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Coats/cap_trenchcoat.rsi/inhand-right.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Coats/cap_trenchcoat.rsi/meta.json create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/cmo_turtle.rsi/equipped-INNERCLOTHING-monkey.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/cmo_turtle.rsi/equipped-INNERCLOTHING.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/cmo_turtle.rsi/icon.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/cmo_turtle.rsi/inhand-left.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/cmo_turtle.rsi/inhand-right.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/cmo_turtle.rsi/meta.json create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/cmo_turtle.rsi/equipped-INNERCLOTHING-monkey.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/cmo_turtle.rsi/equipped-INNERCLOTHING.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/cmo_turtle.rsi/icon.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/cmo_turtle.rsi/inhand-left.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/cmo_turtle.rsi/inhand-right.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/cmo_turtle.rsi/meta.json diff --git a/Resources/Locale/en-US/preferences/humanoid-character-profile.ftl b/Resources/Locale/en-US/preferences/humanoid-character-profile.ftl index 800da35ba52..9058f8d2b63 100644 --- a/Resources/Locale/en-US/preferences/humanoid-character-profile.ftl +++ b/Resources/Locale/en-US/preferences/humanoid-character-profile.ftl @@ -5,5 +5,6 @@ humanoid-character-profile-summary = This is {$name}. {$gender -> [male] He is [female] She is + [neuter] It is *[other] They are -} {$age} years old. \ No newline at end of file +} {$age} years old. diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/dressers.yml b/Resources/Prototypes/Catalog/Fills/Lockers/dressers.yml index 94e10d76eea..b1a92711584 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/dressers.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/dressers.yml @@ -39,7 +39,10 @@ - id: ClothingNeckMantleCMO - id: ClothingCloakCmo - id: ClothingOuterCoatLabCmo + - id: ClothingUniformJumpsuitCMOTurtle + - id: ClothingUniformJumpskirtCMOTurtle - id: ClothingHeadHatBeretCmo + - id: ClothingHeadMirror - id: ClothingEyesGlasses - id: ClothingOuterWinterCMO diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/heads.yml b/Resources/Prototypes/Catalog/Fills/Lockers/heads.yml index fec4f3ffcf0..664da15f653 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/heads.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/heads.yml @@ -33,6 +33,7 @@ components: - type: StorageFill contents: + - id: ClothingOuterCoatCapTrench - id: NukeDisk - id: PinpointerNuclear - id: CaptainIDCard @@ -54,6 +55,7 @@ components: - type: StorageFill contents: + - id: ClothingOuterCoatCapTrench - id: NukeDisk - id: PinpointerNuclear - id: CaptainIDCard @@ -74,6 +76,7 @@ components: - type: StorageFill contents: + - id: ClothingOuterCoatCapTrench - id: NukeDisk - id: PinpointerNuclear - id: CaptainIDCard @@ -331,4 +334,4 @@ - id: JetpackBlue - id: SpaceCash1000 - id: BeachBall - - id: BikeHorn \ No newline at end of file + - id: BikeHorn diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/medical.yml b/Resources/Prototypes/Catalog/Fills/Lockers/medical.yml index f2177916830..e7a367c454c 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/medical.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/medical.yml @@ -45,6 +45,8 @@ contents: - id: HandheldHealthAnalyzer prob: 0.6 + - id: ClothingHeadMirror + prob: 0.1 - id: ClothingHandsGlovesLatex - id: ClothingHeadsetMedical - id: ClothingEyesHudMedical diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/suit_storage.yml b/Resources/Prototypes/Catalog/Fills/Lockers/suit_storage.yml index 734bd485a2e..94ef753c789 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/suit_storage.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/suit_storage.yml @@ -228,6 +228,7 @@ - id: OxygenTankFilled - id: ClothingOuterHardsuitCap - id: ClothingMaskGasCaptain + - id: ClothingMaskGasCaptainCombat - type: AccessReader access: [["Captain"]] diff --git a/Resources/Prototypes/CharacterItemGroups/Jobs/Command/captain.yml b/Resources/Prototypes/CharacterItemGroups/Jobs/Command/captain.yml index 57df945ec91..842c285909b 100644 --- a/Resources/Prototypes/CharacterItemGroups/Jobs/Command/captain.yml +++ b/Resources/Prototypes/CharacterItemGroups/Jobs/Command/captain.yml @@ -107,6 +107,8 @@ items: - type: loadout id: LoadoutCommandCapMaskGas + - type: loadout + id: LoadoutCommandCapMaskGasCombat - type: characterItemGroup id: LoadoutCaptainOuter @@ -116,6 +118,8 @@ id: LoadoutCommandCapOuterWinter - type: loadout id: LoadoutCaptainOuterCarapace + - type: loadout + id: LoadoutCaptainOuterTrench - type: characterItemGroup id: LoadoutCaptainShoes diff --git a/Resources/Prototypes/CharacterItemGroups/Jobs/Medical/chiefMedicalOfficer.yml b/Resources/Prototypes/CharacterItemGroups/Jobs/Medical/chiefMedicalOfficer.yml index 6e9bd02b4f6..77f6b3f26e9 100644 --- a/Resources/Prototypes/CharacterItemGroups/Jobs/Medical/chiefMedicalOfficer.yml +++ b/Resources/Prototypes/CharacterItemGroups/Jobs/Medical/chiefMedicalOfficer.yml @@ -46,6 +46,8 @@ items: - type: loadout id: LoadoutChiefMedicalOfficerNTPDA + - type: loadout + id: LoadoutClothingHeadMirror - type: characterItemGroup id: LoadoutChiefMedicalOfficerNeck @@ -91,3 +93,7 @@ id: LoadoutChiefMedicalOfficerJumpsuit - type: loadout id: LoadoutChiefMedicalOfficerJumpskirt + - type: loadout + id: LoadoutChiefMedicalOfficerTurtleskirt + - type: loadout + id: LoadoutChiefMedicalOfficerTurtlesuit diff --git a/Resources/Prototypes/DeltaV/Entities/Clothing/Eyes/hud.yml b/Resources/Prototypes/DeltaV/Entities/Clothing/Eyes/hud.yml index 1e8a64b0df4..f11cb930f04 100644 --- a/Resources/Prototypes/DeltaV/Entities/Clothing/Eyes/hud.yml +++ b/Resources/Prototypes/DeltaV/Entities/Clothing/Eyes/hud.yml @@ -11,6 +11,7 @@ - type: Construction graph: PrescriptionMedHud node: prescmedhud + - type: VisionCorrection - type: ShowHealthBars damageContainers: - Biological @@ -31,6 +32,7 @@ sprite: DeltaV/Clothing/Eyes/Hud/prescsechud.rsi - type: Clothing sprite: DeltaV/Clothing/Eyes/Hud/prescsechud.rsi + - type: VisionCorrection - type: Construction graph: PrescriptionSecHud node: prescsechud diff --git a/Resources/Prototypes/Entities/Clothing/Head/misc.yml b/Resources/Prototypes/Entities/Clothing/Head/misc.yml index bd7899d75f8..0138d8aee47 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/misc.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/misc.yml @@ -86,6 +86,17 @@ - type: Clothing sprite: Clothing/Head/Misc/pwig.rsi +- type: entity + parent: ClothingHeadBase + id: ClothingHeadMirror + name: head mirror + description: I doubt even the CMO knows how to use this thing. + components: + - type: Sprite + sprite: Clothing/Head/Misc/head_mirror.rsi + - type: Clothing + sprite: Clothing/Head/Misc/head_mirror.rsi + - type: entity parent: ClothingHeadBase id: ClothingHeadHatRichard diff --git a/Resources/Prototypes/Entities/Clothing/Masks/masks.yml b/Resources/Prototypes/Entities/Clothing/Masks/masks.yml index 383e32e99d6..c5b34a7a67f 100644 --- a/Resources/Prototypes/Entities/Clothing/Masks/masks.yml +++ b/Resources/Prototypes/Entities/Clothing/Masks/masks.yml @@ -88,6 +88,17 @@ - type: BreathMask - type: IngestionBlocker +- type: entity + parent: ClothingMaskGasExplorer + id: ClothingMaskGasCaptainCombat + name: captain's combat gas mask + description: A military-grade gas mask that can be connected to an air supply, painted and outfitted with an emblem befitting its wearer. Issued only to the station's finest. + components: + - type: Sprite + sprite: Clothing/Mask/gascaptaincombat.rsi + - type: Clothing + sprite: Clothing/Mask/gascaptaincombat.rsi + - type: entity parent: ClothingMaskGasAtmos id: ClothingMaskGasCentcom diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/coats.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/coats.yml index dc5454d597b..07fe385478a 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/coats.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/coats.yml @@ -51,6 +51,17 @@ - type: Clothing sprite: Clothing/OuterClothing/Coats/gentlecoat.rsi +- type: entity + parent: [ClothingOuterArmorCaptainCarapace, ClothingOuterStorageBase] + id: ClothingOuterCoatCapTrench + name: captain's armored trenchcoat + description: A greatcoat enhanced with a special alloy for some extra protection and style for those with a commanding presence, outfitted with emblems and decor befitting its wearer. Issued only to the station's finest. + components: + - type: Sprite + sprite: Clothing/OuterClothing/Coats/cap_trenchcoat.rsi + - type: Clothing + sprite: Clothing/OuterClothing/Coats/cap_trenchcoat.rsi + - type: entity abstract: true parent: AllowSuitStorageClothing diff --git a/Resources/Prototypes/Entities/Clothing/Uniforms/jumpskirts.yml b/Resources/Prototypes/Entities/Clothing/Uniforms/jumpskirts.yml index 18266dc4988..7f6d59c9a49 100644 --- a/Resources/Prototypes/Entities/Clothing/Uniforms/jumpskirts.yml +++ b/Resources/Prototypes/Entities/Clothing/Uniforms/jumpskirts.yml @@ -132,6 +132,17 @@ - type: Clothing sprite: Clothing/Uniforms/Jumpskirt/cmo.rsi +- type: entity + parent: ClothingUniformSkirtBase + id: ClothingUniformJumpskirtCMOTurtle + name: chief medical officer's turtleneck jumpskirt + description: It's a turtleneck worn by those with the experience to be Chief Medical Officer. It provides minor biological protection. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpskirt/cmo_turtle.rsi + - type: Clothing + sprite: Clothing/Uniforms/Jumpskirt/cmo_turtle.rsi + - type: entity parent: ClothingUniformSkirtBase id: ClothingUniformJumpskirtDetective diff --git a/Resources/Prototypes/Entities/Clothing/Uniforms/jumpsuits.yml b/Resources/Prototypes/Entities/Clothing/Uniforms/jumpsuits.yml index d2339764f88..3ada362ce0b 100644 --- a/Resources/Prototypes/Entities/Clothing/Uniforms/jumpsuits.yml +++ b/Resources/Prototypes/Entities/Clothing/Uniforms/jumpsuits.yml @@ -350,6 +350,17 @@ - type: Clothing sprite: Clothing/Uniforms/Jumpsuit/cmo.rsi +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpsuitCMOTurtle + name: chief medical officer's turtleneck jumpsuit + description: It's a turtleneck worn by those with the experience to be Chief Medical Officer. It provides minor biological protection. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpsuit/cmo_turtle.rsi + - type: Clothing + sprite: Clothing/Uniforms/Jumpsuit/cmo_turtle.rsi + - type: entity parent: ClothingUniformBase id: ClothingUniformJumpsuitDetective diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index 75b593fbcc0..adf6bd94aa8 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -1106,6 +1106,8 @@ - ClothingHeadHatBeretCmo - ClothingUniformJumpsuitCMO - ClothingUniformJumpskirtCMO + - ClothingUniformJumpsuitCMOTurtle + - ClothingUniformJumpskirtCMOTurtle - ClothingUniformJumpsuitDetective - ClothingUniformJumpskirtDetective - ClothingUniformJumpsuitEngineering diff --git a/Resources/Prototypes/Loadouts/Jobs/Command/captain.yml b/Resources/Prototypes/Loadouts/Jobs/Command/captain.yml index b64ad384ef4..02ed0324e3b 100644 --- a/Resources/Prototypes/Loadouts/Jobs/Command/captain.yml +++ b/Resources/Prototypes/Loadouts/Jobs/Command/captain.yml @@ -355,6 +355,19 @@ items: - ClothingMaskGasCaptain +- type: loadout + id: LoadoutCommandCapMaskGasCombat + category: JobsCommandCaptain + cost: 0 + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutCaptainMask + - !type:CharacterJobRequirement + jobs: + - Captain + items: + - ClothingMaskGasCaptainCombat + # Outer - type: loadout id: LoadoutCommandCapOuterWinter @@ -382,6 +395,21 @@ items: - ClothingOuterArmorCaptainCarapace +- type: loadout + id: LoadoutCaptainOuterTrench + category: JobsCommandCaptain + cost: 0 + exclusive: true + canBeHeirloom: true + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutCaptainOuter + - !type:CharacterJobRequirement + jobs: + - Captain + items: + - ClothingOuterCoatCapTrench + # Shoes - type: loadout id: LoadoutCaptainShoesLaceup diff --git a/Resources/Prototypes/Loadouts/Jobs/Medical/chiefMedicalOfficer.yml b/Resources/Prototypes/Loadouts/Jobs/Medical/chiefMedicalOfficer.yml index b5e82749cec..3910e7b9bbf 100644 --- a/Resources/Prototypes/Loadouts/Jobs/Medical/chiefMedicalOfficer.yml +++ b/Resources/Prototypes/Loadouts/Jobs/Medical/chiefMedicalOfficer.yml @@ -53,6 +53,19 @@ items: - ClothingHeadHatBeretCmo +- type: loadout + id: LoadoutClothingHeadMirror + category: JobsMedicalChiefMedicalOfficer + cost: 0 + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutChiefMedicalOfficerHead + - !type:CharacterJobRequirement + jobs: + - ChiefMedicalOfficer + items: + - ClothingHeadMirror + # Id - type: loadout id: LoadoutChiefMedicalOfficerNTPDA @@ -212,3 +225,29 @@ - ChiefMedicalOfficer items: - ClothingUniformJumpskirtCMO + +- type: loadout + id: LoadoutChiefMedicalOfficerTurtleskirt + category: JobsMedicalChiefMedicalOfficer + cost: 0 + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutChiefMedicalOfficerUniforms + - !type:CharacterJobRequirement + jobs: + - ChiefMedicalOfficer + items: + - ClothingUniformJumpskirtCMOTurtle + +- type: loadout + id: LoadoutChiefMedicalOfficerTurtlesuit + category: JobsMedicalChiefMedicalOfficer + cost: 0 + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutChiefMedicalOfficerUniforms + - !type:CharacterJobRequirement + jobs: + - ChiefMedicalOfficer + items: + - ClothingUniformJumpsuitCMOTurtle diff --git a/Resources/Prototypes/Loadouts/loadout_groups.yml b/Resources/Prototypes/Loadouts/loadout_groups.yml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/Resources/Prototypes/Recipes/Lathes/clothing.yml b/Resources/Prototypes/Recipes/Lathes/clothing.yml index 729f20e9795..98cb1a3d51c 100644 --- a/Resources/Prototypes/Recipes/Lathes/clothing.yml +++ b/Resources/Prototypes/Recipes/Lathes/clothing.yml @@ -217,6 +217,22 @@ Cloth: 300 Durathread: 100 +- type: latheRecipe + id: ClothingUniformJumpsuitCMOTurtle + result: ClothingUniformJumpsuitCMOTurtle + completetime: 4 + materials: + Cloth: 300 + Durathread: 100 + +- type: latheRecipe + id: ClothingUniformJumpskirtCMOTurtle + result: ClothingUniformJumpskirtCMOTurtle + completetime: 4 + materials: + Cloth: 300 + Durathread: 100 + - type: latheRecipe id: ClothingUniformJumpsuitDetective result: ClothingUniformJumpsuitDetective diff --git a/Resources/Textures/Clothing/Head/Misc/head_mirror.rsi/equipped-HELMET.png b/Resources/Textures/Clothing/Head/Misc/head_mirror.rsi/equipped-HELMET.png new file mode 100644 index 0000000000000000000000000000000000000000..f0422f7aba6be89ab93f2588445541b243868bc3 GIT binary patch literal 631 zcmV--0*L*IP)EX>4Tx04R}tkv&MmKpe$iQ>7x64t5ZA2vVIah>AE$6^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|?BJy6A|?JWDYS_3;J6>}?mh0_0Yam~RI_UWP&La) z#baVNw<-o+;YSDphA<*AQ%|H9Gw>W=_we!cF3PjK&;2?2l)T9RpGZ8%bi*RvAfDN@ zbk6(4VOEk9;&bA0gDyz?$aUG}H_ki6e@tQNECM zS>e3JS*_Gq>z@3D!MwJT<~q$`#Ib|~k`N)IhB7L!5T#Wk#YBqsV;=rN$DbsZOs+B* zITlcb3d!+<|H1EW&BD~An-q)z-7mKNF$x5Bfo9#dzmILZc>?&Kfh(=;uQq_$Ptxmc zEph~ewt6ivS(gkkKSGR0O|3cm$drP+um}&729v;lMw&_000000002Mb5~3GKhoz8 R53m3L002ovPDHLkV1iw{AdLV3 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Head/Misc/head_mirror.rsi/icon.png b/Resources/Textures/Clothing/Head/Misc/head_mirror.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..f382faa4209b1ee713e4570f5d7058c6fe01eaf6 GIT binary patch literal 714 zcmV;*0yX`KP)EX>4Tx04R}tkv&MmKpe$iQ>7x64t5ZA2vVIah>AE$6^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|?BJy6A|?JWDYS_3;J6>}?mh0_0Yam~RI_UWP&La) z#baVNw<-o+;YSDphA<*AQ%|H9Gw>W=_we!cF3PjK&;2?2l)T9RpGZ8%bi*RvAfDN@ zbk6(4VOEk9;&bA0gDyz?$aUG}H_ki6e@tQNECM zS>e3JS*_Gq>z@3D!MwJT<~q$`#Ib|~k`N)IhB7L!5T#Wk#YBqsV;=rN$DbsZOs+B* zITlcb3d!+<|H1EW&BD~An-q)z-7mKNF$x5Bfo9#dzmILZc>?&Kfh(=;uQq_$Ptxmc zEph~ewtpgHeZ@k} z0pNV;7GtM;+vW`rYVHd0iB(9^XX?7P6H!%F@I(R34!kobB8<;8%+~{q=2A+eX$mRj z>=3g%002S=5D|nBvum)4>_TN;;xwwL6dP-TAAR_y%wMNr4FFM}@ wu}*HjDV%$|+i&gr@o;jk4ISS|Bog^Q9)Oy1lIb3Z+5i9m07*qoM6N<$f>6OnhX4Qo literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Head/Misc/head_mirror.rsi/inhand-left.png b/Resources/Textures/Clothing/Head/Misc/head_mirror.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..f4cd0d9464abff095ed8837340d05223668c72dd GIT binary patch literal 678 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU~J8Fb`J1#c2+1T%1_J8No8Qr zm{>c}*5j~)%+dJZrAoSdWdemA0dsXax;XTLjw(fH_QsedP>R$XHs^CNN z##av>ty$f?T7jdk!NS@?bC*Zwe{U|`BpZu&$9Grv?=Ek+u)^T#8!7gXvqnK5XUsUe zwyQCmL&AY$v&6I+E7dP`OIGx)um16)O8jZ$z32aA6jk$$4yX&AH@v%{!@Og;x$fN0 zc7-#hs219}S@SG>bi}M9-X(+?g*?)H)UhaQihfFL zm_>eJn6~M)UF!9T2J6=@+38ozQK+NXsN!;B#ljvg9hc0j9)=Sa{hiTXf8nG0N!7`# zdEEL~Ll!y}{drLTVR!Uq1IveMtjP}FyL0P%7#d?2L~eikKKXXuJcfVi54^H}ujWm7 zHu+0cbhiv+?d=0cOQR=$Z#XTR@W69A&&i2@Oj?~7E9@8NpJM#G-QoSL+tJzb%lRGJ zc17)D<>&pIuNrK;!adqKSKcLVePZ!6Kid%1QZR9;{z~d5V zb)ZtEaVpy-v#dS6;upMhW=Jw=`{n!(U!}0HIifQSr~?Qprlpo0%)M=-Td&oe(b-vDS5&t|4Wbc5{)u^SyZ%b{ueydM zmk-Umn4QJ&ZeF^co6C`h`d^;%B|m?+bKPpsO||#)3)O+DYi>(VzO1cs^55;%AkChx KelF{r5}E*&nI7E$ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Head/Misc/head_mirror.rsi/inhand-right.png b/Resources/Textures/Clothing/Head/Misc/head_mirror.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..ab53a413c699989a91782ca0b44add74e7d053d8 GIT binary patch literal 680 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU~J8Fb`J1#c2+1T%1_J8No8Qr zm{>c}*5j~)%+dJZrAoSdWdemA0dsXax;XTLjw(fH_QsedP>R$XHs^CNN z##av>ty$f?T7jdk!NS@?bC*Zwe{U|`BpZu&$9Grv?=Ek+u)^T#8!7gXvqnK5XUsUe zwyQCmL&AY$v&6I+E7dP`OIGx)um16)O8jZ$z32aA6jk$$4yX&AH@v%{!@Og;x$fN0 zc7-#hs219}S@SG>bi}M9-X(+?g*?)H)UhaQihfFL zm_>eJn6~M)UF!9T2J6=@+38ozQK+NXsN!;B#ljvg9hc0j9)=Sa{hiTXf8nG0N!7`# zdEEL~Ll!y}{drLTVR!Uq1IveMtjP}FyL0P%7#d?2L~eikKKXXuJcfVi54^H}ujWm7 zHu+0cbhiv+?d=0cOQR=$Z#XTR@W69A&&i2@Oj?~7E9@8NpJM#G-QoSL+tJzb%lRGJ zc17)D<>&pIuNrK;!=jwr(pMgS4JY5_^DsH{KWysf}Akg~o zV#>Od6&X8vw=ewY)1v&d>!$RYMDtlI{)Y>lXc1qKcm}8i2tMdtzSxp`+iB9y-D_W4 z+3Gg@%xF@Ho_18l_7h7DuflVgcX@lui_1@29?yQ~=B4R&?EMyYh)xhG5tQA#`}(Z^ zk#F8jZ>>T933*VOOQdhytx=FiV{E5lar^L}fU&frm2 zvrCu1-u7ip&2?kjXYIU=+#hAaZTN-3I&wSmzzGatJ zO7^=cOIp9OWIQl2`(KUf-hig5`mrmoX0b7q$)9Iu|7Ilp<>Do~T^4h*$~zMuu2=69 zFJn;Zb#vapeE4C&tFOBf*x8yJSJ=L)&(SA3Sa{I@+7OxctmrD}l|KNyPy#3gBRzvS^EvjJ)`xn!d?9;%aQt zBQ4WdF4$;9ytA>BcfD=?W@&5D6_*8!x*1N^>-&N$Z8X~$0u6mu1yl(!~rFWk%%ZYQF zDH9dd+NNgm?Rx&HW1qI^p8Y+~BA;P_RC`0EMBBESxRjYTk+ZI^HmuS=XkK|_4mX3$ zi`|`uOb7Rzc=Ax(S8>I$`^%5kXJ65;7E)luiGHYa{$YHc?EXTuF;5Pdj2S##{an^L HB{Ts5ZTe8o literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Mask/gascaptaincombat.rsi/equipped-MASK-vox.png b/Resources/Textures/Clothing/Mask/gascaptaincombat.rsi/equipped-MASK-vox.png new file mode 100644 index 0000000000000000000000000000000000000000..4923a4d9d5628b68cabb0974718ce162ca918cae GIT binary patch literal 811 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEVEW|g;uuoF_;!|ews4@xasRCf zGaSSj#lH!1?BERBup?BfB+}sG(*E@q`W5tU^9RPf*j4&|(F$(yrH``3*qAQ9a^jTm z;95F0^Pl*+0#4(}JIj}CUHYH<#P zweF=m&WUGlSNi?`*6n-W^mj-d`^@q0?x}fyYVCAq0O(tPm1 zn%#HTeUW)<$>?zE>bLt|+7q5#S?{|tM2n5dPyV~L^Up%Q8^=3-zfiIcefP-u*?RR$ z-0BRRgfy0Dd~-!{(d;*p>Wgcc3(m+%F}&NkZQYAF z1{b!Q&duhL7w>Iz{hz*e>8HTgC-`bq4Es+Vi(US<_05?nPiyD;Hd*n>JXLXE!i83{ a^f9o6$I6K%oR|m91Pq?8elF{r5}E+LU2ypT literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Mask/gascaptaincombat.rsi/equipped-MASK-vulpkanin.png b/Resources/Textures/Clothing/Mask/gascaptaincombat.rsi/equipped-MASK-vulpkanin.png new file mode 100644 index 0000000000000000000000000000000000000000..ad830675ce756c231e6f5add940d99cb17c5b36b GIT binary patch literal 819 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEVEX0h;uuoF_;%L*Zed4}V}RzrzQA0q?bIT`$=EWL_t*b;AT}zrDJ81sjfM zE@a_RX{u0sX8mEBvQr)_&g4yJTJ*jA%acEf9(6KvS-838x9_^F$)+p<9C-HulfD7=w`;f9e)#yq<`eIF%Id=Ds2me%Jf0KOX*Gnbq(07jx->LUs zBJRiFCe_;pbVJ;8i$2$@ zna0Xro%!DXbLu;uhDE=6zdd>VapT3zeaEBDI$XHo{J}kcx1W`Nalyr+{Pef>>-7J+ zvb+CPabUuSHZU-0cD(HoN!LHyU(r=rC33 zF-ZM+xbwB=eg{FnrH)N`Z#^5%Dk)Tix4n6=HJ+ibzkGgsl<}OUs(8S zgMaP{->asl^{1wuy(h_Ve2dS&pHI42*w;_)EMk`I~uJFLUXCwPn3*K10Egwgr8e{S5PJ=N^iyKEO9Gbo;hr3?=g(EWEtZnML|d zBSZ4UC&dBmg-KCv+pj<089sMIBhQ6Ek(8^`vyXW$Y*&~*spss4wKpeh>`@X@V8n?$ bR6mGEw+0643cSw*W(EdNS3j3^P6qGSZ@B8btFhS@1{k`&E zf7cqnFR{8*`sFzbL-@L1pXY92%Jh*nTN=B1R_EyX*JZXnWd3$#`7OUL@6yLhzVkX5O!acTuwujS-@AO? z)wxa7p5P0UC`xRX7AMX_Kp*i giUUqmFKEH|)6A)&`f{Z+Fm*F{y85}Sb4q9e0Jx@NWdHyG literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Mask/gascaptaincombat.rsi/icon.png b/Resources/Textures/Clothing/Mask/gascaptaincombat.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..e2d75aa86cbf067af0fbc6c95bf2089c0ff6fb8a GIT binary patch literal 570 zcmV-A0>%A_P)t!itt>hqdwbM3WcaRH;-Hw+gWV_|ujY&j6#(PnG__qKrS=`R!& zJSa!s2G$uyJVF8BAp7=1&$^kfa{aH)wpRrYBkavb7@!^irkKfO)Y{u|En>PM3sx@e zDtoZ5TrTH0=b+s5vFC@+u$kyP1KkFkSwV&nqQ|y&tYxWG5;Fol*$`5Z?C7Wq!bhml zXt;MCRKixU)oiNWZa>}-(nGQ(2+kpb=ks|72yS4Iqldor-WfzZ`nJIIaY8m^58<30 zryT^PA{I1wkFMF-9C6o=dWJBlgcE|nAuBWQc4s^&@3uo0Mv(xRTr%U&Cm4wAxvSS| zj#~=|f*vyL!X`fmCb9*lXsgNDoW{K~9|=z?kW?V4Kv)H?0nnopr4R1E;Q#;t07*qo IM6N<$g7nY?xBvhE literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Mask/gascaptaincombat.rsi/inhand-left.png b/Resources/Textures/Clothing/Mask/gascaptaincombat.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..fe2901acd1f3fbfeb86d3b0ce614560665cdd9c5 GIT binary patch literal 336 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU=;UsaSW-r_4d}^eV?ej z?~UbV_p=j$hJwI?rn2?%bCf^J?3{Gv!{3Dyx5mxB`0i`BMPZll^556Z-}@Tab@vM| zU%&eKs^;#xU;O8d^=ED~4*2+U z;rzo3_bG3f)917A_Nv=+UK`4RA6 zIQY5`#6dt(!60=01L=k0@ul(yTVnR~*S2Upu|II!u8Fgj<sc2@boX!G5hQ-Zx$r41R3G!>gTe~DWM4fdm53a literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Mask/gascaptaincombat.rsi/inhand-right.png b/Resources/Textures/Clothing/Mask/gascaptaincombat.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..5615899ced3a6b6cbf8db2633243ea187bfb9bef GIT binary patch literal 343 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEV3hN8aSW-r_4d|6KW0af)`!Mt zd03n|(;ONSn3J+rad3(q7Ebt8QOh8=pdu*n`mDB=HJOGjIk$2qcew`gl0M(cda3N~>l& z|H)GEJep%+;G5g9bI0Y?OTO;VpWm{!GWTZUO`FhN<^O&b&NKV>bN%t!$mdV2Y*WvF z|LUG#CNraEXTWybtC9Z}y?jAw(>t~$(pZ2>aL)78&qol`;+0Nr4bq5uE@ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Mask/gascaptaincombat.rsi/meta.json b/Resources/Textures/Clothing/Mask/gascaptaincombat.rsi/meta.json new file mode 100644 index 00000000000..2467db2bdea --- /dev/null +++ b/Resources/Textures/Clothing/Mask/gascaptaincombat.rsi/meta.json @@ -0,0 +1,38 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e. Reptilian edit by Nairod(Github) | vulpkanin version edited by Floofers. Vox state by Flareguy for SS14, Modified by Rosycup for TheDen", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-MASK", + "directions": 4 + }, + { + "name": "equipped-MASK-vox", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + }, + { + "name": "equipped-MASK-vulpkanin", + "directions": 4 + }, + { + "name": "equipped-MASK-reptilian", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Clothing/OuterClothing/Coats/cap_trenchcoat.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/Clothing/OuterClothing/Coats/cap_trenchcoat.rsi/equipped-OUTERCLOTHING.png new file mode 100644 index 0000000000000000000000000000000000000000..497ea69bfaaa6a8b902094bd5d5971374b17f8a6 GIT binary patch literal 1318 zcmV+>1=;$EP)EE~T~?ufj1gtS zKtlM8I3C&Z=g(s>`Nex#`4RHd>T$b#t*jQE2;qxt>okgyi})D)sMpox@w1)T+1awk?Q0N& z{GN*Tct`{Asj|4Z*jJP3Nzh2`t56}RH3j^(^tcUv-j+3;rUP&mOx^;-`E;P#Bft)SzsJcl2Qf^;G~J|dOW}u0d(ssA+5`Zh z1&AKkfH@PVz|$Dt~_z>%O3~b+|~Wy zZoiGSM*uy|dzrsI{tETFAtsNUayugW;nF3-M*~yMe~_o(*ZvN$pS9X}U||vwp>m9B zDrgae=&C?R#D0s^CLjcA2?&*sLuQHg^{ZoidCq4BG6R``%s^%!Gmsg`3}gl}1DS!$ zfX6`e-(c0>*k1pMHDyQAj*#8^<5--q?si|A@Q7|Si}UtGSjtnj`_SKZ@P z*NGt^ihwIm=8L`m>EeRIWOwU{?WfQ&RjOlk+p#J8`sH?UINB;tqdpIvtbMlotwTh1cw{e*9JxxTv$!*oTxGD6$n z`XJFX*o)VouyD@D3)wh`gpsF!l=~;fl8+;9600!+?1}L>oR&_VMk_yR98Ca2OrUo7 zH`y!FUloI;Phr_WU29uaTVEc%23Q5WgEb$CxvHYGLR+uNG*0sI#li~-+)!my*brkw z^aub5$MpeXUq$0O8Me+@3|-r`_Sm|0(n$n_6mwz8zM4XHnvj9Pr*KmtY6|FQ2ylLg zY~Y8)ei_@%07*qoM6N<$f&ie4Y5S_#nfdmYMR6-7fbSfx8TYp5b@B{J>Y%MG;Z2Sp=AXgV2nxnVfwE=;Z1Yngq-)tp}#x`@{8AT3J&l z37_wIL2$Pfw2xPVYPG7-fH9AC@U%q-5JwI1QnN?cY&;&*a5$vVXhg+gk;>&V6$%CN zeV^V=<|wmrCe{^Y04dKkp2Cf=Nt|IGfq)lRqBtMSIRk(ggl+bGl&72BkB9=kGzez^ zk*a0zc;BIRr*B~-FIj8Fr{{V@#`CIyl^-(Uk~`&aal~vnKFHo zur&ioPOc0j`Nhpo6~O*&UDGnLw&(!j0MzuyWdMzca)9U9Q(G1X059%#oR~WuU*Ndg zq3x6aCJKPB8npOk@E3FHI$!={kd@cRb@0Fo9p>y9=_rLK$dj)qz@5vQ%f_DX5ddV Z@C~9M#>PmSi5UO@002ovPDHLkV1hgP?g;<@ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/OuterClothing/Coats/cap_trenchcoat.rsi/inhand-left.png b/Resources/Textures/Clothing/OuterClothing/Coats/cap_trenchcoat.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..3079c4ca6d0b79dcd49b3aaa125469a2a1176d46 GIT binary patch literal 759 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEVA|*D;uuoF_;%Jt@7s{aA7D+evN@ z#VadyY%Ri9hOF`07-90Y>TbfPwPB}EO;#~{e*E{$abAL@fE8W{Rb@`zK_BWjF@44LZjiKPz)8{w)Zay)R&k?G04!FsfKY#8F{_g#{ zr^ETbU*7a&#RA!?y_2$6-^`g+v@@rE@2_u{*HtYmsPkSL^vYnH!94B=N1r9vZ+@RE z9=-0*mjwT-@i)S5GOnAfar%_^yY1~)Qn%k(CEIX4Jh$l1o%+A#v4v}t;u_oS|IcXs zs*?3}$@?#7mOKru*dUsExa^F^3aOUM5~uIJyPG2UFD7%+zI|u4z1B=%;KYOO7%7jYia*)!j$-8%nL zWx^+pllk_41!a0pvNjxH-YEQup`r88wk3}5lvl_$UaaoFHKXF*! zF_?FBW*7uzc-Vx#`^|&XO+DN_aYb z(#8_?HE-_qO1T2#%k<8~y8=74uj`y%9q`z$X<7XBH0}$vAMU1HeBuH?yJ0@#MD( zTOI@)*{HEYM4OK_{O(;A_Ih1Ezja-GTzdaRo0=ayc%;?Tt)!(9>$1?IvqT`ud~F@G z{*v@}?Mv^?{lP1)kay@_jOzT^FYcG}LX3Nc+#d-Bka<}{Qq>ULqJ7fGpSBLU0zL_Ic zy*4cPegE{_THoYD>IJt{5Bh)J&f$=LCuaTitG`~Xl=IHI@js}MKXKM(M?PISo)^!~ ze(quuD#?$!_27%YS2W9;v-?&oZdJc5e_bP5c>1xnvW?QoU4C4xO_LU1%*aS}oHh5e zM7E>d{BR?NYpfHFmPS3_x2O5v#*^Dj6?}@LSxzVfou0i-+2PiusMELIdzI{dyexHN zuq%B!(b06@--Y)rl$hopyZt-ebbD~|w~y5hcfMV_x~H>Y_v`A%&GY$|8-LQ>diZYY zXK9nn-5ITXx7(MLe*CH8z=Q_{ay-yq|982$*ZdXVS=8L#IR0_@GtHoK+mhFB*KFNV zy10+U!R5%_bcTY7GtP?XZCUS8`+Mnr>(+-pJvW*iTYT-$*)o61S+Zl|>M14HAD>KI zk$1a&!DkP_2F6Pp(iu3TWbUzKOlVHbZT!s~GxzZwjwRoC6a=H=_FZ_`r>P*=uq#^iQ_P_npRDr?Vh^W2R@}^X;Ah@i=7oX}RCRxT zv-r-FaBJ?`eJk7V+7(xnmR8AHGEKT?+`zGAZjbF-UdA{bP0l+XkK6NWx* literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/OuterClothing/Coats/cap_trenchcoat.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Coats/cap_trenchcoat.rsi/meta.json new file mode 100644 index 00000000000..7941023219b --- /dev/null +++ b/Resources/Textures/Clothing/OuterClothing/Coats/cap_trenchcoat.rsi/meta.json @@ -0,0 +1,26 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e. Modified by Rosycup.", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/cmo_turtle.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/cmo_turtle.rsi/equipped-INNERCLOTHING-monkey.png new file mode 100644 index 0000000000000000000000000000000000000000..a2581dab5e38f16c496645e7608883d94ff376db GIT binary patch literal 1183 zcmV;Q1YrA#P)EX>4Tx04R}tkv&MmKpe$iQ$>+#1v`j1WN4i%h>AE$6^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|?BJy6A|?JWDYS_3;J6>}?mh0_0Yam~RI_UWP&La) z#baVNw<`9$!jB*Z5y61OOg)ia%)oPe-NVP%yC~1{KKJM7SMnwUd?N82(+!JwgLr1s z(mC%FhgeBch|h_~4Z0xlBiCh@-#8Z?7I zj1?(+-Q(T8oxS~grq$mMXvuP;>U)db0008kNkl& zD0i4>qjSfMw)Q*_E^}|@yq9x77$u8w{-lLDYp zt&z>7&a`SwNB@@2Buq2S)N~YpwGZp$EQ^g&iRaIr0&sNLrQT@jgw!GtPck(f#V`zj zGwsn~mrAv!71LLyRQC7x4!C>o&d~p}RZ2;Cku0?=>6;TPd8J5IS=c5UjQv2;<^xYE|~4Nns| z0m>FvZ5WpLFqW4VBVO%9JQ+Ba_N2Xa0)XolkJ=HwXbx)C_xBFm{vfppfp&mtrl~iY zt{WVdBYYl8*E^RWXnBJw^R0FrfL6Oss~t%9(rj*S4m`Kob+VZh`9jeNtwIETXI@oe zsEQ4MOeO=MB_4!)q3A5WdcpDWF~FI*=vIhmCBW;`o2EIi1ESHWmhffR+S;Pq?GE(4 zU0DefEAVRl$)}&29pllPZ=vphFYoR<-kJnO(AtDRFU95;oM9e)*aqdOwWU5l_l4`M x5%??W1Jp!@ja|hNxGrr$5ClOG1VOk#`~tg>%2;x}(FFhi002ovPDHLkV1h)pFNXjC literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/cmo_turtle.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/cmo_turtle.rsi/equipped-INNERCLOTHING.png new file mode 100644 index 0000000000000000000000000000000000000000..b4d2825f0dad12ee6ba528a6faf710415bc5ee47 GIT binary patch literal 1338 zcmV-A1;zS_P)EX>4Tx04R}tkv&MmKpe$iQ$>+#1v`j1WN4i%h>AE$6^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|?BJy6A|?JWDYS_3;J6>}?mh0_0Yam~RI_UWP&La) z#baVNw<`9$!jB*Z5y61OOg)ia%)oPe-NVP%yC~1{KKJM7SMnwUd?N82(+!JwgLr1s z(mC%FhgeBch|h_~4Z0xlBiCh@-#8Z?7I zj1?(+-Q(T8oxS~grq$mMXvuP;>U)db000AVNklBz1R+N-vA~X0D_vPY>e8jD1wkIR5b=dvgpUn1I4>14I%<&XCg@JI#?Y6 z@5At15zwBg?HA4nV582eNO<9PKw8h(+ZQ1Ms+Ahjdd98?P*s)dTHFqZYm4@Fsa!y* z+}s{i1hm^Ed}LB9p6m8L_4I>4Eq@7gc8K7iTq@nvu}T$=g-Q8vi>051m( wx;{Xp4VR`qK$H!au0G(R*dUQeB$BJZALC<)6~JI8k^lez07*qoM6N<$f{?Cpwg3PC literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/cmo_turtle.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/cmo_turtle.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..b5702f2d315a65145e95303190213ad15d400f79 GIT binary patch literal 842 zcmV-Q1GW5#P)EX>4Tx04R}tkv&MmKpe$iQ$>+#1v`j1WN4i%h>AE$6^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|?BJy6A|?JWDYS_3;J6>}?mh0_0Yam~RI_UWP&La) z#baVNw<`9$!jB*Z5y61OOg)ia%)oPe-NVP%yC~1{KKJM7SMnwUd?N82(+!JwgLr1s z(mC%FhgeBch|h_~4Z0xlBiCh@-#8Z?7I zj1?(+-Q(T8oxS~grq$mMXvuP;>U)db0004jNklGR+SInF=g=Ak+Xmuj6Ik>ylufhnwkTtyChskzg86L@bI+ag z|DOZ*UI+*X2>5RliX~AfmPEfbS;DH~069&gP%H_vZizy%ByyV8lOKoyuTY~|Bd2LS z(Q8b_KuA`6ExXE9>jr>Y-DEAhO1WaZ$5e6&fLMHna>ZbKYg4MWl(=o%!nSQ;)-7Sy zt@m%&b$xTPlNjo^LDzM<-FG{0G(X>aa#|(1m>?FPLDzMu2KyS=-`foV0wA4EvzSOR zH9ZbMBoe`K902ZaA2>O!a(Hy?{qN@nyu~t^jA%4#z7yzlI?}>Q2D}1aO`u#cRLZFv zfY&4FH-Yb27c0ME?q Uy&tYpEX>4Tx04R}tkv&MmKpe$iQ$>+#1v`j1WN4i%h>AE$6^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|?BJy6A|?JWDYS_3;J6>}?mh0_0Yam~RI_UWP&La) z#baVNw<`9$!jB*Z5y61OOg)ia%)oPe-NVP%yC~1{KKJM7SMnwUd?N82(+!JwgLr1s z(mC%FhgeBch|h_~4Z0xlBiCh@-#8Z?7I zj1?(+-Q(T8oxS~grq$mMXvuP;>U)db0005BNkl`CduxuwdKRd-}I0gU|ig~=geEyW5-C{TB0jt_J`J z+hd))IH^y7QVQi#4L#R`Y1UyF20HB)I_(xrvyPtYp`R6z z^}h6r?NVMCu>s`N19Ai4APZy<_b{1$BR2uQ2D_0LMQi}~(+gy#C&0)DvPZz=_dA$= z0_bi%FN)}c>Hj%+=_cMoI**8mh=_=Yh=_=YbSBXu5PdzqNm3mGZ3h6zbO^M3 z$spMw(DDRGb_ldQ0f43*0%;N*0?~fJHl*zkXgvUl4uRGKkmwL-|BzsZfYSK^!<=3? Th#FN(00000NkvXXu0mjfVq%#8 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/cmo_turtle.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/cmo_turtle.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..ed69a4573879784833399193fc173927945eaf4f GIT binary patch literal 921 zcmV;K17`e*P)EX>4Tx04R}tkv&MmKpe$iQ$>+#1v`j1WN4i%h>AE$6^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|?BJy6A|?JWDYS_3;J6>}?mh0_0Yam~RI_UWP&La) z#baVNw<`9$!jB*Z5y61OOg)ia%)oPe-NVP%yC~1{KKJM7SMnwUd?N82(+!JwgLr1s z(mC%FhgeBch|h_~4Z0xlBiCh@-#8Z?7I zj1?(+-Q(T8oxS~grq$mMXvuP;>U)db0005dNkl}m&vE?w%_z590AMd(u3UP;l9-oe@q3JMYfJ+=;^nbY~(+;WTW2W0S* zx$mCM?eIJR5fKp)5fKp)5dnav8?L4s?z*+42%C3j)sHnB4c~)>N*R+)@-8jFRI|~T z?L6K39cbIa|8)?r#U%B32F5V4+^tWEPSy@IWaj;pFFYSjt~#r$l2I2ggS zYzQIn_;A1Vt3MS>UQIV#+v>TFG zf$aVc#*9mn90PxdmpYOpZd0s$< zRMTLw2X9(70AN{PJ_$1eK}g*Ji#_;h|6Ng(M9vHZA$_&dHZu^5w9O32@SP7>CT%kV v>jWx5+GYl11S&wEX>4Tx04R}tkv&MmKpe$iQ>9X>4i*$~$WWauh>AE$6^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|?BJy6A|?JWDYS_3;J6>}?mh0_0Yam~RI_UWP&La) z#baVNw<-o+;YS|^5ky#Grk+SIX5cx#?&0I>U6f~epZjz4DtVIuK9P8i>4rtTK|Hf* z>74h8!>lAJ#OK8023?T&k?XR{Z=8z`3p_JyWK#3QVPdh^!Ey()lA#h$6Gs$PqkJLj zvch?bvs$UK);;+PLwRi_&2^e1h+_!}Bq2gZ4P{hdAxf)8iis5M$2|PQjz38*nOtQs zax9<<6_Voz|AXJ%nuV!JHz^bYx?gPjV-yJN0?oQ@e;?a+^91le16NwxUu^)hpQP8@ zTI2}m-v%zO+nT%wTgn$H40009tNkl|=0|0D)-9^GMu%F9e<<)Zl!1-AVrAn0&l0+~N#@xIQ znx+9jUweMmLcUNW#dMS@nf;UFQ#^RMF!XiuK6MtH>N|y^@AwSRG!42QMZQo(Fc5~O zY1Shc2qRx8Lf50#Y>XSb&MXQyZ0C?Yi2G4Bh`l13Wg`!;sutg0= z#;$+W?qGVxJCZ)>cYvL%cBiYotB{tAKbaC9e+XCY4!jo)tG_e5gy|VCM6-xD*CsPyoKf*8! z!!QiPFbu;m48#0)OwtZ_!o=)xJMmZq)k;Gg92{6SwQ4LX(i)fA6yLBH9TlLtrgMqMeEb^f3bpik^w|Lx+@NHv|vwm`XYW1tsCMc}{U5}zvsakHZTaNHe zNL~9_R3I56GV`^12>?*5mr$!K>5k0d;bGTxtzJSr7C}0b6|Pl?0N0t9l^C*O0{~*N z7yyvORY+&DV)e~yTwY!RK;KxX6(Xbr*nN6k*Sl7L&*vivkHXQ>5n8QQSKr5t4W(Gh zvo*-4Uk**->ARn8LFb-X%H!ZGg3hB#B206BF;7_K6bfbIqe{FA)waMQC zgAB+?eRu$9?rnLz7ma}?sfsx|vO7G<4==eX2~@}l7^nES7-bTaSAh4T0nsd5l_Hb$ n=A~Be7#N0O7=~dO#yNihi6rQ}i`JN@00000NkvXXu0mjf3Vuw^ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/cmo_turtle.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/cmo_turtle.rsi/equipped-INNERCLOTHING.png new file mode 100644 index 0000000000000000000000000000000000000000..8e1557db217275f2cb2dad3dec9bb4152a28e528 GIT binary patch literal 1449 zcmV;a1y=frP)EX>4Tx04R}tkv&MmKpe$iQ>9X>4i*$~$WWauh>AE$6^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|?BJy6A|?JWDYS_3;J6>}?mh0_0Yam~RI_UWP&La) z#baVNw<-o+;YS|^5ky#Grk+SIX5cx#?&0I>U6f~epZjz4DtVIuK9P8i>4rtTK|Hf* z>74h8!>lAJ#OK8023?T&k?XR{Z=8z`3p_JyWK#3QVPdh^!Ey()lA#h$6Gs$PqkJLj zvch?bvs$UK);;+PLwRi_&2^e1h+_!}Bq2gZ4P{hdAxf)8iis5M$2|PQjz38*nOtQs zax9<<6_Voz|AXJ%nuV!JHz^bYx?gPjV-yJN0?oQ@e;?a+^91le16NwxUu^)hpQP8@ zTI2}m-v%zO+nT%wTgn$H4000BvNkl$XGFh4gNXtd5N zsMeIOW7RO&(y4xjQ}IwZLQ+m!eG0oVOGho{`=I3Suwrvx7O=uOb^&2L@G)61Vk*63}ffApU&;0PwI6 zxZTx(-$ffg4$jB(!umpZp)Ztxcf|>GK6(rQC>>s?DZO_90H;5904$0}(MEltX8}s- zS4I4+Sg!i+7jEhcCx90Zo@9Mbg4_CzDu9abuPg@mApF8jeMbqnPRIm^Zg5q(`E?q& ztuK5d6g?YLX!pOsajudOPZPlV^L594@JGAN1$=qyUJSzh0p*(y z006hTf^5BV-=F>f8UyPQ;2dG<3p%{ek+WMzwNcrwX64=2fcCf#)=*t69|MU#$ z9J@#YJNR?QSY%(q&jQqv=JE63X$+@{ovL+C4jyp99rn9B#BFV9kGDI3cGFS<&WdG_ z{XKUgaRAxhYq>AMaRP!TS?0_8c>$zQO+F5ZL?X-|Ar5#r8(2bL00000NkvXXu0mjf D#(A9n literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/cmo_turtle.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/cmo_turtle.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..334ef02242d3f65f165dee34405bb3a1b6b146d8 GIT binary patch literal 837 zcmV-L1G@Z)P)EX>4Tx04R}tkv&MmKpe$iQ>9X>4i*$~$WWauh>AE$6^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|?BJy6A|?JWDYS_3;J6>}?mh0_0Yam~RI_UWP&La) z#baVNw<-o+;YS|^5ky#Grk+SIX5cx#?&0I>U6f~epZjz4DtVIuK9P8i>4rtTK|Hf* z>74h8!>lAJ#OK8023?T&k?XR{Z=8z`3p_JyWK#3QVPdh^!Ey()lA#h$6Gs$PqkJLj zvch?bvs$UK);;+PLwRi_&2^e1h+_!}Bq2gZ4P{hdAxf)8iis5M$2|PQjz38*nOtQs zax9<<6_Voz|AXJ%nuV!JHz^bYx?gPjV-yJN0?oQ@e;?a+^91le16NwxUu^)hpQP8@ zTI2}m-v%zO+nT%wTgn$H40004eNklqN1#ZYE0ye-UOjLf-)L^RLla?iQ< zyze=1FE}_j{57<6Mri4bm=v?ioUAxNQdQB?8Bwb?g_h2Uq^geOXJWuARBu#Bs_MvU zH6~*~u`8a4M`*Vm0H{=JB;pZr`I5PYLt6m&{9bbT5=VyzwrblFHw;4$=qXCqDF8P8us=Yh&dvZZ5C`5mJu|lGUNGabNPm|bd;8`OcYB^yKJTY;;o#ul@UM9XpmX24nfP$6 P00000NkvXXu0mjf!EX>4Tx04R}tkv&MmKpe$iQ>9X>4i*$~$WWauh>AE$6^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|?BJy6A|?JWDYS_3;J6>}?mh0_0Yam~RI_UWP&La) z#baVNw<-o+;YS|^5ky#Grk+SIX5cx#?&0I>U6f~epZjz4DtVIuK9P8i>4rtTK|Hf* z>74h8!>lAJ#OK8023?T&k?XR{Z=8z`3p_JyWK#3QVPdh^!Ey()lA#h$6Gs$PqkJLj zvch?bvs$UK);;+PLwRi_&2^e1h+_!}Bq2gZ4P{hdAxf)8iis5M$2|PQjz38*nOtQs zax9<<6_Voz|AXJ%nuV!JHz^bYx?gPjV-yJN0?oQ@e;?a+^91le16NwxUu^)hpQP8@ zTI2}m-v%zO+nT%wTgn$H40005ANkl9xVj%_&L{Jd? zIJtlYS<$<&2-?QNfX!*NJiYyHvyEV*tyiKrcn5K}FrXk3$d;~^f|{7P`w|^^evoDs zo(XRz)9eExA|fIpA|fIpQbrUfMHDB+p!KqOL4Zqc=hqijT+3Pvc57^H6V(UVrz4qhxToO7k}UbBKAD3v!# zm~+>kezD(_H;CB)>h73&7iMcvo13PeKU43+Q}=h|4P!Qd|M@mk`CrI^eh+GY04VZX z;N-{ihB3WJmUa(5{Xe@GC#CnW&Jz(45fKp)5fKp)pILMWOka;rl2wPm+W~-0hrr91 z43-@NFHeAFhrr7d0G@UTtXXsjO#1;pp=yV~>j7AF2)rJEMTfxqOF|t2spbVqa$7hK S+K!e00000EX>4Tx04R}tkv&MmKpe$iQ>9X>4i*$~$WWauh>AE$6^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|?BJy6A|?JWDYS_3;J6>}?mh0_0Yam~RI_UWP&La) z#baVNw<-o+;YS|^5ky#Grk+SIX5cx#?&0I>U6f~epZjz4DtVIuK9P8i>4rtTK|Hf* z>74h8!>lAJ#OK8023?T&k?XR{Z=8z`3p_JyWK#3QVPdh^!Ey()lA#h$6Gs$PqkJLj zvch?bvs$UK);;+PLwRi_&2^e1h+_!}Bq2gZ4P{hdAxf)8iis5M$2|PQjz38*nOtQs zax9<<6_Voz|AXJ%nuV!JHz^bYx?gPjV-yJN0?oQ@e;?a+^91le16NwxUu^)hpQP8@ zTI2}m-v%zO+nT%wTgn$H40005ZNkl9xVj&w4A}B2Q zvAKW&8FBAoi=b_`FtCk{TiV+vO&Y;QTdzd%uy>H1DGVsc63CQ0TN&2*$ebAxog>c= z(wxIgo_WvYq&P2#h=_=Yh=_=Y2tcnth_lAB#_J$2TT$NSyqo1+aM*4a-t?{Y`h)ne z-JUt0HG7Fi5Mqqs`s(uCSO3LA^7i_JI1C=*@pwG_guz3t z{{^b#U70m$%zdh&byg*BZULI+oaP8t8_@W)%q03ta{_-x^9eg|RrBT+;4J#aQuGBP zU^0fr8US(h8@QNT@Oi14cjm_M`RGUL_cOY=sLke=2|CG;pnFpbV=wz_p%%GOSn2wVr{6aII&+#?1bJEUxto6e(2z r*LntQlq!I0Jp(pMZ(2HomyhKiZ2wz0|4;#A00000NkvXXu0mjfjnuaa literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/cmo_turtle.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/cmo_turtle.rsi/meta.json new file mode 100644 index 00000000000..58b759095d7 --- /dev/null +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/cmo_turtle.rsi/meta.json @@ -0,0 +1,30 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Borrowed from QM turtleneck at https://github.com/space-wizards/space-station-14/tree/master/Resources/Textures/Clothing/Uniforms/Jumpsuit/qmturtle.rsi and modified by Hanzdegloker (github) for space station 14", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-INNERCLOTHING", + "directions": 4 + }, + { + "name": "equipped-INNERCLOTHING-monkey", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Nyanotrasen/Clothing/Uniforms/Jumpsuit/summer_security.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Nyanotrasen/Clothing/Uniforms/Jumpsuit/summer_security.rsi/equipped-INNERCLOTHING.png index 29212f6ca00c4fdef46023911d41d3ea45b16589..71aaaaafebe5c60b60fc461f27b378d1b0117818 100644 GIT binary patch delta 1116 zcmV-i1f%<=1LX*i7=H)`00020X>r~F00b;aL_t(|0qvU4N*qBD##>oXL{`Z`i0I8r z2$BboJVEYxwmd`bc>>83h~(l?i0mOm5m8*+^sn7-=rrR_SGzMB(gnNyXL{VN90xpzDs&pzJVxZl&M z`|e!RZ_%AI_S0xI1LI^o4#Pbzc7*z&FR|_0bZWxS9t`-~^>z2ggZ}bhUsqS14EX%; z(DeVjy)_$=J9+RC*#K5-6W6TxtK8Hjto-|(on{yYFzF8$7onsrVI1StUPc+?3yV^d z2Sfc<{85*ItbaU8S#{VI5T)wU!FA+lch_xCCNrx$N>5xqg&&Vmy#&A01Bmx8*Vh4q z_=AWxp`YsrT~Ehb z+vwMmAibCV5_}T@Dd-{0R4AUFQ~e`Ef<$AF>5uXaN~DYl6KRsi-j+57wZrcOWC zF{)1ihn1J8jwj#&Rw;f80Cs+UzET2eH8LGf7$AywwbOAq?P3CQl>ZB3Od$}vx9TcO z5|EW3VR4`8Du=+g+FQq01}X!UfyzK-pfXSysDBJp1}X!UfyzK-;FU69`YNnB=$wGs z>3IS5_gV6Vm@^3yzD$>#O)wL{{6;*KrX3hfScbDxglF_EsrRw!*n(i2 zb$@@*^i5E^KgXOG@GgJoLE{w&Rt)&3iHGpRCY?zze3~~A&=TJ>c?2GydY>GC0Tz=N zUW;AXCYT6FwXz={AC?GP*Q`X3qV4f!bJi2$d}x-6DF?KHG={WY?743l*d_wV!10{O zwu-~Jf2caxX~s`&?6T!qA%JqlVOsA3E`PngY&??(=qV5z&s!iy@v}aHVm-NaJ&M6= zJBik2<09Rr7a`ul*a2o!6r~3T2O%Wla{Kj{PE{UV zrX0Wx5=~z1mn!kT*c+{O6cIokkl=>I-OvJN90IXT7F*0AAmzB7Tu*&Nmn7fPi4SdS i#j6Zd1}X!ul7T4 zUS!fd3r}~2fGHk?JK%ZNOeX6)tJzv>K`5;)6-QNl+JjKNpHO&1Av*34wdQ(T)F|Y; z`VRjrm|~S~?|<;4{@a4+TRhnG4e(VMzPa@noWwI8T*d2!Lh(2WYr)HPX&_0NM}g0F zg|{3QjiYOVF_N&uEfm5#pb!&<9f%qf1_z7Np Date: Sun, 5 Jan 2025 20:47:03 +0000 Subject: [PATCH 02/12] Automatic Changelog Update (#1443) --- Resources/Changelog/Changelog.yml | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 93a9ca560af..daadc24edf4 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -9320,3 +9320,34 @@ Entries: id: 6641 time: '2025-01-05T19:45:57.0000000+00:00' url: https://github.com/Simple-Station/Einstein-Engines/pull/1438 +- author: The Den Contributors + changes: + - type: Fix + message: >- + Put actual prescription lenses in the prescription medhuds and sechuds + (by KyuPolaris) + - type: Add + message: >- + Added the CMO turtleneck and head mirror to the CMO loadouts. (by + sleepyyapril, KyuPolaris) + - type: Add + message: >- + Added an armored trenchcoat for the Captain. Enjoy your swag! (by + Rosycup) + - type: Fix + message: Fixed uneven pants leg on summer security uniforms. (by Rosycup) + - type: Add + message: >- + Added the Captain's Combat Gas Mask, for those more fond of close + encounters. (by Rosycup) + - type: Tweak + message: >- + Added the Captain's Trenchcoat to the other captain locker variants. (by + Rosycup) + - type: Fix + message: >- + Fixed they/them pronouns being displayed for it/its characters in the + character preview. (by Azzy) + id: 6642 + time: '2025-01-05T20:46:36.0000000+00:00' + url: https://github.com/Simple-Station/Einstein-Engines/pull/1443 From d02fc7716ce8ebf849128613d3fb53ccedf53170 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Sun, 5 Jan 2025 23:45:58 -0500 Subject: [PATCH 03/12] Update hardsuits.yml --- .../Entities/Clothing/OuterClothing/hardsuits.yml | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml index a9bb8f1dc77..c7642247802 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml @@ -44,6 +44,8 @@ lowPressureMultiplier: 1000 - type: TemperatureProtection coefficient: 0.001 + - type: FireProtection + reduction: 1 - type: ExplosionResistance damageCoefficient: 0.5 - type: Armor @@ -98,6 +100,10 @@ coefficient: 0.75 # 25% - type: GuideHelp guides: [ HephaestusIndustries ] + - type: TemperatureProtection + coefficient: 0.001 + - type: FireProtection + reduction: 0.8 #Spationaut Hardsuit - type: entity @@ -397,6 +403,10 @@ coefficient: 0.65 # 35% - type: GuideHelp guides: [ HephaestusIndustries ] + - type: TemperatureProtection + coefficient: 0.001 + - type: FireProtection + reduction: 1 #Chief Medical Officer's Hardsuit - type: entity @@ -622,7 +632,7 @@ - type: ExplosionResistance damageCoefficient: 0.2 - type: FireProtection - reduction: 0.8 # perfect protection like atmos firesuit for pyro tf2 ops + reduction: 1 # perfect protection like atmos firesuit for pyro tf2 ops - type: Armor modifiers: coefficients: From cb3ca2a3bfd9949b6c86e3922e229d0f97075427 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Sun, 5 Jan 2025 23:47:50 -0500 Subject: [PATCH 04/12] Update hardsuits.yml --- .../Entities/Clothing/OuterClothing/hardsuits.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml index c7642247802..4696e6d8e30 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml @@ -103,7 +103,7 @@ - type: TemperatureProtection coefficient: 0.001 - type: FireProtection - reduction: 0.8 + reduction: 1 #Spationaut Hardsuit - type: entity @@ -231,6 +231,8 @@ damageCoefficient: 0.2 - type: TemperatureProtection coefficient: 0.001 + - type: FireProtection + reduction: 1 - type: ToggleableClothing clothingPrototype: ClothingHeadHelmetHardsuitMaxim - type: GuideHelp @@ -900,6 +902,10 @@ clothingPrototype: ClothingHeadHelmetHardsuitERTEngineer - type: StaminaDamageResistance coefficient: 0.5 # 50% + - type: TemperatureProtection + coefficient: 0.001 + - type: FireProtection + reduction: 1 #ERT Medic Hardsuit - type: entity From 4d6081dec5179a4d34fc6a262e4d6118b1194b88 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Mon, 6 Jan 2025 20:31:17 -0500 Subject: [PATCH 05/12] I fucked up and need to move these, I'll revert them in a second --- .../Psionics/Abilities/AssayPowerSystem.cs | 116 ++++++++++++++++++ .../Actions/Events/AssayPowerActionEvent.cs | 29 +++++ Content.Shared/Psionics/Events.cs | 27 ++++ Resources/Locale/en-US/abilities/psionic.ftl | 3 + .../Locale/en-US/psionics/psionic-powers.ftl | 34 +++++ Resources/Prototypes/Actions/psionics.yml | 19 +++ .../Roles/Jobs/Epistemics/forensicmantis.yml | 1 + Resources/Prototypes/Psionics/psionics.yml | 27 ++++ .../Roles/Jobs/Civilian/librarian.yml | 1 + .../Interface/Actions/psionics.rsi/assay.png | Bin 0 -> 2351 bytes .../Interface/Actions/psionics.rsi/meta.json | 5 +- 11 files changed, 261 insertions(+), 1 deletion(-) create mode 100644 Content.Server/Abilities/Psionics/Abilities/AssayPowerSystem.cs create mode 100644 Content.Shared/Actions/Events/AssayPowerActionEvent.cs create mode 100644 Resources/Textures/Interface/Actions/psionics.rsi/assay.png diff --git a/Content.Server/Abilities/Psionics/Abilities/AssayPowerSystem.cs b/Content.Server/Abilities/Psionics/Abilities/AssayPowerSystem.cs new file mode 100644 index 00000000000..32b32c021b2 --- /dev/null +++ b/Content.Server/Abilities/Psionics/Abilities/AssayPowerSystem.cs @@ -0,0 +1,116 @@ +using Content.Server.Chat.Managers; +using Content.Shared.Abilities.Psionics; +using Content.Shared.Actions.Events; +using Content.Shared.Chat; +using Content.Shared.DoAfter; +using Content.Shared.Popups; +using Content.Shared.Psionics.Events; +using Robust.Server.Audio; +using Robust.Shared.Audio; +using Robust.Server.Player; +using Robust.Shared.Timing; +using Robust.Shared.Player; + +namespace Content.Server.Abilities.Psionics; + +public sealed class AssayPowerSystem : EntitySystem +{ + [Dependency] private readonly SharedPsionicAbilitiesSystem _psionics = default!; + [Dependency] private readonly IGameTiming _gameTiming = default!; + [Dependency] private readonly SharedDoAfterSystem _doAfterSystem = default!; + [Dependency] private readonly AudioSystem _audioSystem = default!; + [Dependency] private readonly SharedPopupSystem _popups = default!; + [Dependency] private readonly IChatManager _chatManager = default!; + [Dependency] private readonly IPlayerManager _playerManager = default!; + + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(OnPowerUsed); + SubscribeLocalEvent(OnDoAfter); + } + + private void OnPowerUsed(EntityUid uid, PsionicComponent psionic, AssayPowerActionEvent args) + { + if (!_psionics.OnAttemptPowerUse(args.Performer, "assay") + || psionic.DoAfter is not null) + return; + + var ev = new AssayDoAfterEvent(_gameTiming.CurTime, args.FontSize, args.FontColor); + _doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, args.Performer, args.UseDelay - TimeSpan.FromSeconds(psionic.CurrentAmplification), ev, args.Performer, args.Target, args.Performer) + { + BlockDuplicate = true, + BreakOnMove = true, + BreakOnDamage = true, + }, out var doAfterId); + psionic.DoAfter = doAfterId; + + _popups.PopupEntity(Loc.GetString(args.PopupTarget, ("entity", args.Target)), args.Performer, PopupType.Medium); + + _audioSystem.PlayPvs(args.SoundUse, args.Performer, AudioParams.Default.WithVolume(8f).WithMaxDistance(1.5f).WithRolloffFactor(3.5f)); + _psionics.LogPowerUsed(args.Performer, args.PowerName, args.MinGlimmer, args.MaxGlimmer); + args.Handled = true; + } + + private void OnDoAfter(EntityUid uid, PsionicComponent userPsionic, AssayDoAfterEvent args) + { + if (userPsionic is null) + return; + userPsionic.DoAfter = null; + + var user = uid; + var target = args.Target; + if (target == null || args.Cancelled + || !_playerManager.TryGetSessionByEntity(user, out var session)) + return; + + if (target == user) + { + var userAmp = MathF.Round(userPsionic.CurrentAmplification, 2); + var userDamp = MathF.Round(userPsionic.CurrentDampening, 2); + var userPotentia = MathF.Round(userPsionic.Potentia, 2); + var userFeedback = $"[font size={args.FontSize}][color={args.FontColor}]{Loc.GetString("assay-body", ("entity", target), ("amplification", userAmp), ("dampening", userDamp), ("potentia", userPotentia))}[/color][/font]"; + SendDescToChat(userFeedback, session); + + var assaySelf = Loc.GetString("assay-self", ("entity", target)); + _popups.PopupEntity(assaySelf, user, user, PopupType.LargeCaution); + + var assaySelfFeedback = $"[font size={args.FontSize}][color={args.FontColor}]{assaySelf}[/color][/font]"; + SendDescToChat(assaySelfFeedback, session); + return; + } + + if (!TryComp(target, out var targetPsionic)) + { + var noPowers = Loc.GetString("no-powers", ("entity", target)); + _popups.PopupEntity(noPowers, user, user, PopupType.LargeCaution); + + var noPowersFeedback = $"[font size={args.FontSize}][color={args.FontColor}]{noPowers}[/color][/font]"; + SendDescToChat(noPowersFeedback, session); + return; + } + + var targetAmp = MathF.Round(targetPsionic.CurrentAmplification, 2); + var targetDamp = MathF.Round(targetPsionic.CurrentDampening, 2); + var targetPotentia = MathF.Round(targetPsionic.Potentia, 2); + var message = $"[font size={args.FontSize}][color={args.FontColor}]{Loc.GetString("assay-body", ("entity", target), ("amplification", targetAmp), ("dampening", targetDamp), ("potentia", targetPotentia))}[/color][/font]"; + SendDescToChat(message, session); + + foreach (var feedback in targetPsionic.AssayFeedback) + { + var feedbackMessage = $"[font size={args.FontSize}][color={args.FontColor}]{Loc.GetString(feedback, ("entity", target))}[/color][/font]"; + SendDescToChat(feedbackMessage, session); + } + } + + private void SendDescToChat(string feedbackMessage, ICommonSession session) + { + _chatManager.ChatMessageToOne( + ChatChannel.Emotes, + feedbackMessage, + feedbackMessage, + EntityUid.Invalid, + false, + session.Channel); + } +} diff --git a/Content.Shared/Actions/Events/AssayPowerActionEvent.cs b/Content.Shared/Actions/Events/AssayPowerActionEvent.cs new file mode 100644 index 00000000000..debd19615fe --- /dev/null +++ b/Content.Shared/Actions/Events/AssayPowerActionEvent.cs @@ -0,0 +1,29 @@ +using Robust.Shared.Audio; + +namespace Content.Shared.Actions.Events; +public sealed partial class AssayPowerActionEvent : EntityTargetActionEvent +{ + [DataField] + public TimeSpan UseDelay = TimeSpan.FromSeconds(8f); + + [DataField] + public SoundSpecifier SoundUse = new SoundPathSpecifier("/Audio/Psionics/heartbeat_fast.ogg"); + + [DataField] + public string PopupTarget = "assay-begin"; + + [DataField] + public int FontSize = 10; + + [DataField] + public Color FontColor = Color.White; + + [DataField] + public int MinGlimmer = 3; + + [DataField] + public int MaxGlimmer = 6; + + [DataField] + public string PowerName = "assay"; +} diff --git a/Content.Shared/Psionics/Events.cs b/Content.Shared/Psionics/Events.cs index 68ec3097e7d..9c59332e229 100644 --- a/Content.Shared/Psionics/Events.cs +++ b/Content.Shared/Psionics/Events.cs @@ -1,6 +1,7 @@ using Robust.Shared.Serialization; using Content.Shared.Damage; using Content.Shared.DoAfter; +using Content.Shared.Abilities.Psionics; namespace Content.Shared.Psionics.Events; @@ -67,3 +68,29 @@ public PsionicHealOtherDoAfterEvent(TimeSpan startedAt) public override DoAfterEvent Clone() => this; } + +[Serializable, NetSerializable] +public sealed partial class AssayDoAfterEvent : DoAfterEvent +{ + [DataField(required: true)] + public TimeSpan StartedAt; + + [DataField] + public int FontSize = 10; + + [DataField] + public Color FontColor = Color.White; + + private AssayDoAfterEvent() + { + } + + public AssayDoAfterEvent(TimeSpan startedAt, int fontSize, Color fontColor) + { + StartedAt = startedAt; + FontSize = fontSize; + FontColor = fontColor; + } + + public override DoAfterEvent Clone() => this; +} diff --git a/Resources/Locale/en-US/abilities/psionic.ftl b/Resources/Locale/en-US/abilities/psionic.ftl index d0e8db72f8c..c8eb9635946 100644 --- a/Resources/Locale/en-US/abilities/psionic.ftl +++ b/Resources/Locale/en-US/abilities/psionic.ftl @@ -68,3 +68,6 @@ action-description-psychokinesis = Bend the fabric of space to instantly move ac action-name-rf-sensitivity = Toggle RF Sensitivity action-desc-rf-sensitivity = Toggle your ability to interpret radio waves on and off. + +action-name-assay = Assay +action-description-assay = Probe an entity at close range to glean metaphorical information about any powers they may have diff --git a/Resources/Locale/en-US/psionics/psionic-powers.ftl b/Resources/Locale/en-US/psionics/psionic-powers.ftl index ab2a991e06f..e3e097e4339 100644 --- a/Resources/Locale/en-US/psionics/psionic-powers.ftl +++ b/Resources/Locale/en-US/psionics/psionic-powers.ftl @@ -183,3 +183,37 @@ ghost-role-information-familiar-description = An interdimensional creature bound ghost-role-information-familiar-rules = Obey the one who summoned you. Do not act against the interests of your Master. You will die for your Master if it is necessary. +# Assay Power +assay-begin = The air around {CAPITALIZE($entity)} begins to shimmer faintly +assay-self = I AM. +no-powers = {CAPITALIZE($entity)} will never awaken from the dream in this life +assay-body = + MY WILL CAST UPON {CAPITALIZE($entity)} DIVINES THESE + Amplification: {$amplification} + Dampening: {$dampening} + Potentia: {$potentia} +assay-power-initialization-feedback = + I descend into the dreamlight once more, there I drink more fully of the cup of knowledge. The touch of the noosphere upon others becomes known to me, + I can cast my will upon them, divining the inner nature of others. +assay-power-metapsionic-feedback = {CAPITALIZE($entity)} bears a spark of the divine's judgment, they have drunk deeply of the cup of knowledge. + +# Entity Specific Feedback Messages +ifrit-feedback = A spirit of Gehenna, bound by the will of a powerful psychic +prober-feedback = A mirror into the end of time, the screaming of dead stars emanates from this machine +drain-feedback = A mirror into a realm where the stars sit still forever, a cold and distant malevolence stares back +sophic-grammateus-feedback = SEEKER, YOU NEED ONLY ASK FOR MY WISDOM. +oracle-feedback = WHY DO YOU BOTHER ME SEEKER? HAVE I NOT MADE MY DESIRES CLEAR? +orecrab-feedback = Heralds of the Lord of Earth, summoned to this realm from Grome's kingdom +reagent-slime-feedback = Heralds of the Lord of Water, summoned to this realm from Straasha's kingdom. +flesh-golem-feedback = Abominations pulled from dead realms, twisted amalgamations of those fallen to the influence of primordial Chaos +glimmer-mite-feedback = A semi-corporeal parasite native to the dreamlight, its presence here brings forth the screams of dead stars. +anomaly-pyroclastic-feedback = A small mirror to the plane of Gehenna, truth lies within the Secret of Fire +anomaly-gravity-feedback = Violet and crimson, blue of blue, impossibly dark yet greater than the whitest of white, a black star shines weakly at the end of it all +anomaly-electricity-feedback = A mirror to a realm tiled by silicon, the lifeblood of artificial thought flows from it +anomaly-flesh-feedback = From within it comes the suffering of damned mutants howling for all eternity +anomaly-bluespace-feedback = A bridge of dreamlight, crossing into the space between realms of the multiverse +anomaly-ice-feedback = Walls of blackened stone, ruin and famine wait for those who fall within +anomaly-rock-feedback = A vast old oak dwells high over a plane of stone, it turns to stare back +anomaly-flora-feedback = Musical notes drift around you, playfully beckoning, they wish to feast +anomaly-liquid-feedback = A realm of twisting currents. Its placidity is a lie. The eyes within stare hungrilly +anomaly-shadow-feedback = At the end of time, when all suns have set forever, there amidst the void stands a monument to past sins. diff --git a/Resources/Prototypes/Actions/psionics.yml b/Resources/Prototypes/Actions/psionics.yml index c6d9e17c2ac..97d19aae5f6 100644 --- a/Resources/Prototypes/Actions/psionics.yml +++ b/Resources/Prototypes/Actions/psionics.yml @@ -367,3 +367,22 @@ followMaster: true minGlimmer: 5 maxGlimmer: 10 + +- type: entity + id: ActionAssay + name: action-name-assay + description: action-description-assay + categories: [ HideSpawnMenu ] + components: + - type: EntityTargetAction + icon: { sprite: Interface/Actions/psionics.rsi, state: assay } + useDelay: 45 + checkCanAccess: false + range: 2 + itemIconStyle: BigAction + canTargetSelf: true + blacklist: + components: + - PsionicInsulation + - Mindbroken + event: !type:AssayPowerActionEvent diff --git a/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Epistemics/forensicmantis.yml b/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Epistemics/forensicmantis.yml index f7a31205706..961bbf05fd0 100644 --- a/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Epistemics/forensicmantis.yml +++ b/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Epistemics/forensicmantis.yml @@ -39,6 +39,7 @@ powersToAdd: - MetapsionicPower - TelepathyPower + - AssayPower - type: startingGear id: ForensicMantisGear diff --git a/Resources/Prototypes/Psionics/psionics.yml b/Resources/Prototypes/Psionics/psionics.yml index 548881e61f7..b1e9d783a8e 100644 --- a/Resources/Prototypes/Psionics/psionics.yml +++ b/Resources/Prototypes/Psionics/psionics.yml @@ -170,6 +170,9 @@ - !type:AddPsionicStatSources amplificationModifier: 0.5 dampeningModifier: 0.5 + - !type:PsionicAddAvailablePowers + powerPrototype: AssayPower + weight: 0.1 removalFunctions: - !type:RemovePsionicActions - !type:RemovePsionicPowerComponents @@ -178,6 +181,8 @@ - !type:RemovePsionicStatSources - !type:RemoveAssayFeedback assayFeedback: metapsionic-power-metapsionic-feedback + - !type:PsionicRemoveAvailablePowers + powerPrototype: AssayPower - type: psionicPower id: PsionicRegenerationPower @@ -661,3 +666,25 @@ - !type:RemovePsionicPsychognomicDescriptors psychognomicDescriptor: calling powerSlotCost: 0 + +- type: psionicPower + id: AssayPower + name: Assay + powerCategories: + - Mentalic + initializeFunctions: + - !type:AddPsionicActions + actions: + - ActionAssay + - !type:PsionicFeedbackPopup + - !type:PsionicFeedbackSelfChat + feedbackMessage: assay-power-initialization-feedback + - !type:AddPsionicAssayFeedback + assayFeedback: assay-power-metapsionic-feedback + - !type:AddPsionicStatSources + dampeningModifier: 0.5 + removalFunctions: + - !type:RemovePsionicActions + - !type:RemovePsionicStatSources + - !type:RemoveAssayFeedback + assayFeedback: assay-power-metapsionic-feedback diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/librarian.yml b/Resources/Prototypes/Roles/Jobs/Civilian/librarian.yml index 3468d10f278..e370d1c3af9 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/librarian.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/librarian.yml @@ -37,6 +37,7 @@ powersToAdd: - XenoglossyPower - TelepathyPower + - AssayPower - type: startingGear diff --git a/Resources/Textures/Interface/Actions/psionics.rsi/assay.png b/Resources/Textures/Interface/Actions/psionics.rsi/assay.png new file mode 100644 index 0000000000000000000000000000000000000000..f245ca9e5e34e1e240ec8669d544d25a7c480053 GIT binary patch literal 2351 zcmV+~3DEY5P)9?Ncm1Y5zzB48of z_$vGd+6uM`f}jW@me#%+k@Zd@BuJcP_I{k1bD22<_Fz`anJqrZ<%>or;CC-Ym)*`6 z+8CyfL3}aI)aS!<5&j*Yci2?D^{QU~?`t|b6G>A8Tf6X-rW-}!8R6i1QCGYz+^c0` z3E@NGaYGI$e5Lewjh_{#Yy7U*h=gXru6nxD4IFP^Eo0<_$Amq(Y)Sh)kGe@$GQSv> zIv{fhlMn&?xQSC@jVwjHQuC5obDyv3Tc98wP5wG%3~{8%h<9Anl5|ZO^grk^BUY6hGVQ4pyq-dL6nbu;W2KhW?>Z;<5ZRC?x`w@d7?u65)gMjJXf8bEHof!!9}{TD5aGuh*q*{Nr^-k z32M}h@jBm}^WFS+?wm9K+;h&g=p8t@=P~m?zW*`LBuT&Y5$GfEe@0-SZsni)@gtW- zGr+S=rpx0m)+%CY06YpxfkVn_mCKd0EI>nA2_oy|DXsV!M`-43V`k) zF>`XT_3rxHyB*(uKlO4@zhDJWH6S!4F%y>-kcHVtTTEZOF{Pr#1{a^$YyRv^p#i;RBi`%lJN#tlR})I-mtP9 zxpct(7KH=at-rO;DlW@Q7bcR)cmEEyMVl)}cWl$f*Aw=4eft;NPAZR_pveJI9w6fk z48a%|6o)Vn441|mP8`0krN6w-^8(N$eeeQL@+aUj2WY)1$^(iRxE@jD4c|WZM-y%@ z%fiY;^2n!mb;v_7p}cGHJSE`?S`P>U5JOB_o&v*4Zdfo0o|*Y6dFA@O_WSMaUlZ9A zkQQPcAx1z$Ax2Obwjr;mY9!d9Wmt|1!Cj%K%=%J!SMe*!j#WOko7INE zP>r*>0VBB0*03PmmkPo&Hn(<+<%ex7OT{5P+hiUT^wgqoFyC_9M|%J*7aF)2i$Nya zTR?dzbo}N+t?mw1zxeY_qx^vcAjxiU>A@c?V9f3sYii|kX`$=Lqi;uAh#`)u$OOW= zG3z5D>*G6O9%b<0y8Yd~HQBo7Gk#@Wz;g&}<`l@p`jlC8jb1NMdjOd{zx<|U^2x$` z-qD+kZ(0?C;U0=D&wXXa0M{&y#?qwuJ8s7W7zY5Dg_XzbH@3mOw61T&2->b(FC>@p z4BPfT4}jpjo7N;XS`7kzKKp0(n!kyO_l;z1bTs*XJRQWK3?BTeH6Q{Ajim>ymuzlr zC1W$Arp8`-3q+C*p;6lTx7TwthvlIUt`09ydjKs9%d^nsAe0mcVDKC2rXe$I#{Fx_ zcaPujS_U3)?)U}c35Sx#>QvSyb!pN#Gm8*Pm6bfKcV%)hH1|)RRn1`40D!66eK9s+ z^`}>d_kc;-`}Dkt&hD)t>-s3?=09!&#?3KBJS6>4zHrgcOMHig z#(Iy5;ndn`5_C(f@+#!hO3VWtO?&{TVkd%mTUBOxyu=!ge8&B46FxPT4o{BC0c8ba z4x!RaoU-eSjp4E~MNfyzGQ88;_W}5~E#eNSdM!^+JpdCU&Lg-MfB_BeIrP=6CRGVi z&j64sMgRfBT^8JPh#R}WS{96+^a4~~4w)OPW&}8rijS#pI?Uah38GD1iy#s-p9fSr z0FsuMOJF|BF&yx%CQs_N!EC^=H4O?$Tp~da|(B5Ea52!-<&TKm>g!FQoFJY;R)Q$|Wa3F@j1Em>3BH^AAsrP}Y$3K~psu!pbmQ3WRw& z1dVw<=*ZzW)VsHE;iYM__qUxchsy-00fcVP#CYuLqHXrUGmCaFkq4%Hr^bBrgC5{E zBD#5JbTmr%MuIVCgxrw8vs7Lq1M8>(knRMO!4RmQFxHPLAw}6+XlTM4z#kVak9Hc@ zj|RXcOb}=djlgx(0SMhH4|&ucK;d0ah#BS8vE(h2bByJwk17eemIEU)&VJSB`Q7 z#_}l*K#1X;{%><3`TO7d2=o#7ZzJ#z8IV{m+3|1w0000EWmrjOO-%qQ0000800000 V0002eQ Date: Mon, 6 Jan 2025 20:31:37 -0500 Subject: [PATCH 06/12] Revert "Update hardsuits.yml" This reverts commit cb3ca2a3bfd9949b6c86e3922e229d0f97075427. --- .../Entities/Clothing/OuterClothing/hardsuits.yml | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml index 4696e6d8e30..c7642247802 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml @@ -103,7 +103,7 @@ - type: TemperatureProtection coefficient: 0.001 - type: FireProtection - reduction: 1 + reduction: 0.8 #Spationaut Hardsuit - type: entity @@ -231,8 +231,6 @@ damageCoefficient: 0.2 - type: TemperatureProtection coefficient: 0.001 - - type: FireProtection - reduction: 1 - type: ToggleableClothing clothingPrototype: ClothingHeadHelmetHardsuitMaxim - type: GuideHelp @@ -902,10 +900,6 @@ clothingPrototype: ClothingHeadHelmetHardsuitERTEngineer - type: StaminaDamageResistance coefficient: 0.5 # 50% - - type: TemperatureProtection - coefficient: 0.001 - - type: FireProtection - reduction: 1 #ERT Medic Hardsuit - type: entity From baa0d538b653af417bfc830d3246a2856233aa76 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Mon, 6 Jan 2025 20:31:41 -0500 Subject: [PATCH 07/12] Revert "Update hardsuits.yml" This reverts commit d02fc7716ce8ebf849128613d3fb53ccedf53170. --- .../Entities/Clothing/OuterClothing/hardsuits.yml | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml index c7642247802..a9bb8f1dc77 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml @@ -44,8 +44,6 @@ lowPressureMultiplier: 1000 - type: TemperatureProtection coefficient: 0.001 - - type: FireProtection - reduction: 1 - type: ExplosionResistance damageCoefficient: 0.5 - type: Armor @@ -100,10 +98,6 @@ coefficient: 0.75 # 25% - type: GuideHelp guides: [ HephaestusIndustries ] - - type: TemperatureProtection - coefficient: 0.001 - - type: FireProtection - reduction: 0.8 #Spationaut Hardsuit - type: entity @@ -403,10 +397,6 @@ coefficient: 0.65 # 35% - type: GuideHelp guides: [ HephaestusIndustries ] - - type: TemperatureProtection - coefficient: 0.001 - - type: FireProtection - reduction: 1 #Chief Medical Officer's Hardsuit - type: entity @@ -632,7 +622,7 @@ - type: ExplosionResistance damageCoefficient: 0.2 - type: FireProtection - reduction: 1 # perfect protection like atmos firesuit for pyro tf2 ops + reduction: 0.8 # perfect protection like atmos firesuit for pyro tf2 ops - type: Armor modifiers: coefficients: From d9dbd8083a576b08a8286d5cd9ab6d20a44b88d3 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Mon, 6 Jan 2025 20:56:38 -0500 Subject: [PATCH 08/12] Bit of chat sanitizing --- .../Psionics/Abilities/AssayPowerSystem.cs | 18 ++++++++++-------- .../Actions/Events/AssayPowerActionEvent.cs | 4 ++-- Content.Shared/Psionics/Events.cs | 6 +++--- .../Locale/en-US/psionics/psionic-powers.ftl | 6 +----- 4 files changed, 16 insertions(+), 18 deletions(-) diff --git a/Content.Server/Abilities/Psionics/Abilities/AssayPowerSystem.cs b/Content.Server/Abilities/Psionics/Abilities/AssayPowerSystem.cs index 32b32c021b2..29a11b5951b 100644 --- a/Content.Server/Abilities/Psionics/Abilities/AssayPowerSystem.cs +++ b/Content.Server/Abilities/Psionics/Abilities/AssayPowerSystem.cs @@ -66,10 +66,11 @@ private void OnDoAfter(EntityUid uid, PsionicComponent userPsionic, AssayDoAfter if (target == user) { - var userAmp = MathF.Round(userPsionic.CurrentAmplification, 2); - var userDamp = MathF.Round(userPsionic.CurrentDampening, 2); - var userPotentia = MathF.Round(userPsionic.Potentia, 2); - var userFeedback = $"[font size={args.FontSize}][color={args.FontColor}]{Loc.GetString("assay-body", ("entity", target), ("amplification", userAmp), ("dampening", userDamp), ("potentia", userPotentia))}[/color][/font]"; + var userAmp = MathF.Round(userPsionic.CurrentAmplification, 2).ToString("#.##"); + var userDamp = MathF.Round(userPsionic.CurrentDampening, 2).ToString("#.##"); + var userPotentia = MathF.Round(userPsionic.Potentia, 2).ToString("#.##"); + var assayBody = Loc.GetString("assay-body", ("entity", target), ("amplification", userAmp), ("dampening", userDamp), ("potentia", userPotentia)); + var userFeedback = $"[font size={args.FontSize}][color={args.FontColor}]{assayBody}[/color][/font]"; SendDescToChat(userFeedback, session); var assaySelf = Loc.GetString("assay-self", ("entity", target)); @@ -90,15 +91,16 @@ private void OnDoAfter(EntityUid uid, PsionicComponent userPsionic, AssayDoAfter return; } - var targetAmp = MathF.Round(targetPsionic.CurrentAmplification, 2); - var targetDamp = MathF.Round(targetPsionic.CurrentDampening, 2); - var targetPotentia = MathF.Round(targetPsionic.Potentia, 2); + var targetAmp = MathF.Round(targetPsionic.CurrentAmplification, 2).ToString("#.##"); + var targetDamp = MathF.Round(targetPsionic.CurrentDampening, 2).ToString("#.##"); + var targetPotentia = MathF.Round(targetPsionic.Potentia, 2).ToString("#.##"); var message = $"[font size={args.FontSize}][color={args.FontColor}]{Loc.GetString("assay-body", ("entity", target), ("amplification", targetAmp), ("dampening", targetDamp), ("potentia", targetPotentia))}[/color][/font]"; SendDescToChat(message, session); foreach (var feedback in targetPsionic.AssayFeedback) { - var feedbackMessage = $"[font size={args.FontSize}][color={args.FontColor}]{Loc.GetString(feedback, ("entity", target))}[/color][/font]"; + var locale = Loc.GetString(feedback, ("entity", target)); + var feedbackMessage = $"[font size={args.FontSize}][color={args.FontColor}]{locale}[/color][/font]"; SendDescToChat(feedbackMessage, session); } } diff --git a/Content.Shared/Actions/Events/AssayPowerActionEvent.cs b/Content.Shared/Actions/Events/AssayPowerActionEvent.cs index debd19615fe..01448241aa4 100644 --- a/Content.Shared/Actions/Events/AssayPowerActionEvent.cs +++ b/Content.Shared/Actions/Events/AssayPowerActionEvent.cs @@ -13,10 +13,10 @@ public sealed partial class AssayPowerActionEvent : EntityTargetActionEvent public string PopupTarget = "assay-begin"; [DataField] - public int FontSize = 10; + public int FontSize = 12; [DataField] - public Color FontColor = Color.White; + public string FontColor = "#8A00C2"; [DataField] public int MinGlimmer = 3; diff --git a/Content.Shared/Psionics/Events.cs b/Content.Shared/Psionics/Events.cs index 9c59332e229..6705e940cd5 100644 --- a/Content.Shared/Psionics/Events.cs +++ b/Content.Shared/Psionics/Events.cs @@ -76,16 +76,16 @@ public sealed partial class AssayDoAfterEvent : DoAfterEvent public TimeSpan StartedAt; [DataField] - public int FontSize = 10; + public int FontSize = 12; [DataField] - public Color FontColor = Color.White; + public string FontColor = "#8A00C2"; private AssayDoAfterEvent() { } - public AssayDoAfterEvent(TimeSpan startedAt, int fontSize, Color fontColor) + public AssayDoAfterEvent(TimeSpan startedAt, int fontSize, string fontColor) { StartedAt = startedAt; FontSize = fontSize; diff --git a/Resources/Locale/en-US/psionics/psionic-powers.ftl b/Resources/Locale/en-US/psionics/psionic-powers.ftl index e3e097e4339..f7d225f58fc 100644 --- a/Resources/Locale/en-US/psionics/psionic-powers.ftl +++ b/Resources/Locale/en-US/psionics/psionic-powers.ftl @@ -187,11 +187,7 @@ ghost-role-information-familiar-rules = assay-begin = The air around {CAPITALIZE($entity)} begins to shimmer faintly assay-self = I AM. no-powers = {CAPITALIZE($entity)} will never awaken from the dream in this life -assay-body = - MY WILL CAST UPON {CAPITALIZE($entity)} DIVINES THESE - Amplification: {$amplification} - Dampening: {$dampening} - Potentia: {$potentia} +assay-body = "My will cast upon {CAPITALIZE($entity)} divines these. Amplification: {$amplification} Dampening: {$dampening} Potentia: {$potentia}" assay-power-initialization-feedback = I descend into the dreamlight once more, there I drink more fully of the cup of knowledge. The touch of the noosphere upon others becomes known to me, I can cast my will upon them, divining the inner nature of others. From fd9454ba5c6f42c0ccefe38ebb6cc4116c030bc9 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Mon, 6 Jan 2025 20:59:13 -0500 Subject: [PATCH 09/12] Update librarian.yml --- Resources/Prototypes/Roles/Jobs/Civilian/librarian.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/librarian.yml b/Resources/Prototypes/Roles/Jobs/Civilian/librarian.yml index e370d1c3af9..3468d10f278 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/librarian.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/librarian.yml @@ -37,7 +37,6 @@ powersToAdd: - XenoglossyPower - TelepathyPower - - AssayPower - type: startingGear From 5a4c2aa95fd8fa29b891f149d00c4c7f26eb1e81 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Fri, 10 Jan 2025 18:50:33 -0500 Subject: [PATCH 10/12] Maintainer feedback time. --- .../Psionics/Abilities/AssayPowerSystem.cs | 62 +++++++++++++------ .../Actions/Events/AssayPowerActionEvent.cs | 1 + 2 files changed, 43 insertions(+), 20 deletions(-) diff --git a/Content.Server/Abilities/Psionics/Abilities/AssayPowerSystem.cs b/Content.Server/Abilities/Psionics/Abilities/AssayPowerSystem.cs index 29a11b5951b..c50f95c1428 100644 --- a/Content.Server/Abilities/Psionics/Abilities/AssayPowerSystem.cs +++ b/Content.Server/Abilities/Psionics/Abilities/AssayPowerSystem.cs @@ -30,6 +30,9 @@ public override void Initialize() SubscribeLocalEvent(OnDoAfter); } + /// + /// This power activates when scanning any entity, displaying to the player's chat window a variety of psionic related statistics about the target. + /// private void OnPowerUsed(EntityUid uid, PsionicComponent psionic, AssayPowerActionEvent args) { if (!_psionics.OnAttemptPowerUse(args.Performer, "assay") @@ -52,11 +55,14 @@ private void OnPowerUsed(EntityUid uid, PsionicComponent psionic, AssayPowerActi args.Handled = true; } - private void OnDoAfter(EntityUid uid, PsionicComponent userPsionic, AssayDoAfterEvent args) + /// + /// Assuming the DoAfter wasn't canceled, the user wasn't mindbroken, and the target still exists, prepare the scan results! + /// + private void OnDoAfter(EntityUid uid, PsionicComponent component, AssayDoAfterEvent args) { - if (userPsionic is null) + if (component is null) return; - userPsionic.DoAfter = null; + component.DoAfter = null; var user = uid; var target = args.Target; @@ -64,42 +70,58 @@ private void OnDoAfter(EntityUid uid, PsionicComponent userPsionic, AssayDoAfter || !_playerManager.TryGetSessionByEntity(user, out var session)) return; - if (target == user) - { - var userAmp = MathF.Round(userPsionic.CurrentAmplification, 2).ToString("#.##"); - var userDamp = MathF.Round(userPsionic.CurrentDampening, 2).ToString("#.##"); - var userPotentia = MathF.Round(userPsionic.Potentia, 2).ToString("#.##"); - var assayBody = Loc.GetString("assay-body", ("entity", target), ("amplification", userAmp), ("dampening", userDamp), ("potentia", userPotentia)); - var userFeedback = $"[font size={args.FontSize}][color={args.FontColor}]{assayBody}[/color][/font]"; - SendDescToChat(userFeedback, session); - - var assaySelf = Loc.GetString("assay-self", ("entity", target)); - _popups.PopupEntity(assaySelf, user, user, PopupType.LargeCaution); - - var assaySelfFeedback = $"[font size={args.FontSize}][color={args.FontColor}]{assaySelf}[/color][/font]"; - SendDescToChat(assaySelfFeedback, session); + if (InspectSelf(uid, args, session)) return; - } if (!TryComp(target, out var targetPsionic)) { var noPowers = Loc.GetString("no-powers", ("entity", target)); _popups.PopupEntity(noPowers, user, user, PopupType.LargeCaution); + // Incredibly spooky message for non-psychic targets. var noPowersFeedback = $"[font size={args.FontSize}][color={args.FontColor}]{noPowers}[/color][/font]"; SendDescToChat(noPowersFeedback, session); return; } + InspectOther(targetPsionic, args, session); + } + + /// + /// This is a special use-case for scanning yourself with the power. The player receives a unique feedback message if they do so. + /// It however displays significantly less information when doing so. Consider this an intriguing easter egg. + /// + private bool InspectSelf(EntityUid uid, AssayDoAfterEvent args, ICommonSession session) + { + if (args.Target == args.User) + return false; + + var user = uid; + var target = args.Target; + + var assaySelf = Loc.GetString("assay-self", ("entity", target!.Value)); + _popups.PopupEntity(assaySelf, user, user, PopupType.LargeCaution); + + var assaySelfFeedback = $"[font size=20][color=#ff0000]{assaySelf}[/color][/font]"; + SendDescToChat(assaySelfFeedback, session); + return true; + } + + /// + /// If the target turns out to be a psychic, display their feedback messages in chat. + /// + private void InspectOther(PsionicComponent targetPsionic, AssayDoAfterEvent args, ICommonSession session) + { + var target = args.Target; var targetAmp = MathF.Round(targetPsionic.CurrentAmplification, 2).ToString("#.##"); var targetDamp = MathF.Round(targetPsionic.CurrentDampening, 2).ToString("#.##"); var targetPotentia = MathF.Round(targetPsionic.Potentia, 2).ToString("#.##"); - var message = $"[font size={args.FontSize}][color={args.FontColor}]{Loc.GetString("assay-body", ("entity", target), ("amplification", targetAmp), ("dampening", targetDamp), ("potentia", targetPotentia))}[/color][/font]"; + var message = $"[font size={args.FontSize}][color={args.FontColor}]{Loc.GetString("assay-body", ("entity", target!.Value), ("amplification", targetAmp), ("dampening", targetDamp), ("potentia", targetPotentia))}[/color][/font]"; SendDescToChat(message, session); foreach (var feedback in targetPsionic.AssayFeedback) { - var locale = Loc.GetString(feedback, ("entity", target)); + var locale = Loc.GetString(feedback, ("entity", target!.Value)); var feedbackMessage = $"[font size={args.FontSize}][color={args.FontColor}]{locale}[/color][/font]"; SendDescToChat(feedbackMessage, session); } diff --git a/Content.Shared/Actions/Events/AssayPowerActionEvent.cs b/Content.Shared/Actions/Events/AssayPowerActionEvent.cs index 01448241aa4..dc25d343313 100644 --- a/Content.Shared/Actions/Events/AssayPowerActionEvent.cs +++ b/Content.Shared/Actions/Events/AssayPowerActionEvent.cs @@ -1,6 +1,7 @@ using Robust.Shared.Audio; namespace Content.Shared.Actions.Events; + public sealed partial class AssayPowerActionEvent : EntityTargetActionEvent { [DataField] From 23dacc1e0efb781c5a9e7189e427772cc5217bc1 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Fri, 10 Jan 2025 18:55:44 -0500 Subject: [PATCH 11/12] Made a smol logic error --- Content.Server/Abilities/Psionics/Abilities/AssayPowerSystem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Server/Abilities/Psionics/Abilities/AssayPowerSystem.cs b/Content.Server/Abilities/Psionics/Abilities/AssayPowerSystem.cs index c50f95c1428..4fe08f303ce 100644 --- a/Content.Server/Abilities/Psionics/Abilities/AssayPowerSystem.cs +++ b/Content.Server/Abilities/Psionics/Abilities/AssayPowerSystem.cs @@ -93,7 +93,7 @@ private void OnDoAfter(EntityUid uid, PsionicComponent component, AssayDoAfterEv /// private bool InspectSelf(EntityUid uid, AssayDoAfterEvent args, ICommonSession session) { - if (args.Target == args.User) + if (args.Target != args.User) return false; var user = uid; From 94f15558897d9d6de112d03bd88ddb93e2b4de6d Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Fri, 10 Jan 2025 19:07:48 -0500 Subject: [PATCH 12/12] Adding assay feedback to things that lacked it --- .../DeltaV/Entities/Mobs/NPCs/familiars.yml | 2 + .../Entities/Mobs/NPCs/elemental.yml | 7 +++ .../Prototypes/Entities/Mobs/NPCs/flesh.yml | 5 ++ .../Entities/Mobs/NPCs/glimmer_creatures.yml | 4 ++ .../Structures/Specific/Anomaly/anomalies.yml | 51 +++++++++++++++++++ .../Entities/Structures/Specific/oracle.yml | 2 + .../Structures/Research/glimmer_prober.yml | 4 ++ .../Structures/Research/sophicscribe.yml | 2 + 8 files changed, 77 insertions(+) diff --git a/Resources/Prototypes/DeltaV/Entities/Mobs/NPCs/familiars.yml b/Resources/Prototypes/DeltaV/Entities/Mobs/NPCs/familiars.yml index 12b5f7f2007..42c12b1fd64 100644 --- a/Resources/Prototypes/DeltaV/Entities/Mobs/NPCs/familiars.yml +++ b/Resources/Prototypes/DeltaV/Entities/Mobs/NPCs/familiars.yml @@ -92,6 +92,8 @@ nameSegments: [names_golem] - type: Psionic removable: false + assayFeedback: + - ifrit-feedback psychognomicDescriptors: - p-descriptor-bound - p-descriptor-cyclic diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/elemental.yml b/Resources/Prototypes/Entities/Mobs/NPCs/elemental.yml index 94ba7ec4188..bc5e0239d6a 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/elemental.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/elemental.yml @@ -74,6 +74,7 @@ - type: ZombieImmune - type: ClothingRequiredStepTriggerImmune slots: All + - type: Dispellable - type: entity abstract: true @@ -104,6 +105,9 @@ damageContainer: StructuralInorganic - type: Psionic removable: false + roller: false + assayFeedback: + - orecrab-feedback - type: InnatePsionicPowers powersToAdd: - TelepathyPower @@ -303,6 +307,9 @@ solution: bloodstream - type: Psionic removable: false + roller: false + assayFeedback: + - reagent-slime-feedback - type: InnatePsionicPowers powersToAdd: - TelepathyPower diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/flesh.yml b/Resources/Prototypes/Entities/Mobs/NPCs/flesh.yml index 06ab02dedc9..bdf87ec87d9 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/flesh.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/flesh.yml @@ -54,6 +54,11 @@ Slash: 6 - type: ReplacementAccent accent: genericAggressive + - type: Psionic + removable: false + roller: false + assayFeedback: + - flesh-golem-feedback - type: entity parent: BaseMobFlesh diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/glimmer_creatures.yml b/Resources/Prototypes/Entities/Mobs/NPCs/glimmer_creatures.yml index 52f3844c25f..5fcada3f7f3 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/glimmer_creatures.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/glimmer_creatures.yml @@ -23,6 +23,10 @@ - ReagentId: Ectoplasm Quantity: 15 - type: Psionic + removable: false + roller: false + assayFeedback: + - glimmer-mite-feedback - type: GlimmerSource - type: AmbientSound range: 6 diff --git a/Resources/Prototypes/Entities/Structures/Specific/Anomaly/anomalies.yml b/Resources/Prototypes/Entities/Structures/Specific/Anomaly/anomalies.yml index 82945860483..02184fc6139 100644 --- a/Resources/Prototypes/Entities/Structures/Specific/Anomaly/anomalies.yml +++ b/Resources/Prototypes/Entities/Structures/Specific/Anomaly/anomalies.yml @@ -50,6 +50,7 @@ path: /Audio/Effects/teleport_arrival.ogg - type: Psionic removable: false + roller: false - type: InnatePsionicPowers powersToAdd: - TelepathyPower @@ -106,6 +107,11 @@ - type: IgniteOnCollide fixtureId: fix1 fireStacks: 1 + - type: Psionic + removable: false + roller: false + assayFeedback: + - anomaly-pyroclastic-feedback - type: entity id: AnomalyGravity @@ -138,6 +144,11 @@ - type: SingularityDistortion intensity: 1000 falloffPower: 2.7 + - type: Psionic + removable: false + roller: false + assayFeedback: + - anomaly-gravity-feedback - type: entity id: AnomalyElectricity @@ -161,6 +172,11 @@ castShadows: false - type: ElectricityAnomaly - type: Electrified + - type: Psionic + removable: false + roller: false + assayFeedback: + - anomaly-electricity-feedback - type: entity id: AnomalyFlesh @@ -254,6 +270,11 @@ - MobFleshClamp - MobFleshLover - FleshKudzu + - type: Psionic + removable: false + roller: false + assayFeedback: + - anomaly-flesh-feedback - type: entity id: AnomalyBluespace @@ -304,6 +325,11 @@ anomalyContactDamage: types: Radiation: 10 + - type: Psionic + removable: false + roller: false + assayFeedback: + - anomaly-bluespace-feedback - type: entity id: AnomalyIce @@ -352,6 +378,11 @@ releasedGas: 8 # Frezon. Please replace if there is a better way to specify this releaseOnMaxSeverity: true spawnRadius: 0 + - type: Psionic + removable: false + roller: false + assayFeedback: + - anomaly-ice-feedback - type: entity id: AnomalyRockBase @@ -390,6 +421,11 @@ maxAmount: 50 maxRange: 12 floor: FloorAsteroidTile + - type: Psionic + removable: false + roller: false + assayFeedback: + - anomaly-rock-feedback - type: entity id: AnomalyRockUranium @@ -649,6 +685,11 @@ maxRange: 6 spawns: - KudzuFlowerAngry + - type: Psionic + removable: false + roller: false + assayFeedback: + - anomaly-flora-feedback - type: entity id: AnomalyFloraBulb @@ -808,6 +849,11 @@ solution: anomaly - type: InjectableSolution solution: beaker + - type: Psionic + removable: false + roller: false + assayFeedback: + - anomaly-liquid-feedback - type: entity id: AnomalyShadow @@ -864,3 +910,8 @@ - type: Tag tags: - SpookyFog + - type: Psionic + removable: false + roller: false + assayFeedback: + - anomaly-shadow-feedback diff --git a/Resources/Prototypes/Entities/Structures/Specific/oracle.yml b/Resources/Prototypes/Entities/Structures/Specific/oracle.yml index 3e2ed9508e3..e908ecab66f 100644 --- a/Resources/Prototypes/Entities/Structures/Specific/oracle.yml +++ b/Resources/Prototypes/Entities/Structures/Specific/oracle.yml @@ -18,6 +18,8 @@ - type: Actions - type: Psionic removable: false + assayFeedback: + - oracle-feedback psychognomicDescriptors: - p-descriptor-old - p-descriptor-demiurgic diff --git a/Resources/Prototypes/Nyanotrasen/Entities/Structures/Research/glimmer_prober.yml b/Resources/Prototypes/Nyanotrasen/Entities/Structures/Research/glimmer_prober.yml index 0eede9c2810..1bb752ade46 100644 --- a/Resources/Prototypes/Nyanotrasen/Entities/Structures/Research/glimmer_prober.yml +++ b/Resources/Prototypes/Nyanotrasen/Entities/Structures/Research/glimmer_prober.yml @@ -6,6 +6,8 @@ components: - type: Psionic removable: false + assayFeedback: + - prober-feedback - type: InnatePsionicPowers powersToAdd: - TelepathyPower @@ -93,6 +95,8 @@ components: - type: Psionic removable: false + assayFeedback: + - drain-feedback - type: GlimmerSource addToGlimmer: false - type: Construction diff --git a/Resources/Prototypes/Nyanotrasen/Entities/Structures/Research/sophicscribe.yml b/Resources/Prototypes/Nyanotrasen/Entities/Structures/Research/sophicscribe.yml index f92c9b07400..6f7b02cb6b8 100644 --- a/Resources/Prototypes/Nyanotrasen/Entities/Structures/Research/sophicscribe.yml +++ b/Resources/Prototypes/Nyanotrasen/Entities/Structures/Research/sophicscribe.yml @@ -25,6 +25,8 @@ - type: Actions - type: Psionic removable: false + assayFeedback: + - sophic-grammateus-feedback psychognomicDescriptors: - p-descriptor-old - p-descriptor-demiurgic