From 190521d96d795222b549102d7f5b8e188e795ed1 Mon Sep 17 00:00:00 2001 From: Stop-Signs Date: Wed, 22 Jan 2025 09:58:03 -0600 Subject: [PATCH 01/20] Compression of Arsenal techs (#2759) * the PR * unfucks FTL * should be fixed * yml typo * per maint request * 1 more maint request --- .../Nyanotrasen/Research/experimental.yml | 3 +- Resources/Prototypes/Research/arsenal.yml | 83 +++++++++---------- Resources/Prototypes/_DV/Research/arsenal.yml | 23 ++++- 3 files changed, 64 insertions(+), 45 deletions(-) diff --git a/Resources/Prototypes/Nyanotrasen/Research/experimental.yml b/Resources/Prototypes/Nyanotrasen/Research/experimental.yml index 7c89c0f7d04..9d5be497e51 100644 --- a/Resources/Prototypes/Nyanotrasen/Research/experimental.yml +++ b/Resources/Prototypes/Nyanotrasen/Research/experimental.yml @@ -12,7 +12,8 @@ recipeUnlocks: - ClothingHeadHelmetInsulated - ClothingHeadCage - # - ShellSoulbreaker # DeltaV - Placing it under Exotic Ammunition because that's what it is. + - MagazineBoxSpecialMindbreaker + - BoxShellSoulbreaker - type: technology id: Metempsychosis diff --git a/Resources/Prototypes/Research/arsenal.yml b/Resources/Prototypes/Research/arsenal.yml index a8192a0284c..871d15e14c8 100644 --- a/Resources/Prototypes/Research/arsenal.yml +++ b/Resources/Prototypes/Research/arsenal.yml @@ -1,26 +1,25 @@ # Tier 1 -- type: technology - id: DraconicMunitions - name: research-technology-draconic-munitions - icon: - sprite: Objects/Weapons/Guns/Ammunition/Boxes/pistol.rsi - state: incendiarydisplay - discipline: Arsenal - tier: 2 # DeltaV moved to t2 from t1 - cost: 10000 - recipeUnlocks: - - BoxShotgunIncendiary - - MagazineRifleIncendiary - - MagazinePistolIncendiary - - MagazineLightRifleIncendiary - - SpeedLoaderMagnumIncendiary - - MagazineShotgunIncendiary - - MagazineBoxPistolIncendiary - - MagazineBoxMagnumIncendiary - - MagazineBoxLightRifleIncendiary - - MagazineBoxRifleIncendiary - - MagazineBoxSpecialIncendiary # DeltaV +#- type: technology # DeltaV merged draconic and uranium munitions and moved to our namespace +# id: DraconicMunitions +# name: research-technology-draconic-muntions +# icon: +# sprite: Objects/Weapons/Guns/Ammunition/Boxes/pistol.rsi +# state: incendiarydisplay +# discipline: Arsenal +# tier: 1 +# cost: 10000 +# recipeUnlocks: +# - BoxShotgunIncendiary +# - MagazineRifleIncendiary +# - MagazinePistolIncendiary +# - MagazineLightRifleIncendiary +# - SpeedLoaderMagnumIncendiary +# - MagazineShotgunIncendiary +# - MagazineBoxPistolIncendiary +# - MagazineBoxMagnumIncendiary +# - MagazineBoxLightRifleIncendiary +# - MagazineBoxRifleIncendiary - type: technology id: WeaponizedLaserManipulation @@ -50,28 +49,28 @@ # - BoxBeanbag # - WeaponDisabler -- type: technology - id: UraniumMunitions - name: research-technology-uranium-munitions - icon: - sprite: Objects/Materials/Sheets/other.rsi - state: uranium - discipline: Arsenal - tier: 2 # DeltaV moved to t2 from t1 - cost: 7500 - recipeUnlocks: - - MagazineRifleUranium - - MagazinePistolUranium - - MagazineLightRifleUranium - - SpeedLoaderMagnumUranium - - MagazineBoxPistolUranium - - MagazineBoxMagnumUranium - - MagazineBoxLightRifleUranium - - MagazineBoxRifleUranium - - BoxShotgunUranium +#- type: technology # DeltaV merged draconic and uranium munitions and moved to our namespace +# id: UraniumMunitions +# name: research-technology-uranium-munitions +# icon: +# sprite: Objects/Materials/Sheets/other.rsi +# state: uranium +# discipline: Arsenal +# tier: 1 +# cost: 7500 +# recipeUnlocks: +# - MagazineRifleUranium +# - MagazinePistolUranium +# - MagazineLightRifleUranium +# - SpeedLoaderMagnumUranium +# - MagazineBoxPistolUranium +# - MagazineBoxMagnumUranium +# - MagazineBoxLightRifleUranium +# - MagazineBoxRifleUranium +# - BoxShotgunUranium # DeltaV - .38 special uranium ammo - Adds .38 special uranium ammo to the research tree - - SpeedLoaderSpecialUranium - - MagazineBoxSpecialUranium +# - SpeedLoaderSpecialUranium +# - MagazineBoxSpecialUranium # End of modified code - type: technology diff --git a/Resources/Prototypes/_DV/Research/arsenal.yml b/Resources/Prototypes/_DV/Research/arsenal.yml index 33bb8cd88d7..87e0fb0c7c2 100644 --- a/Resources/Prototypes/_DV/Research/arsenal.yml +++ b/Resources/Prototypes/_DV/Research/arsenal.yml @@ -10,9 +10,28 @@ tier: 1 cost: 7500 recipeUnlocks: + - MagazineRifleUranium + - MagazinePistolUranium + - MagazineLightRifleUranium + - SpeedLoaderMagnumUranium + - MagazineBoxPistolUranium + - MagazineBoxMagnumUranium + - MagazineBoxLightRifleUranium + - MagazineBoxRifleUranium + - BoxShotgunUranium + - SpeedLoaderSpecialUranium + - MagazineBoxSpecialUranium + - BoxShotgunIncendiary + - MagazineRifleIncendiary + - MagazinePistolIncendiary + - MagazineLightRifleIncendiary + - SpeedLoaderMagnumIncendiary + - MagazineShotgunIncendiary + - MagazineBoxPistolIncendiary + - MagazineBoxMagnumIncendiary + - MagazineBoxLightRifleIncendiary + - MagazineBoxRifleIncendiary - MagazineBoxSpecialHoly - - MagazineBoxSpecialMindbreaker - - BoxShellSoulbreaker # Nyanotrasen - Soulbreaker shotgun ammo - type: technology id: EnergyGuns From c1a23e1a975ab0b492e65189e9e503455c7e4c41 Mon Sep 17 00:00:00 2001 From: Emily <182209267+Emily9031@users.noreply.github.com> Date: Wed, 22 Jan 2025 13:58:26 -0700 Subject: [PATCH 02/20] Dead Man's Signaller (#2775) * Sorta working * Made it able to be activated and deactivated * Moved everything to Delta V folders * Adds to research and protolathe * Added signaller to uplink * Sprites * Range * Fixes and moving things. * yaml fix * Fixes and clarified descriptions * More code fixes * please i beg * i hate --- .../Components/DeadMansSignallerComponent.cs | 14 +++++++++ .../Systems/DeadMansSignallerSystem.cs | 27 ++++++++++++++++++ .../Locale/en-US/_DV/store/uplink-catalog.ftl | 5 +++- .../Entities/Structures/Machines/lathe.yml | 1 + Resources/Prototypes/Research/arsenal.yml | 1 + .../Prototypes/_DV/Catalog/uplink_catalog.yml | 13 +++++++++ .../Electronics/dead-mans-signaller.yml | 25 ++++++++++++++++ .../Prototypes/_DV/Recipes/Lathes/devices.yml | 9 ++++++ .../Devices/deadmanssignaller.rsi/active.png | Bin 0 -> 408 bytes .../deadmanssignaller.rsi/inactive.png | Bin 0 -> 364 bytes .../deadmanssignaller.rsi/inhand-left.png | Bin 0 -> 331 bytes .../deadmanssignaller.rsi/inhand-right.png | Bin 0 -> 328 bytes .../Devices/deadmanssignaller.rsi/meta.json | 25 ++++++++++++++++ 13 files changed, 119 insertions(+), 1 deletion(-) create mode 100644 Content.Server/_DV/DeviceLinking/Components/DeadMansSignallerComponent.cs create mode 100644 Content.Server/_DV/DeviceLinking/Systems/DeadMansSignallerSystem.cs create mode 100644 Resources/Prototypes/_DV/Entities/Objects/Devices/Electronics/dead-mans-signaller.yml create mode 100644 Resources/Textures/_DV/Objects/Devices/deadmanssignaller.rsi/active.png create mode 100644 Resources/Textures/_DV/Objects/Devices/deadmanssignaller.rsi/inactive.png create mode 100644 Resources/Textures/_DV/Objects/Devices/deadmanssignaller.rsi/inhand-left.png create mode 100644 Resources/Textures/_DV/Objects/Devices/deadmanssignaller.rsi/inhand-right.png create mode 100644 Resources/Textures/_DV/Objects/Devices/deadmanssignaller.rsi/meta.json diff --git a/Content.Server/_DV/DeviceLinking/Components/DeadMansSignallerComponent.cs b/Content.Server/_DV/DeviceLinking/Components/DeadMansSignallerComponent.cs new file mode 100644 index 00000000000..1d887c205a2 --- /dev/null +++ b/Content.Server/_DV/DeviceLinking/Components/DeadMansSignallerComponent.cs @@ -0,0 +1,14 @@ +using Content.Shared.DeviceLinking; +using Robust.Shared.Prototypes; + +namespace Content.Server._DV.DeviceLinking.Components; + +[RegisterComponent] +public sealed partial class DeadMansSignallerComponent : Component +{ + /// + /// The port that gets signaled when the switch turns on. + /// + [DataField] + public ProtoId Port = "Pressed"; +} diff --git a/Content.Server/_DV/DeviceLinking/Systems/DeadMansSignallerSystem.cs b/Content.Server/_DV/DeviceLinking/Systems/DeadMansSignallerSystem.cs new file mode 100644 index 00000000000..6f18a12b69c --- /dev/null +++ b/Content.Server/_DV/DeviceLinking/Systems/DeadMansSignallerSystem.cs @@ -0,0 +1,27 @@ +using Content.Server._DV.DeviceLinking.Components; +using Content.Server.DeviceLinking.Systems; +using Content.Shared.Hands; +using Content.Shared.Item.ItemToggle; + +namespace Content.Server._DV.DeviceLinking.Systems; + +public sealed class DeadMansSignallerSystem : EntitySystem +{ + [Dependency] private readonly DeviceLinkSystem _link = default!; + [Dependency] private readonly ItemToggleSystem _toggle = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(DeadMans); + } + + private void DeadMans(Entity ent, ref GotUnequippedHandEvent args) + { + if (_toggle.IsActivated(ent.Owner)) + { + _link.InvokePort(ent.Owner, ent.Comp.Port); + } + } +} diff --git a/Resources/Locale/en-US/_DV/store/uplink-catalog.ftl b/Resources/Locale/en-US/_DV/store/uplink-catalog.ftl index b1f20825d79..e3f6a7a81ad 100644 --- a/Resources/Locale/en-US/_DV/store/uplink-catalog.ftl +++ b/Resources/Locale/en-US/_DV/store/uplink-catalog.ftl @@ -35,4 +35,7 @@ uplink-storage-implanter-delta-desc = Hide goodies inside of yourself with new b uplink-hardsuit-syndieelite-delta-name = Syndicate Thermal Hardsuit uplink-objective-syndicate-board-name = Syndicate law board -uplink-objective-syndicate-board-desc = Its expensive, don't lose it! \ No newline at end of file +uplink-objective-syndicate-board-desc = Its expensive, don't lose it! + +uplink-dead-mans-signaller-name = Dead Man's Signaller +uplink-dead-mans-signaller-desc = A device that if armed, will send a signal to any linked devices (such as bombs) when it is dropped or put away. diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index 69d74f956c0..6075671087c 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -376,6 +376,7 @@ - FultonBeacon - PowerCellHyper - FireExtinguisherBluespace + - SignallerDeadMans # End DeltaV additions - EnergyScalpel # Shitmed Change - EnergyCautery # Shitmed Change diff --git a/Resources/Prototypes/Research/arsenal.yml b/Resources/Prototypes/Research/arsenal.yml index 871d15e14c8..2333de04e66 100644 --- a/Resources/Prototypes/Research/arsenal.yml +++ b/Resources/Prototypes/Research/arsenal.yml @@ -106,6 +106,7 @@ - FlashPayload - ExplosivePayload - ChemicalPayload + - SignallerDeadMans # DeltaV - Dead Man's Signaller - type: technology id: SpecialMeans diff --git a/Resources/Prototypes/_DV/Catalog/uplink_catalog.yml b/Resources/Prototypes/_DV/Catalog/uplink_catalog.yml index 8477f576060..f9ed7503158 100644 --- a/Resources/Prototypes/_DV/Catalog/uplink_catalog.yml +++ b/Resources/Prototypes/_DV/Catalog/uplink_catalog.yml @@ -166,3 +166,16 @@ blacklist: components: - SurplusBundle + +- type: listing + id: UplinkDeadMansSignaller + name: uplink-dead-mans-signaller-name + description: uplink-dead-mans-signaller-desc + productEntity: DeadMansSignaler + discountCategory: rareDiscounts + discountDownTo: + Telecrystal: 1 + cost: + Telecrystal: 2 + categories: + - UplinkDisruption diff --git a/Resources/Prototypes/_DV/Entities/Objects/Devices/Electronics/dead-mans-signaller.yml b/Resources/Prototypes/_DV/Entities/Objects/Devices/Electronics/dead-mans-signaller.yml new file mode 100644 index 00000000000..ae3222b9d19 --- /dev/null +++ b/Resources/Prototypes/_DV/Entities/Objects/Devices/Electronics/dead-mans-signaller.yml @@ -0,0 +1,25 @@ +#This signaller device will send a signal if it is dropped while activated + +- type: entity + parent: RemoteSignaller + id: DeadMansSignaler + name: dead man's signaler + description: A device that if armed will send signals to objects within 50 meters when dropped or put away. + components: + - type: DeadMansSignaller + - type: ItemToggle + - type: Sprite + drawdepth: Items + sprite: _DV/Objects/Devices/deadmanssignaller.rsi + layers: + - state: inactive + map: [ "enum.ToggleVisuals.Layer" ] + - type: Appearance + - type: GenericVisualizer + visuals: + enum.ToggleVisuals.Toggled: + enum.ToggleVisuals.Layer: + True: {state: active} + False: {state: inactive} + - type: WirelessNetworkConnection + range: 50 diff --git a/Resources/Prototypes/_DV/Recipes/Lathes/devices.yml b/Resources/Prototypes/_DV/Recipes/Lathes/devices.yml index 4e3c5f121e4..e389151464a 100644 --- a/Resources/Prototypes/_DV/Recipes/Lathes/devices.yml +++ b/Resources/Prototypes/_DV/Recipes/Lathes/devices.yml @@ -18,3 +18,12 @@ Silver: 750 Plasma: 500 Bluespace: 100 + +- type: latheRecipe + parent: BasePartRecipe + id: SignallerDeadMans + result: DeadMansSignaler + materials: + Steel: 100 + Plastic: 200 + Plasma: 100 diff --git a/Resources/Textures/_DV/Objects/Devices/deadmanssignaller.rsi/active.png b/Resources/Textures/_DV/Objects/Devices/deadmanssignaller.rsi/active.png new file mode 100644 index 0000000000000000000000000000000000000000..037224c50bb79aab96943cc3e4446b4874cbcd90 GIT binary patch literal 408 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=hEVFuHoWIEF;HC#Ogx9I!a>&A7)Z z!GxtPjYCCE?caR+db>~=|7nWM?-(*&PyY9RZ?As(vZY%rC#|+OMqT5#2t`3k{ z5G!(QL;2stTNVt@swea=5MZ!mkY2EoIYF#RXrXh1=;2HIlr{1?^fo10Y-sd*+OT!H zH#tW(~=Jsl-$<5<-)khcfq6!S57iyi_E!K-uR7=;U-Vfk%p_RSKghN5F!wG zyJ$k?Vm=98Muw2g8H(B-t=YhEzopr0G8mS Ang9R* literal 0 HcmV?d00001 diff --git a/Resources/Textures/_DV/Objects/Devices/deadmanssignaller.rsi/inactive.png b/Resources/Textures/_DV/Objects/Devices/deadmanssignaller.rsi/inactive.png new file mode 100644 index 0000000000000000000000000000000000000000..396e17942e0e83b2239ea31cd7bf66cb65f3ddc0 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jPK-BC>eK@{oCO|{#S9GG z!XV7ZFl&wkP%tXMC&U#esu=^6{_y*-J+c z>Rq2VWAd@S@0Sm{&Q?@>qI_KNgx`Y(hNsa2Z`d2s7c124N)p+jajem*!qi*#$e!E` zVdjgkedcw{vRc66BlBe$!@E*}(4hM^{*iJl9Zx>rN_ujC&l+V}iyc)v12k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`032l#}zCMG6ID@yV@OT-n01tfc_+G{f%5RNVk2Fh>x^-Tdtah3%61^BM|^tUuAA$)U+!{LRYK{S%hVjBcBoSk%OE%Vf%pIgYH{`@E%Db(^`w zZrpH?X`0(~*Rjw3S)DG2#*8AHL+ct#3gkIeI8-JmOmJvw;JjdU$D8Gctc$;n*n?mD z@?KlEvZh8SW&aGUxYl@k(m_6v3sn=Gn!10@I^tf@z#_z=&-zYU#kB57qQAi^pnDlS MUHx3vIVCg!0L}z=`~Uy| literal 0 HcmV?d00001 diff --git a/Resources/Textures/_DV/Objects/Devices/deadmanssignaller.rsi/inhand-right.png b/Resources/Textures/_DV/Objects/Devices/deadmanssignaller.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..751ae9080b7e8c7787d0dc7cce4854e35ba9e83f GIT binary patch literal 328 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`032l#}zCMG6ID@w){h4DH|1SESh9S~Nv*N!d>2FkC{c&HDgI7@>3g8xGS zL$H5^5J<4VBeIx*f$uN~Gak=hkpdK4=;`7Z65;-KnxjyI0*9-!_RjyElMlHCr=2j< z{dfDo0=o;ox_<;Y6a*B0^d?*inyad2C2armgydGs)(X|Uu(uH`g}2wA@y=nbY%woC zQGNQG(hhF9j Date: Thu, 23 Jan 2025 02:07:32 +0200 Subject: [PATCH 03/20] Fix small namespace issue (#2785) Move folders --- .../Components/MaterialReclaimerMagnetPickupComponent.cs | 2 +- .../Components/MaterialStorageMagnetPickupComponent.cs | 2 +- .../EntitySystems/MaterialReclaimerMagnetPickupSystem.cs | 4 ++-- .../EntitySystems/MaterialStorageMagnetPickupSystem.cs | 4 ++-- .../storage/components/magnet-pickup-components.ftl | 0 5 files changed, 6 insertions(+), 6 deletions(-) rename Content.Shared/{Frontier => _NF}/Storage/Components/MaterialReclaimerMagnetPickupComponent.cs (91%) rename Content.Shared/{Frontier => _NF}/Storage/Components/MaterialStorageMagnetPickupComponent.cs (91%) rename Content.Shared/{Frontier => _NF}/Storage/EntitySystems/MaterialReclaimerMagnetPickupSystem.cs (97%) rename Content.Shared/{Frontier => _NF}/Storage/EntitySystems/MaterialStorageMagnetPickupSystem.cs (97%) rename Resources/Locale/en-US/{frontier => _NF}/storage/components/magnet-pickup-components.ftl (100%) diff --git a/Content.Shared/Frontier/Storage/Components/MaterialReclaimerMagnetPickupComponent.cs b/Content.Shared/_NF/Storage/Components/MaterialReclaimerMagnetPickupComponent.cs similarity index 91% rename from Content.Shared/Frontier/Storage/Components/MaterialReclaimerMagnetPickupComponent.cs rename to Content.Shared/_NF/Storage/Components/MaterialReclaimerMagnetPickupComponent.cs index fb55184eb36..3adfe8a04db 100644 --- a/Content.Shared/Frontier/Storage/Components/MaterialReclaimerMagnetPickupComponent.cs +++ b/Content.Shared/_NF/Storage/Components/MaterialReclaimerMagnetPickupComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Frontier.Storage.Components; +namespace Content.Shared._NF.Storage.Components; /// /// Applies an ongoing pickup area around the attached entity. diff --git a/Content.Shared/Frontier/Storage/Components/MaterialStorageMagnetPickupComponent.cs b/Content.Shared/_NF/Storage/Components/MaterialStorageMagnetPickupComponent.cs similarity index 91% rename from Content.Shared/Frontier/Storage/Components/MaterialStorageMagnetPickupComponent.cs rename to Content.Shared/_NF/Storage/Components/MaterialStorageMagnetPickupComponent.cs index f83c81dc9ae..7391559467d 100644 --- a/Content.Shared/Frontier/Storage/Components/MaterialStorageMagnetPickupComponent.cs +++ b/Content.Shared/_NF/Storage/Components/MaterialStorageMagnetPickupComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Frontier.Storage.Components; +namespace Content.Shared._NF.Storage.Components; /// /// Applies an ongoing pickup area around the attached entity. diff --git a/Content.Shared/Frontier/Storage/EntitySystems/MaterialReclaimerMagnetPickupSystem.cs b/Content.Shared/_NF/Storage/EntitySystems/MaterialReclaimerMagnetPickupSystem.cs similarity index 97% rename from Content.Shared/Frontier/Storage/EntitySystems/MaterialReclaimerMagnetPickupSystem.cs rename to Content.Shared/_NF/Storage/EntitySystems/MaterialReclaimerMagnetPickupSystem.cs index bee489446f2..809ff268d80 100644 --- a/Content.Shared/Frontier/Storage/EntitySystems/MaterialReclaimerMagnetPickupSystem.cs +++ b/Content.Shared/_NF/Storage/EntitySystems/MaterialReclaimerMagnetPickupSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Frontier.Storage.Components; +using Content.Shared._NF.Storage.Components; using Content.Shared.Materials; using Robust.Shared.Physics.Components; using Robust.Shared.Timing; @@ -7,7 +7,7 @@ using Content.Shared.Verbs; // Frontier using Robust.Shared.Utility; // Frontier -namespace Content.Shared.Frontier.Storage.EntitySystems; +namespace Content.Shared._NF.Storage.EntitySystems; /// /// diff --git a/Content.Shared/Frontier/Storage/EntitySystems/MaterialStorageMagnetPickupSystem.cs b/Content.Shared/_NF/Storage/EntitySystems/MaterialStorageMagnetPickupSystem.cs similarity index 97% rename from Content.Shared/Frontier/Storage/EntitySystems/MaterialStorageMagnetPickupSystem.cs rename to Content.Shared/_NF/Storage/EntitySystems/MaterialStorageMagnetPickupSystem.cs index 0efea1e793d..f1c38296b46 100644 --- a/Content.Shared/Frontier/Storage/EntitySystems/MaterialStorageMagnetPickupSystem.cs +++ b/Content.Shared/_NF/Storage/EntitySystems/MaterialStorageMagnetPickupSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Frontier.Storage.Components; +using Content.Shared._NF.Storage.Components; using Content.Shared.Materials; using Robust.Shared.Physics.Components; using Robust.Shared.Timing; @@ -7,7 +7,7 @@ using Content.Shared.Verbs; // Frontier using Robust.Shared.Utility; // Frontier -namespace Content.Shared.Frontier.Storage.EntitySystems; +namespace Content.Shared._NF.Storage.EntitySystems; /// /// diff --git a/Resources/Locale/en-US/frontier/storage/components/magnet-pickup-components.ftl b/Resources/Locale/en-US/_NF/storage/components/magnet-pickup-components.ftl similarity index 100% rename from Resources/Locale/en-US/frontier/storage/components/magnet-pickup-components.ftl rename to Resources/Locale/en-US/_NF/storage/components/magnet-pickup-components.ftl From 895aac28b45887d29d1a7e38c4f5f0defe9b0289 Mon Sep 17 00:00:00 2001 From: keekee38 Date: Wed, 22 Jan 2025 20:12:22 -0500 Subject: [PATCH 04/20] a few new AAC phrases (#2748) * *waves* * hi * hihi --- Resources/Locale/en-US/_DV/phrases/common.ftl | 13 +++- .../Locale/en-US/_DV/phrases/species.ftl | 2 +- .../Locale/en-US/_DV/phrases/subjects.ftl | 14 +++- .../_DV/QuickPhrases/Common/actions.yml | 70 +++++++++++++++++ .../_DV/QuickPhrases/Common/commands.yml | 75 ++++--------------- .../_DV/QuickPhrases/Common/numbers.yml | 6 ++ .../_DV/QuickPhrases/Common/qualitative.yml | 15 ++++ .../_DV/QuickPhrases/Common/questions.yml | 5 ++ .../_DV/QuickPhrases/Species/animals.yml | 11 +-- .../_DV/QuickPhrases/Species/crew.yml | 5 ++ .../_DV/QuickPhrases/Subjects/command.yml | 10 +++ .../_DV/QuickPhrases/Subjects/engineering.yml | 20 +++++ .../_DV/QuickPhrases/Subjects/epistemics.yml | 17 ++++- .../_DV/QuickPhrases/Subjects/generic.yml | 20 +++++ .../_DV/QuickPhrases/Subjects/logistics.yml | 5 ++ .../Prototypes/_DV/QuickPhrases/jobs.yml | 38 +++++++++- .../Prototypes/_DV/QuickPhrases/locations.yml | 18 ++++- 17 files changed, 266 insertions(+), 78 deletions(-) create mode 100644 Resources/Prototypes/_DV/QuickPhrases/Common/actions.yml diff --git a/Resources/Locale/en-US/_DV/phrases/common.ftl b/Resources/Locale/en-US/_DV/phrases/common.ftl index 8f1da4d93f2..33b27b0f84f 100644 --- a/Resources/Locale/en-US/_DV/phrases/common.ftl +++ b/Resources/Locale/en-US/_DV/phrases/common.ftl @@ -12,7 +12,7 @@ phrase-give-me = Give phrase-need = I need phrase-want = I want phrase-cant = I can't -phrase-show-me = Show +phrase-show = Show phrase-help = Help phrase-attack = Attack phrase-break = Break @@ -23,7 +23,7 @@ phrase-go-away = Go away phrase-leave = Leave phrase-stay = Stay phrase-come-here = Come here -phrase-take-this = Take this +phrase-take = Take phrase-go-to = Go to phrase-do-not = Do not phrase-wait = Wait @@ -94,3 +94,12 @@ phrase-i-am = I am phrase-you-are = You are phrase-mine = Mine phrase-yours = Yours +phrase-on = On +phrase-off = Off +phrase-day = day +phrase-which = Which +phrase-not = Not +phrase-call = Call +phrase-this = This +phrase-actiondrink = Drink +phrase-know = Know diff --git a/Resources/Locale/en-US/_DV/phrases/species.ftl b/Resources/Locale/en-US/_DV/phrases/species.ftl index 29f21cf7b32..fef94615ead 100644 --- a/Resources/Locale/en-US/_DV/phrases/species.ftl +++ b/Resources/Locale/en-US/_DV/phrases/species.ftl @@ -8,7 +8,6 @@ phrase-species-mouse = mouse phrase-species-mothroach = mothroach phrase-species-cockroach = cockroach phrase-species-spider = spider -phrase-species-tarantula = tarantula phrase-species-bird = bird phrase-species-parrot = parrot phrase-species-snake = snake @@ -40,3 +39,4 @@ phrase-species-ghost = ghost phrase-species-pest = pest phrase-species-insect = insect phrase-species-pet = pet +phrase-species-chicken = chicken diff --git a/Resources/Locale/en-US/_DV/phrases/subjects.ftl b/Resources/Locale/en-US/_DV/phrases/subjects.ftl index 5033b5ddfc5..eec52101db7 100644 --- a/Resources/Locale/en-US/_DV/phrases/subjects.ftl +++ b/Resources/Locale/en-US/_DV/phrases/subjects.ftl @@ -41,6 +41,7 @@ phrase-wood = wood phrase-cloth = cloth phrase-cardboard = cardboard phrase-gold = gold +phrase-glass = glass phrase-silver = silver phrase-bluespace = bluespace phrase-access = access @@ -72,6 +73,7 @@ phrase-teg = TEG phrase-tesla = tesla phrase-tritium = tritium phrase-magboots = magboots +phrase-holofan = holofan phrase-anomaly = anomaly phrase-ape = A.P.E. phrase-anomaly-vessel = anomaly vessel @@ -84,7 +86,7 @@ phrase-research-console = R&D computer phrase-oracle = Oracle phrase-sophie = Sophie phrase-glimmer = glimmer -phrase-psionics = psionics +phrase-psionic = psionic phrase-lotophagol-oil = lotophagol oil phrase-mindbreak-phase = mindbreak phrase-protolathe = protolathe @@ -198,6 +200,16 @@ phrase-box = box phrase-locker = locker phrase-machine = machine phrase-blood = blood +phrase-nukedisk = nuclear disk +phrase-pinpointer = pinpointer +phrase-law = law +phrase-chassis = chassis +phrase-engi-on = on +phrase-engi-off = off +phrase-gas-analyzer = gas analyzer +phrase-planetside = planetside +phrase-holopad = holopad +phrase-upgrade = upgrade # colors phrase-color-red = red diff --git a/Resources/Prototypes/_DV/QuickPhrases/Common/actions.yml b/Resources/Prototypes/_DV/QuickPhrases/Common/actions.yml new file mode 100644 index 00000000000..2a8dc43a1e0 --- /dev/null +++ b/Resources/Prototypes/_DV/QuickPhrases/Common/actions.yml @@ -0,0 +1,70 @@ +- type: quickPhrase + id: BaseActionPhrase + parent: BaseCommonPhrase + group: Actions + abstract: true + +- type: quickPhrase + id: CallPhrase + parent: BaseActionPhrase + text: phrase-call + +- type: quickPhrase + id: DrinkActionPhrase + parent: BaseActionPhrase + text: phrase-actiondrink + +- type: quickPhrase + id: ShowMePhrase + parent: BaseActionPhrase + text: phrase-show + +- type: quickPhrase + id: HelpPhrase + parent: BaseActionPhrase + text: phrase-help + +- type: quickPhrase + id: AttackPhrase + parent: BaseActionPhrase + text: phrase-attack + +- type: quickPhrase + id: BreakPhrase + parent: BaseActionPhrase + text: phrase-break + +- type: quickPhrase + id: BuildPhrase + parent: BaseActionPhrase + text: phrase-build + +- type: quickPhrase + id: HealPhrase + parent: BaseActionPhrase + text: phrase-heal + +- type: quickPhrase + id: RunPhrase + parent: BaseActionPhrase + text: phrase-run + +- type: quickPhrase + id: GoPhrase + parent: BaseActionPhrase + text: phrase-go + +- type: quickPhrase + id: FixPhrase + parent: BaseActionPhrase + text: phrase-fix + +- type: quickPhrase + id: SwitchPhrase + parent: BaseActionPhrase + text: phrase-switch + +- type: quickPhrase + id: KnowPhrase + parent: BaseActionPhrase + text: phrase-know diff --git a/Resources/Prototypes/_DV/QuickPhrases/Common/commands.yml b/Resources/Prototypes/_DV/QuickPhrases/Common/commands.yml index c56cf6a7ad7..e038a2e18fa 100644 --- a/Resources/Prototypes/_DV/QuickPhrases/Common/commands.yml +++ b/Resources/Prototypes/_DV/QuickPhrases/Common/commands.yml @@ -24,66 +24,16 @@ parent: BaseImperativePhrase text: phrase-cant -- type: quickPhrase - id: ShowMePhrase - parent: BaseImperativePhrase - text: phrase-show-me - -- type: quickPhrase - id: HelpPhrase - parent: BaseImperativePhrase - text: phrase-help - -- type: quickPhrase - id: AttackPhrase - parent: BaseImperativePhrase - text: phrase-attack - -- type: quickPhrase - id: BreakPhrase - parent: BaseImperativePhrase - text: phrase-break - -- type: quickPhrase - id: BuildPhrase - parent: BaseImperativePhrase - text: phrase-build - -- type: quickPhrase - id: HealPhrase - parent: BaseImperativePhrase - text: phrase-heal - -- type: quickPhrase - id: StopPhrase - parent: BaseImperativePhrase - text: phrase-stop - - type: quickPhrase id: GoAwayPhrase parent: BaseImperativePhrase text: phrase-go-away -- type: quickPhrase - id: LeavePhrase - parent: BaseImperativePhrase - text: phrase-leave - -- type: quickPhrase - id: StayPhrase - parent: BaseImperativePhrase - text: phrase-stay - - type: quickPhrase id: ComeHerePhrase parent: BaseImperativePhrase text: phrase-come-here -- type: quickPhrase - id: TakeThisPhrase - parent: BaseImperativePhrase - text: phrase-take-this - - type: quickPhrase id: GoToPhrase parent: BaseImperativePhrase @@ -100,26 +50,31 @@ text: phrase-wait - type: quickPhrase - id: GoPhrase + id: WillPhrase + parent: BaseImperativePhrase + text: phrase-will + +- type: quickPhrase + id: ThisPhrase parent: BaseImperativePhrase - text: phrase-go + text: phrase-this - type: quickPhrase - id: RunPhrase + id: TakePhrase parent: BaseImperativePhrase - text: phrase-run + text: phrase-take - type: quickPhrase - id: FixPhrase + id: LeavePhrase parent: BaseImperativePhrase - text: phrase-fix + text: phrase-leave - type: quickPhrase - id: SwitchPhrase + id: StayPhrase parent: BaseImperativePhrase - text: phrase-switch + text: phrase-stay - type: quickPhrase - id: WillPhrase + id: StopPhrase parent: BaseImperativePhrase - text: phrase-will + text: phrase-stop diff --git a/Resources/Prototypes/_DV/QuickPhrases/Common/numbers.yml b/Resources/Prototypes/_DV/QuickPhrases/Common/numbers.yml index e872d2d3f8f..832cbdfde21 100644 --- a/Resources/Prototypes/_DV/QuickPhrases/Common/numbers.yml +++ b/Resources/Prototypes/_DV/QuickPhrases/Common/numbers.yml @@ -98,3 +98,9 @@ id: SecondPhrase parent: BaseNumberPhrase text: phrase-second + +- type: quickPhrase + id: DayPhrase + parent: BaseNumberPhrase + text: phrase-day + diff --git a/Resources/Prototypes/_DV/QuickPhrases/Common/qualitative.yml b/Resources/Prototypes/_DV/QuickPhrases/Common/qualitative.yml index e81b2ca8ccf..e8a0f80ac58 100644 --- a/Resources/Prototypes/_DV/QuickPhrases/Common/qualitative.yml +++ b/Resources/Prototypes/_DV/QuickPhrases/Common/qualitative.yml @@ -68,3 +68,18 @@ id: BadPhrase parent: BaseQualitativePhrase text: phrase-bad + +- type: quickPhrase + id: OnPhrase + parent: BaseQualitativePhrase + text: phrase-on + +- type: quickPhrase + id: OffPhrase + parent: BaseQualitativePhrase + text: phrase-off + +- type: quickPhrase + id: NotPhrase + parent: BaseQualitativePhrase + text: phrase-not diff --git a/Resources/Prototypes/_DV/QuickPhrases/Common/questions.yml b/Resources/Prototypes/_DV/QuickPhrases/Common/questions.yml index 8869134401a..99d6fdf7c55 100644 --- a/Resources/Prototypes/_DV/QuickPhrases/Common/questions.yml +++ b/Resources/Prototypes/_DV/QuickPhrases/Common/questions.yml @@ -53,3 +53,8 @@ id: ShouldIPhrase parent: BaseQuestionPhrase text: phrase-should-i + +- type: quickPhrase + id: WhichPhrase + parent: BaseQuestionPhrase + text: phrase-which diff --git a/Resources/Prototypes/_DV/QuickPhrases/Species/animals.yml b/Resources/Prototypes/_DV/QuickPhrases/Species/animals.yml index 4468931a272..ee1e5c95401 100644 --- a/Resources/Prototypes/_DV/QuickPhrases/Species/animals.yml +++ b/Resources/Prototypes/_DV/QuickPhrases/Species/animals.yml @@ -54,11 +54,6 @@ parent: BaseAnimalSpeciesPhrase text: phrase-species-spider -- type: quickPhrase - id: SpeciesTarantulaPhrase - parent: BaseAnimalSpeciesPhrase - text: phrase-species-tarantula - - type: quickPhrase id: SpeciesBirdPhrase parent: BaseAnimalSpeciesPhrase @@ -163,3 +158,9 @@ id: SpeciesGoatPhrase parent: BaseAnimalSpeciesPhrase text: phrase-species-goat + +- type: quickPhrase + id: SpeciesChickenPhrase + parent: BaseAnimalSpeciesPhrase + text: phrase-species-chicken + diff --git a/Resources/Prototypes/_DV/QuickPhrases/Species/crew.yml b/Resources/Prototypes/_DV/QuickPhrases/Species/crew.yml index 1f93d7bf46a..a93c664b835 100644 --- a/Resources/Prototypes/_DV/QuickPhrases/Species/crew.yml +++ b/Resources/Prototypes/_DV/QuickPhrases/Species/crew.yml @@ -63,3 +63,8 @@ id: SpeciesVoxPhrase parent: BaseCrewSpeciesPhrase text: species-name-vox + +- type: quickPhrase + id: SpeciesRodentiaPhrase + parent: BaseCrewSpeciesPhrase + text: species-name-rodentia diff --git a/Resources/Prototypes/_DV/QuickPhrases/Subjects/command.yml b/Resources/Prototypes/_DV/QuickPhrases/Subjects/command.yml index 35e958e5c03..b5d66fadbc8 100644 --- a/Resources/Prototypes/_DV/QuickPhrases/Subjects/command.yml +++ b/Resources/Prototypes/_DV/QuickPhrases/Subjects/command.yml @@ -32,3 +32,13 @@ id: ImplantPhrase parent: BaseCommandSubjectPhrase text: phrase-implant + +- type: quickPhrase + id: NukeDiskPhrase + parent: BaseCommandSubjectPhrase + text: phrase-nukedisk + +- type: quickPhrase + id: PinpointerPhrase + parent: BaseCommandSubjectPhrase + text: phrase-pinpointer diff --git a/Resources/Prototypes/_DV/QuickPhrases/Subjects/engineering.yml b/Resources/Prototypes/_DV/QuickPhrases/Subjects/engineering.yml index 967e0d5d2a9..e254eb76851 100644 --- a/Resources/Prototypes/_DV/QuickPhrases/Subjects/engineering.yml +++ b/Resources/Prototypes/_DV/QuickPhrases/Subjects/engineering.yml @@ -117,3 +117,23 @@ id: MagbootsPhrase parent: BaseEngineeringSubjectPhrase text: phrase-magboots + +- type: quickPhrase + id: HolofanPhrase + parent: BaseEngineeringSubjectPhrase + text: phrase-holofan + +- type: quickPhrase + id: EngiOnPhrase + parent: BaseEngineeringSubjectPhrase + text: phrase-engi-on + +- type: quickPhrase + id: EngiOffPhrase + parent: BaseEngineeringSubjectPhrase + text: phrase-engi-off + +- type: quickPhrase + id: GasAnalyzerPhrase + parent: BaseEngineeringSubjectPhrase + text: phrase-gas-analyzer diff --git a/Resources/Prototypes/_DV/QuickPhrases/Subjects/epistemics.yml b/Resources/Prototypes/_DV/QuickPhrases/Subjects/epistemics.yml index 5b50ef40d8a..b84a6fc0ecb 100644 --- a/Resources/Prototypes/_DV/QuickPhrases/Subjects/epistemics.yml +++ b/Resources/Prototypes/_DV/QuickPhrases/Subjects/epistemics.yml @@ -66,7 +66,7 @@ - type: quickPhrase id: PsionicsPhrase parent: BaseEpistemicsSubjectPhrase - text: phrase-psionics + text: phrase-psionic - type: quickPhrase id: LotophagolOilPhrase @@ -87,3 +87,18 @@ id: CircuitImprinterPhrase parent: BaseEpistemicsSubjectPhrase text: phrase-circuit-imprinter + +- type: quickPhrase + id: EpistemicsBluespacePhrase + parent: BaseEpistemicsSubjectPhrase + text: phrase-bluespace-crystal + +- type: quickPhrase + id: EpiUpgradePhrase + parent: BaseEpistemicsSubjectPhrase + text: phrase-upgrade + +- type: quickPhrase + id: ChassisPhrase + parent: BaseEpistemicsSubjectPhrase + text: phrase-chassis diff --git a/Resources/Prototypes/_DV/QuickPhrases/Subjects/generic.yml b/Resources/Prototypes/_DV/QuickPhrases/Subjects/generic.yml index 256871fc4b3..8d4927ffd7f 100644 --- a/Resources/Prototypes/_DV/QuickPhrases/Subjects/generic.yml +++ b/Resources/Prototypes/_DV/QuickPhrases/Subjects/generic.yml @@ -188,6 +188,21 @@ parent: BaseSubjectPhrase text: phrase-blood +- type: quickPhrase + id: LawPhrase + parent: BaseSubjectPhrase + text: phrase-law + +- type: quickPhrase + id: HolopadPhrase + parent: BaseSubjectPhrase + text: phrase-holopad + +- type: quickPhrase + id: UpgradePhrase + parent: BaseSubjectPhrase + text: phrase-upgrade + # Materials - type: quickPhrase @@ -246,6 +261,11 @@ parent: BaseMaterialPhrase text: phrase-gold +- type: quickPhrase + id: GlassPhrase + parent: BaseMaterialPhrase + text: phrase-glass + - type: quickPhrase id: SilverPhrase parent: BaseMaterialPhrase diff --git a/Resources/Prototypes/_DV/QuickPhrases/Subjects/logistics.yml b/Resources/Prototypes/_DV/QuickPhrases/Subjects/logistics.yml index a5ce44f3260..85a19efd944 100644 --- a/Resources/Prototypes/_DV/QuickPhrases/Subjects/logistics.yml +++ b/Resources/Prototypes/_DV/QuickPhrases/Subjects/logistics.yml @@ -93,6 +93,11 @@ parent: BaseLogisticsSubjectPhrase text: phrase-expedition +- type: quickPhrase + id: PlanetsidePhrase + parent: BaseLogisticsSubjectPhrase + text: phrase-planetside + # Ores - type: quickPhrase diff --git a/Resources/Prototypes/_DV/QuickPhrases/jobs.yml b/Resources/Prototypes/_DV/QuickPhrases/jobs.yml index 71d9f036804..df5dc38820b 100644 --- a/Resources/Prototypes/_DV/QuickPhrases/jobs.yml +++ b/Resources/Prototypes/_DV/QuickPhrases/jobs.yml @@ -64,13 +64,18 @@ - type: quickPhrase parent: BaseCommandJobPhrase - id: HeadOfPersonnelPhrase - text: job-name-hop + id: CentralCommandOfficialPhrase + text: job-name-centcomoff - type: quickPhrase parent: BaseCommandJobPhrase - id: CentralCommandOfficialPhrase - text: job-name-centcomoff + id: AdminAssistantPhrase + text: job-name-admin-assistant + +- type: quickPhrase + parent: BaseCommandJobPhrase + id: StationAIPhrase + text: job-name-station-ai # Engineering @@ -116,6 +121,11 @@ id: ResearchAssistantPhrase text: job-name-research-assistant +- type: quickPhrase + parent: BaseEpistemicsJobPhrase + id: RoboticistPhrase + text: job-name-roboticist + - type: quickPhrase parent: BaseEpistemicsJobPhrase id: BorgPhrase @@ -143,6 +153,11 @@ id: CourierPhrase text: job-name-courier +- type: quickPhrase + parent: BaseLogisticsJobPhrase + id: CargoAssistantPhrase + text: job-name-cargo-assistant + # Justice - type: quickPhrase @@ -192,6 +207,11 @@ id: MedicalInternPhrase text: job-name-intern +- type: quickPhrase + parent: BaseMedicalJobPhrase + id: SurgeonPhrase + text: job-name-surgeon + # Security - type: quickPhrase @@ -256,6 +276,11 @@ id: MusicianPhrase text: job-name-musician +- type: quickPhrase + parent: BaseServiceJobPhrase + id: ServiceWorkerPhrase + text: job-name-serviceworker + - type: quickPhrase parent: BaseServiceJobPhrase id: ClownPhrase @@ -266,6 +291,11 @@ id: MimePhrase text: job-name-mime +- type: quickPhrase + parent: BaseServiceJobPhrase + id: HeadOfPersonnelPhrase + text: job-name-hop + # Wildcard - type: quickPhrase diff --git a/Resources/Prototypes/_DV/QuickPhrases/locations.yml b/Resources/Prototypes/_DV/QuickPhrases/locations.yml index 0f8102514f3..15f6cc7e394 100644 --- a/Resources/Prototypes/_DV/QuickPhrases/locations.yml +++ b/Resources/Prototypes/_DV/QuickPhrases/locations.yml @@ -131,13 +131,18 @@ - type: quickPhrase parent: BaseCommandLocationPhrase - id: LocationHopPhrase - text: station-beacon-hop + id: LocationConferenceRoomPhrase + text: station-beacon-conference-room - type: quickPhrase parent: BaseCommandLocationPhrase - id: LocationConferenceRoomPhrase - text: station-beacon-conference-room + id: LocationAICorePhrase + text: station-beacon-ai-core + +- type: quickPhrase + parent: BaseCommandLocationPhrase + id: LocationAISatPhrase + text: station-beacon-ai-sat # Engineering @@ -433,6 +438,11 @@ id: LocationTheaterPhrase text: station-beacon-theater +- type: quickPhrase + parent: BaseServiceLocationPhrase + id: LocationHopPhrase + text: station-beacon-hop + # Civilian - type: quickPhrase From 3480b5e5c26f670308b75c1b424421c38c2b48ca Mon Sep 17 00:00:00 2001 From: Stop-Signs Date: Wed, 22 Jan 2025 20:59:19 -0600 Subject: [PATCH 05/20] mrrp --- Resources/Prototypes/Entities/Structures/Shuttles/cannons.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/Entities/Structures/Shuttles/cannons.yml b/Resources/Prototypes/Entities/Structures/Shuttles/cannons.yml index 086a708453b..1358a8f5889 100644 --- a/Resources/Prototypes/Entities/Structures/Shuttles/cannons.yml +++ b/Resources/Prototypes/Entities/Structures/Shuttles/cannons.yml @@ -244,7 +244,7 @@ acts: ["Destruction"] - type: Gun projectileSpeed: 40 - fireRate: 0.3 + fireRate: 1 # DeltaV - buffed from 0.3 soundGunshot: path: /Audio/Weapons/Guns/Gunshots/ship_duster.ogg params: From 905bc06406210dc9610db7f6bec0b09959158210 Mon Sep 17 00:00:00 2001 From: ElusiveCoin Date: Thu, 23 Jan 2025 00:27:44 -0700 Subject: [PATCH 06/20] Chitinid (#2707) * Start of the Chitinid Race My first work for ss14 and a new Species to play, worker drone ants! * Removed a uneeded bit * Removing the displacement section because it still is being weird Displacement map not working right but not really needed as well so just gonna do without it * Nukie Steamroll Preventative (#2658) * Update uplink_catalog.yml * Update uplink_catalog.yml * Update uplink_catalog.yml * Update uplink_catalog.yml * Automatic changelog update * most asked for changes * (hopefully) Fixed Linter Error * More clean up edits * 4 space indents!! * Direction desired name changes + More radiation mechanics Alienized the names of the little Ants and swapped their naming scheme. Added a radiation healing and purge mechanic to play into the radiation theme more. * Hopefully final changes! Adjustment to their resistances to make them less weak to blunt And the negative of being unable to be injected by normal syringes (hypo and pill gaming) * Forgot to add access to the new undergarments * Final Final change (hopefully) Added a little text pop up for failing to inject them * Code Tweeks * Quick Changes Removed some uneeded comments, removed uneeded Local info --------- Co-authored-by: rosieposie <52761126+rosieposieeee@users.noreply.github.com> Co-authored-by: Delta-V bot <135767721+DeltaV-Bot@users.noreply.github.com> --- .../Chemistry/EntitySystems/InjectorSystem.cs | 10 + .../Chitinid/BlockInjectionComponent.cs | 4 + .../Abilities/Chitinid/ChitinidComponent.cs | 41 ++ .../_DV/Abilities/Chitinid/ChitinidSystem.cs | 97 ++++ .../Chitinid/CoughingUpChitziteComponent.cs | 14 + .../_DV/Actions/Events/ChitziteActionEvent.cs | 3 + .../Audio/_DV/Voice/Chitinid/attributions.yml | 9 + .../Audio/_DV/Voice/Chitinid/male_cough_1.ogg | Bin 0 -> 13330 bytes .../Audio/_DV/Voice/Chitinid/moth_chitter.ogg | Bin 0 -> 9381 bytes .../Audio/_DV/Voice/Chitinid/moth_laugh.ogg | Bin 0 -> 20555 bytes .../Audio/_DV/Voice/Chitinid/moth_scream.ogg | Bin 0 -> 31333 bytes .../Audio/_DV/Voice/Chitinid/moth_squeak.ogg | Bin 0 -> 8676 bytes .../Locale/en-US/_DV/abilities/chitinid.ftl | 2 + .../en-US/_DV/chat/managers/chat_manager.ftl | 6 + .../Locale/en-US/_DV/markings/chitinid.ftl | 164 +++++++ .../Locale/en-US/_DV/species/species.ftl | 1 + .../components/injector-component.ftl | 1 + .../Mobs/Customization/Markings/gauze.yml | 28 +- Resources/Prototypes/Guidebook/species.yml | 1 + .../Loadouts/Miscellaneous/survival.yml | 1 + .../Prototypes/Species/species_weights.yml | 1 + Resources/Prototypes/_DV/Actions/types.yml | 13 + .../Prototypes/_DV/Body/Organs/chitinid.yml | 33 ++ .../Prototypes/_DV/Body/Parts/chitinid.yml | 112 +++++ .../_DV/Body/Prototypes/chitinid.yml | 49 ++ .../Prototypes/_DV/Damage/modifier_sets.yml | 9 + .../Datasets/Names/chitinid_first_female.yml | 34 ++ .../Datasets/Names/chitinid_first_male.yml | 36 ++ .../Mobs/Customization/Markings/chitinid.yml | 458 ++++++++++++++++++ .../_DV/Entities/Mobs/Player/chitinid.yml | 5 + .../_DV/Entities/Mobs/Species/chitinid.yml | 163 +++++++ .../Objects/Specific/Species/chitinid.yml | 33 ++ .../Prototypes/_DV/Guidebook/species.yml | 5 + Resources/Prototypes/_DV/Species/chitinid.yml | 167 +++++++ .../_DV/Voice/speech_emote_sounds.yml | 34 ++ .../Prototypes/_DV/Voice/speech_sounds.yml | 9 + .../Prototypes/_DV/Voice/speech_verbs.yml | 9 + Resources/Prototypes/_DV/typing_indicator.yml | 5 + .../Customization/Markings/undershirt.yml | 20 +- .../Mobs/Customization/Markings/underwear.yml | 10 +- .../ServerInfo/Guidebook/Mobs/Species.xml | 1 + .../Guidebook/Mobs/_DV/Chitinid.xml | 28 ++ .../_DV/Effects/speech.rsi/chitinid0.png | Bin 0 -> 775 bytes .../_DV/Effects/speech.rsi/chitinid1.png | Bin 0 -> 637 bytes .../_DV/Effects/speech.rsi/chitinid2.png | Bin 0 -> 637 bytes .../Textures/_DV/Effects/speech.rsi/meta.json | 17 + .../Chitinid/chitinid_antennas.rsi/bee.png | Bin 0 -> 716 bytes .../Chitinid/chitinid_antennas.rsi/curly.png | Bin 0 -> 851 bytes .../chitinid_antennas.rsi/default.png | Bin 0 -> 755 bytes .../chitinid_antennas.rsi/firefly_primary.png | Bin 0 -> 812 bytes .../firefly_secondary.png | Bin 0 -> 743 bytes .../Chitinid/chitinid_antennas.rsi/gray.png | Bin 0 -> 687 bytes .../Chitinid/chitinid_antennas.rsi/long.png | Bin 0 -> 634 bytes .../Chitinid/chitinid_antennas.rsi/meta.json | 55 +++ .../Chitinid/chitinid_antennas.rsi/radar.png | Bin 0 -> 689 bytes .../Chitinid/chitinid_antennas.rsi/short.png | Bin 0 -> 671 bytes .../Chitinid/chitinid_antennas.rsi/slick.png | Bin 0 -> 656 bytes .../Chitinid/chitinid_antennas.rsi/speed.png | Bin 0 -> 687 bytes .../chitinid_parts.rsi/charred_chest.png | Bin 0 -> 1631 bytes .../chitinid_parts.rsi/charred_head.png | Bin 0 -> 1260 bytes .../chitinid_parts.rsi/charred_l_arm.png | Bin 0 -> 422 bytes .../chitinid_parts.rsi/charred_l_leg.png | Bin 0 -> 381 bytes .../chitinid_parts.rsi/charred_r_arm.png | Bin 0 -> 440 bytes .../chitinid_parts.rsi/charred_r_leg.png | Bin 0 -> 387 bytes .../Chitinid/chitinid_parts.rsi/meta.json | 143 ++++++ .../chitinid_parts.rsi/plated_chest.png | Bin 0 -> 1088 bytes .../chitinid_parts.rsi/plated_l_arm.png | Bin 0 -> 678 bytes .../chitinid_parts.rsi/plated_r_arm.png | Bin 0 -> 695 bytes .../chitinid_parts.rsi/radiant_chest.png | Bin 0 -> 697 bytes .../chitinid_parts.rsi/radiant_head.png | Bin 0 -> 557 bytes .../chitinid_parts.rsi/radiant_l_arm.png | Bin 0 -> 704 bytes .../chitinid_parts.rsi/radiant_l_leg.png | Bin 0 -> 638 bytes .../chitinid_parts.rsi/radiant_r_arm.png | Bin 0 -> 702 bytes .../chitinid_parts.rsi/radiant_r_leg.png | Bin 0 -> 616 bytes .../chitinid_parts.rsi/spotted_chest.png | Bin 0 -> 676 bytes .../chitinid_parts.rsi/spotted_head.png | Bin 0 -> 646 bytes .../chitinid_parts.rsi/spotted_l_arm.png | Bin 0 -> 539 bytes .../chitinid_parts.rsi/spotted_l_leg.png | Bin 0 -> 539 bytes .../chitinid_parts.rsi/spotted_r_arm.png | Bin 0 -> 520 bytes .../chitinid_parts.rsi/spotted_r_leg.png | Bin 0 -> 537 bytes .../chitinid_parts.rsi/stripes_chest.png | Bin 0 -> 656 bytes .../chitinid_parts.rsi/stripes_head.png | Bin 0 -> 617 bytes .../chitinid_parts.rsi/stripes_l_arm.png | Bin 0 -> 610 bytes .../chitinid_parts.rsi/stripes_l_leg.png | Bin 0 -> 568 bytes .../chitinid_parts.rsi/stripes_r_arm.png | Bin 0 -> 614 bytes .../chitinid_parts.rsi/stripes_r_leg.png | Bin 0 -> 568 bytes .../chitinid_parts.rsi/toxic_chest.png | Bin 0 -> 885 bytes .../chitinid_parts.rsi/toxic_head.png | Bin 0 -> 743 bytes .../chitinid_parts.rsi/toxic_l_arm.png | Bin 0 -> 569 bytes .../chitinid_parts.rsi/toxic_l_leg.png | Bin 0 -> 540 bytes .../chitinid_parts.rsi/toxic_r_arm.png | Bin 0 -> 571 bytes .../chitinid_parts.rsi/toxic_r_leg.png | Bin 0 -> 532 bytes .../chitinid_wings.rsi/bee_primary.png | Bin 0 -> 1640 bytes .../chitinid_wings.rsi/bee_secondary.png | Bin 0 -> 1429 bytes .../Chitinid/chitinid_wings.rsi/default.png | Bin 0 -> 1068 bytes .../chitinid_wings.rsi/firefly_primary.png | Bin 0 -> 1001 bytes .../chitinid_wings.rsi/firefly_secondary.png | Bin 0 -> 875 bytes .../chitinid_wings.rsi/honeypot_primary.png | Bin 0 -> 1064 bytes .../chitinid_wings.rsi/honeypot_secondary.png | Bin 0 -> 951 bytes .../Chitinid/chitinid_wings.rsi/meta.json | 47 ++ .../Chitinid/chitinid_wings.rsi/smooth.png | Bin 0 -> 1128 bytes .../Chitinid/chitinid_wings.rsi/stubby.png | Bin 0 -> 965 bytes .../Mobs/Species/Chitinid/parts.rsi/eyes.png | Bin 0 -> 153 bytes .../Mobs/Species/Chitinid/parts.rsi/full.png | Bin 0 -> 1253 bytes .../Species/Chitinid/parts.rsi/head_f.png | Bin 0 -> 894 bytes .../Species/Chitinid/parts.rsi/head_m.png | Bin 0 -> 898 bytes .../Mobs/Species/Chitinid/parts.rsi/l_arm.png | Bin 0 -> 752 bytes .../Species/Chitinid/parts.rsi/l_foot.png | Bin 0 -> 727 bytes .../Species/Chitinid/parts.rsi/l_hand.png | Bin 0 -> 727 bytes .../Mobs/Species/Chitinid/parts.rsi/l_leg.png | Bin 0 -> 1870 bytes .../Mobs/Species/Chitinid/parts.rsi/meta.json | 66 +++ .../Mobs/Species/Chitinid/parts.rsi/r_arm.png | Bin 0 -> 758 bytes .../Species/Chitinid/parts.rsi/r_foot.png | Bin 0 -> 597 bytes .../Species/Chitinid/parts.rsi/r_hand.png | Bin 0 -> 713 bytes .../Mobs/Species/Chitinid/parts.rsi/r_leg.png | Bin 0 -> 278 bytes .../Species/Chitinid/parts.rsi/torso_f.png | Bin 0 -> 1305 bytes .../Species/Chitinid/parts.rsi/torso_m.png | Bin 0 -> 1269 bytes .../Species/chitinid.rsi/chitzite.png | Bin 0 -> 1797 bytes .../Species/chitinid.rsi/chitzite_glow.png | Bin 0 -> 1035 bytes .../Specific/Species/chitinid.rsi/meta.json | 33 ++ 120 files changed, 1948 insertions(+), 29 deletions(-) create mode 100644 Content.Server/_DV/Abilities/Chitinid/BlockInjectionComponent.cs create mode 100644 Content.Server/_DV/Abilities/Chitinid/ChitinidComponent.cs create mode 100644 Content.Server/_DV/Abilities/Chitinid/ChitinidSystem.cs create mode 100644 Content.Server/_DV/Abilities/Chitinid/CoughingUpChitziteComponent.cs create mode 100644 Content.Shared/_DV/Actions/Events/ChitziteActionEvent.cs create mode 100644 Resources/Audio/_DV/Voice/Chitinid/attributions.yml create mode 100644 Resources/Audio/_DV/Voice/Chitinid/male_cough_1.ogg create mode 100644 Resources/Audio/_DV/Voice/Chitinid/moth_chitter.ogg create mode 100644 Resources/Audio/_DV/Voice/Chitinid/moth_laugh.ogg create mode 100644 Resources/Audio/_DV/Voice/Chitinid/moth_scream.ogg create mode 100644 Resources/Audio/_DV/Voice/Chitinid/moth_squeak.ogg create mode 100644 Resources/Locale/en-US/_DV/abilities/chitinid.ftl create mode 100644 Resources/Locale/en-US/_DV/markings/chitinid.ftl create mode 100644 Resources/Prototypes/_DV/Body/Organs/chitinid.yml create mode 100644 Resources/Prototypes/_DV/Body/Parts/chitinid.yml create mode 100644 Resources/Prototypes/_DV/Body/Prototypes/chitinid.yml create mode 100644 Resources/Prototypes/_DV/Datasets/Names/chitinid_first_female.yml create mode 100644 Resources/Prototypes/_DV/Datasets/Names/chitinid_first_male.yml create mode 100644 Resources/Prototypes/_DV/Entities/Mobs/Customization/Markings/chitinid.yml create mode 100644 Resources/Prototypes/_DV/Entities/Mobs/Player/chitinid.yml create mode 100644 Resources/Prototypes/_DV/Entities/Mobs/Species/chitinid.yml create mode 100644 Resources/Prototypes/_DV/Entities/Objects/Specific/Species/chitinid.yml create mode 100644 Resources/Prototypes/_DV/Species/chitinid.yml create mode 100644 Resources/ServerInfo/Guidebook/Mobs/_DV/Chitinid.xml create mode 100644 Resources/Textures/_DV/Effects/speech.rsi/chitinid0.png create mode 100644 Resources/Textures/_DV/Effects/speech.rsi/chitinid1.png create mode 100644 Resources/Textures/_DV/Effects/speech.rsi/chitinid2.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_antennas.rsi/bee.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_antennas.rsi/curly.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_antennas.rsi/default.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_antennas.rsi/firefly_primary.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_antennas.rsi/firefly_secondary.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_antennas.rsi/gray.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_antennas.rsi/long.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_antennas.rsi/meta.json create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_antennas.rsi/radar.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_antennas.rsi/short.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_antennas.rsi/slick.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_antennas.rsi/speed.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/charred_chest.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/charred_head.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/charred_l_arm.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/charred_l_leg.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/charred_r_arm.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/charred_r_leg.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/meta.json create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/plated_chest.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/plated_l_arm.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/plated_r_arm.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/radiant_chest.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/radiant_head.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/radiant_l_arm.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/radiant_l_leg.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/radiant_r_arm.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/radiant_r_leg.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/spotted_chest.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/spotted_head.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/spotted_l_arm.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/spotted_l_leg.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/spotted_r_arm.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/spotted_r_leg.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/stripes_chest.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/stripes_head.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/stripes_l_arm.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/stripes_l_leg.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/stripes_r_arm.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/stripes_r_leg.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/toxic_chest.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/toxic_head.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/toxic_l_arm.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/toxic_l_leg.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/toxic_r_arm.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/toxic_r_leg.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_wings.rsi/bee_primary.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_wings.rsi/bee_secondary.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_wings.rsi/default.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_wings.rsi/firefly_primary.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_wings.rsi/firefly_secondary.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_wings.rsi/honeypot_primary.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_wings.rsi/honeypot_secondary.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_wings.rsi/meta.json create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_wings.rsi/smooth.png create mode 100644 Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_wings.rsi/stubby.png create mode 100644 Resources/Textures/_DV/Mobs/Species/Chitinid/parts.rsi/eyes.png create mode 100644 Resources/Textures/_DV/Mobs/Species/Chitinid/parts.rsi/full.png create mode 100644 Resources/Textures/_DV/Mobs/Species/Chitinid/parts.rsi/head_f.png create mode 100644 Resources/Textures/_DV/Mobs/Species/Chitinid/parts.rsi/head_m.png create mode 100644 Resources/Textures/_DV/Mobs/Species/Chitinid/parts.rsi/l_arm.png create mode 100644 Resources/Textures/_DV/Mobs/Species/Chitinid/parts.rsi/l_foot.png create mode 100644 Resources/Textures/_DV/Mobs/Species/Chitinid/parts.rsi/l_hand.png create mode 100644 Resources/Textures/_DV/Mobs/Species/Chitinid/parts.rsi/l_leg.png create mode 100644 Resources/Textures/_DV/Mobs/Species/Chitinid/parts.rsi/meta.json create mode 100644 Resources/Textures/_DV/Mobs/Species/Chitinid/parts.rsi/r_arm.png create mode 100644 Resources/Textures/_DV/Mobs/Species/Chitinid/parts.rsi/r_foot.png create mode 100644 Resources/Textures/_DV/Mobs/Species/Chitinid/parts.rsi/r_hand.png create mode 100644 Resources/Textures/_DV/Mobs/Species/Chitinid/parts.rsi/r_leg.png create mode 100644 Resources/Textures/_DV/Mobs/Species/Chitinid/parts.rsi/torso_f.png create mode 100644 Resources/Textures/_DV/Mobs/Species/Chitinid/parts.rsi/torso_m.png create mode 100644 Resources/Textures/_DV/Objects/Specific/Species/chitinid.rsi/chitzite.png create mode 100644 Resources/Textures/_DV/Objects/Specific/Species/chitinid.rsi/chitzite_glow.png create mode 100644 Resources/Textures/_DV/Objects/Specific/Species/chitinid.rsi/meta.json diff --git a/Content.Server/Chemistry/EntitySystems/InjectorSystem.cs b/Content.Server/Chemistry/EntitySystems/InjectorSystem.cs index eb2039604af..c935326b13c 100644 --- a/Content.Server/Chemistry/EntitySystems/InjectorSystem.cs +++ b/Content.Server/Chemistry/EntitySystems/InjectorSystem.cs @@ -1,3 +1,4 @@ +using Content.Server.Abilities.Chitinid; using Content.Server.Body.Components; using Content.Server.Body.Systems; using Content.Shared.Chemistry; @@ -108,6 +109,12 @@ private void OnInjectorAfterInteract(Entity entity, ref After /// private void InjectDoAfter(Entity injector, EntityUid target, EntityUid user) { + if (HasComp(target)) // DeltaV + { + Popup.PopupEntity(Loc.GetString("injector-component-deny-user"), target, user); + return; + } + // Create a pop-up for the user if (injector.Comp.ToggleState == InjectorToggleMode.Draw) { @@ -253,6 +260,9 @@ private bool TryInjectIntoBloodstream(Entity injector, Entity private bool TryInject(Entity injector, EntityUid targetEntity, Entity targetSolution, EntityUid user, bool asRefill) { + if (HasComp(targetEntity)) // DeltaV + return false; + if (!SolutionContainers.TryGetSolution(injector.Owner, injector.Comp.SolutionName, out var soln, out var solution) || solution.Volume == 0) return false; diff --git a/Content.Server/_DV/Abilities/Chitinid/BlockInjectionComponent.cs b/Content.Server/_DV/Abilities/Chitinid/BlockInjectionComponent.cs new file mode 100644 index 00000000000..ed5d78874d6 --- /dev/null +++ b/Content.Server/_DV/Abilities/Chitinid/BlockInjectionComponent.cs @@ -0,0 +1,4 @@ +namespace Content.Server.Abilities.Chitinid; + +[RegisterComponent] +public sealed partial class BlockInjectionComponent : Component; diff --git a/Content.Server/_DV/Abilities/Chitinid/ChitinidComponent.cs b/Content.Server/_DV/Abilities/Chitinid/ChitinidComponent.cs new file mode 100644 index 00000000000..871d10a7c27 --- /dev/null +++ b/Content.Server/_DV/Abilities/Chitinid/ChitinidComponent.cs @@ -0,0 +1,41 @@ +using Content.Shared.Damage; +using Content.Shared.Damage.Prototypes; +using Content.Shared.FixedPoint; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; + +namespace Content.Server.Abilities.Chitinid; + +[RegisterComponent] +public sealed partial class ChitinidComponent : Component +{ + [DataField] + public EntProtoId ChitzitePrototype = "Chitzite"; + + [DataField] + public EntProtoId ChitziteActionId = "ActionChitzite"; + + [DataField] + public EntityUid? ChitziteAction; + + [DataField] + public FixedPoint2 AmountAbsorbed = 0f; + + [DataField] + public DamageSpecifier Healing = new() + { + DamageDict = new() + { + { "Radiation", -0.5 }, + } + }; + + [DataField] + public FixedPoint2 MaximumAbsorbed = 30f; + + [DataField] + public TimeSpan UpdateInterval = TimeSpan.FromSeconds(1); + + [DataField(customTypeSerializer: typeof(TimeOffsetSerializer))] + public TimeSpan NextUpdate; +} diff --git a/Content.Server/_DV/Abilities/Chitinid/ChitinidSystem.cs b/Content.Server/_DV/Abilities/Chitinid/ChitinidSystem.cs new file mode 100644 index 00000000000..34d8244d5c9 --- /dev/null +++ b/Content.Server/_DV/Abilities/Chitinid/ChitinidSystem.cs @@ -0,0 +1,97 @@ +using Content.Server.Nutrition.Components; +using Content.Shared.Actions; +using Content.Shared.Actions.Events; +using Content.Shared.Audio; +using Content.Shared.Damage; +using Content.Shared.IdentityManagement; +using Content.Shared.Inventory; +using Content.Shared.Mobs.Systems; +using Content.Shared.Popups; +using Robust.Shared.Audio.Systems; +using Robust.Shared.Prototypes; +using Robust.Shared.Timing; + +namespace Content.Server.Abilities.Chitinid; + +public sealed partial class ChitinidSystem : EntitySystem +{ + [Dependency] private readonly SharedActionsSystem _actions = default!; + [Dependency] private readonly SharedAudioSystem _audio = default!; + [Dependency] private readonly IPrototypeManager _proto = default!; + [Dependency] private readonly SharedPopupSystem _popup = default!; + [Dependency] private readonly InventorySystem _inventory = default!; + [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly DamageableSystem _damageable = default!; + [Dependency] private readonly MobStateSystem _mobState = default!; + + public override void Initialize() + { + SubscribeLocalEvent(OnChitzite); + SubscribeLocalEvent(OnMapInit); + } + + public override void Update(float frameTime) + { + base.Update(frameTime); + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var chitinid, out var damageable)) + { + if (_timing.CurTime < chitinid.NextUpdate) + continue; + + chitinid.NextUpdate += chitinid.UpdateInterval; + + if (chitinid.AmountAbsorbed >= chitinid.MaximumAbsorbed || _mobState.IsDead(uid)) + continue; + + if (_damageable.TryChangeDamage(uid, chitinid.Healing, damageable: damageable) is {} delta) + { + chitinid.AmountAbsorbed += -delta.GetTotal().Float(); + if (chitinid.ChitziteAction != null && chitinid.AmountAbsorbed >= chitinid.MaximumAbsorbed) + { + _actions.SetCharges(chitinid.ChitziteAction, 1); // You get the charge back and that's it. Tough. + _actions.SetEnabled(chitinid.ChitziteAction, true); + } + } + } + + var entQuery = EntityQueryEnumerator(); + while (entQuery.MoveNext(out var ent, out var chitzite, out var chitinid)) + { + if (_timing.CurTime < chitzite.NextCough) + continue; + + Spawn(chitinid.ChitzitePrototype, Transform(ent).Coordinates); + chitinid.AmountAbsorbed = 0f; + RemCompDeferred(ent, chitzite); + } + } + + private void OnMapInit(Entity ent, ref MapInitEvent args) + { + if (ent.Comp.ChitziteAction != null) + return; + + ent.Comp.NextUpdate = _timing.CurTime + ent.Comp.UpdateInterval; + + _actions.AddAction(ent, ref ent.Comp.ChitziteAction, ent.Comp.ChitziteActionId); + } + + private void OnChitzite(Entity ent, ref ChitziteActionEvent args) + { + if (_inventory.TryGetSlotEntity(ent, "mask", out var maskUid) && + TryComp(maskUid, out var blocker) && + blocker.Enabled) + { + _popup.PopupEntity(Loc.GetString("chitzite-mask", ("mask", maskUid)), ent, ent); + return; + } + + _popup.PopupEntity(Loc.GetString("chitzite-cough", ("name", Identity.Entity(ent, EntityManager))), ent); + _audio.PlayPvs("/Audio/Animals/cat_hiss.ogg", ent, AudioHelpers.WithVariation(0.15f)); + + var chitzite = EnsureComp(ent); + chitzite.NextCough = _timing.CurTime + chitzite.CoughUpTime; + args.Handled = true; + } +} diff --git a/Content.Server/_DV/Abilities/Chitinid/CoughingUpChitziteComponent.cs b/Content.Server/_DV/Abilities/Chitinid/CoughingUpChitziteComponent.cs new file mode 100644 index 00000000000..1dae46b9437 --- /dev/null +++ b/Content.Server/_DV/Abilities/Chitinid/CoughingUpChitziteComponent.cs @@ -0,0 +1,14 @@ +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; + +namespace Content.Server.Abilities.Chitinid; + +[RegisterComponent, AutoGenerateComponentPause] +public sealed partial class CoughingUpChitziteComponent : Component +{ + [DataField(customTypeSerializer: typeof(TimeOffsetSerializer))] + [AutoPausedField] + public TimeSpan NextCough; + + [DataField] + public TimeSpan CoughUpTime = TimeSpan.FromSeconds(2.15); +} diff --git a/Content.Shared/_DV/Actions/Events/ChitziteActionEvent.cs b/Content.Shared/_DV/Actions/Events/ChitziteActionEvent.cs new file mode 100644 index 00000000000..a36bd148d61 --- /dev/null +++ b/Content.Shared/_DV/Actions/Events/ChitziteActionEvent.cs @@ -0,0 +1,3 @@ +namespace Content.Shared.Actions.Events; + +public sealed partial class ChitziteActionEvent : InstantActionEvent {} diff --git a/Resources/Audio/_DV/Voice/Chitinid/attributions.yml b/Resources/Audio/_DV/Voice/Chitinid/attributions.yml new file mode 100644 index 00000000000..5d6386b81d6 --- /dev/null +++ b/Resources/Audio/_DV/Voice/Chitinid/attributions.yml @@ -0,0 +1,9 @@ +- files: ["moth_scream.ogg"] + license: "CC-BY-SA-3.0" + copyright: "Taken from https://github.com/tgstation/tgstation/commit/31c19654e0f641166ecd80c672ea05362fd19488" + source: "https://github.com/tgstation/tgstation/commits/master/sound/voice/moth/scream_moth.ogg" + +- files: ["moth_laugh.ogg, moth_chitter.ogg, moth_squeak.ogg"] + license: "CC-BY-SA-3.0" + copyright: "Taken from https://github.com/BeeStation/BeeStation-Hornet/commit/11ba3fa04105c93dd96a63ad4afaef4b20c02d0d" + source: "https://github.com/BeeStation/BeeStation-Hornet/blob/11ba3fa04105c93dd96a63ad4afaef4b20c02d0d/sound/emotes/" diff --git a/Resources/Audio/_DV/Voice/Chitinid/male_cough_1.ogg b/Resources/Audio/_DV/Voice/Chitinid/male_cough_1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..8ddc42024474f27604fe11b32badc9123224bc59 GIT binary patch literal 13330 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�Equ%G$d-k1< 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 literal 0 HcmV?d00001 diff --git a/Resources/Audio/_DV/Voice/Chitinid/moth_chitter.ogg b/Resources/Audio/_DV/Voice/Chitinid/moth_chitter.ogg new file mode 100644 index 0000000000000000000000000000000000000000..b7240a5653611bf7c7c56a38a1c69b4c3f7c80f4 GIT binary patch literal 9381 zcmaiYWk6I-)bOP{qy$8IY3W*|OIUhgNdWe$)o1DL=+4cmRb_zE0xW4(>Ri1GA^yS0PI6#^rm z>FNdm0g@Qk_j(MSE6M-bmE;xWQG5*tsm`DO)m~!#RYMF?HLadL5*Oqb;};SXyfS)) zdu-)mhqSV@m9cfPV*;OTU2L8_v~`yOd2K*mAyJT7i21RD^>`XC;$ECsoWugth!4#gsXD}hjjXH=+g z1$-71M8-Hih*JiHUO_>e!xfHP@!yLI)E=ZN;NM2A2uczMeUm(AK&e2D$wAx(Gm1>H zK0T-u3No{csp$scLN^#tANjb#13LxlX;9c=T#&=}~qH&uISI zU{_F!4Z>CErA4VKfFr<#)>EPS6yDOKc%b-9C}z=z)Icl%wNGT=|007va8BryD>3fOFg9eDnTIbpS)y8`~=ACiwaJSxI{C5T0bd%X_eFamCb3w8$l>*N4h80l+*GU#IFO0EfMI;;YEJ5#O3 zJ3b@40lJ>)G4N?EQ)mE$UT2yRr-OX!nVq>NgnuE<3h$wGo-3T&z~+O@8{HtpQRW?+ z9#sQEIAspe=^7Ovq}JdK&(OHSd0eTwzHD`EGGtO-J-%&eNX{7Q0wJC5&4oh=0%<#$j5Mk9Gn)!FKl7Uh`#I9eIN8?Z|Mb682h)!k z4EDbh;qIpO=!b5wCzAg=O>jX0SE_s0@uptMt}(*?WrR=XNK}VXMvqEmR1`5xZLTNb ztS4?eDrT-PZjLZ?HcECjt3}SH*v_8$E&i`=j(0sp3ILFbXXB1%<&IyGjAmDtx9{Zv z6@&Ny6UTp#iOYg(hCT9lw;39b@$$ke01 zEG1fDqco+Ls~~q$8@g67+0PZ2xlS%*liC9pQX=k7RzM}J{o_a34_L zVpkb}^4vyuL+=&kkLkfG-k9Enp=%ACRx-iI&s=Czjgs4F1E=B&Pzb;S|3rC1vD6sy zQ~>aj7*5C?oM=73y&eny3|(We4u=+I+6+LsvJyW-IkOTdxY6Jv_j+dHfcjcy!iYK- z7$5Bz;9rqT^q~qs&Ix>VWzb3x)uMuEQL5-rnNL!xj3aQr3!)?p`WaUsIeUsb)Ggr%+nyoYi-R={fv^4^CDW)SC1eS2|k+FI?t#4 zrwTD?fS45rsbYGb=6VQQ6HxP0bCXGg(S#qUd0by>ni_#fMof>}B9f7oo``uv^XW;1 z$%NnRM6l(A-^aJbjV_jOCWDu}UFL6Q>miWyiRPA| z*i9EpiJ4Xx>G#eyv$B=%*@*A8mh+jJGej25d0Yknz|`cz3Jxj72bQq`T2!Wzrot<#AaE<-M#aKAX;J-9 zZaNRRB6m?R93DX%6bt2mcxc18^3b|4jXczZB6meF-1KqTc)DqX7;40n3tgiNizq_V zn>mT8Mk@4XCd5NI(TUfDeke~?5V(bc8=Wa1cb74g6A}~+!(&0m!!#jiS|y%}q(p0w zFlG9z=Uw~6kZ9f7l`5utz{;L3#~I3z=hTr zP;lXO=EQjT6$B?l7sSJz@)F^2$1*VQF|YFemMDY<4@_GK5K9O=aAoNGF0Chun10Il z=}3846wIvK*BCJSocsP_kjVLK9t6_d{7hL-3=Ci}z-2%w5My%cH)?Q=sSUOiMHqpY zWZOk!^DCZOq#3Q@_!Y+4Od`Z=5;=bsYz397bJ=d(zx;T3w+8?YuZt8JxRZK<*oy`RufCc9L zNa#8v>fi&O6##ezVFAj4Q6i=6S=7^{tr~!5ku2oF=;4YP!E*wv~uYvq~Qsj!{f#jXb z0HIp@2LcJ{!w}B7uh?0y;ds~YDGvaE3;=p?$ZrfYsD^ao-V5!)Qv<7Eu+;!hvB6|3<|JF`KMuHV_!pH90J(b*DpKR`_6xfS1&tPc-XrP7d0L(21Z6E zMjjp>R&Jh3UVfgMrjM-5ENm>yT-;5~Y|JdIY|QLjyxdJqtnA#poz*=otRRt%ho`fd zm6e;Ty``nDq56Fp8Z|VNNBh!Wr%!buU8S_&!{gK zLja&!^J!K2tnYjT+hbK$!8YI2uiIpn5^W8pptp)6rs|`Ju^7jM%ORD%n;iEe=5Y3_sL=;HdyhlU}fGm2jh-lcF~9E+2pM z)=8=ZoMturY2(l~5kNwlsY2aD*5^^h)@C}5egu0$1v^lx`N*63Ws@bFM@1SR-AiSN zwV{L`s}U)ZOlCKy+o3w2OcdK%_23sLMycszNgbscUfx@%$^~M~Plq+tS%(OE_M0z0 zzJeKQw^5cH|A`)S){Fp}4aL0~QMG1d1;l(EPj{7a3SafVIoe3c&;50922r^;Vf$@v z@k#BW08umiINMI~_{Do%7mTXaM4m(ElqJ_^M_=BA5A^mIgmu2eD=?_|Zaf|^A1sgh z825ElRN6V>L?yu=lD2KNsCe+Y+`{v)Fw+DXNmy#Ec3@1&vY$_kzx$Z|&#H^z(2wr!x)@=< zIgPT1dr85wOIc1cB_+J8kKfq7PRbo>GF1||%TGw}Iq6f}pwyxNxJ0Bl%R7KWbth5(rDf}lV=4eg-y?7)*Z!Z z5!&8KP@r_iDSbzvm6@cMiru;Q38W>k3HB| zA@^5xYJC>edIk^uFXn>@yo$1xeoS_)A3SL!#Aaf8Aeqf~D$LvT_O6HtDSFX)E>C(M(P@LDC*aDC zGsW;)lZnMj`xVEq7v=>)`vmq$vQdfJ#(??EdL6g&w)l70(uc2Wm0`EjrQh3S?wnKx zXr*`!hZXumb~1{E1a};?u+*sV&oZ>eRkvbUX911J0-_RVD17%umYe6IB+M z{cf?a716>m7m*q&OgL$H4`)A`f3!EAT;h3Gi(C}td0wwhjHs5NZDiQNi{YqtwZEmD zH0VR8!ngKF$Y4fuVfNq|k#PL1O8bZzh8iL8w6^onl#T^QIeyM)b;jnNe-G2yC3TnS zlhp?{#AP4$B>$wPEUEvP9y;IoBRZ~j*X9UclHrz7m+{M*=7)cRvQAH(WM;oG{H_mG zE__FfE^@j9t0>PHNk5n3%7sA(-Z=4Au8SZAiNq85Z1XWIw#yrdLYMnJjah ztx=>aN(!$h-`_}%K}^h4InvcqZQeT^ql>H0^g84h*XviTnx!ni9B6b1@W$xx@_fqt z^}tC#%T1W#Q%fMW>G%!lYS{E-obwB#G!l%RoCeeG7K^Z+oJp@1v4=-uvwgj45m?R2 z(^H=$-LqgrshzM)2FT9h+>u?>d)IB7$bM=6T;GIqR20E^`J#h0bN)cUoMx z#!HSG$_s!PA{LBhn91tr>P4e=Q6OE8G9%rz(|L1uvNex}bY>}>2N+D<1FDtZq7WtJ zl~T-zb*tjqQ^}`e%MQn8sp1ZqYB+#=22icoY%V=|aLFl_jvFecz(1aUi2gw-+%CIQ z#%V7qi%|_Px>(itvy7`&)9Re?uXhwc- z`t2sFY^eXsx$T8QPA|OH`bFzAA6>|0lsTEGL}*5a&@2@|Z--+W)Yf9kz8%3jwR*w1 z67{D|J7RJ(_u->E>D>X|Oicot?pkJPP0 zpp93+I4XzEnvax@#Xn}8EWLY{C-VC@-z_Wp^qgrv>{ZNDx>!M;jEf(_?Q|SeM8T0V z!qE2<6yh>g`v!h zhF`zMFXXt!5+hM<`p+kivtPu@TZ}CsiTp1X{GY6bNKf~_IT6-t?7=8dn?CQZ-`AnA z_kU-V6e_X(@_{Tx^VT5qhFd+)y!#~V1wYW-JyPM`xM-{jl`Cue?aI2QfqV#OuhkCS*r!Di)T-eWmWU#sm~Z(b7J zn3=dX5qPK@zkV-$b|x-Q*+OFZr>JItX5>doMs&n;kt51CjJ$rIkDl3@6#W8xydd3H z6tzV6?EG}CB;9A^S_Z#`T=veZhyw{GBXoC<1Hw<%y%}&Ecl`uZC-p^p3KzA}kG^ zLeo45@)}0ywhrlve4Y3)4Q{rl_^M7<%_;MVV~twb3|$amV0`B5wslVQh5tZ3)%EFK zY}0=JEXkR4|AU_+Pr&wj0-ok7TC(-uCs=OD69w-1Puvg>{O~nWx6dz*b{#GDf8F%t z#E*?7(n=6s0vtc>?wEck?D3B|?nX;poU)I>%zQ6hXg?&El`egHQ=TmTV4_4syBuJk z7ZXX4$qzME*tzsFc_Mx)tN`ttleLk|2CCVXAawCD@x}SCDK*IMa^DauSW~Gr?3oqP z{6oS98QioFlbB|D74t@E)Z}6?dz~#aq2w&LSwTTY_l!=AHamHxsbro3z!m>di3yD0 zxFw*}Ke3=>T{z*%VZGo6s$tD99!x&z!zbq_ zK|y{+_l`}Oj%sP)e^%_<`;pgCsD(g9Jn6o6c9XPreTTvKVF`_}& zi@qlYX6n#=2TVqkAGU)iLfJUF>o3RMq*&K9vxek}cG*AJg??J!dcX9P-9${DGRyK=1?RuIBZzw540RG2z8ya1&xj!xoQ% zN*cSzDqP-EV9{HTiDm!!ZJSN$E%UE^ug3x}- zb&+UGazBc^{m#w7R_g$P=Nt!&m_%mjlz^OaJ=AJtf_sih8%YuiOSmnM0W6Fg93HUN z5;T$tK29!lx)kLWIhIaZ_I{x6#kiIsj`DXxe|plbv3SdJ@E6ZJeK(SPW*&};@p-tM zShrHIjigJ5(a(q{CGQ%-MsC9yt;tD5-wFPzZtT+f>_*_x=QdJ97Z zM{nE8oZg+;JCNjeP;zAHgw;e?vaZ#b)w?DViXE$tH3lkceW_~8oTz&Rm;e=JbVzCu4_AfvG%fS2#gCKL z%AA8$pR*38j+Cw2)SdmIGgh)4Mu{eVZL-3T@|Qnv?(R(e+B=80J|=XUxg@e zILn`EQj_AM9;mSHX5mlJ%dRK$DBYR7!_b%n^?D6yk-Q+OzO`R^Dbn!a-> zd$MI6jAtn(&Y^#&1#hwU&EX;cZn zN+%|;Hm2Y9{WuV>8s7Wyv$(LgU0^Kc!G*7>^E2szTf(cwEu)z{ohFu8nAO_te!`n6 zuV1bSzB5jXzW3$VuP<`v5YF|9#)Lwi9c@mG>TZ5FyOG5`O0BA==HJv=o;NdTyQ_wg z2#glL#O$#91T?Enw@XiXr7_EoSf0k#^2ujsAD|!mLUm$Jj_!c(hdQ)Cwd(Yb2NgNO zSfU>s-S@XjrZ@v8pIC_ODo-8kk-$RrFhPdjNeXRl=@_QbdM}dH_#}Rxu(j^)nfKO+ zjMXL`Jk!UhHY~DNM-?pcRTP{|CA=AF`;*Lw3urtZ_A7iCTUhzkcgfcG{?VXmR&TrNY ze6zph^6baVXz-JJT6YW{d%ssHxY%LzI?M(-7tb&_vK9B-p9nF8=RfEObedKgBJFYhW1*5e2PcG68dsZR;=*v|R zvfC0=K2~@gkCoiPkLu;)cW+DlntfRs`oueZloFuvLfFM?;vZsK(3)?1CP{c<=+m=T>waOx?i!<=4nLfls4fzcgT zbo%{YP1(0qdzlwEi5cJbagDsaJKj1GGT&84lg5F!qX?YGwe|l9^M#=ed_pL_#6P6Z zf5elhioHme)~DX6{%tZ|lqQutH$Ee2p>4RcXKpYQxGB9aORL58Ha+;6ufY1t>NlJ8 zX|gh81iD9%T`cfeB=B3U`%R01GH$g|Z;pG4x%r;EZR2O%p zon;`;B#?d9i>0jOIa_V=H(A?Y)Ychf)gP!f>w4BV?L*yw#Z&$q|vSe2H{{JQ8NF7r)QI*Sd(Sx%gfnuE_@k)-c6 zv_P0|N}SAY%M|eeKG<~ti)9=84ItOhdJbz$M#A6g3GGBfO%LXI!k|!q>_TBXew$Gk zKO_z(X!keqOoEu_Sx_hYXDL;9P=%cLj(ouB@vS>ndv*bmI>1ktij0V}Tp}1*oMo%) zTSAGRFsRvpdy@42bDcu$264sA5I#KvdOsv8m66n&^^FEd3?!wi%QxCL8aLTP7_@>6BuO{a7&s zJR&4+kuutf4g3^#Ar%X2&sdL}IbOImsBae^LCeP+Rn0XQ zz1u0r6WyWpC%xQr?O=PSgfGTAU**wJ3_2Hl< z*~QRZf)rLJ2(He3$Tr&I=g=FQpB;Bh9Y8y8M9GLkDW@ef&l(@)&($?H)NE}j3>h;k z9z&vW35W@lGi(?%vRK|F5~n?!&bH>FA$s>Iu0g~=k}|9GY^?~bXi6jcoc*yJ=Ll}Q zl-7WvgULH0V{SpO?tPCXt+b##js}A-ofiF-C5r@(W&!m`b?cc&n7S|CLkS~#zxY&Q zdbcY1;#tr@j@#){RPy{kTDftp)S8Nj^N~2Ph}?TcSQP+`SY0`0%jWQYR8o8KK|mGr z{fFi8mE^t$Vfb&OY8X_z1 zZ> za^iqti4k%wD)0v4EMCGE!OFJHF7a8au!+27(T~W73~236v<-MStCORl6!A8@A?r-hjWo$tJTNuaEYy! z8@Nfw`UzXR*qaBxF?tkJlV4@zcPP{Cs6X=HA6?y9x+jBf<}SfpMP#|TV*E1EFRgqS z-P|@ejrT)dg}>c(u5-KEI&81|i`v_p!ByXi1Do#*`nxruglm^E zjK6&(zf76sr9O+qvZyWKzSny=@nN5v4|`pHOzDZnDrP`Rn%J%5!T`aDOpG;&;eCeF zNzYBT&WoS-o14-W+9ZDhAJYsay!X_2Cye|l&&)S@dB*o_N;`6&Jzin?mhM_aihDbQ zoMoNwZPsag&fWPi>!)(2iFdxlnTg?!wcgH5isu`WD<|~LA>x0a z!`7B#{hmLgG+EoR9!Y%BlvfO#QqXY9o*&4{lVNm+MNbRK=K~fYiL3>mB5tA$N9@bZ0g}`Mw!y~g+D`LxxkTimVkj=zkk;yfwf&& z+VLl1woUJ)8_XMDD*O)JYQ#vWY`FGX5swJ7v?)xyXYY56g>)D>tbK3Y3z|L zW&2$I@@MShAQjyKZXMdZdZ1x6E9&{kL$d;tId!M!gaQwaNhsEirOx)qrBe_rhLS<@ z!PH#z^g*WCHJwufu|#1%XEQ%+?jp2ZMjeW70cmto;MdRF;q3^)L9z_KP?JICMtkiP zcYTMi_c6uRIj6e}DXBK995Zsdv6DTPx!h`#W9RhZF5^b>n5lUMB5Q40?6g+mDWtwo z4lOEZQI+gI(&rEmk6XN_7V5F+=ED(~hWRFdaWTD0VW>xSmHzWPhgg?TOXIzrl}1vk zK$MK8_5f~O`tWz005?Z*&cV>h&p7}uhJP(zaC0}`iG3UF++%IZ^|;rYwEF?^ku+92 z*QdCya>BI+!d zKz`8Q?-r2CAI|@lKb(JBjDvX?FjSuZR|$gsM+_RYRngepf{%lZmyMHy<4>o5aCXKH zmTtzD<|5_}mK4x?a|csLGjnGVD6J`!mXilc%t>iyZSs#85d1&i)RIzKAV3@dXk7@I zWs6)0AXvnbszlqQl9RT-h$I!UgGsp*^~UI2;;9PrBqQ_~gQnv(fj@oLS!YNBR~*n!GnxRd?to43m{QID0$5Afp`GOD`1Q&U_`+pu0sKa0RT%} z4R7c@=|}?UNG&NU61omNbXfo-D4l#%p?vHQ`9xZsM7qCqC$fxntnP2+`pYg40IF(e zGVk#a|MHmu08$=*RMFe0BCDv~h*%^@SOp9a2mo-N-ZLIqhmXcSuQDNh-L;~W#Wo@4+LyTA<3J`3$&x&n*|RE47DS>;d9My;_($O| zfH)FWD4x3fe=a5wRAGe9qf8}v!C>an&jrz3W32V#e=mZ+D(W$W&^Y_Cq*yBZ)ivyS z7v9<)3+!fuG-&DCRyL}GnTnFtQU2&r)2ZP=>&sa#-dPP9O*iw!R5zVwKfR?;{cFE9XuWYWew%8p^MC3; zQ-``ACDhpenF!M$q06|y9&Iw#f2IjtP{0XK?ytSQuA^1>N;~nDRpp#V1y@83PiB@! za|T~u?UlV6pZP4Wz6PJZrk1^Ss=Z#5+e(`G%C+Cd|El_kf2W880D_4$Oo`M?iQD|K zw6DdjhM56zgg+h`^_?+xn?I5Ebt0X0qNP{r=k$#I^c?20za#+GACf;Ms@OBC)HCX{ zXY5`?qE&k8=h6(8(c)iiRfqq-iu%{UX#v2MR?eALPMuap9SZ!_ZXntp?UH`sq?K`I z9sA1j&m3oPMW71RcKv75_;&%I`_)Jd-q;MO5)R$G`b$lXm-Ff}^BS7}zoInDql61p zEbjPSuNdacEqCo+<(ob`0;M!tcA#hRC8{6$H=uW}+ee{5!A4x_YGZ_Gj0oZgRRZ8Mf!lP5dl~KXdU&NJ}PvM#1;Z=L1 zsf4FA|3*`XKuI%|PKjGd2~Sf4S4IqjQ{4<*HP^KCmlrj47W`HgLJb%E`aYMnIgD0SmDg3=*RkEV9UUgWo>lxapm}LE zO(pF{dkr^xJzSYZe9ie(84Wk66hA{Z^W{b988;ct6!Sk_rkLw{m}@sfS?o34{We_n z_0!z+-&*Khht9gW>8F@)Xq)R?o9hoPxNTf3&NeA6&b!TOx@|1D{YKjdcZS&=8P3N zIz~;=Yzl>rVE3cF{#*a;y@xI?S2sN@i^s0#j2T12d8%PSi#F`Si@D8NvZ{I_9TfH^w^x`jeFI$c(# zfwuw-bRn@|M5>}hup(U%p%im%O0o&GVM*7nb>O25W6?k&*p9B~t)8Ml6QN7&pUxTn zc3#w|u5O#+q7D^hjsa$diUNZ|-^8}`qoqsx~8%zYp{OLTV6}lZN*Z$1V zt!N!svbAr$%y5}5ZPe9JZ2dE;R(Ktk9hD#G?R4PNZYMh1Ga8m)%)M&ZTE~pq@qc7X$S^`>}s8Zf+I6V0fMB!3VcW@l-(*6$w58SBm12SuJ&S-+jOuW$o2>Hp$P)!*}b0QTL&gm+oxL|=_mo_e$RAhyy zs)H*Bh)tn3wV+#3yO1FSwOaz)3V|h3u=UHqw=R>N*YWDMoC~@xC!J{vCKbH9t07o@ z4S1$ityh~qCrnMcwi6;Zln~Y0d0m&&Kf&Y&&g<2XQ)qzsE?Quh9CF%=Xbb=zA+UgS za13_^Z8m-^!izt%MM4HBu}q)~oCWnm=(M5Kq|n2ekxuc zelC>+Glg+VjZzjfX`oPrQn^G?!Q>BUDGWdlb}Tpm3914Paa9gj01X366j6df+^GQ? z-AbB;$@8$ng(Ic_*qrzPEj{B881c{nnQsH|u0)%`Y{!CFl32l5{oer;`JP_nSHfpu z46B=P*#+u|f1gu~000vJhTyTVXGmqk1`*`KhY;nV(J-{M06mC64;75GG*5U!er@l} z))@!~8l?PN;Nal?LQp#d;Nbpw*b)EtA?VM;&L4anBC?YvMRp4{B{efMb4y24O?_({ zEj1N06EhVR84W9AOIvGQeN%N~YZo;YB?Tn|^T2RlQ&UIL=gKZBYI=Hx!JgKZ-c~AV zYD#9NZfZ(O21e$A>F%!DI#=*JCK6==qCn5NL|rxHjcAN7uNMEtIY&H78lbzzcUq?t zyg>=4szQ>`DC(})fYJ=Lml6*Zu(QAG)p=!6A$IiP$b#?dm!LQk2AyWpPg_mlzgV)| zO{gJSx+*saaZWSEa8>Wt373chIZ_G$i2!T#AOid~u~xRXhPGb#4o9Xtf#OKR@T$8) zzWt7jG&REoE1lQ~pl9#?Q5O_KH9>SpB>^Jl zIo!H0R?udC(UCqBt-lhIDS(H_zioRl;98P`ye3}OnCfyg%+7fq;FYdRVdpFn+sh$`zh&H#9(nc!y8;{n$7xi)Y<3 z4&4tt5|kC0(h5YlsE`|sj?N3VDoouzOl|g%%$=dFUaP7kHbKD}5$&1I zS-uSNFs0ymRu9Ir;3bjIvl%*b(W+UAHQ>sw`CTKhP8sBp52AxsipFEejz+Zv$2a+- zJ)5x*`-W+!sJViVN7@*p%lLdeF7SM2M<4o|PWD>->}Sf3Z{ZWPjYV@ejvQZBH13pK zb9~DZ1BO^;{P~1WCnqZ0*PGG1znpv{Prf2s>OmmUDhpZvf}=GXv|UO(~ z9x2dZF3y;iVLVE{o_x%__5ipUjAAF^ei}?MEq`W-CMcWSl~6w)J`)m>b}zCMe75O2 zVQxt8D)VAN@NDDqjqUyTffeLWcsF)@KUZ07=&ezx@VvX z?Q+SV+f$ZrqHa6PrwrD$nL3MMK5TPxK)Ob)Hmvb=uN%baqN5&WZz7UY4jgaxei86C z@)YwE1pHQHN6+%*jYMNPYGI#3B?71VYKD`}74W{iF@cl~Sb9H%S@dKN#;3PVcjggr zbLFXt{iHqUjH{ag@t8KBPlkU9rk1(o&B*61ofx6-LHw{49!LT~G>6AoAAl&xQUtab zeD{uLa+!YhJ`Y2^37%5ULS4-nHjw*8p{`2>oF}}I^&t!K>#|--C)|scvIp6gw)@itm;T9y*E?%whn7lEOSasP zHN=N2ZPskV3R!8ZT)KHhfp}Vj+W}v8xxhcSNl>757e(GMwJCFUUu|Xy2v)R;y#2*s zFc8Hm)60j8CjRmJv!+~EBi>7w>qBXp=d0JCEMc;QtQ^$rwXYrGQWpGndXt!-V4nNq zZ;7NU-^!NH-_GvQCs@L6OJp;*vQa>y1$F25iC;=V9<~lbY?EId$xDYZs6H2WDlD9B z=IrV|Bh#69QxODHj}A4E7);^j+6vrN7_b5FFmJAiuzPl=p5IkW8=Mtt)>+5Gi^Gk5 ze8+u#>{&L_%sD@;*Lx$NZ}n{H9vr#?sERAPb*&q){yL%Y6?$WAi$eZpdhYXOa1--AYEe!27HCDnZ{*6;#J|D39U|?C`%(VJT{cZfG zx&ZQiwLryK$?;XP7ZwB$9+o*Ul#wssPQxEdbK^X&yYI_srVRuOjDPx1mukU~^n(oz zVH@5^xY7TZSC+}a3+gfs#5wK3TtWjN!y4kF=pKIM2rxQMR(5AZXs>-2UvW`xortGb zb?8^a-y*|8hEpW*X*d>lS18Yxh1BB}mf0QkV}?2<5Kt)g-=&XlJNzyHS+~wj$FmTZ?NLp3C8f5rg*@au=tO5AS4{5mTb|0f* ziDuHyyI-D-wLZ=cU3_&jlu>cv7Dk4FfQN8|cpu!z@@|`_a%_I`X&D~*v)W6`)b4^pOv-ap2zc( z>w4nM^7R3jeuJ;S(cJODFfs?6QYW=M`mAyhuIDX&&snIzw?(?# zpmosncsoV6D#Fwl!WbGMkzB?QW+LNzC95HD@RE6Fpgcfz`Nt1~vYtuh4jY>48~iFKd#;!_k40}( zxNLLELDuEt$yt#z#Be0ZYqql-nS_W!&uV@$o!f%~TA#4a4JPhv8c{;9TD( zbpDV#uK+%~GQ3{bPj&_vX1=5)%pfw@9Kx&WEPqgk)ynSBiNDgVO>a_kDhEuU0VbgZ zt!iH5xiuQhW-^d&d~VO(#U~K%5Fji|Qi2e?A2_+Oj)My5sEEKvfQsj29~i?O{1dP( zUId=|QhPb+A$@cG#2Bo8C{X4MktVM`uRfb+l=G4|>hqsf7ju)MySJV^uj0(@#WISA zI4_Ry_CZ-VJHM`#kGkWYtv8kEAj%59SGfynZ<58!T)?);ai@iOi*Yc^7Ra}&tRnn9 zri(FlDys|K^ZSkO<8STQ9RwIay$AFj$eY6Lk%blKR%iRhhh^WW-C%x-EK?vJDux0y zNT;5^fD5e3cxvh)gFdSD&?(&+oJ%-z=4Fp<`5oa07Cmm-x2H?t$FDXhY}6Nvcr|#v zC`>9$_I2#`u)`A2F#to}Co&#+FOz_{<2Y_lUKR{aCLTLcDz=OoMRdt7;&*>qZOjl9 z`h;iYMyR>gBpJY+@=65J0P$n0v&8d9ob4^vV%Vp}(5dKk^gO~|$K2c}Ra+fg(`0&) zE9wi7(Qi^8jDrx#mD^N}mWGot?_3v_K;zz<39$+w&-d}Fq!3rjI5|#ogh78okzk8T z4#K{v0wZD1J0kjH`bydW9aDWhJvS{F_2Rm5Q}!#aO~xDIbJL?GiY&!n1*q-QFf9q7 zL{tG38Ilt{_ZRk*sh@ty($z$|2(_x?HXevG+w^0V60o+(kX?*qL{@+6JDw`kOM}<oU`sQzrvy5K zpI7b&X5z0fM83&cXjp(Si4_uE6OyO_7UI2%T0>JmJB8;TgO zHPMH0;&Ik4&MD-b&tRjk^`$VyYygnMhu+j{StR-U=0_9K!<4lMTT$g z^~)T;=&T<)I6@@oyn->JqFHu4Rb`Ql4e6%YUOVpdN$K-F62bWp!Z$B?U)=~v>d~)2 zG=q*UUAo*38(G)NI&R0?4m^ zcpTzpO5%#$W?AxOAb+{)Q*o{>?X!ZNMtU7Fbwg%*Q;oBIBgD(czazEZ9Cd0MMh)Z(B(-HC{<7ajhH=l=$zBc9Fl{lnVVOff4 z7gB5Tna?ms{tE6MWO2~fEDELF%sr&z))cnZ^q%Xdm*EZA13bXS$LZlA^{}!qL3$q0 z!w!u<+z-P>4foGedv5IapsoQtmz|f@s#A+SiwEQMuS}E^(CIp{msunz@)R?lb`!2p zG`@c170wzR9KAPCH&9aVzcj&+un(~Qyd2IV4;c;Al>VWSgYpsX5MI}664CO!G+~j` z;ah)*glOFOF)X)l)jj=T>g>L&+<`5B%GCR){2sX|jGFgvT_D}R0EmVAXBC=wr+lK% zx(EQDjjUXW^mrr+$1zJQZ$?w;C8P<6IC>lde0bZ8&OKlY7u;+HQGlEx9{YH@Fp8fJ zzFtu*nM>;?-{pC99$XE$(1HFkP~KCK`<=s2?&2&U&_eT^=x6u+`C_ibE_0)%ULFu> zc&GSLX7K|62%pNkrGXp8GkPvafhRO1y|v5ZUYLkzj|*^Y42Dbtfl?Y5c&)cH|D^Ko`Dx* z@M7n*$*_B`hE{j(FlR&#@EtvlOlj|;c@YsEkf~KBZMf-DFe~sqR?>pX>G@O%FIsv? zO8EXs2cS~MBs@8<5a;pt-q&GkN_C*B-5G#^^vS?3H@FDq=^%cv5cb52S88dhb#)$J zeWVIOg#MfdjT};|qVIo(#=prUuy4)WF0sVsczR?s4Js{o?N_NPC)3d_BnKKdQuh`) z{CWuMTIRIcp^)hi_i)(}`_PMdj@ln4rAIs)8piDZ*bxy9=-w2a1Wge${KoWbiFSf> zq1=_t10nPGCjfqc6VG5QT#tGNs{|>~!at>=&8Mf_Gg#xC5`|I|!UF`RReT4?PpmY} z!?ETYJC+zf1YJ~<0OcTuW1FX6AT(CM4`U^UHIh5%bCD-6!F`gW|5t>M@$%}r)&!x5 z*0SP1<#Nb9X{f}FzEwJO<6kfExt}ts_P(OY?#)w5D~QJVn9^B6b$o3tj48gM=j>Sq zlHpe64}ST0=XQVyZlC#TdI$$3@1%zTPeY+6=<7#Zst?|7n`mLzqac=(!~~8`w^&&==tVy!9YStdXa<;GuthTD`o}55dV*mbwu{MR8P$tmSNycIq3@! zV^XQJbI<(ctfdzH`*59m)wUZ+=L-)~dM$exmdQNzSHPS12M5jK_?6R}cVO645p6_R zpeuafB*u4Vpy2xO(>VbFf&J`jm}nk@uV^@ePAAS<1IB&@N_d}RW{(gLt~rVG;gh=I z6G}kCUp}{{6}x{|6fRg=(9iOo*JfngzrZe+o%X{u$WA$jq2gt8SiX%$b+t;*=vbDG zxbJG$+>p^6FbJ?AB$Tq5<%h8{d9{43+#G%yI8xSC=&^Gpm*OJL z%g;KZ3feqj;OMi+{&8S8CuL-$naO|TVKfC#?h!f_v%caPFD&X=&PWQ9vqa>BgEI;- z0Mge!5%nPeQ&cf)u40w_L?S1~^{+2|vp1{E9(nM9o86@o5*8zMj>pt9Yj-h`1F4$` zA-!g772DC%r-S%PgAb7e+poW{DET0)6aAvqR;V#95`JXF4uH7-YJfH3$))%ZesoPt ze3J2$qYZS1Reqa|qU$;=E9TR$TxfAh;HR91t(7(;0h0q~$MMPXSDv`Y)GVjreBm#@ z(HIb<+#}?=A8~s6o+8jYkzx;2O4ncFl!Igm+dFV@Pzdppy6kr>jU1Yi*5aNNlJ`+O z@1E|9`GL<@j=e&i9QxeImO)0|HL(Ya=->+VRFQ{=mSPzVqCuPL<bl44{=HrhAYJB7GZ|96R-ERl$E$)bFmON%Wrpv8X8bBelR~Wd$#4+BJ{l6 z#J7azN-+1%!cOAYMfeWj%se&H1>S7}!w9>9!pj8!us+XoIK90{d>iFUTl3x^JSLes zrN*)WO$HV1$c;@xzD7^Z`yskl&-;93wyX7rq5{uSUMNl;Ldjj~+`iwQU)6Fni;XKP z-Tb#thS%}QRKsGjVIe-$YjN-w_Q{H^J)B{^haK8O#vx#J;g|_82#5gSb_i;{DxR4f zmlo>1RJ-c%k%_|3#bQ+?`7)K`F!;ql;@w~{hAQ84evm4RF5=#j27V4c@5_LBBSl0w zyR1Zt*(E`$@Jv5FY{!S=6FqzM3xjLrdvya{w~gkYjW~zS zgFr&-oo~aRBT-WwN;;87IFi`4E#zXtoEzjGCrl7kXW+n^BNkMybL0-qwmsIO2fHz# z4?zXBp6s0<+K{yx%>^6@ANV6Z_PhGa8YAkgRhrG`%08FapwXDYFW*+h$Uur5;{N$4 zJfL-R@*(sM=BgZ;;Prjd8HNcIq1iyl_&Ujobc1-PKfPG<_Sl%Rtu4>SZlp6E=Rv-O zO+maopXW-CsyJ-r=yET|l~QU9aYQ{6{Q*JBFoKd3!B$3GwOFh!Ca7@GjDS-oCWl&) z>0I01%y*>N&a@mWkj}RpMar=2b`c4<7kiVrAR~-n{)ZHUZ!ZKgvIn1_|*kMBf+to9imZA*QhY-fN*qD%lVn8m>$r0P6blc_L}! z1MxuM&2kILeV(o8G5&5Y=A3aXURlH)LI&LyCYIs-JOW!fG`5(?z9i)s6eGAKmCK=Z z3Wu&rir>1Cz2bsw=n9@HS^P@O(Y$@wZsT85ObkvaN;3=;+AHAbxGuhGBjP}kQgsaR zzW-!m8ThmoC27#RU9QE5F% znb_j~NG9anl0P8o*aQNyz+c@b?CwkvlyG*ImiSf`rjKuLC_<;@ zlk(*lm1@1uMSlt0hfQYtgh!3Rw@L+m#%SJ11l3!)qROM+7pn~x`m9M^7JzS{X+gqI zbpTAELMDeee4zpnkT)Kn0pD|SOV&rrnI%%BJ>~E+`U+qF!Z+RX{(@Ba;+uo42=uYV zp=8D14X%f=n7m+bP&O(!>6p?Mb<}h&=d7ytQUxF7!yoZ!g%#6 z-NA!;#^VC4kIQ?7jiKom2GCicci%T*iHNrNqUi=2Y%W!&!Q{1zg2a_$xe%y?jDeT% zpJ~&nVK#pyg8(ODOd{aB$AKjfwcGpR7vdT}EFeJogrC=8kKh0N8bF)ylL!)HN#Q~U zkVWlY!AB6`KZ*qV^mPgk?q1dF6a_8a?06gWP+Nwory*D*2+e)QF%Dz%F>ft=eQNaK z6GeeH>c~qJc>4MN81A|xgMIcdzi2qn3@`$4Gy>d#z=>;l!`H+={A7T@&a1S>E_T2G z8ftCjx+LuRb+izZHv}s8z}(wl1hQ4RN*1RW`39EcFmA$lu9V{gn{euLdD?!vB%~?V zO(J$y)Ug7x7!Fk;?-K=o@*iZwE1KR25c+3j&2DnRf3GK7))Quldn)?!VD-u7&VSL? zJ3zFWL9U0kJu9oXD#cQ;j`fRyL*4cKqG^b*IY!+%`ygK^bvXKGZqCyNZ*eMsQCTGh zHAsf#O}7S+t1cD2H^AySaHh)j>QK<59-18YG&FExoa?4GOwPWZ+CwNpY8K4B0Kmd2 zDRuJYR9rfB@HEB|uiQT?Hi;0D2ROMJ0SnDBhn--@;i{{9z_s!@GKX3$s7$ZW!%M;8b2$vQBW{`d1$}t}N?Y1kN7g@GKBzVr?+D z>l6%4#A(N5+6<1WU%jujpi!c+;f>MeK%81dNt@?}v9qadWEFpf%zrWK^LEWg`JqTZ zP!kq-axaQQ-*9uo>JYsF9Qfvj)~&Sc&DfETz4}226Hn#DUays&r`)c;ymtxDQBxAe z7SMR|FSq6lW*Lm(zOhpZ7a*mV)$?`BRs|p63=G~P+^wI8;`BsUVD}8SG}0e+>KBG- zW_S*&9a-OzAB7{#rT4u#2d?Ud_;q%zW}W+Vm0#S{Jw9HX$Rp`9DE7G6WuLK?W~NDg zz~nCs4yG3!r~9~s0C1RX|MUd3lP>kJB>B8;#oWpJe3dk&Ieu6J?y@P@`5y1OtgwQrYU>50^Xfig^>YR}3HP5*RxtU+E2%xM;1Pk@+G>L2y=2(% z{r8(bwfDOfJBRY{OEd4em>%CLMk*rhDep-2W90Fg=v&v-cHQO=j2ij+1+IoVW8gZj zc$>v7OC8d^^hA>-u%s^Mrl`AcoOv>-193~nf^| z%U8dr(jG~1B=gAu!W62gUW@yg)wNVFZ=GN2uh)`cla-f;ve~z8N%N3WmksP+g;{=F ztj@f5!~rr|vNgXh$^j7h<;xU9Y7~iCR_|E6Th`G!U-yfaBXD`tn=LGzD8y)RsWsxp zRVR{Q<9lfa9kq=X3)bAziPm>xt+E^KEw@w4=LcawV20Vy3gtPyH@!BLgRsvl1oocn z3L;y(*R~Hu%OktOVJk}?i^?b+exu`8!#Ou4kN8{O!mCj{VQGfp19^H#1ga(uFtkQ_ zAK{sQb!3tBywIJaIYOOt$3JPny5hLL=vbwzU~Jk-Y|L36LS1HD)$M-&4nxK1&BV>f z)##jwVt{!M;uUury@1HwZrf3L02f-M|J<9B7uJ;yx0?9WBB-^mN-E{!roK69;9kGP z-qnIftP$yiCaJ(9lA_H{sC!TuO~os|&oRD_q`ry>D`U>$#cRL3+4 z8atO+o^>|u?`+kD<`=__8H6;V!m>bvyvDxHjTfo-P21tZ&BwRgPX}|yL|ue0YP0>u zj*)<@;bZf0_j}VuonW_Ae!=YUL1tM+ZZ$Z&r0!%RHZ5l!(Y`ySbpuw;xoYrEw7s+_(Fd36b$}-x z^9~H8O(XJy&N-Qw-!K*Hap07^AX?`2R2O4Lm9=hcHZporqfcUphc3EpgtJOQjmg$o z!FVmIB4u1GljLsMS;5kUYhs&^W5%K!xx=)d#!R&3$>;Yny-p+z2bIlv)yDOu^Ux!m@e&S z3NBGxvR`MK(E-(iD+PFGpJa!t-5qfP3#C(0*qZ5dbYV0)ZOv?Di};0^D?)R@Vy){)gq4Vrc_Y;xk>U@g2;lc z+)sbs1Y86o;;V@E^YSs*4wA|onCGwBabRR+z(D8ow9XeGsN-|7rG3v!df@9!FP}aG zaMZnkrz3{@c>7$`{nKxOibO59-OSMgyU5%AO&u3m;<|d@F|kOOSTh`nSfpuURH>hP zQ20Hs+X6wLK;sSr458Gfr0@nyESgq&e$%2rcP`R^SC>zO7HHp|j(NE0>x$b=O@(YDM$ya;PecY?nbUa6gNrVku$6Axx&uI#6 z&3gy{V@!KRDh5)dJ#lu+5LhxII_bOL8iIF?!YHHN(JkOz7++{j&+`?OJ%A z=1F%fihZ3fkoum4>0Vyf+z1Bvo6rPz{pN3$6!0gZ2^N~rwDiiuLAATKlaiW-k%@)5 zr=!24rm3Z>i;9_%xu1cKhMJZ6OIJ^0d2M+WB^fmpH4P;r3ky?cM@v&>X%htn)ytO+ z^mH_|FJCq`w$nh0e!m%=o%!KRvnLIb z@2MyWxgW+|c!P(1(H*dyYGLN?;|gdsnOS@?tOz+>4v#AIz5GxrdbAkeTTXp|v`mIf zFg$*-Bv1Y^_k)0Z!MB_JgWBAeRGg7IeMg*v?GN=f?zLYaFd)w{cZjCsoNe$c&+Hav z*ENFbh6!xxnLN$<`Z|m`OpcorX1Pz+D5LDsY-bzNv(hxzZMyNtmdbaj>zPEhOLLQF zq|4&t9_+4SClbIs}4Z~r!97nTBO4AS}%deet zAutNn6JaracuNunLmr4HW$+!tTDo0FVzEkCY^a3A340(n_~F(xBi|fV?4Ta4p|lb& zpkXlV6X&`Y(b_PNwfFjYgGTVTh;zaff&Rf37J>Ia^}em$Q>$NaBa9p1vc7*>T#QdO zuvKG^q@T*;9JD)XeE;MbWm_D@2e0KAkRcj#hz*RdFVws{tr|***!%R;YQ$V9?{V0Z z?^4XmUMAWP#Yxj;eHetf%yJjcfjGWiy4hEKxM*C|RTVhu8)f_0d-Bt zQs>ZWCVGJJ&bODQ_G7$buy?KEO@Ysq0M0UVPUAWly?48d+C8GXuHIa4gctQ`QDzLG zJBL{FE}Ot~WXr0((M-tnPy`Mj*{gshEGp~|lYoB&pEpKd3l4Q(JjQhY%-hsMjY=fW zMG4$HLgW+g@?VPv<()m*$%-4C)HY+~9e1xe!UKjsDBn6fV#3ZXHb<9}sC=h_^F1{{ zz9G$x|MT7;bLh=C$AW63wa){ZvB6s%LtQlWll}vFBn()bFpfiBb^A!{Ce*w37BnV~ zpjA3l6$~yfpE^||Oqtj1TM8%!X7B2KO#$+~(4pz@{D^+T)U$DG*NRV=vKJ1tDtRE1 zVQ-MBna2z_M)DjHPEy70^8~w2$$R(F6DEW6X7)=UTzSl7Wl?=R56#?}~Ua2|~H1Ve19;Xm|j&%obb z1hO_Q?!AjGY?z1)~Q)tKk_9lP!U+CryHAQ zs~fT!w0vPhrCpVoW6MG_0^c5J(1BebEze zcW$JwaXV7^b8k1}+RS`#N;Ef!I# zG1sawX1GPCq*aa;0>A?~mp?X*c*GdLIy&vx?REx^Cn}H@K^< zl!)rrN5|d-XRY#N2}LtDH+k+D+hb{PE+u=ic(pU)CRS(T$9~PqE>N_29!b)c8QxyY z!a4JoI<(;dmz1@V#TLXOiF(nr_-|J6Q*g4`N8(xzN6n{)?%tsf_4S8rLDz7zNPZa> zYW=P0zQacwU+D||aZx?((5Bjy4C+X~W7G25ZeXd}ep-%-_Whm#eN(?))Nkh*AMF{6 z5!4nr_nx<0NcLk9hH-kxt<7NTVcA z1T9r9jT$ztz(05U65WdgqL%@p2<9f+AuXppRZfStRiD5>~dd{iI8P-w~_(P5Va&%J`%SEx*mlbgT|V{H2cx1~er5Eo1FQA=gj zJDWOPG%+RY+RL-N!|^UJGw4L}=o}FDb$yGGSC!-SbbdoD1+$>VYyD+oz@lJJv_2Ri z`=K_-w?7CP}fYi81pob0V`a`DHGco-CkM2!|fqY06k(1#NBc2 zgfD zlxL!%S+qxknDjHgzMdO5?9yGNhb_SHa^j21Rzv8Pm4YFhiR-fsOFOURON~TtKXMbWAROH6tjszt#$%>$q$7! z1T0s!LmKltcAerBk+INU=Z8#xCUxy%i+@7r{Dpn9Btu~nmvc=V8IY7imtPd84O;zP z>aeT4>chT|6r-5>VJ7eKD6>-d`Q6hiwR51Vx;WlX3^nG1ZZS=S7tE@Gj@R;O6H729 zH?7;Y#FOR*%PYL+lglv$LJ@Ck-9o}_e*>A{<&Nq1-%5T?qIXdnR#ahf2>M*kE29jO zrlLW!x$Sa*Xk*DKGdWeMpR*MmSDH3^RQ8rP{_x)W`9Rr<3rPIVHj|UP{`L zjZxfTuWY(QLlM*StcgjA$?Dtz%$xIoz;GkT+j0zKsn7G8AGkBq;o}m4p8hILXr8Qy zvLrT+n)0LwTHa@36q)MVm$#seuI-Xuzf^_&e)7F* z{G^G~G|METZ@!Ccl2lY6N7*cg2~kOUw3Te4bGq z-UPFNW938qSAEO1yACanPc{Ba+-oP=a8FrwH*MaAKU!w#d1TA3I%*`xQBz5bt~%mo zMVHyUc-SeZ%1J}yFq}$uUv#@bA`@KEZa0_)cI&=SdRK2Ar(VE#VxUX40MoWy=i!_@ z9YpI|bPuv8-mR(AI-)lyS<9{#Y3I>z)do2xxnmHSRr|R6o7)<4yoD~^A99_+#P-G4 zeh4^qb0MKzr8N}YRjlthoJQVxb*ou6jq_UWWNcO+z`4--wO*3~T$j#hTNga+p9G4v zrp%4$tLG6>e(YTEQe|alJP{2vf4og^FY!21a8T}Ol#a}M;avD2-%HghGDE*n5`<-8 zP{v)T<#Sn~$i(KhE<)?}e)d93^E4e2xeb0&)ECG9>5A;^#^^?zyCZEhUkkYm8=}A1}@|go+t&a_eFES8} z@RhaZ4b!mB^8J*_u2!VZ)*FeyrD0{aZ+_hh)*4b``TDA?)$&irykzL2n1A z|3D1xXE-)C4%xeYKDAt`eX^YItVi$lM$;;Jqa9W6i-kdeR2X8kEo)2Y?X;&! zL+w?Y#YW?--BVp+?-5v>PwU_$VpDQJ92&7`$SV$JyOuevs(ca#c|C1TL539P50 zLY}=0i7}pz;rO3Q*Y1z=HD(r=f+K-AF-4t8E- zwe5|2_A{UM@VnF$5$gFLj;t>uVh2Bdk zs_!LMYn}W zW7ygGUa!pJh9?glU!801o$NmZXGh)q$r%vM*M_d^7I0y|Ob3)ksej`TR_kVg=5#Zk zo)vxQ+uq;ImNcu1%0HTgP8GaH3Ar%{|6D8(IGnl>gzFW3 zk*>xET%QTF#s)*+`#u~{D2hIJvR}ku+CT(BNN(|b!1+y*u1L%X^_3NRy`<{(?a6kM9@X zxy{-(XpByC^Iu08Y57h>h)1K0eE1seJ&%UmaP-!$0;Yet0AL06;qGwf^-UDYpkUU( zyl|10iupr{WGiGlE)ot_)I!GT4l2QVv$I}X_uqtI6mBQZ)F8RnhgDk)UIA$a5V8I9b~sr`%xO@ zg!4^`qWWpib4RGcARhw)vO5=bi3pkVQ5o`+#6c;|BWRCrijq7SDrQa(r&8lb{ZXvI zPs=g5SmOEqDS&-e#O^cd?S4o3;Kge_fJ@+Vsdot;28C=$Re=(!^;hrAb0^YGY|o=7 z;hbL5bjw8Oz$m@1ACEP?{KUKa+WIGh=*4|&+nAnd$e*~vDt(2#M}~CmSZi-pt9fc> zviIJTzL9V!qFC_Qq2kV>k+TGK;$_wP5y-q>jYUGQZtf-d{x=`>!^=GrglSqc0R1IQ zLbDLg>HyZ6s_p|dxM)>G9<_*iR0zLsf-(yxf)W!R5fS<{^aaT~WIJ+L#`80!zCO7I z;=Qh8ptl76#UyBU_%%l01E*=z5vO}U52P%^?k?yhWKdJ@9>zp#E_#}O{+5yLe?$2= zke1uy1!}T*l*~_i8=DOz-Isdx$RyS9*j=+b$@p2VS-mGP}fOg8ZA%7;p5x)R`$~ z5m{nI01&9rqXY)K^ZRz_x{f@w^%N_HMdfTSUYR%O&D?JWS#|g#L!XJ^;@VCCMNVZi zd#84`-WaF*_HvMudwjaI;!#5D01UyYwg7{)fS#|p8z%np&n@$y(MnB9nhrAR0|~7( ztpVLtgpG#XnH$U)I3ow5$&Ti{EN(vEByirO`Ue@M_b?ZS=YjA?7`ez)CmuV{7j zJLK;3e%g1ea#BEWf4-Eq2^7Wru41KtHl2VBW3v&Dx^JfPa!4kR+X6GGRR8WHBZwGb zoS5Uf5GfdTy)ajEiORIl_FC%VCN7ehGB$wPkz}V|Jmw?{yWl;v_IT}PE{B7eL~JtZ zD43_HKnEc5F5n9`wq!zm>;K1NCf~Or#+HIpbm^d>lwg6d33h6ZZVHz|C5?s zV_vc0v}p=kfuHWQx~{4=dodbkxAqN?sxC+VGfkY*ChgO!TIN+&y|O&Sg9krn?_;$5 ztKu`4ZHlvmhZ>=!*U==&@rQEk6?m8!tv>%FKPZ}J9;dq%D{~@gG|eD20ndTmwV`$k zftCENHD52-i0l!AAE%T0WB;5AK>QdgTpKB`{EY~3+2_rL2dqS?tiYoCOalQo?Vhb% z#_vs-O7l+>Vur-nbJs}%v_!lS_S7+T0}a=@CqDgZ*Bc;N~G+HzvdTSoULfK$g znVzUjAjA$|yV3CqrSNp&nF2+;AQ*|CHacVgv{nFNx7{yno%=`Kov`1OPJl1-IbiSBmQ6w}oSHK2p}l%hrrXlmH1zQJSieC>R72*E){+ zx+dXvt#Xf+f3*T=6LlFgQ_CM9=IGl7b`C-9h~isI@cM$XkAxi)LW0qXtz)aEN%}sO zLv|l#n(_u0zq$91bg8($QV_Ob3Hk2LQHGk5Ag-m5VPT*A2mne|0OwzxJois;ihQ9O zyvW`(&jMN{zas$NKJm#v z$-gD|l~6ZU0L)rgvX?8*ebo)Lm;6=m;1?Vd8Z0r6RAiK!D|21!j(G|IyjTD&zy>`s zP8I~z(EZSwR`%igh zd9EYMPoCR4M*D@6484Toesp690WR_eWu=w?X(nRXfuT?WCZyRN>B zWZU=5a@ogrpHo0}nUj`x84&1?W)>HWBVP6ySf|#P6HBH>^}G`a+N5033dP+V2aNVe z_Q|I>V>+;|_&f>X#W1zV>blA@$kItbA7m~zz?VqX+I zGcy;(1>X*~WFAynlM0@@Ue7aA0pj}N!G1fp zICd>FJ!0!R?u%BFo=tfI>YcmjOah)-FK4RQTH!Xuyw*44Ft@qRzWxcNAQr5iPf+sN z+R0o2b}ld}<7SDF6|t%OQY2?DYV&QdkmW?XVBO zZG&($a^aG1HK{h{esefyBI5;XKK?daC6TO9SmKIj9)9J5&<4Qdnxu7YVo>(9?{>@F zc~hjnvTy*LPFVVPaPBUnh5*cR{^}QZOYGMfK6H0$$x_>&aJbbk0HjV>f-k)6S9JqT z{Ob*mNOa{&PZ>Z^ zx!&Zdrs9Rs)2xRUU(B@VBoM4f+1$o8yj?d$=8@cN;-Y1}R@>g)ee;gul@D7}U9Ow1 wN4+)#oJI-%00Y|niGol*37I~Yt5Q9Yb%e=@;zJz)@9h>M+rp@rjJ z5#&X|zpA)G{$^?*igzvl`?+g*2jNIR{!Ju|{Qo`OsQ(~(48k=n-kWnOI+)R0TNtYU zMNcnH&-0X<=PA!qUV2tV8(WL_4knH!woYt!xFP8OG-Z4CTpa>nfhF8>^zDeD2sHp8 z0)V$nYy?rJ(rj7L>8$Q?(Xa1v?N0;aq66D0j6%3O{wty9GbRH7GyuVh9hUJ&+HwG9 zM!^#1kOs3*5X_;+40^Kw!~S{l$jCOkBHPM#fQ=aoUke=o=_2u(!H-n=E-?&X_)GyN z{?ra#3^_>-IPBlkKH>0m(fi2pY-C0$2yJ}N2ou_5tr&WS%TX~bBgZ|aZdBBWq37v1 z09#A?SAzX_9`xW?o?%cL6FtMaLm$AF9p?a|`e$1700NvQ@ahYxbSY_XDRuuZCdI=i zZ%ClOc%@WS<<-E)Sx>{oWWvRH!o^D~&QGVtORL6DXVOpa%U4O5`Io|70Jx?S%1_!I z_+B~kbvlZG?<=Pl-O+OW$8v=KwFr014geC|)a~}v-5@oTIYu0y8jhk9j`9;ADefrp zzds-U@(VZ-hGf%NO9U2g#Jj&_L4ar}(y^Z7{nHazAs~H)K4B=~s2@g;QJR_=X}2Hy zuIzuZj|8}G?|_M5S?ev1QVRhP{-@^-)r$WXW>+^mpd; z0N_jXmy7=^`OC`xaB*g25PJ`6c^^;jle?s#bwFsVq?PD79yiFvPoN+dhgSYcaV&zp zw#up;*M6K8tt`Wq^^Zh>i%M@CA&EixS4cj`IrOmQfKu_F3%AcSc#r1Sf4qYS)NhEH z!S@#rhYGK#nyQ+Hi;dP-=b36hy-DZ!39tEyP=ouQ|0iSpx8wkz(D?q9$!Nn6?#?71 zg=g6REbxCxjy-AT7wYaWOtNK6^21O15BU_2_`N%!i zEHEKAK4l~K8_xfb9P^-@xS*VXptXQ7*1%Ycz=XWoZ`M6UTXp}>_rE3Ql>-y_f|4WU z!1N!I^MjlEIVeqKPvnpOnWN}0kf2Ud_y2PN0N_Uip6p*e@o!F?wdM!Gs>1miuovCS& zd+SX2EuMNUQruyl7;^@p@5W8uRXfkKS|nIle*2!6z?zqrn^$F%S5&C;Z9VT>UQd}> zUQt0$S#f@m^%e*%`kq(zBroqtep$g)-jl7W?|F5FJ!K_{MfqD*d$_Gnw(8#J6&2-| zZQnub3b#7!x9XmHX0!EX=Wo{K*45c=)!Fw|*-&TXZ8ov@{w(P!+uN$+s&Hm_qvkvp zt+%WJ&cnvQHAUylugpfcx$vq7L@;~~8?>XY1)G)IQh{Y1M~}td35I2vC4eK%D@@GG z-zu|x+*+{p?2Ve2UX01SfS%TU+j)U7or%zId7E|Yy-i?8+_N2a)b&rP^=9}%Kyq0j zu9s2Q8TO#nOo#oI(DJEsMll|CXE?|kkUQQW>5)ihc#MJ&ga8-}Yosbf?CtbUM9Q1= znX23v42}vi?bOjqGL{U{qwF2@s$tSyNm0Zy=4{c!%9!a{N-|dI(c{WirP-r~JM@|4 zG8P=s!`ha)9i!SI_l$^m)-sI;q_MLq?f@XFwX{rvXEIrtq_Q#`>U|(1XADce&dnrN zkRXnxjKoN3PPDNE`R> zs0u69tt<;Wz|NVoC}d?yE6J^Fx&J(nu_(OjJhz=(Ck*Ud#R{4|Zg~gLu@N0laFi(= zA5{(o0Y)~BV+kI6|21<%OOB3l!@|4H*-K+0!Os6oYlpz1hYdkgk;)-p3mxm)>{v?> zkf0n~`DfbE8hSdaU2xZjEVx5BhS#2`gIWiH3P>QZP15dE$eq|q1}G0mTM#+)!Pv2% z^}$$j9ps*|v8nY*Vlh_^z}VQ@$6;8^S>&?p9PR2>Y;52xI6%AOuh?S92ew0S@U^gk z7oZe((1UshgEEW4XNV$`)QIR|76rI2S)@iFZ7CcHp0QIJ4M?)G`6|hMQc)n1Nujgyu~xb6 z{lTfwX5F&qP4f_LDsN_x)6bE)uH`drm$Vp zs)!+L+^_&T0Wxvrp9Cuz5Mb3`3jnj|m_P|Cl@vb<1vWdM@!v@x=s_}uaDOH>4B}o( zdXB}`9tYYu*%WuC2e`@J*&iVw0Q}hj0$^*@cS(|C*uM>vf9J6OFO$dx?W}w1;BMVP zL51~?RsNFr?@uG^e;Mg<|NQ(9oBiL``~Q~Hu_^>v?mrViq8SGhKw?sCa_gtjr*nu(5&c14?wXwoJUEvNAh!R_vYX7}b{H z0C8h7XN@acg1rb~WmSycbu}sZnk{QwJD39$IT`S$VF>iIGFYX3(y)L#b66RaPYR;~ zP=K_pz@b}luvLy5hE#&|2Q|dFVK8)D8y8rxeGedBm)L)f$t?f*YvJ!&Gl0hSv%l27 zI~XW~Yms)xEetPYK(4yu5e8py8U88rjri{}BB8Z^SPNvRwSVeGD?R(mT3G2|85<4A zWUPO4%wP`t9|P_$Gx`#Prd%|L`Jb|AVz7_D=3TV%9Y=zsxdZ%V)xSAxhC6cot<3OG z+dEqjWKq;REzG#il+p9hns4zZs*-t^41mA`0Q*VHEw=G4`t~H>SXti)2O>kxd&)tu zSEVMeDcdQ=qPeq3Rg|sPlMF-NC?*@paJLpjtIM!{`84cMQ0dYKo+#xPg2wz8e3xKh{c}`7 z`uP+?(yQC>j- zutZ1zDhyWO6Xp{V5)gsHMEGC=Fn*{IuLx9tA1VM91k0cT$3UaBx5I*coIvX*0`#i0 zsvLcaQ&fzZc9N9uJf$AV-JQ(2J{B~5tu(J%8yK1TPH++`D7~t4a%hy`ih#*QGev!i zT(u7g9nJg~tD7{T5K&c~{a9bID}`CS-6hUdLs`K0rpM8OG$J(p+nGH}N$fdqwH7L+ zb#=?)N3IOpuckZU0cJG(Rz*<1AlqQi1JMuIqud6rqgeX5JEcQ;7tO>&DCUd&SZ}lT zJedQY)>*iFQDBXv`@>nFx=HFQ1F@co4ql9;TOI-HtGSRBY+1vsbM688jyL6l33vz! zG?9hY8n&JOtOVC!>d3h5`pibtAeQCEkF8Oy8}C!ZKNBLLuX=!x8}Fx6qOgNwyr8!V zY7*`2C@-pS`B}Uu&n}ZH>BLdiJO{*Y4LV&V`3ZVxf29_3OT04j!d!tFoS9ZPYZJZp zL3w9&aGySV=%)?)k2JTojq1wyb)^2>u*gd(Bjr@F{k7(V!Dpnhzv(nKQZHZ5sQ{xp zINJ9rY;gSE9~d7tqYb4mNa*g)V=aDO4L9~Pp&7@tr8-#Uyo@VlJTtseJqUPZ+x)~E z^_szeH_)t6h*LtgheKb z|0c!FHb-&IgMGf>j~M>N1Xv~6emY(x>uZjcx%9uNT#NhF)7o-!qM8ldZIpQbNEGIH z6uik-%Zh9ULRMXbZFt*C{EyE{(YOOXE;ZA4JqpG8={9J~%Gqna(%Ai}XDi_kE)8w! z4R4)#EQf1ljWz%@z~Jk1yIQKD;+?91F-;?T8hQ%(A9SUCwJxi^lFF5-8Bf)`Y=472 zj*kujX0G~FZth;$)it^wN&{t8fR!5@sw*NqVOD_W#Lko+z~QS!ZQ^HEv%2Z@v`S)# za7gdqy8NbKIgX~Q9&0w&VCk!gI!XiIk4PD7=VihUGP80R0NAUrG`EZJ+j!$sFp<6T zJJ_Q;ri#y&&qd4{19&=oFh7oKqYh0-p=?8Y2T!Oacd2rL$%I>iv@8J2@X8j2!g#!T z3Z%{fQq>S|)xVinW2$5LdoC-`3kz9)4~x1!!*$wmq1=d{zT$PCe_pSJ#hwkchWhLn zS`Cg|9r-#FL|;{>ZfUCIs0p+(n{HnEV&KfH^W#-;!_VIccNIzyJ^%RQL8B$Wt%%!1 zfYo+3+w{gGDQe$+`l;WyrOn+REsE8I1t0C@cFGj}#hM;JfQ;UARsHiNQ29k>j&v&D zN6W==HTqj!ixKY_GQU;N^KGM^$6xPZW&D=aP`|mT{ABfzW@VYs4P}(fKv?!_AXPjq zE-ir=ZE!0xPoFe1ZnsDQJ!I)htkf)>yYc~YisjkSn>P> z5N}6l`7t6U4tHo6LGB48CtjDr`c0v<6z?Bx+Be!Hg}JpYw_SfZKiUpcTb!~g(!Afc zw&L@wQlp#RjuElo@)lyslwU^(q#z;r-goc&m^eI{+bgVj8}MCx9fHC z2RmYW4-1bx*fPsa!zGdfh-=BgulSKLS)`6W4fnQT$Lj1jhtWvqO>`n7<7}4CI}^=v zOU&t@%P|;FjT_keAO;360zYBY>3+@oQMI)=o-plO6XO3Vm-f?hr%OQyuj4ndQ%kx;j>e&Xud=1`2Ce zLRZQexRy|&T7&<`s`=8j?cFcZ_KKbOrazD zpmzG~jAp5;C8jIHu7MuLg&+RMVSksyy!75EgX@zj_3q9vwxL-ZgD(<&OtwF^xDlV% z?%U=B5g)X6DhEDblNkJk&J(OD499p&^K-hsc_SqBQx4VJA5H@vLlf>5txh>Z~_ zy4ME#%dkxEu0N?QiZo)vwa&`(9G{X-<`uDvR0^FhwT>+z$1nrOQqj6gPelXzl4E@- zTxyOs|@*-z_U4{uezR$AJ_o8>luPwzBR zr%09x1jB^sF-qG}3XJJOdpdlz99(IM@olW&9Q&lUXL8Ij9=_r#RFZtjB4gK%eGIO? z(|X@8N6)27^yN{;J{3dcC;N8#ooyroz0cjIjWD0w;+b-Ld?yyDMP}64Sw(ZeR|o!X z5tIV=!!b!ae`v&{p*)ZfZYCO>+_+rRny_)j(1fQ+B@ei3oA7G8JQCW=$sj@F^rTo3 zHK-O4$v-^$@>*EuVjkc?Oj?csjP~!G>m*OF`oiC=rB_~rdzrM=_O{gLqCD1ADKc{X ze8hWsA8j{aIAy0)G=r4zM>84`Zp8w$q;&9j^W9Vx%RxOP)s_20C>tIL13>2EN7K zT0J;p9PexDE|M?TiAiSJio+g!)2FesR26AC4?@fHBN(c*fb+}tKYL+$b7@sAAW&e% znX}f;Hfwanyrd;to1#wbf#-Rke;-fr**p}l0+2Mo>iM~qzwE#A4W=s>syII;*zLD2 zC$eTqYrUqBv6jsen0Pz9eGh2hhOfLsMnBH*!m5aJzQ9aFC)&cc4(3k8G>o-brcY#I zsLnfeAA5AUyq@ZbX>_0+#pR{rNdBJg4Y0C<h{URM*UQ!@jfc%TQ;Ctd`*AFjl9g6vYYc>NtJVk99@!;p&RL9lWs<_pPZ%sovT z4)bgL(4&xB)J6rT`*0IX9!Yd{Ao-4@>2Rbm{#8=!y`DHAdPCpN+9=yJxWz*Yg)#&2 z`}+xpvZ6zXSfiOVYTcIh#IE_?vy4Wr8>cO<5PKZH61F|y8fH*yF<7B+&8EqbQm|l$ z(w62|n~!4m=4VT8Q45cjSW4hao23|<-y&MHC8Amj%&~eGW$nlB<%Q5lcReWw|CkUy zn~qvD0LVNL^#L-@oB~*mrUkiL3kG5GBddd|T#YXz$dR&@@zMC^WjgpPpk`4@ao?io z9RA)_=8Z8FDS^9*$iCQBpi|K}yoN^U#Ftzxy>?b4MeE+V(WGfMlS)HQt>+0+9z%N- zhZ)_dN=eQ6I$mLeDz^qA-i!@=O3kLS9Ttu}v8r%i*zH8h1q9)#2|nfDj{xY&2GctH zAbmSUxzpL69-j<9o{vD<=v^Rf#duWas#c31_r!W&%i>k>r-L!)g30eUY0;b|(#N0T zQ(c_lgOq8cqSL3`L%3+#sNCt5V|?5NFVlpK!AB!oCL>o59PtM|R)r^+q(7!qO0p5o zi_OR4u$TSJsspZfa8$5ov-lq-klZpO;-nG4<%9k?=Sn=S!~RVL`DQn@kmsQ+sZ&jX zC2ULkLZ3x6tdHE$I1L&fE7qO>?MmBy?|(m1D$S>^ITF?Jl6%v5X>?S2j_O_CbMv

FT|| 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 literal 0 HcmV?d00001 diff --git a/Resources/Audio/_DV/Voice/Chitinid/moth_squeak.ogg b/Resources/Audio/_DV/Voice/Chitinid/moth_squeak.ogg new file mode 100644 index 0000000000000000000000000000000000000000..5b77d98e56541fa3ee34654737e9f78e0b5c58b8 GIT binary patch literal 8676 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 Sjk5^K8yUkeeT$BKhW`hii5zbL literal 0 HcmV?d00001 diff --git a/Resources/Locale/en-US/_DV/abilities/chitinid.ftl b/Resources/Locale/en-US/_DV/abilities/chitinid.ftl new file mode 100644 index 00000000000..e2e10c0eb4e --- /dev/null +++ b/Resources/Locale/en-US/_DV/abilities/chitinid.ftl @@ -0,0 +1,2 @@ +chitzite-mask = Take off your {$mask} first. +chitzite-cough = {CAPITALIZE(THE($name))} starts coughing up a hunk of Chitzite! diff --git a/Resources/Locale/en-US/_DV/chat/managers/chat_manager.ftl b/Resources/Locale/en-US/_DV/chat/managers/chat_manager.ftl index b1ff73f9a83..f58ade59f60 100644 --- a/Resources/Locale/en-US/_DV/chat/managers/chat_manager.ftl +++ b/Resources/Locale/en-US/_DV/chat/managers/chat_manager.ftl @@ -21,3 +21,9 @@ chat-speech-verb-rodentia-1 = squeaks chat-speech-verb-rodentia-2 = pieps chat-speech-verb-rodentia-3 = chatters chat-speech-verb-rodentia-4 = squeals + +chat-speech-verb-name-chitinid = Chitinid +chat-speech-verb-chitinid-1 = clicks +chat-speech-verb-chitinid-2 = chitters +chat-speech-verb-chitinid-3 = hisses +chat-speech-verb-chitinid-4 = buzzes diff --git a/Resources/Locale/en-US/_DV/markings/chitinid.ftl b/Resources/Locale/en-US/_DV/markings/chitinid.ftl new file mode 100644 index 00000000000..be5ae5896a7 --- /dev/null +++ b/Resources/Locale/en-US/_DV/markings/chitinid.ftl @@ -0,0 +1,164 @@ +marking-ChitinidAntennasDefault-default = Antennae +marking-ChitinidAntennasDefault = Antennae (Default) + +marking-ChitinidAntennasCurly-curly = Antennae +marking-ChitinidAntennasCurly = Antennae (Curly) + +marking-ChitinidAntennasGray-gray = Antennae +marking-ChitinidAntennasGray = Antennae (Gray) + +marking-ChitinidAntennasSlick-slick = Antennae +marking-ChitinidAntennasSlick = Antennae (Slick) + +marking-ChitinidAntennasShort-short = Antennae +marking-ChitinidAntennasShort = Antennae (short) + +marking-ChitinidAntennasLong-long = Antennae +marking-ChitinidAntennasLong = Antennae (Long) + +marking-ChitinidAntennasBee-bee = Antennae +marking-ChitinidAntennasBee = Antennae (Bee) + +marking-ChitinidAntennasFirefly-firefly_primary = Primary +marking-ChitinidAntennasFirefly-firefly_secondary = Secondary +marking-ChitinidAntennasFirefly = Antennae (Firefly) + +marking-ChitinidAntennasRadar-radar = Antennae +marking-ChitinidAntennasRadar = Antennae (Radar) + +marking-ChitinidAntennasSpeed-speed = Antennae +marking-ChitinidAntennasSpeed = Antennae (Speed) + + + +marking-ChitinidWingsDefault-default = Wing +marking-ChitinidWingsDefault = Tail (Default) + +marking-ChitinidWingsSmooth-smooth = Wing +marking-ChitinidWingsSmooth = Tail (Smooth) + +marking-ChitinidWingsHoneypot-honeypot_primary = Primary +marking-ChitinidWingsHoneypot-honeypot_secondary = Secondary +marking-ChitinidWingsHoneypot = Tail (Honeypot) + +marking-ChitinidWingsStubby-stubby = Wing +marking-ChitinidWingsStubby = Tail (Stubby) + +marking-ChitinidWingsBee-bee_primary = Primary +marking-ChitinidWingsBee-bee_secondary = Secondary +marking-ChitinidWingsBee = Tail (Bee) + +marking-ChitinidWingsFirefly-firefly_primary = Primary +marking-ChitinidWingsFirefly-firefly_secondary = Secondary +marking-ChitinidWingsFirefly = Tail (Firefly) + + + +marking-ChitinidChestCharred-charred_chest = Chest +marking-ChitinidChestCharred = Chitinid Chest (Charred) + +marking-ChitinidHeadCharred-charred_head = Head +marking-ChitinidHeadCharred = Chitinid Head (Charred) + +marking-ChitinidLLegCharred-charred_l_leg = Left Leg +marking-ChitinidLLegCharred = Chitinid Left Leg (Charred) + +marking-ChitinidRLegCharred-charred_r_leg = Right Leg +marking-ChitinidRLegCharred = Chitinid Right Leg (Charred) + +marking-ChitinidLArmCharred-charred_l_arm = Left Arm +marking-ChitinidLArmCharred = Chitinid Left Arm (Charred) + +marking-ChitinidRArmCharred-charred_r_arm = Right Arm +marking-ChitinidRArmCharred = Chitinid Right Arm (Charred) + + + +marking-ChitinidChestPlated-plated_chest = Chest +marking-ChitinidChestPlated = Chitinid Chest (Plated) + +marking-ChitinidLArmPlated-plated_l_arm = Left Arm +marking-ChitinidLArmPlated = Chitinid Left Arm (Plated) + +marking-ChitinidRArmPlated-plated_r_arm = Right Arm +marking-ChitinidRArmPlated = Chitinid Right Arm (Plated) + + + +marking-ChitinidChestStripes-stripes_chest = Chest +marking-ChitinidChestStripes = Chitinid Chest (Stripes) + +marking-ChitinidHeadStripes-stripes_head = Head +marking-ChitinidHeadStripes = Chitinid Head (Stripes) + +marking-ChitinidLLegStripes-stripes_l_leg = Left Leg +marking-ChitinidLLegStripes = Chitinid Left Leg (Stripes) + +marking-ChitinidRLegStripes-stripes_r_leg = Right Leg +marking-ChitinidRLegStripes = Chitinid Right Leg (Stripes) + +marking-ChitinidLArmStripes-stripes_l_arm = Left Arm +marking-ChitinidLArmStripes = Chitinid Left Arm (Stripes) + +marking-ChitinidRArmStripes-stripes_r_arm = Right Arm +marking-ChitinidRArmStripes = Chitinid Right Arm (Stripes) + + + +marking-ChitinidChestRadiant-radiant_chest = Chest +marking-ChitinidChestRadiant = Chitinid Chest (Radiant) + +marking-ChitinidHeadRadiant-radiant_head = Head +marking-ChitinidHeadRadiant = Chitinid Head (Radiant) + +marking-ChitinidLLegRadiant-radiant_l_leg = Left Leg +marking-ChitinidLLegRadiant = Chitinid Left Leg (Radiant) + +marking-ChitinidRLegRadiant-radiant_r_leg = Right Leg +marking-ChitinidRLegRadiant = Chitinid Right Leg (Radiant) + +marking-ChitinidLArmRadiant-radiant_l_arm = Left Arm +marking-ChitinidLArmRadiant = Chitinid Left Arm (Radiant) + +marking-ChitinidRArmRadiant-radiant_r_arm = Right Arm +marking-ChitinidRArmRadiant = Chitinid Right Arm (Radiant) + + + +marking-ChitinidChestToxic-toxic_chest = Chest +marking-ChitinidChestToxic = Chitinid Chest (Toxic) + +marking-ChitinidHeadToxic-toxic_head = Head +marking-ChitinidHeadToxic = Chitinid Head (Toxic) + +marking-ChitinidLLegToxic-toxic_l_leg = Left Leg +marking-ChitinidLLegToxic = Chitinid Left Leg (Toxic) + +marking-ChitinidRLegToxic-toxic_r_leg = Right Leg +marking-ChitinidRLegToxic = Chitinid Right Leg (Toxic) + +marking-ChitinidLArmToxic-toxic_l_arm = Left Arm +marking-ChitinidLArmToxic = Chitinid Left Arm (Toxic) + +marking-ChitinidRArmToxic-toxic_r_arm = Right Arm +marking-ChitinidRArmToxic = Chitinid Right Arm (Toxic) + + + +marking-ChitinidChestSpotted-spotted_chest = Chest +marking-ChitinidChestSpotted = Chitinid Chest (Spotted) + +marking-ChitinidHeadSpotted-spotted_head = Head +marking-ChitinidHeadSpotted = Chitinid Head (Spotted) + +marking-ChitinidLLegSpotted-spotted_l_leg = Left Leg +marking-ChitinidLLegSpotted = Chitinid Left Leg (Spotted) + +marking-ChitinidRLegSpotted-spotted_r_leg = Right Leg +marking-ChitinidRLegSpotted = Chitinid Right Leg (Spotted) + +marking-ChitinidLArmSpotted-spotted_l_arm = Left Arm +marking-ChitinidLArmSpotted = Chitinid Left Arm (Spotted) + +marking-ChitinidRArmSpotted-spotted_r_arm = Right Arm +marking-ChitinidRArmSpotted = Chitinid Right Arm (Spotted) diff --git a/Resources/Locale/en-US/_DV/species/species.ftl b/Resources/Locale/en-US/_DV/species/species.ftl index 545858ef4ab..b8cebd93d58 100644 --- a/Resources/Locale/en-US/_DV/species/species.ftl +++ b/Resources/Locale/en-US/_DV/species/species.ftl @@ -3,3 +3,4 @@ species-name-vulpkanin = Vulpkanin species-name-harpy = Harpy species-name-rodentia = Rodentia +species-name-chitinid = Chitinid diff --git a/Resources/Locale/en-US/chemistry/components/injector-component.ftl b/Resources/Locale/en-US/chemistry/components/injector-component.ftl index 24f524081e0..43e24ce25dc 100644 --- a/Resources/Locale/en-US/chemistry/components/injector-component.ftl +++ b/Resources/Locale/en-US/chemistry/components/injector-component.ftl @@ -27,3 +27,4 @@ injector-component-drawing-user = You start drawing the needle. injector-component-injecting-user = You start injecting the needle. injector-component-drawing-target = {CAPITALIZE(THE($user))} is trying to use a needle to draw from you! injector-component-injecting-target = {CAPITALIZE(THE($user))} is trying to inject a needle into you! +injector-component-deny-user = Exoskeleton too thick! diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/gauze.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/gauze.yml index 540d098e505..71fe6245101 100644 --- a/Resources/Prototypes/Entities/Mobs/Customization/Markings/gauze.yml +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/gauze.yml @@ -226,7 +226,7 @@ id: GauzeHead bodyPart: Head markingCategory: Overlay - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, Moth] + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, Moth, Chitinid] # Delta V - Chitinid coloring: default: type: @@ -312,7 +312,7 @@ id: GauzeMothBlindfold bodyPart: Eyes markingCategory: Overlay - speciesRestriction: [Moth] + speciesRestriction: [Moth, Chitinid] # Delta V - Chitinid coloring: default: type: @@ -326,7 +326,7 @@ id: GauzeMothShoulder bodyPart: Chest markingCategory: Overlay - speciesRestriction: [Moth] + speciesRestriction: [Moth, Chitinid] # Delta V - Chitinid coloring: default: type: @@ -340,7 +340,7 @@ id: GauzeMothStomach bodyPart: Chest markingCategory: Overlay - speciesRestriction: [Moth] + speciesRestriction: [Moth, Chitinid] # Delta V - Chitinid coloring: default: type: @@ -354,7 +354,7 @@ id: GauzeMothLeftEyePatch bodyPart: Eyes markingCategory: Overlay - speciesRestriction: [Moth] + speciesRestriction: [Moth, Chitinid] # Delta V - Chitinid coloring: default: type: @@ -368,7 +368,7 @@ id: GauzeMothLeftEyePad bodyPart: Eyes markingCategory: Overlay - speciesRestriction: [Moth] + speciesRestriction: [Moth, Chitinid] # Delta V - Chitinid coloring: default: type: @@ -382,7 +382,7 @@ id: GauzeMothRightEyePatch bodyPart: Eyes markingCategory: Overlay - speciesRestriction: [Moth] + speciesRestriction: [Moth, Chitinid] # Delta V - Chitinid coloring: default: type: @@ -396,7 +396,7 @@ id: GauzeMothRightEyePad bodyPart: Eyes markingCategory: Overlay - speciesRestriction: [Moth] + speciesRestriction: [Moth, Chitinid] # Delta V - Chitinid coloring: default: type: @@ -410,7 +410,7 @@ id: GauzeMothUpperArmRight bodyPart: RArm markingCategory: Overlay - speciesRestriction: [Moth] + speciesRestriction: [Moth, Chitinid] # Delta V - Chitinid coloring: default: type: @@ -424,7 +424,7 @@ id: GauzeMothUpperArmLeft bodyPart: LArm markingCategory: Overlay - speciesRestriction: [Moth] + speciesRestriction: [Moth, Chitinid] # Delta V - Chitinid coloring: default: type: @@ -438,7 +438,7 @@ id: GauzeMothUpperLegRight bodyPart: RLeg markingCategory: Overlay - speciesRestriction: [Moth] + speciesRestriction: [Moth, Chitinid] # Delta V - Chitinid coloring: default: type: @@ -452,7 +452,7 @@ id: GauzeMothUpperLegLeft bodyPart: LLeg markingCategory: Overlay - speciesRestriction: [Moth] + speciesRestriction: [Moth, Chitinid] # Delta V - Chitinid coloring: default: type: @@ -466,7 +466,7 @@ id: GauzeMothLowerLegRight bodyPart: RFoot markingCategory: Overlay - speciesRestriction: [Moth] + speciesRestriction: [Moth, Chitinid] # Delta V - Chitinid coloring: default: type: @@ -480,7 +480,7 @@ id: GauzeMothLowerLegLeft bodyPart: LFoot markingCategory: Overlay - speciesRestriction: [Moth] + speciesRestriction: [Moth, Chitinid] # Delta V - Chitinid coloring: default: type: diff --git a/Resources/Prototypes/Guidebook/species.yml b/Resources/Prototypes/Guidebook/species.yml index 73e9056c01d..998b06d24f3 100644 --- a/Resources/Prototypes/Guidebook/species.yml +++ b/Resources/Prototypes/Guidebook/species.yml @@ -17,6 +17,7 @@ - Felinid - Oni - Rodentia + - Chitinid - type: guideEntry id: Arachnid diff --git a/Resources/Prototypes/Loadouts/Miscellaneous/survival.yml b/Resources/Prototypes/Loadouts/Miscellaneous/survival.yml index 41996dce543..f9c1560d06e 100644 --- a/Resources/Prototypes/Loadouts/Miscellaneous/survival.yml +++ b/Resources/Prototypes/Loadouts/Miscellaneous/survival.yml @@ -24,6 +24,7 @@ - Oni - Vulpkanin - Rodentia + - Chitinid # End DeltaV additions - type: loadoutEffectGroup diff --git a/Resources/Prototypes/Species/species_weights.yml b/Resources/Prototypes/Species/species_weights.yml index efe79057e3e..1a5a0323e4a 100644 --- a/Resources/Prototypes/Species/species_weights.yml +++ b/Resources/Prototypes/Species/species_weights.yml @@ -10,3 +10,4 @@ Vulpkanin: 3 # DeltaV - Vulpkanin, see Prototypes/_DV/Entities/Mobs/Species/vulpkanin.yml Rodentia: 3 # DeltaV - Rodentia, see Prototypes/_DV/Entities/Mobs/Species/rodentia.yml Diona: 2 + Chitinid: 3 # DeltaV - Chitinid, see Prototypes/_DV/Entities/Mobs/Species/chitinid.yml diff --git a/Resources/Prototypes/_DV/Actions/types.yml b/Resources/Prototypes/_DV/Actions/types.yml index bf5649feccb..cb4818527ef 100644 --- a/Resources/Prototypes/_DV/Actions/types.yml +++ b/Resources/Prototypes/_DV/Actions/types.yml @@ -48,3 +48,16 @@ checkCanInteract: false checkConsciousness: false event: !type:PrecognitionPowerActionEvent + +- type: entity + id: ActionChitzite + name: Cough Up Chitzite + description: Purge the excess radiation build-up from your body, and gain a cool danger rock. + components: + - type: InstantAction + charges: 0 + enabled: false + maxCharges: 1 + icon: { sprite: _DV/Objects/Specific/Species/chitinid.rsi, state: chitzite } + useDelay: 300 + event: !type:ChitziteActionEvent diff --git a/Resources/Prototypes/_DV/Body/Organs/chitinid.yml b/Resources/Prototypes/_DV/Body/Organs/chitinid.yml new file mode 100644 index 00000000000..38a0e0b2219 --- /dev/null +++ b/Resources/Prototypes/_DV/Body/Organs/chitinid.yml @@ -0,0 +1,33 @@ +- type: entity + id: OrganChitinidStomach + parent: [OrganAnimalStomach, OrganHumanStomach] + name: stomach + description: "Gross. This is hard to stomach." + components: + - type: Organ # Shitmed Change + slotId: stomach # Shitmed Change + - type: Sprite + state: stomach + - type: Item + size: Small + heldPrefix: stomach + - type: SolutionContainerManager + solutions: + stomach: + maxVol: 50 + food: + maxVol: 5 + reagents: + - ReagentId: UncookedAnimalProteins + Quantity: 5 + - type: Stomach + # The stomach metabolizes stuff like foods and drinks. + # TODO: Have it work off of the ent's solution container, and move this + # to intestines instead. + - type: Metabolizer + # mm yummy + maxReagents: 3 + metabolizerTypes: [Human] + groups: + - id: Food + - id: Drink diff --git a/Resources/Prototypes/_DV/Body/Parts/chitinid.yml b/Resources/Prototypes/_DV/Body/Parts/chitinid.yml new file mode 100644 index 00000000000..fb346bb6ff3 --- /dev/null +++ b/Resources/Prototypes/_DV/Body/Parts/chitinid.yml @@ -0,0 +1,112 @@ +# TODO: Add descriptions (many) +# TODO BODY: Part damage +- type: entity + id: PartChitinidBase + parent: [BaseItem, BasePart] + name: "Chitinid body part" + abstract: true + components: + - type: Sprite + sprite: _DV/Mobs/Species/Chitinid/parts.rsi + - type: Extractable + juiceSolution: + reagents: + - ReagentId: Fat + Quantity: 3 + - ReagentId: Blood + Quantity: 10 + +- type: entity + id: TorsoChitinid + name: "chitinid torso" + parent: [PartChitinidBase, BaseTorso] + components: + - type: Sprite + state: "torso_m" + - type: Extractable + juiceSolution: + reagents: + - ReagentId: Fat + Quantity: 10 + - ReagentId: Blood + Quantity: 20 + + +- type: entity + id: HeadChitinid + name: "chitinid head" + parent: [PartChitinidBase, BaseHead] + components: + - type: Sprite + state: "head_m" + - type: Extractable + juiceSolution: + reagents: + - ReagentId: Fat + Quantity: 5 + - ReagentId: Blood + Quantity: 10 + +- type: entity + id: LeftArmChitinid + name: "left chitinid arm" + parent: [PartChitinidBase, BaseLeftArm] + components: + - type: Sprite + state: "l_arm" + +- type: entity + id: RightArmChitinid + name: "right chitinid arm" + parent: [PartChitinidBase, BaseRightArm] + components: + - type: Sprite + state: "r_arm" + +- type: entity + id: LeftHandChitinid + name: "left chitinid hand" + parent: [PartChitinidBase, BaseLeftHand] + components: + - type: Sprite + state: "l_hand" + +- type: entity + id: RightHandChitinid + name: "right chitinid hand" + parent: [PartChitinidBase, BaseRightHand] + components: + - type: Sprite + state: "r_hand" + +- type: entity + id: LeftLegChitinid + name: "left chitinid leg" + parent: [PartChitinidBase, BaseLeftLeg] + components: + - type: Sprite + state: "l_leg" + +- type: entity + id: RightLegChitinid + name: "right chitinid leg" + parent: [PartChitinidBase, BaseRightLeg] + components: + - type: Sprite + state: "r_leg" + +- type: entity + id: LeftFootChitinid + name: "left chitinid foot" + parent: [PartChitinidBase, BaseLeftFoot] + components: + - type: Sprite + state: "l_foot" + +- type: entity + id: RightFootChitinid + name: "right chitinid foot" + parent: [PartChitinidBase, BaseRightFoot] + components: + - type: Sprite + state: "r_foot" diff --git a/Resources/Prototypes/_DV/Body/Prototypes/chitinid.yml b/Resources/Prototypes/_DV/Body/Prototypes/chitinid.yml new file mode 100644 index 00000000000..18428a67a6c --- /dev/null +++ b/Resources/Prototypes/_DV/Body/Prototypes/chitinid.yml @@ -0,0 +1,49 @@ +- type: body + id: Chitinid + name: "chitinid" + root: torso + slots: + head: + part: HeadChitinid + connections: + - torso + organs: + brain: OrganHumanBrain + eyes: OrganHumanEyes + torso: + part: TorsoChitinid + organs: + heart: OrganAnimalHeart + lungs: OrganHumanLungs + stomach: OrganChitinidStomach + liver: OrganAnimalLiver + kidneys: OrganHumanKidneys + connections: + - right arm + - left arm + - right leg + - left leg + right arm: + part: RightArmChitinid + connections: + - right hand + left arm: + part: LeftArmChitinid + connections: + - left hand + right hand: + part: RightHandChitinid + left hand: + part: LeftHandChitinid + right leg: + part: RightLegChitinid + connections: + - right foot + left leg: + part: LeftLegChitinid + connections: + - left foot + right foot: + part: RightFootChitinid + left foot: + part: LeftFootChitinid diff --git a/Resources/Prototypes/_DV/Damage/modifier_sets.yml b/Resources/Prototypes/_DV/Damage/modifier_sets.yml index a7a16dca9a0..42a10a3b123 100644 --- a/Resources/Prototypes/_DV/Damage/modifier_sets.yml +++ b/Resources/Prototypes/_DV/Damage/modifier_sets.yml @@ -29,3 +29,12 @@ Slash: 5 Piercing: 5 Heat: 5 + +- type: damageModifierSet + id: Chitinid + coefficients: + Blunt: 1.15 + Piercing: 1.25 + Slash: 0.9 + Cold: 1.1 + Radiation: 0.2 diff --git a/Resources/Prototypes/_DV/Datasets/Names/chitinid_first_female.yml b/Resources/Prototypes/_DV/Datasets/Names/chitinid_first_female.yml new file mode 100644 index 00000000000..be91ea31509 --- /dev/null +++ b/Resources/Prototypes/_DV/Datasets/Names/chitinid_first_female.yml @@ -0,0 +1,34 @@ +- type: dataset + id: NamesChitinidFirstFemale + values: + - Amer'ix + - An'bela + - An'ora + - Aza'ran + - Be'riah + - Bel'os + - Da'lrah + - Di'azo + - E'nzo + - Em'era + - Fi'n'rah + - He'teka + - Ir'iska + - Ish'kar + - Isha'ba + - Jes'sri'ka + - Kalz'za + - Kaz'zek + - Lot'tikz + - Ral'zol + - Ri'isano + - Talzz'ark + - Tess'ara + - Tez'mal'zar + - Thri'kis + - Vani'si'kar + - Ve'rai + - Vish'ra + - Zan'ova + - Zen'ofi + - Zzer'ak diff --git a/Resources/Prototypes/_DV/Datasets/Names/chitinid_first_male.yml b/Resources/Prototypes/_DV/Datasets/Names/chitinid_first_male.yml new file mode 100644 index 00000000000..355f5cffb9b --- /dev/null +++ b/Resources/Prototypes/_DV/Datasets/Names/chitinid_first_male.yml @@ -0,0 +1,36 @@ +- type: dataset + id: NamesChitinidFirstMale + values: + - Al'vos + - Amue'val + - Barma'tos + - Ben'idar + - Bil'verrok + - Crik'xis + - Daru'nta + - Dee'aldas + - Drx'var + - Hen'sra + - Hux'von + - Ilv'imon + - Is'irax + - Ish'nax + - Jax'zaril'va + - L'ofa + - Lo'zok + - Lu'vurx + - Luc'irax + - Mer'tex + - Od'dalis + - Si'ley + - Sim'sker + - Tal'vos + - Ti'ril + - Vir'lker + - Vir'muel + - Vix'vol + - Von'draz + - Vu'lta'voss + - Xixa'ba + - Yarr'wat + - Zay'zz diff --git a/Resources/Prototypes/_DV/Entities/Mobs/Customization/Markings/chitinid.yml b/Resources/Prototypes/_DV/Entities/Mobs/Customization/Markings/chitinid.yml new file mode 100644 index 00000000000..eed5ebdcbd4 --- /dev/null +++ b/Resources/Prototypes/_DV/Entities/Mobs/Customization/Markings/chitinid.yml @@ -0,0 +1,458 @@ +# Antennas +- type: marking + id: ChitinidAntennasDefault + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [Chitinid] + sprites: + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_antennas.rsi + state: default + +- type: marking + id: ChitinidAntennasCurly + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [Chitinid] + sprites: + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_antennas.rsi + state: curly + +- type: marking + id: ChitinidAntennasGray + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [Chitinid] + sprites: + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_antennas.rsi + state: gray + +- type: marking + id: ChitinidAntennasSlick + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [Chitinid] + sprites: + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_antennas.rsi + state: slick + +- type: marking + id: ChitinidAntennasLong + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [Chitinid] + sprites: + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_antennas.rsi + state: long + +- type: marking + id: ChitinidAntennasBee + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [Chitinid] + sprites: + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_antennas.rsi + state: bee + +- type: marking + id: ChitinidAntennasShort + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [Chitinid] + sprites: + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_antennas.rsi + state: short + +- type: marking + id: ChitinidAntennasFirefly + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [Chitinid] + sprites: + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_antennas.rsi + state: firefly_primary + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_antennas.rsi + state: firefly_secondary + +- type: marking + id: ChitinidAntennasRadar + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [Chitinid] + sprites: + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_antennas.rsi + state: radar + +- type: marking + id: ChitinidAntennasSpeed + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [Chitinid] + sprites: + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_antennas.rsi + state: speed + + +# Wings +- type: marking + id: ChitinidWingsDefault + bodyPart: Tail + markingCategory: Tail + speciesRestriction: [Chitinid] + sprites: + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_wings.rsi + state: default + +- type: marking + id: ChitinidWingsSmooth + bodyPart: Tail + markingCategory: Tail + speciesRestriction: [Chitinid] + sprites: + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_wings.rsi + state: smooth + +- type: marking + id: ChitinidWingsHoneypot + bodyPart: Tail + markingCategory: Tail + speciesRestriction: [Chitinid] + sprites: + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_wings.rsi + state: honeypot_primary + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_wings.rsi + state: honeypot_secondary + +- type: marking + id: ChitinidWingsStubby + bodyPart: Tail + markingCategory: Tail + speciesRestriction: [Chitinid] + sprites: + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_wings.rsi + state: stubby + +- type: marking + id: ChitinidWingsBee + bodyPart: Tail + markingCategory: Tail + speciesRestriction: [Chitinid] + sprites: + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_wings.rsi + state: bee_primary + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_wings.rsi + state: bee_secondary + +- type: marking + id: ChitinidWingsFirefly + bodyPart: Tail + markingCategory: Tail + speciesRestriction: [Chitinid] + sprites: + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_wings.rsi + state: firefly_primary + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_wings.rsi + state: firefly_secondary + +# Body markings: +# Charred +- type: marking + id: ChitinidChestCharred + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [Chitinid] + sprites: + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_parts.rsi + state: charred_chest + +- type: marking + id: ChitinidHeadCharred + bodyPart: Head + markingCategory: Head + speciesRestriction: [Chitinid] + sprites: + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_parts.rsi + state: charred_head + +- type: marking + id: ChitinidLLegCharred + bodyPart: LLeg + markingCategory: Legs + speciesRestriction: [Chitinid] + sprites: + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_parts.rsi + state: charred_l_leg + +- type: marking + id: ChitinidRLegCharred + bodyPart: RLeg + markingCategory: Legs + speciesRestriction: [Chitinid] + sprites: + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_parts.rsi + state: charred_r_leg + +- type: marking + id: ChitinidLArmCharred + bodyPart: LArm + markingCategory: Arms + speciesRestriction: [Chitinid] + sprites: + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_parts.rsi + state: charred_l_arm + +- type: marking + id: ChitinidRArmCharred + bodyPart: RArm + markingCategory: Arms + speciesRestriction: [Chitinid] + sprites: + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_parts.rsi + state: charred_r_arm + +# Plated +- type: marking + id: ChitinidChestPlated + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [Chitinid] + sprites: + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_parts.rsi + state: plated_chest + +- type: marking + id: ChitinidLArmPlated + bodyPart: LArm + markingCategory: Arms + speciesRestriction: [Chitinid] + sprites: + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_parts.rsi + state: plated_l_arm + +- type: marking + id: ChitinidRArmPlated + bodyPart: RArm + markingCategory: Arms + speciesRestriction: [Chitinid] + sprites: + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_parts.rsi + state: plated_r_arm + +# Stripes +- type: marking + id: ChitinidChestStripes + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [Chitinid] + sprites: + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_parts.rsi + state: stripes_chest + +- type: marking + id: ChitinidHeadStripes + bodyPart: Head + markingCategory: Head + speciesRestriction: [Chitinid] + sprites: + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_parts.rsi + state: stripes_head + +- type: marking + id: ChitinidLLegStripes + bodyPart: LLeg + markingCategory: Legs + speciesRestriction: [Chitinid] + sprites: + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_parts.rsi + state: stripes_l_leg + +- type: marking + id: ChitinidRLegStripes + bodyPart: RLeg + markingCategory: Legs + speciesRestriction: [Chitinid] + sprites: + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_parts.rsi + state: stripes_r_leg + +- type: marking + id: ChitinidLArmStripes + bodyPart: LArm + markingCategory: Arms + speciesRestriction: [Chitinid] + sprites: + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_parts.rsi + state: stripes_l_arm + +- type: marking + id: ChitinidRArmStripes + bodyPart: RArm + markingCategory: Arms + speciesRestriction: [Chitinid] + sprites: + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_parts.rsi + state: stripes_r_arm + +# Radiant +- type: marking + id: ChitinidChestRadiant + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [Chitinid] + sprites: + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_parts.rsi + state: radiant_chest + +- type: marking + id: ChitinidHeadRadiant + bodyPart: Head + markingCategory: Head + speciesRestriction: [Chitinid] + sprites: + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_parts.rsi + state: radiant_head + +- type: marking + id: ChitinidLLegRadiant + bodyPart: LLeg + markingCategory: Legs + speciesRestriction: [Chitinid] + sprites: + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_parts.rsi + state: radiant_l_leg + +- type: marking + id: ChitinidRLegRadiant + bodyPart: RLeg + markingCategory: Legs + speciesRestriction: [Chitinid] + sprites: + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_parts.rsi + state: radiant_r_leg + +- type: marking + id: ChitinidLArmRadiant + bodyPart: LArm + markingCategory: Arms + speciesRestriction: [Chitinid] + sprites: + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_parts.rsi + state: radiant_l_arm + +- type: marking + id: ChitinidRArmRadiant + bodyPart: RArm + markingCategory: Arms + speciesRestriction: [Chitinid] + sprites: + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_parts.rsi + state: radiant_r_arm + +# Toxic +- type: marking + id: ChitinidChestToxic + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [Chitinid] + sprites: + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_parts.rsi + state: toxic_chest + +- type: marking + id: ChitinidHeadToxic + bodyPart: Head + markingCategory: Head + speciesRestriction: [Chitinid] + sprites: + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_parts.rsi + state: toxic_head + +- type: marking + id: ChitinidLLegToxic + bodyPart: LLeg + markingCategory: Legs + speciesRestriction: [Chitinid] + sprites: + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_parts.rsi + state: toxic_l_leg + +- type: marking + id: ChitinidRLegToxic + bodyPart: RLeg + markingCategory: Legs + speciesRestriction: [Chitinid] + sprites: + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_parts.rsi + state: toxic_r_leg + +- type: marking + id: ChitinidLArmToxic + bodyPart: LArm + markingCategory: Arms + speciesRestriction: [Chitinid] + sprites: + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_parts.rsi + state: toxic_l_arm + +- type: marking + id: ChitinidRArmToxic + bodyPart: RArm + markingCategory: Arms + speciesRestriction: [Chitinid] + sprites: + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_parts.rsi + state: toxic_r_arm + +# Spotted +- type: marking + id: ChitinidChestSpotted + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [Chitinid] + sprites: + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_parts.rsi + state: spotted_chest + +- type: marking + id: ChitinidHeadSpotted + bodyPart: Head + markingCategory: Head + speciesRestriction: [Chitinid] + sprites: + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_parts.rsi + state: spotted_head + +- type: marking + id: ChitinidLLegSpotted + bodyPart: LLeg + markingCategory: Legs + speciesRestriction: [Chitinid] + sprites: + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_parts.rsi + state: spotted_l_leg + +- type: marking + id: ChitinidRLegSpotted + bodyPart: RLeg + markingCategory: Legs + speciesRestriction: [Chitinid] + sprites: + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_parts.rsi + state: spotted_r_leg + +- type: marking + id: ChitinidLArmSpotted + bodyPart: LArm + markingCategory: Arms + speciesRestriction: [Chitinid] + sprites: + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_parts.rsi + state: spotted_l_arm + +- type: marking + id: ChitinidRArmSpotted + bodyPart: RArm + markingCategory: Arms + speciesRestriction: [Chitinid] + sprites: + - sprite: _DV/Mobs/Customization/Chitinid/chitinid_parts.rsi + state: spotted_r_arm diff --git a/Resources/Prototypes/_DV/Entities/Mobs/Player/chitinid.yml b/Resources/Prototypes/_DV/Entities/Mobs/Player/chitinid.yml new file mode 100644 index 00000000000..4c8a7847315 --- /dev/null +++ b/Resources/Prototypes/_DV/Entities/Mobs/Player/chitinid.yml @@ -0,0 +1,5 @@ +- type: entity + save: false + name: Urist McAnt + parent: BaseMobChitinid + id: MobChitinid diff --git a/Resources/Prototypes/_DV/Entities/Mobs/Species/chitinid.yml b/Resources/Prototypes/_DV/Entities/Mobs/Species/chitinid.yml new file mode 100644 index 00000000000..0b9a3077fca --- /dev/null +++ b/Resources/Prototypes/_DV/Entities/Mobs/Species/chitinid.yml @@ -0,0 +1,163 @@ +- type: entity + save: false + name: Urist McAnt + parent: BaseMobSpeciesOrganic + id: BaseMobChitinid + abstract: true + components: + - type: HumanoidAppearance + species: Chitinid + hideLayersOnEquip: + - HeadTop + + - type: Hunger + baseDecayRate: 0.0467 #needs to eat more to survive + - type: Thirst + + - type: UnpoweredFlashlight + - type: PointLight + enabled: false + radius: 3 + softness: 5 + color: "#2CFA1F" + autoRot: true + + - type: Carriable + + - type: Icon + sprite: _DV/Mobs/Species/Chitinid/parts.rsi + state: full + + - type: Body + prototype: Chitinid + requiredLegs: 2 + + - type: Damageable + damageContainer: Biological + damageModifierSet: Chitinid + + - type: Speech + speechVerb: Chitinid + allowedEmotes: ['Chitter', 'Click', 'Hiss'] + + - type: MeleeWeapon + animation: WeaponArcBite + soundHit: + path: /Audio/Effects/bite.ogg + damage: + types: + Piercing: 5 + + + - type: TypingIndicator + proto: Chitinid + + - type: Butcherable + butcheringType: Spike + spawned: + - id: FoodMeat + amount: 5 + + - type: Bloodstream + bloodReagent: InsectBlood + + - type: DamageVisuals + damageOverlayGroups: + Brute: + sprite: Mobs/Effects/brute_damage.rsi + color: "#808A51" + Burn: + sprite: Mobs/Effects/burn_damage.rsi + + - type: Vocal + sounds: + Male: UnisexChitinid + Female: UnisexChitinid + Unsexed: UnisexChitinid + + - type: Fixtures + fixtures: # TODO: This needs a second fixture just for mob collisions. + fix1: + shape: + !type:PhysShapeCircle + radius: 0.42 + density: 220 + restitution: 0.0 + mask: + - MobMask + layer: + - MobLayer + + - type: Temperature # Ants hate the cold + heatDamageThreshold: 320 + coldDamageThreshold: 230 + currentTemperature: 310.15 + specificHeat: 46 + coldDamage: + types: + Cold : 1.25 #per second, scales with temperature & other constants + heatDamage: + types: + Heat : 1.0 #per second, scales with temperature & other constants + - type: TemperatureSpeed + thresholds: + 289: 0.6 + 275: 0.4 + 250: 0.3 + + - type: Sprite # sprite again because we want different layer ordering + noRot: true + drawdepth: Mobs + layers: + - map: [ "enum.HumanoidVisualLayers.Chest" ] + - map: [ "enum.HumanoidVisualLayers.Head" ] + - map: [ "enum.HumanoidVisualLayers.Snout" ] + - map: [ "enum.HumanoidVisualLayers.Eyes" ] + - map: [ "enum.HumanoidVisualLayers.RArm" ] + - map: [ "enum.HumanoidVisualLayers.LArm" ] + - map: [ "enum.HumanoidVisualLayers.RLeg" ] + - map: [ "enum.HumanoidVisualLayers.LLeg" ] + - map: [ "enum.HumanoidVisualLayers.Underwear" ] # DeltaV + - map: [ "enum.HumanoidVisualLayers.Undershirt" ] # DeltaV + - map: [ "jumpsuit" ] + - map: [ "enum.HumanoidVisualLayers.LHand" ] + - map: [ "enum.HumanoidVisualLayers.RHand" ] + - map: [ "enum.HumanoidVisualLayers.LFoot" ] + - map: [ "enum.HumanoidVisualLayers.RFoot" ] + - map: [ "enum.HumanoidVisualLayers.Handcuffs" ] + color: "#ffffff" + sprite: Objects/Misc/handcuffs.rsi + state: body-overlay-2 + visible: false + - map: [ "gloves" ] + - map: [ "shoes" ] + - map: [ "ears" ] + - map: [ "outerClothing" ] + - map: [ "eyes" ] + - map: [ "belt" ] + - map: [ "id" ] + - map: [ "back" ] + - map: [ "neck" ] + - map: [ "enum.HumanoidVisualLayers.Tail" ] #in the utopian future we should probably have a wings enum inserted here so everyhting doesn't break + - map: [ "enum.HumanoidVisualLayers.FacialHair" ] + - map: [ "enum.HumanoidVisualLayers.Hair" ] + - map: [ "enum.HumanoidVisualLayers.HeadSide" ] + - map: [ "enum.HumanoidVisualLayers.HeadTop" ] + - map: [ "mask" ] + - map: [ "head" ] + - map: [ "pocket1" ] + - map: [ "pocket2" ] + - map: [ "clownedon" ] # Dynamically generated + sprite: "Effects/creampie.rsi" + state: "creampie_moth" + visible: false + - type: Chitinid + - type: BlockInjection + +- type: entity + parent: BaseSpeciesDummy + id: MobChitinidDummy + categories: [ HideSpawnMenu ] + components: + - type: HumanoidAppearance + species: Chitinid diff --git a/Resources/Prototypes/_DV/Entities/Objects/Specific/Species/chitinid.yml b/Resources/Prototypes/_DV/Entities/Objects/Specific/Species/chitinid.yml new file mode 100644 index 00000000000..1a9b5f0bcef --- /dev/null +++ b/Resources/Prototypes/_DV/Entities/Objects/Specific/Species/chitinid.yml @@ -0,0 +1,33 @@ +- type: entity + parent: BaseItem + id: Chitzite + name: chitzite + description: A small radioactive stone formed in the chest cavity of a radioactive chitinid, gross.... but kinda pretty? + components: + - type: Sprite + sprite: _DV/Objects/Specific/Species/chitinid.rsi + layers: + - state: chitzite + - state: chitzite_glow + - type: RadiationSource + intensity: 0.5 + - type: Extractable + grindableSolutionName: chitzite + - type: SolutionContainerManager + solutions: + chitzite: + maxVol: 5 + reagents: + - ReagentId: Uranium + Quantity: 2.5 + - ReagentId: Radium + Quantity: 2.5 + - type: MeleeWeapon + damage: + types: + Blunt: 3 + Radiation: 3 + - type: Tag + tags: + - Recyclable + - Trash diff --git a/Resources/Prototypes/_DV/Guidebook/species.yml b/Resources/Prototypes/_DV/Guidebook/species.yml index f33f6d8c097..a5c6c1df248 100644 --- a/Resources/Prototypes/_DV/Guidebook/species.yml +++ b/Resources/Prototypes/_DV/Guidebook/species.yml @@ -22,3 +22,8 @@ id: Rodentia name: species-name-rodentia text: "/ServerInfo/Guidebook/Mobs/_DV/Rodentia.xml" + +- type: guideEntry + id: Chitinid + name: species-name-chitinid + text: "/ServerInfo/Guidebook/Mobs/_DV/Chitinid.xml" diff --git a/Resources/Prototypes/_DV/Species/chitinid.yml b/Resources/Prototypes/_DV/Species/chitinid.yml new file mode 100644 index 00000000000..b70c696f3a4 --- /dev/null +++ b/Resources/Prototypes/_DV/Species/chitinid.yml @@ -0,0 +1,167 @@ +- type: species + id: Chitinid + name: species-name-chitinid + roundStart: true + prototype: MobChitinid + sprites: MobChitinidSprites + defaultSkinTone: "#ffda93" + markingLimits: MobChitinidMarkingLimits + dollPrototype: MobChitinidDummy + skinColoration: Hues + maleFirstNames: NamesChitinidFirstMale + femaleFirstNames: NamesChitinidFirstFemale + naming: First + +- type: speciesBaseSprites + id: MobChitinidSprites + sprites: + Head: MobChitinidHead + Snout: MobHumanoidAnyMarking + Underwear: MobHumanoidAnyMarking + Undershirt: MobHumanoidAnyMarking + Chest: MobChitinidTorso + HeadTop: MobHumanoidAnyMarking + HeadSide: MobHumanoidAnyMarking + Tail: MobHumanoidAnyMarking + Eyes: MobChitinidEyes + LArm: MobChitinidLArm + RArm: MobChitinidRArm + LHand: MobChitinidLHand + RHand: MobChitinidRHand + LLeg: MobChitinidLLeg + RLeg: MobChitinidRLeg + LFoot: MobChitinidLFoot + RFoot: MobChitinidRFoot + +- type: humanoidBaseSprite + id: MobChitinidEyes + baseSprite: + sprite: _DV/Mobs/Species/Chitinid/parts.rsi + state: eyes + +- type: markingPoints + id: MobChitinidMarkingLimits + onlyWhitelisted: true + points: + Hair: + points: 0 + required: false + FacialHair: + points: 0 + required: false + Tail: + points: 1 + required: true + defaultMarkings: [ ChitinidWingsDefault ] + Snout: + points: 1 + required: false + HeadTop: + points: 1 + required: true + defaultMarkings: [ ChitinidAntennasDefault ] + HeadSide: + points: 1 + required: false + Head: + points: 1 + required: false + Chest: + points: 1 + required: false + Underwear: + points: 1 + required: false + Undershirt: + points: 1 + required: false + Legs: + points: 6 + required: false + Arms: + points: 6 + required: false + +- type: humanoidBaseSprite + id: MobChitinidHead + baseSprite: + sprite: _DV/Mobs/Species/Chitinid/parts.rsi + state: head_m + +- type: humanoidBaseSprite + id: MobChitinidHeadMale + baseSprite: + sprite: _DV/Mobs/Species/Chitinid/parts.rsi + state: head_m + +- type: humanoidBaseSprite + id: MobChitinidHeadFemale + baseSprite: + sprite: _DV/Mobs/Species/Chitinid/parts.rsi + state: head_f + +- type: humanoidBaseSprite + id: MobChitinidTorso + baseSprite: + sprite: _DV/Mobs/Species/Chitinid/parts.rsi + state: torso_m + +- type: humanoidBaseSprite + id: MobChitinidTorsoMale + baseSprite: + sprite: _DV/Mobs/Species/Chitinid/parts.rsi + state: torso_m + +- type: humanoidBaseSprite + id: MobChitinidTorsoFemale + baseSprite: + sprite: _DV/Mobs/Species/Chitinid/parts.rsi + state: torso_f + +- type: humanoidBaseSprite + id: MobChitinidLLeg + baseSprite: + sprite: _DV/Mobs/Species/Chitinid/parts.rsi + state: l_leg + +- type: humanoidBaseSprite + id: MobChitinidLHand + baseSprite: + sprite: _DV/Mobs/Species/Chitinid/parts.rsi + state: l_hand + +- type: humanoidBaseSprite + id: MobChitinidLArm + baseSprite: + sprite: _DV/Mobs/Species/Chitinid/parts.rsi + state: l_arm + +- type: humanoidBaseSprite + id: MobChitinidLFoot + baseSprite: + sprite: _DV/Mobs/Species/Chitinid/parts.rsi + state: l_foot + +- type: humanoidBaseSprite + id: MobChitinidRLeg + baseSprite: + sprite: _DV/Mobs/Species/Chitinid/parts.rsi + state: r_leg + +- type: humanoidBaseSprite + id: MobChitinidRHand + baseSprite: + sprite: _DV/Mobs/Species/Chitinid/parts.rsi + state: r_hand + +- type: humanoidBaseSprite + id: MobChitinidRArm + baseSprite: + sprite: _DV/Mobs/Species/Chitinid/parts.rsi + state: r_arm + +- type: humanoidBaseSprite + id: MobChitinidRFoot + baseSprite: + sprite: _DV/Mobs/Species/Chitinid/parts.rsi + state: r_foot diff --git a/Resources/Prototypes/_DV/Voice/speech_emote_sounds.yml b/Resources/Prototypes/_DV/Voice/speech_emote_sounds.yml index 02a332544d0..1a250450e85 100644 --- a/Resources/Prototypes/_DV/Voice/speech_emote_sounds.yml +++ b/Resources/Prototypes/_DV/Voice/speech_emote_sounds.yml @@ -242,3 +242,37 @@ collection: FemaleGasp DefaultDeathgasp: collection: FemaleDeathGasp + +- type: emoteSounds + id: UnisexChitinid + params: + variation: 0.125 + sounds: + Buzz: + path: /Audio/_DV/Voice/Chitinid/moth_scream.ogg + Scream: + path: /Audio/Voice/Arachnid/arachnid_scream.ogg + Laugh: + path: /Audio/_DV/Voice/Chitinid/moth_laugh.ogg + Chitter: + path: /Audio/Voice/Arachnid/arachnid_chitter.ogg + Click: + path: /Audio/Voice/Arachnid/arachnid_click.ogg + Crying: + collection: FemaleCry + Weh: + collection: Weh + Hew: + collection: Hew + Sneeze: + collection: MaleSneezes + Cough: + collection: MaleCoughs + Yawn: + collection: MaleYawn + Hiss: + path: /Audio/Animals/snake_hiss.ogg + Gasp: + collection: MaleGasp + DefaultDeathgasp: + collection: MothDeathGasp diff --git a/Resources/Prototypes/_DV/Voice/speech_sounds.yml b/Resources/Prototypes/_DV/Voice/speech_sounds.yml index 47ffb1fcda5..583d71f186f 100644 --- a/Resources/Prototypes/_DV/Voice/speech_sounds.yml +++ b/Resources/Prototypes/_DV/Voice/speech_sounds.yml @@ -15,3 +15,12 @@ path: /Audio/_DV/Voice/Harpy/chirp1.ogg exclaimSound: path: /Audio/_DV/Voice/Harpy/chirp1.ogg + +- type: speechSounds + id: Chitinid + saySound: + path: /Audio/Voice/Talk/speak_1.ogg + askSound: + path: /Audio/Voice/Talk/speak_1_ask.ogg + exclaimSound: + path: /Audio/Voice/Talk/speak_1_exclaim.ogg diff --git a/Resources/Prototypes/_DV/Voice/speech_verbs.yml b/Resources/Prototypes/_DV/Voice/speech_verbs.yml index a712223b1dc..e5c4b72724a 100644 --- a/Resources/Prototypes/_DV/Voice/speech_verbs.yml +++ b/Resources/Prototypes/_DV/Voice/speech_verbs.yml @@ -33,3 +33,12 @@ - chat-speech-verb-rodentia-2 - chat-speech-verb-rodentia-3 - chat-speech-verb-rodentia-4 + +- type: speechVerb + id: Chitinid + name: chat-speech-verb-name-chitinid + speechVerbStrings: + - chat-speech-verb-chitinid-1 + - chat-speech-verb-chitinid-2 + - chat-speech-verb-chitinid-3 + - chat-speech-verb-chitinid-4 diff --git a/Resources/Prototypes/_DV/typing_indicator.yml b/Resources/Prototypes/_DV/typing_indicator.yml index f43f9e67ff8..2c45ee21b22 100644 --- a/Resources/Prototypes/_DV/typing_indicator.yml +++ b/Resources/Prototypes/_DV/typing_indicator.yml @@ -10,3 +10,8 @@ typingState: rodentia0 offset: 0, 0.2 # 0625 +- type: typingIndicator + id: Chitinid + spritePath: /Textures/_DV/Effects/speech.rsi + typingState: chitinid0 + offset: -0.2, 0.1 # 0625 diff --git a/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/undershirt.yml b/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/undershirt.yml index 5d5625a7f6a..5161d4cb9bf 100644 --- a/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/undershirt.yml +++ b/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/undershirt.yml @@ -2,7 +2,7 @@ id: UndershirtDefault bodyPart: Undershirt markingCategory: Undershirt - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni] + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni, Chitinid] # Delta V - Chitinid coloring: default: type: @@ -16,7 +16,7 @@ id: UndershirtRolled bodyPart: Undershirt markingCategory: Undershirt - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni] + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni, Chitinid] # Delta V - Chitinid coloring: default: type: @@ -30,7 +30,7 @@ id: UndershirtSleeveless bodyPart: Undershirt markingCategory: Undershirt - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni] + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni, Chitinid] # Delta V - Chitinid coloring: default: type: @@ -44,7 +44,7 @@ id: UndershirtRolledSleeveless bodyPart: Undershirt markingCategory: Undershirt - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni] + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni, Chitinid] # Delta V - Chitinid coloring: default: type: @@ -58,7 +58,7 @@ id: UndershirtGrossSleeveless bodyPart: Undershirt markingCategory: Undershirt - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni] + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni, Chitinid] # Delta V - Chitinid coloring: default: type: @@ -72,7 +72,7 @@ id: UndershirtNanotrasen bodyPart: Undershirt markingCategory: Undershirt - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni] + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni, Chitinid] # Delta V - Chitinid coloring: default: type: @@ -86,7 +86,7 @@ id: UndershirtBinder bodyPart: Undershirt markingCategory: Undershirt - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni] + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni, Chitinid] # Delta V - Chitinid coloring: default: type: @@ -100,7 +100,7 @@ id: UndershirtBraClassic bodyPart: Undershirt markingCategory: Undershirt - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni] + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni, Chitinid] # Delta V - Chitinid coloring: default: type: @@ -114,7 +114,7 @@ id: UndershirtBraSports bodyPart: Undershirt markingCategory: Undershirt - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni] + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni, Chitinid] # Delta V - Chitinid coloring: default: type: @@ -128,7 +128,7 @@ id: UndershirtBraStrapless bodyPart: Undershirt markingCategory: Undershirt - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni] + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni, Chitinid] # Delta V - Chitinid coloring: default: type: diff --git a/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/underwear.yml b/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/underwear.yml index f43a6c9eb50..35dd3fb6621 100644 --- a/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/underwear.yml +++ b/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/underwear.yml @@ -2,7 +2,7 @@ id: UnderwearDefault bodyPart: Underwear markingCategory: Underwear - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni] + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni, Chitinid] # Delta V - Chitinid coloring: default: type: @@ -16,7 +16,7 @@ id: UnderwearBriefs bodyPart: Underwear markingCategory: Underwear - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni] + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni, Chitinid] # Delta V - Chitinid coloring: default: type: @@ -30,7 +30,7 @@ id: UnderwearLowriders bodyPart: Underwear markingCategory: Underwear - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni] + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni, Chitinid] # Delta V - Chitinid coloring: default: type: @@ -44,7 +44,7 @@ id: UnderwearSatin bodyPart: Underwear markingCategory: Underwear - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni] + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni, Chitinid] # Delta V - Chitinid coloring: default: type: @@ -58,7 +58,7 @@ id: UnderwearTanga bodyPart: Underwear markingCategory: Underwear - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni] + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni, Chitinid] # Delta V - Chitinid coloring: default: type: diff --git a/Resources/ServerInfo/Guidebook/Mobs/Species.xml b/Resources/ServerInfo/Guidebook/Mobs/Species.xml index 0fc1779b286..08bff6a62e0 100644 --- a/Resources/ServerInfo/Guidebook/Mobs/Species.xml +++ b/Resources/ServerInfo/Guidebook/Mobs/Species.xml @@ -23,6 +23,7 @@ + diff --git a/Resources/ServerInfo/Guidebook/Mobs/_DV/Chitinid.xml b/Resources/ServerInfo/Guidebook/Mobs/_DV/Chitinid.xml new file mode 100644 index 00000000000..29dde13c0f7 --- /dev/null +++ b/Resources/ServerInfo/Guidebook/Mobs/_DV/Chitinid.xml @@ -0,0 +1,28 @@ + + # Chitinid + + + + + + An industrious worker drone species, the Chitinid are strong diligent workers. Thanks to their homeworld's enviroment, they have grown an acute resistance to radiation, but not without its side effects. + + ## Diet + - Nothing special. + + ## Benefits + - Takes 80% less Radiation, 10% less Slash. + - Their bodies naturally recover from light radiation damage up to a point, once they accumulate enough radiation they must purge it from their systems in the form of a small rock. + - Due to their worker drone nature they are Better at pulling and carrying things. + - Due to their radioactive homeworld they possess a bio light. + + ## Drawbacks + - Built for work rather than combat their hard shells are weaker to Blunt and piercing damage, they take 25% more piercing and 15% more Blunt damage. + - Due to their hard shells normal syringes can not pierce them, requiring hypos to bypass the toughness. + - Thanks to their overactive systems they get hungry 33% faster. + - The cold does not agree with their biology and makes their movement sluggish, the cold also harms them more than others. + - They are deceptivly heavy due to their lifestyle and diet. + - The Chitzite they expel is slightly radioactive. + - Bug Blood. + + diff --git a/Resources/Textures/_DV/Effects/speech.rsi/chitinid0.png b/Resources/Textures/_DV/Effects/speech.rsi/chitinid0.png new file mode 100644 index 0000000000000000000000000000000000000000..dc37e2d63bdb3537452e55e79d522a8819cf2fc2 GIT binary patch literal 775 zcmV+i1Ni)jP)aTcuJf1$7W{$WXjR{3V#@vkQP<%#=zUtaLCdbAx!AIBMus*1C`QlCWy7^q z`?R&$8E<+x1@ynV?&l;B+y@$U*Znw!cDqn)@cb-qxbWKx7BFylHF7 z0dTboj6GX2mzz?6(ywX2#|1D{07mYC(7Ly));Z3ffc!T7qC4R52$-V&$i^S#6=(h- z^0uA;000SaNLh0L01FZT01FZU(%pXi0003#Nklo{Yk%8BhN0;btCmw>b-$YruxGH zxRhnNd)B$Cs&l9gn$BD6ucnGeM$|Ghg{AXa`kT2g^hO3lygVu__iS$c^#VhVT?v;y zx0As+GyTmQ#??`9Qdt4PF*E%*26Q92eG!DT_Ww8NJ0HYbIfnY;<09=|OM8lbZX3p8 zKqKevUPii54s>4jayP@Ll)kjPoUv!^z65bDHQ2Ydeh}1VBQdgGYx%$NT`gN41XB0f zdb#@p00000000000NfxyU?@(0zzfI^_=o&}{{MXHKfOhMK+29>`b)Ne%e(?UqECK6 zYykNI_p_J$0Bgt((0^yPK9r@1E~)@40|KsWZdwhyjM_@Kho$t!CGx z;5&Ti!7!%KB{SPvN-t*6Hhvzdn&KfUdbO`>8GSj`W`M7oc$Qh*A)Y5rZaJ3VJ>nr& zkaNT*#1T#hB)%28;_;i{yvJXHc_y_0_(e}C-^5B2vjR7WCyB#`USjq0h?|5|b0tlA zl-3w*q>w-y5)_oM2^|iiluephYhSG9TSk#QjQ$qN;N-}oK;8(cCF-hD)<{?B(@_?4 z|36P#o0;~yhvGoztLuJ_1HpZuT5;XqQ`fDY0f86b+HClXG^e?5(kl%ud<+ci0GBrn zO*sIrc7c&+OXhM-3efUv8t`!e^k;#=d!TpSn^k=u=TAUpo1W+nI6ML-sD5DM58Ux* z`YQX7ga7~l32;bRa{vGf5&!@T5&_cPe*6Fc0J2F$K~z}7?Ud08gFp<1Q|Ytov;$Zt zxv_4Nl)mdaE^v*KLV9?%#S2vUKL`mqHGdM7=qRL=T%LPc$qgo+)VJ!d-U5aY!liU^ zjPW6^^Ahk@T#7ATa=D06C)2wMutIVXn!jtfOGvYISSqfQxy>da?-6kR^#-#7sxbk( zg1M9S!%J9o|2ZthlYWLTV{3ZOHH)sTpwuCIblv>hAD1^eWv?mF7vp9E0000008Tss XD&{=cxq5k@00000NkvXXu0mjftK}NC literal 0 HcmV?d00001 diff --git a/Resources/Textures/_DV/Effects/speech.rsi/chitinid2.png b/Resources/Textures/_DV/Effects/speech.rsi/chitinid2.png new file mode 100644 index 0000000000000000000000000000000000000000..91bcf88fe5eec28c13c1764f3979ca0bb0239954 GIT binary patch literal 637 zcmV-@0)qXCP)9r@1E~)@40|KsWZdwhyjM_@Kho$t!CGx z;5&Ti!7!%KB{SPvN-t*6Hhvzdn&KfUdbO`>8GSj`W`M7oc$Qh*A)Y5rZaJ3VJ>nr& zkaNT*#1T#hB)%28;_;i{yvJXHc_y_0_(e}C-^5B2vjR7WCyB#`USjq0h?|5|b0tlA zl-3w*q>w-y5)_oM2^|iiluephYhSG9TSk#QjQ$qN;N-}oK;8(cCF-hD)<{?B(@_?4 z|36P#o0;~yhvGoztLuJ_1HpZuT5;XqQ`fDY0f86b+HClXG^e?5(kl%ud<+ci0GBrn zO*sIrc7c&+OXhM-3efUv8t`!e^k;#=d!TpSn^k=u=TAUpo1W+nI6ML-sD5DM58Ux* z`YQX7ga7~l32;bRa{vGf5&!@T5&_cPe*6Fc0J2F$K~z}7V_+C6;Q#;sG%=SEi`WSy z_9rOK2c<1&?SK<0DJkZ-6wjG6XD^U)p{4_v@L3MD5JfRi-WeJ~yQt*=7E(3990_zB z%n@$XiUPdBk0)AoQ{o5~0)~Tpj4pN(DRELY1VBN`M<5ZxEO(ly9o7>Ee&T@0gO6pVsVFbYP&C>RB!fJOiS X38^?{kaRH000000NkvXXu0mjfP%I3l literal 0 HcmV?d00001 diff --git a/Resources/Textures/_DV/Effects/speech.rsi/meta.json b/Resources/Textures/_DV/Effects/speech.rsi/meta.json index 8c27bf1627e..2136383e31e 100644 --- a/Resources/Textures/_DV/Effects/speech.rsi/meta.json +++ b/Resources/Textures/_DV/Effects/speech.rsi/meta.json @@ -40,6 +40,23 @@ }, { "name": "rodentia2" + }, + { + "name": "chitinid0", + "delays": [ + [ + 0.2, + 0.3, + 0.3, + 0.3 + ] + ] + }, + { + "name": "chitinid1" + }, + { + "name": "chitinid2" } ] } diff --git a/Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_antennas.rsi/bee.png b/Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_antennas.rsi/bee.png new file mode 100644 index 0000000000000000000000000000000000000000..3c5faa4aa25900b242fa115f25376e569a4a771b GIT binary patch literal 716 zcmV;-0yF)IP)Awv~~7D@$ilnQpK4s8XiF3B}%g(MA^6e+HPi$lRd zbn(~Vf1s=2svro8AmZxkuSH6H*A!Z$ec|#xeD8f9ckcjyMrVfImjDdY;n{RbS}m+e z!FTu&LJ-qP%FMQwa*KKNjGsrUrg(^pUcKwOMyROT4DbyQ&oYZU#Ph_NEyohPM?AvH za*_CiIL7IK#J56MJbn{g^7u z(He)1EYe6pf`TeGp~FF(vPm=R?n^X%%czit(ceN1oE#;T$r~fJN?ldT8tE#1I%;C> z|L19IGfA&|I0f{-y6)!$5ZnhEb=Unpb=}4p5O@Ku&9=WnbDH}mz24TM$3SEUxV&j= z$^me-3yeNnGMAfDfR{??*@;-?$lQBQ@p&F&IPt!ELT%YRhlCSqPE{dXW z+je*kfht0lNB%c0J392JJ4K5Ouo=1X{*rqe8s&+9sAcc*;o*AGgPM9=U4W-8xO z_6u2$<7z`@Zo>kil0~ zHI;4KR#6n`%eRmWKFhMjdEB~e!d8Z4AMMvV`cbm-aU3sJLRM$KT}`aM^f@P)l6`ct yA4gtZ4}3KL9ZcEk^Ibjw0000000000fEQ28*R+0x2~*Ml0000aTcu(v9aIo;$WX!9hqi)Mm*h2Rg(M9xDN&&ow5`bYkJd;XFtNAr4 z_zoXJ7^a+)nQbj)7jx(uKabQ+@emiYy7zUAP(igB;OirvVHS6Y=ZVu>jwN`Hc!-tc z0`UoPjMD{)Z-uUS{3f{Q@t0tp%PatXF;gnGvC_t@#0}y};;5llSo1#OOTwzTlBGII zIR+aUq>zLJ1r=;Uhl4m(lXlkGmuUEwQ6>+gw}mP=If^KeH%4lOrm9pm(p7qNRK?!^ z@6*<%r@ZOmB+&cnx}W1fa384GT=)0Xb?aw9;03rgTmCZbY4)4+T1$%_1Cbrz@}{LJ z2f)=XF!F54Ty97KO24K79~Zzt9vHj_`q#Z(HP3PW1mw2q7u^AeN5BO2M>hTd3MFU{ z>Bri<00009a7bBm000XT000XT0n*)m`~Uy}iAh93RCwC$n!SyLFc5|9)umK`M2tik z^g#m@Kn)Z?1N1>iPJ%>?LTh%%pQ2GwU|677yZ>QU>Jr!#i^jK3G;Y1T&cg=A@yGo{GT(i=j>DT z=RkB_efBB(000000000000000008(doE(!g{Qo1^lb3W6(fxO_oP6KEy$O^Td4IZN z>|)7Fm*RC7mb~}7o1hoZbK5(du@IqvYtP7uz0-dq?Jd`sa<-XEFwO_)*0POPeAwv~~7D@$ilnQpK4s8XiF3B}%g(MA^6e+HPi$lRd zbn(~Vf1s=2svro8AmZxkuSH6H*A!Z$ec|#xeD8f9ckcjyMrVfImjDdY;n{RbS}m+e z!FTu&LJ-qP%FMQwa*KKNjGsrUrg(^pUcKwOMyROT4DbyQ&oYZU#Ph_NEyohPM?AvH za*_CiIL7IK#J56MJbn{g^7u z(He)1EYe6pf`TeGp~FF(vPm=R?n^X%%czit(ceN1oE#;T$r~fJN?ldT8tE#1I%;C> z|L19IGfA&|I0f{-y6)!$5ZnhEb=Unpb=}4p5O@Ku&9=WnbDH}mz24TM$3SEUxV&j= z$^me-3yeNnGMAfDfR^@RCwC$+RdthKor37GZ%sg+6h9q z_YG_p_yU42n&1lv?eY!WOAxpdBxo^l2INL|xj|mM)&B>9%$zwNkgHJypUpfHwA=0M zd_I@+`7EC2Nf?HMb5&K@rfFn0o5|^PlFepg#%l5}>wo&v~wpL8Ao0000000000!25Xk`vBkf z<#0I2VzF>*>-F0Fr$P4ny}JnQx=vQBmAfi`a#;lHAL-pT*~002ovPDHLkV1i)oUSaTcu(v9aIo;$WX!9hqi)Mm*h2Rg(M9xDN&&ow5`bYkJd;XFtNAr4 z_zoXJ7^a+)nQbj)7jx(uKabQ+@emiYy7zUAP(igB;OirvVHS6Y=ZVu>jwN`Hc!-tc z0`UoPjMD{)Z-uUS{3f{Q@t0tp%PatXF;gnGvC_t@#0}y};;5llSo1#OOTwzTlBGII zIR+aUq>zLJ1r=;Uhl4m(lXlkGmuUEwQ6>+gw}mP=If^KeH%4lOrm9pm(p7qNRK?!^ z@6*<%r@ZOmB+&cnx}W1fa384GT=)0Xb?aw9;03rgTmCZbY4)4+T1$%_1Cbrz@}{LJ z2f)=XF!F54Ty97KO24K79~Zzt9vHj_`q#Z(HP3PW1mw2q7u^AeN5BO2M>hTd3MFU{ z>Bri<00009a7bBm000XT000XT0n*)m`~Uy}Vo5|nRCwC$+CR#JFc`=2sPERjo6sY; zbad$v3f(+~2k{hc1&`q3=+YxN7dmzlN#7@+Sb6_wO?b=8_X8!G1b<@E>4~RiDvCli zO=GTiyPY~7kF&;Xah31SnN(Gk3E1!V=GTYyreiYSCYSjib0)=cY}&Fc^{Cq$UF)`O z%|)7~p6%6lneQ)H1%12S)ZuXO!Y~|OMq0U-ei@f}%7H)2&$7&HDQPGDdffgt-$DLU z`)a=b>WlST&Bd0Vng7%}wRAOYt^T{@0{{R3000000Q?J9%34y3tLu8Wmojx<(Y3`@ z#_A8yS7|q!&Cqwh-%YjF<_D0RX@*#vUVtK_X* zc`Yk1CqKHbQ>W9(JTK34eZ5{)6h+oQ_H0rbFN#9{Fm5B`+cC+WmgnDwjdKFF&l-Hi qS8%rjT>k|C0000000000u)qU0==wp^wGzDm0000?P)aTcu(v9aIo;$WX!9hqi)Mm*h2Rg(M9xDN&&ow5`bYkJd;XFtNAr4 z_zoXJ7^a+)nQbj)7jx(uKabQ+@emiYy7zUAP(igB;OirvVHS6Y=ZVu>jwN`Hc!-tc z0`UoPjMD{)Z-uUS{3f{Q@t0tp%PatXF;gnGvC_t@#0}y};;5llSo1#OOTwzTlBGII zIR+aUq>zLJ1r=;Uhl4m(lXlkGmuUEwQ6>+gw}mP=If^KeH%4lOrm9pm(p7qNRK?!^ z@6*<%r@ZOmB+&cnx}W1fa384GT=)0Xb?aw9;03rgTmCZbY4)4+T1$%_1Cbrz@}{LJ z2f)=XF!F54Ty97KO24K79~Zzt9vHj_`q#Z(HP3PW1mw2q7u^AeN5BO2M>hTd3MFU{ z>Bri<00009a7bBm000XT000XT0n*)m`~Uy}9Z5t%RCwC$+R+JvFc5&@Sc)t7>JmP> zggA+VWD;=+A6-IxbBdM=1f*1qcrm5?ABaMZyEDbUTrv}A7zQ)XvwJSf(lkvIw5BCi z{YOa9IF7DBRaNft#k|ioiPsdfe$WO?)8vxZb?q+S)b{SzBu?TrrLJ%KzJJAxPg(yF zlB_6-;G}2cQ`dhU1uV;A@;rC<5NG3my}o0ueZ`Fb_4)t+000000001gA=5}A6WZ-W z)=zRZ#j0_61FW^~E(a4lKd;x?1po4%HAL5SmvTQf8vJ%*LmHOGuWrKj<@Zj7B;$Ym zJsKnOqZ~&)-0~l=*SO5-*L5{*+h(b9-0}&0qcNwCGV8zd^U#>nGwTNc000000000` Z@&-oA^59NaTcu(v9aIo;$WX!9hqi)Mm*h2Rg(M9xDN&&ow5`bYkJd;XFtNAr4 z_zoXJ7^a+)nQbj)7jx(uKabQ+@emiYy7zUAP(igB;OirvVHS6Y=ZVu>jwN`Hc!-tc z0`UoPjMD{)Z-uUS{3f{Q@t0tp%PatXF;gnGvC_t@#0}y};;5llSo1#OOTwzTlBGII zIR+aUq>zLJ1r=;Uhl4m(lXlkGmuUEwQ6>+gw}mP=If^KeH%4lOrm9pm(p7qNRK?!^ z@6*<%r@ZOmB+&cnx}W1fa384GT=)0Xb?aw9;03rgTmCZbY4)4+T1$%_1Cbrz@}{LJ z2f)=XF!F54Ty97KO24K79~Zzt9vHj_`q#Z(HP3PW1mw2q7u^AeN5BO2M>hTd3MFU{ z>Bri<00009a7bBm000XT000XT0n*)m`~Uy|0)oG}IT)5(uIE${>ooj}%>E8-JH5-5G=bW`8;Cy%((^1XI`b_H5HM zQkG?W@0_z&HG4&V_U*y0>tr0q7*G_&){IvDtn0e3=dSqjx8*Otu3j4JVO{q1(|G^@ z0000000000xKr{d+k3A?@;u+x=6SZxxlvy_ Vkd07k;)MVJ002ovPDHLkV1nemJ}CeI literal 0 HcmV?d00001 diff --git a/Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_antennas.rsi/long.png b/Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_antennas.rsi/long.png new file mode 100644 index 0000000000000000000000000000000000000000..9ff75a10104ac0fef0dc3b49ca26b766f5b8cdb8 GIT binary patch literal 634 zcmV-=0)_pFP)aTcu(v9aIo;$WX!9hqi)Mm*h2Rg(M9xDN&&ow5`bYkJd;XFtNAr4 z_zoXJ7^a+)nQbj)7jx(uKabQ+@emiYy7zUAP(igB;OirvVHS6Y=ZVu>jwN`Hc!-tc z0`UoPjMD{)Z-uUS{3f{Q@t0tp%PatXF;gnGvC_t@#0}y};;5llSo1#OOTwzTlBGII zIR+aUq>zLJ1r=;Uhl4m(lXlkGmuUEwQ6>+gw}mP=If^KeH%4lOrm9pm(p7qNRK?!^ z@6*<%r@ZOmB+&cnx}W1fa384GT=)0Xb?aw9;03rgTmCZbY4)4+T1$%_1Cbrz@}{LJ z2f)=XF!F54Ty97KO24K79~Zzt9vHj_`q#Z(HP3PW1mw2q7u^AeN5BO2M>hTd3MFU{ z>Bri<00009a7bBm000XT000XT0n*)m`~Uy|ut`KgRCwC$+A#{kKoAAc#oKttbapl# z!A7tX1dkx*5Q2D<$OHmbfrQN_#`l`ADe`Bh{Yhzr`f+di&Qr^oze#^?)B@hGXS!W4 z?bhQN=aO>f4_-i3Rofx&bDKNAb=dEkzVq7i0RR91003akqI`@VzVyEULv-_HFG{~Z z7aTcu(v9aIo;$WX!9hqi)Mm*h2Rg(M9xDN&&ow5`bYkJd;XFtNAr4 z_zoXJ7^a+)nQbj)7jx(uKabQ+@emiYy7zUAP(igB;OirvVHS6Y=ZVu>jwN`Hc!-tc z0`UoPjMD{)Z-uUS{3f{Q@t0tp%PatXF;gnGvC_t@#0}y};;5llSo1#OOTwzTlBGII zIR+aUq>zLJ1r=;Uhl4m(lXlkGmuUEwQ6>+gw}mP=If^KeH%4lOrm9pm(p7qNRK?!^ z@6*<%r@ZOmB+&cnx}W1fa384GT=)0Xb?aw9;03rgTmCZbY4)4+T1$%_1Cbrz@}{LJ z2f)=XF!F54Ty97KO24K79~Zzt9vHj_`q#Z(HP3PW1mw2q7u^AeN5BO2M>hTd3MFU{ z>Bri<00009a7bBm000XT000XT0n*)m`~Uy|=Sf6CRCwC$+OZ9TFc5`d(@-%29V5_F zc@S1$5>{XkDtbns^9WQlBzKBYqJTmahY02W8e{43S+=Mi#^Aq2uL{bte3&;)6QuSO z2herh?4SF-*D=p?QxrwCR(oILt<~;zME_lzyWXsBB+D|LCrM(es#@Ny>v|r?QJ;rl z@V6g@x}{(D2LJ#700000003})K?6idXq|J*JWW$GO_TPp*1ok?+qOE!as0IACyDb{ z4!}p#KB1L$C8Z7Ze}MdVa7%_YC6;t}D<(gjMAJULK9cm5-h9LW00000000000QR^5 X4BBa&z@Hez00000NkvXXu0mjfke@YJ literal 0 HcmV?d00001 diff --git a/Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_antennas.rsi/short.png b/Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_antennas.rsi/short.png new file mode 100644 index 0000000000000000000000000000000000000000..1dde872b7854e1105360b5c3c91f9fd24d311644 GIT binary patch literal 671 zcmV;Q0$}}#P)aTcu(v9aIo;$WX!9hqi)Mm*h2Rg(M9xDN&&ow5`bYkJd;XFtNAr4 z_zoXJ7^a+)nQbj)7jx(uKabQ+@emiYy7zUAP(igB;OirvVHS6Y=ZVu>jwN`Hc!-tc z0`UoPjMD{)Z-uUS{3f{Q@t0tp%PatXF;gnGvC_t@#0}y};;5llSo1#OOTwzTlBGII zIR+aUq>zLJ1r=;Uhl4m(lXlkGmuUEwQ6>+gw}mP=If^KeH%4lOrm9pm(p7qNRK?!^ z@6*<%r@ZOmB+&cnx}W1fa384GT=)0Xb?aw9;03rgTmCZbY4)4+T1$%_1Cbrz@}{LJ z2f)=XF!F54Ty97KO24K79~Zzt9vHj_`q#Z(HP3PW1mw2q7u^AeN5BO2M>hTd3MFU{ z>Bri<00009a7bBm000XT000XT0n*)m`~Uy|)k#D_RCwC$+OZ9TFc3gdgEAAtjgUTp{{mQbmTk)o8tjqjWRoQRiOX4G& zhhbQ4f~*KTtV{f;+mX%VII4M`7h`SPs%e^>Hef4%UDwX@KP5?G(=>gX zf?UhGkI(Sx`~Uy|00000006*0$@AR)N=@;Zo3z%dD2ia3Ahk$M-Wu=_8DoN({;QVA zYf?Fq&a&+Cw?Jz6JTCVpgfn^m3jhEB000000001XxdV7vZj~d=@Sgwx002ovPDHLk FV1oQDFbDtu literal 0 HcmV?d00001 diff --git a/Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_antennas.rsi/slick.png b/Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_antennas.rsi/slick.png new file mode 100644 index 0000000000000000000000000000000000000000..f1e856667cdba877cc9e0704e428fcb13e6cf4f7 GIT binary patch literal 656 zcmV;B0&o3^P)aTcu(v9aIo;$WX!9hqi)Mm*h2Rg(M9xDN&&ow5`bYkJd;XFtNAr4 z_zoXJ7^a+)nQbj)7jx(uKabQ+@emiYy7zUAP(igB;OirvVHS6Y=ZVu>jwN`Hc!-tc z0`UoPjMD{)Z-uUS{3f{Q@t0tp%PatXF;gnGvC_t@#0}y};;5llSo1#OOTwzTlBGII zIR+aUq>zLJ1r=;Uhl4m(lXlkGmuUEwQ6>+gw}mP=If^KeH%4lOrm9pm(p7qNRK?!^ z@6*<%r@ZOmB+&cnx}W1fa384GT=)0Xb?aw9;03rgTmCZbY4)4+T1$%_1Cbrz@}{LJ z2f)=XF!F54Ty97KO24K79~Zzt9vHj_`q#Z(HP3PW1mw2q7u^AeN5BO2M>hTd3MFU{ z>Bri<00009a7bBm000XT000XT0n*)m`~Uy|#z{m$RCwC$+QA8gFc5{|WD5vbgC&>- zEXpc!wGLab0aJoC1k!-Z3#`{Qtmq>D2VtCm%tVh9V}L62Ja1ax_MTe5n5JnjsHptP zpKxaVSM3WSgl%0{)AzkquBcr5R~-KC`Tzg`000000000UZXCxg##q+B_W0>fy&iqX z))vte)_Y%`opU92U1#q)uwu@+aTcu(v9aIo;$WX!9hqi)Mm*h2Rg(M9xDN&&ow5`bYkJd;XFtNAr4 z_zoXJ7^a+)nQbj)7jx(uKabQ+@emiYy7zUAP(igB;OirvVHS6Y=ZVu>jwN`Hc!-tc z0`UoPjMD{)Z-uUS{3f{Q@t0tp%PatXF;gnGvC_t@#0}y};;5llSo1#OOTwzTlBGII zIR+aUq>zLJ1r=;Uhl4m(lXlkGmuUEwQ6>+gw}mP=If^KeH%4lOrm9pm(p7qNRK?!^ z@6*<%r@ZOmB+&cnx}W1fa384GT=)0Xb?aw9;03rgTmCZbY4)4+T1$%_1Cbrz@}{LJ z2f)=XF!F54Ty97KO24K79~Zzt9vHj_`q#Z(HP3PW1mw2q7u^AeN5BO2M>hTd3MFU{ z>Bri<00009a7bBm000XT000XT0n*)m`~Uy|(==6Cmg%M1c}=iXyVVi%Z(7{_X8l5vB=LP?j4Fy^`nN30vG04|?z%4A zzTWGW&Ym9t000000000004{GeL9OfBr?OELDd*fY9>?)lvG*@XJpR1KVHkWn&vX6J z0nAB69pY&r5%sIA{^*U%yMPdn3yH`NiO1zoB%42L^D=jMI{*Lx000000001B)eVL; VX`ERbWZ(b*002ovPDHLkV1lX`IG6wc literal 0 HcmV?d00001 diff --git a/Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/charred_chest.png b/Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/charred_chest.png new file mode 100644 index 0000000000000000000000000000000000000000..8981bd797e8020bbfa72c4839eca7eb10d939c6a GIT binary patch literal 1631 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 JtaD0e0sv8Pd#3;Z literal 0 HcmV?d00001 diff --git a/Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/charred_l_leg.png b/Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/charred_l_leg.png new file mode 100644 index 0000000000000000000000000000000000000000..5be58a196c58ac9c162835812e6e4f46a039994b GIT binary patch literal 381 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!8UuVnT-^(NEWkipTU!tYWMpK3 zVnCjOfdP;KB!O%V4GoAOP$iHJ1VCjFmAbmRKm{TqB0xc7V`D`{MIaj}2$Y2=1Ij|g zm6er&vTAB-Kv^IID9h(-zYFLX?UEqBUs7 zIQyWPzg}FiMc~nF6=~ms*Vm8tY*-@o_*$@GL+*@+Tb3yLM4uMfp0r&_BV25LQni9c zxUOC7YL3;xHM^!TdLW%)fyZ}1b zyd=mkn4vU1*2L9AG1o43nVa&AB9#gydt(>JX6L$6!z`!dY4dUuf`a-}y-R|#Q#}$h zr>17)#;17I$Ibu#3}{5Rr;B5Vgyh?U?qW?20uBfHo0=OepU)}Y^Z()<{@D+|o=Oj2 zIAv2wVYp(p(c##we#a78tk<{ZTAA!vE!n&@pXc4FV+oS%PcCw7_|o;{qE6E5mL1xy zDO(G}oivwTk@tvuZOL@<`ClD{g0E)gDtyQ9%6583RVZxq_m6gY^rFW@#??+~^-&>7 d`K5K2#cRH^x$iY*v;aDb!PC{xWt~$(69Boxg;xLo literal 0 HcmV?d00001 diff --git a/Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/charred_r_leg.png b/Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/charred_r_leg.png new file mode 100644 index 0000000000000000000000000000000000000000..0ebd96c5dd8dcbc8225a1767a9d9bad3992440bc GIT binary patch literal 387 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/radiant_head.png b/Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/radiant_head.png new file mode 100644 index 0000000000000000000000000000000000000000..5a19d265775b92dfa843b4ad39589a4483d5d325 GIT binary patch literal 557 zcmV+|0@D47P)aTcu(v9aIo;$WX!9hqi)Mm*h2Rg(M9xDN&&ow5`bYkJd;XFtNAr4 z_zoXJ7^a+)nQbj)7jx(uKabQ+@emiYy7zUAP(igB;OirvVHS6Y=ZVu>jwN`Hc!-tc z0`UoPjMD{)Z-uUS{3f{Q@t0tp%PatXF;gnGvC_t@#0}y};;5llSo1#OOTwzTlBGII zIR+aUq>zLJ1r=;Uhl4m(lXlkGmuUEwQ6>+gw}mP=If^KeH%4lOrm9pm(p7qNRK?!^ z@6*<%r@ZOmB+&cnx}W1fa384GT=)0Xb?aw9;03rgTmCZbY4)4+T1$%_1Cbrz@}{LJ z2f)=XF!F54Ty97KO24K79~Zzt9vHj_`q#Z(HP3PW1mw2q7u^AeN5BO2M>hTd3MFU{ z>Bri<00009a7bBm000XT000XT0n*)m`~Uy|V@X6oRCwC$*|814APfXRScC!TnSx1J zi$#cN(g!I)3U|Hzmh8?U030l?7S>uvN-6Z-Ln$SGJ^1eYdx)Le+no;p000000Kjo_ v&f||+kF?gtn?L*6duBK{000000DuJ-2SpaTcu(v9aIo;$WX!9hqi)Mm*h2Rg(M9xDN&&ow5`bYkJd;XFtNAr4 z_zoXJ7^a+)nQbj)7jx(uKabQ+@emiYy7zUAP(igB;OirvVHS6Y=ZVu>jwN`Hc!-tc z0`UoPjMD{)Z-uUS{3f{Q@t0tp%PatXF;gnGvC_t@#0}y};;5llSo1#OOTwzTlBGII zIR+aUq>zLJ1r=;Uhl4m(lXlkGmuUEwQ6>+gw}mP=If^KeH%4lOrm9pm(p7qNRK?!^ z@6*<%r@ZOmB+&cnx}W1fa384GT=)0Xb?aw9;03rgTmCZbY4)4+T1$%_1Cbrz@}{LJ z2f)=XF!F54Ty97KO24K79~Zzt9vHj_`q#Z(HP3PW1mw2q7u^AeN5BO2M>hTd3MFU{ z>Bri<00009a7bBm000XT000XT0n*)m`~Uy|_DMuRRCwC$+A#`)Fcik|G;|hMaq~zX z!$Wurui+WoJc)?lE>4!OU~wzr3pDos1HmO9F(%L9=^Ow6000yrmm7~0<7GRpDXm+a)vHg=Iae1D*x~?zn0*zPBvMj-lf%yWIW%=m3?tMSc^QEkP zyz-PwVU1x2^nJfsPc~#B^ww`l1#lck^NEJ41K#@l55r(m0FQ;RD2iZp!2Ag8pTMgH z@K^}fbv4Ta0000000000|LYbVSGCOc-l5uZXF5pFJ1l@6I!)8h{Tcoa3!rwK+Go0A m`a8v3RaKh<00000;Hww-|9KOjM|k4^0000aTcu(v9aIo;$WX!9hqi)Mm*h2Rg(M9xDN&&ow5`bYkJd;XFtNAr4 z_zoXJ7^a+)nQbj)7jx(uKabQ+@emiYy7zUAP(igB;OirvVHS6Y=ZVu>jwN`Hc!-tc z0`UoPjMD{)Z-uUS{3f{Q@t0tp%PatXF;gnGvC_t@#0}y};;5llSo1#OOTwzTlBGII zIR+aUq>zLJ1r=;Uhl4m(lXlkGmuUEwQ6>+gw}mP=If^KeH%4lOrm9pm(p7qNRK?!^ z@6*<%r@ZOmB+&cnx}W1fa384GT=)0Xb?aw9;03rgTmCZbY4)4+T1$%_1Cbrz@}{LJ z2f)=XF!F54Ty97KO24K79~Zzt9vHj_`q#Z(HP3PW1mw2q7u^AeN5BO2M>hTd3MFU{ z>Bri<00009a7bBm000XT000XT0n*)m`~Uy|v`IukRCwC$+A#`*Fc1aM=mo4jmk0AC zUPG|)5H@0KAr^v5gzXn~WwX53Ose@|l5#=-000000N`^?)9iiU@3DS6r)}F?bMm_y zt?QcP<6Ry=UDtb26rt<7P*qj-&CACAF(>B5+@Bc0JkMd?+2enOt|0Nx7|%d&)F7*6%bQ~$zO7bcP)fQ5;R YUVH*%{Z-2@x&QzG07*qoM6N<$f~f~4asU7T literal 0 HcmV?d00001 diff --git a/Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/radiant_r_arm.png b/Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/radiant_r_arm.png new file mode 100644 index 0000000000000000000000000000000000000000..72dfcfde064c7b058592e6269ea9f98883553a25 GIT binary patch literal 702 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/spotted_r_arm.png b/Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/spotted_r_arm.png new file mode 100644 index 0000000000000000000000000000000000000000..a83a50ec9799fb185cc77f0c28037a55812dfaf9 GIT binary patch literal 520 zcmV+j0{8uiP)aTcu(v9aIo;$WX!9hqi)Mm*h2Rg(M9xDN&&ow5`bYkJd;XFtNAr4 z_zoXJ7^a+)nQbj)7jx(uKabQ+@emiYy7zUAP(igB;OirvVHS6Y=ZVu>jwN`Hc!-tc z0`UoPjMD{)Z-uUS{3f{Q@t0tp%PatXF;gnGvC_t@#0}y};;5llSo1#OOTwzTlBGII zIR+aUq>zLJ1r=;Uhl4m(lXlkGmuUEwQ6>+gw}mP=If^KeH%4lOrm9pm(p7qNRK?!^ z@6*<%r@ZOmB+&cnx}W1fa384GT=)0Xb?aw9;03rgTmCZbY4)4+T1$%_1Cbrz@}{LJ z2f)=XF!F54Ty97KO24K79~Zzt9vHj_`q#Z(HP3PW1mw2q7u^AeN5BO2M>hTd3MFU{ z>Bri<00009a7bBm000XT000XT0n*)m`~Uy|K1oDDRCwC$*f9+N00;vx#LmA3aKKM! z6)f3!r~&{0SR`pVF@2eF4)SSUUH||9008*K?_Kj)0RR91aMA#7y%*Zx$|-RG0000< KMNUMnLSTX#b>a>H literal 0 HcmV?d00001 diff --git a/Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/spotted_r_leg.png b/Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/spotted_r_leg.png new file mode 100644 index 0000000000000000000000000000000000000000..27e6854260f94e899596adfe9490d754123edafd GIT binary patch literal 537 zcmV+!0_OdRP)aTcu(v9aIo;$WX!9hqi)Mm*h2Rg(M9xDN&&ow5`bYkJd;XFtNAr4 z_zoXJ7^a+)nQbj)7jx(uKabQ+@emiYy7zUAP(igB;OirvVHS6Y=ZVu>jwN`Hc!-tc z0`UoPjMD{)Z-uUS{3f{Q@t0tp%PatXF;gnGvC_t@#0}y};;5llSo1#OOTwzTlBGII zIR+aUq>zLJ1r=;Uhl4m(lXlkGmuUEwQ6>+gw}mP=If^KeH%4lOrm9pm(p7qNRK?!^ z@6*<%r@ZOmB+&cnx}W1fa384GT=)0Xb?aw9;03rgTmCZbY4)4+T1$%_1Cbrz@}{LJ z2f)=XF!F54Ty97KO24K79~Zzt9vHj_`q#Z(HP3PW1mw2q7u^AeN5BO2M>hTd3MFU{ z>Bri<00009a7bBm000XT000XT0n*)m`~Uy|Pf0{URCwC$+Pe(^AP5COq$s}>d_hi00000z(Q4x6Z?vYVLE)eZl|6l00000008ii+k?rzQ=FMn*>8DC b0bVcx$z2j!Pp_AV00000NkvXXu0mjfqs{Eg literal 0 HcmV?d00001 diff --git a/Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/stripes_chest.png b/Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/stripes_chest.png new file mode 100644 index 0000000000000000000000000000000000000000..29b41970dce883e15c5a944c89304a7076063236 GIT binary patch literal 656 zcmV;B0&o3^P)aTcu(v9aIo;$WX!9hqi)Mm*h2Rg(M9xDN&&ow5`bYkJd;XFtNAr4 z_zoXJ7^a+)nQbj)7jx(uKabQ+@emiYy7zUAP(igB;OirvVHS6Y=ZVu>jwN`Hc!-tc z0`UoPjMD{)Z-uUS{3f{Q@t0tp%PatXF;gnGvC_t@#0}y};;5llSo1#OOTwzTlBGII zIR+aUq>zLJ1r=;Uhl4m(lXlkGmuUEwQ6>+gw}mP=If^KeH%4lOrm9pm(p7qNRK?!^ z@6*<%r@ZOmB+&cnx}W1fa384GT=)0Xb?aw9;03rgTmCZbY4)4+T1$%_1Cbrz@}{LJ z2f)=XF!F54Ty97KO24K79~Zzt9vHj_`q#Z(HP3PW1mw2q7u^AeN5BO2M>hTd3MFU{ z>Bri<00009a7bBm000XT000XT0n*)m`~Uy|#z{m$RCwC$+QAKiKoA8`pc+b|9Lk|2 zxp$;gE%3IG5AIGys-8{4)W(zUMZqG_7N@4BuV`o5p;EsrRh zI=st2D*LHK3Y&*d59nyo`HK?S!@r!rd0fUZypCfUyRk%>`@b8Ve=iaF0*lTE00000 z002&6{+<38J5+muZ=a@z$iwgLQ0)m$>nPJ&OoYb{TOUHT=kQaBh$)!wBxUQdwvMv4 qw{!I2U-bwZ$DHAz2L%A&Ph0>;U#piOFM-hj0000aTcu(v9aIo;$WX!9hqi)Mm*h2Rg(M9xDN&&ow5`bYkJd;XFtNAr4 z_zoXJ7^a+)nQbj)7jx(uKabQ+@emiYy7zUAP(igB;OirvVHS6Y=ZVu>jwN`Hc!-tc z0`UoPjMD{)Z-uUS{3f{Q@t0tp%PatXF;gnGvC_t@#0}y};;5llSo1#OOTwzTlBGII zIR+aUq>zLJ1r=;Uhl4m(lXlkGmuUEwQ6>+gw}mP=If^KeH%4lOrm9pm(p7qNRK?!^ z@6*<%r@ZOmB+&cnx}W1fa384GT=)0Xb?aw9;03rgTmCZbY4)4+T1$%_1Cbrz@}{LJ z2f)=XF!F54Ty97KO24K79~Zzt9vHj_`q#Z(HP3PW1mw2q7u^AeN5BO2M>hTd3MFU{ z>Bri<00009a7bBm000XT000XT0n*)m`~Uy|pGibPRCwC$+RX`sFc1b%V>M}IJ4iW} zlaegJK3oR&;K79@>rcSaTcu(v9aIo;$WX!9hqi)Mm*h2Rg(M9xDN&&ow5`bYkJd;XFtNAr4 z_zoXJ7^a+)nQbj)7jx(uKabQ+@emiYy7zUAP(igB;OirvVHS6Y=ZVu>jwN`Hc!-tc z0`UoPjMD{)Z-uUS{3f{Q@t0tp%PatXF;gnGvC_t@#0}y};;5llSo1#OOTwzTlBGII zIR+aUq>zLJ1r=;Uhl4m(lXlkGmuUEwQ6>+gw}mP=If^KeH%4lOrm9pm(p7qNRK?!^ z@6*<%r@ZOmB+&cnx}W1fa384GT=)0Xb?aw9;03rgTmCZbY4)4+T1$%_1Cbrz@}{LJ z2f)=XF!F54Ty97KO24K79~Zzt9vHj_`q#Z(HP3PW1mw2q7u^AeN5BO2M>hTd3MFU{ z>Bri<00009a7bBm000XT000XT0n*)m`~Uy|m`OxIRCwC$+OZ9UAQT2*ycKW{Ysa8t z95=Fd0;jRH<$}qTmn)RSoZr{*DEJcyc@2aB0001w(_I}nO;Z`i@u=5zt@G{L=G z96-14d+7T<48w3LtFEs(HLu0yf$P=AwJb}i;~n#wH^EQiI@}M{P)aTcu(v9aIo;$WX!9hqi)Mm*h2Rg(M9xDN&&ow5`bYkJd;XFtNAr4 z_zoXJ7^a+)nQbj)7jx(uKabQ+@emiYy7zUAP(igB;OirvVHS6Y=ZVu>jwN`Hc!-tc z0`UoPjMD{)Z-uUS{3f{Q@t0tp%PatXF;gnGvC_t@#0}y};;5llSo1#OOTwzTlBGII zIR+aUq>zLJ1r=;Uhl4m(lXlkGmuUEwQ6>+gw}mP=If^KeH%4lOrm9pm(p7qNRK?!^ z@6*<%r@ZOmB+&cnx}W1fa384GT=)0Xb?aw9;03rgTmCZbY4)4+T1$%_1Cbrz@}{LJ z2f)=XF!F54Ty97KO24K79~Zzt9vHj_`q#Z(HP3PW1mw2q7u^AeN5BO2M>hTd3MFU{ z>Bri<00009a7bBm000XT000XT0n*)m`~Uy|Zb?KzRCwC$+Pe+IAP@jh>=oFAo~f9F zUD$z{sBPg1Y%7UG^j>pU-LJk700000006kJlybDzju}_$vwxyUN-4w`ulP;B>H`1( z000000Q{G2<>BY2NY44nd+(vv`gosxaTcu(v9aIo;$WX!9hqi)Mm*h2Rg(M9xDN&&ow5`bYkJd;XFtNAr4 z_zoXJ7^a+)nQbj)7jx(uKabQ+@emiYy7zUAP(igB;OirvVHS6Y=ZVu>jwN`Hc!-tc z0`UoPjMD{)Z-uUS{3f{Q@t0tp%PatXF;gnGvC_t@#0}y};;5llSo1#OOTwzTlBGII zIR+aUq>zLJ1r=;Uhl4m(lXlkGmuUEwQ6>+gw}mP=If^KeH%4lOrm9pm(p7qNRK?!^ z@6*<%r@ZOmB+&cnx}W1fa384GT=)0Xb?aw9;03rgTmCZbY4)4+T1$%_1Cbrz@}{LJ z2f)=XF!F54Ty97KO24K79~Zzt9vHj_`q#Z(HP3PW1mw2q7u^AeN5BO2M>hTd3MFU{ z>Bri<00009a7bBm000XT000XT0n*)m`~Uy|oJmAMRCwC$*})BiAQT2*a0EAS0yl66 zZjR$dZs5U1oWTibFzwaGG-*oxz6%gI{Ev`#Ap`&b0JxoawmD5x9){tVuj^XY@z)Ew znz=dK?E5~nZ5#G|ucG+p1;moK^PIb`JLcQAg_Kgf-Hnaon7tbS008Rt0HfJ7N@#_Z^8f$<07*qoM6N<$f;BN4 AR{#J2 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/stripes_r_leg.png b/Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/stripes_r_leg.png new file mode 100644 index 0000000000000000000000000000000000000000..e149af3795ff287f77b915648caa57ce41acc721 GIT binary patch literal 568 zcmV-80>}M{P)aTcu(v9aIo;$WX!9hqi)Mm*h2Rg(M9xDN&&ow5`bYkJd;XFtNAr4 z_zoXJ7^a+)nQbj)7jx(uKabQ+@emiYy7zUAP(igB;OirvVHS6Y=ZVu>jwN`Hc!-tc z0`UoPjMD{)Z-uUS{3f{Q@t0tp%PatXF;gnGvC_t@#0}y};;5llSo1#OOTwzTlBGII zIR+aUq>zLJ1r=;Uhl4m(lXlkGmuUEwQ6>+gw}mP=If^KeH%4lOrm9pm(p7qNRK?!^ z@6*<%r@ZOmB+&cnx}W1fa384GT=)0Xb?aw9;03rgTmCZbY4)4+T1$%_1Cbrz@}{LJ z2f)=XF!F54Ty97KO24K79~Zzt9vHj_`q#Z(HP3PW1mw2q7u^AeN5BO2M>hTd3MFU{ z>Bri<00009a7bBm000XT000XT0n*)m`~Uy|Zb?KzRCwC$+OZLUAPfLNbOkn{XDa4k z7j|GKYCXNPveF8@|0XGtyCii&00000007{wl(Mzfwj=&!uJuWAN-4w`&p4A==K=r# z00000fJrQGnvO?=ob#FY-b1Z*`RW1IH%-?=!WiSz%LDABh#sW!Bf*0J0000aTcu(v9aIo;$WX!9hqi)Mm*h2Rg(M9xDN&&ow5`bYkJd;XFtNAr4 z_zoXJ7^a+)nQbj)7jx(uKabQ+@emiYy7zUAP(igB;OirvVHS6Y=ZVu>jwN`Hc!-tc z0`UoPjMD{)Z-uUS{3f{Q@t0tp%PatXF;gnGvC_t@#0}y};;5llSo1#OOTwzTlBGII zIR+aUq>zLJ1r=;Uhl4m(lXlkGmuUEwQ6>+gw}mP=If^KeH%4lOrm9pm(p7qNRK?!^ z@6*<%r@ZOmB+&cnx}W1fa384GT=)0Xb?aw9;03rgTmCZbY4)4+T1$%_1Cbrz@}{LJ z2f)=XF!F54Ty97KO24K79~Zzt9vHj_`q#Z(HP3PW1mw2q7u^AeN5BO2M>hTd3MFU{ z>Bri<00009a7bBm000XT000XT0n*)m`~Uy}t4TybRCwC$nq7`WKoG}~xrIYWTtebe z;s%~vLR`X=8%R7lhQuM9!)|S+Hod*9MR&E``TvqhYl^Ba^&yPs0RR910D#xTKO)>T z%|hcij$YfgKF!Or^oycc;yC`0p}8$%Sr6;q+izUCx=o8$$2B>dc2rfh@Xxy5uIs*B zoRx0Pb$OGJE{;SsGIblQIbchXy5FV)^u_P(-{bKcp*+uhUSM60000000000005BsCb)))m!XfV7f92Th9wL`PwEvpEqtD5FNz|!URSpzBSF=* zWsh|y=*s%O7juBFYt0^!6yQ5SX^>@^*cYN<7<_WV`*@!exI-Znx5s4%Fl9q<<>Y4v zaEfyqB#YmjbUQc1l+IIKKrJ>-9!3-=Ow;r^m;SE;00000z@O#~W%@X-8}MZX00000 LNkvXXu0mjfQSF{> literal 0 HcmV?d00001 diff --git a/Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/toxic_head.png b/Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/toxic_head.png new file mode 100644 index 0000000000000000000000000000000000000000..d3400bf0e1d00f604f6c9dcae9c7ff3cc27c02d2 GIT binary patch literal 743 zcmV?P)aTcu(v9aIo;$WX!9hqi)Mm*h2Rg(M9xDN&&ow5`bYkJd;XFtNAr4 z_zoXJ7^a+)nQbj)7jx(uKabQ+@emiYy7zUAP(igB;OirvVHS6Y=ZVu>jwN`Hc!-tc z0`UoPjMD{)Z-uUS{3f{Q@t0tp%PatXF;gnGvC_t@#0}y};;5llSo1#OOTwzTlBGII zIR+aUq>zLJ1r=;Uhl4m(lXlkGmuUEwQ6>+gw}mP=If^KeH%4lOrm9pm(p7qNRK?!^ z@6*<%r@ZOmB+&cnx}W1fa384GT=)0Xb?aw9;03rgTmCZbY4)4+T1$%_1Cbrz@}{LJ z2f)=XF!F54Ty97KO24K79~Zzt9vHj_`q#Z(HP3PW1mw2q7u^AeN5BO2M>hTd3MFU{ z>Bri<00009a7bBm000XT000XT0n*)m`~Uy}9Z5t%RCwC$*+GhfFcg4cQ+ftnh?nvV zuJjP%A#~*p1drk+#Dy-sK*xkpM4H-!i5=+wLC_>M@5M+r&+`BPz&o0zQSH_Ir{bUG zrgJm-@ia}URaK>(cS#pt_SZR6!t{Z%EFViC5d?wir)j#4XIUm(e}%{R(m0Nu@B3Eq zZ>A6Y26@P!UDv6xJkKxL{ImG-D*Lwat&^6UUhj*d5Lf>neL6k>000000002McWB%8 zJ9Db*TDAYmCO@O%Xy5mzr{MA=-dX=F$D_Mx67xK3=i)ftP9jN?KR?}deVg2LjH{|^ zRd!#IUB=WkiXt_)Y+g9}#I@@`%gf0N*asVi!3)E18^5Ydy)TXLbD&HP000000000d ZegL_gpI*fdW%mF8002ovPDHLkV1f=xTVVhI literal 0 HcmV?d00001 diff --git a/Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/toxic_l_arm.png b/Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/toxic_l_arm.png new file mode 100644 index 0000000000000000000000000000000000000000..f74ffaae9d4816d3676c395edaef31cb2ac1aaa2 GIT binary patch literal 569 zcmV-90>=G`P)aTcu(v9aIo;$WX!9hqi)Mm*h2Rg(M9xDN&&ow5`bYkJd;XFtNAr4 z_zoXJ7^a+)nQbj)7jx(uKabQ+@emiYy7zUAP(igB;OirvVHS6Y=ZVu>jwN`Hc!-tc z0`UoPjMD{)Z-uUS{3f{Q@t0tp%PatXF;gnGvC_t@#0}y};;5llSo1#OOTwzTlBGII zIR+aUq>zLJ1r=;Uhl4m(lXlkGmuUEwQ6>+gw}mP=If^KeH%4lOrm9pm(p7qNRK?!^ z@6*<%r@ZOmB+&cnx}W1fa384GT=)0Xb?aw9;03rgTmCZbY4)4+T1$%_1Cbrz@}{LJ z2f)=XF!F54Ty97KO24K79~Zzt9vHj_`q#Z(HP3PW1mw2q7u^AeN5BO2M>hTd3MFU{ z>Bri<00009a7bBm000XT000XT0n*)m`~Uy|Z%IT!RCwC$*+B}xAPfXR?Z?HJw^yO3 zf&tUaJRqPOgJ^320Kg7oj5|}^t9oEI;Pj&q)%rRhGWFf5Mb%9+sUzzff*F!JzV&TD z;+r4<00000mGnO>Vtq27bM{gR`Y*r?cpZasa{vGU0KRzuuZS{B^xM*)00000NkvXX Hu0mjfCBpn- literal 0 HcmV?d00001 diff --git a/Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/toxic_l_leg.png b/Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/toxic_l_leg.png new file mode 100644 index 0000000000000000000000000000000000000000..fbcd1237d79913b045ab0b91c5a185e515bf8524 GIT binary patch literal 540 zcmV+%0^|LOP)aTcu(v9aIo;$WX!9hqi)Mm*h2Rg(M9xDN&&ow5`bYkJd;XFtNAr4 z_zoXJ7^a+)nQbj)7jx(uKabQ+@emiYy7zUAP(igB;OirvVHS6Y=ZVu>jwN`Hc!-tc z0`UoPjMD{)Z-uUS{3f{Q@t0tp%PatXF;gnGvC_t@#0}y};;5llSo1#OOTwzTlBGII zIR+aUq>zLJ1r=;Uhl4m(lXlkGmuUEwQ6>+gw}mP=If^KeH%4lOrm9pm(p7qNRK?!^ z@6*<%r@ZOmB+&cnx}W1fa384GT=)0Xb?aw9;03rgTmCZbY4)4+T1$%_1Cbrz@}{LJ z2f)=XF!F54Ty97KO24K79~Zzt9vHj_`q#Z(HP3PW1mw2q7u^AeN5BO2M>hTd3MFU{ z>Bri<00009a7bBm000XT000XT0n*)m`~Uy|Qb|NXRCwC$+B*usFbDw9cyjUN{S1X{ z8QLuNy-6Zy(A6;j000000QiUaqDW>QPh3^8>$9sqSN?vtRR91000000Xkxwu4^P)aTcu(v9aIo;$WX!9hqi)Mm*h2Rg(M9xDN&&ow5`bYkJd;XFtNAr4 z_zoXJ7^a+)nQbj)7jx(uKabQ+@emiYy7zUAP(igB;OirvVHS6Y=ZVu>jwN`Hc!-tc z0`UoPjMD{)Z-uUS{3f{Q@t0tp%PatXF;gnGvC_t@#0}y};;5llSo1#OOTwzTlBGII zIR+aUq>zLJ1r=;Uhl4m(lXlkGmuUEwQ6>+gw}mP=If^KeH%4lOrm9pm(p7qNRK?!^ z@6*<%r@ZOmB+&cnx}W1fa384GT=)0Xb?aw9;03rgTmCZbY4)4+T1$%_1Cbrz@}{LJ z2f)=XF!F54Ty97KO24K79~Zzt9vHj_`q#Z(HP3PW1mw2q7u^AeN5BO2M>hTd3MFU{ z>Bri<00009a7bBm000XT000XT0n*)m`~Uy|aY;l$RCwC$*g*<_AQS}9?Be3dYa1;B z!yuja_QGfU4C1x{002*Ft;dRU?&%jRfK^ui?cDJj(3R%jx8d_SX9++Fjt*e9A{;(% zd;lxI1OWg5002l*dJkN`om*=qIz4~zgmu7u<>Na50002ybONW+GD~ta4x|78002ov JPDHLkV1lnO{S^QJ literal 0 HcmV?d00001 diff --git a/Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/toxic_r_leg.png b/Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_parts.rsi/toxic_r_leg.png new file mode 100644 index 0000000000000000000000000000000000000000..bd772bfc0bbc610ada8ff1e7c1375f3d6a50e7bc GIT binary patch literal 532 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 Bk*oj! literal 0 HcmV?d00001 diff --git a/Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_wings.rsi/honeypot_primary.png b/Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_wings.rsi/honeypot_primary.png new file mode 100644 index 0000000000000000000000000000000000000000..d8428597262ee93250a7a85ec11e5738ca77f103 GIT binary patch literal 1064 zcmV+@1lRkCP)aTcu(v9aIo;$WX!9hqi)Mm*h2Rg(M9xDN&&ow5`bYkJd;XFtNAr4 z_zoXJ7^a+)nQbj)7jx(uKabQ+@emiYy7zUAP(igB;OirvVHS6Y=ZVu>jwN`Hc!-tc z0`UoPjMD{)Z-uUS{3f{Q@t0tp%PatXF;gnGvC_t@#0}y};;5llSo1#OOTwzTlBGII zIR+aUq>zLJ1r=;Uhl4m(lXlkGmuUEwQ6>+gw}mP=If^KeH%4lOrm9pm(p7qNRK?!^ z@6*<%r@ZOmB+&cnx}W1fa384GT=)0Xb?aw9;03rgTmCZbY4)4+T1$%_1Cbrz@}{LJ z2f)=XF!F54Ty97KO24K79~Zzt9vHj_`q#Z(HP3PW1mw2q7u^AeN5BO2M>hTd3MFU{ z>Bri<00009a7bBm000ie000ie0hKEb8vpYWc6(Yo+#JqDRW;4WkKh?Lp&M%ql&d%;Q=b1k?*+&RM z2qAyS|t-S79+;c)QlnM_8sS}pk%0qAzSs#>j@^HeG&&gZi^pUq~X)9HNd zClMv{?RHz0%Vlx7T#WhYbZU+$2nyOY!Y#200H(d?d4AoFJdXSQ-UI>dgTX+>b_QVN zv)QajCX;5$>rt0DqK+V--K=XV{Suo1*iCP@+ZpqEDHwO9Qpp72cDtG4ZjS%LPn2fB zdc78_)k+kLMG3PO)EA3|DijJI_ZgWPu-$GS>euU4oK7cme0N{0{sytjW3+8Om&-jE zUM`oa*Xu>{-G&fC2qA9|)^?XoOa1 z#x;0=7kGlVw*h!gK1!$4{&~G#H{aoh!(nJgAKIW1T3>m9x91=vT=VW|KZB0Y=6RkB zy|8*J^JWnL6nJ0000aTcu(v9aIo;$WX!9hqi)Mm*h2Rg(M9xDN&&ow5`bYkJd;XFtNAr4 z_zoXJ7^a+)nQbj)7jx(uKabQ+@emiYy7zUAP(igB;OirvVHS6Y=ZVu>jwN`Hc!-tc z0`UoPjMD{)Z-uUS{3f{Q@t0tp%PatXF;gnGvC_t@#0}y};;5llSo1#OOTwzTlBGII zIR+aUq>zLJ1r=;Uhl4m(lXlkGmuUEwQ6>+gw}mP=If^KeH%4lOrm9pm(p7qNRK?!^ z@6*<%r@ZOmB+&cnx}W1fa384GT=)0Xb?aw9;03rgTmCZbY4)4+T1$%_1Cbrz@}{LJ z2f)=XF!F54Ty97KO24K79~Zzt9vHj_`q#Z(HP3PW1mw2q7u^AeN5BO2M>hTd3MFU{ z>Bri<00009a7bBm000ie000ie0hKEb8vpHs#dG!y}Yw+`|}JCw%aXjHXEu`Dtx=${C25}38hjg@t9v(5x?K> z1NH0mO6T+0l&|`I%pM?gIvq3HUcFE#1O%_wYc&`QKGy)(1lA^m+O>Gn;uGshy#dS| zYU_5pp~il{AE`yD%*`H>erXhckHq>YG)jEPfO|X>blL|7o=&H! z6)v&ePgI=!;OQP9sV*kSfU@?*h%BuC(P(5YPI!BPEM3v^Y-#uzAeWG2#x2V-Desve z18U){f67h&)E>BdvDvn*mHuWki~8)jn6!~uPqXM(hzVXch$;9}0{{RI Z`~Yt$?L1h5A&dY3002ovPDHLkV1m4$waEYg literal 0 HcmV?d00001 diff --git a/Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_wings.rsi/meta.json b/Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_wings.rsi/meta.json new file mode 100644 index 00000000000..b7f59a8231a --- /dev/null +++ b/Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_wings.rsi/meta.json @@ -0,0 +1,47 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Concepts by: https://github.com/ElusiveCoin", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "default", + "directions": 4 + }, + { + "name": "smooth", + "directions": 4 + }, + { + "name": "honeypot_primary", + "directions": 4 + }, + { + "name": "honeypot_secondary", + "directions": 4 + }, + { + "name": "stubby", + "directions": 4 + }, + { + "name": "bee_primary", + "directions": 4 + }, + { + "name": "bee_secondary", + "directions": 4 + }, + { + "name": "firefly_primary", + "directions": 4 + }, + { + "name": "firefly_secondary", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_wings.rsi/smooth.png b/Resources/Textures/_DV/Mobs/Customization/Chitinid/chitinid_wings.rsi/smooth.png new file mode 100644 index 0000000000000000000000000000000000000000..bd0bbec36f34ddf9d00f4ceee9981580250be252 GIT binary patch literal 1128 zcmV-u1eg1XP)aTcu(v9aIo;$WX!9hqi)Mm*h2Rg(M9xDN&&ow5`bYkJd;XFtNAr4 z_zoXJ7^a+)nQbj)7jx(uKabQ+@emiYy7zUAP(igB;OirvVHS6Y=ZVu>jwN`Hc!-tc z0`UoPjMD{)Z-uUS{3f{Q@t0tp%PatXF;gnGvC_t@#0}y};;5llSo1#OOTwzTlBGII zIR+aUq>zLJ1r=;Uhl4m(lXlkGmuUEwQ6>+gw}mP=If^KeH%4lOrm9pm(p7qNRK?!^ z@6*<%r@ZOmB+&cnx}W1fa384GT=)0Xb?aw9;03rgTmCZbY4)4+T1$%_1Cbrz@}{LJ z2f)=XF!F54Ty97KO24K79~Zzt9vHj_`q#Z(HP3PW1mw2q7u^AeN5BO2M>hTd3MFU{ z>Bri<00009a7bBm000XT000XT0n*)m`~Uy~o=HSORCwC$nmeoNKoG|_;#)-REv#(B zMl7tvQa_H5*2>n$$I;r#!cMGgL@g8r-)}L8|6VpE8gtPLm&7waSTb3YocYgAb`RNM zj35YtAP9mW2!bGf9g-EDuGj1Ge!o}FeLf#66bjO>2tcJ$kyEJ@w_Pq5JD<rU`q_VrjK^c%Z^laTcu(v9aIo;$WX!9hqi)Mm*h2Rg(M9xDN&&ow5`bYkJd;XFtNAr4 z_zoXJ7^a+)nQbj)7jx(uKabQ+@emiYy7zUAP(igB;OirvVHS6Y=ZVu>jwN`Hc!-tc z0`UoPjMD{)Z-uUS{3f{Q@t0tp%PatXF;gnGvC_t@#0}y};;5llSo1#OOTwzTlBGII zIR+aUq>zLJ1r=;Uhl4m(lXlkGmuUEwQ6>+gw}mP=If^KeH%4lOrm9pm(p7qNRK?!^ z@6*<%r@ZOmB+&cnx}W1fa384GT=)0Xb?aw9;03rgTmCZbY4)4+T1$%_1Cbrz@}{LJ z2f)=XF!F54Ty97KO24K79~Zzt9vHj_`q#Z(HP3PW1mw2q7u^AeN5BO2M>hTd3MFU{ z>Bri<00009a7bBm000XT000XT0n*)m`~Uy}`$EHe~=(9f4+pH)fpAXLAUufS%yw(37AXCTMfUv;BVG{8d1c33fxd_I@< zXf(27BW1hYitfc?A?+XtN_7|R4aRXS9ZV*Zv=ifO6h%(mM?c%f;Gv=f*PiF)w3pTg zAb5Z+>Ff0>*R$D7)%jI`HfRLUZ0ZF}EJe6wqn|ZGr&MZ!4L~b2KL`FCTWJR1kL&e1 zZKLP_7wz$UEXfU&R3wZFSSd{0+Dmvv4FO#nukG}QnA literal 0 HcmV?d00001 diff --git a/Resources/Textures/_DV/Mobs/Species/Chitinid/parts.rsi/full.png b/Resources/Textures/_DV/Mobs/Species/Chitinid/parts.rsi/full.png new file mode 100644 index 0000000000000000000000000000000000000000..6d5e167c553e980737a7985a2fef7243eff0f254 GIT binary patch literal 1253 zcmV@AxIU67K(y6N(H-Ahqi)Mm*kqXLXw6{iWFDD#i8IJ zy7+7GKhRZhRS*P45OH<&*CHjpYYHvWzHoUTzW2V5yLW&;tuw>!NdSiF@JuQxt>)LH z;5&Q>VFcrd$jr8uvWq!%jh{!Vrg(^pUft_D#y~-}8Q|+9o@Ewyi06sZTaG1ok9e4s zE@~=<%0ep35u%e$i7Zwz1O2ti%oCDdMQ1S6K5r;wB;0T**=% zr8Nc{8KjVe1O*jrLWhGmWs_#s*_UYemQf}TqrZhJI5~bjp3KyV+Z*If7a)OG7;K;Q+qHe3EO&1vqN^jb@c9s}VW;PR%W zDF?vSE)aRPWG*+P04=|!0UsB@U>+E{2m05&SvB`@{siQ<>51-u!y{ml>cbm<_St9# zlr7a&00009a7bBm000XT000XT0n*)m`~Uz08%ab#R9M5smc36?Q53+>v#%5yQ#43T zNr(vx1Bu~dfJ8$agvG$5VL%y}TpV2dBV1jaSd@V{f(vmlL=zZ<#1Io2Vh|Dck$d%MB36&zJ@#BTD7jot!r{v@Hul^( zt}{CN%uA<#NgxoAgM+M0OuTe_$-waNll;Xg86SV)q*A+*N+pf4+8FZ5&Qiuh5eA1b01&XQ!p~}RO?=Vm47Z{h%q`H0H4)((Iz|z zsC6vX{0~2oSd;1LH%?VE(9?4_KNZ`?*m2|Vkyp(DE^lw|F{9Vq++ujS+=0Q+@R4_P z-1dBTK#ga!hjkAIgTiJE1YCom0px9MU1d2@vNA%r>1l{sn_fP(D0F?hd$>xUvUO%YC@*5STwb@VY_^Ynmqv4 zrGy+k^f~9tBBGH72OrAT)^|f=l-d(D&!CjjW7 zUzNuw8jaaV89PP}teHXX`(uQWm6f>E*I)D42c-Szj!+CAIeO@G&bJJ386B_2mXaQ>8^K9dr;8nxTqA3q?U3rGj0mLtDYBOY)jDLXw6gMT)E7;!to9 zUHlsS4|Ek=6$C*ML|k3{TBOALnnH`TH@w^*=iPI8?><1t>dbKZQh;H)b}o|^SBq<6 z=p6xsAs~jB#2jlWzgR%e_<5viiiafc)w`~143-p!0f8{_EVFEvc%C@B6E+=?_?GLk&u^T|K7Vnx3%LbA;62512g@DIG}|DaB90q+m9@^pZxT_=l|1D! zTH|n#Lk4MxkWs}Zbht=THfd(veW|8z85Qy{`dg^MCPx_>c@v~osjEU+C0(IUM~%<@ z|2!RaX4>x_Ndx__p7%Kcg!X|(-Sd7=J+E;F1Ydw_v+b|YoaVksueY`MF%aDWE^peJ zd;nbS0;A8CWJ^scNJ~&v;Nt=qDgwjzz`(jctJXfwpMb(PJ<%O-cmzyReRSgw&17fu zQv;wy00009a7bBm000XT000XT0n*)m`~Uy}v`IukRCwC$nm>+$Kp4fpF@}JJiJXDL z#)`y-!mD@&55gI|iUo~{J%x>>4I~s|Y-ar?j9FRTWCj`6?E58#aR|KkzWLJ(L;(D2 zgzbat_4?LcE|<=Yze-u{$={YMm&yV@_nC1qY<4>Cpw?cwA<~R6oK`V zBvEax&tzFPl3;8_t|h5sx10000000000000000000ViScPlnx=e_VHp0nR}_VM-)gn$#cZQZ zS8e$~Tjep;9-10p@hFNY2m;mTdEV`~Jj*hvjr25Ns_^=3kPl`rmy2rGbxr&IUS2&K z6~Xj$Sk7j%yABS|M)=3~7K;TJO7<}NlHbi5TCe?`LgURyd(g!cSN(7}Jp5pyZ&;JH z*+UnGUBc^Sz(yvMiL>xL?T^Q!Dgt}xQUse#P|oM`J7J!VT!77HL(L{AdfEil^yZ~d zmgQ~cX)oLD)>vEE8ktU~G#-zssw&F!yw~8*3eoo9N*@3K0000000000002IgFA00` U2R1k}IRF3v07*qoM6N<$f@RW|5&!@I literal 0 HcmV?d00001 diff --git a/Resources/Textures/_DV/Mobs/Species/Chitinid/parts.rsi/head_m.png b/Resources/Textures/_DV/Mobs/Species/Chitinid/parts.rsi/head_m.png new file mode 100644 index 0000000000000000000000000000000000000000..c9b9cbb1979df8935a5f167c5c62aebb046f7a4a GIT binary patch literal 898 zcmV-|1AY97P)aQ>8^K9dr;8nxTqA3q?U3rGj0mLtDYBOY)jDLXw6gMT)E7;!to9 zUHlsS4|Ek=6$C*ML|k3{TBOALnnH`TH@w^*=iPI8?><1t>dbKZQh;H)b}o|^SBq<6 z=p6xsAs~jB#2jlWzgR%e_<5viiiafc)w`~143-p!0f8{_EVFEvc%C@B6E+=?_?GLk&u^T|K7Vnx3%LbA;62512g@DIG}|DaB90q+m9@^pZxT_=l|1D! zTH|n#Lk4MxkWs}Zbht=THfd(veW|8z85Qy{`dg^MCPx_>c@v~osjEU+C0(IUM~%<@ z|2!RaX4>x_Ndx__p7%Kcg!X|(-Sd7=J+E;F1Ydw_v+b|YoaVksueY`MF%aDWE^peJ zd;nbS0;A8CWJ^scNJ~&v;Nt=qDgwjzz`(jctJXfwpMb(PJ<%O-cmzyReRSgw&17fu zQv;wy00009a7bBm000XT000XT0n*)m`~Uy}xJg7oRCwC$nmvw!Kp2K+j4?`Kf@iRx zu_B?N@G72xgK!3}VnJhKPhn$8BMAi%nvrj^Lsk|yVUTgnzE5JrG5G#4jK#nh0RI}U zdtwwt?eXDoFmC)+`dm|7bjKPK++g^Z>2n=%*LB%)xn!1Qv7#tgRaNYKJ{u{4^nKr# z$4Z}w<5)|d>xS=QqJ+NiV@sIn7@@GgeKrM!AInVlL>2m7;nh`F@5UBEbsKbf#~Sb* zBWu935=@2vEBXKc000000000000000_)N4m6T&d;9S?%Qi0N1Ab4_uv*=&A%ce~yA zltrlEjkf5~mU)J1&xaZy@$GiYR;!g9TPzmsc6l7fLK&Ip;>+UI-XLwv)^#n9%d%vb z%SALE2bC~%cUbIpyN3Y^Pe$lP-|hE%DoRXn^#%PlX(+w!a|&PH25Ha6n4;FN*K6+s z6H`N)q)i^iFdq|M-3DaDwrykKY1*f0DoY>_V@l9j1cm2$55hDZset40s8(Y>(IP0P zH{A+ZmbEiac{!aDSZF{0000000000008({ Y?%I9#2nE;Q_W%F@07*qoM6N<$f`Gt}%>V!Z literal 0 HcmV?d00001 diff --git a/Resources/Textures/_DV/Mobs/Species/Chitinid/parts.rsi/l_arm.png b/Resources/Textures/_DV/Mobs/Species/Chitinid/parts.rsi/l_arm.png new file mode 100644 index 0000000000000000000000000000000000000000..48c0a2ee062c53d00e2bb7aceca3692290b97f05 GIT binary patch literal 752 zcmVaTcu(v9aIo;$WX!9hqi)Mm*h2Rg(M9xDN&&ow5`bYkJd;XFtNAr4 z_zoXJ7^a+)nQbj)7jx(uKabQ+@emiYy7zUAP(igB;OirvVHS6Y=ZVu>jwN`Hc!-tc z0`UoPjMD{)Z-uUS{3f{Q@t0tp%PatXF;gnGvC_t@#0}y};;5llSo1#OOTwzTlBGII zIR+aUq>zLJ1r=;Uhl4m(lXlkGmuUEwQ6>+gw}mP=If^KeH%4lOrm9pm(p7qNRK?!^ z@6*<%r@ZOmB+&cnx}W1fa384GT=)0Xb?aw9;03rgTmCZbY4)4+T1$%_1Cbrz@}{LJ z2f)=XF!F54Ty97KO24K79~Zzt9vHj_`q#Z(HP3PW1mw2q7u^AeN5BO2M>hTd3MFU{ z>Bri<00009a7bBm000XT000XT0n*)m`~Uy}CP_p=RCwC$+A)fQKorLDNl2j=@-ALO zJjYza8`uk0g1sjYY;Cl2`DWK9EG%oD;3WTFlcbmreat)|Pv-yt003Ah%W{h;*IeKC zoAt#iPq}AY@7+3ZSr(V)x%1weT(EMKcNX&kq-h$85DW7HG)?2?d3ITry}S#wUOCe= zh1{RxaNPpvtQJLa8-^kL9>?*eynVg$l&kzRkHaM!;BzBv+xEIUz`6lGH$vsF>uOqn zhhZxvK{v1b%d6{J+jO&h3@T5#Q9K2#8sKk@5C8xG00000;J(LY-upvq@9$Cs z{d;_*2#?rrTr&fGYARh-mA>9SY6oaqw2$O9KKt)%GWr5&YP^rmKe`7T9h$yP0g@yM iFH!&i0001hKYaneMWis;c*_g`0000Y-zxQDW zk>mS)r;4pDx!`zI(OI-ztgFewi*e{vX!J~izf!IH$KjdF% z?a<sR(fq5Gz-Vwv$f_VC}YzJL6#wZkciGbL4%8Zvj<%=SB}-5P57rH{dB zg21tkLo(Hd+b6hR|53RltE;``#nrv*lD~+Xwlg*weB{}@)7!><&ds9SgVjfz*Q^og z^zV2)htH!%yX5L~^Mk7M_p^MiDU+Mv;=l9Cu`KD$M&_OBoyp4r6VHC`nC)VcZRuV) z<(h;{%0xFVqmYmdjLdpMQ*>uVrpIr37=1{sQsQrJ$ib6=PBZru25DajUA$)Ux{K)x zw4VK|pVwz+`?S1&NyEMH^S@=-oqjv)eO9@D`Mhv@<|h3ETd#h~zceRpzvud`TW%N% z+-20ukD67*5c8Jl@cC_rrnZSJQGIFkp^%YBq~T!og8Z}dLyP5~`#aRlp7(;!!iGt0 zh25@y>^({8SGjK%9R)@KXMsm#F#`j)5C}6~x?A@L7$Ll#E{-7;x8BY&U5srzM< yt$BJ0vEh54#~j#ws{8Sc*fq1oU;MUvp<~Yc&P(N9fBQO+r#xN#T-G@yGywqNM&oGNS#Ph_dEyohPM?B1m za-R5vILhgO#J56MJbn{g@c2tG&!!guzvw9yT3BgeR^$fpByq&h%dBx8ag(rWu4E{W z(i($}G?GX_f`T$Op~FFpvPm;*?~B)c%P5hD(ceM^oE!xd$r~lLOkGvV8tE#1Ix1rB z|L19I(^Fpea02Llb=}W#Ah-|Is;>Kc>bkWvAn*cQn@xX-<}~+BdbO!Vj)B1);PR%a zDF?vSE->wRBD8s5}lqQ+S@It^1#= zK;;@y0LO8pNx1+300000006)&Wm(Fu>!f=A_g4BbS7Xbvh`#SdmSxs$1!$V)^1FOB zUKB;U-~ZD&nRQ*oIF6TgewwCj%(||(@oz0a9LLtxOFv1H?c;6R-c^7{oB=@)h+!B+ zQ54o~1-N7Xt1I&`3=d_zOy2+VJa6NwEwHEikD&W!3;@6{c>@#wdmb;~mbm}`002ov JPDHLkV1gT zaB^>EX>4U6ba`-PAZ2)IW&i+q+U;0vawInh{jXEx2rUpG9Y-BEd z+5AbByKAhrMnb>?9zALQ^{1yla8ao>6|t&K^}Gh>!sbjj!3c8;65;^39Bk}`y4 z>^OINKK$$PMiu2K#)afK}#yk z3UDgL+1O+GtReCJ)EK!cO`EmaTI(H$c1Z5n-D}6hpuwXI89Hp#(MF#LpIN3% zoi^)iv!_LiS6Q-j*{Z9pzVk*X?XqR-wq1AI-4SZeUR+$=yn6Hgg4#hfeS_Ke$o(9( z{6GzWrGr_)q9Ocr;~f!Pi{ekm6$|2t22HEyec~-_2dSkFxzf zkq7HuYxrJy`r5t-=b<1S?_JkDrsu;ij|`dn=4*Hjht_x=iB%_R4bI*&;PbW?6!Rh0 z!?971jycNS*r1v(P|6CjfxKZLSs!GcMma(#eCBOzF?cZpw5i859M~5c9~7-k7o0pC zr4qOc@HB651VJ<^B%JJOYeVTt`l~@T7V*x!;53LD;%OJyJZ9UdpYWqKAXd<-RnL4w z&lb*iMA9g>I&0`G2tydUUAg&KiP+(A{PtFskbY&{)24Ds8I`o;@go z!)!G~z!g4qpa#2+H)xsdz!{Ff#tkAM0Ud;5jgS(JV~5%_>=*;9rD7Ck^_p-3N61#d z5%QT4F2M95d=AyH-4@bld*lenBw`;y{&r07Cw?;8QrX!?G!)R+$AoZr>;!Zg3tz6| z*{xZi`Z_70r91CmkJR)gWOpBaSph2=9MvW`J5mm+^f3)#GzBIeI0nGC12=pLxVNOh zJO7{rd}d6)E8t7em!SW-pl9y4yHGkxE2;~cWz;AnW0czNz57H7KzTTsfAi~Vy!Y4N{hS7OZ{P)jhC?lm4&ks)z;wck zZ1bUel?3g=IGk*AM!6<18eXfgWkk8htA7I{8!Gx0oP4v3Hc%;G11H8$Aow~>khm+v zMsqFXATmO{1x1ybAz_;;?IIs<&bXlP*p7X8hVEx z;bjcXR$UxF32i&fFK9Ro1OYvFP$~#K8nFv4iqVT*Fe}}5#ZPCimPK>-YFlvJ!@6?i z`Ef6bfXo2|Z2TLyBhpy}9y2Te0007FOGiWiNu`b21^@s632;bRa{vGf5&!@T5&_cP ze*6Fc00(qQO+^Ri0R|2RD7Np_fB*mh+(|@1RA}Dq*u4$HFc5~}*A`OJWrHjcreF#t zNs&p|AYG;)6`3GYB$X+kL4us~ClLCc`p!E0+}wePh=_=Ye3`QXE};NMj&9De*O1Tx zXEV!N0X>k?&AeAfNgyl`{hNvz__sV zxIAw+AX`{Kwp9~EL_|bHME>050R31_v=M8D&-p3CxUcl*8l(j07*qo IM6N<$g0aVLB>(^b literal 0 HcmV?d00001 diff --git a/Resources/Textures/_DV/Mobs/Species/Chitinid/parts.rsi/meta.json b/Resources/Textures/_DV/Mobs/Species/Chitinid/parts.rsi/meta.json new file mode 100644 index 00000000000..ed5dfd51450 --- /dev/null +++ b/Resources/Textures/_DV/Mobs/Species/Chitinid/parts.rsi/meta.json @@ -0,0 +1,66 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "https://github.com/tgstation/tgstation/commit/1d0eadcb126fc3581eed33490f4be2a88157af58, modified by https://github.com/PixelTheKermit", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "full" + }, + { + "name": "head_f", + "directions": 4 + }, + { + "name": "head_m", + "directions": 4 + }, + { + "name": "l_arm", + "directions": 4 + }, + { + "name": "l_foot", + "directions": 4 + }, + { + "name": "l_hand", + "directions": 4 + }, + { + "name": "l_leg", + "directions": 4 + }, + { + "name": "r_arm", + "directions": 4 + }, + { + "name": "r_foot", + "directions": 4 + }, + { + "name": "r_hand", + "directions": 4 + }, + { + "name": "r_leg", + "directions": 4 + }, + { + "name": "torso_f", + "directions": 4 + }, + { + "name": "torso_m", + "directions": 4 + }, + { + "name": "eyes", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DV/Mobs/Species/Chitinid/parts.rsi/r_arm.png b/Resources/Textures/_DV/Mobs/Species/Chitinid/parts.rsi/r_arm.png new file mode 100644 index 0000000000000000000000000000000000000000..703756e5c4774f6020869ae4505f636a0a7055cb GIT binary patch literal 758 zcmVaTcu(v9aIo;$WX!9hqi)Mm*h2Rg(M9xDN&&ow5`bYkJd;XFtNAr4 z_zoXJ7^a+)nQbj)7jx(uKabQ+@emiYy7zUAP(igB;OirvVHS6Y=ZVu>jwN`Hc!-tc z0`UoPjMD{)Z-uUS{3f{Q@t0tp%PatXF;gnGvC_t@#0}y};;5llSo1#OOTwzTlBGII zIR+aUq>zLJ1r=;Uhl4m(lXlkGmuUEwQ6>+gw}mP=If^KeH%4lOrm9pm(p7qNRK?!^ z@6*<%r@ZOmB+&cnx}W1fa384GT=)0Xb?aw9;03rgTmCZbY4)4+T1$%_1Cbrz@}{LJ z2f)=XF!F54Ty97KO24K79~Zzt9vHj_`q#Z(HP3PW1mw2q7u^AeN5BO2M>hTd3MFU{ z>Bri<00009a7bBm000XT000XT0n*)m`~Uy}EJ;K`RCwC$+A+>VKp4jHS(UhwljtO_ z-~MbY-NIc3nk z?~N!xa^6}(k|g`Xw{2@g0g_YlN^YI|EuEX@c~(VH7_n6)r{vXTeVTpOb=5RYM!l~j zujJNQ1*ZjcUAJHBx>mmLzrrwl^fr)ul2h`&=f7?6s;VAcfaJS6Nm}oKIF2{Z^VG5| zk6!wcPjX7$TMIY_FU#`L1xUWzCrR4O^L$Iw)QHcZIqP)g)xEA`^cOXU0f8{_470gQJV%__a&5tT#6zsC z6p2rW_?gq=4R6&-)w)Li<3y=6S!To>xBuf-k_e)$(uBoMyjCueG$;F%aDWE^k_z zdH`JQ0>jU?!j*;;q$TM(@NoeQ6oA2dpl{8eRdXNbPe6W~p6CuZJOU=DKDzz~jACci z3)ynT00009a7bBm000XT000XT0n*)m`~Uy|i%CR5RCwC$+93{vFc1aMB5)j`SE%BK zoDYYrsNo28h?0s`tCl4J@t$s)KTX}A5C8xG00000;LAMEZC%&)rc6Cg&iPWN;g`cP z#xRa!o2Dsj+cv!A0a8k>)*6oE81{YlO921?00000xJ&Qk`>w!~8DflWS(d*tT<-Wk joqWHel=8&zx9lpM8J;b~@TFd900000NkvXXu0mjfMcxQ@ literal 0 HcmV?d00001 diff --git a/Resources/Textures/_DV/Mobs/Species/Chitinid/parts.rsi/r_hand.png b/Resources/Textures/_DV/Mobs/Species/Chitinid/parts.rsi/r_hand.png new file mode 100644 index 0000000000000000000000000000000000000000..b9f02aa597609c9b405c7b5b737e98fe9446df9d GIT binary patch literal 713 zcmV;)0yh1LP)&$Sv5`ba4b|#e+S95D( z=p6y{K|l}2W#(8**+mH*8S9z z|DUI$%}o2D8tdJq98>z~xO- zQx1TuU0~$dl5M#z1!)PI27FuqgE?U69_U~9XVuup`4b>*(-YkRheyC9)kik|0F@4B z*|PW8;{X5v32;bRa{vGf5&!@T5&_cPe*6Fc0RBltK~#9!?b@*ogD?<Qj{{ri3n%@uWtM}a6wsqE8RXZy6O5Hx!G6a27P!xrV z6iA)E-QOimQxzMarA`0<00000007QTPF#m!aMLtxYYe|>*U?zlb;&%>W?k24ni_mI zSXGrd`hNrRJW1c*H^5rErC?c>L%Su<`*r$~kU5ZLnUPmP)~0EaOT7ZGIZ)U2wP!#q vbKo9wlceCeI7vYabKtA*0=|v_0D3(DR2g-IKxOaS00000NkvXXu0mjfs(3!~ literal 0 HcmV?d00001 diff --git a/Resources/Textures/_DV/Mobs/Species/Chitinid/parts.rsi/r_leg.png b/Resources/Textures/_DV/Mobs/Species/Chitinid/parts.rsi/r_leg.png new file mode 100644 index 0000000000000000000000000000000000000000..6f45ae18950c3fa4914cc7807fcb9bbe43357ed9 GIT binary patch literal 278 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I0wfs{c7_7UyPhtNAsLNtZ*1gkHV|liIN#*L zMn>-mjYgcTlQ%HR2CIb5I3T^G`IP1hr5uiQ5!b5t=9Z_s)18x>J3!!1#I}FG-W5MM zsB5q<{`tbRXHqLlBI|8~7|z|2Ex01mbMT`B1N#?~XJ4Hse?2lyh=W0R>RxLG(aRGv z*Vg~KcKdezRnB(|XTH6&e&xb6#naBob>@ODu)!xfm7d=}cU{D%ExPI4^_;s#E`4e5 z9{;pGzQ@vDC}HBOjw%I*qi4Dg7WiIFX;y7eHs9KwD%j4vG1`2Raw Xz;`2mx9-MYApd&0`njxgN@xNAsv>)6 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_DV/Mobs/Species/Chitinid/parts.rsi/torso_f.png b/Resources/Textures/_DV/Mobs/Species/Chitinid/parts.rsi/torso_f.png new file mode 100644 index 0000000000000000000000000000000000000000..71d34660015848123fd0d00dafcf9b345de26b40 GIT binary patch literal 1305 zcmV+!1?KvRP)g)xEA`^cOXU0f8{_470gQJV%__a&5tT#6zsC z6p2rW_?gq=4R6&-)w)Li<3y=6S!To>xBuf-k_e)$(uBoMyjCueG$;F%aDWE^k_z zdH`JQ0>jU?!j*;;q$TM(@NoeQ6oA2dpl{8eRdXNbPe6W~p6CuZJOU=DKDzz~jACci z3)ynT00009a7bBm000XT000XT0n*)m`~Uz0Pf0{URCwC$nm=n|K@`O&5>O;W5Ja%B zOP5a5+F4rIiH(62)>-D;Ne}C8YTrQ_Jn~gtxh|gxT;PLS>m`ou0lBU2nBox`gejA3Nrz zd_J!~{N?3EHJeRc$DlcQ*l5Rf)N%hgq5kLRXE;#SQPMH2+vp$tlwMz71FZXaJgx^0 zvE6R>&BlIke}8}Wbx8eQucs=NN;qI>gO867RVtON^{pJh4Uh1t6K;$?9Kb#l3Wadc zoPBi0U@)-Ojvad=KNy3=z_I=?c$Bbx51zcey?xn-ShC&gF}VK}_ykY-O3*r3d z=jU+tx#(ZozF|6@s&cukmdj;0_0s9IZjS=!VBpZl;2VvG*6(yWPM;UExf#b%wOS3m zzFMtx2^;Ocz5|&0cXxN8^J}%5E@7kHMc>K+I9{;R19%-L07`)Nb02?)^r;1)Z`v;U zG21sllxq+B07}^GjBhfTj9M%fTAMG}X!pJZ=xt0n9)T!f^C|cS8z2UYy@xN@=JD+P z6xcuR4z>9_1)0S- zah!6f(+N>x>h1RjL0Yd4;Mxa_(J@9CMSv6<48>y)IMg3+n;^3^y4~)#Ylslt+}uR6 z5n|1oi5UdJQrip>>luK-Gb)QZrXAvQhdSg7hU5?yLt=#4A2WUL?3*CHj6f)Zp-hyp z6+Q)MF-Z%sKXimQ2ViRPI{?L9*WRg^n(T{9f>!L5PV6U1MGcq2DL6R*p>T$#(E-;4 zrBi?=_W`EpMdkpkHwy9y{1Z@{`HGSJ7Wmb-t*B%3e?uPxK@bE%__z51rX5?nFOH<4 P00000NkvXXu0mjf@da%e literal 0 HcmV?d00001 diff --git a/Resources/Textures/_DV/Mobs/Species/Chitinid/parts.rsi/torso_m.png b/Resources/Textures/_DV/Mobs/Species/Chitinid/parts.rsi/torso_m.png new file mode 100644 index 0000000000000000000000000000000000000000..9f08874e16b338c20ec268611d0eacb0e08603f8 GIT binary patch literal 1269 zcmVg)xEA`^cOXU0f8{_470gQJV%__a&5tT#6zsC z6p2rW_?gq=4R6&-)w)Li<3y=6S!To>xBuf-k_e)$(uBoMyjCueG$;F%aDWE^k_z zdH`JQ0>jU?!j*;;q$TM(@NoeQ6oA2dpl{8eRdXNbPe6W~p6CuZJOU=DKDzz~jACci z3)ynT00009a7bBm000XT000XT0n*)m`~Uz0D@jB_RCwC$nz4#1F%*WgvY?142#dId zPhhwD2tI(F*l1@hSX)>N))vCri0|MlsFj_apcaC#BBGU-KkyH^uJ>{iZ)Wdu&j-UK znbH5uNpdpGiBf_f2!bF8!vD#W&CQ)o=Zf>;a8UVtK4@Po7Al!c>Tf7Vq_X!94u<_)w;Ed@&pjwc{Cg=mfNz zE0dQIaN7$MclEyOD4?U^e00JiqtAK-tX3;kDwXv7glUg$lJ?of2xNi)#A(QOyA5pwKr5Tg273cc zdu*|G05U*Kj+!tah5>@#JsVths8~B-JRS!^EF&+7NZjpqy{`lq-UxOW?&yqLdu%sJ zSmy@$z)XgsHxLJ0c4xQ(EogEXq&+SpAY$u%z5{Tdj_cfe6jPJ7z&6_;9C^fuFt*11 z4rZqx!N~!bdrVEk04_se!p%~&!!!NdSiF@JuQxt>)LH z&^vq>L=e4*$jr8uvWq!%jh{!Vrg(^pUft_D#y~-}8Q|+9o@Ewyi06sZTaG1ok9dTY zE@~=<%0ep35u%e$i7Zwz1O2ti%oCDdMQ1S6K5r;wE9$T**=% zqcsj28KjVe1O*jrLWhGmWs_#s*_UYemQf}TqrZhJI5~bmtaAn*cQn=OBt<}~+Bdab2JkAa~b;PR%W zDF?vSE-?CR$y{zo0a|`d13oT*NFErz2m05&SvB`@{siQ<>51-u!y{ml>W4P|0E6&n z(P#Gzy8r+H32;bRa{vGf5&!@T5&_cPe*6Fc1v*JYK~#9!?VDd{TXhu2Pm*>`vh*+O zbp5C8hHFMESp&m~$YfLy)R*DHp2miv>_Mml9qWS?tcriOHysFyh!2|&eQ+D$&2==n_vYqmb3SnS-Ftg)zBlKb-#PiECjbON z5ClOG1VIo4K@h}$osZq`y@;FI*D)x$$?0^$hu^=Gc)sbVL60}Dw?1-Z;!;NT$Jzvk~vJXPDSxly>D5P@gK=btTox?5{~anz6P9X=%f+iTOO zPRk8yMGuRH=KFn--_PUd*ko}vUrT*%e2jS9r21%lt}nMP6v=#$ zb9~=y*bcsRFAN25bU5nlDaUAOd_LtJ9(zjP^VdYXI54zKH@9G@jyW8TrS$zU<&x@4 zov>M5Fv>Ol;qvD?BGIG}jwkDmLsdUF(Jt0Mv(cHRFRcq|^?B5D<9{*p ztxK%`wdYcrzO*ig)0N^GfE6FduYBLYZg>>zjZeZtJiz{j;w$kmtUx%;QG(as;`gaV zNO9d5^&gqKVRChJQ+=@$@V;C`zmVciW7MB$JPMP`nf197@IKWk2tVa;p_6c&d3_}j zhCuADaMqN%ZaF>&{-q#*)sS);=EZR6Z`IMy_0LRqLIgI~AKO22NL&|`=!Fw4gC;0CK*?x6H6-0few0p27?5S*d=qyrV1YTsb)yJA3 z)mI7{pBLF|^>LQS(cjbon8(|89ymWd+YgH~%W(JpO$f*5q4tTLsfR%RjQ*NBo>;mK z3l?uGGI+sK!rn2*)y9UVUOn_tyA|4eweZ+QE%h^|AaueTZC!??wGfmWtJ9|3?8c-} zl*XXGsF@w(gE{O@c1^XZ9s+^sw3Vw|1nm#d5MisKQ;og?-OFMp{IP%JGp+Qq{uny9 z5&)aA5*7wyAYKbJ?Ayh>A8%R!Z_EvI8{Xvg55^e|tsSvK~3`b*Bfm(fcfoq(HG`dNpG)oKM>wYjUcwFN9D8&s54z(#Qt zVsph1D_MnLFbJV_KX`vz2HW;h80ncb3=9kic`%R@2W(aStRe(IMw-oLXnVn)*il~! zqoZzi-cni2#?{69Y=2=U3{khm5Rb_bY=QCd@to!TLf0nGK`<^{`^9~DA)M;?$4(g z0Q&UjlLI8i%x8Z-r65V_(W5_~9027YEt;+xA_W=c6 n1N83CFX)vp^~Vzgp&kDKi#h65B`sn>00000NkvXXu0mjfX}x&2 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_DV/Objects/Specific/Species/chitinid.rsi/chitzite_glow.png b/Resources/Textures/_DV/Objects/Specific/Species/chitinid.rsi/chitzite_glow.png new file mode 100644 index 0000000000000000000000000000000000000000..5a77b238e84fefaf9a6c43008f09a8c03902c3a4 GIT binary patch literal 1035 zcmV+m1oZofP)!NdSiF@JuQxt>)LH z&^vq>L=e4*$jr8uvWq!%jh{!Vrg(^pUft_D#y~-}8Q|+9o@Ewyi06sZTaG1ok9dTY zE@~=<%0ep35u%e$i7Zwz1O2ti%oCDdMQ1S6K5r;wE9$T**=% zqcsj28KjVe1O*jrLWhGmWs_#s*_UYemQf}TqrZhJI5~bmtaAn*cQn=OBt<}~+Bdab2JkAa~b;PR%W zDF?vSE-?CR$y{zo0a|`d13oT*NFErz2m05&SvB`@{siQ<>51-u!y{ml>W4P|0E6&n z(P#Gzy8r+H32;bRa{vGf5&!@T5&_cPe*6Fc0zgSbK~#9!?V2%8!!Q(v)2Np~3=Ax+ z9T*T7fSm)t#2rw_UV;e@zz!Ec3=CbnFfbr4!2nOfl2z4-?L7N6?e|HDHX?QSf4~1F zuA2q`000000ALI(mh(%E&uRBvfZVY^n$>Lm8gj0w9dHrX#sZvc2#_oO_s`dnZ$ikF zA_j=~^V#BY-GmyZIPo85PjladkSV3ae>r`-^-b7hO4SGonNqVN)=jBJ$dn=mIHBdW z6Wl*mOK5rT1ow~Cn*DOj3GN?D?NurjP(%DKy2RJ0hQ80}62Gq++S1}{M3VdiIYMgm z1t+5X&^0N zVKnygV0!p@@qTu1X294RvY00(il7$bi+N(An7Qd1h@i2M6GK|jCHLexF(l^RJJ08lc(a(_MsD8Vf# z5j1`*_vcdqM33E*aIWz38}Z|q#QtH-vV^}5g!ll^&o7%)OR#4jndJZg002ovPDHLk FV1hyB Date: Thu, 23 Jan 2025 13:06:16 +0100 Subject: [PATCH 07/20] Automatic changelog update --- Resources/Changelog/DeltaVChangelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/DeltaVChangelog.yml b/Resources/Changelog/DeltaVChangelog.yml index ae92f0813af..8cb65c907f3 100644 --- a/Resources/Changelog/DeltaVChangelog.yml +++ b/Resources/Changelog/DeltaVChangelog.yml @@ -1,11 +1,4 @@ Entries: -- author: DangerRevolution - changes: - - message: Security Cyborgs have been authorised for use aboard Delta-V class stations. - type: Add - id: 442 - time: '2024-07-22T09:33:11.0000000+00:00' - url: https://github.com/DeltaV-Station/Delta-v/pull/721 - author: Colin-Tel changes: - message: Asterisk station has a few more rooms, check the map! @@ -3857,3 +3850,10 @@ id: 941 time: '2025-01-19T18:56:46.0000000+00:00' url: https://github.com/DeltaV-Station/Delta-v/pull/2773 +- author: ElusiveCoin + changes: + - message: Added the Chitinid species, fun little glowy ant guys! + type: Add + id: 942 + time: '2025-01-23T07:27:44.0000000+00:00' + url: https://github.com/DeltaV-Station/Delta-v/pull/2707 From f54427ac9b85cdfb2422ec114d40b0f4187f927b Mon Sep 17 00:00:00 2001 From: deltanedas <39013340+deltanedas@users.noreply.github.com> Date: Thu, 23 Jan 2025 18:24:19 +0000 Subject: [PATCH 08/20] let psionic abilities be used while cuffed + cleanup (#2686) * move psionic action textures to the rsi * move psionic actions to _DV psionic.yml, let them be used while cuffed * untroll --------- Co-authored-by: deltanedas <@deltanedas:kde.org> --- .../en-US/nyanotrasen/abilities/psionic.ftl | 32 ---- .../Prototypes/Nyanotrasen/Actions/types.yml | 125 ------------- Resources/Prototypes/_DV/Actions/psionic.yml | 169 ++++++++++++++++++ Resources/Prototypes/_DV/Actions/types.yml | 14 -- .../Interface/VerbIcons/dispel.png.yml | 2 - .../Interface/VerbIcons/license.txt | 13 -- .../Interface/VerbIcons/mass_sleep.png.yml | 2 - .../Interface/VerbIcons/metapsionic.png.yml | 2 - .../Interface/VerbIcons/mind_swap.png.yml | 2 - .../VerbIcons/mind_swap_return.png.yml | 2 - .../VerbIcons/noospheric_zap.png.yml | 2 - .../VerbIcons/psionic_invisibility.png.yml | 2 - .../psionic_invisibility_off.png.yml | 2 - .../VerbIcons/psionic_regeneration.png.yml | 2 - .../Interface/VerbIcons/pyrokinesis.png.yml | 2 - .../Interface/VerbIcons/telegnosis.png.yml | 2 - .../Actions/actions_psionics.rsi}/dispel.png | Bin .../actions_psionics.rsi/invisibility.png} | Bin .../invisibility_off.png} | Bin .../actions_psionics.rsi}/mass_sleep.png | Bin .../Actions/actions_psionics.rsi/meta.json | 39 +++- .../actions_psionics.rsi}/metapsionic.png | Bin .../actions_psionics.rsi}/mind_swap.png | Bin .../mind_swap_return.png | Bin .../actions_psionics.rsi}/noospheric_zap.png | Bin .../actions_psionics.rsi}/pyrokinesis.png | Bin .../actions_psionics.rsi/regeneration.png} | Bin .../actions_psionics.rsi}/telegnosis.png | Bin 28 files changed, 205 insertions(+), 209 deletions(-) create mode 100644 Resources/Prototypes/_DV/Actions/psionic.yml delete mode 100644 Resources/Textures/Nyanotrasen/Interface/VerbIcons/dispel.png.yml delete mode 100644 Resources/Textures/Nyanotrasen/Interface/VerbIcons/license.txt delete mode 100644 Resources/Textures/Nyanotrasen/Interface/VerbIcons/mass_sleep.png.yml delete mode 100644 Resources/Textures/Nyanotrasen/Interface/VerbIcons/metapsionic.png.yml delete mode 100644 Resources/Textures/Nyanotrasen/Interface/VerbIcons/mind_swap.png.yml delete mode 100644 Resources/Textures/Nyanotrasen/Interface/VerbIcons/mind_swap_return.png.yml delete mode 100644 Resources/Textures/Nyanotrasen/Interface/VerbIcons/noospheric_zap.png.yml delete mode 100644 Resources/Textures/Nyanotrasen/Interface/VerbIcons/psionic_invisibility.png.yml delete mode 100644 Resources/Textures/Nyanotrasen/Interface/VerbIcons/psionic_invisibility_off.png.yml delete mode 100644 Resources/Textures/Nyanotrasen/Interface/VerbIcons/psionic_regeneration.png.yml delete mode 100644 Resources/Textures/Nyanotrasen/Interface/VerbIcons/pyrokinesis.png.yml delete mode 100644 Resources/Textures/Nyanotrasen/Interface/VerbIcons/telegnosis.png.yml rename Resources/Textures/{Nyanotrasen/Interface/VerbIcons => _DV/Interface/Actions/actions_psionics.rsi}/dispel.png (100%) rename Resources/Textures/{Nyanotrasen/Interface/VerbIcons/psionic_invisibility.png => _DV/Interface/Actions/actions_psionics.rsi/invisibility.png} (100%) rename Resources/Textures/{Nyanotrasen/Interface/VerbIcons/psionic_invisibility_off.png => _DV/Interface/Actions/actions_psionics.rsi/invisibility_off.png} (100%) rename Resources/Textures/{Nyanotrasen/Interface/VerbIcons => _DV/Interface/Actions/actions_psionics.rsi}/mass_sleep.png (100%) rename Resources/Textures/{Nyanotrasen/Interface/VerbIcons => _DV/Interface/Actions/actions_psionics.rsi}/metapsionic.png (100%) rename Resources/Textures/{Nyanotrasen/Interface/VerbIcons => _DV/Interface/Actions/actions_psionics.rsi}/mind_swap.png (100%) rename Resources/Textures/{Nyanotrasen/Interface/VerbIcons => _DV/Interface/Actions/actions_psionics.rsi}/mind_swap_return.png (100%) rename Resources/Textures/{Nyanotrasen/Interface/VerbIcons => _DV/Interface/Actions/actions_psionics.rsi}/noospheric_zap.png (100%) rename Resources/Textures/{Nyanotrasen/Interface/VerbIcons => _DV/Interface/Actions/actions_psionics.rsi}/pyrokinesis.png (100%) rename Resources/Textures/{Nyanotrasen/Interface/VerbIcons/psionic_regeneration.png => _DV/Interface/Actions/actions_psionics.rsi/regeneration.png} (100%) rename Resources/Textures/{Nyanotrasen/Interface/VerbIcons => _DV/Interface/Actions/actions_psionics.rsi}/telegnosis.png (100%) diff --git a/Resources/Locale/en-US/nyanotrasen/abilities/psionic.ftl b/Resources/Locale/en-US/nyanotrasen/abilities/psionic.ftl index d0e8db72f8c..4b9198663a4 100644 --- a/Resources/Locale/en-US/nyanotrasen/abilities/psionic.ftl +++ b/Resources/Locale/en-US/nyanotrasen/abilities/psionic.ftl @@ -3,43 +3,16 @@ cage-resist-third-person = {CAPITALIZE(THE($user))} starts removing {POSS-ADJ($u cage-uncage-verb = Uncage -action-name-metapsionic = Metapsionic Pulse -action-description-metapsionic = Send a mental pulse through the area to see if there are any psychics nearby. - metapsionic-pulse-success = You detect psychic presence nearby. metapsionic-pulse-failure = You don't detect any psychic presence nearby. metapsionic-pulse-power = You detect that {$power} was used nearby. -action-name-dispel = Dispel -action-description-dispel = Dispel summoned entities such as familiars or forcewalls. - -action-name-mass-sleep = Mass Sleep -action-description-mass-sleep = Put targets in a small area to sleep. - accept-psionics-window-title = Psionic! accept-psionics-window-prompt-text-part = You rolled a psionic power! It's possible that certain anti-psychic forces may hunt you, so you should consider keeping it secret. Do you still wish to be psionic? -action-name-psionic-invisibility = Psionic Invisibility -action-description-psionic-invisibility = Render yourself invisible to any entity that could potentially be psychic. Borgs, animals, and so on are not affected. - -action-name-psionic-invisibility-off = Turn Off Psionic Invisibility -action-description-psionic-invisibility-off = Return to visibility, and receive a stun. - -action-name-mind-swap = Mind Swap -action-description-mind-swap = Swap minds with the target. Either can change back after 20 seconds. - -action-name-mind-swap-return = Reverse Mind Swap -action-description-mind-swap-return = Return to your original body. - -action-name-telegnosis = Telegnosis -action-description-telegnosis = Create a telegnostic projection to remotely observe things. - -action-name-psionic-regeneration = Psionic Regeneration -action-description-psionic-regeneration = Push your natural metabolism to the limit to power your body's regenerative capability. - glimmer-report = Current Glimmer Level: {$level}Ψ. glimmer-event-report-generic = Noöspheric discharge detected. Glimmer level has decreased by {$decrease} to {$level}Ψ. glimmer-event-report-signatures = New psionic signatures manifested. Glimmer level has decreased by {$decrease} to {$level}Ψ. @@ -56,11 +29,6 @@ telegnostic-trapped-entity-desc = Its many eyes betray sadness. psionic-burns-up = {CAPITALIZE(THE($item))} burns up with arcs of strange energy! psionic-burn-resist = Strange arcs dance across {THE($item)}! -action-name-noospheric-zap = Noospheric Zap -action-description-noospheric-zap = Shocks the conciousness of the target and leaves them stunned and stuttering. - -action-name-pyrokinesis = Pyrokinesis -action-description-pyrokinesis = Light a flammable target on fire. pyrokinesis-power-used = A wisp of flame engulfs {THE($target)}, igniting {OBJECT($target)}! action-name-psychokinesis = Psychokinesis diff --git a/Resources/Prototypes/Nyanotrasen/Actions/types.yml b/Resources/Prototypes/Nyanotrasen/Actions/types.yml index 31ea8f5316f..fb8194050af 100644 --- a/Resources/Prototypes/Nyanotrasen/Actions/types.yml +++ b/Resources/Prototypes/Nyanotrasen/Actions/types.yml @@ -17,128 +17,3 @@ icon: { sprite: Nyanotrasen/Objects/Specific/Species/felinid.rsi, state: icon } useDelay: 30 event: !type:HairballActionEvent - -- type: entity - id: ActionDispel - name: action-name-dispel - description: action-description-dispel - components: - - type: EntityTargetAction - icon: Nyanotrasen/Interface/VerbIcons/dispel.png - useDelay: 45 - checkCanAccess: false - range: 6 - itemIconStyle: BigAction - canTargetSelf: false - event: !type:DispelPowerActionEvent - -- type: entity - id: ActionMassSleep - name: action-name-mass-sleep - description: action-description-mass-sleep - components: - - type: WorldTargetAction - icon: Nyanotrasen/Interface/VerbIcons/mass_sleep.png - useDelay: 60 - checkCanAccess: false - range: 8 - itemIconStyle: BigAction - event: !type:MassSleepPowerActionEvent - -- type: entity - id: ActionMindSwapPsionic - name: action-name-mind-swap - description: action-description-mind-swap - components: - - type: EntityTargetAction - icon: Nyanotrasen/Interface/VerbIcons/mind_swap.png - useDelay: 240 - checkCanAccess: false - range: 8 - itemIconStyle: BigAction - event: !type:MindSwapPowerActionEvent - -- type: entity - id: ActionMindSwapReturn - name: action-name-mind-swap-return - description: action-description-mind-swap-return - components: - - type: InstantAction - icon: Nyanotrasen/Interface/VerbIcons/mind_swap_return.png - useDelay: 20 - checkCanInteract: false - event: !type:MindSwapPowerReturnActionEvent - -- type: entity - id: ActionNoosphericZap - name: action-name-noospheric-zap - description: action-description-noospheric-zap - components: - - type: EntityTargetAction - icon: Nyanotrasen/Interface/VerbIcons/noospheric_zap.png - useDelay: 100 - range: 5 - itemIconStyle: BigAction - event: !type:NoosphericZapPowerActionEvent - -- type: entity - id: ActionPyrokinesis - name: action-name-pyrokinesis - description: action-description-pyrokinesis - components: - - type: EntityTargetAction - icon: Nyanotrasen/Interface/VerbIcons/pyrokinesis.png - useDelay: 50 - range: 6 - checkCanAccess: false - itemIconStyle: BigAction - event: !type:PyrokinesisPowerActionEvent - -- type: entity - id: ActionMetapsionic - name: action-name-metapsionic - description: action-description-metapsionic - components: - - type: InstantAction - icon: Nyanotrasen/Interface/VerbIcons/metapsionic.png - useDelay: 45 - event: !type:MetapsionicPowerActionEvent - -- type: entity - id: ActionPsionicRegeneration - name: action-name-psionic-regeneration - description: action-description-psionic-regeneration - components: - - type: InstantAction - icon: Nyanotrasen/Interface/VerbIcons/psionic_regeneration.png - useDelay: 120 - event: !type:PsionicRegenerationPowerActionEvent - -- type: entity - id: ActionTelegnosis - name: action-name-telegnosis - description: action-description-telegnosis - components: - - type: InstantAction - icon: Nyanotrasen/Interface/VerbIcons/telegnosis.png - useDelay: 150 - event: !type:TelegnosisPowerActionEvent - -- type: entity - id: ActionPsionicInvisibility - name: action-name-psionic-invisibility - description: action-description-psionic-invisibility - components: - - type: InstantAction - icon: Nyanotrasen/Interface/VerbIcons/psionic_invisibility.png - useDelay: 120 - event: !type:PsionicInvisibilityPowerActionEvent - -- type: entity - id: ActionPsionicInvisibilityUsed - name: action-name-psionic-invisibility-off - description: action-description-psionic-invisibility-off - components: - - type: InstantAction - icon: Nyanotrasen/Interface/VerbIcons/psionic_invisibility_off.png - event: !type:RemovePsionicInvisibilityOffPowerActionEvent diff --git a/Resources/Prototypes/_DV/Actions/psionic.yml b/Resources/Prototypes/_DV/Actions/psionic.yml new file mode 100644 index 00000000000..4f8ccf406be --- /dev/null +++ b/Resources/Prototypes/_DV/Actions/psionic.yml @@ -0,0 +1,169 @@ +- type: entity + id: ActionDispel + name: Dispel + description: Dispel summoned entities such as familiars or forcewalls. + components: + - type: EntityTargetAction + icon: + sprite: _DV/Interface/Actions/actions_psionics.rsi + state: dispel + useDelay: 45 + checkCanAccess: false + checkCanInteract: false + range: 6 + itemIconStyle: BigAction + canTargetSelf: false + event: !type:DispelPowerActionEvent + +- type: entity + id: ActionMassSleep + name: Mass Sleep + description: Put targets in a small area to sleep. + components: + - type: WorldTargetAction + icon: + sprite: _DV/Interface/Actions/actions_psionics.rsi + state: mass_sleep + useDelay: 60 + checkCanAccess: false + checkCanInteract: false + range: 8 + itemIconStyle: BigAction + event: !type:MassSleepPowerActionEvent + +- type: entity + id: ActionMindSwapPsionic + name: Mind Swap + description: Swap minds with the target. Either can change back after 20 seconds. + components: + - type: EntityTargetAction + icon: + sprite: _DV/Interface/Actions/actions_psionics.rsi + state: mind_swap + useDelay: 240 + checkCanAccess: false + checkCanInteract: false + range: 8 + itemIconStyle: BigAction + event: !type:MindSwapPowerActionEvent + +- type: entity + id: ActionMindSwapReturn + name: Reverse Mind Swap + description: Return to your original body. + components: + - type: InstantAction + icon: + sprite: _DV/Interface/Actions/actions_psionics.rsi + state: mind_swap_return + useDelay: 20 + checkCanInteract: false + event: !type:MindSwapPowerReturnActionEvent + +- type: entity + id: ActionNoosphericZap + name: Noospheric Zap + description: Shocks the conciousness of the target and leaves them stunned and stuttering. + components: + - type: EntityTargetAction + icon: + sprite: _DV/Interface/Actions/actions_psionics.rsi + state: noospheric_zap + useDelay: 100 + checkCanInteract: false + range: 5 + itemIconStyle: BigAction + event: !type:NoosphericZapPowerActionEvent + +- type: entity + id: ActionPyrokinesis + name: Pyrokinesis + description: Light a flammable target on fire. + components: + - type: EntityTargetAction + icon: + sprite: _DV/Interface/Actions/actions_psionics.rsi + state: pyrokinesis + useDelay: 50 + range: 6 + checkCanAccess: false + itemIconStyle: BigAction + event: !type:PyrokinesisPowerActionEvent + +- type: entity + id: ActionMetapsionic + name: Metapsionic Pulse + description: Send a mental pulse through the area to see if there are any psychics nearby. + components: + - type: InstantAction + icon: + sprite: _DV/Interface/Actions/actions_psionics.rsi + state: metapsionic + useDelay: 45 + checkCanInteract: false + event: !type:MetapsionicPowerActionEvent + +- type: entity + id: ActionPsionicRegeneration + name: Psionic Regeneration + description: Push your natural metabolism to the limit to power your body's regenerative capability. + components: + - type: InstantAction + icon: + sprite: _DV/Interface/Actions/actions_psionics.rsi + state: regeneration + useDelay: 120 + checkCanInteract: false + event: !type:PsionicRegenerationPowerActionEvent + +- type: entity + id: ActionTelegnosis + name: Telegnosis + description: Create a telegnostic projection to remotely observe things. + components: + - type: InstantAction + icon: + sprite: _DV/Interface/Actions/actions_psionics.rsi + state: telegnosis + useDelay: 150 + checkCanInteract: false + event: !type:TelegnosisPowerActionEvent + +- type: entity + id: ActionPsionicInvisibility + name: Psionic Invisibility + description: Render yourself invisible to any entity that could potentially be psychic. Borgs, animals, and so on are not affected. + components: + - type: InstantAction + icon: + sprite: _DV/Interface/Actions/actions_psionics.rsi + state: invisibility + useDelay: 120 + checkCanInteract: false + event: !type:PsionicInvisibilityPowerActionEvent + +- type: entity + id: ActionPsionicInvisibilityUsed + name: Turn Off Psionic Invisibility + description: Return to visibility, and receive a stun. + components: + - type: InstantAction + icon: + sprite: _DV/Interface/Actions/actions_psionics.rsi + state: invisibility_off + checkCanInteract: false + event: !type:RemovePsionicInvisibilityOffPowerActionEvent + +- type: entity + id: ActionPrecognition + name: Precognition + description: See into the future to get a hint about the next random event. + components: + - type: InstantAction + icon: + sprite: _DV/Interface/Actions/actions_psionics.rsi + state: precognition + useDelay: 240 + checkCanInteract: false + checkConsciousness: false + event: !type:PrecognitionPowerActionEvent diff --git a/Resources/Prototypes/_DV/Actions/types.yml b/Resources/Prototypes/_DV/Actions/types.yml index cb4818527ef..fd677762cd9 100644 --- a/Resources/Prototypes/_DV/Actions/types.yml +++ b/Resources/Prototypes/_DV/Actions/types.yml @@ -35,20 +35,6 @@ state: full event: !type:ToggleCrawlingStateEvent -- type: entity - id: ActionPrecognition - name: Precognition - description: See into the future to get a hint about the next random event. - components: - - type: InstantAction - icon: - sprite: _DV/Interface/Actions/actions_psionics.rsi - state: precognition - useDelay: 240 - checkCanInteract: false - checkConsciousness: false - event: !type:PrecognitionPowerActionEvent - - type: entity id: ActionChitzite name: Cough Up Chitzite diff --git a/Resources/Textures/Nyanotrasen/Interface/VerbIcons/dispel.png.yml b/Resources/Textures/Nyanotrasen/Interface/VerbIcons/dispel.png.yml deleted file mode 100644 index 5c43e233050..00000000000 --- a/Resources/Textures/Nyanotrasen/Interface/VerbIcons/dispel.png.yml +++ /dev/null @@ -1,2 +0,0 @@ -sample: - filter: true diff --git a/Resources/Textures/Nyanotrasen/Interface/VerbIcons/license.txt b/Resources/Textures/Nyanotrasen/Interface/VerbIcons/license.txt deleted file mode 100644 index ad1d595d9bd..00000000000 --- a/Resources/Textures/Nyanotrasen/Interface/VerbIcons/license.txt +++ /dev/null @@ -1,13 +0,0 @@ -The eleven files below are licensed under CC-BY-SA 4.0 by the author who can be found on GitHub @Vordenburg. - -dispel.png -mass_sleep.png -metapsionic.png -mind_swap.png -mind_swap_return.png -noospheric_zap.png -psionic_invisibility.png -psionic_invisibility_off.png -psionic_regeneration.png -pyrokinesis.png -telegnosis.png diff --git a/Resources/Textures/Nyanotrasen/Interface/VerbIcons/mass_sleep.png.yml b/Resources/Textures/Nyanotrasen/Interface/VerbIcons/mass_sleep.png.yml deleted file mode 100644 index 5c43e233050..00000000000 --- a/Resources/Textures/Nyanotrasen/Interface/VerbIcons/mass_sleep.png.yml +++ /dev/null @@ -1,2 +0,0 @@ -sample: - filter: true diff --git a/Resources/Textures/Nyanotrasen/Interface/VerbIcons/metapsionic.png.yml b/Resources/Textures/Nyanotrasen/Interface/VerbIcons/metapsionic.png.yml deleted file mode 100644 index 5c43e233050..00000000000 --- a/Resources/Textures/Nyanotrasen/Interface/VerbIcons/metapsionic.png.yml +++ /dev/null @@ -1,2 +0,0 @@ -sample: - filter: true diff --git a/Resources/Textures/Nyanotrasen/Interface/VerbIcons/mind_swap.png.yml b/Resources/Textures/Nyanotrasen/Interface/VerbIcons/mind_swap.png.yml deleted file mode 100644 index 5c43e233050..00000000000 --- a/Resources/Textures/Nyanotrasen/Interface/VerbIcons/mind_swap.png.yml +++ /dev/null @@ -1,2 +0,0 @@ -sample: - filter: true diff --git a/Resources/Textures/Nyanotrasen/Interface/VerbIcons/mind_swap_return.png.yml b/Resources/Textures/Nyanotrasen/Interface/VerbIcons/mind_swap_return.png.yml deleted file mode 100644 index 5c43e233050..00000000000 --- a/Resources/Textures/Nyanotrasen/Interface/VerbIcons/mind_swap_return.png.yml +++ /dev/null @@ -1,2 +0,0 @@ -sample: - filter: true diff --git a/Resources/Textures/Nyanotrasen/Interface/VerbIcons/noospheric_zap.png.yml b/Resources/Textures/Nyanotrasen/Interface/VerbIcons/noospheric_zap.png.yml deleted file mode 100644 index 5c43e233050..00000000000 --- a/Resources/Textures/Nyanotrasen/Interface/VerbIcons/noospheric_zap.png.yml +++ /dev/null @@ -1,2 +0,0 @@ -sample: - filter: true diff --git a/Resources/Textures/Nyanotrasen/Interface/VerbIcons/psionic_invisibility.png.yml b/Resources/Textures/Nyanotrasen/Interface/VerbIcons/psionic_invisibility.png.yml deleted file mode 100644 index 5c43e233050..00000000000 --- a/Resources/Textures/Nyanotrasen/Interface/VerbIcons/psionic_invisibility.png.yml +++ /dev/null @@ -1,2 +0,0 @@ -sample: - filter: true diff --git a/Resources/Textures/Nyanotrasen/Interface/VerbIcons/psionic_invisibility_off.png.yml b/Resources/Textures/Nyanotrasen/Interface/VerbIcons/psionic_invisibility_off.png.yml deleted file mode 100644 index 5c43e233050..00000000000 --- a/Resources/Textures/Nyanotrasen/Interface/VerbIcons/psionic_invisibility_off.png.yml +++ /dev/null @@ -1,2 +0,0 @@ -sample: - filter: true diff --git a/Resources/Textures/Nyanotrasen/Interface/VerbIcons/psionic_regeneration.png.yml b/Resources/Textures/Nyanotrasen/Interface/VerbIcons/psionic_regeneration.png.yml deleted file mode 100644 index 5c43e233050..00000000000 --- a/Resources/Textures/Nyanotrasen/Interface/VerbIcons/psionic_regeneration.png.yml +++ /dev/null @@ -1,2 +0,0 @@ -sample: - filter: true diff --git a/Resources/Textures/Nyanotrasen/Interface/VerbIcons/pyrokinesis.png.yml b/Resources/Textures/Nyanotrasen/Interface/VerbIcons/pyrokinesis.png.yml deleted file mode 100644 index 5c43e233050..00000000000 --- a/Resources/Textures/Nyanotrasen/Interface/VerbIcons/pyrokinesis.png.yml +++ /dev/null @@ -1,2 +0,0 @@ -sample: - filter: true diff --git a/Resources/Textures/Nyanotrasen/Interface/VerbIcons/telegnosis.png.yml b/Resources/Textures/Nyanotrasen/Interface/VerbIcons/telegnosis.png.yml deleted file mode 100644 index 5c43e233050..00000000000 --- a/Resources/Textures/Nyanotrasen/Interface/VerbIcons/telegnosis.png.yml +++ /dev/null @@ -1,2 +0,0 @@ -sample: - filter: true diff --git a/Resources/Textures/Nyanotrasen/Interface/VerbIcons/dispel.png b/Resources/Textures/_DV/Interface/Actions/actions_psionics.rsi/dispel.png similarity index 100% rename from Resources/Textures/Nyanotrasen/Interface/VerbIcons/dispel.png rename to Resources/Textures/_DV/Interface/Actions/actions_psionics.rsi/dispel.png diff --git a/Resources/Textures/Nyanotrasen/Interface/VerbIcons/psionic_invisibility.png b/Resources/Textures/_DV/Interface/Actions/actions_psionics.rsi/invisibility.png similarity index 100% rename from Resources/Textures/Nyanotrasen/Interface/VerbIcons/psionic_invisibility.png rename to Resources/Textures/_DV/Interface/Actions/actions_psionics.rsi/invisibility.png diff --git a/Resources/Textures/Nyanotrasen/Interface/VerbIcons/psionic_invisibility_off.png b/Resources/Textures/_DV/Interface/Actions/actions_psionics.rsi/invisibility_off.png similarity index 100% rename from Resources/Textures/Nyanotrasen/Interface/VerbIcons/psionic_invisibility_off.png rename to Resources/Textures/_DV/Interface/Actions/actions_psionics.rsi/invisibility_off.png diff --git a/Resources/Textures/Nyanotrasen/Interface/VerbIcons/mass_sleep.png b/Resources/Textures/_DV/Interface/Actions/actions_psionics.rsi/mass_sleep.png similarity index 100% rename from Resources/Textures/Nyanotrasen/Interface/VerbIcons/mass_sleep.png rename to Resources/Textures/_DV/Interface/Actions/actions_psionics.rsi/mass_sleep.png diff --git a/Resources/Textures/_DV/Interface/Actions/actions_psionics.rsi/meta.json b/Resources/Textures/_DV/Interface/Actions/actions_psionics.rsi/meta.json index e0c9ccac8c5..83e4629b110 100644 --- a/Resources/Textures/_DV/Interface/Actions/actions_psionics.rsi/meta.json +++ b/Resources/Textures/_DV/Interface/Actions/actions_psionics.rsi/meta.json @@ -1,14 +1,47 @@ { "version": 1, "license": "CC-BY-SA-4.0", - "copyright": "Sprited by chamomileteatime on Discord for DeltaV", + "copyright": "Created by @Vordenburg (github) for Nyanotrasen. Precognition sprited by chamomileteatime on Discord for DeltaV", "size": { "x": 64, "y": 64 }, "states": [ - { - "name": "precognition" + { + "name": "dispel" + }, + { + "name": "invisibility_off" + }, + { + "name": "invisibility" + }, + { + "name": "mass_sleep" + }, + { + "name": "metapsionic" + }, + { + "name": "mind_swap" + }, + { + "name": "mind_swap_return" + }, + { + "name": "noospheric_zap" + }, + { + "name": "precognition" + }, + { + "name": "pyrokinesis" + }, + { + "name": "regeneration" + }, + { + "name": "telegnosis" } ] } diff --git a/Resources/Textures/Nyanotrasen/Interface/VerbIcons/metapsionic.png b/Resources/Textures/_DV/Interface/Actions/actions_psionics.rsi/metapsionic.png similarity index 100% rename from Resources/Textures/Nyanotrasen/Interface/VerbIcons/metapsionic.png rename to Resources/Textures/_DV/Interface/Actions/actions_psionics.rsi/metapsionic.png diff --git a/Resources/Textures/Nyanotrasen/Interface/VerbIcons/mind_swap.png b/Resources/Textures/_DV/Interface/Actions/actions_psionics.rsi/mind_swap.png similarity index 100% rename from Resources/Textures/Nyanotrasen/Interface/VerbIcons/mind_swap.png rename to Resources/Textures/_DV/Interface/Actions/actions_psionics.rsi/mind_swap.png diff --git a/Resources/Textures/Nyanotrasen/Interface/VerbIcons/mind_swap_return.png b/Resources/Textures/_DV/Interface/Actions/actions_psionics.rsi/mind_swap_return.png similarity index 100% rename from Resources/Textures/Nyanotrasen/Interface/VerbIcons/mind_swap_return.png rename to Resources/Textures/_DV/Interface/Actions/actions_psionics.rsi/mind_swap_return.png diff --git a/Resources/Textures/Nyanotrasen/Interface/VerbIcons/noospheric_zap.png b/Resources/Textures/_DV/Interface/Actions/actions_psionics.rsi/noospheric_zap.png similarity index 100% rename from Resources/Textures/Nyanotrasen/Interface/VerbIcons/noospheric_zap.png rename to Resources/Textures/_DV/Interface/Actions/actions_psionics.rsi/noospheric_zap.png diff --git a/Resources/Textures/Nyanotrasen/Interface/VerbIcons/pyrokinesis.png b/Resources/Textures/_DV/Interface/Actions/actions_psionics.rsi/pyrokinesis.png similarity index 100% rename from Resources/Textures/Nyanotrasen/Interface/VerbIcons/pyrokinesis.png rename to Resources/Textures/_DV/Interface/Actions/actions_psionics.rsi/pyrokinesis.png diff --git a/Resources/Textures/Nyanotrasen/Interface/VerbIcons/psionic_regeneration.png b/Resources/Textures/_DV/Interface/Actions/actions_psionics.rsi/regeneration.png similarity index 100% rename from Resources/Textures/Nyanotrasen/Interface/VerbIcons/psionic_regeneration.png rename to Resources/Textures/_DV/Interface/Actions/actions_psionics.rsi/regeneration.png diff --git a/Resources/Textures/Nyanotrasen/Interface/VerbIcons/telegnosis.png b/Resources/Textures/_DV/Interface/Actions/actions_psionics.rsi/telegnosis.png similarity index 100% rename from Resources/Textures/Nyanotrasen/Interface/VerbIcons/telegnosis.png rename to Resources/Textures/_DV/Interface/Actions/actions_psionics.rsi/telegnosis.png From 19e5bea8aa6302fd5abb2eed5c8f4bfb94a75de2 Mon Sep 17 00:00:00 2001 From: Delta-V bot <135767721+DeltaV-Bot@users.noreply.github.com> Date: Thu, 23 Jan 2025 19:24:38 +0100 Subject: [PATCH 09/20] Automatic changelog update --- Resources/Changelog/DeltaVChangelog.yml | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/Resources/Changelog/DeltaVChangelog.yml b/Resources/Changelog/DeltaVChangelog.yml index 8cb65c907f3..2a69de341fa 100644 --- a/Resources/Changelog/DeltaVChangelog.yml +++ b/Resources/Changelog/DeltaVChangelog.yml @@ -1,14 +1,4 @@ Entries: -- author: Colin-Tel - changes: - - message: Asterisk station has a few more rooms, check the map! - type: Tweak - - message: Micro station's salvage locator was replaced with a salvage magnet and - should no longer have grids intersect with the station. - type: Fix - id: 443 - time: '2024-07-22T16:32:49.0000000+00:00' - url: https://github.com/DeltaV-Station/Delta-v/pull/1484 - author: noctyrnal changes: - message: Walls, Airlocks and Tiles have received new sprites as per a visual resprite @@ -3857,3 +3847,10 @@ id: 942 time: '2025-01-23T07:27:44.0000000+00:00' url: https://github.com/DeltaV-Station/Delta-v/pull/2707 +- author: deltanedas + changes: + - message: Fixed not being able to use psionic powers while cuffed. + type: Fix + id: 943 + time: '2025-01-23T18:24:19.0000000+00:00' + url: https://github.com/DeltaV-Station/Delta-v/pull/2686 From eda41474f5029b21d8f8c52bc517acd1c79913c9 Mon Sep 17 00:00:00 2001 From: deltanedas <39013340+deltanedas@users.noreply.github.com> Date: Thu, 23 Jan 2025 20:56:34 +0000 Subject: [PATCH 10/20] refactor felinid/chitinid item coughing (#2790) * move BlockInjection to shared * add ItemCougher * make Chitinid use ItemCougher * make felinid use ItemCougher * update actions * access --------- Co-authored-by: deltanedas <@deltanedas:kde.org> --- .../_DV/Abilities/Felinid/FelinidSystem.cs | 5 + .../Chemistry/EntitySystems/InjectorSystem.cs | 2 +- .../Felinid/CoughingUpHairballComponent.cs | 11 - .../Abilities/Felinid/FelinidComponent.cs | 36 ---- .../Abilities/Felinid/FelinidFoodComponent.cs | 5 - .../Abilities/Felinid/FelinidSystem.cs | 195 ------------------ .../Abilities/Felinid/HairballComponent.cs | 7 - .../Chitinid/BlockInjectionComponent.cs | 4 - .../Abilities/Chitinid/ChitinidComponent.cs | 32 +-- .../_DV/Abilities/Chitinid/ChitinidSystem.cs | 74 ++----- .../Chitinid/CoughingUpChitziteComponent.cs | 14 -- .../_DV/Abilities/Felinid/FelinidSystem.cs | 74 +++++++ .../_DV/Abilities/CoughingUpItemComponent.cs | 19 ++ .../_DV/Abilities/Felinid/FelinidComponent.cs | 20 ++ .../Abilities/Felinid/FelinidFoodComponent.cs | 16 ++ .../Abilities/Felinid/HairballComponent.cs | 22 ++ .../Abilities/Felinid/SharedFelinidSystem.cs | 34 +++ .../_DV/Abilities/ItemCougherComponent.cs | 48 +++++ .../_DV/Abilities/ItemCougherSystem.cs | 106 ++++++++++ .../Components/BlockInjectionComponent.cs | 10 + .../Locale/en-US/_DV/abilities/chitinid.ftl | 1 - .../en-US/_DV/abilities/item-cougher.ftl | 1 + .../en-US/nyanotrasen/abilities/felinid.ftl | 4 - .../Prototypes/Nyanotrasen/Actions/types.yml | 19 -- .../Entities/Mobs/Species/felinid.yml | 4 + Resources/Prototypes/_DV/Actions/types.yml | 15 +- .../_DV/Entities/Mobs/Species/chitinid.yml | 4 + 27 files changed, 412 insertions(+), 370 deletions(-) create mode 100644 Content.Client/_DV/Abilities/Felinid/FelinidSystem.cs delete mode 100644 Content.Server/Nyanotrasen/Abilities/Felinid/CoughingUpHairballComponent.cs delete mode 100644 Content.Server/Nyanotrasen/Abilities/Felinid/FelinidComponent.cs delete mode 100644 Content.Server/Nyanotrasen/Abilities/Felinid/FelinidFoodComponent.cs delete mode 100644 Content.Server/Nyanotrasen/Abilities/Felinid/FelinidSystem.cs delete mode 100644 Content.Server/Nyanotrasen/Abilities/Felinid/HairballComponent.cs delete mode 100644 Content.Server/_DV/Abilities/Chitinid/BlockInjectionComponent.cs delete mode 100644 Content.Server/_DV/Abilities/Chitinid/CoughingUpChitziteComponent.cs create mode 100644 Content.Server/_DV/Abilities/Felinid/FelinidSystem.cs create mode 100644 Content.Shared/_DV/Abilities/CoughingUpItemComponent.cs create mode 100644 Content.Shared/_DV/Abilities/Felinid/FelinidComponent.cs create mode 100644 Content.Shared/_DV/Abilities/Felinid/FelinidFoodComponent.cs create mode 100644 Content.Shared/_DV/Abilities/Felinid/HairballComponent.cs create mode 100644 Content.Shared/_DV/Abilities/Felinid/SharedFelinidSystem.cs create mode 100644 Content.Shared/_DV/Abilities/ItemCougherComponent.cs create mode 100644 Content.Shared/_DV/Abilities/ItemCougherSystem.cs create mode 100644 Content.Shared/_DV/Chemistry/Components/BlockInjectionComponent.cs create mode 100644 Resources/Locale/en-US/_DV/abilities/item-cougher.ftl delete mode 100644 Resources/Prototypes/Nyanotrasen/Actions/types.yml diff --git a/Content.Client/_DV/Abilities/Felinid/FelinidSystem.cs b/Content.Client/_DV/Abilities/Felinid/FelinidSystem.cs new file mode 100644 index 00000000000..d9d7ca86965 --- /dev/null +++ b/Content.Client/_DV/Abilities/Felinid/FelinidSystem.cs @@ -0,0 +1,5 @@ +using Content.Shared._DV.Abilities.Felinid; + +namespace Content.Shared._DV.Abilities.Felinid; + +public sealed class FelinidSystem : SharedFelinidSystem; diff --git a/Content.Server/Chemistry/EntitySystems/InjectorSystem.cs b/Content.Server/Chemistry/EntitySystems/InjectorSystem.cs index c935326b13c..723b11ad97b 100644 --- a/Content.Server/Chemistry/EntitySystems/InjectorSystem.cs +++ b/Content.Server/Chemistry/EntitySystems/InjectorSystem.cs @@ -1,6 +1,6 @@ -using Content.Server.Abilities.Chitinid; using Content.Server.Body.Components; using Content.Server.Body.Systems; +using Content.Shared._DV.Chemistry.Components; // DeltaV using Content.Shared.Chemistry; using Content.Shared.Chemistry.Components; using Content.Shared.Chemistry.Components.SolutionManager; diff --git a/Content.Server/Nyanotrasen/Abilities/Felinid/CoughingUpHairballComponent.cs b/Content.Server/Nyanotrasen/Abilities/Felinid/CoughingUpHairballComponent.cs deleted file mode 100644 index 1bfa0809b63..00000000000 --- a/Content.Server/Nyanotrasen/Abilities/Felinid/CoughingUpHairballComponent.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace Content.Server.Abilities.Felinid; - -[RegisterComponent] -public sealed partial class CoughingUpHairballComponent : Component -{ - [DataField("accumulator")] - public float Accumulator = 0f; - - [DataField("coughUpTime")] - public TimeSpan CoughUpTime = TimeSpan.FromSeconds(2.15); // length of hairball.ogg -} diff --git a/Content.Server/Nyanotrasen/Abilities/Felinid/FelinidComponent.cs b/Content.Server/Nyanotrasen/Abilities/Felinid/FelinidComponent.cs deleted file mode 100644 index 9165b90de05..00000000000 --- a/Content.Server/Nyanotrasen/Abilities/Felinid/FelinidComponent.cs +++ /dev/null @@ -1,36 +0,0 @@ -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; -using Robust.Shared.Prototypes; -using Content.Shared.Actions; -using Robust.Shared.Utility; - -namespace Content.Server.Abilities.Felinid; - -[RegisterComponent] -public sealed partial class FelinidComponent : Component -{ - ///

- /// The hairball prototype to use. - /// - [DataField("hairballPrototype", customTypeSerializer: typeof(PrototypeIdSerializer))] - public string HairballPrototype = "Hairball"; - - //[DataField("hairballAction", customTypeSerializer: typeof(PrototypeIdSerializer))] - //public string HairballAction = "ActionHairball"; - - [DataField("hairballActionId", - customTypeSerializer: typeof(PrototypeIdSerializer))] - public string? HairballActionId = "ActionHairball"; - - [DataField("hairballAction")] - public EntityUid? HairballAction; - - [DataField("eatActionId", - customTypeSerializer: typeof(PrototypeIdSerializer))] - public string? EatActionId = "ActionEatMouse"; - - [DataField("eatAction")] - public EntityUid? EatAction; - - [DataField("eatActionTarget")] - public EntityUid? EatActionTarget = null; -} diff --git a/Content.Server/Nyanotrasen/Abilities/Felinid/FelinidFoodComponent.cs b/Content.Server/Nyanotrasen/Abilities/Felinid/FelinidFoodComponent.cs deleted file mode 100644 index 5a6069ffab0..00000000000 --- a/Content.Server/Nyanotrasen/Abilities/Felinid/FelinidFoodComponent.cs +++ /dev/null @@ -1,5 +0,0 @@ -namespace Content.Server.Abilities.Felinid; - -[RegisterComponent] -public sealed partial class FelinidFoodComponent : Component -{} diff --git a/Content.Server/Nyanotrasen/Abilities/Felinid/FelinidSystem.cs b/Content.Server/Nyanotrasen/Abilities/Felinid/FelinidSystem.cs deleted file mode 100644 index bf41a294899..00000000000 --- a/Content.Server/Nyanotrasen/Abilities/Felinid/FelinidSystem.cs +++ /dev/null @@ -1,195 +0,0 @@ -using Content.Shared.Actions; -using Content.Shared.Actions.Events; -using Content.Shared.Audio; -using Content.Shared.StatusEffect; -using Content.Shared.Throwing; -using Content.Shared.Item; -using Content.Shared.Inventory; -using Content.Shared.Hands; -using Content.Shared.IdentityManagement; -using Content.Shared.Nutrition.Components; -using Content.Shared.Nutrition.EntitySystems; -using Content.Server.Body.Components; -using Content.Server.Chemistry.Containers.EntitySystems; -using Content.Server.Medical; -using Content.Server.Nutrition.EntitySystems; -using Content.Server.Nutrition.Components; -using Content.Server.Chemistry.EntitySystems; -using Content.Server.Popups; -using Content.Shared.Chemistry.EntitySystems; -using Robust.Shared.Audio; -using Robust.Shared.Audio.Systems; -using Robust.Shared.Player; -using Robust.Shared.Random; -using Robust.Shared.Prototypes; - -namespace Content.Server.Abilities.Felinid; - -public sealed partial class FelinidSystem : EntitySystem -{ - - [Dependency] private readonly SharedActionsSystem _actionsSystem = default!; - [Dependency] private readonly HungerSystem _hungerSystem = default!; - [Dependency] private readonly VomitSystem _vomitSystem = default!; - [Dependency] private readonly SolutionContainerSystem _solutionSystem = default!; - [Dependency] private readonly IRobustRandom _robustRandom = default!; - [Dependency] private readonly PopupSystem _popupSystem = default!; - [Dependency] private readonly InventorySystem _inventorySystem = default!; - [Dependency] private readonly IPrototypeManager _prototypeManager = default!; - [Dependency] private readonly SharedAudioSystem _audio = default!; - - public override void Initialize() - { - base.Initialize(); - SubscribeLocalEvent(OnInit); - SubscribeLocalEvent(OnHairball); - SubscribeLocalEvent(OnEatMouse); - SubscribeLocalEvent(OnEquipped); - SubscribeLocalEvent(OnUnequipped); - SubscribeLocalEvent(OnHairballHit); - SubscribeLocalEvent(OnHairballPickupAttempt); - } - - private Queue RemQueue = new(); - - public override void Update(float frameTime) - { - base.Update(frameTime); - foreach (var cat in RemQueue) - { - RemComp(cat); - } - RemQueue.Clear(); - - foreach (var (hairballComp, catComp) in EntityQuery()) - { - hairballComp.Accumulator += frameTime; - if (hairballComp.Accumulator < hairballComp.CoughUpTime.TotalSeconds) - continue; - - hairballComp.Accumulator = 0; - SpawnHairball(hairballComp.Owner, catComp); - RemQueue.Enqueue(hairballComp.Owner); - } - } - - private void OnInit(EntityUid uid, FelinidComponent component, ComponentInit args) - { - if (component.HairballAction != null) - return; - - //component.HairballAction = Spawn("ActionHairball"); - _actionsSystem.AddAction(uid, ref component.HairballAction, component.HairballActionId); - } - - private void OnEquipped(EntityUid uid, FelinidComponent component, DidEquipHandEvent args) - { - if (!HasComp(args.Equipped)) - return; - - component.EatActionTarget = args.Equipped; - - //component.EatAction = Spawn("ActionEatMouse"); - _actionsSystem.AddAction(uid, ref component.EatAction, component.EatActionId); - } - - private void OnUnequipped(EntityUid uid, FelinidComponent component, DidUnequipHandEvent args) - { - if (args.Unequipped == component.EatActionTarget) - { - component.EatActionTarget = null; - if (component.EatAction != null) - _actionsSystem.RemoveAction(uid, component.EatAction.Value); - } - } - - private void OnHairball(EntityUid uid, FelinidComponent component, HairballActionEvent args) - { - if (_inventorySystem.TryGetSlotEntity(uid, "mask", out var maskUid) && - EntityManager.TryGetComponent(maskUid, out var blocker) && - blocker.Enabled) - { - _popupSystem.PopupEntity(Loc.GetString("hairball-mask", ("mask", maskUid)), uid, uid); - return; - } - - _popupSystem.PopupEntity(Loc.GetString("hairball-cough", ("name", Identity.Entity(uid, EntityManager))), uid); - _audio.PlayPvs("/Audio/Nyanotrasen/Effects/Species/hairball.ogg", uid, AudioHelpers.WithVariation(0.15f)); - - EnsureComp(uid); - args.Handled = true; - } - - private void OnEatMouse(EntityUid uid, FelinidComponent component, EatMouseActionEvent args) - { - if (component.EatActionTarget == null) - return; - - if (!TryComp(uid, out var hunger)) - return; - - if (hunger.CurrentThreshold == Shared.Nutrition.Components.HungerThreshold.Overfed) - { - _popupSystem.PopupEntity(Loc.GetString("food-system-you-cannot-eat-any-more"), uid, uid, Shared.Popups.PopupType.SmallCaution); - return; - } - - if (_inventorySystem.TryGetSlotEntity(uid, "mask", out var maskUid) && - EntityManager.TryGetComponent(maskUid, out var blocker) && - blocker.Enabled) - { - _popupSystem.PopupEntity(Loc.GetString("hairball-mask", ("mask", maskUid)), uid, uid, Shared.Popups.PopupType.SmallCaution); - return; - } - - if (component.HairballAction != null) - { - _actionsSystem.SetCharges(component.HairballAction, 1); // You get the charge back and that's it. Tough. - _actionsSystem.SetEnabled(component.HairballAction, true); - } - Del(component.EatActionTarget.Value); - component.EatActionTarget = null; - - _audio.PlayPvs("/Audio/_DV/Items/eatfood.ogg", uid, AudioHelpers.WithVariation(0.15f)); - - _hungerSystem.ModifyHunger(uid, 50f, hunger); - - if (component.EatAction != null) - _actionsSystem.RemoveAction(uid, component.EatAction.Value); - } - - private void SpawnHairball(EntityUid uid, FelinidComponent component) - { - var hairball = EntityManager.SpawnEntity(component.HairballPrototype, Transform(uid).Coordinates); - var hairballComp = Comp(hairball); - - if (TryComp(uid, out var bloodstream) && bloodstream.ChemicalSolution.HasValue) - { - var temp = _solutionSystem.SplitSolution(bloodstream.ChemicalSolution.Value, 20); - - if (_solutionSystem.TryGetSolution(hairball, hairballComp.SolutionName, out var hairballSolution)) - { - _solutionSystem.TryAddSolution(hairballSolution.Value, temp); - } - } - } - private void OnHairballHit(EntityUid uid, HairballComponent component, ThrowDoHitEvent args) - { - if (HasComp(args.Target) || !HasComp(args.Target)) - return; - if (_robustRandom.Prob(0.2f)) - _vomitSystem.Vomit(args.Target); - } - - private void OnHairballPickupAttempt(EntityUid uid, HairballComponent component, GettingPickedUpAttemptEvent args) - { - if (HasComp(args.User) || !HasComp(args.User)) - return; - - if (_robustRandom.Prob(0.2f)) - { - _vomitSystem.Vomit(args.User); - args.Cancel(); - } - } -} diff --git a/Content.Server/Nyanotrasen/Abilities/Felinid/HairballComponent.cs b/Content.Server/Nyanotrasen/Abilities/Felinid/HairballComponent.cs deleted file mode 100644 index 01c01dbc2e5..00000000000 --- a/Content.Server/Nyanotrasen/Abilities/Felinid/HairballComponent.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Content.Server.Abilities.Felinid; - -[RegisterComponent] -public sealed partial class HairballComponent : Component -{ - public string SolutionName = "hairball"; -} diff --git a/Content.Server/_DV/Abilities/Chitinid/BlockInjectionComponent.cs b/Content.Server/_DV/Abilities/Chitinid/BlockInjectionComponent.cs deleted file mode 100644 index ed5d78874d6..00000000000 --- a/Content.Server/_DV/Abilities/Chitinid/BlockInjectionComponent.cs +++ /dev/null @@ -1,4 +0,0 @@ -namespace Content.Server.Abilities.Chitinid; - -[RegisterComponent] -public sealed partial class BlockInjectionComponent : Component; diff --git a/Content.Server/_DV/Abilities/Chitinid/ChitinidComponent.cs b/Content.Server/_DV/Abilities/Chitinid/ChitinidComponent.cs index 871d10a7c27..8f3f88ebc63 100644 --- a/Content.Server/_DV/Abilities/Chitinid/ChitinidComponent.cs +++ b/Content.Server/_DV/Abilities/Chitinid/ChitinidComponent.cs @@ -1,26 +1,30 @@ using Content.Shared.Damage; -using Content.Shared.Damage.Prototypes; using Content.Shared.FixedPoint; -using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; -namespace Content.Server.Abilities.Chitinid; +namespace Content.Server._DV.Abilities.Chitinid; -[RegisterComponent] +/// +/// Passively heals radiation up to a limit, which then uses ItemCougherComponent to cough up Chitzite. +/// After that it will heal radiation damage again. +/// +[RegisterComponent, Access(typeof(ChitinidSystem))] +[AutoGenerateComponentPause] public sealed partial class ChitinidComponent : Component { [DataField] - public EntProtoId ChitzitePrototype = "Chitzite"; - - [DataField] - public EntProtoId ChitziteActionId = "ActionChitzite"; - - [DataField] - public EntityUid? ChitziteAction; + public FixedPoint2 AmountAbsorbed = 0f; + /// + /// Once this much damage is absorbed, it will stop healing and require you to cough up chitzite. + /// [DataField] - public FixedPoint2 AmountAbsorbed = 0f; + public FixedPoint2 MaximumAbsorbed = 30f; + /// + /// What damage is healed, by adding, every . + /// This must be negative. + /// [DataField] public DamageSpecifier Healing = new() { @@ -30,12 +34,10 @@ public sealed partial class ChitinidComponent : Component } }; - [DataField] - public FixedPoint2 MaximumAbsorbed = 30f; - [DataField] public TimeSpan UpdateInterval = TimeSpan.FromSeconds(1); [DataField(customTypeSerializer: typeof(TimeOffsetSerializer))] + [AutoPausedField] public TimeSpan NextUpdate; } diff --git a/Content.Server/_DV/Abilities/Chitinid/ChitinidSystem.cs b/Content.Server/_DV/Abilities/Chitinid/ChitinidSystem.cs index 34d8244d5c9..1d2cf0522c9 100644 --- a/Content.Server/_DV/Abilities/Chitinid/ChitinidSystem.cs +++ b/Content.Server/_DV/Abilities/Chitinid/ChitinidSystem.cs @@ -1,97 +1,57 @@ -using Content.Server.Nutrition.Components; -using Content.Shared.Actions; -using Content.Shared.Actions.Events; -using Content.Shared.Audio; +using Content.Shared._DV.Abilities; using Content.Shared.Damage; -using Content.Shared.IdentityManagement; -using Content.Shared.Inventory; using Content.Shared.Mobs.Systems; -using Content.Shared.Popups; -using Robust.Shared.Audio.Systems; using Robust.Shared.Prototypes; using Robust.Shared.Timing; -namespace Content.Server.Abilities.Chitinid; +namespace Content.Server._DV.Abilities.Chitinid; public sealed partial class ChitinidSystem : EntitySystem { - [Dependency] private readonly SharedActionsSystem _actions = default!; - [Dependency] private readonly SharedAudioSystem _audio = default!; - [Dependency] private readonly IPrototypeManager _proto = default!; - [Dependency] private readonly SharedPopupSystem _popup = default!; - [Dependency] private readonly InventorySystem _inventory = default!; [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly IPrototypeManager _proto = default!; + [Dependency] private readonly ItemCougherSystem _cougher = default!; [Dependency] private readonly DamageableSystem _damageable = default!; [Dependency] private readonly MobStateSystem _mobState = default!; public override void Initialize() { - SubscribeLocalEvent(OnChitzite); SubscribeLocalEvent(OnMapInit); + SubscribeLocalEvent(OnItemCoughedUp); } public override void Update(float frameTime) { base.Update(frameTime); var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out var chitinid, out var damageable)) + while (query.MoveNext(out var uid, out var comp, out var damageable)) { - if (_timing.CurTime < chitinid.NextUpdate) + if (_timing.CurTime < comp.NextUpdate) continue; - chitinid.NextUpdate += chitinid.UpdateInterval; + comp.NextUpdate += comp.UpdateInterval; - if (chitinid.AmountAbsorbed >= chitinid.MaximumAbsorbed || _mobState.IsDead(uid)) + if (comp.AmountAbsorbed >= comp.MaximumAbsorbed || _mobState.IsDead(uid)) continue; - if (_damageable.TryChangeDamage(uid, chitinid.Healing, damageable: damageable) is {} delta) - { - chitinid.AmountAbsorbed += -delta.GetTotal().Float(); - if (chitinid.ChitziteAction != null && chitinid.AmountAbsorbed >= chitinid.MaximumAbsorbed) - { - _actions.SetCharges(chitinid.ChitziteAction, 1); // You get the charge back and that's it. Tough. - _actions.SetEnabled(chitinid.ChitziteAction, true); - } - } - } - - var entQuery = EntityQueryEnumerator(); - while (entQuery.MoveNext(out var ent, out var chitzite, out var chitinid)) - { - if (_timing.CurTime < chitzite.NextCough) + if (_damageable.TryChangeDamage(uid, comp.Healing, damageable: damageable) is not {} delta) continue; - Spawn(chitinid.ChitzitePrototype, Transform(ent).Coordinates); - chitinid.AmountAbsorbed = 0f; - RemCompDeferred(ent, chitzite); + // damage healed is subtracted, so the delta is negative. + comp.AmountAbsorbed -= delta.GetTotal(); + if (comp.AmountAbsorbed >= comp.MaximumAbsorbed) + _cougher.EnableAction(uid); } } private void OnMapInit(Entity ent, ref MapInitEvent args) { - if (ent.Comp.ChitziteAction != null) - return; - ent.Comp.NextUpdate = _timing.CurTime + ent.Comp.UpdateInterval; - - _actions.AddAction(ent, ref ent.Comp.ChitziteAction, ent.Comp.ChitziteActionId); } - private void OnChitzite(Entity ent, ref ChitziteActionEvent args) + private void OnItemCoughedUp(Entity ent, ref ItemCoughedUpEvent args) { - if (_inventory.TryGetSlotEntity(ent, "mask", out var maskUid) && - TryComp(maskUid, out var blocker) && - blocker.Enabled) - { - _popup.PopupEntity(Loc.GetString("chitzite-mask", ("mask", maskUid)), ent, ent); - return; - } - - _popup.PopupEntity(Loc.GetString("chitzite-cough", ("name", Identity.Entity(ent, EntityManager))), ent); - _audio.PlayPvs("/Audio/Animals/cat_hiss.ogg", ent, AudioHelpers.WithVariation(0.15f)); - - var chitzite = EnsureComp(ent); - chitzite.NextCough = _timing.CurTime + chitzite.CoughUpTime; - args.Handled = true; + // start healing radiation again + ent.Comp.AmountAbsorbed = 0f; } } diff --git a/Content.Server/_DV/Abilities/Chitinid/CoughingUpChitziteComponent.cs b/Content.Server/_DV/Abilities/Chitinid/CoughingUpChitziteComponent.cs deleted file mode 100644 index 1dae46b9437..00000000000 --- a/Content.Server/_DV/Abilities/Chitinid/CoughingUpChitziteComponent.cs +++ /dev/null @@ -1,14 +0,0 @@ -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; - -namespace Content.Server.Abilities.Chitinid; - -[RegisterComponent, AutoGenerateComponentPause] -public sealed partial class CoughingUpChitziteComponent : Component -{ - [DataField(customTypeSerializer: typeof(TimeOffsetSerializer))] - [AutoPausedField] - public TimeSpan NextCough; - - [DataField] - public TimeSpan CoughUpTime = TimeSpan.FromSeconds(2.15); -} diff --git a/Content.Server/_DV/Abilities/Felinid/FelinidSystem.cs b/Content.Server/_DV/Abilities/Felinid/FelinidSystem.cs new file mode 100644 index 00000000000..47cb910ee47 --- /dev/null +++ b/Content.Server/_DV/Abilities/Felinid/FelinidSystem.cs @@ -0,0 +1,74 @@ +using Content.Server.Body.Components; +using Content.Server.Medical; +using Content.Shared._DV.Abilities; +using Content.Shared._DV.Abilities.Felinid; +using Content.Shared.Chemistry.EntitySystems; +using Content.Shared.Item; +using Content.Shared.StatusEffect; +using Content.Shared.Throwing; +using Robust.Shared.Random; + +namespace Content.Server._DV.Abilities.Felinid; + +/// +/// Handles felinid logic except for fitting in bags. +/// +/// +/// This could be moved to shared if: +/// 1. bloodstream was in shared +/// 2. vomiting was in shared +/// 3. this didn't use RNG. +/// +public sealed class FelinidSystem : SharedFelinidSystem +{ + [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly SharedSolutionContainerSystem _solution = default!; + [Dependency] private readonly VomitSystem _vomit = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnItemCoughedUp); + + SubscribeLocalEvent(OnHairballHit); + SubscribeLocalEvent(OnHairballPickupAttempt); + } + + private void OnItemCoughedUp(Entity ent, ref ItemCoughedUpEvent args) + { + if (!TryComp(ent, out var blood) || blood.ChemicalSolution is not {} solution) + return; + + var item = args.Item; + var hairball = Comp(item); + var purged = _solution.SplitSolution(solution, ent.Comp.PurgedQuantity); + if (_solution.TryGetSolution(item, hairball.SolutionName, out var hairballSolution)) + { + _solution.TryAddSolution(hairballSolution.Value, purged); + } + } + + private void OnHairballHit(Entity ent, ref ThrowDoHitEvent args) + { + TryVomit(ent, args.Target); + } + + private void OnHairballPickupAttempt(Entity ent, ref GettingPickedUpAttemptEvent args) + { + if (TryVomit(ent, args.User)) + args.Cancel(); + } + + private bool TryVomit(Entity ent, EntityUid uid) + { + if (HasComp(uid) || !HasComp(uid)) + return false; + + if (!_random.Prob(ent.Comp.VomitProb)) + return false; + + _vomit.Vomit(uid); + return true; + } +} diff --git a/Content.Shared/_DV/Abilities/CoughingUpItemComponent.cs b/Content.Shared/_DV/Abilities/CoughingUpItemComponent.cs new file mode 100644 index 00000000000..07a4fa995ff --- /dev/null +++ b/Content.Shared/_DV/Abilities/CoughingUpItemComponent.cs @@ -0,0 +1,19 @@ +using Robust.Shared.GameStates; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; + +namespace Content.Shared._DV.Abilities; + +/// +/// Spawns the item from after the coughing sound is finished. +/// +/// +/// Client doesn't care about spawning so the field isn't networked. +/// +[RegisterComponent, NetworkedComponent, Access(typeof(ItemCougherSystem))] +[AutoGenerateComponentPause] +public sealed partial class CoughingUpItemComponent : Component +{ + [DataField(customTypeSerializer: typeof(TimeOffsetSerializer))] + [AutoPausedField] + public TimeSpan NextCough; +} diff --git a/Content.Shared/_DV/Abilities/Felinid/FelinidComponent.cs b/Content.Shared/_DV/Abilities/Felinid/FelinidComponent.cs new file mode 100644 index 00000000000..2aa6f8994a5 --- /dev/null +++ b/Content.Shared/_DV/Abilities/Felinid/FelinidComponent.cs @@ -0,0 +1,20 @@ +using Content.Shared.FixedPoint; +using Robust.Shared.GameStates; + +namespace Content.Shared._DV.Abilities.Felinid; + +/// +/// Felenid god component controls 3 things: +/// 1. When you use to cough up a hairball, it purges chemicals from your bloodstream. +/// 2. Enables the cough hairball action after eating a mouse with FelinidFoodComponent. +/// 3. Full immunity to hairball vomiting chance. +/// +[RegisterComponent, NetworkedComponent, Access(typeof(SharedFelinidSystem))] +public sealed partial class FelinidComponent : Component +{ + /// + /// Quantity of reagents to purge from the bloodstream. + /// + [DataField] + public FixedPoint2 PurgedQuantity = 20; +} diff --git a/Content.Shared/_DV/Abilities/Felinid/FelinidFoodComponent.cs b/Content.Shared/_DV/Abilities/Felinid/FelinidFoodComponent.cs new file mode 100644 index 00000000000..b81573dd1ce --- /dev/null +++ b/Content.Shared/_DV/Abilities/Felinid/FelinidFoodComponent.cs @@ -0,0 +1,16 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared._DV.Abilities.Felinid; + +/// +/// Makes this food let felinids cough up a hairball when eaten. +/// +[RegisterComponent, NetworkedComponent, Access(typeof(SharedFelinidSystem))] +public sealed partial class FelinidFoodComponent : Component +{ + /// + /// Extra hunger to satiate for felinids. + /// + [DataField] + public float BonusHunger = 50f; +} diff --git a/Content.Shared/_DV/Abilities/Felinid/HairballComponent.cs b/Content.Shared/_DV/Abilities/Felinid/HairballComponent.cs new file mode 100644 index 00000000000..fa8b4c0726f --- /dev/null +++ b/Content.Shared/_DV/Abilities/Felinid/HairballComponent.cs @@ -0,0 +1,22 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared._DV.Abilities.Felinid; + +/// +/// Causes players to randomly vomit when trying to pick this up, or when it gets thrown at them. +/// +[RegisterComponent, NetworkedComponent, Access(typeof(SharedFelinidSystem))] +public sealed partial class HairballComponent : Component +{ + /// + /// The solution to put purged chemicals into. + /// + [DataField] + public string SolutionName = "hairball"; + + /// + /// Probability of someone vomiting when picking it up or getting it thrown at them. + /// + [DataField] + public float VomitProb = 0.2f; +} diff --git a/Content.Shared/_DV/Abilities/Felinid/SharedFelinidSystem.cs b/Content.Shared/_DV/Abilities/Felinid/SharedFelinidSystem.cs new file mode 100644 index 00000000000..d8ee9a30efb --- /dev/null +++ b/Content.Shared/_DV/Abilities/Felinid/SharedFelinidSystem.cs @@ -0,0 +1,34 @@ +using Content.Shared._DV.Abilities; +using Content.Shared._DV.Abilities.Felinid; +using Content.Shared.Nutrition; +using Content.Shared.Nutrition.Components; +using Content.Shared.Nutrition.EntitySystems; + +namespace Content.Shared._DV.Abilities.Felinid; + +/// +/// Makes eating enable a felinids hairball action. +/// Other interactions are in the server system. +/// +public abstract class SharedFelinidSystem : EntitySystem +{ + [Dependency] private readonly HungerSystem _hunger = default!; + [Dependency] private readonly ItemCougherSystem _cougher = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnMouseEaten); + } + + private void OnMouseEaten(Entity ent, ref BeforeFullyEatenEvent args) + { + var user = args.User; + if (!HasComp(user) || !TryComp(user, out var hunger)) + return; + + _hunger.ModifyHunger(user, ent.Comp.BonusHunger, hunger); + _cougher.EnableAction(user); + } +} diff --git a/Content.Shared/_DV/Abilities/ItemCougherComponent.cs b/Content.Shared/_DV/Abilities/ItemCougherComponent.cs new file mode 100644 index 00000000000..74936f5232b --- /dev/null +++ b/Content.Shared/_DV/Abilities/ItemCougherComponent.cs @@ -0,0 +1,48 @@ +using Robust.Shared.Audio; +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; + +namespace Content.Shared._DV.Abilities; + +/// +/// Adds an action to cough up an item. +/// Other systems can enable this action when their conditions are met. +/// +[RegisterComponent, NetworkedComponent, Access(typeof(ItemCougherSystem))] +public sealed partial class ItemCougherComponent : Component +{ + /// + /// The item to spawn after the coughing sound plays. + /// + [DataField(required: true)] + public EntProtoId Item; + + /// + /// The action to give the player. + /// + [DataField(required: true)] + public EntProtoId Action; + + [DataField] + public EntityUid? ActionEntity; + + /// + /// Popup to show to everyone when coughing up an item. + /// Gets "name" passed as the identity of the mob. + /// + [DataField(required: true)] + public LocId CoughPopup; + + /// + /// Sound played + /// The sound length controls how long it takes for the item to spawn. + /// + [DataField] + public SoundSpecifier Sound = new SoundPathSpecifier("/Audio/Animals/cat_hiss.ogg") + { + Params = new AudioParams + { + Variation = 0.15f + } + }; +} diff --git a/Content.Shared/_DV/Abilities/ItemCougherSystem.cs b/Content.Shared/_DV/Abilities/ItemCougherSystem.cs new file mode 100644 index 00000000000..d170c613f12 --- /dev/null +++ b/Content.Shared/_DV/Abilities/ItemCougherSystem.cs @@ -0,0 +1,106 @@ +using Content.Shared.Actions; +using Content.Shared.Actions.Events; +using Content.Shared.Clothing.Components; +using Content.Shared.IdentityManagement; +using Content.Shared.Inventory; +using Content.Shared.Popups; +using Robust.Shared.Audio.Systems; +using Robust.Shared.Network; +using Robust.Shared.Timing; + +namespace Content.Shared._DV.Abilities; + +public sealed class ItemCougherSystem : EntitySystem +{ + [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly INetManager _net = default!; + [Dependency] private readonly InventorySystem _inventory = default!; + [Dependency] private readonly SharedActionsSystem _actions = default!; + [Dependency] private readonly SharedAudioSystem _audio = default!; + [Dependency] private readonly SharedPopupSystem _popup = default!; + + private EntityQuery _query; + + public override void Initialize() + { + base.Initialize(); + + _query = GetEntityQuery(); + + SubscribeLocalEvent(OnMapInit); + SubscribeLocalEvent(OnCoughItemAction); + } + + public override void Update(float frameTime) + { + base.Update(frameTime); + + if (_net.IsClient) + return; + + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var coughing, out var comp, out var xform)) + { + if (_timing.CurTime < coughing.NextCough) + continue; + + var spawned = Spawn(comp.Item, xform.Coordinates); + RemCompDeferred(uid, coughing); + + var ev = new ItemCoughedUpEvent(spawned); + RaiseLocalEvent(uid, ref ev); + } + } + + private void OnMapInit(Entity ent, ref MapInitEvent args) + { + if (ent.Comp.ActionEntity != null) + return; + + _actions.AddAction(ent, ref ent.Comp.ActionEntity, ent.Comp.Action); + } + + private void OnCoughItemAction(Entity ent, ref CoughItemActionEvent args) + { + if (_inventory.TryGetSlotEntity(ent, "mask", out var maskUid) && + TryComp(maskUid, out var mask) && + !mask.IsToggled) + { + _popup.PopupClient(Loc.GetString("item-cougher-mask", ("mask", maskUid)), ent, ent); + return; + } + + var msg = Loc.GetString(ent.Comp.CoughPopup, ("name", Identity.Entity(ent, EntityManager))); + _popup.PopupPredicted(msg, ent, ent); + _audio.PlayPredicted(ent.Comp.Sound, ent, ent); + + var path = _audio.GetSound(ent.Comp.Sound); + var coughing = EnsureComp(ent); + coughing.NextCough = _timing.CurTime + _audio.GetAudioLength(path); + args.Handled = true; + } + + /// + /// Adds a charge to the coughing action. + /// Other systems have to call this. + /// + public void EnableAction(Entity ent) + { + if (!_query.Resolve(ent, ref ent.Comp) || ent.Comp.ActionEntity is not {} action) + return; + + _actions.SetCharges(action, 1); + _actions.SetEnabled(action, true); + } +} + +/// +/// Raised on the mob after it coughs up an item. +/// +[ByRefEvent] +public record struct ItemCoughedUpEvent(EntityUid Item); + +/// +/// Action event that must use. +/// +public sealed partial class CoughItemActionEvent : InstantActionEvent; diff --git a/Content.Shared/_DV/Chemistry/Components/BlockInjectionComponent.cs b/Content.Shared/_DV/Chemistry/Components/BlockInjectionComponent.cs new file mode 100644 index 00000000000..321dcfc1445 --- /dev/null +++ b/Content.Shared/_DV/Chemistry/Components/BlockInjectionComponent.cs @@ -0,0 +1,10 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared._DV.Chemistry.Components; + +/// +/// Prevents syringes being used on this entity. +/// Hyposprays are unaffected. +/// +[RegisterComponent, NetworkedComponent] +public sealed partial class BlockInjectionComponent : Component; diff --git a/Resources/Locale/en-US/_DV/abilities/chitinid.ftl b/Resources/Locale/en-US/_DV/abilities/chitinid.ftl index e2e10c0eb4e..87759da4f7c 100644 --- a/Resources/Locale/en-US/_DV/abilities/chitinid.ftl +++ b/Resources/Locale/en-US/_DV/abilities/chitinid.ftl @@ -1,2 +1 @@ -chitzite-mask = Take off your {$mask} first. chitzite-cough = {CAPITALIZE(THE($name))} starts coughing up a hunk of Chitzite! diff --git a/Resources/Locale/en-US/_DV/abilities/item-cougher.ftl b/Resources/Locale/en-US/_DV/abilities/item-cougher.ftl new file mode 100644 index 00000000000..56d80b02f2f --- /dev/null +++ b/Resources/Locale/en-US/_DV/abilities/item-cougher.ftl @@ -0,0 +1 @@ +item-cougher-mask = Take off your {$mask} first. diff --git a/Resources/Locale/en-US/nyanotrasen/abilities/felinid.ftl b/Resources/Locale/en-US/nyanotrasen/abilities/felinid.ftl index 92181194167..ebf1e1c7248 100644 --- a/Resources/Locale/en-US/nyanotrasen/abilities/felinid.ftl +++ b/Resources/Locale/en-US/nyanotrasen/abilities/felinid.ftl @@ -1,7 +1,3 @@ -action-name-hairball = Cough Up Hairball -action-description-hairball = Purge some of your chemstream, and gain a cool hairball to throw at people. - -hairball-mask = Take off your {$mask} first. hairball-cough = {CAPITALIZE(THE($name))} starts coughing up a hairball! action-name-eat-mouse = Eat Mouse diff --git a/Resources/Prototypes/Nyanotrasen/Actions/types.yml b/Resources/Prototypes/Nyanotrasen/Actions/types.yml deleted file mode 100644 index fb8194050af..00000000000 --- a/Resources/Prototypes/Nyanotrasen/Actions/types.yml +++ /dev/null @@ -1,19 +0,0 @@ -- type: entity - id: ActionEatMouse - name: action-name-eat-mouse - description: action-description-eat-mouse - components: - - type: InstantAction - icon: Nyanotrasen/Icons/verbiconfangs.png - event: !type:EatMouseActionEvent - -- type: entity - id: ActionHairball - name: action-name-hairball - description: action-description-hairball - components: - - type: InstantAction - charges: 1 - icon: { sprite: Nyanotrasen/Objects/Specific/Species/felinid.rsi, state: icon } - useDelay: 30 - event: !type:HairballActionEvent diff --git a/Resources/Prototypes/Nyanotrasen/Entities/Mobs/Species/felinid.yml b/Resources/Prototypes/Nyanotrasen/Entities/Mobs/Species/felinid.yml index 7416840a835..c4a5896b1c1 100644 --- a/Resources/Prototypes/Nyanotrasen/Entities/Mobs/Species/felinid.yml +++ b/Resources/Prototypes/Nyanotrasen/Entities/Mobs/Species/felinid.yml @@ -64,6 +64,10 @@ Male: MaleFelinid Female: FemaleFelinid Unsexed: MaleFelinid + - type: ItemCougher + item: Hairball + action: ActionHairball + coughPopup: hairball-cough - type: Felinid - type: NoShoesSilentFootsteps diff --git a/Resources/Prototypes/_DV/Actions/types.yml b/Resources/Prototypes/_DV/Actions/types.yml index fd677762cd9..cceb6ea1e79 100644 --- a/Resources/Prototypes/_DV/Actions/types.yml +++ b/Resources/Prototypes/_DV/Actions/types.yml @@ -46,4 +46,17 @@ maxCharges: 1 icon: { sprite: _DV/Objects/Specific/Species/chitinid.rsi, state: chitzite } useDelay: 300 - event: !type:ChitziteActionEvent + event: !type:CoughItemActionEvent + +- type: entity + id: ActionHairball + name: Cough Up Hairball + description: Purge some of your chemstream, and gain a cool hairball to throw at people. + components: + - type: InstantAction + charges: 1 + icon: + sprite: Nyanotrasen/Objects/Specific/Species/felinid.rsi + state: icon + useDelay: 30 + event: !type:CoughItemActionEvent diff --git a/Resources/Prototypes/_DV/Entities/Mobs/Species/chitinid.yml b/Resources/Prototypes/_DV/Entities/Mobs/Species/chitinid.yml index 0b9a3077fca..b74046adc9c 100644 --- a/Resources/Prototypes/_DV/Entities/Mobs/Species/chitinid.yml +++ b/Resources/Prototypes/_DV/Entities/Mobs/Species/chitinid.yml @@ -151,6 +151,10 @@ sprite: "Effects/creampie.rsi" state: "creampie_moth" visible: false + - type: ItemCougher + item: Chitzite + action: ActionChitzite + coughPopup: chitzite-cough - type: Chitinid - type: BlockInjection From 069dc1e97368d8899755034b4f36933320f45c83 Mon Sep 17 00:00:00 2001 From: Delta-V bot <135767721+DeltaV-Bot@users.noreply.github.com> Date: Thu, 23 Jan 2025 21:56:53 +0100 Subject: [PATCH 11/20] Automatic changelog update --- Resources/Changelog/DeltaVChangelog.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/DeltaVChangelog.yml b/Resources/Changelog/DeltaVChangelog.yml index 2a69de341fa..efc4d1c99a8 100644 --- a/Resources/Changelog/DeltaVChangelog.yml +++ b/Resources/Changelog/DeltaVChangelog.yml @@ -1,12 +1,4 @@ Entries: -- author: noctyrnal - changes: - - message: Walls, Airlocks and Tiles have received new sprites as per a visual resprite - project. - type: Tweak - id: 444 - time: '2024-07-22T19:14:30.0000000+00:00' - url: https://github.com/DeltaV-Station/Delta-v/pull/1470 - author: musicmanvr changes: - message: Added the Home Run Bat for Syndicate operatives. Send your foes flying! @@ -3854,3 +3846,11 @@ id: 943 time: '2025-01-23T18:24:19.0000000+00:00' url: https://github.com/DeltaV-Station/Delta-v/pull/2686 +- author: deltanedas + changes: + - message: Felinids no longer need to use an action to eat mice, just eating them + normally works. + type: Tweak + id: 944 + time: '2025-01-23T20:56:34.0000000+00:00' + url: https://github.com/DeltaV-Station/Delta-v/pull/2790 From 2324562671f9f66a0db1a8fdb42fd89ca77e89da Mon Sep 17 00:00:00 2001 From: Delta-V bot <135767721+DeltaV-Bot@users.noreply.github.com> Date: Sat, 25 Jan 2025 00:45:26 +0100 Subject: [PATCH 12/20] Automatic changelog update --- Resources/Changelog/DeltaVChangelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/DeltaVChangelog.yml b/Resources/Changelog/DeltaVChangelog.yml index efc4d1c99a8..25525bb4154 100644 --- a/Resources/Changelog/DeltaVChangelog.yml +++ b/Resources/Changelog/DeltaVChangelog.yml @@ -1,11 +1,4 @@ Entries: -- author: musicmanvr - changes: - - message: Added the Home Run Bat for Syndicate operatives. Send your foes flying! - type: Add - id: 445 - time: '2024-07-22T19:20:00.0000000+00:00' - url: https://github.com/DeltaV-Station/Delta-v/pull/1476 - author: DangerRevolution changes: - message: Construction of Security Cyborgs now requires extra steps. @@ -3854,3 +3847,10 @@ id: 944 time: '2025-01-23T20:56:34.0000000+00:00' url: https://github.com/DeltaV-Station/Delta-v/pull/2790 +- author: Stop-Signs + changes: + - message: The duster fires faster + type: Tweak + id: 945 + time: '2025-01-24T23:45:07.0000000+00:00' + url: https://github.com/DeltaV-Station/Delta-v/pull/2787 From 13ccf597c267e722bb83554837f8f11bdd829f53 Mon Sep 17 00:00:00 2001 From: beck-thompson <107373427+beck-thompson@users.noreply.github.com> Date: Fri, 24 Jan 2025 17:29:41 -0800 Subject: [PATCH 13/20] Add hostage ops (Nuke ops alternative objective) (#2545) * first commit * Some fixes * final fixes * Partly working * More fixes + you can now win * More fixes * Forget * Final fixes * Update the number of hostages to 4 * Add feedback popups * Use mind rolls like a cool person * bruh * NOW I'm mad * Bruh * :trollface: Signed-off-by: deltanedas <39013340+deltanedas@users.noreply.github.com> * :trollface: Signed-off-by: deltanedas <39013340+deltanedas@users.noreply.github.com> * Bruh I forget --------- Signed-off-by: deltanedas <39013340+deltanedas@users.noreply.github.com> Co-authored-by: deltanedas <@deltanedas:kde.org> Co-authored-by: deltanedas <39013340+deltanedas@users.noreply.github.com> --- .../Rules/Components/NukeopsRuleComponent.cs | 3 +- .../GameTicking/Rules/NukeopsRuleSystem.cs | 35 +++++++++- Content.Server/Nuke/NukeCodePaperSystem.cs | 11 +++ .../_DV/Antag/NukieOperationComponent.cs | 30 ++++++++ .../_DV/Antag/NukieOperationSystem.cs | 70 +++++++++++++++++++ .../NukeHostageFeedbackPopupSystem.cs | 60 ++++++++++++++++ .../KidnapHeadsConditionComponent.cs | 9 +++ .../NukeStationConditionComponent.cs | 9 +++ .../Systems/KidnapHeadsConditionSystem.cs | 68 ++++++++++++++++++ .../Systems/NukeStationConditionSystem.cs | 43 ++++++++++++ .../_DV/Antag/NukieOperationPrototype.cs | 20 ++++++ .../FeedbackPopupInformationComponent.cs | 17 +++++ .../SharedFeedbackOverwatchSystem.cs | 19 ++++- .../AddComponentsImplantComponent.cs | 26 +++++++ .../AddComponentsImplantSystem.cs | 39 +++++++++++ .../AddFactionsImplantComponent.cs | 23 ++++++ .../AddFactions/AddFactionsImplantSystem.cs | 39 +++++++++++ .../feedbackpopup/popups/nukeHostagepopup.ftl | 16 +++++ .../en-US/_DV/nukie-operations/operations.ftl | 6 ++ .../Locale/en-US/_DV/store/uplink-catalog.ftl | 7 ++ .../Entities/Objects/Misc/implanters.yml | 12 ++++ .../Objects/Misc/subdermal_implants.yml | 19 +++++ Resources/Prototypes/GameRules/roundstart.yml | 2 + .../_DV/Catalog/Fills/Boxes/general.yml | 46 +++++++++++- .../Prototypes/_DV/Catalog/uplink_catalog.yml | 43 ++++++++++++ .../feedbackpopupsNukeHostage.yml | 26 +++++++ .../Prototypes/_DV/Objectives/nukies.yml | 66 +++++++++++++++++ Resources/Prototypes/_DV/ai_factions.yml | 3 + Resources/Prototypes/ai_factions.yml | 2 + 29 files changed, 763 insertions(+), 6 deletions(-) create mode 100644 Content.Server/_DV/Antag/NukieOperationComponent.cs create mode 100644 Content.Server/_DV/Antag/NukieOperationSystem.cs create mode 100644 Content.Server/_DV/FeedbackPopup/NukeHostageFeedbackPopupSystem.cs create mode 100644 Content.Server/_DV/Objectives/Components/KidnapHeadsConditionComponent.cs create mode 100644 Content.Server/_DV/Objectives/Components/NukeStationConditionComponent.cs create mode 100644 Content.Server/_DV/Objectives/Systems/KidnapHeadsConditionSystem.cs create mode 100644 Content.Server/_DV/Objectives/Systems/NukeStationConditionSystem.cs create mode 100644 Content.Shared/_DV/Antag/NukieOperationPrototype.cs create mode 100644 Content.Shared/_DV/FeedbackOverwatch/FeedbackPopupInformationComponent.cs create mode 100644 Content.Shared/_DV/Implants/AddComponentsImplant/AddComponentsImplantComponent.cs create mode 100644 Content.Shared/_DV/Implants/AddComponentsImplant/AddComponentsImplantSystem.cs create mode 100644 Content.Shared/_DV/Implants/AddFactions/AddFactionsImplantComponent.cs create mode 100644 Content.Shared/_DV/Implants/AddFactions/AddFactionsImplantSystem.cs create mode 100644 Resources/Locale/en-US/_DV/feedbackpopup/popups/nukeHostagepopup.ftl create mode 100644 Resources/Locale/en-US/_DV/nukie-operations/operations.ftl create mode 100644 Resources/Prototypes/_DV/FeedbackPopup/feedbackpopupsNukeHostage.yml create mode 100644 Resources/Prototypes/_DV/Objectives/nukies.yml diff --git a/Content.Server/GameTicking/Rules/Components/NukeopsRuleComponent.cs b/Content.Server/GameTicking/Rules/Components/NukeopsRuleComponent.cs index 5626f11e0e3..c66161d92e5 100644 --- a/Content.Server/GameTicking/Rules/Components/NukeopsRuleComponent.cs +++ b/Content.Server/GameTicking/Rules/Components/NukeopsRuleComponent.cs @@ -141,5 +141,6 @@ public enum WinCondition : byte NukiesAbandoned, AllNukiesDead, SomeNukiesAlive, - AllNukiesAlive + AllNukiesAlive, + NukiesKidnappedHeads, // DeltaV - Hostage ops } diff --git a/Content.Server/GameTicking/Rules/NukeopsRuleSystem.cs b/Content.Server/GameTicking/Rules/NukeopsRuleSystem.cs index e22626594f6..9ebbd9be8e8 100644 --- a/Content.Server/GameTicking/Rules/NukeopsRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/NukeopsRuleSystem.cs @@ -1,3 +1,5 @@ +using Content.Server._DV.Objectives.Components; // DeltaV +using Content.Server._DV.Objectives.Systems; // DeltaV using Content.Server.Antag; using Content.Server.Communications; using Content.Server.GameTicking.Rules.Components; @@ -37,6 +39,8 @@ public sealed class NukeopsRuleSystem : GameRuleSystem [Dependency] private readonly RoundEndSystem _roundEndSystem = default!; [Dependency] private readonly StoreSystem _store = default!; [Dependency] private readonly TagSystem _tag = default!; + [Dependency] private readonly KidnapHeadsConditionSystem _kidnap = default!; // DeltaV + [Dependency] private readonly SharedMapSystem _map = default!; // DeltaV [ValidatePrototypeId] private const string TelecrystalCurrencyPrototype = "Telecrystal"; @@ -49,6 +53,7 @@ public override void Initialize() base.Initialize(); SubscribeLocalEvent(OnNukeExploded); + SubscribeLocalEvent(OnFTLCompleted); // DeltaV - Kidnap heads objective SubscribeLocalEvent(OnRunLevelChanged); SubscribeLocalEvent(OnNukeDisarm); @@ -156,6 +161,34 @@ private void OnNukeExploded(NukeExplodedEvent ev) } } + // DeltaV - Kidnap heads nukie objective + private void OnFTLCompleted(Entity ent, ref FTLCompletedEvent args) + { + var query = QueryActiveRules(); + while (query.MoveNext(out var uid, out _, out var nukeops, out _)) + { + // Get the nukie outpost map. + if (!TryComp(uid, out var ruleGridsComp) || ruleGridsComp.Map == null) + return; + + // Make sure your on the same map as the nukie outposts map. + if (args.MapUid == _map.GetMap(ruleGridsComp.Map.Value)) + { + // Now check of the kidnap heads objective is complete... (Yes this is suspect) + var objectives = EntityQueryEnumerator(); + if (!objectives.MoveNext(out var objUid, out var kidnapHeads)) // No kidnap head objectives + return; + + if (!_kidnap.IsCompleted((objUid, kidnapHeads))) + return; + + nukeops.WinConditions.Add(WinCondition.NukiesKidnappedHeads); + SetWinType((uid, nukeops), WinType.OpsMajor); + _roundEndSystem.EndRound(); + } + } + } + private void OnRunLevelChanged(GameRunLevelChangedEvent ev) { if (ev.New is not GameRunLevel.PostRound) @@ -487,7 +520,7 @@ private void OnAfterAntagEntSelected(Entity ent, ref After private void OnGetBriefing(Entity role, ref GetBriefingEvent args) { // TODO Different character screen briefing for the 3 nukie types - args.Append(Loc.GetString("nukeops-briefing")); + // args.Append(Loc.GetString("nukeops-briefing")); Delta-V - Nukie operations take care of this. } /// diff --git a/Content.Server/Nuke/NukeCodePaperSystem.cs b/Content.Server/Nuke/NukeCodePaperSystem.cs index aac2d2361d0..c0961bf1672 100644 --- a/Content.Server/Nuke/NukeCodePaperSystem.cs +++ b/Content.Server/Nuke/NukeCodePaperSystem.cs @@ -1,4 +1,5 @@ using System.Diagnostics.CodeAnalysis; +using Content.Server._DV.Antag; // DeltaV using Content.Server.Chat.Systems; using Content.Server.Fax; using Content.Shared.Fax.Components; @@ -35,6 +36,16 @@ private void SetupPaper(EntityUid uid, NukeCodePaperComponent? component = null, if (!Resolve(uid, ref component)) return; + // DeltaV - Not the best way of doing this + var evnt = new GetNukeCodePaperWriting(); + RaiseLocalEvent(ref evnt); + if (evnt.ToWrite != null) + { + if (TryComp(uid, out var deltavpaperComp)) + _paper.SetContent((uid, deltavpaperComp), evnt.ToWrite); + return; + } + // DeltaV - End if (TryGetRelativeNukeCode(uid, out var paperContent, station, onlyCurrentStation: component.AllNukesAvailable)) { if (TryComp(uid, out var paperComp)) diff --git a/Content.Server/_DV/Antag/NukieOperationComponent.cs b/Content.Server/_DV/Antag/NukieOperationComponent.cs new file mode 100644 index 00000000000..e3ce8a4a122 --- /dev/null +++ b/Content.Server/_DV/Antag/NukieOperationComponent.cs @@ -0,0 +1,30 @@ +using Content.Shared._DV.Antag; +using Content.Shared.Random; +using Robust.Shared.Prototypes; + +namespace Content.Server._DV.Antag; + +/// +/// Component holds what operations are possible and their weights. +/// +[RegisterComponent, Access(typeof(NukieOperationSystem))] +public sealed partial class NukieOperationComponent : Component +{ + /// + /// The different nukie operations. + /// + [DataField(required: true)] + public ProtoId Operations; + + /// + /// The chosen operation. Is set after the first nukie spawns. + /// + [DataField] + public ProtoId? ChosenOperation; +} + +/// +/// Event to get update the nuke code paper to not actually have the code anymore. +/// +[ByRefEvent] +public record struct GetNukeCodePaperWriting(string? ToWrite); diff --git a/Content.Server/_DV/Antag/NukieOperationSystem.cs b/Content.Server/_DV/Antag/NukieOperationSystem.cs new file mode 100644 index 00000000000..6c3a8c8c37f --- /dev/null +++ b/Content.Server/_DV/Antag/NukieOperationSystem.cs @@ -0,0 +1,70 @@ +using Content.Server.Antag; +using Content.Server.Objectives; +using Content.Shared._DV.FeedbackOverwatch; +using Content.Shared.Mind; +using Content.Shared.Random.Helpers; +using Robust.Shared.Prototypes; +using Robust.Shared.Random; + +namespace Content.Server._DV.Antag; + +public sealed class NukieOperationSystem : EntitySystem +{ + [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly SharedMindSystem _mind = default!; + [Dependency] private readonly ObjectivesSystem _objectives = default!; + [Dependency] private readonly IPrototypeManager _proto = default!; + [Dependency] private readonly SharedFeedbackOverwatchSystem _feedback = default!; + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnAntagSelected); + SubscribeLocalEvent(OnNukeCodePaperWritingEvent); + } + + private void OnAntagSelected(Entity ent, ref AfterAntagEntitySelectedEvent args) + { + // Yes this is bad, but I couldn't easily find an event that would work. + if (ent.Comp.ChosenOperation == null) + { + if (!_proto.TryIndex(ent.Comp.Operations, out var opProto)) + return; + + ent.Comp.ChosenOperation = _random.Pick(opProto.Weights); + } + + if (!_mind.TryGetMind(args.Session, out var mindId, out var mind)) + return; + + if (!_proto.TryIndex(ent.Comp.ChosenOperation, out var chosenOp)) + return; + + foreach (var objectiveProto in chosenOp.OperationObjectives) + { + if (!_objectives.TryCreateObjective((mindId, mind), objectiveProto, out var objective)) + { + Log.Error("Couldn't create objective for nukie: " + mindId); // This should never happen. + continue; + } + + _mind.AddObjective(mindId, mind, objective.Value); + + // TODO: Remove once enough feedback has been received! + if (objectiveProto.Id == "KidnapHeadsObjective") + _feedback.SendPopupMind(mindId, "NukieHostageRoundStartPopup"); + } + } + + private void OnNukeCodePaperWritingEvent(ref GetNukeCodePaperWriting ev) + { + // This is suspect AT BEST + var query = EntityQueryEnumerator(); + while (query.MoveNext(out _, out var nukieOperation)) // this should only loop once. + { + if (!_proto.TryIndex(nukieOperation.ChosenOperation, out var opProto) || opProto.NukeCodePaperOverride == null) + continue; + ev.ToWrite = Loc.GetString(opProto.NukeCodePaperOverride); + } + } +} diff --git a/Content.Server/_DV/FeedbackPopup/NukeHostageFeedbackPopupSystem.cs b/Content.Server/_DV/FeedbackPopup/NukeHostageFeedbackPopupSystem.cs new file mode 100644 index 00000000000..eff4da3673d --- /dev/null +++ b/Content.Server/_DV/FeedbackPopup/NukeHostageFeedbackPopupSystem.cs @@ -0,0 +1,60 @@ +using Content.Server._DV.Objectives.Components; +using Content.Shared._DV.FeedbackOverwatch; +using Content.Shared.GameTicking; +using Content.Shared.Mind; +using Content.Shared.Mobs; +using Content.Shared.Roles; +using Content.Server.Roles; + +namespace Content.Server._DV.FeedbackPopup; + +/// +/// System to get feedback on the new objective! +/// +public sealed class NukeHostageFeedbackPopupSystem : EntitySystem +{ + [Dependency] private readonly SharedMindSystem _mind = default!; + [Dependency] private readonly SharedFeedbackOverwatchSystem _feedback = default!; + [Dependency] private readonly SharedRoleSystem _role = default!; + + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(OnRoundEnd); + SubscribeLocalEvent(OnMobStateChanged); + } + + private void OnRoundEnd(RoundEndMessageEvent ev) + { + if (!IsHostageOps()) + return; + + var allMinds = _mind.GetAliveHumans(); + + foreach (var mind in allMinds) + { + if (mind.Comp.OwnedEntity != null && _role.MindHasRole(mind)) + _feedback.SendPopupMind(mind, "NukieHostageRoundEndPopup"); + else + _feedback.SendPopupMind(mind, "NukieHostageRoundEndCrewPopup"); + } + } + + private void OnMobStateChanged(MobStateChangedEvent args) + { + if (args.NewMobState != MobState.Dead || !_mind.TryGetMind(args.Target, out var mindUid, out _) || !IsHostageOps()) + return; + + if (_role.MindHasRole(mindUid)) + _feedback.SendPopup(args.Target, "NukieHostageRoundEndPopup"); + } + + + /// + /// If even one person has the kidnap heads objective this will return true. + /// + private bool IsHostageOps() + { + return EntityQueryEnumerator().MoveNext(out _); + } +} diff --git a/Content.Server/_DV/Objectives/Components/KidnapHeadsConditionComponent.cs b/Content.Server/_DV/Objectives/Components/KidnapHeadsConditionComponent.cs new file mode 100644 index 00000000000..531644b8eff --- /dev/null +++ b/Content.Server/_DV/Objectives/Components/KidnapHeadsConditionComponent.cs @@ -0,0 +1,9 @@ +using Content.Server._DV.Objectives.Systems; + +namespace Content.Server._DV.Objectives.Components; + +/// +/// Kidnap some number of heads. Use the NumberObjective to set the exact number +/// +[RegisterComponent, Access(typeof(KidnapHeadsConditionSystem))] +public sealed partial class KidnapHeadsConditionComponent: Component; diff --git a/Content.Server/_DV/Objectives/Components/NukeStationConditionComponent.cs b/Content.Server/_DV/Objectives/Components/NukeStationConditionComponent.cs new file mode 100644 index 00000000000..55762fc9a23 --- /dev/null +++ b/Content.Server/_DV/Objectives/Components/NukeStationConditionComponent.cs @@ -0,0 +1,9 @@ +using Content.Server._DV.Objectives.Systems; + +namespace Content.Server._DV.Objectives.Components; + +/// +/// For nuclear operatives trying to nuke the station. Should only be completed if the correct station is exploded. +/// +[RegisterComponent, Access(typeof(NukeStationConditionSystem))] +public sealed partial class NukeStationConditionComponent : Component; diff --git a/Content.Server/_DV/Objectives/Systems/KidnapHeadsConditionSystem.cs b/Content.Server/_DV/Objectives/Systems/KidnapHeadsConditionSystem.cs new file mode 100644 index 00000000000..10502d7aa56 --- /dev/null +++ b/Content.Server/_DV/Objectives/Systems/KidnapHeadsConditionSystem.cs @@ -0,0 +1,68 @@ +using Content.Server._DV.Objectives.Components; +using Content.Server.Objectives.Systems; +using Content.Server.Revolutionary.Components; +using Content.Shared.Cuffs; +using Content.Shared.Cuffs.Components; +using Content.Shared.Mind; +using Content.Shared.Objectives.Components; + +namespace Content.Server._DV.Objectives.Systems; + +public sealed class KidnapHeadsConditionSystem : EntitySystem +{ + [Dependency] private readonly SharedMindSystem _mind = default!; + [Dependency] private readonly NumberObjectiveSystem _number = default!; + [Dependency] private readonly SharedCuffableSystem _cuffable = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnGetProgress); + } + + private void OnGetProgress(Entity condition, ref ObjectiveGetProgressEvent args) + { + args.Progress = GetProgress(condition); + } + + public float GetProgress(Entity condition) + { + GetTotalAndCuffedHeads(out var totalHeads, out var cuffedHeads); + + if (totalHeads == 0) + return 1.0f; + + return (float) cuffedHeads / Math.Min(totalHeads, _number.GetTarget(condition)); + } + + public bool IsCompleted(Entity condition) + { + GetTotalAndCuffedHeads(out var totalHeads, out var cuffedHeads); + if (totalHeads == 0) + return false; + + return cuffedHeads == Math.Min(totalHeads, _number.GetTarget(condition)); + } + + private void GetTotalAndCuffedHeads(out int totalHeads, out int cuffedHeads) + { + var allHumanMinds = _mind.GetAliveHumans(); + totalHeads = 0; + cuffedHeads = 0; + foreach (var mind in allHumanMinds) + { + if (mind.Comp.OwnedEntity is not { } mob) + continue; + + if (!HasComp(mob)) + continue; + totalHeads++; + + if (!TryComp(mob, out var cuffable) || !_cuffable.IsCuffed((mob, cuffable))) + continue; + cuffedHeads++; + } + } +} + diff --git a/Content.Server/_DV/Objectives/Systems/NukeStationConditionSystem.cs b/Content.Server/_DV/Objectives/Systems/NukeStationConditionSystem.cs new file mode 100644 index 00000000000..b851a66a7aa --- /dev/null +++ b/Content.Server/_DV/Objectives/Systems/NukeStationConditionSystem.cs @@ -0,0 +1,43 @@ +using Content.Server._DV.Objectives.Components; +using Content.Server.GameTicking.Rules.Components; +using Content.Server.Nuke; +using Content.Server.Objectives.Systems; +using Content.Server.Station.Components; +using Content.Shared.Objectives.Components; + +namespace Content.Server._DV.Objectives.Systems; + +public sealed class NukeStationConditionSystem : EntitySystem +{ + [Dependency] private readonly CodeConditionSystem _codeCondition = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnNukeExploded); + } + + private void OnNukeExploded(NukeExplodedEvent ev) + { + var nukeOpsQuery = EntityQueryEnumerator(); + while (nukeOpsQuery.MoveNext(out _, out var nukeopsRule)) // this should only loop once. + { + if (!TryComp(nukeopsRule.TargetStation, out var data)) + return; + + foreach (var grid in data.Grids) + { + if (grid != ev.OwningStation) // They nuked the target station! + continue; + + // Set all the objectives to true. + var nukeStationQuery = EntityQueryEnumerator(); + while (nukeStationQuery.MoveNext(out var uid, out _)) + { + _codeCondition.SetCompleted(uid); + } + } + } + } +} diff --git a/Content.Shared/_DV/Antag/NukieOperationPrototype.cs b/Content.Shared/_DV/Antag/NukieOperationPrototype.cs new file mode 100644 index 00000000000..c0dc4007fb5 --- /dev/null +++ b/Content.Shared/_DV/Antag/NukieOperationPrototype.cs @@ -0,0 +1,20 @@ +using Robust.Shared.Prototypes; + +namespace Content.Shared._DV.Antag; + +/// +/// This is for nukie operations. E.g nuke the station or kidnap x number of heads. +/// +[Prototype] +public sealed partial class NukieOperationPrototype : IPrototype +{ + /// + [IdDataField] + public string ID { get; } = default!; + + [DataField(required: true)] + public List OperationObjectives = new(); + + [DataField] + public LocId? NukeCodePaperOverride; +} diff --git a/Content.Shared/_DV/FeedbackOverwatch/FeedbackPopupInformationComponent.cs b/Content.Shared/_DV/FeedbackOverwatch/FeedbackPopupInformationComponent.cs new file mode 100644 index 00000000000..46fe6b94736 --- /dev/null +++ b/Content.Shared/_DV/FeedbackOverwatch/FeedbackPopupInformationComponent.cs @@ -0,0 +1,17 @@ +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; + +namespace Content.Shared._DV.FeedbackOverwatch; + +/// +/// Component that stores information about feedback popups on a players mind. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class FeedbackPopupInformationComponent : Component +{ + /// + /// List of popups that this mind has already seen. + /// + [DataField, AutoNetworkedField] + public HashSet> SeenPopups = new(); +} diff --git a/Content.Shared/_DV/FeedbackOverwatch/SharedFeedbackOverwatchSystem.cs b/Content.Shared/_DV/FeedbackOverwatch/SharedFeedbackOverwatchSystem.cs index f12bf691201..2add4971b8b 100644 --- a/Content.Shared/_DV/FeedbackOverwatch/SharedFeedbackOverwatchSystem.cs +++ b/Content.Shared/_DV/FeedbackOverwatch/SharedFeedbackOverwatchSystem.cs @@ -43,8 +43,9 @@ private void LoadPrototypes() ///
/// UID of the entity the player is controlling. /// Popup to send them. + /// If true, if the popup is sent to the same mind again, it will not be displayed. /// Returns true if the popup message was sent to the client successfully. - public bool SendPopup(EntityUid? uid, ProtoId popupPrototype) + public bool SendPopup(EntityUid? uid, ProtoId popupPrototype, bool sendOnlyOnce = true) { if (uid == null) return false; @@ -52,7 +53,7 @@ public bool SendPopup(EntityUid? uid, ProtoId popupProto if (!_mind.TryGetMind(uid.Value, out var mindUid, out _)) return false; - return SendPopupMind(mindUid, popupPrototype); + return SendPopupMind(mindUid, popupPrototype, sendOnlyOnce); } /// @@ -60,12 +61,24 @@ public bool SendPopup(EntityUid? uid, ProtoId popupProto /// /// UID of the players mind. /// Popup to send them. + /// If true, if the popup is sent to the same mind again, it will not be displayed. /// Returns true if the popup message was sent to the client successfully. - public bool SendPopupMind(EntityUid? uid, ProtoId popupPrototype) + public bool SendPopupMind(EntityUid? uid, ProtoId popupPrototype, bool sendOnlyOnce = true) { if (uid == null) return false; + if (sendOnlyOnce) + { + EnsureComp(uid.Value, out var feedbackInfoComp); + + // If it's already been seen, don't resend it. + if (!feedbackInfoComp.SeenPopups.Add(popupPrototype)) + return false; + + Dirty(uid.Value, feedbackInfoComp); + } + if (!_mind.TryGetSession(uid, out var session)) return false; diff --git a/Content.Shared/_DV/Implants/AddComponentsImplant/AddComponentsImplantComponent.cs b/Content.Shared/_DV/Implants/AddComponentsImplant/AddComponentsImplantComponent.cs new file mode 100644 index 00000000000..5be9fc06e5a --- /dev/null +++ b/Content.Shared/_DV/Implants/AddComponentsImplant/AddComponentsImplantComponent.cs @@ -0,0 +1,26 @@ +using Robust.Shared.Prototypes; + +namespace Content.Shared._DV.Implants.AddComponentsImplant; + +/// +/// When added to an implanter will add the passed in components to the implanted entity. +/// +/// +/// Warning: Multiple implants with this component adding the same components will not properly remove components +/// unless removed in the inverse order of their injection (Last in, first out). +/// +[RegisterComponent] +public sealed partial class AddComponentsImplantComponent : Component +{ + /// + /// What components will be added to the entity. If the component already exists, it will be skipped. + /// + [DataField(required: true)] + public ComponentRegistry ComponentsToAdd; + + /// + /// What components were added to the entity after implanted. Is used to know what components to remove. + /// + [DataField] + public ComponentRegistry AddedComponents = new(); +} diff --git a/Content.Shared/_DV/Implants/AddComponentsImplant/AddComponentsImplantSystem.cs b/Content.Shared/_DV/Implants/AddComponentsImplant/AddComponentsImplantSystem.cs new file mode 100644 index 00000000000..2e5c19f88f3 --- /dev/null +++ b/Content.Shared/_DV/Implants/AddComponentsImplant/AddComponentsImplantSystem.cs @@ -0,0 +1,39 @@ +using Robust.Shared.Containers; +using Content.Shared.Implants; + +namespace Content.Shared._DV.Implants.AddComponentsImplant; + +public sealed class AddComponentsImplantSystem : EntitySystem +{ + [Dependency] private readonly IComponentFactory _factory = default!; + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(OnImplantImplantedEvent); + SubscribeLocalEvent(OnRemove); + } + + private void OnImplantImplantedEvent(Entity ent, ref ImplantImplantedEvent args) + { + if (args.Implanted is not {} target) + return; + + foreach (var component in ent.Comp.ComponentsToAdd) + { + // Don't add the component if it already exists + if (EntityManager.HasComponent(target, _factory.GetComponent(component.Key).GetType())) + continue; + + EntityManager.AddComponent(target, component.Value); + ent.Comp.AddedComponents.Add(component.Key, component.Value); + } + } + + private void OnRemove(Entity ent, ref EntGotRemovedFromContainerMessage args) + { + EntityManager.RemoveComponents(args.Container.Owner, ent.Comp.AddedComponents); + + // Clear the list so the implant can be reused. + ent.Comp.AddedComponents.Clear(); + } +} diff --git a/Content.Shared/_DV/Implants/AddFactions/AddFactionsImplantComponent.cs b/Content.Shared/_DV/Implants/AddFactions/AddFactionsImplantComponent.cs new file mode 100644 index 00000000000..af9db77d911 --- /dev/null +++ b/Content.Shared/_DV/Implants/AddFactions/AddFactionsImplantComponent.cs @@ -0,0 +1,23 @@ +using Content.Shared.NPC.Prototypes; +using Robust.Shared.Prototypes; + +namespace Content.Shared._DV.Implants.AddFactions; + +/// +/// Will add all the factions to the person being implanted. +/// +[RegisterComponent] +public sealed partial class AddFactionsImplantComponent : Component +{ + /// + /// These factions will be added when implanted. + /// + [DataField(required: true)] + public HashSet> Factions; + + /// + /// These are the factions that were actually added. Used know what factions to remove when the implant is removed. + /// + [DataField] + public HashSet> AddedFactions = new(); +} diff --git a/Content.Shared/_DV/Implants/AddFactions/AddFactionsImplantSystem.cs b/Content.Shared/_DV/Implants/AddFactions/AddFactionsImplantSystem.cs new file mode 100644 index 00000000000..7717a1e5a75 --- /dev/null +++ b/Content.Shared/_DV/Implants/AddFactions/AddFactionsImplantSystem.cs @@ -0,0 +1,39 @@ +using Content.Shared.Implants; +using Content.Shared.NPC.Systems; +using Robust.Shared.Containers; + +namespace Content.Shared._DV.Implants.AddFactions; + +public sealed class AddFactionsImplantSystem : EntitySystem +{ + [Dependency] private readonly NpcFactionSystem _npc = default!; + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(OnImplantImplantedEvent); + SubscribeLocalEvent(OnRemove); + } + + private void OnImplantImplantedEvent(Entity ent, ref ImplantImplantedEvent args) + { + if (args.Implanted is not {} target) + return; + + foreach (var faction in ent.Comp.Factions) + { + if (_npc.IsMember(target, faction)) // If it's already in that faction, skip this. + continue; + + _npc.AddFaction(target, faction); + ent.Comp.AddedFactions.Add(faction); + } + } + + private void OnRemove(Entity ent, ref EntGotRemovedFromContainerMessage args) + { + foreach (var faction in ent.Comp.AddedFactions) + _npc.RemoveFaction(args.Container.Owner, faction); + + ent.Comp.AddedFactions.Clear(); + } +} diff --git a/Resources/Locale/en-US/_DV/feedbackpopup/popups/nukeHostagepopup.ftl b/Resources/Locale/en-US/_DV/feedbackpopup/popups/nukeHostagepopup.ftl new file mode 100644 index 00000000000..475e59d5ada --- /dev/null +++ b/Resources/Locale/en-US/_DV/feedbackpopup/popups/nukeHostagepopup.ftl @@ -0,0 +1,16 @@ +# Round start nukie +feedbackpopup-hostage-nukie-start-name = Nukie-Hostage-START +feedbackpopup-hostage-nukie-start-title = [bold]New Nuke-Ops objective[/bold] +feedbackpopup-hostage-nukie-start-description-0 = You rolled the new hostage nukie objective! This is a new objective we are testing for nuke ops. This is at the very early stages of development, so any feedback is good. Expect bugs (Please report them <3)! +feedbackpopup-hostage-nukie-start-description-1 = To complete the objective, cuff the required amount of heads (If there aren't that many on the station the current amount of heads will be all that is required) and FTL warp back to the outpost. +feedbackpopup-hostage-nukie-start-description-2 = At the [bold]end of the round[/bold] you will get a feedback form. + +# On death, or game end nukie +feedbackpopup-hostage-nukie-end-name = Nukie-Hostage-NUKIE +feedbackpopup-hostage-nukie-end-title = [bold]Hostage objective feedback![/bold] +feedbackpopup-hostage-nukie-end-description-0 = Thanks for play testing our new nuke ops objective! If you would like to share any feedback about this feature, please comment it below. We would like to hear what you liked or didn't like, and how you think this feature could be improved. + +# Crew popup on round end. +feedbackpopup-hostage-crew-end-name = Nukie-Hostage-CREW +feedbackpopup-hostage-crew-end-title = [bold]Hostage objective feedback (Crew)![/bold] + diff --git a/Resources/Locale/en-US/_DV/nukie-operations/operations.ftl b/Resources/Locale/en-US/_DV/nukie-operations/operations.ftl new file mode 100644 index 00000000000..b264291679f --- /dev/null +++ b/Resources/Locale/en-US/_DV/nukie-operations/operations.ftl @@ -0,0 +1,6 @@ +# Kidnap heads objective +nukie-operations-kidnap-heads-nuke-codes-override = This is a hostage operation. Look at your objectives for more information. It is recommended to buy hostage implants and handcuffs from your uplink. [color=red]To complete your objective you must FTL back to your outpost with the required number of heads restrained[/color]. +nukie-operations-kidnap-heads-objective-title = Cut off the head. +nukie-operations-kidnap-heads-objective-descript = We need to you kidnap {$count} heads of staff from the station. We only care about the heads, any crew who dies is just collateral. + +nukeops-cond-nukieskidnappedheads = The nuclear operative kidnapped the heads of the station. diff --git a/Resources/Locale/en-US/_DV/store/uplink-catalog.ftl b/Resources/Locale/en-US/_DV/store/uplink-catalog.ftl index e3f6a7a81ad..fa8e9fc2886 100644 --- a/Resources/Locale/en-US/_DV/store/uplink-catalog.ftl +++ b/Resources/Locale/en-US/_DV/store/uplink-catalog.ftl @@ -15,6 +15,9 @@ uplink-syndicate-radio-implanter-desc = A cranial implant that lets you talk on uplink-syndicate-radio-implanter-bundle-name = Syndicate Radio Implanter Bundle uplink-syndicate-radio-implanter-bundle-desc = Two implanters for the price of one and a half! Share one with your Syndicate friend. +uplink-syndicate-hostage-implanter-bundle-name = Hostage implant bundle +uplink-syndicate-hostage-implanter-bundle-desc = These implants pacify when injected and also allow the hostages to enter your shuttle without being shot by turrets! + uplink-doorjack-name = Airlock Access Override uplink-doorjack-desc = A specialized cryptographic sequencer, designed solely to doorjack NanoTrasen's updated airlocks. Does not tamper with anything else. @@ -39,3 +42,7 @@ uplink-objective-syndicate-board-desc = Its expensive, don't lose it! uplink-dead-mans-signaller-name = Dead Man's Signaller uplink-dead-mans-signaller-desc = A device that if armed, will send a signal to any linked devices (such as bombs) when it is dropped or put away. + +# Objectives +uplink-syndicate-handcuff-bundle-name = Handcuff implant bundle +uplink-syndicate-handcuff-bundle-desc = Includes 10 metal handcuffs. We recommended you share with your friends! diff --git a/Resources/Prototypes/Entities/Objects/Misc/implanters.yml b/Resources/Prototypes/Entities/Objects/Misc/implanters.yml index beffe8959a6..ee3913c4aa2 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/implanters.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/implanters.yml @@ -254,3 +254,15 @@ components: - type: Implanter implant: MindShieldImplant + +# Nukie implants + +- type: entity + id: HostageImplanter + suffix: hostage + parent: BaseImplantOnlyImplanterSyndi + components: + - type: Implanter + implant: HostageImplant + implantTime: 20 + drawTime: 15 diff --git a/Resources/Prototypes/Entities/Objects/Misc/subdermal_implants.yml b/Resources/Prototypes/Entities/Objects/Misc/subdermal_implants.yml index 9ae08dfa74a..b9ce4411b21 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/subdermal_implants.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/subdermal_implants.yml @@ -330,3 +330,22 @@ permanent: false # DeltaV - let peaceful revs etc remove mindshields addedComponents: # DeltaV - replaces mindshield tag logic - type: MindShield + +# Nukie implants + +- type: entity + parent: BaseSubdermalImplant + id: HostageImplant + name: hostage implant + description: Perfect for all your hostage ops needs! Allows the implanted entity to be ignored by syndicate turrets. + categories: [ HideSpawnMenu ] + components: + - type: SubdermalImplant + - type: AddComponentsImplant + componentsToAdd: + - type: Pacified + disallowDisarm: true + disallowAllCombat: true + - type: AddFactionsImplant + factions: + - Hostage diff --git a/Resources/Prototypes/GameRules/roundstart.yml b/Resources/Prototypes/GameRules/roundstart.yml index 95c44e616a0..d136c44f40e 100644 --- a/Resources/Prototypes/GameRules/roundstart.yml +++ b/Resources/Prototypes/GameRules/roundstart.yml @@ -96,6 +96,8 @@ minPlayers: 20 - type: LoadMapRule mapPath: /Maps/Nonstations/nukieplanet.yml + - type: NukieOperation # DeltaV - Nukie operations! + operations: NukieOperations - type: AntagSelection selectionTime: PrePlayerSpawn definitions: diff --git a/Resources/Prototypes/_DV/Catalog/Fills/Boxes/general.yml b/Resources/Prototypes/_DV/Catalog/Fills/Boxes/general.yml index aaab0d11936..7ea998369c7 100644 --- a/Resources/Prototypes/_DV/Catalog/Fills/Boxes/general.yml +++ b/Resources/Prototypes/_DV/Catalog/Fills/Boxes/general.yml @@ -16,7 +16,7 @@ whitelist: components: - EncryptionKey - + - type: entity name: justice encryption key box parent: BoxEncryptionKeyPassenger @@ -42,3 +42,47 @@ contents: - id: SyndicateRadioImplanter amount: 2 + +- type: entity + name: syndicate hostage implanter box + parent: BoxCardboard + id: BoxSyndicateHostageImplanter + description: Contains hostage implants. + components: + - type: Sprite + layers: + - state: box_of_doom + - state: implant + - type: Storage + maxItemSize: Small + grid: + - 0,0,2,3 + whitelist: + components: + - Implanter + - type: StorageFill + contents: + - id: HostageImplanter + amount: 6 + +- type: entity + name: syndicate handcuff box + parent: BoxCardboard + id: BoxSyndicateHandcuffBundle + description: Contains a large amount of handcuffs + components: + - type: Sprite + layers: + - state: box_of_doom + - state: handcuff + - type: Storage + maxItemSize: Small + grid: + - 0,0,4,3 + whitelist: + components: + - Handcuff + - type: StorageFill + contents: + - id: Handcuffs + amount: 10 diff --git a/Resources/Prototypes/_DV/Catalog/uplink_catalog.yml b/Resources/Prototypes/_DV/Catalog/uplink_catalog.yml index f9ed7503158..595be85726c 100644 --- a/Resources/Prototypes/_DV/Catalog/uplink_catalog.yml +++ b/Resources/Prototypes/_DV/Catalog/uplink_catalog.yml @@ -179,3 +179,46 @@ Telecrystal: 2 categories: - UplinkDisruption + +- type: listing + id: UplinkHostageImplanter + name: uplink-syndicate-hostage-implanter-bundle-name + description: uplink-syndicate-hostage-implanter-bundle-desc + icon: { sprite: Objects/Misc/handcuffs.rsi, state: handcuff } + productEntity: BoxSyndicateHostageImplanter + discountCategory: usualDiscounts + discountDownTo: + Telecrystal: 1 + cost: + Telecrystal: 2 + categories: + - UplinkImplants + conditions: + - !type:BuyerWhitelistCondition + blacklist: + components: + - SurplusBundle + - !type:StoreWhitelistCondition + whitelist: + tags: + - NukeOpsUplink + +- type: listing + id: UplinkHandcuffBundle + name: uplink-syndicate-handcuff-bundle-name + description: uplink-syndicate-handcuff-bundle-desc + icon: { sprite: Objects/Misc/handcuffs.rsi, state: handcuff } + productEntity: BoxSyndicateHandcuffBundle + cost: + Telecrystal: 1 + categories: + - UplinkObjectives + conditions: + - !type:BuyerWhitelistCondition + blacklist: + components: + - SurplusBundle + - !type:StoreWhitelistCondition + whitelist: + tags: + - NukeOpsUplink diff --git a/Resources/Prototypes/_DV/FeedbackPopup/feedbackpopupsNukeHostage.yml b/Resources/Prototypes/_DV/FeedbackPopup/feedbackpopupsNukeHostage.yml new file mode 100644 index 00000000000..6b210d48f28 --- /dev/null +++ b/Resources/Prototypes/_DV/FeedbackPopup/feedbackpopupsNukeHostage.yml @@ -0,0 +1,26 @@ +# Round start nukie popup. +- type: feedbackPopup + id: NukieHostageRoundStartPopup + popupName: feedbackpopup-hostage-nukie-start-name + title: feedbackpopup-hostage-nukie-start-title + description: + - feedbackpopup-hostage-nukie-start-description-0 + - feedbackpopup-hostage-nukie-start-description-1 + - feedbackpopup-hostage-nukie-start-description-2 + feedbackField: false + +# On death, or game end nukie popup. +- type: feedbackPopup + id: NukieHostageRoundEndPopup + popupName: feedbackpopup-hostage-nukie-end-name + title: feedbackpopup-hostage-nukie-end-title + description: + - feedbackpopup-hostage-nukie-end-description-0 + +# Crew popup on round end. +- type: feedbackPopup + id: NukieHostageRoundEndCrewPopup + popupName: feedbackpopup-hostage-crew-end-name + title: feedbackpopup-hostage-crew-end-title + description: + - feedbackpopup-hostage-nukie-end-description-0 diff --git a/Resources/Prototypes/_DV/Objectives/nukies.yml b/Resources/Prototypes/_DV/Objectives/nukies.yml new file mode 100644 index 00000000000..8e613bfc9d9 --- /dev/null +++ b/Resources/Prototypes/_DV/Objectives/nukies.yml @@ -0,0 +1,66 @@ +# Nukies operations + +- type: weightedRandom + id: NukieOperations + weights: + NukieOperationDestroyStation: 1 + NukieOperationKidnapHeads: 1 + +- type: nukieOperation + id: NukieOperationDestroyStation + operationObjectives: + - NukeStationObjective + +- type: nukieOperation + id: NukieOperationKidnapHeads + operationObjectives: + - KidnapHeadsObjective + - NukieStealDiskObjective + nukeCodePaperOverride: nukie-operations-kidnap-heads-nuke-codes-override + +- type: entity + parent: BaseObjective + id: NukeStationObjective + name: Nuke the station. + description: Its your job. Get going! + components: + - type: Objective + difficulty: 4.0 + issuer: objective-issuer-syndicate + icon: + sprite: Objects/Devices/nuke.rsi + state: nuclearbomb_base + - type: NukeStationCondition + - type: CodeCondition + +- type: entity + parent: BaseObjective + id: KidnapHeadsObjective + components: + - type: Objective + difficulty: 4.0 + issuer: objective-issuer-syndicate + icon: + sprite: Objects/Misc/handcuffs.rsi + state: handcuff + - type: KidnapHeadsCondition + - type: NumberObjective + min: 4 # Min and max have to be the same. Otherwise, each operative will have a different number. + max: 4 + title: nukie-operations-kidnap-heads-objective-title + description: nukie-operations-kidnap-heads-objective-descript + +- type: entity + parent: BaseStealObjective + id: NukieStealDiskObjective + components: + - type: Objective + difficulty: 4.0 + issuer: objective-issuer-syndicate + icon: + sprite: Objects/Misc/nukedisk.rsi + state: icon + - type: StealCondition + stealGroup: NukeDisk + owner: objective-condition-steal-station + verifyMapExistence: false diff --git a/Resources/Prototypes/_DV/ai_factions.yml b/Resources/Prototypes/_DV/ai_factions.yml index 783fc9d9889..2307eef3bc3 100644 --- a/Resources/Prototypes/_DV/ai_factions.yml +++ b/Resources/Prototypes/_DV/ai_factions.yml @@ -3,3 +3,6 @@ hostile: - Mouse - SimpleHostile + +- type: npcFaction + id: Hostage diff --git a/Resources/Prototypes/ai_factions.yml b/Resources/Prototypes/ai_factions.yml index c2b62b5bdc6..d9e343534a4 100644 --- a/Resources/Prototypes/ai_factions.yml +++ b/Resources/Prototypes/ai_factions.yml @@ -62,6 +62,8 @@ - Zombie - Dragon - AllHostile + friendly: # DeltaV Nukie hostage ops + - Hostage - type: npcFaction id: Xeno From ee6164793bd3fdc561495505468304c90830e3f5 Mon Sep 17 00:00:00 2001 From: Delta-V bot <135767721+DeltaV-Bot@users.noreply.github.com> Date: Sat, 25 Jan 2025 02:30:00 +0100 Subject: [PATCH 14/20] Automatic changelog update --- Resources/Changelog/DeltaVChangelog.yml | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/DeltaVChangelog.yml b/Resources/Changelog/DeltaVChangelog.yml index 25525bb4154..cb442ca3698 100644 --- a/Resources/Changelog/DeltaVChangelog.yml +++ b/Resources/Changelog/DeltaVChangelog.yml @@ -1,11 +1,4 @@ Entries: -- author: DangerRevolution - changes: - - message: Construction of Security Cyborgs now requires extra steps. - type: Tweak - id: 446 - time: '2024-07-23T10:29:35.0000000+00:00' - url: https://github.com/DeltaV-Station/Delta-v/pull/1523 - author: NullWanderer, Adeinitas, Colin_Tel, DLondon changes: - message: Updated the server rules and made them more readable in one go, check @@ -3854,3 +3847,14 @@ id: 945 time: '2025-01-24T23:45:07.0000000+00:00' url: https://github.com/DeltaV-Station/Delta-v/pull/2787 +- author: beck-thompson + changes: + - message: Hostage ops. This is an alternative to nuclear operatives where you must + kidnap the heads of the station! + type: Add + - message: Hostage implants. These implants pacify anyone implanted and make them + immune from syndicate turrets. + type: Add + id: 946 + time: '2025-01-25T01:29:42.0000000+00:00' + url: https://github.com/DeltaV-Station/Delta-v/pull/2545 From aefae9eb706fdab4eec802ab77c65b7d33fb737f Mon Sep 17 00:00:00 2001 From: Emily <182209267+Emily9031@users.noreply.github.com> Date: Fri, 24 Jan 2025 21:09:35 -0700 Subject: [PATCH 15/20] Dead Man's Signaller changelog (#2792) * dead man's signaller changelog * I forgot to stage the file I'm stupid --- Resources/Changelog/Parts/2775.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 Resources/Changelog/Parts/2775.yml diff --git a/Resources/Changelog/Parts/2775.yml b/Resources/Changelog/Parts/2775.yml new file mode 100644 index 00000000000..3a7d4f06a03 --- /dev/null +++ b/Resources/Changelog/Parts/2775.yml @@ -0,0 +1,4 @@ +author: Emily9031 +changes: +- type: Add + message: Added a dead man's signaller that will activate when dropped. Find it in the uplink and research! Make sure you arm it! From 9f3c165ef40140f2873a8ecfd286c5ae6d6eaafb Mon Sep 17 00:00:00 2001 From: Delta-V bot <135767721+DeltaV-Bot@users.noreply.github.com> Date: Sat, 25 Jan 2025 05:09:54 +0100 Subject: [PATCH 16/20] Automatic changelog update --- Resources/Changelog/DeltaVChangelog.yml | 16 ++++++++-------- Resources/Changelog/Parts/2775.yml | 4 ---- 2 files changed, 8 insertions(+), 12 deletions(-) delete mode 100644 Resources/Changelog/Parts/2775.yml diff --git a/Resources/Changelog/DeltaVChangelog.yml b/Resources/Changelog/DeltaVChangelog.yml index cb442ca3698..e4c48faf7fc 100644 --- a/Resources/Changelog/DeltaVChangelog.yml +++ b/Resources/Changelog/DeltaVChangelog.yml @@ -1,12 +1,4 @@ Entries: -- author: NullWanderer, Adeinitas, Colin_Tel, DLondon - changes: - - message: Updated the server rules and made them more readable in one go, check - them out!!! - type: Tweak - id: 447 - time: '2024-07-24T23:19:26.0000000+00:00' - url: https://github.com/DeltaV-Station/Delta-v/pull/1494 - author: NullWanderer changes: - message: Merged upstream up to 01/07 @@ -3858,3 +3850,11 @@ id: 946 time: '2025-01-25T01:29:42.0000000+00:00' url: https://github.com/DeltaV-Station/Delta-v/pull/2545 +- author: Emily9031 + changes: + - message: Added a dead man's signaller that will activate when dropped. Find it + in the uplink and research! Make sure you arm it! + type: Add + id: 947 + time: '2025-01-25T04:09:54.540837+00:00' + url: null diff --git a/Resources/Changelog/Parts/2775.yml b/Resources/Changelog/Parts/2775.yml deleted file mode 100644 index 3a7d4f06a03..00000000000 --- a/Resources/Changelog/Parts/2775.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: Emily9031 -changes: -- type: Add - message: Added a dead man's signaller that will activate when dropped. Find it in the uplink and research! Make sure you arm it! From 5404cb25ed3bcd34d5c776dd460b4102d459f414 Mon Sep 17 00:00:00 2001 From: ElusiveCoin Date: Sat, 25 Jan 2025 12:50:18 -0700 Subject: [PATCH 17/20] Chitinid Minor Update (Bug Fix + Resistance updates + Guidebook update) (#2796) * Bug Fix + Resistance updates + Guidebook update Fixes the bug where they lose their light with an anom (Game limitations lets them only have one light at a time but the light returns after losing the anom) Tweaked resistance to be a bit more tanky for the cost of weaker to elemental things like shock and harder to heal due to inability to be injected Removed unneeded text from guidebook entry, added a more visible warning about Chitzite, fixed a spelling error, reflected more of the numerical values in the text. * Chocolate edible --- .../Prototypes/_DV/Body/Organs/chitinid.yml | 36 ++++++++++++++++++- .../_DV/Body/Prototypes/chitinid.yml | 2 +- .../Prototypes/_DV/Damage/modifier_sets.yml | 5 +-- .../_DV/Entities/Mobs/Species/chitinid.yml | 8 ----- .../Guidebook/Mobs/_DV/Chitinid.xml | 17 +++++---- 5 files changed, 47 insertions(+), 21 deletions(-) diff --git a/Resources/Prototypes/_DV/Body/Organs/chitinid.yml b/Resources/Prototypes/_DV/Body/Organs/chitinid.yml index 38a0e0b2219..c531740662d 100644 --- a/Resources/Prototypes/_DV/Body/Organs/chitinid.yml +++ b/Resources/Prototypes/_DV/Body/Organs/chitinid.yml @@ -1,6 +1,6 @@ - type: entity id: OrganChitinidStomach - parent: [OrganAnimalStomach, OrganHumanStomach] + parent: OrganHumanStomach name: stomach description: "Gross. This is hard to stomach." components: @@ -31,3 +31,37 @@ groups: - id: Food - id: Drink + +- type: entity + id: OrganChitinidLiver + parent: BaseAnimalOrgan + name: liver + categories: [ HideSpawnMenu ] + components: + - type: Organ + slotId: liver # Shitmed + onAdd: + - type: UnpoweredFlashlight + - type: PointLight + enabled: false + radius: 3 + softness: 5 + color: "#2CFA1F" + autoRot: true + - type: Sprite + state: liver + - type: Metabolizer + maxReagents: 1 + metabolizerTypes: [ Animal ] + groups: + - id: Alcohol + rateModifier: 0.1 + - type: Liver # Shitmed + - type: Tag # goob edit + tags: + - Meat + - Organ + - Liver + - type: Item + size: Small + heldPrefix: liver diff --git a/Resources/Prototypes/_DV/Body/Prototypes/chitinid.yml b/Resources/Prototypes/_DV/Body/Prototypes/chitinid.yml index 18428a67a6c..9175aeed003 100644 --- a/Resources/Prototypes/_DV/Body/Prototypes/chitinid.yml +++ b/Resources/Prototypes/_DV/Body/Prototypes/chitinid.yml @@ -16,7 +16,7 @@ heart: OrganAnimalHeart lungs: OrganHumanLungs stomach: OrganChitinidStomach - liver: OrganAnimalLiver + liver: OrganChitinidLiver kidneys: OrganHumanKidneys connections: - right arm diff --git a/Resources/Prototypes/_DV/Damage/modifier_sets.yml b/Resources/Prototypes/_DV/Damage/modifier_sets.yml index 42a10a3b123..a9a5eff4900 100644 --- a/Resources/Prototypes/_DV/Damage/modifier_sets.yml +++ b/Resources/Prototypes/_DV/Damage/modifier_sets.yml @@ -33,8 +33,9 @@ - type: damageModifierSet id: Chitinid coefficients: - Blunt: 1.15 - Piercing: 1.25 + Blunt: 0.9 + Piercing: 0.9 Slash: 0.9 Cold: 1.1 + Shock: 1.15 Radiation: 0.2 diff --git a/Resources/Prototypes/_DV/Entities/Mobs/Species/chitinid.yml b/Resources/Prototypes/_DV/Entities/Mobs/Species/chitinid.yml index b74046adc9c..90ecbf5a085 100644 --- a/Resources/Prototypes/_DV/Entities/Mobs/Species/chitinid.yml +++ b/Resources/Prototypes/_DV/Entities/Mobs/Species/chitinid.yml @@ -14,14 +14,6 @@ baseDecayRate: 0.0467 #needs to eat more to survive - type: Thirst - - type: UnpoweredFlashlight - - type: PointLight - enabled: false - radius: 3 - softness: 5 - color: "#2CFA1F" - autoRot: true - - type: Carriable - type: Icon diff --git a/Resources/ServerInfo/Guidebook/Mobs/_DV/Chitinid.xml b/Resources/ServerInfo/Guidebook/Mobs/_DV/Chitinid.xml index 29dde13c0f7..f3948fdd7bb 100644 --- a/Resources/ServerInfo/Guidebook/Mobs/_DV/Chitinid.xml +++ b/Resources/ServerInfo/Guidebook/Mobs/_DV/Chitinid.xml @@ -5,24 +5,23 @@ - An industrious worker drone species, the Chitinid are strong diligent workers. Thanks to their homeworld's enviroment, they have grown an acute resistance to radiation, but not without its side effects. + An industrious hymenoptera species, the Chitinid are strong and diligent. Thanks to evolution, they have grown an acute resistance to radiation, but not without its side effects. ## Diet - Nothing special. ## Benefits - - Takes 80% less Radiation, 10% less Slash. - - Their bodies naturally recover from light radiation damage up to a point, once they accumulate enough radiation they must purge it from their systems in the form of a small rock. - - Due to their worker drone nature they are Better at pulling and carrying things. - - Due to their radioactive homeworld they possess a bio light. + - Takes 80% less Radiation, 10% less Slash Blunt and Piercing. + - Their bodies naturally recover from light radiation damage up to a point, once they accumulate enough radiation they must purge it from their systems in the form of a small rock [color=#ff0f0f]WARNING:The Chitzite they expel is slightly radioactive [/color]. + - They are Better at pulling and carrying things. + - They possess a bio light. ## Drawbacks - - Built for work rather than combat their hard shells are weaker to Blunt and piercing damage, they take 25% more piercing and 15% more Blunt damage. + - They take 15% more Shock damage due to their biology. - Due to their hard shells normal syringes can not pierce them, requiring hypos to bypass the toughness. - Thanks to their overactive systems they get hungry 33% faster. - - The cold does not agree with their biology and makes their movement sluggish, the cold also harms them more than others. - - They are deceptivly heavy due to their lifestyle and diet. - - The Chitzite they expel is slightly radioactive. + - The cold does not agree with their biology and makes their movement sluggish the colder it gets, the cold also harms them more than others causing them to take 25% more damage from it. + - They are deceptively heavy due to their lifestyle and diet. - Bug Blood. From 441f9d5dd4d143ee55c626a68ce7fb0d2c655b38 Mon Sep 17 00:00:00 2001 From: deltanedas <39013340+deltanedas@users.noreply.github.com> Date: Sat, 25 Jan 2025 19:55:12 +0000 Subject: [PATCH 18/20] chitinid minor update cl (#2798) Co-authored-by: deltanedas <@deltanedas:kde.org> --- Resources/Changelog/Parts/2796.yml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 Resources/Changelog/Parts/2796.yml diff --git a/Resources/Changelog/Parts/2796.yml b/Resources/Changelog/Parts/2796.yml new file mode 100644 index 00000000000..8481dca3125 --- /dev/null +++ b/Resources/Changelog/Parts/2796.yml @@ -0,0 +1,8 @@ +author: ElusiveCoin +changes: +- type: Tweak + message: Updated Chitinid Resistances to make them more tank like while still being harder to heal in the midst of a battle. +- type: Fix + message: Fixed a bug where anomalies that gave the player a point light would remove the Chitinid's bio light if cured. +- type: Tweak + message: Updated Guidebook text of the Chitinid species. From f5b33cd5e327338e2d2bd7571fc1c86d0f3f25d0 Mon Sep 17 00:00:00 2001 From: Delta-V bot <135767721+DeltaV-Bot@users.noreply.github.com> Date: Sat, 25 Jan 2025 20:55:31 +0100 Subject: [PATCH 19/20] Automatic changelog update --- Resources/Changelog/DeltaVChangelog.yml | 20 +++++++++++++------- Resources/Changelog/Parts/2796.yml | 8 -------- 2 files changed, 13 insertions(+), 15 deletions(-) delete mode 100644 Resources/Changelog/Parts/2796.yml diff --git a/Resources/Changelog/DeltaVChangelog.yml b/Resources/Changelog/DeltaVChangelog.yml index e4c48faf7fc..9a740c79f5a 100644 --- a/Resources/Changelog/DeltaVChangelog.yml +++ b/Resources/Changelog/DeltaVChangelog.yml @@ -1,11 +1,4 @@ Entries: -- author: NullWanderer - changes: - - message: Merged upstream up to 01/07 - type: Add - id: 448 - time: '2024-07-25T01:17:58.0000000+00:00' - url: https://github.com/DeltaV-Station/Delta-v/pull/1533 - author: Fox changes: - message: Ifrit should now be behind 4 hours of Epistemics playtime @@ -3858,3 +3851,16 @@ id: 947 time: '2025-01-25T04:09:54.540837+00:00' url: null +- author: ElusiveCoin + changes: + - message: Updated Chitinid Resistances to make them more tank like while still + being harder to heal in the midst of a battle. + type: Tweak + - message: Fixed a bug where anomalies that gave the player a point light would + remove the Chitinid's bio light if cured. + type: Fix + - message: Updated Guidebook text of the Chitinid species. + type: Tweak + id: 948 + time: '2025-01-25T19:55:31.266176+00:00' + url: null diff --git a/Resources/Changelog/Parts/2796.yml b/Resources/Changelog/Parts/2796.yml deleted file mode 100644 index 8481dca3125..00000000000 --- a/Resources/Changelog/Parts/2796.yml +++ /dev/null @@ -1,8 +0,0 @@ -author: ElusiveCoin -changes: -- type: Tweak - message: Updated Chitinid Resistances to make them more tank like while still being harder to heal in the midst of a battle. -- type: Fix - message: Fixed a bug where anomalies that gave the player a point light would remove the Chitinid's bio light if cured. -- type: Tweak - message: Updated Guidebook text of the Chitinid species. From 38dffdf4146c2d3fdc7bf9fc062e09328e573dba Mon Sep 17 00:00:00 2001 From: Dvir <39403717+dvir001@users.noreply.github.com> Date: Sun, 26 Jan 2025 01:13:44 +0200 Subject: [PATCH 20/20] Fix EE namespace issue (#2801) * EE NameSpace * More --- .../markings/cyberlimbs.ftl | 0 .../markings/goblin_markings.ftl | 0 .../markings/harpy.ftl | 0 .../markings/oni.ftl | 0 .../markings/oni_feet.ftl | 0 .../markings/pointy_ears.ftl | 0 .../Mobs/Customization/Markings/harpy.yml | 62 +++--- .../Mobs/Customization/Markings/oni_feet.yml | 2 +- .../Mobs/Customization/Markings/oni_horns.yml | 178 +++++++++--------- .../Customization/Markings/pointy_ears.yml | 18 +- .../Mobs/Customization/Markings/tusks.yml | 4 +- .../Mobs/Customization/cyberlimbs/comp1.yml | 28 +-- .../Mobs/Customization/cyberlimbs/comp2.yml | 32 ++-- .../SoundCollections/harpy.yml | 0 .../Harpy/harpy_ears.rsi/harpy_ears_large.png | Bin .../Harpy/harpy_ears.rsi/meta.json | 0 .../Harpy/harpy_tails.rsi/forked_long.png | Bin .../Harpy/harpy_tails.rsi/haven_tone_1.png | Bin .../Harpy/harpy_tails.rsi/haven_tone_2.png | Bin .../huescale_forked_tailfin.png | Bin .../Harpy/harpy_tails.rsi/meta.json | 0 .../Harpy/harpy_tails.rsi/swallow_tail.png | Bin .../whitescale_forked_tailfin.png | Bin .../Harpy/harpy_tails48x48.rsi/meta.json | 0 .../peacock_tail_eyes.png | Bin .../peacock_tail_feathers.png | Bin .../harpy_wings.rsi/bat_wings_tone_1.png | Bin .../harpy_wings.rsi/bat_wings_tone_2.png | Bin .../harpy_wings.rsi/bionic_wings_tone_1.png | Bin .../harpy_wings.rsi/bionic_wings_tone_2.png | Bin .../Harpy/harpy_wings.rsi/classic_harpy.png | Bin .../Harpy/harpy_wings.rsi/harpy_2tone_1.png | Bin .../Harpy/harpy_wings.rsi/harpy_2tone_2.png | Bin .../Harpy/harpy_wings.rsi/harpy_3tone_1.png | Bin .../Harpy/harpy_wings.rsi/harpy_3tone_2.png | Bin .../Harpy/harpy_wings.rsi/harpy_3tone_3.png | Bin .../harpy_wings.rsi/harpy_speckled_1.png | Bin .../harpy_wings.rsi/harpy_speckled_2.png | Bin .../harpy_wings.rsi/harpy_undertone_1.png | Bin .../harpy_wings.rsi/harpy_undertone_2.png | Bin .../Harpy/harpy_wings.rsi/harpy_wingtip_1.png | Bin .../Harpy/harpy_wings.rsi/harpy_wingtip_2.png | Bin .../Harpy/harpy_wings.rsi/huescale_harpy.png | Bin .../harpy_wings.rsi/huescale_harpy_folded.png | Bin .../huescale_harpy_wing_owl.png | Bin .../Harpy/harpy_wings.rsi/meta.json | 0 .../harpy_wings.rsi/whitescale_harpy.png | Bin .../whitescale_harpy_folded.png | Bin .../whitescale_harpy_wing_owl.png | Bin .../Oni/oni_horns.rsi/antlers_2tone_1.png | Bin .../Oni/oni_horns.rsi/antlers_2tone_2.png | Bin .../Oni/oni_horns.rsi/antlers_3tone_1.png | Bin .../Oni/oni_horns.rsi/antlers_3tone_2.png | Bin .../Oni/oni_horns.rsi/antlers_3tone_3.png | Bin .../Customization/Oni/oni_horns.rsi/aries.png | Bin .../Oni/oni_horns.rsi/aries_3tone_1.png | Bin .../Oni/oni_horns.rsi/aries_3tone_2.png | Bin .../Oni/oni_horns.rsi/aries_3tone_3.png | Bin .../Oni/oni_horns.rsi/crowned.png | Bin .../oni_horns.rsi/double_curved_3tone_1.png | Bin .../oni_horns.rsi/double_curved_3tone_2.png | Bin .../oni_horns.rsi/double_curved_3tone_3.png | Bin .../double_curved_outwards_3tone_1.png | Bin .../double_curved_outwards_3tone_2.png | Bin .../double_curved_outwards_3tone_3.png | Bin .../Oni/oni_horns.rsi/double_thick.png | Bin .../oni_horns.rsi/double_thick_2tone_1.png | Bin .../oni_horns.rsi/double_thick_2tone_2.png | Bin .../oni_horns.rsi/double_thick_3tone_1.png | Bin .../oni_horns.rsi/double_thick_3tone_2.png | Bin .../oni_horns.rsi/double_thick_3tone_3.png | Bin .../Oni/oni_horns.rsi/erebia.png | Bin .../Oni/oni_horns.rsi/erebia_3tone_1.png | Bin .../Oni/oni_horns.rsi/erebia_3tone_2.png | Bin .../Oni/oni_horns.rsi/erebia_3tone_3.png | Bin .../Oni/oni_horns.rsi/erebia_rings.png | Bin .../Oni/oni_horns.rsi/inclined.png | Bin .../Oni/oni_horns.rsi/inclined_3tone_1.png | Bin .../Oni/oni_horns.rsi/inclined_3tone_2.png | Bin .../Oni/oni_horns.rsi/inclined_3tone_3.png | Bin .../Customization/Oni/oni_horns.rsi/meta.json | 0 .../Oni/oni_horns.rsi/nepeta.png | Bin .../Oni/oni_horns.rsi/nepeta_3tone_1.png | Bin .../Oni/oni_horns.rsi/nepeta_3tone_2.png | Bin .../Oni/oni_horns.rsi/nepeta_3tone_3.png | Bin .../Oni/oni_horns.rsi/pisces.png | Bin .../Oni/oni_horns.rsi/pisces_2tone_1.png | Bin .../Oni/oni_horns.rsi/pisces_2tone_2.png | Bin .../Oni/oni_horns.rsi/pisces_3tone_1.png | Bin .../Oni/oni_horns.rsi/pisces_3tone_2.png | Bin .../Oni/oni_horns.rsi/pisces_3tone_3.png | Bin .../Oni/oni_horns.rsi/sagittarius.png | Bin .../Oni/oni_horns.rsi/sagittarius_3tone_1.png | Bin .../Oni/oni_horns.rsi/sagittarius_3tone_2.png | Bin .../Oni/oni_horns.rsi/sagittarius_3tone_3.png | Bin .../Oni/oni_horns.rsi/serket.png | Bin .../Oni/oni_horns.rsi/serket_3tone_1.png | Bin .../Oni/oni_horns.rsi/serket_3tone_2.png | Bin .../Oni/oni_horns.rsi/serket_3tone_3.png | Bin .../Oni/oni_horns.rsi/taurus.png | Bin .../Oni/oni_horns.rsi/taurus_2tone_1.png | Bin .../Oni/oni_horns.rsi/taurus_2tone_2.png | Bin .../Oni/oni_horns.rsi/taurus_3tone_1.png | Bin .../Oni/oni_horns.rsi/taurus_3tone_2.png | Bin .../Oni/oni_horns.rsi/taurus_3tone_3.png | Bin .../Oni/oni_horns.rsi/tavris.png | Bin .../Oni/oni_horns.rsi/tavris_3tone_1.png | Bin .../Oni/oni_horns.rsi/tavris_3tone_2.png | Bin .../Oni/oni_horns.rsi/tavris_3tone_3.png | Bin .../Oni/oni_horns.rsi/unicorn.png | Bin .../Oni/oni_horns.rsi/vantas.png | Bin .../Oni/oni_horns.rsi/vantas_3tone_1.png | Bin .../Oni/oni_horns.rsi/vantas_3tone_2.png | Bin .../Oni/oni_horns.rsi/vantas_3tone_3.png | Bin .../Customization/Oni/oni_horns.rsi/virgo.png | Bin .../Oni/oni_horns.rsi/virgo_3tone_1.png | Bin .../Oni/oni_horns.rsi/virgo_3tone_2.png | Bin .../Oni/oni_horns.rsi/virgo_3tone_3.png | Bin .../Customization/Oni/oni_horns.rsi/wavy.png | Bin .../Oni/oni_horns.rsi/wavy_2tone_1.png | Bin .../Oni/oni_horns.rsi/wavy_2tone_2.png | Bin .../Oni/oni_horns.rsi/wavy_3tone_1.png | Bin .../Oni/oni_horns.rsi/wavy_3tone_2.png | Bin .../Oni/oni_horns.rsi/wavy_3tone_3.png | Bin .../Oni/oni_horns48x48.rsi/makara.png | Bin .../Oni/oni_horns48x48.rsi/makara_2tone_1.png | Bin .../Oni/oni_horns48x48.rsi/makara_2tone_2.png | Bin .../Oni/oni_horns48x48.rsi/makara_3tone_1.png | Bin .../Oni/oni_horns48x48.rsi/makara_3tone_2.png | Bin .../Oni/oni_horns48x48.rsi/makara_3tone_3.png | Bin .../Oni/oni_horns48x48.rsi/meta.json | 0 .../Oni/oni_horns48x48.rsi/tall_bull.png | Bin .../oni_horns48x48.rsi/tall_bull_3tone_1.png | Bin .../oni_horns48x48.rsi/tall_bull_3tone_2.png | Bin .../oni_horns48x48.rsi/tall_bull_3tone_3.png | Bin .../Oni/oni_horns48x48.rsi/tall_curved.png | Bin .../tall_curved_3tone_1.png | Bin .../tall_curved_3tone_2.png | Bin .../tall_curved_3tone_3.png | Bin .../comp1/comp1_main.rsi/l_arm-primary.png | Bin .../comp1/comp1_main.rsi/l_arm-secondary.png | Bin .../comp1/comp1_main.rsi/l_arm-tertiary.png | Bin .../comp1/comp1_main.rsi/l_foot.png | Bin .../comp1/comp1_main.rsi/l_hand.png | Bin .../comp1/comp1_main.rsi/l_leg-primary.png | Bin .../comp1/comp1_main.rsi/l_leg-secondary.png | Bin .../cyberlimbs/comp1/comp1_main.rsi/meta.json | 0 .../comp1/comp1_main.rsi/r_arm-primary.png | Bin .../comp1/comp1_main.rsi/r_arm-secondary.png | Bin .../comp1/comp1_main.rsi/r_arm-tertiary.png | Bin .../comp1/comp1_main.rsi/r_foot.png | Bin .../comp1/comp1_main.rsi/r_hand.png | Bin .../comp1/comp1_main.rsi/r_leg-primary.png | Bin .../comp1/comp1_main.rsi/r_leg-secondary.png | Bin .../comp2/comp2_main.rsi/l_arm-1.png | Bin .../comp2/comp2_main.rsi/l_arm-2.png | Bin .../comp2/comp2_main.rsi/l_foot-1.png | Bin .../comp2/comp2_main.rsi/l_foot-2.png | Bin .../comp2/comp2_main.rsi/l_hand-1.png | Bin .../comp2/comp2_main.rsi/l_hand-2.png | Bin .../comp2/comp2_main.rsi/l_leg-1.png | Bin .../comp2/comp2_main.rsi/l_leg-2.png | Bin .../cyberlimbs/comp2/comp2_main.rsi/meta.json | 0 .../comp2/comp2_main.rsi/r_arm-1.png | Bin .../comp2/comp2_main.rsi/r_arm-2.png | Bin .../comp2/comp2_main.rsi/r_foot-1.png | Bin .../comp2/comp2_main.rsi/r_foot-2.png | Bin .../comp2/comp2_main.rsi/r_hand-1.png | Bin .../comp2/comp2_main.rsi/r_hand-2.png | Bin .../comp2/comp2_main.rsi/r_leg-1.png | Bin .../comp2/comp2_main.rsi/r_leg-2.png | Bin .../goblin_tusks.rsi/goblin_tusks_big.png | Bin .../goblin_tusks.rsi/goblin_tusks_none.png | Bin .../goblin_tusks.rsi/goblin_tusks_small.png | Bin .../Customization/goblin_tusks.rsi/meta.json | 0 .../Mobs/Customization/oni_feet.rsi/meta.json | 0 .../Customization/oni_feet.rsi/two_toes.png | Bin .../Customization/pointy_ears.rsi/meta.json | 0 .../pointy_ears.rsi/pointy_ears_large.png | Bin .../pointy_ears.rsi/pointy_ears_none.png | Bin .../pointy_ears.rsi/pointy_ears_slanted.png | Bin .../pointy_ears.rsi/pointy_ears_small.png | Bin .../pointy_ears.rsi/pointy_ears_standard.png | Bin .../pointy_ears.rsi/pointy_ears_tall.png | Bin .../pointy_ears.rsi/pointy_ears_thin.png | Bin .../pointy_ears.rsi/pointy_ears_upwards.png | Bin .../pointy_ears.rsi/pointy_ears_wide.png | Bin 187 files changed, 162 insertions(+), 162 deletions(-) rename Resources/Locale/en-US/{einstein-engines => _EE}/markings/cyberlimbs.ftl (100%) rename Resources/Locale/en-US/{einstein-engines => _EE}/markings/goblin_markings.ftl (100%) rename Resources/Locale/en-US/{einstein-engines => _EE}/markings/harpy.ftl (100%) rename Resources/Locale/en-US/{einstein-engines => _EE}/markings/oni.ftl (100%) rename Resources/Locale/en-US/{einstein-engines => _EE}/markings/oni_feet.ftl (100%) rename Resources/Locale/en-US/{einstein-engines => _EE}/markings/pointy_ears.ftl (100%) rename Resources/Prototypes/{Einstein-Engines => _EE}/Entities/Mobs/Customization/Markings/harpy.yml (72%) rename Resources/Prototypes/{Einstein-Engines => _EE}/Entities/Mobs/Customization/Markings/oni_feet.yml (81%) rename Resources/Prototypes/{Einstein-Engines => _EE}/Entities/Mobs/Customization/Markings/oni_horns.yml (60%) rename Resources/Prototypes/{Einstein-Engines => _EE}/Entities/Mobs/Customization/Markings/pointy_ears.yml (73%) rename Resources/Prototypes/{Einstein-Engines => _EE}/Entities/Mobs/Customization/Markings/tusks.yml (78%) rename Resources/Prototypes/{Einstein-Engines => _EE}/Entities/Mobs/Customization/cyberlimbs/comp1.yml (62%) rename Resources/Prototypes/{Einstein-Engines => _EE}/Entities/Mobs/Customization/cyberlimbs/comp2.yml (59%) rename Resources/Prototypes/{Einstein-Engines => _EE}/SoundCollections/harpy.yml (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Harpy/harpy_ears.rsi/harpy_ears_large.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Harpy/harpy_ears.rsi/meta.json (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Harpy/harpy_tails.rsi/forked_long.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Harpy/harpy_tails.rsi/haven_tone_1.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Harpy/harpy_tails.rsi/haven_tone_2.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Harpy/harpy_tails.rsi/huescale_forked_tailfin.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Harpy/harpy_tails.rsi/meta.json (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Harpy/harpy_tails.rsi/swallow_tail.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Harpy/harpy_tails.rsi/whitescale_forked_tailfin.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Harpy/harpy_tails48x48.rsi/meta.json (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Harpy/harpy_tails48x48.rsi/peacock_tail_eyes.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Harpy/harpy_tails48x48.rsi/peacock_tail_feathers.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Harpy/harpy_wings.rsi/bat_wings_tone_1.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Harpy/harpy_wings.rsi/bat_wings_tone_2.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Harpy/harpy_wings.rsi/bionic_wings_tone_1.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Harpy/harpy_wings.rsi/bionic_wings_tone_2.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Harpy/harpy_wings.rsi/classic_harpy.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_2tone_1.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_2tone_2.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_3tone_1.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_3tone_2.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_3tone_3.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_speckled_1.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_speckled_2.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_undertone_1.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_undertone_2.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_wingtip_1.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_wingtip_2.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Harpy/harpy_wings.rsi/huescale_harpy.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Harpy/harpy_wings.rsi/huescale_harpy_folded.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Harpy/harpy_wings.rsi/huescale_harpy_wing_owl.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Harpy/harpy_wings.rsi/meta.json (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Harpy/harpy_wings.rsi/whitescale_harpy.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Harpy/harpy_wings.rsi/whitescale_harpy_folded.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Harpy/harpy_wings.rsi/whitescale_harpy_wing_owl.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/antlers_2tone_1.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/antlers_2tone_2.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/antlers_3tone_1.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/antlers_3tone_2.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/antlers_3tone_3.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/aries.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/aries_3tone_1.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/aries_3tone_2.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/aries_3tone_3.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/crowned.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/double_curved_3tone_1.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/double_curved_3tone_2.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/double_curved_3tone_3.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/double_curved_outwards_3tone_1.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/double_curved_outwards_3tone_2.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/double_curved_outwards_3tone_3.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/double_thick.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/double_thick_2tone_1.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/double_thick_2tone_2.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/double_thick_3tone_1.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/double_thick_3tone_2.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/double_thick_3tone_3.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/erebia.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/erebia_3tone_1.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/erebia_3tone_2.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/erebia_3tone_3.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/erebia_rings.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/inclined.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/inclined_3tone_1.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/inclined_3tone_2.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/inclined_3tone_3.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/meta.json (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/nepeta.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/nepeta_3tone_1.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/nepeta_3tone_2.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/nepeta_3tone_3.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/pisces.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/pisces_2tone_1.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/pisces_2tone_2.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/pisces_3tone_1.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/pisces_3tone_2.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/pisces_3tone_3.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/sagittarius.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/sagittarius_3tone_1.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/sagittarius_3tone_2.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/sagittarius_3tone_3.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/serket.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/serket_3tone_1.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/serket_3tone_2.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/serket_3tone_3.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/taurus.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/taurus_2tone_1.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/taurus_2tone_2.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/taurus_3tone_1.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/taurus_3tone_2.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/taurus_3tone_3.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/tavris.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/tavris_3tone_1.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/tavris_3tone_2.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/tavris_3tone_3.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/unicorn.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/vantas.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/vantas_3tone_1.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/vantas_3tone_2.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/vantas_3tone_3.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/virgo.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/virgo_3tone_1.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/virgo_3tone_2.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/virgo_3tone_3.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/wavy.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/wavy_2tone_1.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/wavy_2tone_2.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/wavy_3tone_1.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/wavy_3tone_2.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns.rsi/wavy_3tone_3.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns48x48.rsi/makara.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns48x48.rsi/makara_2tone_1.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns48x48.rsi/makara_2tone_2.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns48x48.rsi/makara_3tone_1.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns48x48.rsi/makara_3tone_2.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns48x48.rsi/makara_3tone_3.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns48x48.rsi/meta.json (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns48x48.rsi/tall_bull.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns48x48.rsi/tall_bull_3tone_1.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns48x48.rsi/tall_bull_3tone_2.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns48x48.rsi/tall_bull_3tone_3.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns48x48.rsi/tall_curved.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns48x48.rsi/tall_curved_3tone_1.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns48x48.rsi/tall_curved_3tone_2.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/Oni/oni_horns48x48.rsi/tall_curved_3tone_3.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/l_arm-primary.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/l_arm-secondary.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/l_arm-tertiary.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/l_foot.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/l_hand.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/l_leg-primary.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/l_leg-secondary.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/meta.json (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/r_arm-primary.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/r_arm-secondary.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/r_arm-tertiary.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/r_foot.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/r_hand.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/r_leg-primary.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/r_leg-secondary.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/l_arm-1.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/l_arm-2.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/l_foot-1.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/l_foot-2.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/l_hand-1.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/l_hand-2.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/l_leg-1.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/l_leg-2.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/meta.json (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/r_arm-1.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/r_arm-2.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/r_foot-1.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/r_foot-2.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/r_hand-1.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/r_hand-2.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/r_leg-1.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/r_leg-2.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/goblin_tusks.rsi/goblin_tusks_big.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/goblin_tusks.rsi/goblin_tusks_none.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/goblin_tusks.rsi/goblin_tusks_small.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/goblin_tusks.rsi/meta.json (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/oni_feet.rsi/meta.json (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/oni_feet.rsi/two_toes.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/pointy_ears.rsi/meta.json (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/pointy_ears.rsi/pointy_ears_large.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/pointy_ears.rsi/pointy_ears_none.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/pointy_ears.rsi/pointy_ears_slanted.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/pointy_ears.rsi/pointy_ears_small.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/pointy_ears.rsi/pointy_ears_standard.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/pointy_ears.rsi/pointy_ears_tall.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/pointy_ears.rsi/pointy_ears_thin.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/pointy_ears.rsi/pointy_ears_upwards.png (100%) rename Resources/Textures/{Einstein-Engines => _EE}/Mobs/Customization/pointy_ears.rsi/pointy_ears_wide.png (100%) diff --git a/Resources/Locale/en-US/einstein-engines/markings/cyberlimbs.ftl b/Resources/Locale/en-US/_EE/markings/cyberlimbs.ftl similarity index 100% rename from Resources/Locale/en-US/einstein-engines/markings/cyberlimbs.ftl rename to Resources/Locale/en-US/_EE/markings/cyberlimbs.ftl diff --git a/Resources/Locale/en-US/einstein-engines/markings/goblin_markings.ftl b/Resources/Locale/en-US/_EE/markings/goblin_markings.ftl similarity index 100% rename from Resources/Locale/en-US/einstein-engines/markings/goblin_markings.ftl rename to Resources/Locale/en-US/_EE/markings/goblin_markings.ftl diff --git a/Resources/Locale/en-US/einstein-engines/markings/harpy.ftl b/Resources/Locale/en-US/_EE/markings/harpy.ftl similarity index 100% rename from Resources/Locale/en-US/einstein-engines/markings/harpy.ftl rename to Resources/Locale/en-US/_EE/markings/harpy.ftl diff --git a/Resources/Locale/en-US/einstein-engines/markings/oni.ftl b/Resources/Locale/en-US/_EE/markings/oni.ftl similarity index 100% rename from Resources/Locale/en-US/einstein-engines/markings/oni.ftl rename to Resources/Locale/en-US/_EE/markings/oni.ftl diff --git a/Resources/Locale/en-US/einstein-engines/markings/oni_feet.ftl b/Resources/Locale/en-US/_EE/markings/oni_feet.ftl similarity index 100% rename from Resources/Locale/en-US/einstein-engines/markings/oni_feet.ftl rename to Resources/Locale/en-US/_EE/markings/oni_feet.ftl diff --git a/Resources/Locale/en-US/einstein-engines/markings/pointy_ears.ftl b/Resources/Locale/en-US/_EE/markings/pointy_ears.ftl similarity index 100% rename from Resources/Locale/en-US/einstein-engines/markings/pointy_ears.ftl rename to Resources/Locale/en-US/_EE/markings/pointy_ears.ftl diff --git a/Resources/Prototypes/Einstein-Engines/Entities/Mobs/Customization/Markings/harpy.yml b/Resources/Prototypes/_EE/Entities/Mobs/Customization/Markings/harpy.yml similarity index 72% rename from Resources/Prototypes/Einstein-Engines/Entities/Mobs/Customization/Markings/harpy.yml rename to Resources/Prototypes/_EE/Entities/Mobs/Customization/Markings/harpy.yml index d13f5f03264..625a2e8a80e 100644 --- a/Resources/Prototypes/Einstein-Engines/Entities/Mobs/Customization/Markings/harpy.yml +++ b/Resources/Prototypes/_EE/Entities/Mobs/Customization/Markings/harpy.yml @@ -15,7 +15,7 @@ - !type:SimpleColoring color: "#964b00" sprites: - - sprite: Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi + - sprite: _EE/Mobs/Customization/Harpy/harpy_wings.rsi state: huescale_harpy - type: marking @@ -32,7 +32,7 @@ - !type:SimpleColoring color: "#964b00" sprites: - - sprite: Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi + - sprite: _EE/Mobs/Customization/Harpy/harpy_wings.rsi state: whitescale_harpy - type: marking @@ -49,7 +49,7 @@ - !type:SimpleColoring color: "#964b00" sprites: - - sprite: Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi + - sprite: _EE/Mobs/Customization/Harpy/harpy_wings.rsi state: classic_harpy - type: marking @@ -66,7 +66,7 @@ - !type:SimpleColoring color: "#964b00" sprites: - - sprite: Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi + - sprite: _EE/Mobs/Customization/Harpy/harpy_wings.rsi state: huescale_harpy_folded - type: marking @@ -83,7 +83,7 @@ - !type:SimpleColoring color: "#964b00" sprites: - - sprite: Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi + - sprite: _EE/Mobs/Customization/Harpy/harpy_wings.rsi state: whitescale_harpy_folded - type: marking @@ -100,7 +100,7 @@ - !type:SimpleColoring color: "#964b00" sprites: - - sprite: Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi + - sprite: _EE/Mobs/Customization/Harpy/harpy_wings.rsi state: huescale_harpy_wing_owl - type: marking @@ -117,7 +117,7 @@ - !type:SimpleColoring color: "#964b00" sprites: - - sprite: Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi + - sprite: _EE/Mobs/Customization/Harpy/harpy_wings.rsi state: whitescale_harpy_wing_owl - type: marking @@ -134,7 +134,7 @@ - !type:SimpleColoring color: "#964b00" sprites: - - sprite: Einstein-Engines/Mobs/Customization/Harpy/harpy_ears.rsi + - sprite: _EE/Mobs/Customization/Harpy/harpy_ears.rsi state: harpy_ears_large - type: marking @@ -150,7 +150,7 @@ fallbackTypes: - !type:SimpleColoring sprites: - - sprite: Einstein-Engines/Mobs/Customization/Harpy/harpy_tails.rsi + - sprite: _EE/Mobs/Customization/Harpy/harpy_tails.rsi state: whitescale_forked_tailfin - type: marking @@ -166,7 +166,7 @@ fallbackTypes: - !type:SimpleColoring sprites: - - sprite: Einstein-Engines/Mobs/Customization/Harpy/harpy_tails.rsi + - sprite: _EE/Mobs/Customization/Harpy/harpy_tails.rsi state: huescale_forked_tailfin - type: marking @@ -182,9 +182,9 @@ fallbackTypes: - !type:SimpleColoring sprites: - - sprite: Einstein-Engines/Mobs/Customization/Harpy/harpy_tails48x48.rsi + - sprite: _EE/Mobs/Customization/Harpy/harpy_tails48x48.rsi state: peacock_tail_feathers - - sprite: Einstein-Engines/Mobs/Customization/Harpy/harpy_tails48x48.rsi + - sprite: _EE/Mobs/Customization/Harpy/harpy_tails48x48.rsi state: peacock_tail_eyes - type: marking @@ -200,9 +200,9 @@ fallbackTypes: - !type:SimpleColoring sprites: - - sprite: Einstein-Engines/Mobs/Customization/Harpy/harpy_tails.rsi + - sprite: _EE/Mobs/Customization/Harpy/harpy_tails.rsi state: haven_tone_1 - - sprite: Einstein-Engines/Mobs/Customization/Harpy/harpy_tails.rsi + - sprite: _EE/Mobs/Customization/Harpy/harpy_tails.rsi state: haven_tone_2 - type: marking @@ -218,7 +218,7 @@ fallbackTypes: - !type:SimpleColoring sprites: - - sprite: Einstein-Engines/Mobs/Customization/Harpy/harpy_tails.rsi + - sprite: _EE/Mobs/Customization/Harpy/harpy_tails.rsi state: forked_long - type: marking @@ -234,7 +234,7 @@ fallbackTypes: - !type:SimpleColoring sprites: - - sprite: Einstein-Engines/Mobs/Customization/Harpy/harpy_tails.rsi + - sprite: _EE/Mobs/Customization/Harpy/harpy_tails.rsi state: swallow_tail - type: marking @@ -243,9 +243,9 @@ markingCategory: Arms speciesRestriction: [Harpy] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi + - sprite: _EE/Mobs/Customization/Harpy/harpy_wings.rsi state: harpy_2tone_1 - - sprite: Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi + - sprite: _EE/Mobs/Customization/Harpy/harpy_wings.rsi state: harpy_2tone_2 - type: marking @@ -254,11 +254,11 @@ markingCategory: Arms speciesRestriction: [Harpy] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi + - sprite: _EE/Mobs/Customization/Harpy/harpy_wings.rsi state: harpy_3tone_1 - - sprite: Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi + - sprite: _EE/Mobs/Customization/Harpy/harpy_wings.rsi state: harpy_3tone_2 - - sprite: Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi + - sprite: _EE/Mobs/Customization/Harpy/harpy_wings.rsi state: harpy_3tone_3 - type: marking @@ -267,9 +267,9 @@ markingCategory: Arms speciesRestriction: [Harpy] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi + - sprite: _EE/Mobs/Customization/Harpy/harpy_wings.rsi state: harpy_speckled_1 - - sprite: Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi + - sprite: _EE/Mobs/Customization/Harpy/harpy_wings.rsi state: harpy_speckled_2 - type: marking @@ -278,9 +278,9 @@ markingCategory: Arms speciesRestriction: [Harpy] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi + - sprite: _EE/Mobs/Customization/Harpy/harpy_wings.rsi state: harpy_undertone_1 - - sprite: Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi + - sprite: _EE/Mobs/Customization/Harpy/harpy_wings.rsi state: harpy_undertone_2 - type: marking @@ -289,9 +289,9 @@ markingCategory: Arms speciesRestriction: [Harpy] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi + - sprite: _EE/Mobs/Customization/Harpy/harpy_wings.rsi state: harpy_wingtip_1 - - sprite: Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi + - sprite: _EE/Mobs/Customization/Harpy/harpy_wings.rsi state: harpy_wingtip_2 - type: marking @@ -300,9 +300,9 @@ markingCategory: Arms speciesRestriction: [Harpy] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi + - sprite: _EE/Mobs/Customization/Harpy/harpy_wings.rsi state: bat_wings_tone_1 - - sprite: Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi + - sprite: _EE/Mobs/Customization/Harpy/harpy_wings.rsi state: bat_wings_tone_2 - type: marking @@ -311,8 +311,8 @@ markingCategory: Arms speciesRestriction: [Harpy] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi + - sprite: _EE/Mobs/Customization/Harpy/harpy_wings.rsi state: bionic_wings_tone_1 - - sprite: Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi + - sprite: _EE/Mobs/Customization/Harpy/harpy_wings.rsi state: bionic_wings_tone_2 shader: unshaded diff --git a/Resources/Prototypes/Einstein-Engines/Entities/Mobs/Customization/Markings/oni_feet.yml b/Resources/Prototypes/_EE/Entities/Mobs/Customization/Markings/oni_feet.yml similarity index 81% rename from Resources/Prototypes/Einstein-Engines/Entities/Mobs/Customization/Markings/oni_feet.yml rename to Resources/Prototypes/_EE/Entities/Mobs/Customization/Markings/oni_feet.yml index eb58b69076d..61a13c62b54 100644 --- a/Resources/Prototypes/Einstein-Engines/Entities/Mobs/Customization/Markings/oni_feet.yml +++ b/Resources/Prototypes/_EE/Entities/Mobs/Customization/Markings/oni_feet.yml @@ -9,5 +9,5 @@ !type:SimpleColoring color: "#454545" sprites: - - sprite: Einstein-Engines/Mobs/Customization/oni_feet.rsi + - sprite: _EE/Mobs/Customization/oni_feet.rsi state: two_toes diff --git a/Resources/Prototypes/Einstein-Engines/Entities/Mobs/Customization/Markings/oni_horns.yml b/Resources/Prototypes/_EE/Entities/Mobs/Customization/Markings/oni_horns.yml similarity index 60% rename from Resources/Prototypes/Einstein-Engines/Entities/Mobs/Customization/Markings/oni_horns.yml rename to Resources/Prototypes/_EE/Entities/Mobs/Customization/Markings/oni_horns.yml index 3dc309f756f..92907844a34 100644 --- a/Resources/Prototypes/Einstein-Engines/Entities/Mobs/Customization/Markings/oni_horns.yml +++ b/Resources/Prototypes/_EE/Entities/Mobs/Customization/Markings/oni_horns.yml @@ -5,7 +5,7 @@ forcedColoring: false speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns48x48.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns48x48.rsi state: tall_curved - type: marking id: OniHornTallCurved3Tone @@ -14,11 +14,11 @@ forcedColoring: false speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns48x48.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns48x48.rsi state: tall_curved_3tone_1 - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns48x48.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns48x48.rsi state: tall_curved_3tone_2 - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns48x48.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns48x48.rsi state: tall_curved_3tone_3 - type: marking id: OniHornTallBull @@ -27,7 +27,7 @@ forcedColoring: false speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns48x48.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns48x48.rsi state: tall_bull - type: marking id: OniHornTallBull3Tone @@ -36,11 +36,11 @@ forcedColoring: false speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns48x48.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns48x48.rsi state: tall_bull_3tone_1 - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns48x48.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns48x48.rsi state: tall_bull_3tone_2 - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns48x48.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns48x48.rsi state: tall_bull_3tone_3 - type: marking id: OniHornCrowned @@ -49,7 +49,7 @@ forcedColoring: false speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: crowned - type: marking @@ -59,7 +59,7 @@ forcedColoring: false speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: serket - type: marking @@ -69,11 +69,11 @@ forcedColoring: false speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: serket_3tone_1 - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: serket_3tone_2 - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: serket_3tone_3 - type: marking @@ -83,7 +83,7 @@ forcedColoring: false speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: pisces - type: marking @@ -93,9 +93,9 @@ forcedColoring: false speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: pisces_2tone_1 - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: pisces_2tone_2 - type: marking @@ -105,11 +105,11 @@ forcedColoring: false speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: pisces_3tone_1 - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: pisces_3tone_2 - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: pisces_3tone_3 - type: marking @@ -119,7 +119,7 @@ forcedColoring: false speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: virgo - type: marking @@ -129,11 +129,11 @@ forcedColoring: false speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: virgo_3tone_1 - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: virgo_3tone_2 - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: virgo_3tone_3 - type: marking @@ -143,7 +143,7 @@ forcedColoring: false speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: sagittarius - type: marking @@ -153,11 +153,11 @@ forcedColoring: false speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: sagittarius_3tone_1 - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: sagittarius_3tone_2 - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: sagittarius_3tone_3 - type: marking @@ -167,7 +167,7 @@ forcedColoring: false speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: vantas - type: marking @@ -177,11 +177,11 @@ forcedColoring: false speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: vantas_3tone_1 - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: vantas_3tone_2 - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: vantas_3tone_3 - type: marking @@ -191,7 +191,7 @@ forcedColoring: false speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns48x48.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns48x48.rsi state: makara - type: marking @@ -201,9 +201,9 @@ forcedColoring: false speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns48x48.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns48x48.rsi state: makara_2tone_1 - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns48x48.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns48x48.rsi state: makara_2tone_2 - type: marking @@ -213,11 +213,11 @@ forcedColoring: false speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns48x48.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns48x48.rsi state: makara_3tone_1 - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns48x48.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns48x48.rsi state: makara_3tone_2 - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns48x48.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns48x48.rsi state: makara_3tone_3 - type: marking @@ -227,7 +227,7 @@ forcedColoring: false speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: nepeta - type: marking @@ -237,11 +237,11 @@ forcedColoring: false speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: nepeta_3tone_1 - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: nepeta_3tone_2 - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: nepeta_3tone_3 - type: marking @@ -251,7 +251,7 @@ forcedColoring: false speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: taurus - type: marking @@ -261,9 +261,9 @@ forcedColoring: false speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: taurus_2tone_1 - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: taurus_2tone_2 - type: marking @@ -273,11 +273,11 @@ forcedColoring: false speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: taurus_3tone_1 - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: taurus_3tone_2 - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: taurus_3tone_3 - type: marking @@ -287,7 +287,7 @@ forcedColoring: false speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: aries - type: marking @@ -297,11 +297,11 @@ forcedColoring: false speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: aries_3tone_1 - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: aries_3tone_2 - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: aries_3tone_3 - type: marking @@ -311,7 +311,7 @@ forcedColoring: false speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: tavris - type: marking @@ -321,11 +321,11 @@ forcedColoring: false speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: tavris_3tone_1 - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: tavris_3tone_2 - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: tavris_3tone_3 - type: marking @@ -335,7 +335,7 @@ forcedColoring: false speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: inclined - type: marking @@ -345,11 +345,11 @@ forcedColoring: false speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: inclined_3tone_1 - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: inclined_3tone_2 - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: inclined_3tone_3 - type: marking @@ -359,7 +359,7 @@ forcedColoring: false speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: wavy - type: marking @@ -369,9 +369,9 @@ forcedColoring: false speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: wavy_2tone_1 - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: wavy_2tone_2 - type: marking @@ -381,11 +381,11 @@ forcedColoring: false speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: wavy_3tone_1 - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: wavy_3tone_2 - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: wavy_3tone_3 - type: marking @@ -395,9 +395,9 @@ forcedColoring: false speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: antlers_2tone_1 - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: antlers_2tone_2 - type: marking @@ -407,11 +407,11 @@ forcedColoring: false speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: antlers_3tone_1 - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: antlers_3tone_2 - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: antlers_3tone_3 - type: marking @@ -421,7 +421,7 @@ forcedColoring: false speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: unicorn - type: marking @@ -431,7 +431,7 @@ forcedColoring: false speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: erebia - type: marking @@ -441,11 +441,11 @@ forcedColoring: false speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: erebia_3tone_1 - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: erebia_3tone_2 - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: erebia_3tone_3 - type: marking @@ -455,9 +455,9 @@ forcedColoring: false speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: erebia - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: erebia_rings - type: marking @@ -467,7 +467,7 @@ forcedColoring: false speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: double_thick - type: marking @@ -477,9 +477,9 @@ forcedColoring: false speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: double_thick_2tone_1 - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: double_thick_2tone_2 - type: marking @@ -489,11 +489,11 @@ forcedColoring: false speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: double_thick_3tone_1 - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: double_thick_3tone_2 - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: double_thick_3tone_3 - type: marking @@ -503,11 +503,11 @@ forcedColoring: false speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: double_curved_3tone_1 - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: double_curved_3tone_2 - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: double_curved_3tone_3 - type: marking @@ -517,9 +517,9 @@ forcedColoring: false speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: double_curved_outwards_3tone_1 - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: double_curved_outwards_3tone_2 - - sprite: Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi + - sprite: _EE/Mobs/Customization/Oni/oni_horns.rsi state: double_curved_outwards_3tone_3 diff --git a/Resources/Prototypes/Einstein-Engines/Entities/Mobs/Customization/Markings/pointy_ears.yml b/Resources/Prototypes/_EE/Entities/Mobs/Customization/Markings/pointy_ears.yml similarity index 73% rename from Resources/Prototypes/Einstein-Engines/Entities/Mobs/Customization/Markings/pointy_ears.yml rename to Resources/Prototypes/_EE/Entities/Mobs/Customization/Markings/pointy_ears.yml index 62a03c44bbd..b1ec5df09f2 100644 --- a/Resources/Prototypes/Einstein-Engines/Entities/Mobs/Customization/Markings/pointy_ears.yml +++ b/Resources/Prototypes/_EE/Entities/Mobs/Customization/Markings/pointy_ears.yml @@ -5,7 +5,7 @@ forcedColoring: true speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/pointy_ears.rsi + - sprite: _EE/Mobs/Customization/pointy_ears.rsi state: pointy_ears_standard - type: marking @@ -15,7 +15,7 @@ forcedColoring: true speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/pointy_ears.rsi + - sprite: _EE/Mobs/Customization/pointy_ears.rsi state: pointy_ears_wide - type: marking @@ -25,7 +25,7 @@ forcedColoring: true speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/pointy_ears.rsi + - sprite: _EE/Mobs/Customization/pointy_ears.rsi state: pointy_ears_small - type: marking @@ -35,7 +35,7 @@ forcedColoring: true speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/pointy_ears.rsi + - sprite: _EE/Mobs/Customization/pointy_ears.rsi state: pointy_ears_upwards - type: marking @@ -45,7 +45,7 @@ forcedColoring: true speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/pointy_ears.rsi + - sprite: _EE/Mobs/Customization/pointy_ears.rsi state: pointy_ears_tall - type: marking @@ -55,7 +55,7 @@ forcedColoring: true speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/pointy_ears.rsi + - sprite: _EE/Mobs/Customization/pointy_ears.rsi state: pointy_ears_slanted - type: marking @@ -65,7 +65,7 @@ forcedColoring: true speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/pointy_ears.rsi + - sprite: _EE/Mobs/Customization/pointy_ears.rsi state: pointy_ears_thin - type: marking @@ -75,7 +75,7 @@ forcedColoring: true speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/pointy_ears.rsi + - sprite: _EE/Mobs/Customization/pointy_ears.rsi state: pointy_ears_large - type: marking @@ -85,5 +85,5 @@ forcedColoring: true speciesRestriction: [Oni] sprites: - - sprite: Einstein-Engines/Mobs/Customization/pointy_ears.rsi + - sprite: _EE/Mobs/Customization/pointy_ears.rsi state: pointy_ears_none diff --git a/Resources/Prototypes/Einstein-Engines/Entities/Mobs/Customization/Markings/tusks.yml b/Resources/Prototypes/_EE/Entities/Mobs/Customization/Markings/tusks.yml similarity index 78% rename from Resources/Prototypes/Einstein-Engines/Entities/Mobs/Customization/Markings/tusks.yml rename to Resources/Prototypes/_EE/Entities/Mobs/Customization/Markings/tusks.yml index c5cd2c58530..52789ed8dca 100644 --- a/Resources/Prototypes/Einstein-Engines/Entities/Mobs/Customization/Markings/tusks.yml +++ b/Resources/Prototypes/_EE/Entities/Mobs/Customization/Markings/tusks.yml @@ -9,7 +9,7 @@ !type:SimpleColoring color: "#d9d9d9" sprites: - - sprite: Einstein-Engines/Mobs/Customization/goblin_tusks.rsi + - sprite: _EE/Mobs/Customization/goblin_tusks.rsi state: goblin_tusks_small - type: marking @@ -23,5 +23,5 @@ !type:SimpleColoring color: "#d9d9d9" sprites: - - sprite: Einstein-Engines/Mobs/Customization/goblin_tusks.rsi + - sprite: _EE/Mobs/Customization/goblin_tusks.rsi state: goblin_tusks_big diff --git a/Resources/Prototypes/Einstein-Engines/Entities/Mobs/Customization/cyberlimbs/comp1.yml b/Resources/Prototypes/_EE/Entities/Mobs/Customization/cyberlimbs/comp1.yml similarity index 62% rename from Resources/Prototypes/Einstein-Engines/Entities/Mobs/Customization/cyberlimbs/comp1.yml rename to Resources/Prototypes/_EE/Entities/Mobs/Customization/cyberlimbs/comp1.yml index 9795b96e708..de00242f59c 100644 --- a/Resources/Prototypes/Einstein-Engines/Entities/Mobs/Customization/cyberlimbs/comp1.yml +++ b/Resources/Prototypes/_EE/Entities/Mobs/Customization/cyberlimbs/comp1.yml @@ -4,11 +4,11 @@ markingCategory: Arms speciesRestriction: [Moth, Human, Arachnid, Felinid, Oni, Vulpkanin, Reptilian, Rodentia] sprites: - - sprite: Einstein-Engines/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi + - sprite: _EE/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi state: l_arm-primary - - sprite: Einstein-Engines/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi + - sprite: _EE/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi state: l_arm-secondary - - sprite: Einstein-Engines/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi + - sprite: _EE/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi state: l_arm-tertiary - type: marking @@ -17,7 +17,7 @@ markingCategory: Arms speciesRestriction: [Moth, Human, Arachnid, Felinid, Oni, Vulpkanin, Reptilian, Rodentia] sprites: - - sprite: Einstein-Engines/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi + - sprite: _EE/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi state: l_hand - type: marking @@ -26,9 +26,9 @@ markingCategory: Legs speciesRestriction: [Moth, Human, Arachnid, Felinid, Oni, Vulpkanin, Reptilian, Rodentia] sprites: - - sprite: Einstein-Engines/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi + - sprite: _EE/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi state: l_leg-primary - - sprite: Einstein-Engines/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi + - sprite: _EE/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi state: l_leg-secondary @@ -38,7 +38,7 @@ markingCategory: Legs speciesRestriction: [Moth, Human, Arachnid, Felinid, Oni, Vulpkanin, Reptilian, Rodentia] sprites: - - sprite: Einstein-Engines/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi + - sprite: _EE/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi state: l_foot @@ -49,11 +49,11 @@ markingCategory: Arms speciesRestriction: [Moth, Human, Arachnid, Felinid, Oni, Vulpkanin, Reptilian, Rodentia] sprites: - - sprite: Einstein-Engines/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi + - sprite: _EE/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi state: r_arm-primary - - sprite: Einstein-Engines/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi + - sprite: _EE/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi state: r_arm-secondary - - sprite: Einstein-Engines/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi + - sprite: _EE/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi state: r_arm-tertiary @@ -63,7 +63,7 @@ markingCategory: Arms speciesRestriction: [Moth, Human, Arachnid, Felinid, Oni, Vulpkanin, Reptilian, Rodentia] sprites: - - sprite: Einstein-Engines/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi + - sprite: _EE/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi state: r_hand - type: marking @@ -72,9 +72,9 @@ markingCategory: Legs speciesRestriction: [Moth, Human, Arachnid, Felinid, Oni, Vulpkanin, Reptilian, Rodentia] sprites: - - sprite: Einstein-Engines/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi + - sprite: _EE/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi state: r_leg-primary - - sprite: Einstein-Engines/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi + - sprite: _EE/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi state: r_leg-secondary @@ -84,5 +84,5 @@ markingCategory: Legs speciesRestriction: [Moth, Human, Arachnid, Felinid, Oni, Vulpkanin, Reptilian, Rodentia] sprites: - - sprite: Einstein-Engines/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi + - sprite: _EE/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi state: r_foot diff --git a/Resources/Prototypes/Einstein-Engines/Entities/Mobs/Customization/cyberlimbs/comp2.yml b/Resources/Prototypes/_EE/Entities/Mobs/Customization/cyberlimbs/comp2.yml similarity index 59% rename from Resources/Prototypes/Einstein-Engines/Entities/Mobs/Customization/cyberlimbs/comp2.yml rename to Resources/Prototypes/_EE/Entities/Mobs/Customization/cyberlimbs/comp2.yml index 12563137455..fd9b42cfd7b 100644 --- a/Resources/Prototypes/Einstein-Engines/Entities/Mobs/Customization/cyberlimbs/comp2.yml +++ b/Resources/Prototypes/_EE/Entities/Mobs/Customization/cyberlimbs/comp2.yml @@ -4,9 +4,9 @@ markingCategory: Arms speciesRestriction: [Moth, Human, Arachnid, Felinid, Oni, Vulpkanin, Reptilian, Rodentia] sprites: - - sprite: Einstein-Engines/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi + - sprite: _EE/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi state: l_arm-1 - - sprite: Einstein-Engines/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi + - sprite: _EE/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi state: l_arm-2 - type: marking @@ -15,9 +15,9 @@ markingCategory: Arms speciesRestriction: [Moth, Human, Arachnid, Felinid, Oni, Vulpkanin, Reptilian, Rodentia] sprites: - - sprite: Einstein-Engines/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi + - sprite: _EE/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi state: l_hand-1 - - sprite: Einstein-Engines/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi + - sprite: _EE/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi state: l_hand-2 - type: marking @@ -26,9 +26,9 @@ markingCategory: Legs speciesRestriction: [Moth, Human, Arachnid, Felinid, Oni, Vulpkanin, Reptilian, Rodentia] sprites: - - sprite: Einstein-Engines/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi + - sprite: _EE/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi state: l_leg-1 - - sprite: Einstein-Engines/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi + - sprite: _EE/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi state: l_leg-2 @@ -38,9 +38,9 @@ markingCategory: Legs speciesRestriction: [Moth, Human, Arachnid, Felinid, Oni, Vulpkanin, Reptilian, Rodentia] sprites: - - sprite: Einstein-Engines/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi + - sprite: _EE/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi state: l_foot-1 - - sprite: Einstein-Engines/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi + - sprite: _EE/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi state: l_foot-2 @@ -51,9 +51,9 @@ markingCategory: Arms speciesRestriction: [Moth, Human, Arachnid, Felinid, Oni, Vulpkanin, Reptilian, Rodentia] sprites: - - sprite: Einstein-Engines/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi + - sprite: _EE/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi state: r_arm-1 - - sprite: Einstein-Engines/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi + - sprite: _EE/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi state: r_arm-2 @@ -63,9 +63,9 @@ markingCategory: Arms speciesRestriction: [Moth, Human, Arachnid, Felinid, Oni, Vulpkanin, Reptilian, Rodentia] sprites: - - sprite: Einstein-Engines/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi + - sprite: _EE/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi state: r_hand-1 - - sprite: Einstein-Engines/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi + - sprite: _EE/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi state: r_hand-2 @@ -75,9 +75,9 @@ markingCategory: Legs speciesRestriction: [Moth, Human, Arachnid, Felinid, Oni, Vulpkanin, Reptilian, Rodentia] sprites: - - sprite: Einstein-Engines/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi + - sprite: _EE/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi state: r_leg-1 - - sprite: Einstein-Engines/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi + - sprite: _EE/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi state: r_leg-2 @@ -87,7 +87,7 @@ markingCategory: Legs speciesRestriction: [Moth, Human, Arachnid, Felinid, Oni, Vulpkanin, Reptilian, Rodentia] sprites: - - sprite: Einstein-Engines/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi + - sprite: _EE/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi state: r_foot-1 - - sprite: Einstein-Engines/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi + - sprite: _EE/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi state: r_foot-2 diff --git a/Resources/Prototypes/Einstein-Engines/SoundCollections/harpy.yml b/Resources/Prototypes/_EE/SoundCollections/harpy.yml similarity index 100% rename from Resources/Prototypes/Einstein-Engines/SoundCollections/harpy.yml rename to Resources/Prototypes/_EE/SoundCollections/harpy.yml diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_ears.rsi/harpy_ears_large.png b/Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_ears.rsi/harpy_ears_large.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_ears.rsi/harpy_ears_large.png rename to Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_ears.rsi/harpy_ears_large.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_ears.rsi/meta.json b/Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_ears.rsi/meta.json similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_ears.rsi/meta.json rename to Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_ears.rsi/meta.json diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_tails.rsi/forked_long.png b/Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_tails.rsi/forked_long.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_tails.rsi/forked_long.png rename to Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_tails.rsi/forked_long.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_tails.rsi/haven_tone_1.png b/Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_tails.rsi/haven_tone_1.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_tails.rsi/haven_tone_1.png rename to Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_tails.rsi/haven_tone_1.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_tails.rsi/haven_tone_2.png b/Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_tails.rsi/haven_tone_2.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_tails.rsi/haven_tone_2.png rename to Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_tails.rsi/haven_tone_2.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_tails.rsi/huescale_forked_tailfin.png b/Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_tails.rsi/huescale_forked_tailfin.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_tails.rsi/huescale_forked_tailfin.png rename to Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_tails.rsi/huescale_forked_tailfin.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_tails.rsi/meta.json b/Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_tails.rsi/meta.json similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_tails.rsi/meta.json rename to Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_tails.rsi/meta.json diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_tails.rsi/swallow_tail.png b/Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_tails.rsi/swallow_tail.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_tails.rsi/swallow_tail.png rename to Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_tails.rsi/swallow_tail.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_tails.rsi/whitescale_forked_tailfin.png b/Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_tails.rsi/whitescale_forked_tailfin.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_tails.rsi/whitescale_forked_tailfin.png rename to Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_tails.rsi/whitescale_forked_tailfin.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_tails48x48.rsi/meta.json b/Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_tails48x48.rsi/meta.json similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_tails48x48.rsi/meta.json rename to Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_tails48x48.rsi/meta.json diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_tails48x48.rsi/peacock_tail_eyes.png b/Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_tails48x48.rsi/peacock_tail_eyes.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_tails48x48.rsi/peacock_tail_eyes.png rename to Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_tails48x48.rsi/peacock_tail_eyes.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_tails48x48.rsi/peacock_tail_feathers.png b/Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_tails48x48.rsi/peacock_tail_feathers.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_tails48x48.rsi/peacock_tail_feathers.png rename to Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_tails48x48.rsi/peacock_tail_feathers.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi/bat_wings_tone_1.png b/Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_wings.rsi/bat_wings_tone_1.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi/bat_wings_tone_1.png rename to Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_wings.rsi/bat_wings_tone_1.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi/bat_wings_tone_2.png b/Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_wings.rsi/bat_wings_tone_2.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi/bat_wings_tone_2.png rename to Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_wings.rsi/bat_wings_tone_2.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi/bionic_wings_tone_1.png b/Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_wings.rsi/bionic_wings_tone_1.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi/bionic_wings_tone_1.png rename to Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_wings.rsi/bionic_wings_tone_1.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi/bionic_wings_tone_2.png b/Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_wings.rsi/bionic_wings_tone_2.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi/bionic_wings_tone_2.png rename to Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_wings.rsi/bionic_wings_tone_2.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi/classic_harpy.png b/Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_wings.rsi/classic_harpy.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi/classic_harpy.png rename to Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_wings.rsi/classic_harpy.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_2tone_1.png b/Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_2tone_1.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_2tone_1.png rename to Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_2tone_1.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_2tone_2.png b/Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_2tone_2.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_2tone_2.png rename to Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_2tone_2.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_3tone_1.png b/Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_3tone_1.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_3tone_1.png rename to Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_3tone_1.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_3tone_2.png b/Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_3tone_2.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_3tone_2.png rename to Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_3tone_2.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_3tone_3.png b/Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_3tone_3.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_3tone_3.png rename to Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_3tone_3.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_speckled_1.png b/Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_speckled_1.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_speckled_1.png rename to Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_speckled_1.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_speckled_2.png b/Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_speckled_2.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_speckled_2.png rename to Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_speckled_2.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_undertone_1.png b/Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_undertone_1.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_undertone_1.png rename to Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_undertone_1.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_undertone_2.png b/Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_undertone_2.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_undertone_2.png rename to Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_undertone_2.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_wingtip_1.png b/Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_wingtip_1.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_wingtip_1.png rename to Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_wingtip_1.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_wingtip_2.png b/Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_wingtip_2.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_wingtip_2.png rename to Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_wings.rsi/harpy_wingtip_2.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi/huescale_harpy.png b/Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_wings.rsi/huescale_harpy.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi/huescale_harpy.png rename to Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_wings.rsi/huescale_harpy.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi/huescale_harpy_folded.png b/Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_wings.rsi/huescale_harpy_folded.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi/huescale_harpy_folded.png rename to Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_wings.rsi/huescale_harpy_folded.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi/huescale_harpy_wing_owl.png b/Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_wings.rsi/huescale_harpy_wing_owl.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi/huescale_harpy_wing_owl.png rename to Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_wings.rsi/huescale_harpy_wing_owl.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi/meta.json b/Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_wings.rsi/meta.json similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi/meta.json rename to Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_wings.rsi/meta.json diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi/whitescale_harpy.png b/Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_wings.rsi/whitescale_harpy.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi/whitescale_harpy.png rename to Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_wings.rsi/whitescale_harpy.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi/whitescale_harpy_folded.png b/Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_wings.rsi/whitescale_harpy_folded.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi/whitescale_harpy_folded.png rename to Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_wings.rsi/whitescale_harpy_folded.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi/whitescale_harpy_wing_owl.png b/Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_wings.rsi/whitescale_harpy_wing_owl.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Harpy/harpy_wings.rsi/whitescale_harpy_wing_owl.png rename to Resources/Textures/_EE/Mobs/Customization/Harpy/harpy_wings.rsi/whitescale_harpy_wing_owl.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/antlers_2tone_1.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/antlers_2tone_1.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/antlers_2tone_1.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/antlers_2tone_1.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/antlers_2tone_2.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/antlers_2tone_2.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/antlers_2tone_2.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/antlers_2tone_2.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/antlers_3tone_1.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/antlers_3tone_1.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/antlers_3tone_1.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/antlers_3tone_1.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/antlers_3tone_2.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/antlers_3tone_2.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/antlers_3tone_2.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/antlers_3tone_2.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/antlers_3tone_3.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/antlers_3tone_3.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/antlers_3tone_3.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/antlers_3tone_3.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/aries.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/aries.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/aries.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/aries.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/aries_3tone_1.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/aries_3tone_1.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/aries_3tone_1.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/aries_3tone_1.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/aries_3tone_2.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/aries_3tone_2.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/aries_3tone_2.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/aries_3tone_2.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/aries_3tone_3.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/aries_3tone_3.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/aries_3tone_3.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/aries_3tone_3.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/crowned.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/crowned.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/crowned.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/crowned.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/double_curved_3tone_1.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/double_curved_3tone_1.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/double_curved_3tone_1.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/double_curved_3tone_1.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/double_curved_3tone_2.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/double_curved_3tone_2.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/double_curved_3tone_2.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/double_curved_3tone_2.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/double_curved_3tone_3.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/double_curved_3tone_3.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/double_curved_3tone_3.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/double_curved_3tone_3.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/double_curved_outwards_3tone_1.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/double_curved_outwards_3tone_1.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/double_curved_outwards_3tone_1.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/double_curved_outwards_3tone_1.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/double_curved_outwards_3tone_2.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/double_curved_outwards_3tone_2.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/double_curved_outwards_3tone_2.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/double_curved_outwards_3tone_2.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/double_curved_outwards_3tone_3.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/double_curved_outwards_3tone_3.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/double_curved_outwards_3tone_3.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/double_curved_outwards_3tone_3.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/double_thick.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/double_thick.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/double_thick.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/double_thick.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/double_thick_2tone_1.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/double_thick_2tone_1.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/double_thick_2tone_1.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/double_thick_2tone_1.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/double_thick_2tone_2.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/double_thick_2tone_2.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/double_thick_2tone_2.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/double_thick_2tone_2.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/double_thick_3tone_1.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/double_thick_3tone_1.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/double_thick_3tone_1.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/double_thick_3tone_1.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/double_thick_3tone_2.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/double_thick_3tone_2.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/double_thick_3tone_2.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/double_thick_3tone_2.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/double_thick_3tone_3.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/double_thick_3tone_3.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/double_thick_3tone_3.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/double_thick_3tone_3.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/erebia.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/erebia.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/erebia.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/erebia.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/erebia_3tone_1.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/erebia_3tone_1.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/erebia_3tone_1.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/erebia_3tone_1.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/erebia_3tone_2.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/erebia_3tone_2.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/erebia_3tone_2.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/erebia_3tone_2.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/erebia_3tone_3.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/erebia_3tone_3.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/erebia_3tone_3.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/erebia_3tone_3.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/erebia_rings.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/erebia_rings.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/erebia_rings.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/erebia_rings.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/inclined.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/inclined.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/inclined.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/inclined.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/inclined_3tone_1.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/inclined_3tone_1.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/inclined_3tone_1.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/inclined_3tone_1.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/inclined_3tone_2.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/inclined_3tone_2.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/inclined_3tone_2.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/inclined_3tone_2.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/inclined_3tone_3.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/inclined_3tone_3.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/inclined_3tone_3.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/inclined_3tone_3.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/meta.json b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/meta.json similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/meta.json rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/meta.json diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/nepeta.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/nepeta.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/nepeta.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/nepeta.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/nepeta_3tone_1.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/nepeta_3tone_1.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/nepeta_3tone_1.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/nepeta_3tone_1.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/nepeta_3tone_2.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/nepeta_3tone_2.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/nepeta_3tone_2.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/nepeta_3tone_2.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/nepeta_3tone_3.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/nepeta_3tone_3.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/nepeta_3tone_3.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/nepeta_3tone_3.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/pisces.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/pisces.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/pisces.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/pisces.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/pisces_2tone_1.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/pisces_2tone_1.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/pisces_2tone_1.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/pisces_2tone_1.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/pisces_2tone_2.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/pisces_2tone_2.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/pisces_2tone_2.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/pisces_2tone_2.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/pisces_3tone_1.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/pisces_3tone_1.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/pisces_3tone_1.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/pisces_3tone_1.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/pisces_3tone_2.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/pisces_3tone_2.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/pisces_3tone_2.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/pisces_3tone_2.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/pisces_3tone_3.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/pisces_3tone_3.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/pisces_3tone_3.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/pisces_3tone_3.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/sagittarius.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/sagittarius.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/sagittarius.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/sagittarius.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/sagittarius_3tone_1.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/sagittarius_3tone_1.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/sagittarius_3tone_1.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/sagittarius_3tone_1.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/sagittarius_3tone_2.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/sagittarius_3tone_2.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/sagittarius_3tone_2.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/sagittarius_3tone_2.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/sagittarius_3tone_3.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/sagittarius_3tone_3.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/sagittarius_3tone_3.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/sagittarius_3tone_3.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/serket.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/serket.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/serket.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/serket.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/serket_3tone_1.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/serket_3tone_1.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/serket_3tone_1.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/serket_3tone_1.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/serket_3tone_2.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/serket_3tone_2.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/serket_3tone_2.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/serket_3tone_2.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/serket_3tone_3.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/serket_3tone_3.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/serket_3tone_3.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/serket_3tone_3.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/taurus.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/taurus.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/taurus.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/taurus.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/taurus_2tone_1.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/taurus_2tone_1.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/taurus_2tone_1.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/taurus_2tone_1.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/taurus_2tone_2.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/taurus_2tone_2.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/taurus_2tone_2.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/taurus_2tone_2.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/taurus_3tone_1.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/taurus_3tone_1.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/taurus_3tone_1.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/taurus_3tone_1.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/taurus_3tone_2.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/taurus_3tone_2.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/taurus_3tone_2.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/taurus_3tone_2.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/taurus_3tone_3.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/taurus_3tone_3.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/taurus_3tone_3.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/taurus_3tone_3.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/tavris.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/tavris.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/tavris.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/tavris.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/tavris_3tone_1.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/tavris_3tone_1.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/tavris_3tone_1.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/tavris_3tone_1.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/tavris_3tone_2.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/tavris_3tone_2.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/tavris_3tone_2.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/tavris_3tone_2.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/tavris_3tone_3.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/tavris_3tone_3.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/tavris_3tone_3.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/tavris_3tone_3.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/unicorn.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/unicorn.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/unicorn.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/unicorn.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/vantas.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/vantas.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/vantas.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/vantas.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/vantas_3tone_1.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/vantas_3tone_1.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/vantas_3tone_1.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/vantas_3tone_1.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/vantas_3tone_2.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/vantas_3tone_2.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/vantas_3tone_2.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/vantas_3tone_2.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/vantas_3tone_3.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/vantas_3tone_3.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/vantas_3tone_3.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/vantas_3tone_3.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/virgo.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/virgo.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/virgo.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/virgo.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/virgo_3tone_1.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/virgo_3tone_1.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/virgo_3tone_1.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/virgo_3tone_1.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/virgo_3tone_2.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/virgo_3tone_2.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/virgo_3tone_2.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/virgo_3tone_2.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/virgo_3tone_3.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/virgo_3tone_3.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/virgo_3tone_3.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/virgo_3tone_3.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/wavy.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/wavy.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/wavy.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/wavy.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/wavy_2tone_1.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/wavy_2tone_1.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/wavy_2tone_1.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/wavy_2tone_1.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/wavy_2tone_2.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/wavy_2tone_2.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/wavy_2tone_2.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/wavy_2tone_2.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/wavy_3tone_1.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/wavy_3tone_1.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/wavy_3tone_1.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/wavy_3tone_1.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/wavy_3tone_2.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/wavy_3tone_2.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/wavy_3tone_2.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/wavy_3tone_2.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/wavy_3tone_3.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/wavy_3tone_3.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns.rsi/wavy_3tone_3.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns.rsi/wavy_3tone_3.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns48x48.rsi/makara.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns48x48.rsi/makara.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns48x48.rsi/makara.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns48x48.rsi/makara.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns48x48.rsi/makara_2tone_1.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns48x48.rsi/makara_2tone_1.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns48x48.rsi/makara_2tone_1.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns48x48.rsi/makara_2tone_1.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns48x48.rsi/makara_2tone_2.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns48x48.rsi/makara_2tone_2.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns48x48.rsi/makara_2tone_2.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns48x48.rsi/makara_2tone_2.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns48x48.rsi/makara_3tone_1.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns48x48.rsi/makara_3tone_1.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns48x48.rsi/makara_3tone_1.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns48x48.rsi/makara_3tone_1.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns48x48.rsi/makara_3tone_2.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns48x48.rsi/makara_3tone_2.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns48x48.rsi/makara_3tone_2.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns48x48.rsi/makara_3tone_2.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns48x48.rsi/makara_3tone_3.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns48x48.rsi/makara_3tone_3.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns48x48.rsi/makara_3tone_3.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns48x48.rsi/makara_3tone_3.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns48x48.rsi/meta.json b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns48x48.rsi/meta.json similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns48x48.rsi/meta.json rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns48x48.rsi/meta.json diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns48x48.rsi/tall_bull.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns48x48.rsi/tall_bull.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns48x48.rsi/tall_bull.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns48x48.rsi/tall_bull.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns48x48.rsi/tall_bull_3tone_1.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns48x48.rsi/tall_bull_3tone_1.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns48x48.rsi/tall_bull_3tone_1.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns48x48.rsi/tall_bull_3tone_1.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns48x48.rsi/tall_bull_3tone_2.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns48x48.rsi/tall_bull_3tone_2.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns48x48.rsi/tall_bull_3tone_2.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns48x48.rsi/tall_bull_3tone_2.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns48x48.rsi/tall_bull_3tone_3.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns48x48.rsi/tall_bull_3tone_3.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns48x48.rsi/tall_bull_3tone_3.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns48x48.rsi/tall_bull_3tone_3.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns48x48.rsi/tall_curved.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns48x48.rsi/tall_curved.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns48x48.rsi/tall_curved.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns48x48.rsi/tall_curved.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns48x48.rsi/tall_curved_3tone_1.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns48x48.rsi/tall_curved_3tone_1.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns48x48.rsi/tall_curved_3tone_1.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns48x48.rsi/tall_curved_3tone_1.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns48x48.rsi/tall_curved_3tone_2.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns48x48.rsi/tall_curved_3tone_2.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns48x48.rsi/tall_curved_3tone_2.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns48x48.rsi/tall_curved_3tone_2.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns48x48.rsi/tall_curved_3tone_3.png b/Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns48x48.rsi/tall_curved_3tone_3.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/Oni/oni_horns48x48.rsi/tall_curved_3tone_3.png rename to Resources/Textures/_EE/Mobs/Customization/Oni/oni_horns48x48.rsi/tall_curved_3tone_3.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/l_arm-primary.png b/Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/l_arm-primary.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/l_arm-primary.png rename to Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/l_arm-primary.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/l_arm-secondary.png b/Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/l_arm-secondary.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/l_arm-secondary.png rename to Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/l_arm-secondary.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/l_arm-tertiary.png b/Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/l_arm-tertiary.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/l_arm-tertiary.png rename to Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/l_arm-tertiary.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/l_foot.png b/Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/l_foot.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/l_foot.png rename to Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/l_foot.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/l_hand.png b/Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/l_hand.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/l_hand.png rename to Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/l_hand.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/l_leg-primary.png b/Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/l_leg-primary.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/l_leg-primary.png rename to Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/l_leg-primary.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/l_leg-secondary.png b/Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/l_leg-secondary.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/l_leg-secondary.png rename to Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/l_leg-secondary.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/meta.json b/Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/meta.json similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/meta.json rename to Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/meta.json diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/r_arm-primary.png b/Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/r_arm-primary.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/r_arm-primary.png rename to Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/r_arm-primary.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/r_arm-secondary.png b/Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/r_arm-secondary.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/r_arm-secondary.png rename to Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/r_arm-secondary.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/r_arm-tertiary.png b/Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/r_arm-tertiary.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/r_arm-tertiary.png rename to Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/r_arm-tertiary.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/r_foot.png b/Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/r_foot.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/r_foot.png rename to Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/r_foot.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/r_hand.png b/Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/r_hand.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/r_hand.png rename to Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/r_hand.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/r_leg-primary.png b/Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/r_leg-primary.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/r_leg-primary.png rename to Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/r_leg-primary.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/r_leg-secondary.png b/Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/r_leg-secondary.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/r_leg-secondary.png rename to Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp1/comp1_main.rsi/r_leg-secondary.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/l_arm-1.png b/Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/l_arm-1.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/l_arm-1.png rename to Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/l_arm-1.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/l_arm-2.png b/Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/l_arm-2.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/l_arm-2.png rename to Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/l_arm-2.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/l_foot-1.png b/Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/l_foot-1.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/l_foot-1.png rename to Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/l_foot-1.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/l_foot-2.png b/Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/l_foot-2.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/l_foot-2.png rename to Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/l_foot-2.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/l_hand-1.png b/Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/l_hand-1.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/l_hand-1.png rename to Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/l_hand-1.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/l_hand-2.png b/Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/l_hand-2.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/l_hand-2.png rename to Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/l_hand-2.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/l_leg-1.png b/Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/l_leg-1.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/l_leg-1.png rename to Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/l_leg-1.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/l_leg-2.png b/Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/l_leg-2.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/l_leg-2.png rename to Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/l_leg-2.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/meta.json b/Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/meta.json similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/meta.json rename to Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/meta.json diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/r_arm-1.png b/Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/r_arm-1.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/r_arm-1.png rename to Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/r_arm-1.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/r_arm-2.png b/Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/r_arm-2.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/r_arm-2.png rename to Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/r_arm-2.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/r_foot-1.png b/Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/r_foot-1.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/r_foot-1.png rename to Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/r_foot-1.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/r_foot-2.png b/Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/r_foot-2.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/r_foot-2.png rename to Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/r_foot-2.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/r_hand-1.png b/Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/r_hand-1.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/r_hand-1.png rename to Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/r_hand-1.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/r_hand-2.png b/Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/r_hand-2.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/r_hand-2.png rename to Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/r_hand-2.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/r_leg-1.png b/Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/r_leg-1.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/r_leg-1.png rename to Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/r_leg-1.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/r_leg-2.png b/Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/r_leg-2.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/r_leg-2.png rename to Resources/Textures/_EE/Mobs/Customization/cyberlimbs/comp2/comp2_main.rsi/r_leg-2.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/goblin_tusks.rsi/goblin_tusks_big.png b/Resources/Textures/_EE/Mobs/Customization/goblin_tusks.rsi/goblin_tusks_big.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/goblin_tusks.rsi/goblin_tusks_big.png rename to Resources/Textures/_EE/Mobs/Customization/goblin_tusks.rsi/goblin_tusks_big.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/goblin_tusks.rsi/goblin_tusks_none.png b/Resources/Textures/_EE/Mobs/Customization/goblin_tusks.rsi/goblin_tusks_none.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/goblin_tusks.rsi/goblin_tusks_none.png rename to Resources/Textures/_EE/Mobs/Customization/goblin_tusks.rsi/goblin_tusks_none.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/goblin_tusks.rsi/goblin_tusks_small.png b/Resources/Textures/_EE/Mobs/Customization/goblin_tusks.rsi/goblin_tusks_small.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/goblin_tusks.rsi/goblin_tusks_small.png rename to Resources/Textures/_EE/Mobs/Customization/goblin_tusks.rsi/goblin_tusks_small.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/goblin_tusks.rsi/meta.json b/Resources/Textures/_EE/Mobs/Customization/goblin_tusks.rsi/meta.json similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/goblin_tusks.rsi/meta.json rename to Resources/Textures/_EE/Mobs/Customization/goblin_tusks.rsi/meta.json diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/oni_feet.rsi/meta.json b/Resources/Textures/_EE/Mobs/Customization/oni_feet.rsi/meta.json similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/oni_feet.rsi/meta.json rename to Resources/Textures/_EE/Mobs/Customization/oni_feet.rsi/meta.json diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/oni_feet.rsi/two_toes.png b/Resources/Textures/_EE/Mobs/Customization/oni_feet.rsi/two_toes.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/oni_feet.rsi/two_toes.png rename to Resources/Textures/_EE/Mobs/Customization/oni_feet.rsi/two_toes.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/pointy_ears.rsi/meta.json b/Resources/Textures/_EE/Mobs/Customization/pointy_ears.rsi/meta.json similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/pointy_ears.rsi/meta.json rename to Resources/Textures/_EE/Mobs/Customization/pointy_ears.rsi/meta.json diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/pointy_ears.rsi/pointy_ears_large.png b/Resources/Textures/_EE/Mobs/Customization/pointy_ears.rsi/pointy_ears_large.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/pointy_ears.rsi/pointy_ears_large.png rename to Resources/Textures/_EE/Mobs/Customization/pointy_ears.rsi/pointy_ears_large.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/pointy_ears.rsi/pointy_ears_none.png b/Resources/Textures/_EE/Mobs/Customization/pointy_ears.rsi/pointy_ears_none.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/pointy_ears.rsi/pointy_ears_none.png rename to Resources/Textures/_EE/Mobs/Customization/pointy_ears.rsi/pointy_ears_none.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/pointy_ears.rsi/pointy_ears_slanted.png b/Resources/Textures/_EE/Mobs/Customization/pointy_ears.rsi/pointy_ears_slanted.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/pointy_ears.rsi/pointy_ears_slanted.png rename to Resources/Textures/_EE/Mobs/Customization/pointy_ears.rsi/pointy_ears_slanted.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/pointy_ears.rsi/pointy_ears_small.png b/Resources/Textures/_EE/Mobs/Customization/pointy_ears.rsi/pointy_ears_small.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/pointy_ears.rsi/pointy_ears_small.png rename to Resources/Textures/_EE/Mobs/Customization/pointy_ears.rsi/pointy_ears_small.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/pointy_ears.rsi/pointy_ears_standard.png b/Resources/Textures/_EE/Mobs/Customization/pointy_ears.rsi/pointy_ears_standard.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/pointy_ears.rsi/pointy_ears_standard.png rename to Resources/Textures/_EE/Mobs/Customization/pointy_ears.rsi/pointy_ears_standard.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/pointy_ears.rsi/pointy_ears_tall.png b/Resources/Textures/_EE/Mobs/Customization/pointy_ears.rsi/pointy_ears_tall.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/pointy_ears.rsi/pointy_ears_tall.png rename to Resources/Textures/_EE/Mobs/Customization/pointy_ears.rsi/pointy_ears_tall.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/pointy_ears.rsi/pointy_ears_thin.png b/Resources/Textures/_EE/Mobs/Customization/pointy_ears.rsi/pointy_ears_thin.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/pointy_ears.rsi/pointy_ears_thin.png rename to Resources/Textures/_EE/Mobs/Customization/pointy_ears.rsi/pointy_ears_thin.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/pointy_ears.rsi/pointy_ears_upwards.png b/Resources/Textures/_EE/Mobs/Customization/pointy_ears.rsi/pointy_ears_upwards.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/pointy_ears.rsi/pointy_ears_upwards.png rename to Resources/Textures/_EE/Mobs/Customization/pointy_ears.rsi/pointy_ears_upwards.png diff --git a/Resources/Textures/Einstein-Engines/Mobs/Customization/pointy_ears.rsi/pointy_ears_wide.png b/Resources/Textures/_EE/Mobs/Customization/pointy_ears.rsi/pointy_ears_wide.png similarity index 100% rename from Resources/Textures/Einstein-Engines/Mobs/Customization/pointy_ears.rsi/pointy_ears_wide.png rename to Resources/Textures/_EE/Mobs/Customization/pointy_ears.rsi/pointy_ears_wide.png