From 0bef8336f44a0bdb3b0868bdae35bdf8d78d8db0 Mon Sep 17 00:00:00 2001 From: DEATHB4DEFEAT Date: Sun, 17 Sep 2023 15:03:47 -0700 Subject: [PATCH 01/21] goggles that can peer into The Dark --- .../SimpleStation14/Eye/EyeStartup.cs | 2 +- .../Components/ShadowkinSightComponent.cs | 7 +++ .../Systems/ShadowkinPowerSystem.DarkSwap.cs | 50 +++++++++++++++---- .../Shadowkin/Systems/ShadowkinSightSystem.cs | 29 +++++++++++ .../Systems/ShadowkinSystem.Blackeye.cs | 1 + .../Entities/Clothing/Eyes/glasses.yml | 16 +++++- 6 files changed, 92 insertions(+), 13 deletions(-) create mode 100644 Content.Server/SimpleStation14/Species/Shadowkin/Components/ShadowkinSightComponent.cs create mode 100644 Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinSightSystem.cs diff --git a/Content.Server/SimpleStation14/Eye/EyeStartup.cs b/Content.Server/SimpleStation14/Eye/EyeStartup.cs index 4691b8d37f..3fbb8c94c6 100644 --- a/Content.Server/SimpleStation14/Eye/EyeStartup.cs +++ b/Content.Server/SimpleStation14/Eye/EyeStartup.cs @@ -25,7 +25,7 @@ private void OnEyeStartup(EntityUid uid, EyeComponent component, ComponentStartu if (_entityManager.HasComponent(uid)) component.VisibilityMask |= (uint) VisibilityFlags.AIEye; - _shadowkinPowerSystem.SetCanSeeInvisibility(uid, _entityManager.HasComponent(uid)); + _shadowkinPowerSystem.SetCanSeeInvisibility(uid, _entityManager.HasComponent(uid), false, !_entityManager.HasComponent(uid)); } } } diff --git a/Content.Server/SimpleStation14/Species/Shadowkin/Components/ShadowkinSightComponent.cs b/Content.Server/SimpleStation14/Species/Shadowkin/Components/ShadowkinSightComponent.cs new file mode 100644 index 0000000000..4385020975 --- /dev/null +++ b/Content.Server/SimpleStation14/Species/Shadowkin/Components/ShadowkinSightComponent.cs @@ -0,0 +1,7 @@ +namespace Content.Server.SimpleStation14.Species.Shadowkin.Components; + +[RegisterComponent] +public sealed class ShadowkinSightComponent : Component +{ + +} diff --git a/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.DarkSwap.cs b/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.DarkSwap.cs index 186552508c..90f02da073 100644 --- a/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.DarkSwap.cs +++ b/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.DarkSwap.cs @@ -90,6 +90,22 @@ private void DarkSwap(EntityUid uid, ShadowkinDarkSwapPowerComponent component, } + /// + /// Handles the effects of darkswapping + /// + /// The entity being modified + /// Is the entity swapping in to or out of The Dark? + /// Should the entity become invisible? + /// Should darkswapping darken nearby lights? + /// Stamina cost for darkswapping + /// Power cost for darkswapping + /// Sound for the darkswapping + /// Volume for the on sound + /// Stamina cost for un swapping + /// Power cost for un swapping + /// Sound for the un swapping + /// Volume for the off sound + /// If from an event, handle it public void SetDarkened( EntityUid performer, bool addComp, @@ -145,7 +161,7 @@ private void OnInvisStartup(EntityUid uid, ShadowkinDarkSwappedComponent compone EnsureComp(uid); if (component.Invisible) - SetCanSeeInvisibility(uid, true); + SetCanSeeInvisibility(uid, true, true, true); } private void OnInvisShutdown(EntityUid uid, ShadowkinDarkSwappedComponent component, ComponentShutdown args) @@ -153,7 +169,7 @@ private void OnInvisShutdown(EntityUid uid, ShadowkinDarkSwappedComponent compon RemComp(uid); if (component.Invisible) - SetCanSeeInvisibility(uid, false); + SetCanSeeInvisibility(uid, false, true, true); component.Darken = false; @@ -170,22 +186,32 @@ private void OnInvisShutdown(EntityUid uid, ShadowkinDarkSwappedComponent compon } - public void SetCanSeeInvisibility(EntityUid uid, bool set) + /// + /// Makes the specified entity able to see Shadowkin invisibility. + /// + /// Entity to modify + /// Whether the entity can see invisibility + /// Should the entity be moved to another visibility layer? + /// (Only gets considered if set is true) Adds stealth to the entity + public void SetCanSeeInvisibility(EntityUid uid, bool enabled, bool invisibility, bool stealth) { var visibility = _entity.EnsureComponent(uid); - if (set) + if (enabled) { if (_entity.TryGetComponent(uid, out EyeComponent? eye)) { eye.VisibilityMask |= (uint) VisibilityFlags.DarkSwapInvisibility; } - _visibility.AddLayer(uid, visibility, (int) VisibilityFlags.DarkSwapInvisibility, false); - _visibility.RemoveLayer(uid, visibility, (int) VisibilityFlags.Normal, false); + if (invisibility) + { + _visibility.AddLayer(uid, visibility, (int) VisibilityFlags.DarkSwapInvisibility, false); + _visibility.RemoveLayer(uid, visibility, (int) VisibilityFlags.Normal, false); + } _visibility.RefreshVisibility(uid); - if (!_entity.TryGetComponent(uid, out var _)) + if (stealth) _stealth.SetVisibility(uid, 0.8f, _entity.EnsureComponent(uid)); } else @@ -195,12 +221,14 @@ public void SetCanSeeInvisibility(EntityUid uid, bool set) eye.VisibilityMask &= ~(uint) VisibilityFlags.DarkSwapInvisibility; } - _visibility.RemoveLayer(uid, visibility, (int) VisibilityFlags.DarkSwapInvisibility, false); - _visibility.AddLayer(uid, visibility, (int) VisibilityFlags.Normal, false); + if (invisibility) + { + _visibility.RemoveLayer(uid, visibility, (int) VisibilityFlags.DarkSwapInvisibility, false); + _visibility.AddLayer(uid, visibility, (int) VisibilityFlags.Normal, false); + } _visibility.RefreshVisibility(uid); - if (!_entity.TryGetComponent(uid, out var _)) - _entity.RemoveComponent(uid); + _entity.RemoveComponent(uid); } } } diff --git a/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinSightSystem.cs b/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinSightSystem.cs new file mode 100644 index 0000000000..4685b8b40c --- /dev/null +++ b/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinSightSystem.cs @@ -0,0 +1,29 @@ +using Content.Server.SimpleStation14.Species.Shadowkin.Components; +using Content.Shared.Inventory.Events; + +namespace Content.Server.SimpleStation14.Species.Shadowkin.Systems; + +public sealed class ShadowkinSightSystem : EntitySystem +{ + [Dependency] private readonly ShadowkinDarkSwapSystem _darkSwap = default!; + + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnEquipped); + SubscribeLocalEvent(OnUnEquipped); + } + + + private void OnEquipped(EntityUid uid, ShadowkinSightComponent component, GotEquippedEvent args) + { + _darkSwap.SetCanSeeInvisibility(args.Equipee, true, false, false); + } + + private void OnUnEquipped(EntityUid uid, ShadowkinSightComponent component, GotUnequippedEvent args) + { + _darkSwap.SetCanSeeInvisibility(args.Equipee, false, false, false); + } +} diff --git a/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinSystem.Blackeye.cs b/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinSystem.Blackeye.cs index 91d25a195a..52df6f2fa6 100644 --- a/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinSystem.Blackeye.cs +++ b/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinSystem.Blackeye.cs @@ -58,6 +58,7 @@ private void OnBlackeye(ShadowkinBlackeyeEvent ev) _entity.RemoveComponent(ev.Uid); _entity.RemoveComponent(ev.Uid); _entity.RemoveComponent(ev.Uid); + _entity.RemoveComponent(ev.Uid); if (!ev.Damage) return; diff --git a/Resources/Prototypes/SimpleStation14/Entities/Clothing/Eyes/glasses.yml b/Resources/Prototypes/SimpleStation14/Entities/Clothing/Eyes/glasses.yml index ae4bfa8937..0417820c72 100644 --- a/Resources/Prototypes/SimpleStation14/Entities/Clothing/Eyes/glasses.yml +++ b/Resources/Prototypes/SimpleStation14/Entities/Clothing/Eyes/glasses.yml @@ -9,4 +9,18 @@ tag: GlassesNearsight - type: DropOnSlip chance: 5 - + +- type: entity + parent: ClothingEyesBase + id: ClothingEyesGlassesShadowkinThing + name: darkened goggles # TODO: Temporary name? + description: An unusual pair of goggles developed during a time of inhumane experimentation involving Shadowkin. They are designed to allow the wearer to peer into The Dark. + components: + - type: Sprite + sprite: Clothing/Eyes/Glasses/meson.rsi + - type: Clothing + sprite: Clothing/Eyes/Glasses/meson.rsi + - type: EyeProtection + - type: DropOnSlip + chance: 20 + - type: ShadowkinSight From fe592561acf5bbda1b4b285304929fe3421cf042 Mon Sep 17 00:00:00 2001 From: DEATHB4DEFEAT Date: Sun, 17 Sep 2023 16:34:06 -0700 Subject: [PATCH 02/21] a softsuit to darkswap the wearer --- .../ClothingGrantComponentComponent.cs | 1 + .../SimpleStation14/Actions/types.yml | 10 +++++++ .../Entities/Clothing/Eyes/glasses.yml | 2 +- .../Clothing/Head/hardsuit-helmets.yml | 27 +++++++++++++++++ .../Clothing/OuterClothing/hardsuits.yml | 30 +++++++++++++++++++ 5 files changed, 69 insertions(+), 1 deletion(-) diff --git a/Content.Shared/SimpleStation14/Clothing/Components/ClothingGrantComponentComponent.cs b/Content.Shared/SimpleStation14/Clothing/Components/ClothingGrantComponentComponent.cs index c19a781c82..0a2535cfb4 100644 --- a/Content.Shared/SimpleStation14/Clothing/Components/ClothingGrantComponentComponent.cs +++ b/Content.Shared/SimpleStation14/Clothing/Components/ClothingGrantComponentComponent.cs @@ -4,6 +4,7 @@ namespace Content.Shared.SimpleStation14.Clothing { /// /// Grants the owner entity the specified component while equipped. + /// [RegisterComponent] public sealed class ClothingGrantComponentComponent : Component { diff --git a/Resources/Prototypes/SimpleStation14/Actions/types.yml b/Resources/Prototypes/SimpleStation14/Actions/types.yml index 7e3e4e6c55..080e42dc4f 100644 --- a/Resources/Prototypes/SimpleStation14/Actions/types.yml +++ b/Resources/Prototypes/SimpleStation14/Actions/types.yml @@ -19,3 +19,13 @@ sprite: Interface/Alerts/human_alive.rsi state: health0 event: !type:AIHealthOverlayEvent + +- type: instantAction + id: ShadowkinDarkSwapHardsuitToggle + name: action-darkswap-hardsuit-name + useDelay: 15 + icon: + sprite: Clothing/Head/Hardsuits/rd.rsi + state: icon + itemIconStyle: NoItem + event: !type:ToggleClothingEvent diff --git a/Resources/Prototypes/SimpleStation14/Entities/Clothing/Eyes/glasses.yml b/Resources/Prototypes/SimpleStation14/Entities/Clothing/Eyes/glasses.yml index 0417820c72..efdda08ba6 100644 --- a/Resources/Prototypes/SimpleStation14/Entities/Clothing/Eyes/glasses.yml +++ b/Resources/Prototypes/SimpleStation14/Entities/Clothing/Eyes/glasses.yml @@ -12,7 +12,7 @@ - type: entity parent: ClothingEyesBase - id: ClothingEyesGlassesShadowkinThing + id: ClothingEyesGlassesShadowkinDarkWindow name: darkened goggles # TODO: Temporary name? description: An unusual pair of goggles developed during a time of inhumane experimentation involving Shadowkin. They are designed to allow the wearer to peer into The Dark. components: diff --git a/Resources/Prototypes/SimpleStation14/Entities/Clothing/Head/hardsuit-helmets.yml b/Resources/Prototypes/SimpleStation14/Entities/Clothing/Head/hardsuit-helmets.yml index a56a569e77..8865e428aa 100644 --- a/Resources/Prototypes/SimpleStation14/Entities/Clothing/Head/hardsuit-helmets.yml +++ b/Resources/Prototypes/SimpleStation14/Entities/Clothing/Head/hardsuit-helmets.yml @@ -54,3 +54,30 @@ Piercing: 0.95 Heat: 0.9 Radiation: 0.6 + +- type: entity + parent: ClothingHeadHardsuitWithLightBase + id: ClothingHeadHelmetHardsuitShadowkinDarkswap + noSpawn: true + name: darkened softsuit helmet + components: + - type: Sprite + sprite: Clothing/Head/Hardsuits/rd.rsi + - type: Clothing + sprite: Clothing/Head/Hardsuits/rd.rsi + - type: PointLight + color: "#d6adff" + - type: Armor + modifiers: + coefficients: + Blunt: 1.4 + Slash: 1.3 + Piercing: 1.2 + Radiation: 0.4 + - type: ClothingSpeedModifier + walkModifier: 0.5 + sprintModifier: 0.5 + - type: ClothingGrantComponent + component: + - type: ShadowkinDarkSwapped + darken: false diff --git a/Resources/Prototypes/SimpleStation14/Entities/Clothing/OuterClothing/hardsuits.yml b/Resources/Prototypes/SimpleStation14/Entities/Clothing/OuterClothing/hardsuits.yml index 5fc5fa8df7..3c5d5110f5 100644 --- a/Resources/Prototypes/SimpleStation14/Entities/Clothing/OuterClothing/hardsuits.yml +++ b/Resources/Prototypes/SimpleStation14/Entities/Clothing/OuterClothing/hardsuits.yml @@ -55,3 +55,33 @@ damageCoefficient: 0.8 - type: ToggleableClothing clothingPrototype: ClothingHeadHelmetHardsuitHoP + +- type: entity + parent: ClothingOuterHardsuitBase + id: ClothingOuterHardsuitShadowkinDarkswap + name: darkened softsuit + description: Originally created while several research facilities were experimenting on Shadowkin, this hardsuit allows the wearer to jump the gap between the "normal" dimension and The Dark. + components: + - type: Sprite + sprite: Clothing/OuterClothing/Hardsuits/rd.rsi + - type: Clothing + sprite: Clothing/OuterClothing/Hardsuits/rd.rsi + - type: Armor + modifiers: + coefficients: + Blunt: 0.9 + Slash: 0.8 + Piercing: 0.9 + Radiation: 0.3 + - type: ClothingSpeedModifier + walkModifier: 0.9 + sprintModifier: 0.9 + - type: Item + size: 65 + - type: Tag + tags: + - FullBodyOuter + - Hardsuit + - type: ToggleableClothing + clothingPrototype: ClothingHeadHelmetHardsuitShadowkinDarkswap + actionId: ShadowkinDarkSwapHardsuitToggle From e47e2bd355f00651e31ee0882e18f8e21bac2213 Mon Sep 17 00:00:00 2001 From: DEATHB4DEFEAT Date: Sun, 17 Sep 2023 16:35:56 -0700 Subject: [PATCH 03/21] locale --- .../Locale/en-US/SimpleStation14/Content/StationAI/actions.ftl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Resources/Locale/en-US/SimpleStation14/Content/StationAI/actions.ftl b/Resources/Locale/en-US/SimpleStation14/Content/StationAI/actions.ftl index 747a08bed6..5111acfedf 100644 --- a/Resources/Locale/en-US/SimpleStation14/Content/StationAI/actions.ftl +++ b/Resources/Locale/en-US/SimpleStation14/Content/StationAI/actions.ftl @@ -3,3 +3,5 @@ action-aieye-description = Puts you in to the AI Eye form, allowing you to float action-aihealth-name = Health Overlay action-aihealth-description = Toggles the AI's health overlay. + +action-darkswap-hardsuit-name = Dark Swap From 6f88662ff076df9aff1b8bad8aaf12394460fd4b Mon Sep 17 00:00:00 2001 From: DEATHB4DEFEAT Date: Sun, 17 Sep 2023 17:36:50 -0700 Subject: [PATCH 04/21] lower base power gain --- .../Species/Shadowkin/Systems/ShadowkinPowerSystem.Rest.cs | 4 ++-- .../Species/Shadowkin/Components/ShadowkinComponent.cs | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.Rest.cs b/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.Rest.cs index f838fe2564..a61922c40a 100644 --- a/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.Rest.cs +++ b/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.Rest.cs @@ -59,7 +59,7 @@ private void Rest(EntityUid uid, ShadowkinRestPowerComponent component, Shadowki _entity.EnsureComponent(args.Performer); // No waking up normally (it would do nothing) _actions.RemoveAction(args.Performer, new InstantAction(_prototype.Index("Wake"))); - _power.TryAddMultiplier(args.Performer, 1.5f); + _power.TryAddMultiplier(args.Performer, 2f); // No action cooldown args.Handled = false; } @@ -69,7 +69,7 @@ private void Rest(EntityUid uid, ShadowkinRestPowerComponent component, Shadowki // Wake up _entity.RemoveComponent(args.Performer); _entity.RemoveComponent(args.Performer); - _power.TryAddMultiplier(args.Performer, -1.5f); + _power.TryAddMultiplier(args.Performer, -2f); // Action cooldown args.Handled = true; } diff --git a/Content.Shared/SimpleStation14/Species/Shadowkin/Components/ShadowkinComponent.cs b/Content.Shared/SimpleStation14/Species/Shadowkin/Components/ShadowkinComponent.cs index 6c6129a691..c7a7cf8b4e 100644 --- a/Content.Shared/SimpleStation14/Species/Shadowkin/Components/ShadowkinComponent.cs +++ b/Content.Shared/SimpleStation14/Species/Shadowkin/Components/ShadowkinComponent.cs @@ -14,10 +14,10 @@ public sealed partial class ShadowkinComponent : Component public float MaxedPowerRoof = 0f; [ViewVariables(VVAccess.ReadWrite)] - public float MaxedPowerRateMin = 45f; + public float MaxedPowerRateMin = 90f; [ViewVariables(VVAccess.ReadWrite)] - public float MaxedPowerRateMax = 150f; + public float MaxedPowerRateMax = 200f; [ViewVariables(VVAccess.ReadWrite)] @@ -77,7 +77,7 @@ public float PowerLevel /// How much energy is gained per second. /// [ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] - public float PowerLevelGain = 0.75f; + public float PowerLevelGain = 0.5f; /// /// Power gain multiplier From 1d1334097d17b6e4213d40f7c0a0dee95c781a9e Mon Sep 17 00:00:00 2001 From: DEATHB4DEFEAT Date: Sun, 17 Sep 2023 17:46:57 -0700 Subject: [PATCH 05/21] anti-shadowkin handcuffs --- .../Systems/ShadowkinPowerSystem.DarkSwap.cs | 5 ++--- .../Systems/ShadowkinPowerSystem.Rest.cs | 4 ++-- .../Systems/ShadowkinPowerSystem.Teleport.cs | 5 ++--- .../Cuffs/Components/HandcuffComponent.cs | 6 ++++++ .../Entities/Clothing/Eyes/glasses.yml | 2 +- .../Entities/Objects/Misc/handcuffs.yml | 21 +++++++++++++++++++ 6 files changed, 34 insertions(+), 9 deletions(-) create mode 100644 Resources/Prototypes/SimpleStation14/Entities/Objects/Misc/handcuffs.yml diff --git a/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.DarkSwap.cs b/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.DarkSwap.cs index 90f02da073..ab89397c65 100644 --- a/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.DarkSwap.cs +++ b/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.DarkSwap.cs @@ -62,9 +62,8 @@ private void DarkSwap(EntityUid uid, ShadowkinDarkSwapPowerComponent component, if (!_entity.HasComponent(args.Performer)) return; - // Don't activate abilities if handcuffed - // TODO: Something like the Psionic Headcage to disable powers for Shadowkin - if (_entity.HasComponent(args.Performer)) + // Don't activate abilities if specially handcuffed + if (_entity.TryGetComponent(args.Performer, out var cuffs) && cuffs.AntiShadowkin) return; diff --git a/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.Rest.cs b/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.Rest.cs index a61922c40a..f24c5433b8 100644 --- a/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.Rest.cs +++ b/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.Rest.cs @@ -44,8 +44,8 @@ private void Rest(EntityUid uid, ShadowkinRestPowerComponent component, Shadowki return; // Rest is a funny ability, keep it :) - // // Don't activate abilities if handcuffed - // if (_entity.HasComponent(args.Performer)) + // // Don't activate abilities if specially handcuffed + // if (_entity.TryGetComponent(args.Performer, out var cuffs) && cuffs.AntiShadowkin) // return; diff --git a/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.Teleport.cs b/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.Teleport.cs index 870703d935..7622925385 100644 --- a/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.Teleport.cs +++ b/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.Teleport.cs @@ -53,9 +53,8 @@ private void Teleport(EntityUid uid, ShadowkinTeleportPowerComponent component, if (!_entity.TryGetComponent(args.Performer, out var comp)) return; - // Don't activate abilities if handcuffed - // TODO: Something like the Psionic Headcage to disable powers for Shadowkin - if (_entity.HasComponent(args.Performer)) + // Don't activate abilities if specially handcuffed + if (_entity.TryGetComponent(args.Performer, out var cuffs) && cuffs.AntiShadowkin) return; diff --git a/Content.Shared/Cuffs/Components/HandcuffComponent.cs b/Content.Shared/Cuffs/Components/HandcuffComponent.cs index 398fce4fc7..65526f54c7 100644 --- a/Content.Shared/Cuffs/Components/HandcuffComponent.cs +++ b/Content.Shared/Cuffs/Components/HandcuffComponent.cs @@ -89,6 +89,12 @@ public sealed class HandcuffComponent : Component [DataField("endUncuffSound"), ViewVariables(VVAccess.ReadWrite)] public SoundSpecifier EndUncuffSound = new SoundPathSpecifier("/Audio/Items/Handcuffs/cuff_takeoff_end.ogg"); + + + // Parkstation-Shadowkin Start + [DataField("antiShadowkin")] + public bool AntiShadowkin = false; + // Parkstation-Shadowkin End } [Serializable, NetSerializable] diff --git a/Resources/Prototypes/SimpleStation14/Entities/Clothing/Eyes/glasses.yml b/Resources/Prototypes/SimpleStation14/Entities/Clothing/Eyes/glasses.yml index efdda08ba6..90e4c8f5fd 100644 --- a/Resources/Prototypes/SimpleStation14/Entities/Clothing/Eyes/glasses.yml +++ b/Resources/Prototypes/SimpleStation14/Entities/Clothing/Eyes/glasses.yml @@ -13,7 +13,7 @@ - type: entity parent: ClothingEyesBase id: ClothingEyesGlassesShadowkinDarkWindow - name: darkened goggles # TODO: Temporary name? + name: darkened goggles description: An unusual pair of goggles developed during a time of inhumane experimentation involving Shadowkin. They are designed to allow the wearer to peer into The Dark. components: - type: Sprite diff --git a/Resources/Prototypes/SimpleStation14/Entities/Objects/Misc/handcuffs.yml b/Resources/Prototypes/SimpleStation14/Entities/Objects/Misc/handcuffs.yml new file mode 100644 index 0000000000..1a32a67e85 --- /dev/null +++ b/Resources/Prototypes/SimpleStation14/Entities/Objects/Misc/handcuffs.yml @@ -0,0 +1,21 @@ +- type: entity + parent: Handcuffs + id: ClothingOuterStraightJacketShadowkin + name: shadowkin straight jacket + description: One of the first creations after finding Shadowkin, these were used to contain the Shadowkin during research so they didn't teleport away. + components: + - type: Item + size: 20 + - type: Handcuff + cuffedRSI: Clothing/OuterClothing/Misc/straight_jacket.rsi + breakoutTime: 40 + damageOnResist: + types: + Blunt: 2 + cuffTime: 5 + uncuffTime: 5 + stunBonus: 4 + antiShadowkin: true + - type: Sprite + sprite: Clothing/OuterClothing/Misc/straight_jacket.rsi + state: icon From d6421be9197edbea5449d7930c4b4f86e4d0b9a6 Mon Sep 17 00:00:00 2001 From: DEATHB4DEFEAT Date: Sun, 17 Sep 2023 16:14:49 -0700 Subject: [PATCH 06/21] some sprites --- .../Entities/Clothing/Eyes/glasses.yml | 4 +- .../Clothing/Head/hardsuit-helmets.yml | 4 +- .../Clothing/OuterClothing/hardsuits.yml | 4 +- .../Entities/Mobs/Player/shadowkin.yml | 58 +++++++++++++++++- .../Entities/Objects/Misc/handcuffs.yml | 10 +-- .../Glasses/darkened.rsi/equipped-EYES.png | Bin 0 -> 286 bytes .../Eyes/Glasses/darkened.rsi/icon.png | Bin 0 -> 430 bytes .../Eyes/Glasses/darkened.rsi/inhand-left.png | Bin 0 -> 343 bytes .../Glasses/darkened.rsi/inhand-right.png | Bin 0 -> 352 bytes .../Eyes/Glasses/darkened.rsi/meta.json | 26 ++++++++ .../darkened.rsi/this_is_a_placeholder | 0 .../darkened.rsi/equipped-HELMET.png | Bin 0 -> 473 bytes .../Head/Hardsuits/darkened.rsi/icon.png | Bin 0 -> 260 bytes .../Hardsuits/darkened.rsi/inhand-left.png | Bin 0 -> 834 bytes .../Hardsuits/darkened.rsi/inhand-right.png | Bin 0 -> 890 bytes .../Head/Hardsuits/darkened.rsi/meta.json | 26 ++++++++ .../darkened.rsi/this_is_a_placeholder | 0 .../darkened.rsi/equipped-OUTERCLOTHING.png | Bin 0 -> 1972 bytes .../Hardsuits/darkened.rsi/icon.png | Bin 0 -> 1183 bytes .../Hardsuits/darkened.rsi/inhand-left.png | Bin 0 -> 1097 bytes .../Hardsuits/darkened.rsi/inhand-right.png | Bin 0 -> 1158 bytes .../Hardsuits/darkened.rsi/meta.json | 26 ++++++++ .../body-overlay-2.png | Bin 0 -> 1142 bytes .../Misc/shadowkin_restraints.rsi/icon.png | Bin 0 -> 610 bytes .../shadowkin_restraints.rsi/inhand-left.png | Bin 0 -> 551 bytes .../shadowkin_restraints.rsi/inhand-right.png | Bin 0 -> 552 bytes .../Misc/shadowkin_restraints.rsi/meta.json | 26 ++++++++ .../this_is_a_placeholder | 0 .../Species/shadowkin.rsi/full-nomarkings.png | Bin 0 -> 3355 bytes .../Mobs/Species/shadowkin.rsi/full.png | Bin 8794 -> 4851 bytes 30 files changed, 171 insertions(+), 13 deletions(-) create mode 100644 Resources/Textures/SimpleStation14/Clothing/Eyes/Glasses/darkened.rsi/equipped-EYES.png create mode 100644 Resources/Textures/SimpleStation14/Clothing/Eyes/Glasses/darkened.rsi/icon.png create mode 100644 Resources/Textures/SimpleStation14/Clothing/Eyes/Glasses/darkened.rsi/inhand-left.png create mode 100644 Resources/Textures/SimpleStation14/Clothing/Eyes/Glasses/darkened.rsi/inhand-right.png create mode 100644 Resources/Textures/SimpleStation14/Clothing/Eyes/Glasses/darkened.rsi/meta.json create mode 100644 Resources/Textures/SimpleStation14/Clothing/Eyes/Glasses/darkened.rsi/this_is_a_placeholder create mode 100644 Resources/Textures/SimpleStation14/Clothing/Head/Hardsuits/darkened.rsi/equipped-HELMET.png create mode 100644 Resources/Textures/SimpleStation14/Clothing/Head/Hardsuits/darkened.rsi/icon.png create mode 100644 Resources/Textures/SimpleStation14/Clothing/Head/Hardsuits/darkened.rsi/inhand-left.png create mode 100644 Resources/Textures/SimpleStation14/Clothing/Head/Hardsuits/darkened.rsi/inhand-right.png create mode 100644 Resources/Textures/SimpleStation14/Clothing/Head/Hardsuits/darkened.rsi/meta.json create mode 100644 Resources/Textures/SimpleStation14/Clothing/Head/Hardsuits/darkened.rsi/this_is_a_placeholder create mode 100644 Resources/Textures/SimpleStation14/Clothing/OuterClothing/Hardsuits/darkened.rsi/equipped-OUTERCLOTHING.png create mode 100644 Resources/Textures/SimpleStation14/Clothing/OuterClothing/Hardsuits/darkened.rsi/icon.png create mode 100644 Resources/Textures/SimpleStation14/Clothing/OuterClothing/Hardsuits/darkened.rsi/inhand-left.png create mode 100644 Resources/Textures/SimpleStation14/Clothing/OuterClothing/Hardsuits/darkened.rsi/inhand-right.png create mode 100644 Resources/Textures/SimpleStation14/Clothing/OuterClothing/Hardsuits/darkened.rsi/meta.json create mode 100644 Resources/Textures/SimpleStation14/Clothing/OuterClothing/Misc/shadowkin_restraints.rsi/body-overlay-2.png create mode 100644 Resources/Textures/SimpleStation14/Clothing/OuterClothing/Misc/shadowkin_restraints.rsi/icon.png create mode 100644 Resources/Textures/SimpleStation14/Clothing/OuterClothing/Misc/shadowkin_restraints.rsi/inhand-left.png create mode 100644 Resources/Textures/SimpleStation14/Clothing/OuterClothing/Misc/shadowkin_restraints.rsi/inhand-right.png create mode 100644 Resources/Textures/SimpleStation14/Clothing/OuterClothing/Misc/shadowkin_restraints.rsi/meta.json create mode 100644 Resources/Textures/SimpleStation14/Clothing/OuterClothing/Misc/shadowkin_restraints.rsi/this_is_a_placeholder create mode 100644 Resources/Textures/SimpleStation14/Mobs/Species/shadowkin.rsi/full-nomarkings.png diff --git a/Resources/Prototypes/SimpleStation14/Entities/Clothing/Eyes/glasses.yml b/Resources/Prototypes/SimpleStation14/Entities/Clothing/Eyes/glasses.yml index 90e4c8f5fd..dcae25bb0b 100644 --- a/Resources/Prototypes/SimpleStation14/Entities/Clothing/Eyes/glasses.yml +++ b/Resources/Prototypes/SimpleStation14/Entities/Clothing/Eyes/glasses.yml @@ -17,9 +17,9 @@ description: An unusual pair of goggles developed during a time of inhumane experimentation involving Shadowkin. They are designed to allow the wearer to peer into The Dark. components: - type: Sprite - sprite: Clothing/Eyes/Glasses/meson.rsi + sprite: SimpleStation14/Clothing/Eyes/Glasses/darkened.rsi - type: Clothing - sprite: Clothing/Eyes/Glasses/meson.rsi + sprite: SimpleStation14/Clothing/Eyes/Glasses/darkened.rsi - type: EyeProtection - type: DropOnSlip chance: 20 diff --git a/Resources/Prototypes/SimpleStation14/Entities/Clothing/Head/hardsuit-helmets.yml b/Resources/Prototypes/SimpleStation14/Entities/Clothing/Head/hardsuit-helmets.yml index 8865e428aa..a9950c15ba 100644 --- a/Resources/Prototypes/SimpleStation14/Entities/Clothing/Head/hardsuit-helmets.yml +++ b/Resources/Prototypes/SimpleStation14/Entities/Clothing/Head/hardsuit-helmets.yml @@ -62,9 +62,9 @@ name: darkened softsuit helmet components: - type: Sprite - sprite: Clothing/Head/Hardsuits/rd.rsi + sprite: SimpleStation14/Clothing/Head/Hardsuits/darkened.rsi - type: Clothing - sprite: Clothing/Head/Hardsuits/rd.rsi + sprite: SimpleStation14/Clothing/Head/Hardsuits/darkened.rsi - type: PointLight color: "#d6adff" - type: Armor diff --git a/Resources/Prototypes/SimpleStation14/Entities/Clothing/OuterClothing/hardsuits.yml b/Resources/Prototypes/SimpleStation14/Entities/Clothing/OuterClothing/hardsuits.yml index 3c5d5110f5..baeb2fff51 100644 --- a/Resources/Prototypes/SimpleStation14/Entities/Clothing/OuterClothing/hardsuits.yml +++ b/Resources/Prototypes/SimpleStation14/Entities/Clothing/OuterClothing/hardsuits.yml @@ -63,9 +63,9 @@ description: Originally created while several research facilities were experimenting on Shadowkin, this hardsuit allows the wearer to jump the gap between the "normal" dimension and The Dark. components: - type: Sprite - sprite: Clothing/OuterClothing/Hardsuits/rd.rsi + sprite: SimpleStation14/Clothing/OuterClothing/Hardsuits/darkened.rsi - type: Clothing - sprite: Clothing/OuterClothing/Hardsuits/rd.rsi + sprite: SimpleStation14/Clothing/OuterClothing/Hardsuits/darkened.rsi - type: Armor modifiers: coefficients: diff --git a/Resources/Prototypes/SimpleStation14/Entities/Mobs/Player/shadowkin.yml b/Resources/Prototypes/SimpleStation14/Entities/Mobs/Player/shadowkin.yml index 2d4bcd39d8..affbf4e0f4 100644 --- a/Resources/Prototypes/SimpleStation14/Entities/Mobs/Player/shadowkin.yml +++ b/Resources/Prototypes/SimpleStation14/Entities/Mobs/Player/shadowkin.yml @@ -75,9 +75,63 @@ layer: - MobLayer - type: Sprite + netsync: false + noRot: true + drawdepth: Mobs scale: 0.85, 0.85 # Small + 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"] + - shader: StencilClear + sprite: Mobs/Species/Human/parts.rsi + state: l_leg + - shader: StencilMask + map: ["enum.HumanoidVisualLayers.StencilMask"] + sprite: Mobs/Customization/masking_helpers.rsi + state: full + visible: false + - map: ["enum.HumanoidVisualLayers.LFoot"] + - map: ["enum.HumanoidVisualLayers.RFoot"] + - map: ["socks"] + - map: ["underpants"] + - map: ["undershirt"] + - map: ["jumpsuit"] + - map: ["enum.HumanoidVisualLayers.LHand"] + - map: ["enum.HumanoidVisualLayers.RHand"] + - map: ["enum.HumanoidVisualLayers.Handcuffs"] + color: "#ffffff" + sprite: Objects/Misc/handcuffs.rsi + state: body-overlay-2 + visible: false + - map: ["id"] + - map: ["gloves"] + - map: ["shoes"] + - map: ["ears"] + - map: ["outerClothing"] + - map: ["eyes"] + - map: ["belt"] + - map: ["neck"] + - map: ["back"] + - 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: ["enum.HumanoidVisualLayers.Tail"] + - map: ["enum.HumanoidVisualLayers.Wings"] - type: Eye - zoom: "0.85, 0.85" + zoom: 0.85, 0.85 + targetZoom: 0.85, 0.85 + maxZoom: 0.85, 0.85 - type: MeleeWeapon soundHit: collection: Punch @@ -134,7 +188,7 @@ components: - type: HumanoidAppearance species: Shadowkin - - type: Sprite # sprite again because we want different layer ordering + - type: Sprite netsync: false noRot: true drawdepth: Mobs diff --git a/Resources/Prototypes/SimpleStation14/Entities/Objects/Misc/handcuffs.yml b/Resources/Prototypes/SimpleStation14/Entities/Objects/Misc/handcuffs.yml index 1a32a67e85..71ce72b3c0 100644 --- a/Resources/Prototypes/SimpleStation14/Entities/Objects/Misc/handcuffs.yml +++ b/Resources/Prototypes/SimpleStation14/Entities/Objects/Misc/handcuffs.yml @@ -1,21 +1,21 @@ - type: entity parent: Handcuffs - id: ClothingOuterStraightJacketShadowkin - name: shadowkin straight jacket + id: HandcuffsShadowkin + name: shadowkin restraints description: One of the first creations after finding Shadowkin, these were used to contain the Shadowkin during research so they didn't teleport away. components: - type: Item size: 20 - type: Handcuff - cuffedRSI: Clothing/OuterClothing/Misc/straight_jacket.rsi + cuffedRSI: SimpleStation14/Clothing/OuterClothing/Misc/shadowkin_restraints.rsi breakoutTime: 40 damageOnResist: types: Blunt: 2 - cuffTime: 5 + cuffTime: 4 uncuffTime: 5 stunBonus: 4 antiShadowkin: true - type: Sprite - sprite: Clothing/OuterClothing/Misc/straight_jacket.rsi + sprite: SimpleStation14/Clothing/OuterClothing/Misc/shadowkin_restraints.rsi state: icon diff --git a/Resources/Textures/SimpleStation14/Clothing/Eyes/Glasses/darkened.rsi/equipped-EYES.png b/Resources/Textures/SimpleStation14/Clothing/Eyes/Glasses/darkened.rsi/equipped-EYES.png new file mode 100644 index 0000000000000000000000000000000000000000..83fa02bc45628a5495e08493abaf7f3766d09fd2 GIT binary patch literal 286 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Pd!~6Ln`LHy|rGL(NW^q$KyR} zG2tACN*9&pPZ~m<}|99_s%b485mRbF8hrIcj{Jbx2>u>vRpWVxM{BiJEO_30->8A61 zip*@++B;18cG7E-$y(L5=QdUSVQ!Pj5=V{0YldTcFqC+v5CKb_lDu}`6G-p zbAW_|(tlA&DX>MapFhLtIAR?_k^?}NgJ>cQ{tt7=p}iaMswK(+p^?dG!R`2;0S8#U zd@kdQ7xx%Jjs=ARAwbXpAYZ(E^_BsjVS+*;U>c+b|-&tUf6 zXFnNs-~S0_v)vM4uy_B?;4H-lm3s=&&?LdsKCfI1b@;Em^xMYo6BO7NImyJPc#)7ChnSuZ9bN1ix zzoz_C1!y7=JXog_BwkZl-RJ+>z4iLmRjZ_8?@I`8c3!;h<=1_`J?ieYPdWO@rvLh5 zx7f?t)+SnAN_{KCMUH-dy8d|YCmZ?D_v)U~0oT7OwJf;&O~*6po&Kh4|6X0Vc5BC- zcoom(ZzC01u9p7YAK&ohD$DaZDl4$@VEAnpW_<+<1DV}qBtPkPS$&ui6}6FSlpjBJfo lv-wPvn|YTXaSW-L^Y)fvQL}@@(T~$- zb@>RM*sh@j-$)8^wM9lzA_G6`H-i&=}M|-5vzt;((0hgOuT1(%rE~xzv)cP zed(}|DnJu~;6eP%UfC0$ZI;ZA%DwyY?a$gTf8wjFYI*p(tA9>!UA0PT?)SVGiGd>X zPtPy&PK^{>Xa4Fdkn-ET^wzH6T`NOHj=tElmr)}5P)+R=mAB#SmG4v6_Wt7DaP8cl z@3+?TOb~?Sf}XY@8)> vV2YaC8Z}mh*n3AhuC9Nt=gY%z;O#Gl+43Fj^Zy8M18MVg^>bP0l+XkKM#`Jl literal 0 HcmV?d00001 diff --git a/Resources/Textures/SimpleStation14/Clothing/Eyes/Glasses/darkened.rsi/meta.json b/Resources/Textures/SimpleStation14/Clothing/Eyes/Glasses/darkened.rsi/meta.json new file mode 100644 index 0000000000..555efbc7da --- /dev/null +++ b/Resources/Textures/SimpleStation14/Clothing/Eyes/Glasses/darkened.rsi/meta.json @@ -0,0 +1,26 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "JustAnOrange", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-EYES", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/SimpleStation14/Clothing/Eyes/Glasses/darkened.rsi/this_is_a_placeholder b/Resources/Textures/SimpleStation14/Clothing/Eyes/Glasses/darkened.rsi/this_is_a_placeholder new file mode 100644 index 0000000000..e69de29bb2 diff --git a/Resources/Textures/SimpleStation14/Clothing/Head/Hardsuits/darkened.rsi/equipped-HELMET.png b/Resources/Textures/SimpleStation14/Clothing/Head/Hardsuits/darkened.rsi/equipped-HELMET.png new file mode 100644 index 0000000000000000000000000000000000000000..f6e00187238581acd88da06516d0679fd7cd28cf GIT binary patch literal 473 zcmV;~0Ve*5P)!WR@m;WMa26bm8q70p|n zP&BwMYcE04!sK3&6@qL8)AaJtB4h>Xq2-mx3RDVr*E~ncoa}YScZ(z2p}-(md+q^( z&-doKAOjPME7`^GAS*aqh>_U~#Sb7jJcZ)u@(k?d8xS1s(b8fR3|;^LHuW_^0yQSV P00000NkvXXu0mjf{`SOs literal 0 HcmV?d00001 diff --git a/Resources/Textures/SimpleStation14/Clothing/Head/Hardsuits/darkened.rsi/icon.png b/Resources/Textures/SimpleStation14/Clothing/Head/Hardsuits/darkened.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a134c90cca49df41bbb41c7b119c8b88774a5d13 GIT binary patch literal 260 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv-2k5u*8>L**xA{|E2RSkTFqxp zn-r<3sd;E`&5g@*^3==MEYAq@_tZM`zxL06hL-<)yFa@C)iIU?`2{mLJiCzw(&Xvl z7@{#TIYHu1L!d_>L#w{dql^w6p|m-V(<M*c`UR_oGiXzXOL({`^Ogfvo}wr@5}q z5!t1~s5fEn+ZmIB{Jxp(aJaQ?b7p4wrpp3aNABI(TdgPPdGy$x-R1K=l|xj#@~x}Y zs~1Z+xh^U>x3M>gLzE|{v-12Afo)ALo3=0fz^({%29w4%&5M0PKo*0itDnm{r-UW| DFSKGD literal 0 HcmV?d00001 diff --git a/Resources/Textures/SimpleStation14/Clothing/Head/Hardsuits/darkened.rsi/inhand-left.png b/Resources/Textures/SimpleStation14/Clothing/Head/Hardsuits/darkened.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..dc16b147b847f4af8ec961a94890c901a5ffdf1a GIT binary patch literal 834 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*5S+ zBgmJ5p-Pp3p`n?9;pcxK{gQ#9)PRBERRRNp)eHs(@%%~gN8K10m`-@QIEGZ*dNX^! zw{)V!ar^L=JYCs!!J5+?9@vUDc^7t04zSvBMRm(72^Q9c$(np$?KzHJTj{!q<6vIt z%k{Ul8xP2`#tqS37@mkKvb1 z>n=VPVqkJ$;9y`>U|?xr5MW?}a;gGq3uR9n%Bu12U&ec2@B6O&@*0La=humTjS$bx zH<&KY`10bG!dUT!CAKmDKd-xOaMkB$%rPCkB^RS6Z)v|6wRy(`wfU!K>^OUzPXS0z zU8*@HXi1qHgU8#R1yhnzGgqzbtkFwmV;4$E@9vT9-5mV;)QyW4H*YF6Gj}d~8*M6Y z-EgO&paoz-(6E< z+N;}IPP?~me}7KqMa}u`H8oQf`%G#45fqeA{k{Qc)~W{&a%Bz&v{t>(e=l1w@1VwW zi`V6EXY|`LZMnw4qxyT{gMgX`bB*NR?f2@+<>9D)kkZj+c{@x0_`(&*4sRINbuD6= zkj}`67P63FUhrMy_LKtZ!i}`9Sjfk)I5(wFud;iI`$NssFFLsEmc;UN) zuh>}AuBN7bRa(NE7kRJEQoko%wq-n&UQ^aGeeh(*FQ$yiGLV?z|+;wWt~$(69APr BW}pB7 literal 0 HcmV?d00001 diff --git a/Resources/Textures/SimpleStation14/Clothing/Head/Hardsuits/darkened.rsi/inhand-right.png b/Resources/Textures/SimpleStation14/Clothing/Head/Hardsuits/darkened.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..e289c62a841f46588e7161834efde8d0fc887e5a GIT binary patch literal 890 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*5S+ zBgmJ5p-Pp3p`n?9;pcxK{gQ#9)PRBERRRNp)eHs(@%%~gN8K10m>E1>978H@y_vn= zTRKqYfc^Ddr5b$URu&OVjpbT0F9Tv8saTY5?Dp6iEft_q^5(&UdI!Z7SJtlR4!O0q z@2&4#7lC_?0i`b%R5k?`2-V20EB8(EQTn0%?04&gJGJ-s*4%$yd;fdfyWhRZYnRS_ z%9yLi9?y{#ge~IueW{9c(ZX0Zxchqmf4+pd`(L(-6ksRuW`zj@#0 znYUNPe4|&s|EgtwMH#q0ON(^x_IXy@=jWX>vlK`I*EAv3?3&)WMaTAi`)B^ET;{d2tkreP-&bGnowo0m^r^S&Q|EsQ zS#&+h`gv2r&KIU1#7qy{t;usa{)#Pa!?gpeOTSJ#cxwB5@iKu|7dSZs=WQ~5&%{vO zuKs1|?!=qU!i*QP7ff4x^S-ss&Z!5@FR!Z!d)>9}%>t$dLpFuR4OUCE+2mippR8i2 zpceg3>EkTT^2NK8DmHIF>dl-Xx>JkcQ#35FQ9>TX$yJx#{&8veR}*&|u$ls0#|?pX zbv9EsJ4~u>*AV~z^Sk=;r?v|MTjczo=G;2_;n7_~V6aLgb2K%~U1z{}c@x7d*_!7s z_~-5D*Ay%Nx$BeM(vYAD7qSHO_VVA*&)pm{Eq(r(-@pI_hF;FhuhY62{WjOns+wGt zeL1gf>Er$#>rP)j=g#11dvF7P{I5l`n%pdp?A{{yYKO*!t45y=ub;y#AQX0m=jGNH zf3GfMOW4)=si$=E;@(weQ&zK?G*Spt4-nn7Lz5|h0 zUOfNK;gC~cTU+YuxHo93HMhgILy&ZLq3u&S!<>MK$1SOaTN!}B)78&qol`;+0PvcI Ao&W#< literal 0 HcmV?d00001 diff --git a/Resources/Textures/SimpleStation14/Clothing/Head/Hardsuits/darkened.rsi/meta.json b/Resources/Textures/SimpleStation14/Clothing/Head/Hardsuits/darkened.rsi/meta.json new file mode 100644 index 0000000000..e29f17954c --- /dev/null +++ b/Resources/Textures/SimpleStation14/Clothing/Head/Hardsuits/darkened.rsi/meta.json @@ -0,0 +1,26 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "JustAnOrange", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-HELMET", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/SimpleStation14/Clothing/Head/Hardsuits/darkened.rsi/this_is_a_placeholder b/Resources/Textures/SimpleStation14/Clothing/Head/Hardsuits/darkened.rsi/this_is_a_placeholder new file mode 100644 index 0000000000..e69de29bb2 diff --git a/Resources/Textures/SimpleStation14/Clothing/OuterClothing/Hardsuits/darkened.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/SimpleStation14/Clothing/OuterClothing/Hardsuits/darkened.rsi/equipped-OUTERCLOTHING.png new file mode 100644 index 0000000000000000000000000000000000000000..c93eb1bc511730e7d3472d14ca20ffb4309bce07 GIT binary patch literal 1972 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/SimpleStation14/Clothing/OuterClothing/Hardsuits/darkened.rsi/inhand-left.png b/Resources/Textures/SimpleStation14/Clothing/OuterClothing/Hardsuits/darkened.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..6872735699de40c11816ec2058c1159ac582212d GIT binary patch literal 1097 zcmV-P1h)H$P)EX>4Tx04R}tkvmAkP!xv$riu?Lf_4yb$WWbH5EXGORV;#q(pG5I!Q`edXws0R zxHt-~1qUCCRRf)s6A|;-i6k5c1;Br6yd;Xt$&jo}=g{fv&6i_wG zNX27fHn%GFyrK_7@L>{RiJ5vLy_kV#ece+h)m?;VdH4NU14`axfKMcjGTpFiCo7lF3yD zBgX=&P$4;f@IUxHTeC1d$WEE0hc?#$dfJ^k|X(P355dien#Jv1BP#b{xx@Qt#h0{02!Lq@(pls z2uu_yd)?#Ry`6LWx2H9~ALiw9)mX_M_5c6?24YJ`L;(K){{a7>y{D4^000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2j>YA10*A1TvBoX000?uMObu0Z*6U5Zgc=ca%Ew3 zWn>_CX>@2HM@dakSAh-}0006YNkl3`3`~yXYAPx?$Dozyy9TgFU z;vhJ5a8(pU5GQdF6kHt~x@ZwB4mv6b6~Upd4h}&gD3*eANE{?3(Td*P7s>EGOPfo1 zFS*`*x$ppl5JCtcgb+dqA%qYe+`g5_?OTa{Ytzlj3P&Pju&^J^PL2Wq4$5v620m=Z z#p1#^0O0hzH>%$(SteOe535!d17IAwwOw!hQ>W+G-_FN30|1*FgO+aAUkC8tXTU-E z5@FzDZf3ge`DXJSmFgL6$2HE%?GmsZ7nSN+>-+uH2nNP#2m>FLs`sax|1B#kY}0_^ z)G)%pPqkHRFR9}&@KKx^7Rkz84OlCdBLFzOx%lxnrNRUNVCQ7P(#?AFkMmgslhqpl zUSB?^d>HuX>h9GlVC}N}$2}{TOWFMlnQlD|VNmf>yAh8+{ui50LrCpnD7GE?7A%qY@2qA_=iBBkR+2f##$t0JZ2tt{4MOqM&rul-P~6Foiv0DV-AVk#Ou P00000NkvXXu0mjfH!Rw| literal 0 HcmV?d00001 diff --git a/Resources/Textures/SimpleStation14/Clothing/OuterClothing/Hardsuits/darkened.rsi/inhand-right.png b/Resources/Textures/SimpleStation14/Clothing/OuterClothing/Hardsuits/darkened.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..37b71b2cd3eedc31aafb459425441bf363d93fab GIT binary patch literal 1158 zcmV;11bO?3P)EX>4Tx04R}tkvmAkP!xv$riu?Lf_4yb$WWbH5EXGORV;#q(pG5I!Q`edXws0R zxHt-~1qUCCRRf)s6A|;-i6k5c1;Br6yd;Xt$&jo}=g{fv&6i_wG zNX27fHn%GFyrK_7@L>{RiJ5vLy_kV#ece+h)m?;VdH4NU14`axfKMcjGTpFiCo7lF3yD zBgX=&P$4;f@IUxHTeC1d$WEE0hc?#$dfJ^k|X(P355dien#Jv1BP#b{xx@Qt#h0{02!Lq@(pls z2uu_yd)?#Ry`6LWx2H9~ALiw9)mX_M_5c6?24YJ`L;(K){{a7>y{D4^000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2j>YA10*sF>~eqr000?uMObu0Z*6U5Zgc=ca%Ew3 zWn>_CX>@2HM@dakSAh-}0007ANklh6z9S-Tx!L^Zs5TT%> zrIZ#z1)+mO*GdZ_h?BSo3R#0VWRXxw$Pg!Kq0lT2>Ds~J2vh1H7Sr{xR;7L#NbVH|0N%XL zCb9_GTtVq-4m<(H(lK1e#?IDeX!3sl3gv1IhBQ;N4aR8>-2#R*QLfg8-_K7TV&%~p zT*pSaY9)U0-JYYZ+3*MQ8>?^~dn8spYmfYP9UJ+L)kGITS94$wzs#2u0DNwIyEXaq z+!Fx6`=i}N_JEA}ROxCKlNw2+H@PXO=e)75N@OSHYd21A-?T^tHS znj_sb$=E+X3SG^{xJJ_NUj@2px96nlLN`hCtp)Hd5Saxz^6ACXfR1LNbCGB^_C;7M z=>oMsZK2z9@crupbbAguZEL2B z4;$BiI;yF;79dW~fV3<;yT5{)>r32RU*h+#A9(fR%Y1u45EX>4Tx04R}tkvmAkP!xv$riu?Lf_4yb$WWbH5EXGORV;#q(pG5I!Q`edXws0R zxHt-~1qUCCRRf)s6A|;-i6k5c1;Br6yd;Xt$&jo}=g{fv&6i_wG zNX27fHn%GFyrK_7@L>{RiJ5vLy_kV#ece+h)m?;VdH4NU14`axfKMcjGTpFiCo7lF3yD zBgX=&P$4;f@IUxHTeC1d$WEE0hc?#$dfJ^k|X(P355dien#Jv1BP#b{xx@Qt#h0{02!Lq@(pls z2uu_yd)?#Ry`6LWx2H9~ALiw9)mX_M_5c6?24YJ`L;(K){{a7>y{D4^000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2j>YA11c0pV%qZn000?uMObu0Z*6U5Zgc=ca%Ew3 zWn>_CX>@2HM@dakSAh-}0006_NklZ&eO{^M^Ka+(6yh{bDPO10E2Vi#(vFbg zhfCy$z&(PM25>Alf_bue`d;^ZN0_Z-s5Dw+9RrXAU>-)Fn-+FjG?RM8? z1|u~1;mm*>Pc1Klztf`!8vMu0AdaUTV;iDW2om;u?9@U9{?q@+Q!ta)#9M~c-{DAt zM)B{*-aMuJH=-68!he)^b1MJ0@|T2*G4*G63bU+|{kAh|<-% zVByw-(fkI3!C){L3ic}rYyH@bN=(&wcT3Ydq3&$G;cQDA7kc$Vp}*@(a#OBkq&FjipB=|~B?-j&Ex zM}GI<(t!29rx!^Ifx0z4LBkwK!yu`10at609t3LaZ6+RyI6%2LJ#7 literal 0 HcmV?d00001 diff --git a/Resources/Textures/SimpleStation14/Clothing/OuterClothing/Misc/shadowkin_restraints.rsi/icon.png b/Resources/Textures/SimpleStation14/Clothing/OuterClothing/Misc/shadowkin_restraints.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..9f3449f093d6672d77f23ee5d6b61fe3dc3f26f4 GIT binary patch literal 610 zcmV-o0-gPdP)BjE6vuxq)#}X=4k#Qc*I+VQL%epoeuCyx^$WOTab`oUX7TC_vWbUa94#hV+Qdfb zW)N5%(mN!ljZUF7L;V)L(>vb%-d}g`RQvJq8!u_EUUc;xzz$#sumb>ISD8F;hne=@ ze}7lges}XZ+ix}>y|*!I1qSXgJLz;d>2wM(19zD1H=F2K9@55YHg|zuJWW#o9LFI| zQ^sLP+xN{_$1X-AYb8n*(2ENpkWvC5gurnev!DlEJzEX<4MgygkQDz*5NGXw0TB}g1fR;CkBHF%he64_f z051*aO;h-19u*#li}pRDs*o3Qq`=JP+}wvFCZ*u2xn6rHyENC%1jSAiFlD z)FT+1W>l&`KFPoxX88@6htkKi>RnLjGSU_VLE+m6L10csReKh|w%mD`e**A-D{wuZ z^Y#4vkpkIf^DKZ$KP0-v9=BSI!w~mNy*3U*j$19@p#@j{A+Z7&xWg<-5%Ewb?RI3y+#9oyXBI*<&w!{Vv`ntpVAo^lK-9=jQ{`u07*qoM6N<$f@wStJ^%m! literal 0 HcmV?d00001 diff --git a/Resources/Textures/SimpleStation14/Clothing/OuterClothing/Misc/shadowkin_restraints.rsi/inhand-left.png b/Resources/Textures/SimpleStation14/Clothing/OuterClothing/Misc/shadowkin_restraints.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..0535d5601a958c8ae3b590ac4a8fdfe8df6c766e GIT binary patch literal 551 zcmV+?0@(eDP) zC@6E4UW9|o{yQ1&`86&B&+E+VFbfVqL_|bHL_|bHL`2CbrL+`61Ar7lE2VVQ{OfF{ zr4agcHjA9UDW#M?lR{jcKf8#J`Q>sMIUm)RG>b_gwClQfmhx)+SxUIBi}S9?Dj!Fx z4KPva4cPDZ0D#qMb@h23&pIDfF71NnZMqGD%h+A11OWK{`1sfFOPY@=^&RkWlC4(j zkKj~Ui>J5-W=r9Zc0M%+W2LNFhe)<(Ah0yoq@>Tx6T+ZYb2moKRC~Dg_ zY}*F#`v8mLO{q)nu2jOCQmM|5h=_=Yh=_=Yi0HqS$!*KO;QPL|EDObA5!>w+gTWxy zS~B@tJZrx1YtQp=JRY%LuhDEa0YJxTf{_jIJn!Zm0Q`7*!u#QX>2w+^Z)5`&iv@nZyx`lz1Ktk@^!t4{juWevv2THPyR8d_0ve45 zCX)%Il(E)g?DhC)G|D-SgZX?O`_~5yZU6vuyIs`lb!Z*`=G@o@^m;v=&*xFA)e_Y) p@(}EFI=WJ+U_2gUx7#JE^$U&W^{hsq0TBQI002ovPDHLkV1lqb28jRw literal 0 HcmV?d00001 diff --git a/Resources/Textures/SimpleStation14/Clothing/OuterClothing/Misc/shadowkin_restraints.rsi/inhand-right.png b/Resources/Textures/SimpleStation14/Clothing/OuterClothing/Misc/shadowkin_restraints.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..93b9809df9429ae1975c3cd3f5fa2eb3ffd5efec GIT binary patch literal 552 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 F{{Xzh?l}Me From 3a7f5b11c48c415a2743984f9f3e9b3dd00550ee Mon Sep 17 00:00:00 2001 From: DEATHB4DEFEAT Date: Wed, 20 Sep 2023 17:22:04 -0700 Subject: [PATCH 07/21] helmet --- .../Hardsuits/darkened.rsi/equipped-HELMET.png | Bin 473 -> 1388 bytes .../Head/Hardsuits/darkened.rsi/icon.png | Bin 260 -> 847 bytes .../Hardsuits/darkened.rsi/inhand-left.png | Bin 834 -> 0 bytes .../Hardsuits/darkened.rsi/inhand-right.png | Bin 890 -> 0 bytes .../Head/Hardsuits/darkened.rsi/meta.json | 8 -------- .../darkened.rsi/this_is_a_placeholder | 0 6 files changed, 8 deletions(-) delete mode 100644 Resources/Textures/SimpleStation14/Clothing/Head/Hardsuits/darkened.rsi/inhand-left.png delete mode 100644 Resources/Textures/SimpleStation14/Clothing/Head/Hardsuits/darkened.rsi/inhand-right.png delete mode 100644 Resources/Textures/SimpleStation14/Clothing/Head/Hardsuits/darkened.rsi/this_is_a_placeholder diff --git a/Resources/Textures/SimpleStation14/Clothing/Head/Hardsuits/darkened.rsi/equipped-HELMET.png b/Resources/Textures/SimpleStation14/Clothing/Head/Hardsuits/darkened.rsi/equipped-HELMET.png index f6e00187238581acd88da06516d0679fd7cd28cf..f6599f7bd49ada543988813203ec1592c7d91c7e 100644 GIT binary patch delta 1381 zcmV-r1)BQV1MCWr7=H)`00020X>r~F00D$)LqkwWLqi~Na&Km7Y-IodD3N`UJxIeq z9K~N##Sbb%tsvr%p*q<`MI1{Ni(sL&6nNgNw7S4z7YA z_yOYT;-u&zCH^ldw21NGxF7HCJ?`ECLZiY|vnvXynq{QoF@G_eTNQg=(T8CGK?Egc z>WTDX2A<>V9zMR_MR=C?xj)B%k~bOP6N#ftH!R`};@M40=e$oGVkJo-J|~_u=z_$L zT$f#b<6LxD;F%#KlbRIIO4|b`7kz)Z>sE`~#_#gc4)+|g< zxk-T-(EVcDALBsJF3_yo_V=-EH%|cnGjOG~{nZ9A_epxat%Z+(!ENB;x~<83z~v4w z@}x_KpV2qvfT3HUf6eW!wU5&WAVXa(-+urHhrmRUve!M{-P_sQzh_$g z{QzKDa-UGQx=;WB00v@9M??Vs0RI60puMM)00009a7bBm001r{001r{0eGc9b^rhX z2XskIMF-~z6#x?zp>W|p0000PbVXQnLvL+uWo~o;Lvm$dbY)~9cWHEJAV*0}P*;Ht z7XSbQM1M&{K~#9!?V3+$({L2WzbVBXWF0@&IV6;T1&0^O$_`s^6^e}EWiTm>?kMX` zs&v5L00fMFJfVr;X!&B;;3U3Eqag%JCqSz*Nx!*fe`xh(EegptB}}VnfN{s zNMD+~KY73R3%myq|2K-)8#5CtT%0fDrj$+_-hVFrJ~w|>!)Y#*=M59$a2nGo=PgZx zIE4Ptz#^BL0ctqSeSQ_eUjHxG4h}8sZac2Zis`DpA~>ej&wnpIa*;*y~3us@re8`M1;>P_qpC-06I)>#`8e#-jQ; z=S2oc4FCYl)JoZ61=yeTLh zMSPP0fU&dGas32A5ClOG1VIo4K@bE%5X8SoTjm1*VE$#&rzlEC+T@&bW#;blnp5U= zM!@$s&Rd#>ykPL^2F3!2MRhv}4I^YWDHP#o-hVI= zi|Sx3UfZ?Zj9dt zU}08i@2)V*>)HBw^=YPdni7TA$-$w8nq|1^7Q3$4YBPP%>Mv{|9$-b*}>XE00001bW%=J06^y0W&i*Hae7o(bVOxy zV{&P5bZKvH004NLQ&w zrdk}I0*3PHa=h}RU=)l*z@#XsfWj9PLg6#0L=+1l^A*ioolrEmE^9AA(!%6kkrje$ z1k?2L&?007>Y?S8$O=>nch@{e%AD+V$9Ib(+o8Z9SVVj70fNu>=DHvQ6N)R@#qS_1 zI9rI3*$c%FAUHgQ;^^`W?ByE}9PZK5ViXKs001`iH9`V4Ccyvz002ovPDHLkV1kIS B#aRFV diff --git a/Resources/Textures/SimpleStation14/Clothing/Head/Hardsuits/darkened.rsi/icon.png b/Resources/Textures/SimpleStation14/Clothing/Head/Hardsuits/darkened.rsi/icon.png index a134c90cca49df41bbb41c7b119c8b88774a5d13..94d9e03b82721ab120707800fb5a3bf8a8c79f5a 100644 GIT binary patch delta 836 zcmV-K1H1f$0?!7J7=H)`0001UdV2H#00D$)LqkwWLqi~Na&Km7Y-IodD3N`UJxIeq z9K~N##Sbb%tsvr%p*q<`MI1{Ni(sL&6nNgNw7S4z7YA z_yOYT;-u&zCH^ldw21NGxF7HCJ?`ECLZiY|vnvXynq{QoF@G_eTNQg=(T8CGK?Egc z>WTDX2A<>V9zMR_MR=C?xj)B%k~bOP6N#ftH!R`};@M40=e$oGVkJo-J|~_u=z_$L zT$f#b<6LxD;F%#KlbRIIO4|b`7kz)Z>sE`~#_#gc4)+|g< zxk-T-(EVcDALBsJF3_yo_V=-EH%|cnGjOG~{nZ9A_epxat%Z+(!ENB;x~<83z~v4w z@}x_KpV2qvfT3HUf6eW!wU5&WAVXa(-+urHhrmRUve!M{-P_sQzh_$g z{QzKDa-UGQx=;WB00v@9M??Vs0RI60puMM)00009a7bBm001r{001r{0eGc9b^rhX z2XskIMF-~z6#x`9)n8XI0000PbVXQnLvL+uWo~o;Lvm$dbY)~9cWHEJAV*0}P*;Ht z7XSbOCx1yqK~z}7?Uk`h0$~`&e|HE@4U!UZM4-?Z8V$Jy(cmmJISRKL<8sP{z{{B)2S+5m;k8~|55E8c{jlGcd}u(h2BAilRI z-8~yUev1ZtyBCeE_?g8ba?=lzahoU4@qzf1&>Ql|;Ew6v!62UKE>RMN8m O0000PP%>RA-{{V#l4!iS200001bW%=J06^y0W&i*Hg-Jv~R49>S zU>MwhQAkk$g)c1PXoxHlW}M3AwzFwzce2wED#YI0y?ZVZNyWyzyLX>SBUB_xZ##P@d!raaMWS@h uv5jH~6%1^NdC$ZUwt_^mx1sO{ApigX0w}gA(T)-T0000#tqS37@mkKvb1 z>n=VPVqkJ$;9y`>U|?xr5MW?}a;gGq3uR9n%Bu12U&ec2@B6O&@*0La=humTjS$bx zH<&KY`10bG!dUT!CAKmDKd-xOaMkB$%rPCkB^RS6Z)v|6wRy(`wfU!K>^OUzPXS0z zU8*@HXi1qHgU8#R1yhnzGgqzbtkFwmV;4$E@9vT9-5mV;)QyW4H*YF6Gj}d~8*M6Y z-EgO&paoz-(6E< z+N;}IPP?~me}7KqMa}u`H8oQf`%G#45fqeA{k{Qc)~W{&a%Bz&v{t>(e=l1w@1VwW zi`V6EXY|`LZMnw4qxyT{gMgX`bB*NR?f2@+<>9D)kkZj+c{@x0_`(&*4sRINbuD6= zkj}`67P63FUhrMy_LKtZ!i}`9Sjfk)I5(wFud;iI`$NssFFLsEmc;UN) zuh>}AuBN7bRa(NE7kRJEQoko%wq-n&UQ^aGeeh(*FQ$yiGLV?z|+;wWt~$(69APr BW}pB7 diff --git a/Resources/Textures/SimpleStation14/Clothing/Head/Hardsuits/darkened.rsi/inhand-right.png b/Resources/Textures/SimpleStation14/Clothing/Head/Hardsuits/darkened.rsi/inhand-right.png deleted file mode 100644 index e289c62a841f46588e7161834efde8d0fc887e5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 890 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wkP*5S+ zBgmJ5p-Pp3p`n?9;pcxK{gQ#9)PRBERRRNp)eHs(@%%~gN8K10m>E1>978H@y_vn= zTRKqYfc^Ddr5b$URu&OVjpbT0F9Tv8saTY5?Dp6iEft_q^5(&UdI!Z7SJtlR4!O0q z@2&4#7lC_?0i`b%R5k?`2-V20EB8(EQTn0%?04&gJGJ-s*4%$yd;fdfyWhRZYnRS_ z%9yLi9?y{#ge~IueW{9c(ZX0Zxchqmf4+pd`(L(-6ksRuW`zj@#0 znYUNPe4|&s|EgtwMH#q0ON(^x_IXy@=jWX>vlK`I*EAv3?3&)WMaTAi`)B^ET;{d2tkreP-&bGnowo0m^r^S&Q|EsQ zS#&+h`gv2r&KIU1#7qy{t;usa{)#Pa!?gpeOTSJ#cxwB5@iKu|7dSZs=WQ~5&%{vO zuKs1|?!=qU!i*QP7ff4x^S-ss&Z!5@FR!Z!d)>9}%>t$dLpFuR4OUCE+2mippR8i2 zpceg3>EkTT^2NK8DmHIF>dl-Xx>JkcQ#35FQ9>TX$yJx#{&8veR}*&|u$ls0#|?pX zbv9EsJ4~u>*AV~z^Sk=;r?v|MTjczo=G;2_;n7_~V6aLgb2K%~U1z{}c@x7d*_!7s z_~-5D*Ay%Nx$BeM(vYAD7qSHO_VVA*&)pm{Eq(r(-@pI_hF;FhuhY62{WjOns+wGt zeL1gf>Er$#>rP)j=g#11dvF7P{I5l`n%pdp?A{{yYKO*!t45y=ub;y#AQX0m=jGNH zf3GfMOW4)=si$=E;@(weQ&zK?G*Spt4-nn7Lz5|h0 zUOfNK;gC~cTU+YuxHo93HMhgILy&ZLq3u&S!<>MK$1SOaTN!}B)78&qol`;+0PvcI Ao&W#< diff --git a/Resources/Textures/SimpleStation14/Clothing/Head/Hardsuits/darkened.rsi/meta.json b/Resources/Textures/SimpleStation14/Clothing/Head/Hardsuits/darkened.rsi/meta.json index e29f17954c..66589a849a 100644 --- a/Resources/Textures/SimpleStation14/Clothing/Head/Hardsuits/darkened.rsi/meta.json +++ b/Resources/Textures/SimpleStation14/Clothing/Head/Hardsuits/darkened.rsi/meta.json @@ -13,14 +13,6 @@ { "name": "equipped-HELMET", "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 } ] } diff --git a/Resources/Textures/SimpleStation14/Clothing/Head/Hardsuits/darkened.rsi/this_is_a_placeholder b/Resources/Textures/SimpleStation14/Clothing/Head/Hardsuits/darkened.rsi/this_is_a_placeholder deleted file mode 100644 index e69de29bb2..0000000000 From 121bcc44b77524cda094322fc1ea97c2438fb894 Mon Sep 17 00:00:00 2001 From: DEATHB4DEFEAT Date: Wed, 20 Sep 2023 18:17:21 -0700 Subject: [PATCH 08/21] helmet --- Resources/Prototypes/SimpleStation14/Actions/types.yml | 2 +- .../SimpleStation14/Entities/Clothing/Head/hardsuit-helmets.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Resources/Prototypes/SimpleStation14/Actions/types.yml b/Resources/Prototypes/SimpleStation14/Actions/types.yml index 080e42dc4f..eb5276dc8b 100644 --- a/Resources/Prototypes/SimpleStation14/Actions/types.yml +++ b/Resources/Prototypes/SimpleStation14/Actions/types.yml @@ -25,7 +25,7 @@ name: action-darkswap-hardsuit-name useDelay: 15 icon: - sprite: Clothing/Head/Hardsuits/rd.rsi + sprite: SimpleStation14/Clothing/Head/Hardsuits/darkened.rsi state: icon itemIconStyle: NoItem event: !type:ToggleClothingEvent diff --git a/Resources/Prototypes/SimpleStation14/Entities/Clothing/Head/hardsuit-helmets.yml b/Resources/Prototypes/SimpleStation14/Entities/Clothing/Head/hardsuit-helmets.yml index a9950c15ba..ef523f5a76 100644 --- a/Resources/Prototypes/SimpleStation14/Entities/Clothing/Head/hardsuit-helmets.yml +++ b/Resources/Prototypes/SimpleStation14/Entities/Clothing/Head/hardsuit-helmets.yml @@ -56,7 +56,7 @@ Radiation: 0.6 - type: entity - parent: ClothingHeadHardsuitWithLightBase + parent: ClothingHeadHardsuitBase id: ClothingHeadHelmetHardsuitShadowkinDarkswap noSpawn: true name: darkened softsuit helmet From 73e721c84beb760ffee5e6cc77ff99a8f7304985 Mon Sep 17 00:00:00 2001 From: DEATHB4DEFEAT Date: Wed, 20 Sep 2023 18:17:32 -0700 Subject: [PATCH 09/21] organs --- Resources/Prototypes/Reagents/toxins.yml | 8 + .../SimpleStation14/Body/Organs/shadowkin.yml | 146 ++++++++++++++++++ .../Chemistry/metabolizer_types.yml | 3 + .../Entities/Body/Prototypes/shadowkin.yml | 16 +- 4 files changed, 165 insertions(+), 8 deletions(-) create mode 100644 Resources/Prototypes/SimpleStation14/Body/Organs/shadowkin.yml create mode 100644 Resources/Prototypes/SimpleStation14/Chemistry/metabolizer_types.yml diff --git a/Resources/Prototypes/Reagents/toxins.yml b/Resources/Prototypes/Reagents/toxins.yml index e46068fd74..947dad6f2b 100644 --- a/Resources/Prototypes/Reagents/toxins.yml +++ b/Resources/Prototypes/Reagents/toxins.yml @@ -470,6 +470,14 @@ type: Animal reagent: Protein amount: 0.5 + # Parkstation-Shadowkin Start + - !type:AdjustReagent + conditions: + - !type:OrganType + type: Shadowkin + reagent: Protein + amount: 0.5 + # Parkstation-Shadowkin End - type: reagent id: Allicin diff --git a/Resources/Prototypes/SimpleStation14/Body/Organs/shadowkin.yml b/Resources/Prototypes/SimpleStation14/Body/Organs/shadowkin.yml new file mode 100644 index 0000000000..7693cf93c4 --- /dev/null +++ b/Resources/Prototypes/SimpleStation14/Body/Organs/shadowkin.yml @@ -0,0 +1,146 @@ +- type: entity + id: BaseShadowkinOrgan + parent: BaseItem + abstract: true + components: + - type: Organ + - type: Sprite + sprite: Mobs/Species/Human/organs.rsi + # sprite: SimpleStation14/Mobs/Species/Shadowkin/organs.rsi + - type: DynamicPrice + price: 70 + + +- type: entity + id: OrganShadowkinBrain + parent: BaseShadowkinOrgan + name: brain + description: The source of incredible, unending intelligence. + components: + - type: Sprite + state: brain + - type: Organ + - type: Input + context: ghost + - type: InputMover + - type: MovementSpeedModifier # How the hell does it walk? + baseWalkSpeed: 0 + baseSprintSpeed: 0 + - type: Brain + +- type: entity + id: OrganShadowkinEyes + parent: BaseShadowkinOrgan + name: eyes + description: I see beyond anything you ever will! + components: + - type: Sprite + layers: + - state: eyeball-l + - state: eyeball-r + - type: Organ + +- type: entity + id: OrganShadowkinEars + parent: BaseShadowkinOrgan + name: ears + description: Hey, listen! + components: + - type: Sprite + state: ears + - type: Organ + +- type: entity + id: OrganShadowkinTongue + parent: BaseShadowkinOrgan + name: tongue + description: A fleshy muscle mostly used for lying. + components: + - type: Sprite + state: tongue + - type: Organ + + +- type: entity + id: OrganShadowkinAppendix + parent: BaseShadowkinOrgan + name: appendix + description: What does this do? + components: + - type: Sprite + layers: + - state: appendix + - state: appendix-inflamed + visible: false + - type: Organ + + +- type: entity + id: OrganShadowkinHeart + parent: BaseShadowkinOrgan + name: heart + description: I feel bad for the heartless bastard who lost this. + components: + - type: Sprite + state: heart-on + - type: Organ + - type: Metabolizer + maxReagents: 2 + metabolizerTypes: [Shadowkin] + groups: + - id: Medicine + - id: Poison + - id: Narcotic + +- type: entity + id: OrganShadowkinStomach + parent: BaseShadowkinOrgan + name: stomach + description: '"Yummy!", says the stomach, although you are unable to hear it.' + components: + - type: Sprite + state: stomach + - type: Organ + - type: SolutionContainerManager + solutions: + stomach: + maxVol: 40 + - type: Stomach + - type: Metabolizer + maxReagents: 3 + metabolizerTypes: [Shadowkin] + groups: + - id: Food + - id: Drink + +- type: entity + id: OrganShadowkinLiver + parent: BaseShadowkinOrgan + name: liver + description: "Live 'er? I hardly know 'er!" + components: + - type: Sprite + state: liver + - type: Organ + - type: Metabolizer + maxReagents: 1 + metabolizerTypes: [Shadowkin] + groups: + - id: Alcohol + rateModifier: 0.1 + +- type: entity + id: OrganShadowkinKidneys + parent: BaseShadowkinOrgan + name: kidneys + description: Give the kid their knees back, please, this is the third time this week. + components: + - type: Sprite + layers: + - state: kidney-l + - state: kidney-r + - type: Organ + - type: Metabolizer + maxReagents: 5 + metabolizerTypes: [Shadowkin] + removeEmpty: true diff --git a/Resources/Prototypes/SimpleStation14/Chemistry/metabolizer_types.yml b/Resources/Prototypes/SimpleStation14/Chemistry/metabolizer_types.yml new file mode 100644 index 0000000000..66ce009b66 --- /dev/null +++ b/Resources/Prototypes/SimpleStation14/Chemistry/metabolizer_types.yml @@ -0,0 +1,3 @@ +- type: metabolizerType + id: Shadowkin + name: shadowkin diff --git a/Resources/Prototypes/SimpleStation14/Entities/Body/Prototypes/shadowkin.yml b/Resources/Prototypes/SimpleStation14/Entities/Body/Prototypes/shadowkin.yml index 306a972fd3..a0aaef70fe 100644 --- a/Resources/Prototypes/SimpleStation14/Entities/Body/Prototypes/shadowkin.yml +++ b/Resources/Prototypes/SimpleStation14/Entities/Body/Prototypes/shadowkin.yml @@ -8,8 +8,8 @@ connections: - torso organs: - brain: OrganHumanBrain - eyes: OrganHumanEyes + brain: OrganShadowkinBrain + eyes: OrganShadowkinEyes torso: part: TorsoShadowkin connections: @@ -17,12 +17,12 @@ - right arm - left leg - right leg - organs: # placeholders - heart: OrganHumanHeart - # lungs: OrganLungs - stomach: OrganHumanStomach - liver: OrganHumanLiver - kidneys: OrganHumanKidneys + organs: + heart: OrganShadowkinHeart + # lungs: OrganHumanLungs + stomach: OrganShadowkinStomach + liver: OrganShadowkinLiver + kidneys: OrganShadowkinKidneys right arm: part: RightArmShadowkin connections: From 5775fbf53dd30cb2f6b6e652c0d54687e9dd3478 Mon Sep 17 00:00:00 2001 From: DEATHB4DEFEAT Date: Wed, 20 Sep 2023 19:46:22 -0700 Subject: [PATCH 10/21] move body part sprites --- .../Entities/Body/Parts/shadowkin.yml | 4 +-- .../Entities/Mobs/Player/shadowkin.yml | 2 +- .../SimpleStation14/Species/shadowkin.yml | 30 +++++++++--------- .../parts.rsi}/eyes.png | Bin .../parts.rsi}/full-nomarkings.png | Bin .../parts.rsi}/full.png | Bin .../parts.rsi}/head_f.png | Bin .../parts.rsi}/head_m.png | Bin .../parts.rsi}/l_arm.png | Bin .../parts.rsi}/l_foot.png | Bin .../parts.rsi}/l_hand.png | Bin .../parts.rsi}/l_leg.png | Bin .../parts.rsi}/meta.json | 0 .../parts.rsi}/r_arm.png | Bin .../parts.rsi}/r_foot.png | Bin .../parts.rsi}/r_hand.png | Bin .../parts.rsi}/r_leg.png | Bin .../parts.rsi}/torso_f.png | Bin .../parts.rsi}/torso_m.png | Bin 19 files changed, 18 insertions(+), 18 deletions(-) rename Resources/Textures/SimpleStation14/Mobs/Species/{shadowkin.rsi => Shadowkin/parts.rsi}/eyes.png (100%) rename Resources/Textures/SimpleStation14/Mobs/Species/{shadowkin.rsi => Shadowkin/parts.rsi}/full-nomarkings.png (100%) rename Resources/Textures/SimpleStation14/Mobs/Species/{shadowkin.rsi => Shadowkin/parts.rsi}/full.png (100%) rename Resources/Textures/SimpleStation14/Mobs/Species/{shadowkin.rsi => Shadowkin/parts.rsi}/head_f.png (100%) rename Resources/Textures/SimpleStation14/Mobs/Species/{shadowkin.rsi => Shadowkin/parts.rsi}/head_m.png (100%) rename Resources/Textures/SimpleStation14/Mobs/Species/{shadowkin.rsi => Shadowkin/parts.rsi}/l_arm.png (100%) rename Resources/Textures/SimpleStation14/Mobs/Species/{shadowkin.rsi => Shadowkin/parts.rsi}/l_foot.png (100%) rename Resources/Textures/SimpleStation14/Mobs/Species/{shadowkin.rsi => Shadowkin/parts.rsi}/l_hand.png (100%) rename Resources/Textures/SimpleStation14/Mobs/Species/{shadowkin.rsi => Shadowkin/parts.rsi}/l_leg.png (100%) rename Resources/Textures/SimpleStation14/Mobs/Species/{shadowkin.rsi => Shadowkin/parts.rsi}/meta.json (100%) rename Resources/Textures/SimpleStation14/Mobs/Species/{shadowkin.rsi => Shadowkin/parts.rsi}/r_arm.png (100%) rename Resources/Textures/SimpleStation14/Mobs/Species/{shadowkin.rsi => Shadowkin/parts.rsi}/r_foot.png (100%) rename Resources/Textures/SimpleStation14/Mobs/Species/{shadowkin.rsi => Shadowkin/parts.rsi}/r_hand.png (100%) rename Resources/Textures/SimpleStation14/Mobs/Species/{shadowkin.rsi => Shadowkin/parts.rsi}/r_leg.png (100%) rename Resources/Textures/SimpleStation14/Mobs/Species/{shadowkin.rsi => Shadowkin/parts.rsi}/torso_f.png (100%) rename Resources/Textures/SimpleStation14/Mobs/Species/{shadowkin.rsi => Shadowkin/parts.rsi}/torso_m.png (100%) diff --git a/Resources/Prototypes/SimpleStation14/Entities/Body/Parts/shadowkin.yml b/Resources/Prototypes/SimpleStation14/Entities/Body/Parts/shadowkin.yml index 0846664c4f..7078bccb3b 100644 --- a/Resources/Prototypes/SimpleStation14/Entities/Body/Parts/shadowkin.yml +++ b/Resources/Prototypes/SimpleStation14/Entities/Body/Parts/shadowkin.yml @@ -6,9 +6,9 @@ components: - type: Sprite netsync: false - sprite: SimpleStation14/Mobs/Species/shadowkin.rsi + sprite: SimpleStation14/Mobs/Species/Shadowkin/parts.rsi - type: Icon - sprite: SimpleStation14/Mobs/Species/shadowkin.rsi + sprite: SimpleStation14/Mobs/Species/Shadowkin/parts.rsi - type: Damageable damageContainer: Biological - type: BodyPart diff --git a/Resources/Prototypes/SimpleStation14/Entities/Mobs/Player/shadowkin.yml b/Resources/Prototypes/SimpleStation14/Entities/Mobs/Player/shadowkin.yml index affbf4e0f4..baab902024 100644 --- a/Resources/Prototypes/SimpleStation14/Entities/Mobs/Player/shadowkin.yml +++ b/Resources/Prototypes/SimpleStation14/Entities/Mobs/Player/shadowkin.yml @@ -9,7 +9,7 @@ - type: Hunger - type: Thirst - type: Icon - sprite: SimpleStation14/Mobs/Species/shadowkin.rsi + sprite: SimpleStation14/Mobs/Species/Shadowkin/parts.rsi state: full - type: Body prototype: Shadowkin diff --git a/Resources/Prototypes/SimpleStation14/Species/shadowkin.yml b/Resources/Prototypes/SimpleStation14/Species/shadowkin.yml index 0ca3fd17d6..3e1e0454bc 100644 --- a/Resources/Prototypes/SimpleStation14/Species/shadowkin.yml +++ b/Resources/Prototypes/SimpleStation14/Species/shadowkin.yml @@ -71,89 +71,89 @@ - type: humanoidBaseSprite id: MobShadowkinHead baseSprite: - sprite: SimpleStation14/Mobs/Species/shadowkin.rsi + sprite: SimpleStation14/Mobs/Species/Shadowkin/parts.rsi state: head_m - type: humanoidBaseSprite id: MobShadowkinHeadMale baseSprite: - sprite: SimpleStation14/Mobs/Species/shadowkin.rsi + sprite: SimpleStation14/Mobs/Species/Shadowkin/parts.rsi state: head_m - type: humanoidBaseSprite id: MobShadowkinHeadFemale baseSprite: - sprite: SimpleStation14/Mobs/Species/shadowkin.rsi + sprite: SimpleStation14/Mobs/Species/Shadowkin/parts.rsi state: head_f - type: humanoidBaseSprite id: MobShadowkinTorso baseSprite: - sprite: SimpleStation14/Mobs/Species/shadowkin.rsi + sprite: SimpleStation14/Mobs/Species/Shadowkin/parts.rsi state: torso_m - type: humanoidBaseSprite id: MobShadowkinTorsoMale baseSprite: - sprite: SimpleStation14/Mobs/Species/shadowkin.rsi + sprite: SimpleStation14/Mobs/Species/Shadowkin/parts.rsi state: torso_m - type: humanoidBaseSprite id: MobShadowkinTorsoFemale baseSprite: - sprite: SimpleStation14/Mobs/Species/shadowkin.rsi + sprite: SimpleStation14/Mobs/Species/Shadowkin/parts.rsi state: torso_f - type: humanoidBaseSprite id: MobShadowkinLLeg baseSprite: - sprite: SimpleStation14/Mobs/Species/shadowkin.rsi + sprite: SimpleStation14/Mobs/Species/Shadowkin/parts.rsi state: l_leg - type: humanoidBaseSprite id: MobShadowkinLHand baseSprite: - sprite: SimpleStation14/Mobs/Species/shadowkin.rsi + sprite: SimpleStation14/Mobs/Species/Shadowkin/parts.rsi state: l_hand - type: humanoidBaseSprite id: MobShadowkinEyes baseSprite: - sprite: SimpleStation14/Mobs/Species/shadowkin.rsi + sprite: SimpleStation14/Mobs/Species/Shadowkin/parts.rsi state: eyes - type: humanoidBaseSprite id: MobShadowkinLArm baseSprite: - sprite: SimpleStation14/Mobs/Species/shadowkin.rsi + sprite: SimpleStation14/Mobs/Species/Shadowkin/parts.rsi state: l_arm - type: humanoidBaseSprite id: MobShadowkinLFoot baseSprite: - sprite: SimpleStation14/Mobs/Species/shadowkin.rsi + sprite: SimpleStation14/Mobs/Species/Shadowkin/parts.rsi state: l_foot - type: humanoidBaseSprite id: MobShadowkinRLeg baseSprite: - sprite: SimpleStation14/Mobs/Species/shadowkin.rsi + sprite: SimpleStation14/Mobs/Species/Shadowkin/parts.rsi state: r_leg - type: humanoidBaseSprite id: MobShadowkinRHand baseSprite: - sprite: SimpleStation14/Mobs/Species/shadowkin.rsi + sprite: SimpleStation14/Mobs/Species/Shadowkin/parts.rsi state: r_hand - type: humanoidBaseSprite id: MobShadowkinRArm baseSprite: - sprite: SimpleStation14/Mobs/Species/shadowkin.rsi + sprite: SimpleStation14/Mobs/Species/Shadowkin/parts.rsi state: r_arm - type: humanoidBaseSprite id: MobShadowkinRFoot baseSprite: - sprite: SimpleStation14/Mobs/Species/shadowkin.rsi + sprite: SimpleStation14/Mobs/Species/Shadowkin/parts.rsi state: r_foot diff --git a/Resources/Textures/SimpleStation14/Mobs/Species/shadowkin.rsi/eyes.png b/Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/parts.rsi/eyes.png similarity index 100% rename from Resources/Textures/SimpleStation14/Mobs/Species/shadowkin.rsi/eyes.png rename to Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/parts.rsi/eyes.png diff --git a/Resources/Textures/SimpleStation14/Mobs/Species/shadowkin.rsi/full-nomarkings.png b/Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/parts.rsi/full-nomarkings.png similarity index 100% rename from Resources/Textures/SimpleStation14/Mobs/Species/shadowkin.rsi/full-nomarkings.png rename to Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/parts.rsi/full-nomarkings.png diff --git a/Resources/Textures/SimpleStation14/Mobs/Species/shadowkin.rsi/full.png b/Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/parts.rsi/full.png similarity index 100% rename from Resources/Textures/SimpleStation14/Mobs/Species/shadowkin.rsi/full.png rename to Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/parts.rsi/full.png diff --git a/Resources/Textures/SimpleStation14/Mobs/Species/shadowkin.rsi/head_f.png b/Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/parts.rsi/head_f.png similarity index 100% rename from Resources/Textures/SimpleStation14/Mobs/Species/shadowkin.rsi/head_f.png rename to Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/parts.rsi/head_f.png diff --git a/Resources/Textures/SimpleStation14/Mobs/Species/shadowkin.rsi/head_m.png b/Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/parts.rsi/head_m.png similarity index 100% rename from Resources/Textures/SimpleStation14/Mobs/Species/shadowkin.rsi/head_m.png rename to Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/parts.rsi/head_m.png diff --git a/Resources/Textures/SimpleStation14/Mobs/Species/shadowkin.rsi/l_arm.png b/Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/parts.rsi/l_arm.png similarity index 100% rename from Resources/Textures/SimpleStation14/Mobs/Species/shadowkin.rsi/l_arm.png rename to Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/parts.rsi/l_arm.png diff --git a/Resources/Textures/SimpleStation14/Mobs/Species/shadowkin.rsi/l_foot.png b/Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/parts.rsi/l_foot.png similarity index 100% rename from Resources/Textures/SimpleStation14/Mobs/Species/shadowkin.rsi/l_foot.png rename to Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/parts.rsi/l_foot.png diff --git a/Resources/Textures/SimpleStation14/Mobs/Species/shadowkin.rsi/l_hand.png b/Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/parts.rsi/l_hand.png similarity index 100% rename from Resources/Textures/SimpleStation14/Mobs/Species/shadowkin.rsi/l_hand.png rename to Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/parts.rsi/l_hand.png diff --git a/Resources/Textures/SimpleStation14/Mobs/Species/shadowkin.rsi/l_leg.png b/Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/parts.rsi/l_leg.png similarity index 100% rename from Resources/Textures/SimpleStation14/Mobs/Species/shadowkin.rsi/l_leg.png rename to Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/parts.rsi/l_leg.png diff --git a/Resources/Textures/SimpleStation14/Mobs/Species/shadowkin.rsi/meta.json b/Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/parts.rsi/meta.json similarity index 100% rename from Resources/Textures/SimpleStation14/Mobs/Species/shadowkin.rsi/meta.json rename to Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/parts.rsi/meta.json diff --git a/Resources/Textures/SimpleStation14/Mobs/Species/shadowkin.rsi/r_arm.png b/Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/parts.rsi/r_arm.png similarity index 100% rename from Resources/Textures/SimpleStation14/Mobs/Species/shadowkin.rsi/r_arm.png rename to Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/parts.rsi/r_arm.png diff --git a/Resources/Textures/SimpleStation14/Mobs/Species/shadowkin.rsi/r_foot.png b/Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/parts.rsi/r_foot.png similarity index 100% rename from Resources/Textures/SimpleStation14/Mobs/Species/shadowkin.rsi/r_foot.png rename to Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/parts.rsi/r_foot.png diff --git a/Resources/Textures/SimpleStation14/Mobs/Species/shadowkin.rsi/r_hand.png b/Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/parts.rsi/r_hand.png similarity index 100% rename from Resources/Textures/SimpleStation14/Mobs/Species/shadowkin.rsi/r_hand.png rename to Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/parts.rsi/r_hand.png diff --git a/Resources/Textures/SimpleStation14/Mobs/Species/shadowkin.rsi/r_leg.png b/Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/parts.rsi/r_leg.png similarity index 100% rename from Resources/Textures/SimpleStation14/Mobs/Species/shadowkin.rsi/r_leg.png rename to Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/parts.rsi/r_leg.png diff --git a/Resources/Textures/SimpleStation14/Mobs/Species/shadowkin.rsi/torso_f.png b/Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/parts.rsi/torso_f.png similarity index 100% rename from Resources/Textures/SimpleStation14/Mobs/Species/shadowkin.rsi/torso_f.png rename to Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/parts.rsi/torso_f.png diff --git a/Resources/Textures/SimpleStation14/Mobs/Species/shadowkin.rsi/torso_m.png b/Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/parts.rsi/torso_m.png similarity index 100% rename from Resources/Textures/SimpleStation14/Mobs/Species/shadowkin.rsi/torso_m.png rename to Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/parts.rsi/torso_m.png From 195350cc041fdcb32ba76fcea46a918ab22cacb5 Mon Sep 17 00:00:00 2001 From: DEATHB4DEFEAT Date: Wed, 20 Sep 2023 20:04:19 -0700 Subject: [PATCH 11/21] organ sprites --- .../SimpleStation14/Body/Organs/shadowkin.yml | 18 ++----- .../Species/Shadowkin/organs.rsi/appendix.png | Bin 0 -> 1609 bytes .../Species/Shadowkin/organs.rsi/brain.png | Bin 0 -> 823 bytes .../Species/Shadowkin/organs.rsi/core.png | Bin 0 -> 927 bytes .../Species/Shadowkin/organs.rsi/ears.png | Bin 0 -> 1677 bytes .../Species/Shadowkin/organs.rsi/eyes.png | Bin 0 -> 1014 bytes .../Species/Shadowkin/organs.rsi/heart.png | Bin 0 -> 670 bytes .../Species/Shadowkin/organs.rsi/kidneys.png | Bin 0 -> 759 bytes .../Species/Shadowkin/organs.rsi/liver.png | Bin 0 -> 710 bytes .../Species/Shadowkin/organs.rsi/lungs.png | Bin 0 -> 735 bytes .../Species/Shadowkin/organs.rsi/meta.json | 44 ++++++++++++++++++ .../Species/Shadowkin/organs.rsi/stomach.png | Bin 0 -> 770 bytes .../Species/Shadowkin/organs.rsi/tongue.png | Bin 0 -> 2303 bytes 13 files changed, 49 insertions(+), 13 deletions(-) create mode 100644 Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/organs.rsi/appendix.png create mode 100644 Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/organs.rsi/brain.png create mode 100644 Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/organs.rsi/core.png create mode 100644 Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/organs.rsi/ears.png create mode 100644 Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/organs.rsi/eyes.png create mode 100644 Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/organs.rsi/heart.png create mode 100644 Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/organs.rsi/kidneys.png create mode 100644 Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/organs.rsi/liver.png create mode 100644 Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/organs.rsi/lungs.png create mode 100644 Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/organs.rsi/meta.json create mode 100644 Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/organs.rsi/stomach.png create mode 100644 Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/organs.rsi/tongue.png diff --git a/Resources/Prototypes/SimpleStation14/Body/Organs/shadowkin.yml b/Resources/Prototypes/SimpleStation14/Body/Organs/shadowkin.yml index 7693cf93c4..fd439b8be7 100644 --- a/Resources/Prototypes/SimpleStation14/Body/Organs/shadowkin.yml +++ b/Resources/Prototypes/SimpleStation14/Body/Organs/shadowkin.yml @@ -5,8 +5,7 @@ components: - type: Organ - type: Sprite - sprite: Mobs/Species/Human/organs.rsi - # sprite: SimpleStation14/Mobs/Species/Shadowkin/organs.rsi + sprite: SimpleStation14/Mobs/Species/Shadowkin/organs.rsi - type: DynamicPrice price: 70 @@ -35,9 +34,7 @@ description: I see beyond anything you ever will! components: - type: Sprite - layers: - - state: eyeball-l - - state: eyeball-r + state: eyes - type: Organ - type: entity @@ -68,10 +65,7 @@ description: What does this do? components: - type: Sprite - layers: - - state: appendix - - state: appendix-inflamed - visible: false + state: appendix - type: Organ @@ -82,7 +76,7 @@ description: I feel bad for the heartless bastard who lost this. components: - type: Sprite - state: heart-on + state: heart - type: Organ - type: Metabolizer maxReagents: 2 @@ -136,9 +130,7 @@ description: Give the kid their knees back, please, this is the third time this week. components: - type: Sprite - layers: - - state: kidney-l - - state: kidney-r + state: kidneys - type: Organ - type: Metabolizer maxReagents: 5 diff --git a/Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/organs.rsi/appendix.png b/Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/organs.rsi/appendix.png new file mode 100644 index 0000000000000000000000000000000000000000..0d2ad309c74d012db5d5dab59a953f02654d7a5e GIT binary patch literal 1609 zcmV-P2DbT$P) zaB^>EX>4U6ba`-PAZ2)IW&i+q+U-_Zk|ZY#{pS=u0$PFNutxX>KE5BBl~uh|bWcx@ ze;l1erYMz=#Cr$`^Pj(0_zMqZ%Rwz=FYXbK7A;)S$?@^bn=CP|-B-MH)6w0E!mB^7 z9-%$cGo(Pusl3ON?MPk>@VlgEda^fqxrgCb8Rg3nqrK2KyN7tBa(mYrd120BTWeJZ zK7O0jHI<_W!v+u?NyPVvh~2Qz0gai=arU0Mk6EJ|YalEfoGFYh)}T)5 zazT4LvCSD6V zf0s9Y$z0gf{R!s6rtS%I?|FN|+SvPh-*p(VvF$S4phiLY!C>af85aCC8NNE;$I*|Y z|He_bqo~pE?n$D z+oTr5QCK@|D}1x#tlHUW{$QTrJHWJNipxkf8y3v5f0{QOe>mHa&qQt=N(FcW8r&M} z1Wd6jp7Yw1IdXi+@K*6fNp0wk<6+r8M0t*#L&i>+30rHe*mfzMfC8uDJ)Vf|NfpP< zC;Bl>_}U(A-`I}McjXI5z5rGhH9=Nw99>)#eE+dQGR(r~USKzcvhTs?uYmj4FOd7W z48LM{qH}%$7GL1lEpO2t1HXdo_mK*p8omtsLDcXE2>WsLKX;UHg~1*a{soGNSj#pX zO4R@W0flKpLr_UWLm+T+Z)Rz1WdHzpoPCi!NW(xJ#a~mUDisGSh&W`ZPF6%k97`38 zV4<`XT6HkF^h0RUkfgXc3a$kQKNhPFF3!3-xC(;c2Z*bSlcI~1_`jskBF2N`e!RQ) zxO)c(^)geYYVzG_o zHfAM5C7vb@E2>8MLe^!4^A=~dTxHFB@)rj4+H#ufG=~w#A`(bKgp4XSP=w3Vu9j|qgF|4nNZD&1@9t{v?cX!a{(b=U>2lk$kG59;000JJOGiWi{{a60 z|De66lK=n!32;bRa{vGf6951U69E94oEQKA00(qQO+^Ri2^9i1CxXzlHUIzs8FWQh zbVF}#ZDnqB07G(RVRU6=Aa`kWXdp*PO;A^X4i^9b0G>%iK~z}7?Ub<%!ypty&&Z`+ zcmQZ<>;b(0B2JUgQ$UX^OJ6Ax!52=7djs(94g^35Aw+?7zF6mr<_x2euiK7kUZ4qK zH0eV)06-POXxd-o6q`$owPFBRw;drI$SGo)7u7o&YUENT-6SE>X3>`{Av#clnUMt#ph0Cn0Wc{I?+pA*7WPP4YcQ=~tct00000NkvXX Hu0mjf8{*v2 literal 0 HcmV?d00001 diff --git a/Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/organs.rsi/brain.png b/Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/organs.rsi/brain.png new file mode 100644 index 0000000000000000000000000000000000000000..ac2806b79cefb50b0dafdbb93575cdde187cc7e8 GIT binary patch literal 823 zcmV-71IYY|P)EX>4Tx04R}tkv&MmKpe$iQ^gM|3RV$u$WWauh>AE$6^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|>f)s6A|?JWDYS_3;J6>}?mh0_0Ya_BRI_aYP&La) zL?dE4vnqDHq6-5MFo-^hnR+a_n1bi{x`&UicVV98eeTcEqhw76_(bA4rW+RV2Jy_M zrE}gV4zhxz5T6r|8+1Y9N3P2*zj4kxEbz>rkxI-H2Z_ae3(GCc3WiENO&n5Gjq-)G z%L?Z$&T6T`8u#Qc3}m&HB-d$nDK!8MxA#{&EeN{Up8G z)Ivu2C8-PGhg;Bp5TdeS9BawI=ZA(sQ*&*+;nK>sb!z2^4T*vIJukfN@ZZ-9eC zU@TAB>mKj!Z0+seGmZX!06^_>lj{7Tu>b%724YJ`L;wH)0002_L%V+f000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2j>YD0v#@meDV7L00A>eL_t(o!|jz_Pr@)1hMx^) zwt+J!aX8RKK>z>mQ7;8<{9pp@*w)q?UBGAp3&fi~H*HSRzHi>}#M?-Va1j@1`6Oypqs%m~1 zkO_$&26&zaA!I^Qtk;xf$-xaQ(iCG1VY`J~35s=2^TZ<)a!Wi-)59B>K2ID57-LLj zL~BhkFNmUuJj(#czSg6)VKV4%y{+&2D5YpL8Yra*!w?|^d7d+yOr4|5flaRZi3x(B zmiXRX@Efzq)R9sGRN_aUgnuQmY07>w7K_EQE1!JgsDt#P++qL#002ovPDHLkV1nd; BZnppc literal 0 HcmV?d00001 diff --git a/Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/organs.rsi/core.png b/Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/organs.rsi/core.png new file mode 100644 index 0000000000000000000000000000000000000000..ac2d7893fdb13dd286886878c3ad64ea8ca4f934 GIT binary patch literal 927 zcmV;Q17Q4#P)EX>4Tx04R}tkv&MmKpe$iQ^gM|3RV$u$WWauh>AE$6^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|>f)s6A|?JWDYS_3;J6>}?mh0_0Ya_BRI_aYP&La) zL?dE4vnqDHq6-5MFo-^hnR+a_n1bi{x`&UicVV98eeTcEqhw76_(bA4rW+RV2Jy_M zrE}gV4zhxz5T6r|8+1Y9N3P2*zj4kxEbz>rkxI-H2Z_ae3(GCc3WiENO&n5Gjq-)G z%L?Z$&T6T`8u#Qc3}m&HB-d$nDK!8MxA#{&EeN{Up8G z)Ivu2C8-PGhg;Bp5TdeS9BawI=ZA(sQ*&*+;nK>sb!z2^4T*vIJukfN@ZZ-9eC zU@TAB>mKj!Z0+seGmZX!06^_>lj{7Tu>b%724YJ`L;wH)0002_L%V+f000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2j>YD0v$8%dYvKw00EmxL_t(o!|hc)Yr;?zJx`=V zZJ>n=Ej)#yODVV{yL+c@4*7i<-24mfW)VskMTh}22nM2A)4|@yO^j(0Q>UEi<%67) zbI-jOXwaZRMRa@pxQ_3LI>^J_5daWGzPO110C>EAjsZZ^I{<(O?Fj&|U3;a3w5yPE z5HSEqIRF5>K*rx+b5WZEZ|`P;c)RvaM6Xian|+LdyVH3zov3$$$QRvSKi;@2QAq$N zmvR8lTb{i`e{P!wM$-uZ;1KTB^GoCa&?;N|+2{D|OrnUKhm!(YSpZo{u;z{;r!xT9 zLnAXAe+9CT17s(+--RQ5V<|InW0qmgxYvCkB7HLUQw(WTG z(?PUNLzTtzmW2f5mO#@x2qItbkEAo9GVn`on?`1*Tr~%>oJc!D4)8V%cSmS?C$|m7 zHB*q2^GtA;XjESk(Jo3(WgsDGa1eS0UyCP+lDml=v-zS zwyFvUB41E_>3ZX?68CCf$63fr_`f>Pph1JW@B`15%vja@;{E^t002ovPDHLkV1j#; Bn(F`n literal 0 HcmV?d00001 diff --git a/Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/organs.rsi/ears.png b/Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/organs.rsi/ears.png new file mode 100644 index 0000000000000000000000000000000000000000..6ff3ac86b7642a95b27e60e079439eb127376880 GIT binary patch literal 1677 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 Ef{!*J8~^|S literal 0 HcmV?d00001 diff --git a/Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/organs.rsi/kidneys.png b/Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/organs.rsi/kidneys.png new file mode 100644 index 0000000000000000000000000000000000000000..482bb2410227df442ae3e7ee251ef6fcd27fa473 GIT binary patch literal 759 zcmVEX>4Tx04R}tkv&MmKpe$iQ^gM|3RV$u$WWauh>AE$6^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|>f)s6A|?JWDYS_3;J6>}?mh0_0Ya_BRI_aYP&La) zL?dE4vnqDHq6-5MFo-^hnR+a_n1bi{x`&UicVV98eeTcEqhw76_(bA4rW+RV2Jy_M zrE}gV4zhxz5T6r|8+1Y9N3P2*zj4kxEbz>rkxI-H2Z_ae3(GCc3WiENO&n5Gjq-)G z%L?Z$&T6T`8u#Qc3}m&HB-d$nDK!8MxA#{&EeN{Up8G z)Ivu2C8-PGhg;Bp5TdeS9BawI=ZA(sQ*&*+;nK>sb!z2^4T*vIJukfN@ZZ-9eC zU@TAB>mKj!Z0+seGmZX!06^_>lj{7Tu>b%724YJ`L;wH)0002_L%V+f000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2j>YD0v#~`bo>qg008qzL_t(o!|jx@3WG2dMQ=(c zTfssH2X)awKfwS006##7y4Vg5fd*2urc**96sne%!aIwQ7hmpuUIP#WK@b~=f>^uH zHSB(EV!vc_n&sB%b?DjB`X&Ksmg{49LXs3_NlQL?^|Gn~0Jqx(X_o7EMC{%@+-+_U zYGhFmYoSJakg1nd?M-BJ22A55DbTeIB%i$SU5B1^ZDS|o3jJ6HT#V}|i1k#yEh{RxB`8Mr^@d2`7pgy(~GF8KsE poSQQ+7vVa8Ri~?%APC|wcmnhbg@c}Xw&(x=002ovPDHLkV1mhNOmF}I literal 0 HcmV?d00001 diff --git a/Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/organs.rsi/liver.png b/Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/organs.rsi/liver.png new file mode 100644 index 0000000000000000000000000000000000000000..0a2e6ab25ae4c51e237c78ed7f9e592422c6fe16 GIT binary patch literal 710 zcmV;%0y+JOP)EX>4Tx04R}tkv&MmKpe$iQ^gM|3RV$u$WWauh>AE$6^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|>f)s6A|?JWDYS_3;J6>}?mh0_0Ya_BRI_aYP&La) zL?dE4vnqDHq6-5MFo-^hnR+a_n1bi{x`&UicVV98eeTcEqhw76_(bA4rW+RV2Jy_M zrE}gV4zhxz5T6r|8+1Y9N3P2*zj4kxEbz>rkxI-H2Z_ae3(GCc3WiENO&n5Gjq-)G z%L?Z$&T6T`8u#Qc3}m&HB-d$nDK!8MxA#{&EeN{Up8G z)Ivu2C8-PGhg;Bp5TdeS9BawI=ZA(sQ*&*+;nK>sb!z2^4T*vIJukfN@ZZ-9eC zU@TAB>mKj!Z0+seGmZX!06^_>lj{7Tu>b%724YJ`L;wH)0002_L%V+f000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2j>YD0v#@meDV7L006>CL_t(o!|jv54uUWchkqC* z0tsv^?ZN^N!23Ud51<1s+QGr3Catb@Y66PdYieBX8!y*>_ooFIhGCdLlf@hovUA^Z zPRB!*yZ|rmhj9^CYJxQy{V+nQ2>@V?4k{w2$i3K0Jaf4<8USD}x1f7->iE~>0I=U} z7vk&voNfg|cCM_Nm$;WdcN{8@n!qP9RZc3v8jZ4Q-tL$xj+%fqdi8O|%1Pf)$j+te sdd?;^@fUJ3bEX>4Tx04R}tkv&MmKpe$iQ^gM|3RV$u$WWauh>AE$6^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|>f)s6A|?JWDYS_3;J6>}?mh0_0Ya_BRI_aYP&La) zL?dE4vnqDHq6-5MFo-^hnR+a_n1bi{x`&UicVV98eeTcEqhw76_(bA4rW+RV2Jy_M zrE}gV4zhxz5T6r|8+1Y9N3P2*zj4kxEbz>rkxI-H2Z_ae3(GCc3WiENO&n5Gjq-)G z%L?Z$&T6T`8u#Qc3}m&HB-d$nDK!8MxA#{&EeN{Up8G z)Ivu2C8-PGhg;Bp5TdeS9BawI=ZA(sQ*&*+;nK>sb!z2^4T*vIJukfN@ZZ-9eC zU@TAB>mKj!Z0+seGmZX!06^_>lj{7Tu>b%724YJ`L;wH)0002_L%V+f000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2j>YD0v$4$eXXL z1Bq-7)kOw<0N?)scmNpcq8%8TKvK$z6Qng7h0>_WeM^)7+T7iLmjVPq5dY3@f9QSQ zN509Ar?XcP(YGCpd~KIfc#UH<*LDE?EB$u8upkatNiduPwm!v)**hSmK%As#b&WVl zolykY0lRxC1vt;p>KXvh>KdG9V-Ztah~{)|C)3J2)faa_E8`^LJcCvSO;<6kjH62_ z#=?R-@J?T}0DIQM{Owp-N002ovPDHLkV1j7)Ls|d; literal 0 HcmV?d00001 diff --git a/Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/organs.rsi/meta.json b/Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/organs.rsi/meta.json new file mode 100644 index 0000000000..1c9aebfb6d --- /dev/null +++ b/Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/organs.rsi/meta.json @@ -0,0 +1,44 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "https://github.com/tgstation/tgstation/commit/f309886bf3e29808206693e9142304260df134e9", + "states": [ + { + "name": "appendix" + }, + { + "name": "brain" + }, + { + "name": "core" + }, + { + "name": "ears" + }, + { + "name": "eyes" + }, + { + "name": "heart" + }, + { + "name": "kidneys" + }, + { + "name": "liver" + }, + { + "name": "lungs" + }, + { + "name": "stomach" + }, + { + "name": "tongue" + } + ] +} diff --git a/Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/organs.rsi/stomach.png b/Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/organs.rsi/stomach.png new file mode 100644 index 0000000000000000000000000000000000000000..a0341750d3247e864d1def1b4c272b696493d930 GIT binary patch literal 770 zcmV+d1O5DoP)EX>4Tx04R}tkv&MmKpe$iQ^gM|3RV$u$WWauh>AE$6^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|>f)s6A|?JWDYS_3;J6>}?mh0_0Ya_BRI_aYP&La) zL?dE4vnqDHq6-5MFo-^hnR+a_n1bi{x`&UicVV98eeTcEqhw76_(bA4rW+RV2Jy_M zrE}gV4zhxz5T6r|8+1Y9N3P2*zj4kxEbz>rkxI-H2Z_ae3(GCc3WiENO&n5Gjq-)G z%L?Z$&T6T`8u#Qc3}m&HB-d$nDK!8MxA#{&EeN{Up8G z)Ivu2C8-PGhg;Bp5TdeS9BawI=ZA(sQ*&*+;nK>sb!z2^4T*vIJukfN@ZZ-9eC zU@TAB>mKj!Z0+seGmZX!06^_>lj{7Tu>b%724YJ`L;wH)0002_L%V+f000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2j>YD0v#{UMq;_4>Y36V0N{E#qszo78Q>)&MgGzX=I@VTbs_1Dr=tS{faG~64Z%|?@>k=O z7iHo8Hxiy7DtNVG3FjpnZwe&*d^!RE{KXueAAVIW_d_3e?@v&LtBbQpv@NE- z@Ie`HgeCLN&BwzI!qR#tzh556^Wrzv_Bf&c&j07*qoM6N<$f=-=I AiU0rr literal 0 HcmV?d00001 diff --git a/Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/organs.rsi/tongue.png b/Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/organs.rsi/tongue.png new file mode 100644 index 0000000000000000000000000000000000000000..64306900f57f8f8214509ed2fe4ee22edb47debf GIT binary patch literal 2303 zcmV zaB^>EX>4U6ba`-PAZ2)IW&i+q+U-|aavV1d{pTri1Y#q|$QU6_!#c}8V#f7$Rm;FnMdvzgBmeO-lQ}sXw$mnpn)wa zFLp@g!E()2ac(>$3yCICQQGX%WJ(p5!Ak_Q{M-v&>$YpTK@|&6f+iD;5#G2)dffc# z_|(wejUZYvUcK zOP7sr(mix@?u@tFE?UBh|KS-L}j2U3c5@MD0Q~y~FGya^FUc?x+E(m@Oe>LRvHPwd{1 z`+!?Q-Ty3Z{EA#U(ESeN(t++18?4jdTPLOfH0Y*|ZKq_rtYX2<=}w=`hDF>q1)n*#u8tRp`Cp&^^qL?s666 z9AYnhHAl)-F<(f*b+l?jMkjcSX3@t+FSEw#fshdQ5}|9Cjx$Eo%9>7H2bz*j^E?<1 z9XP{mA#i1L!ue2Y3_R3NjCc`UCjCmxL5R275#4qWZ1q z!tpyRx>=UCb`TQ829Df09W}vqtrLU=e@<+cPx#tTD(zgV`7M_cl4+vIakOrd*h;t9 zozQi1_z264WwCT9WH-|c3h+JKbqd~#JGJFM>)Sh-z9<4g5!j;$;wl2a6#;gHXS0~V zW^5$M0H&MiD%QhCGrC^YO7E-n;R?D}bM&QXZ@^VM?1ih=lWNj`EX>4Tx0C=2zkv&MmKpe$iQ>7{u2P=p;WT;M7 zL`57+6^me@v=v%)FuC+YXws0RxHt-~1qVMCs}3&Cx;nTDg5U>;tBaGOi}v_(b9;(+!Jwop@%`(mC%FhgeBch|h_~47wokBiCh@-#8Z?7Isb!v+DNN+{ftykfE-YZh(VBV6;ftYaZ|JYVYmeGtK^f0QKo|+p>?gR{#J224YJ` zL;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2j>YD0yY}jxcDak z000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakSAh-}0005vNkl8xhd~l5T^Rp?;tPn-oi6eOcByn>DHL3|@C|$fcOn`Wv6YHw zHH|1;#1>N2j#`?G$9uG#D;+2e9OzZ@ZEEM=YofahsXbp)NSGXRkn>+fl8+e}@VVxzHzRjqOH@+D?-r$ygF2v9Ig z5g~{X9YPx(=3pR5`h>~C{St>2mGM(qiua0tm5F`LtzeiU?jK+*q@a(a88UUM&nf_n zWskD-;yFN9B0a59!7xQm86}fAL{uGQq4E;d7v}iMNvvv(>h`9qgs&HYJF9P{l}3$s z)<=R$lmnp%)5}HaZs{R!Ha9S}G&9+}==mRTlel^;A~NeAXgaN*!3CK9_Ejiyl)iP~ z2aS$H-L_HX$ZzM09A)m+qSUtx{L1xQUYM~IYxPguC@=PR3;q;JJ*=@S;ren94-b!j ZhVN3>q1ffHIM)CG002ovPDHLkV1iKRO}YR8 literal 0 HcmV?d00001 From 79895d8d58d9b54e01aa04137259dff6685deea7 Mon Sep 17 00:00:00 2001 From: DEATHB4DEFEAT Date: Tue, 3 Oct 2023 19:20:49 -0700 Subject: [PATCH 12/21] rest of tha sprites --- .../Glasses/darkened.rsi/equipped-EYES.png | Bin 286 -> 314 bytes .../Eyes/Glasses/darkened.rsi/icon.png | Bin 430 -> 415 bytes .../Eyes/Glasses/darkened.rsi/inhand-left.png | Bin 343 -> 386 bytes .../Eyes/Glasses/darkened.rsi/inhand-right.png | Bin 352 -> 397 bytes .../Glasses/darkened.rsi/this_is_a_placeholder | 0 .../Misc/shadowkin_restraints.rsi/icon.png | Bin 610 -> 3072 bytes .../shadowkin_restraints.rsi/inhand-left.png | Bin 551 -> 234 bytes .../shadowkin_restraints.rsi/inhand-right.png | Bin 552 -> 242 bytes .../this_is_a_placeholder | 0 9 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Resources/Textures/SimpleStation14/Clothing/Eyes/Glasses/darkened.rsi/this_is_a_placeholder delete mode 100644 Resources/Textures/SimpleStation14/Clothing/OuterClothing/Misc/shadowkin_restraints.rsi/this_is_a_placeholder diff --git a/Resources/Textures/SimpleStation14/Clothing/Eyes/Glasses/darkened.rsi/equipped-EYES.png b/Resources/Textures/SimpleStation14/Clothing/Eyes/Glasses/darkened.rsi/equipped-EYES.png index 83fa02bc45628a5495e08493abaf7f3766d09fd2..39fafeb1449fe4e7c941553177275a6764af8e1c 100644 GIT binary patch delta 287 zcmbQow2NtiNGZx^prw85kIDdAc};RLpsMYa{0&2a#hR^%K-x<{p@!we|sv z?he zh`Tvc*Yn?r|4XI_Uq8(VbPg00JpFU`k5r3+@!VApYh%`g+y6aOcSh~U;^svfRZ-_R zoq74^+}UG=G1F&HUXmTRAbYP_-pm$-FH@ge&V(Cs;S}q2Q?u7ykFCA|4dqLX@J#dd bWzb?^kYM0|+Hxs)GKl5r>gTe~DWM4fwK#fm delta 258 zcmdnRG>>V5O8rw$7srr_Id5;R7iM&nIQH>)k6KJP$Dz_iCI1+A>BJZ;?r2&uLs0L; zuHWo2yIySKWjeZ|sfH=-kHj-E#~*dK-dX=X_wL&Fi3|)kf9{)q>&^e&d)_i8_poJF z|JxyNekMQfi`)9!zT0Q_@*RI1d{$E=L~FX~Jf9*n+qL!%lfIqws-9%BR(0*UO;ta6 zo=*-7%aLbifP(`wzwY>H$dT9+SR2T*{&iyBwOjtG$WGqoL(_6H7{0&($n3cVdfzTf`-+RBHs9R_mPcXlMbnJ6)ah8)7@q z>kss&vH{pE@~l=10DOOg5Dukc6@b~J0-$zM~P`?ESDeQvk(qSO~dz6sl1~V!U5K)%^}4Mv^!nBS$x;2)D&$0 z=g_xtoMQ@wA^^GKI`itK5(leSZ!~udw&TG6@4dlbFc=PkFVvWI!CSsf)&Kwi4rN$L iW=%~1DgXcg2mk;800000(o>TF0000$ z4|B+&y&LeVCCUMzk;!Pm?f9Po2Uxv)F5`c+b|-&tUf6XFnNs-~S0_v)vM4uy_B?;4H-lm3s=&&?LTrooJ&79@XVJ3E+7jO7F!05U{(yVQT336KytJ&}#!%dzKh zc^(Eyh7W$98C(@1mR>1fC#eh|=l~D^8TdLJlKnvOdI!m862}<+vm66jEXfB~%RnL^ yDjULr6G#&!PIU*+5{x=v)B&Ro7XpdZTyV$7lWU84b#CQ&*@GN*_e_JKD6?fBcroZ(E0y<%kSR%3QkN?W@G?^ z^i;9x2cNzvF1c=g>Qi~H+3bU#yBBe^|8?4zyQTE}#rfasm7W=WO--U)p<7uJa!M5ABV&lqdT*ocVTQiI9O? zbxINE0$V1Aj_1O^ZQJeEY}Y*pRL_?h;hE;^%b*2hbASv0f=j`ZL6oPfpUXO@geCx3 C(42<= delta 317 zcmV-D0mA-*1J?qOBYy!NNkl>zRUW4L36AQKx?WM{~R z68$r$m{X?Tonxr}f-#2GrtyN&lG#p)OpF^JB*m;;ux;bUgjN6Vn{BR$e|B2SpNRns z{!Mkf-KcZ=P?hPV_1e03YG41nZ??hJby?@8wtZ8V#0JvH^_Z(f6AEe}70^`CW` zR8m^IYLUjaXaBY^Uc05>dCv0Zu1P9OUw+bPo4#a|4twUVDJnpbV!unjW8`Zsr))Jd z@l}4m_mRcFYum4wM^4LWz5XXq7sIWkm2Q`0CVdHgKKnL^ zKiACR)_x#uzt3=%1Vh8)uS_}1YVB@%Zg&G}<4cY3O!M_+&;qhKK;{6!rQpdR%G1@) JWt~$(69D-QrfvWL delta 326 zcmV-M0lEH-1KN8QP;S76%)MXWN1t=zBt5VYf4b4n9)Bn%1%zWP)R`DbN000000N`JljUCAIJfxdi zZQbeZ`F-^KUwe9e3=fNY`Im*Nsv4d5Zs=iA6ranVc1vYh7Jsfc>h)z=7EZgR+PYJ^ zsZ|uk=)AoF7-PbGeUv2aR|k3TWvz|+3$WJCy!YC#4w9t#`Y2<}UgAI{BQ<@mDniRm4CPu6#1t4AC#E8|e?=DRY0Ko0~ Y0Gl6(hoAftwg3PC07*qoM6N<$f-w7;YybcN diff --git a/Resources/Textures/SimpleStation14/Clothing/Eyes/Glasses/darkened.rsi/this_is_a_placeholder b/Resources/Textures/SimpleStation14/Clothing/Eyes/Glasses/darkened.rsi/this_is_a_placeholder deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/Resources/Textures/SimpleStation14/Clothing/OuterClothing/Misc/shadowkin_restraints.rsi/icon.png b/Resources/Textures/SimpleStation14/Clothing/OuterClothing/Misc/shadowkin_restraints.rsi/icon.png index 9f3449f093d6672d77f23ee5d6b61fe3dc3f26f4..def3161bb0aa157191591f4a2c2d4600ff9d1708 100644 GIT binary patch delta 3067 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 JPDHLkV1mEns?`7h delta 586 zcmV-Q0=4~s7~%wwBYy%ZNklBjE6vuxq)#}X=4k#Qc*I+VQL%epoeuCyx z^$WOTab`oUX7TC_vWbUa94#hV+QdfbW)N5%(mN!ljZUF7L;V)L(>vb%-d}g`RQvJq z8!u_EUUc;xzz$#sumb>ISD8F;hne=@e}7lges}XZ+ix}>y??hcYXt`GFgxjVIO%i> zFavj(?Khj~SRT^GYBqO)UOY`x03635O;g5UNZa?#SjR3#BWoo}70`3aTG-aK>$F%-$yBB-dD9J70}hgLv`aYG`>=by+#A2 zlu>3JhDa%qQh!>jP^y5IH;N+KzHfZ3fPMnBecz}crQ~8XDobyF40ZKw-!D|G$59lS zIUi0>ZPS(mtk-MeI5yS8(+cRg=Xq8DrKccXEKD+8AyC)@+H~CWJmST|3ZPVh+tmtB z2$MVy@u#updEBm6Rsf}qXnQBOeZL^PHl@@f7@KBPs((N}$-o_E`3;zd(#N#wT~O&V z(iQ|k;oAp6U`|F=dlta9+u&l!z@V>K6Sg?Cka=xSs{Kkn{oduo+L>nh|*7>E5Dx4iEnPW zoKAl`??ZAr<;~$C-oXKHkB&I&^|HUxhyc!dJ>%Ewb?RI3y+#9oyXBI*<&w!{Vv`nt YpVAo^lK-9=jQ{`u07*qoM6N<$g7KFQC;$Ke diff --git a/Resources/Textures/SimpleStation14/Clothing/OuterClothing/Misc/shadowkin_restraints.rsi/inhand-left.png b/Resources/Textures/SimpleStation14/Clothing/OuterClothing/Misc/shadowkin_restraints.rsi/inhand-left.png index 0535d5601a958c8ae3b590ac4a8fdfe8df6c766e..5c15def766666652b5c98cf5e93edff981091d7d 100644 GIT binary patch delta 207 zcmZ3^@``bSayDzMY@Eil zYO<15i|p-F)yzL+=FWX~e;XrEIm4faU-#@+zskFHR!^SU>bw=l>%4P|uEsv!B6jyl zN59>vs7Ap>-%F4DtKa>F1*D#VVZsXEqL7J?x1Q!Zf9B)n`yMKP))*bn|Jb(RliI1} z3yQ>V|6$j&Wn>VpWq8+Fa{S_wPoY3fe5nzhX}-P;T0k}j$P^&B6g(M3dAjC@6E4UW9|o{yQ1&`86&B&+E+VFbfVqL_|bH zL_|bHL`2CbrL+`61Ar7lE2VVQ{OfF{r4agcHjA9UDW#M?lYc^7oA++ndc$V^N{8>u4u8Z@o$SNO4stqtv>J8ZM_W*#^YIXH_9?v=-RW9v<=WV(T zg3H)lsRRJ{{`mOU?@OAGD)k-kagwc8>yP7E=A+^naO(-&TIvmuLg+9I0RYu%H3tA; z7=HQ{CWX-V<$v;3{=Qt!jzm>^t%fI0JzP2n2#bOcL?G}T64f%Y0cXSE5U0}#K@h;QtXMUSZU6xMcz=4r`{97;bQ&vfWCIq91%AG~ z;M>Ck-VX=#`+Yc$6RVc7Z-I8ZtqX+$8jS`flL@4hvDRYj_4sHs$~lgM`FtMx*9Q!4 z004BmUDWG!XdVCN+}H;6dOe-b=TWQG64f#C5bSh1x>BiNJRW1W+a;>?3ytRWtVW;# R5dZ)H00>D%PDHLkV1i8~1qlEE diff --git a/Resources/Textures/SimpleStation14/Clothing/OuterClothing/Misc/shadowkin_restraints.rsi/inhand-right.png b/Resources/Textures/SimpleStation14/Clothing/OuterClothing/Misc/shadowkin_restraints.rsi/inhand-right.png index 93b9809df9429ae1975c3cd3f5fa2eb3ffd5efec..99c96d368ad662720c069d13f2110606a75f60db 100644 GIT binary patch delta 215 zcmZ3%@`-VRay(s@4Z{Qzbx}!;Jtc}lh$4z6SwREX=7m6d$;OWkfDA~fcfG-Pxm>zdh@^MRBfZ! zZmy~Ei}rA9-A|hR|G-*nh6nR&7}s%?9A}QbTo2U6mm1-j=IhI#1!Qx8i~)j6!IMFh Mr>mdKI;Vst0N5E>g8%>k delta 528 zcmV+r0`L9u0jLC!BYy$!NklVsBDSxH6q!7FJrZizc|8zS2 zXa3awg%m=&u8U_WKP`He60YlFI~BJoN&eJf;k!9%z-F@n0L*5yPp{kht&5xg?y#^O zlehQxUF|-X0{}eu{?Ynd6F2|S1ne)W)oLf}w=8ac?g7^haBW8okV5DviU0tmQt1u= zqA0rgufQ!Sgn#ymMF1c9y<+i?`O~M0wr#_^LL7=PEDi(_cem*|xPN!pRBTk+ReAQ~T!mp<%SeA9J zJQtT}0#d0I!Z6%juh;9d1-i6E4H%Eds8lK_m&*WvbbmUHFbs{n4H6%YdY*^ja0tt? zFquryXf%vCK0lPG0Y5AYgTVmxdL8|KAI)ad$PW*kctYf>+U>T^WHOk~=jio%#x@}F zEugiA@B45Z=bU*iE^z}2g#xnKEb{q0TCJ9m8zAr>zXO)bC4>-g9LMM>_zfVb>l#XU S#0vlb00{s|MNUMnLSTZcKJusl diff --git a/Resources/Textures/SimpleStation14/Clothing/OuterClothing/Misc/shadowkin_restraints.rsi/this_is_a_placeholder b/Resources/Textures/SimpleStation14/Clothing/OuterClothing/Misc/shadowkin_restraints.rsi/this_is_a_placeholder deleted file mode 100644 index e69de29bb2..0000000000 From 0b9b46856222a6fb15bf3d4509b77f8414d65228 Mon Sep 17 00:00:00 2001 From: DEATHB4DEFEAT Date: Fri, 13 Oct 2023 18:25:43 -0700 Subject: [PATCH 13/21] fix DarkSwapAttemptEvent Performer being private --- .../Species/Shadowkin/Events/ShadowkinEvents.Powers.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Server/SimpleStation14/Species/Shadowkin/Events/ShadowkinEvents.Powers.cs b/Content.Server/SimpleStation14/Species/Shadowkin/Events/ShadowkinEvents.Powers.cs index 52e1814775..9d91b99ffa 100644 --- a/Content.Server/SimpleStation14/Species/Shadowkin/Events/ShadowkinEvents.Powers.cs +++ b/Content.Server/SimpleStation14/Species/Shadowkin/Events/ShadowkinEvents.Powers.cs @@ -76,7 +76,7 @@ public sealed class ShadowkinDarkSwapEvent : InstantActionEvent, ISpeakSpell public sealed class ShadowkinDarkSwapAttemptEvent : CancellableEntityEventArgs { - EntityUid Performer; + public EntityUid Performer; public ShadowkinDarkSwapAttemptEvent(EntityUid performer) { From 642e0a66c66a48dc2f98dde7a6ae01dcf8830a99 Mon Sep 17 00:00:00 2001 From: DEATHB4DEFEAT Date: Fri, 13 Oct 2023 18:32:30 -0700 Subject: [PATCH 14/21] clean up DarkSwap and add variables to the power component --- .../ShadowkinDarkSwapPowerComponent.cs | 23 +++++++ .../Systems/ShadowkinPowerSystem.DarkSwap.cs | 62 ++++++++++++------- .../ShadowkinDarkSwappedComponent.cs | 16 ++++- 3 files changed, 76 insertions(+), 25 deletions(-) diff --git a/Content.Server/SimpleStation14/Species/Shadowkin/Components/ShadowkinDarkSwapPowerComponent.cs b/Content.Server/SimpleStation14/Species/Shadowkin/Components/ShadowkinDarkSwapPowerComponent.cs index c53326b5e7..30fd624472 100644 --- a/Content.Server/SimpleStation14/Species/Shadowkin/Components/ShadowkinDarkSwapPowerComponent.cs +++ b/Content.Server/SimpleStation14/Species/Shadowkin/Components/ShadowkinDarkSwapPowerComponent.cs @@ -3,5 +3,28 @@ namespace Content.Server.SimpleStation14.Species.Shadowkin.Components; [RegisterComponent] public sealed class ShadowkinDarkSwapPowerComponent : Component { + /// + /// If the entity should be sent to the dark + /// + [DataField("invisible")] + public bool Invisible = true; + /// + /// If the entity should dim nearby lights when swapped + /// + [DataField("darken"), ViewVariables(VVAccess.ReadWrite)] + public bool Darken = true; + + /// + /// How far to dim nearby lights + /// + [DataField("range"), ViewVariables(VVAccess.ReadWrite)] + public float DarkenRange = 5f; + + /// + /// How fast to refresh nearby light dimming in seconds + /// Without this performance would be significantly worse + /// + [ViewVariables(VVAccess.ReadWrite)] + public float DarkenRate = 0.084f; // 1/12th of a second } diff --git a/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.DarkSwap.cs b/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.DarkSwap.cs index ab89397c65..8433548bb1 100644 --- a/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.DarkSwap.cs +++ b/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.DarkSwap.cs @@ -39,6 +39,7 @@ public override void Initialize() SubscribeLocalEvent(Shutdown); SubscribeLocalEvent(DarkSwap); + SubscribeLocalEvent(DarkSwapAttempt); SubscribeLocalEvent(OnInvisStartup); SubscribeLocalEvent(OnInvisShutdown); @@ -72,22 +73,31 @@ private void DarkSwap(EntityUid uid, ShadowkinDarkSwapPowerComponent component, SetDarkened( args.Performer, !hasComp, - !hasComp, - true, - args.StaminaCostOn, - args.PowerCostOn, + component.Invisible, + component.Darken, args.SoundOn, args.VolumeOn, - args.StaminaCostOff, - args.PowerCostOff, args.SoundOff, args.VolumeOff, - args + args, + args.StaminaCostOn, + args.PowerCostOn, + args.StaminaCostOff, + args.PowerCostOff ); _magic.Speak(args, false); } + /// + /// Ensure the entity has the power component + /// + private void DarkSwapAttempt(ShadowkinDarkSwapAttemptEvent args) + { + if (!_entity.HasComponent(args.Performer)) + args.Cancel(); + } + /// /// Handles the effects of darkswapping @@ -96,29 +106,29 @@ private void DarkSwap(EntityUid uid, ShadowkinDarkSwapPowerComponent component, /// Is the entity swapping in to or out of The Dark? /// Should the entity become invisible? /// Should darkswapping darken nearby lights? - /// Stamina cost for darkswapping - /// Power cost for darkswapping /// Sound for the darkswapping /// Volume for the on sound - /// Stamina cost for un swapping - /// Power cost for un swapping /// Sound for the un swapping /// Volume for the off sound + /// Stamina cost for darkswapping + /// Power cost for darkswapping + /// Stamina cost for un swapping + /// Power cost for un swapping /// If from an event, handle it public void SetDarkened( EntityUid performer, bool addComp, bool invisible, bool darken, - float staminaCostOn, - float powerCostOn, - SoundSpecifier soundOn, - float volumeOn, - float staminaCostOff, - float powerCostOff, - SoundSpecifier soundOff, - float volumeOff, - ShadowkinDarkSwapEvent? args + SoundSpecifier? soundOn, + float? volumeOn, + SoundSpecifier? soundOff, + float? volumeOff, + ShadowkinDarkSwapEvent? args, + float staminaCostOn = 0, + float powerCostOn = 0, + float staminaCostOff = 0, + float powerCostOff = 0 ) { var ev = new ShadowkinDarkSwapAttemptEvent(performer); @@ -126,15 +136,20 @@ public void SetDarkened( if (ev.Cancelled) return; + var power = _entity.GetComponent(performer); + if (addComp) { var comp = _entity.EnsureComponent(performer); comp.Invisible = invisible; comp.Darken = darken; + comp.DarkenRange = power.DarkenRange; + comp.DarkenRange = power.DarkenRate; RaiseNetworkEvent(new ShadowkinDarkSwappedEvent(performer, true)); - _audio.PlayPvs(soundOn, performer, AudioParams.Default.WithVolume(volumeOn)); + if (soundOn != null) + _audio.PlayPvs(soundOn, performer, AudioParams.Default.WithVolume(volumeOn ?? 5f)); _power.TryAddPowerLevel(performer, -powerCostOn); _stamina.TakeStaminaDamage(performer, staminaCostOn); @@ -144,7 +159,8 @@ public void SetDarkened( _entity.RemoveComponent(performer); RaiseNetworkEvent(new ShadowkinDarkSwappedEvent(performer, false)); - _audio.PlayPvs(soundOff, performer, AudioParams.Default.WithVolume(volumeOff)); + if (soundOff != null) + _audio.PlayPvs(soundOff, performer, AudioParams.Default.WithVolume(volumeOff ?? 5f)); _power.TryAddPowerLevel(performer, -powerCostOff); _stamina.TakeStaminaDamage(performer, staminaCostOff); @@ -170,8 +186,10 @@ private void OnInvisShutdown(EntityUid uid, ShadowkinDarkSwappedComponent compon if (component.Invisible) SetCanSeeInvisibility(uid, false, true, true); + // Prevent more updates while we're cleaning up component.Darken = false; + // In case more updates occur for some reason, create a copy of the list to prevent error foreach (var light in component.DarkenedLights.ToArray()) { if (!_entity.TryGetComponent(light, out var pointLight) || diff --git a/Content.Shared/SimpleStation14/Species/Shadowkin/Components/ShadowkinDarkSwappedComponent.cs b/Content.Shared/SimpleStation14/Species/Shadowkin/Components/ShadowkinDarkSwappedComponent.cs index f1d9616d39..75fc89878c 100644 --- a/Content.Shared/SimpleStation14/Species/Shadowkin/Components/ShadowkinDarkSwappedComponent.cs +++ b/Content.Shared/SimpleStation14/Species/Shadowkin/Components/ShadowkinDarkSwappedComponent.cs @@ -6,26 +6,36 @@ namespace Content.Shared.SimpleStation14.Species.Shadowkin.Components; public sealed class ShadowkinDarkSwappedComponent : Component { /// - /// If it should be sent to the dark + /// If the entity should be sent to the dark /// - [DataField("invisible")] + /// + /// This is also defined in the power component, this is if you want to use only some effects of the swap without a toggle + /// + [DataField("invisible"), ViewVariables(VVAccess.ReadWrite)] public bool Invisible = true; /// - /// If it should dim nearby lights + /// If the entity should dim nearby lights when swapped /// + /// [DataField("darken"), ViewVariables(VVAccess.ReadWrite)] public bool Darken = true; /// /// How far to dim nearby lights /// + /// [DataField("range"), ViewVariables(VVAccess.ReadWrite)] public float DarkenRange = 5f; [ViewVariables(VVAccess.ReadOnly)] public List DarkenedLights = new(); + /// + /// How fast to refresh nearby light dimming in seconds + /// Without this performance would be significantly worse + /// + /// [ViewVariables(VVAccess.ReadWrite)] public float DarkenRate = 0.084f; // 1/12th of a second From 702fa9a77b6f4059fe875ab24d48a9603efbb53f Mon Sep 17 00:00:00 2001 From: DEATHB4DEFEAT Date: Fri, 13 Oct 2023 18:33:34 -0700 Subject: [PATCH 15/21] fix darkenrange being set to darkenrate --- .../Species/Shadowkin/Systems/ShadowkinPowerSystem.DarkSwap.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.DarkSwap.cs b/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.DarkSwap.cs index 8433548bb1..8283410847 100644 --- a/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.DarkSwap.cs +++ b/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.DarkSwap.cs @@ -144,7 +144,7 @@ public void SetDarkened( comp.Invisible = invisible; comp.Darken = darken; comp.DarkenRange = power.DarkenRange; - comp.DarkenRange = power.DarkenRate; + comp.DarkenRate = power.DarkenRate; RaiseNetworkEvent(new ShadowkinDarkSwappedEvent(performer, true)); From 03a905372e7844d4ac3a5f54380249f615ba7523 Mon Sep 17 00:00:00 2001 From: DEATHB4DEFEAT Date: Fri, 13 Oct 2023 19:01:52 -0700 Subject: [PATCH 16/21] comment the DarkSwap system --- .../ShadowkinDarkSwapPowerComponent.cs | 6 ++++ .../Systems/ShadowkinPowerSystem.DarkSwap.cs | 34 ++++++++++--------- 2 files changed, 24 insertions(+), 16 deletions(-) diff --git a/Content.Server/SimpleStation14/Species/Shadowkin/Components/ShadowkinDarkSwapPowerComponent.cs b/Content.Server/SimpleStation14/Species/Shadowkin/Components/ShadowkinDarkSwapPowerComponent.cs index 30fd624472..7cdbb9f5e4 100644 --- a/Content.Server/SimpleStation14/Species/Shadowkin/Components/ShadowkinDarkSwapPowerComponent.cs +++ b/Content.Server/SimpleStation14/Species/Shadowkin/Components/ShadowkinDarkSwapPowerComponent.cs @@ -9,6 +9,12 @@ public sealed class ShadowkinDarkSwapPowerComponent : Component [DataField("invisible")] public bool Invisible = true; + /// + /// If it should be pacified + /// + [DataField("pacify")] + public bool Pacify = true; + /// /// If the entity should dim nearby lights when swapped /// diff --git a/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.DarkSwap.cs b/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.DarkSwap.cs index 0bb4c69bfd..e97926d592 100644 --- a/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.DarkSwap.cs +++ b/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.DarkSwap.cs @@ -39,7 +39,6 @@ public override void Initialize() SubscribeLocalEvent(Shutdown); SubscribeLocalEvent(DarkSwap); - SubscribeLocalEvent(DarkSwapAttempt); SubscribeLocalEvent(OnInvisStartup); SubscribeLocalEvent(OnInvisShutdown); @@ -68,11 +67,9 @@ private void DarkSwap(EntityUid uid, ShadowkinDarkSwapPowerComponent component, return; - var hasComp = _entity.HasComponent(args.Performer); - SetDarkened( args.Performer, - !hasComp, + !_entity.HasComponent(args.Performer), args.SoundOn, args.VolumeOn, args.SoundOff, @@ -87,15 +84,6 @@ private void DarkSwap(EntityUid uid, ShadowkinDarkSwapPowerComponent component, _magic.Speak(args, false); } - /// - /// Ensure the entity has the power component - /// - private void DarkSwapAttempt(ShadowkinDarkSwapAttemptEvent args) - { - if (!_entity.HasComponent(args.Performer)) - args.Cancel(); - } - /// /// Handles the effects of darkswapping @@ -125,15 +113,19 @@ public void SetDarkened( float powerCostOff = 0 ) { + // Ask other systems if we can DarkSwap var ev = new ShadowkinDarkSwapAttemptEvent(performer); RaiseLocalEvent(ev); if (ev.Cancelled) return; - var power = _entity.GetComponent(performer); + // We require the power component to DarkSwap + if (!_entity.TryGetComponent(performer, out var power)) + return; - if (addComp) + if (addComp) // Into The Dark { + // Add the DarkSwapped component and set variables to match the power component var comp = _entity.EnsureComponent(performer); comp.Invisible = power.Invisible; comp.Pacify = power.Pacify; @@ -141,26 +133,35 @@ public void SetDarkened( comp.DarkenRange = power.DarkenRange; comp.DarkenRate = power.DarkenRate; + // Tell other systems we've DarkSwapped RaiseNetworkEvent(new ShadowkinDarkSwappedEvent(performer, true)); + // Play a sound if we have one if (soundOn != null) _audio.PlayPvs(soundOn, performer, AudioParams.Default.WithVolume(volumeOn ?? 5f)); + // Drain power and stamina if we have a cost _power.TryAddPowerLevel(performer, -powerCostOn); _stamina.TakeStaminaDamage(performer, staminaCostOn); } - else + else // Out of The Dark { + // Remove the DarkSwapped component, the rest is handled in the shutdown event _entity.RemoveComponent(performer); + + // Tell other systems we've un DarkSwapped RaiseNetworkEvent(new ShadowkinDarkSwappedEvent(performer, false)); + // Play a sound if we have one if (soundOff != null) _audio.PlayPvs(soundOff, performer, AudioParams.Default.WithVolume(volumeOff ?? 5f)); + // Drain power and stamina if we have a cost _power.TryAddPowerLevel(performer, -powerCostOff); _stamina.TakeStaminaDamage(performer, staminaCostOff); } + // If we have an event, mark it as handled if (args != null) args.Handled = true; } @@ -195,6 +196,7 @@ private void OnInvisShutdown(EntityUid uid, ShadowkinDarkSwappedComponent compon _darken.ResetLight(pointLight, shadowkinLight); } + // Clear the original array component.DarkenedLights.Clear(); } From cee48bf49b8d9300cf9167dc7794093990305f6a Mon Sep 17 00:00:00 2001 From: DEATHB4DEFEAT Date: Fri, 13 Oct 2023 19:17:45 -0700 Subject: [PATCH 17/21] fix RSI validator error --- .../Species/Shadowkin/parts.rsi/meta.json | 30 +++++++++++-------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/parts.rsi/meta.json b/Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/parts.rsi/meta.json index 11752d5140..981da93ef2 100644 --- a/Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/parts.rsi/meta.json +++ b/Resources/Textures/SimpleStation14/Mobs/Species/Shadowkin/parts.rsi/meta.json @@ -8,43 +8,43 @@ "copyright": "https://github.com/SPLURT-Station/S.P.L.U.R.T-Station-13/commit/5bc3ea02ce03a551c85017f1ddd411315a19a5ca#diff-519788fa2ca74299d1686a44d3ab2098b49ed5ab65d293ec742bead7d49f0b8d", "states": [ { - "name": "full", + "name": "eyes", "directions": 4 }, { - "name": "head_m", + "name": "full-nomarkings", "directions": 4 }, { - "name": "head_f", + "name": "full", "directions": 4 }, { - "name": "torso_m", + "name": "head_f", "directions": 4 }, { - "name": "torso_f", + "name": "head_m", "directions": 4 }, { - "name": "r_arm", + "name": "l_arm", "directions": 4 }, { - "name": "l_arm", + "name": "l_foot", "directions": 4 }, { - "name": "r_hand", + "name": "l_hand", "directions": 4 }, { - "name": "l_hand", + "name": "l_leg", "directions": 4 }, { - "name": "r_leg", + "name": "r_arm", "directions": 4 }, { @@ -52,15 +52,19 @@ "directions": 4 }, { - "name": "l_leg", + "name": "r_hand", "directions": 4 }, { - "name": "l_foot", + "name": "r_leg", "directions": 4 }, { - "name": "eyes", + "name": "torso_f", + "directions": 4 + }, + { + "name": "torso_m", "directions": 4 } ] From 59ea23648a74eb09279d269ba55fd2de9a6a73c4 Mon Sep 17 00:00:00 2001 From: DEATHB4DEFEAT Date: Fri, 13 Oct 2023 21:12:58 -0700 Subject: [PATCH 18/21] don't grant powers back to blackeyed Shadowkin that are cloned and always blackeye metempsychotically reborn Shadowkin --- Content.Server/Cloning/CloningSystem.cs | 2 +- .../Shadowkin/Systems/ShadowkinPowerSystem.cs | 15 +++++++----- .../Systems/ShadowkinSystem.Blackeye.cs | 24 ++++++++++++++++++- .../Traits/Events/CloningEvents.cs | 4 +++- .../Events/ShadowkinEvents.Blackeye.cs | 4 +++- .../Nyanotrasen/metempsychoticHumanoids.yml | 2 +- 6 files changed, 40 insertions(+), 11 deletions(-) diff --git a/Content.Server/Cloning/CloningSystem.cs b/Content.Server/Cloning/CloningSystem.cs index c4c0705026..cb9e775d77 100644 --- a/Content.Server/Cloning/CloningSystem.cs +++ b/Content.Server/Cloning/CloningSystem.cs @@ -288,7 +288,7 @@ public bool TryCloning(EntityUid uid, EntityUid bodyToClone, Mind.Mind mind, Clo AddComp(uid); // For other systems adding components to the mob - var ev = new BeenClonedEvent(pref, mind, mob, clonePod.Owner); + var ev = new BeenClonedEvent(pref, mind, mob, bodyToClone, clonePod.Owner); RaiseLocalEvent(ev); return true; diff --git a/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.cs b/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.cs index d1525db365..6de576a197 100644 --- a/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.cs +++ b/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.cs @@ -196,22 +196,25 @@ public void SetPowerLevel(EntityUid uid, float newPowerLevel) /// /// Tries to blackeye a shadowkin. /// - public bool TryBlackeye(EntityUid uid) + public bool TryBlackeye(EntityUid uid, bool damage = true, bool checkPower = true) { + if (!_entity.HasComponent(uid)) + return false; + // Raise an attempted blackeye event - var ev = new ShadowkinBlackeyeAttemptEvent(uid); + var ev = new ShadowkinBlackeyeAttemptEvent(uid, checkPower); RaiseLocalEvent(ev); if (ev.Cancelled) return false; - Blackeye(uid); + Blackeye(uid, damage); return true; } /// /// Blackeyes a shadowkin. /// - public void Blackeye(EntityUid uid) + public void Blackeye(EntityUid uid, bool damage = true) { // Get shadowkin component if (!_entity.TryGetComponent(uid, out var component)) @@ -221,8 +224,8 @@ public void Blackeye(EntityUid uid) } component.Blackeye = true; - RaiseNetworkEvent(new ShadowkinBlackeyeEvent(uid)); - RaiseLocalEvent(new ShadowkinBlackeyeEvent(uid)); + RaiseNetworkEvent(new ShadowkinBlackeyeEvent(uid, damage)); + RaiseLocalEvent(new ShadowkinBlackeyeEvent(uid, damage)); } diff --git a/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinSystem.Blackeye.cs b/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinSystem.Blackeye.cs index 52df6f2fa6..d74f0fafee 100644 --- a/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinSystem.Blackeye.cs +++ b/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinSystem.Blackeye.cs @@ -1,4 +1,6 @@ +using Content.Server.Cloning; using Content.Server.SimpleStation14.Species.Shadowkin.Components; +using Content.Server.SimpleStation14.Traits.Events; using Content.Shared.SimpleStation14.Species.Shadowkin.Events; using Content.Shared.SimpleStation14.Species.Shadowkin.Components; using Content.Shared.Damage.Systems; @@ -28,14 +30,20 @@ public override void Initialize() SubscribeLocalEvent(OnBlackeyeAttempt); SubscribeAllEvent(OnBlackeye); + + SubscribeLocalEvent(OnCloned); } private void OnBlackeyeAttempt(ShadowkinBlackeyeAttemptEvent ev) { + // Cancel if one of the following is true: + // - The entity is not a shadowkin + // - The entity is already blackeyed + // - The entity has more than 5 power and ev.CheckPower is true if (!_entity.TryGetComponent(ev.Uid, out var component) || component.Blackeye || - !(component.PowerLevel <= ShadowkinComponent.PowerThresholds[ShadowkinPowerThreshold.Min] + 5)) + (ev.CheckPower && component.PowerLevel > ShadowkinComponent.PowerThresholds[ShadowkinPowerThreshold.Min] + 5)) ev.Cancel(); } @@ -91,4 +99,18 @@ private void OnBlackeye(ShadowkinBlackeyeEvent ev) false ); } + + + private void OnCloned(BeenClonedEvent ev) + { + // Don't give blackeyed Shadowkin their abilities back when they're cloned. + if (_entity.TryGetComponent(ev.OriginalMob, out var shadowkin) && + shadowkin.Blackeye) + _power.TryBlackeye(ev.Mob, false, false); + + // Blackeye the Shadowkin that come from the metempsychosis machine + if (_entity.HasComponent(ev.Cloner) && + _entity.HasComponent(ev.Mob)) + _power.TryBlackeye(ev.Mob, false, false); + } } diff --git a/Content.Server/SimpleStation14/Traits/Events/CloningEvents.cs b/Content.Server/SimpleStation14/Traits/Events/CloningEvents.cs index 8f7ef5e824..54e7dfb02e 100644 --- a/Content.Server/SimpleStation14/Traits/Events/CloningEvents.cs +++ b/Content.Server/SimpleStation14/Traits/Events/CloningEvents.cs @@ -21,13 +21,15 @@ public sealed class BeenClonedEvent : EntityEventArgs public HumanoidCharacterProfile Profile { get; set; } public Mind.Mind Mind { get; set; } public EntityUid Mob { get; set; } + public EntityUid OriginalMob { get; set; } public EntityUid Cloner { get; set; } - public BeenClonedEvent(HumanoidCharacterProfile profile, Mind.Mind mind, EntityUid mob, EntityUid cloner) + public BeenClonedEvent(HumanoidCharacterProfile profile, Mind.Mind mind, EntityUid mob, EntityUid originalMob, EntityUid cloner) { Profile = profile; Mind = mind; Mob = mob; + OriginalMob = originalMob; Cloner = cloner; } } diff --git a/Content.Shared/SimpleStation14/Species/Shadowkin/Events/ShadowkinEvents.Blackeye.cs b/Content.Shared/SimpleStation14/Species/Shadowkin/Events/ShadowkinEvents.Blackeye.cs index f09fa453ca..602dca1379 100644 --- a/Content.Shared/SimpleStation14/Species/Shadowkin/Events/ShadowkinEvents.Blackeye.cs +++ b/Content.Shared/SimpleStation14/Species/Shadowkin/Events/ShadowkinEvents.Blackeye.cs @@ -8,10 +8,12 @@ namespace Content.Shared.SimpleStation14.Species.Shadowkin.Events; public sealed class ShadowkinBlackeyeAttemptEvent : CancellableEntityEventArgs { public readonly EntityUid Uid; + public readonly bool CheckPower; - public ShadowkinBlackeyeAttemptEvent(EntityUid uid) + public ShadowkinBlackeyeAttemptEvent(EntityUid uid, bool checkPower = true) { Uid = uid; + CheckPower = checkPower; } } diff --git a/Resources/Prototypes/Nyanotrasen/metempsychoticHumanoids.yml b/Resources/Prototypes/Nyanotrasen/metempsychoticHumanoids.yml index 9c895703f1..b972756640 100644 --- a/Resources/Prototypes/Nyanotrasen/metempsychoticHumanoids.yml +++ b/Resources/Prototypes/Nyanotrasen/metempsychoticHumanoids.yml @@ -11,4 +11,4 @@ SlimePerson: 0.7 Vox: 0.1 Skeleton: 0.05 - Shadowkin: 0.3 + Shadowkin: 0.4 From 383c38eb4e077dedfb794a2736caf3c633870a0f Mon Sep 17 00:00:00 2001 From: DEATHB4DEFEAT Date: Fri, 13 Oct 2023 21:33:34 -0700 Subject: [PATCH 19/21] fix --- .../SimpleStation14/Eye/EyeStartup.cs | 37 +++++++++---------- .../Systems/ShadowkinPowerSystem.DarkSwap.cs | 4 +- .../Shadowkin/Systems/ShadowkinSightSystem.cs | 4 +- 3 files changed, 22 insertions(+), 23 deletions(-) diff --git a/Content.Server/SimpleStation14/Eye/EyeStartup.cs b/Content.Server/SimpleStation14/Eye/EyeStartup.cs index 5e0fffe9f5..cc5301a98e 100644 --- a/Content.Server/SimpleStation14/Eye/EyeStartup.cs +++ b/Content.Server/SimpleStation14/Eye/EyeStartup.cs @@ -3,29 +3,28 @@ using Content.Server.Visible; using Robust.Server.GameObjects; -namespace Content.Server.SimpleStation14.Eye +namespace Content.Server.SimpleStation14.Eye; + +/// +/// Place to handle eye component startup for whatever systems. +/// +public sealed class EyeStartup : EntitySystem { - /// - /// Place to handle eye component startup for whatever systems. - /// - public sealed class EyeStartup : EntitySystem - { - [Dependency] private readonly IEntityManager _entityManager = default!; - [Dependency] private readonly ShadowkinDarkSwapSystem _shadowkinPowerSystem = default!; + [Dependency] private readonly IEntityManager _entityManager = default!; + [Dependency] private readonly ShadowkinDarkSwapSystem _shadowkinPowerSystem = default!; - public override void Initialize() - { - base.Initialize(); + public override void Initialize() + { + base.Initialize(); - SubscribeLocalEvent(OnEyeStartup); - } + SubscribeLocalEvent(OnEyeStartup); + } - private void OnEyeStartup(EntityUid uid, EyeComponent component, ComponentStartup args) - { - if (_entityManager.HasComponent(uid)) - component.VisibilityMask |= (uint) VisibilityFlags.AIEye; + private void OnEyeStartup(EntityUid uid, EyeComponent component, ComponentStartup args) + { + if (_entityManager.HasComponent(uid)) + component.VisibilityMask |= (uint) VisibilityFlags.AIEye; - _shadowkinPowerSystem.SetVisibility(uid, _entityManager.HasComponent(uid)); - } + _shadowkinPowerSystem.SetVisibility(uid, _entityManager.HasComponent(uid), false, !_entityManager.HasComponent(uid)); } } diff --git a/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.DarkSwap.cs b/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.DarkSwap.cs index eb4330ce1b..dbfd24774d 100644 --- a/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.DarkSwap.cs +++ b/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.DarkSwap.cs @@ -178,7 +178,7 @@ private void OnInvisStartup(EntityUid uid, ShadowkinDarkSwappedComponent compone if (component.Invisible) { - SetVisibility(uid, true); + SetVisibility(uid, true, true, true); SuppressFactions(uid, true); } } @@ -189,7 +189,7 @@ private void OnInvisShutdown(EntityUid uid, ShadowkinDarkSwappedComponent compon if (component.Invisible) { - SetVisibility(uid, false); + SetVisibility(uid, false, true, true); SuppressFactions(uid, false); } diff --git a/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinSightSystem.cs b/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinSightSystem.cs index 4685b8b40c..eec511abf9 100644 --- a/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinSightSystem.cs +++ b/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinSightSystem.cs @@ -19,11 +19,11 @@ public override void Initialize() private void OnEquipped(EntityUid uid, ShadowkinSightComponent component, GotEquippedEvent args) { - _darkSwap.SetCanSeeInvisibility(args.Equipee, true, false, false); + _darkSwap.SetVisibility(args.Equipee, true, false, false); } private void OnUnEquipped(EntityUid uid, ShadowkinSightComponent component, GotUnequippedEvent args) { - _darkSwap.SetCanSeeInvisibility(args.Equipee, false, false, false); + _darkSwap.SetVisibility(args.Equipee, false, false, false); } } From 3fa32e816aab92d1dd12e47bc075742476702e02 Mon Sep 17 00:00:00 2001 From: DEATHB4DEFEAT Date: Fri, 13 Oct 2023 22:13:43 -0700 Subject: [PATCH 20/21] disallow teleporting out of entity storage --- .../Systems/ShadowkinPowerSystem.Teleport.cs | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.Teleport.cs b/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.Teleport.cs index 7622925385..15cca4ac14 100644 --- a/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.Teleport.cs +++ b/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.Teleport.cs @@ -8,6 +8,7 @@ using Content.Shared.Damage.Systems; using Content.Shared.Pulling.Components; using Content.Shared.SimpleStation14.Species.Shadowkin.Components; +using Content.Shared.Storage.Components; using Robust.Shared.Audio; using Robust.Shared.Prototypes; @@ -49,16 +50,15 @@ private void Shutdown(EntityUid uid, ShadowkinTeleportPowerComponent component, private void Teleport(EntityUid uid, ShadowkinTeleportPowerComponent component, ShadowkinTeleportEvent args) { - // Need power to drain power - if (!_entity.TryGetComponent(args.Performer, out var comp)) - return; - - // Don't activate abilities if specially handcuffed - if (_entity.TryGetComponent(args.Performer, out var cuffs) && cuffs.AntiShadowkin) + // Don't activate abilities if... + if (!_entity.TryGetComponent(args.Performer, out var comp) || // Not a Shadowkin + _entity.TryGetComponent(args.Performer, out var cuffs) && cuffs.AntiShadowkin || // Specially handcuffed + _entity.HasComponent(args.Performer)) // Inside an entity storage return; var transform = Transform(args.Performer); + // Must be on the same map if (transform.MapID != args.Target.GetMapId(EntityManager)) return; @@ -67,14 +67,12 @@ private void Teleport(EntityUid uid, ShadowkinTeleportPowerComponent component, puller.Pulling != null && _entity.TryGetComponent(puller.Pulling, out pullable) && pullable.BeingPulled) - { - // Temporarily stop pulling to avoid not teleporting to the target + // Temporarily stop pulling to avoid not teleporting fully to the target _pulling.TryStopPull(pullable); - } // Teleport the performer to the target _transform.SetCoordinates(args.Performer, args.Target); - transform.AttachToGridOrMap(); + _transform.AttachToGridOrMap(args.Performer, transform); if (pullable != null && puller != null) { @@ -84,7 +82,7 @@ private void Teleport(EntityUid uid, ShadowkinTeleportPowerComponent component, // Teleport the pulled entity to the target // TODO: Relative position to the performer _transform.SetCoordinates(pullable.Owner, args.Target); - pulledTransform.AttachToGridOrMap(); + _transform.AttachToGridOrMap(args.Performer, transform); // Resume pulling // TODO: This does nothing? // This does things sometimes, but the client never knows From 8073a5600e59f7a850e8f0a972c100fbbd136a4a Mon Sep 17 00:00:00 2001 From: DEATHB4DEFEAT Date: Fri, 20 Oct 2023 16:10:05 -0700 Subject: [PATCH 21/21] fix Shadowkin visible in The Dark --- .../Systems/ShadowkinPowerSystem.DarkSwap.cs | 4 ++-- .../Systems/ShadowkinPowerSystem.DarkSwap.cs | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.DarkSwap.cs b/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.DarkSwap.cs index dbfd24774d..707c6751f8 100644 --- a/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.DarkSwap.cs +++ b/Content.Server/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.DarkSwap.cs @@ -215,7 +215,7 @@ private void OnInvisShutdown(EntityUid uid, ShadowkinDarkSwappedComponent compon /// Makes the specified entity able to see Shadowkin invisibility. /// /// Entity to modify - /// Whether the entity can see invisibility + /// Whether the entity can see invisibility /// Should the entity be moved to another visibility layer? /// (Only gets considered if set is true) Adds stealth to the entity public void SetVisibility(EntityUid uid, bool set, bool invisibility, bool stealth) @@ -257,7 +257,7 @@ public void SetVisibility(EntityUid uid, bool set, bool invisibility, bool steal // Remove the stealth shader from the entity if (!_entity.TryGetComponent(uid, out _)) - _stealth.SetVisibility(uid, 1f, _entity.EnsureComponent(uid)); + _stealth.SetEnabled(uid, false); } } diff --git a/Content.Shared/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.DarkSwap.cs b/Content.Shared/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.DarkSwap.cs index af568c8467..df5aa5448c 100644 --- a/Content.Shared/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.DarkSwap.cs +++ b/Content.Shared/SimpleStation14/Species/Shadowkin/Systems/ShadowkinPowerSystem.DarkSwap.cs @@ -1,4 +1,5 @@ using Content.Shared.Interaction.Events; +using Content.Shared.Item; using Content.Shared.SimpleStation14.Species.Shadowkin.Components; using Content.Shared.Popups; using Robust.Shared.Timing; @@ -21,14 +22,13 @@ public override void Initialize() private void OnInteractionAttempt(EntityUid uid, ShadowkinDarkSwappedComponent component, InteractionAttemptEvent args) { - if (args.Target == null || !_entity.TryGetComponent(args.Target, out var __) || - _entity.TryGetComponent(args.Target, out _)) + if (args.Target == null || + !_entity.HasComponent(args.Target) || + _entity.HasComponent(args.Target)) return; args.Cancel(); - if (_gameTiming.InPrediction) - return; - - _popup.PopupEntity(Loc.GetString("ethereal-pickup-fail"), args.Target.Value, uid); + if (_gameTiming.InPrediction && _gameTiming.IsFirstTimePredicted) + _popup.PopupEntity(Loc.GetString("ethereal-pickup-fail"), args.Target.Value, uid); } }