From 96ff529c82de673cd8cad7512e94f7b4dc413369 Mon Sep 17 00:00:00 2001 From: Ed <96445749+TheShuEd@users.noreply.github.com> Date: Wed, 1 Nov 2023 02:20:52 +0300 Subject: [PATCH] Anomaly Cores (#21306) * add first anomaly core * meme * 5 min to 10 min fix yml * fix * Update doc * no static price --- .../Components/AnomalyCoreComponent.cs | 42 +++ .../Anomaly/Effects/AnomalyCoreSystem.cs | 56 ++++ Content.Shared/Anomaly/AnomalyCoreVisuals.cs | 9 + .../Anomaly/Components/AnomalyComponent.cs | 13 + Content.Shared/Anomaly/SharedAnomalySystem.cs | 5 +- .../Specific/{ => Anomaly}/anomalies.yml | 21 ++ .../Structures/Specific/Anomaly/cores.yml | 251 ++++++++++++++++++ .../Cores/bluespace_core.rsi/core.png | Bin 0 -> 185 bytes .../Cores/bluespace_core.rsi/meta.json | 25 ++ .../Cores/bluespace_core.rsi/pulse.png | Bin 0 -> 237 bytes .../Cores/electric_core.rsi/core.png | Bin 0 -> 173 bytes .../Cores/electric_core.rsi/meta.json | 25 ++ .../Cores/electric_core.rsi/pulse.png | Bin 0 -> 304 bytes .../Anomalies/Cores/flesh_core.rsi/core.png | Bin 0 -> 279 bytes .../Anomalies/Cores/flesh_core.rsi/meta.json | 25 ++ .../Anomalies/Cores/flesh_core.rsi/pulse.png | Bin 0 -> 331 bytes .../Anomalies/Cores/gravity_core.rsi/core.png | Bin 0 -> 191 bytes .../Cores/gravity_core.rsi/meta.json | 25 ++ .../Cores/gravity_core.rsi/pulse.png | Bin 0 -> 287 bytes .../Anomalies/Cores/ice_core.rsi/core.png | Bin 0 -> 196 bytes .../Anomalies/Cores/ice_core.rsi/meta.json | 25 ++ .../Anomalies/Cores/ice_core.rsi/pulse.png | Bin 0 -> 221 bytes .../Anomalies/Cores/liquid_core.rsi/core.png | Bin 0 -> 216 bytes .../Anomalies/Cores/liquid_core.rsi/meta.json | 25 ++ .../Anomalies/Cores/liquid_core.rsi/pulse.png | Bin 0 -> 441 bytes .../Anomalies/Cores/pyro_core.rsi/core.png | Bin 0 -> 369 bytes .../Anomalies/Cores/pyro_core.rsi/meta.json | 25 ++ .../Anomalies/Cores/pyro_core.rsi/pulse.png | Bin 0 -> 391 bytes .../Anomalies/Cores/rock_core.rsi/core.png | Bin 0 -> 276 bytes .../Anomalies/Cores/rock_core.rsi/meta.json | 25 ++ .../Anomalies/Cores/rock_core.rsi/pulse.png | Bin 0 -> 393 bytes 31 files changed, 596 insertions(+), 1 deletion(-) create mode 100644 Content.Server/Anomaly/Components/AnomalyCoreComponent.cs create mode 100644 Content.Server/Anomaly/Effects/AnomalyCoreSystem.cs create mode 100644 Content.Shared/Anomaly/AnomalyCoreVisuals.cs rename Resources/Prototypes/Entities/Structures/Specific/{ => Anomaly}/anomalies.yml (91%) create mode 100644 Resources/Prototypes/Entities/Structures/Specific/Anomaly/cores.yml create mode 100644 Resources/Textures/Structures/Specific/Anomalies/Cores/bluespace_core.rsi/core.png create mode 100644 Resources/Textures/Structures/Specific/Anomalies/Cores/bluespace_core.rsi/meta.json create mode 100644 Resources/Textures/Structures/Specific/Anomalies/Cores/bluespace_core.rsi/pulse.png create mode 100644 Resources/Textures/Structures/Specific/Anomalies/Cores/electric_core.rsi/core.png create mode 100644 Resources/Textures/Structures/Specific/Anomalies/Cores/electric_core.rsi/meta.json create mode 100644 Resources/Textures/Structures/Specific/Anomalies/Cores/electric_core.rsi/pulse.png create mode 100644 Resources/Textures/Structures/Specific/Anomalies/Cores/flesh_core.rsi/core.png create mode 100644 Resources/Textures/Structures/Specific/Anomalies/Cores/flesh_core.rsi/meta.json create mode 100644 Resources/Textures/Structures/Specific/Anomalies/Cores/flesh_core.rsi/pulse.png create mode 100644 Resources/Textures/Structures/Specific/Anomalies/Cores/gravity_core.rsi/core.png create mode 100644 Resources/Textures/Structures/Specific/Anomalies/Cores/gravity_core.rsi/meta.json create mode 100644 Resources/Textures/Structures/Specific/Anomalies/Cores/gravity_core.rsi/pulse.png create mode 100644 Resources/Textures/Structures/Specific/Anomalies/Cores/ice_core.rsi/core.png create mode 100644 Resources/Textures/Structures/Specific/Anomalies/Cores/ice_core.rsi/meta.json create mode 100644 Resources/Textures/Structures/Specific/Anomalies/Cores/ice_core.rsi/pulse.png create mode 100644 Resources/Textures/Structures/Specific/Anomalies/Cores/liquid_core.rsi/core.png create mode 100644 Resources/Textures/Structures/Specific/Anomalies/Cores/liquid_core.rsi/meta.json create mode 100644 Resources/Textures/Structures/Specific/Anomalies/Cores/liquid_core.rsi/pulse.png create mode 100644 Resources/Textures/Structures/Specific/Anomalies/Cores/pyro_core.rsi/core.png create mode 100644 Resources/Textures/Structures/Specific/Anomalies/Cores/pyro_core.rsi/meta.json create mode 100644 Resources/Textures/Structures/Specific/Anomalies/Cores/pyro_core.rsi/pulse.png create mode 100644 Resources/Textures/Structures/Specific/Anomalies/Cores/rock_core.rsi/core.png create mode 100644 Resources/Textures/Structures/Specific/Anomalies/Cores/rock_core.rsi/meta.json create mode 100644 Resources/Textures/Structures/Specific/Anomalies/Cores/rock_core.rsi/pulse.png diff --git a/Content.Server/Anomaly/Components/AnomalyCoreComponent.cs b/Content.Server/Anomaly/Components/AnomalyCoreComponent.cs new file mode 100644 index 0000000000..f86f95c71a --- /dev/null +++ b/Content.Server/Anomaly/Components/AnomalyCoreComponent.cs @@ -0,0 +1,42 @@ +using Content.Server.Anomaly.Effects; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; + +namespace Content.Server.Anomaly.Components; + +/// +/// This component exists for a limited time, and after it expires it modifies the entity, greatly reducing its value and changing its visuals +/// +[RegisterComponent, Access(typeof(AnomalyCoreSystem))] +public sealed partial class AnomalyCoreComponent : Component +{ + + /// + /// Amount of time required for the core to decompose into an inert core + /// + [DataField, ViewVariables(VVAccess.ReadWrite)] + public double TimeToDecay = 600; + + /// + /// The moment of core decay. It is set during entity initialization. + /// + [DataField(customTypeSerializer: typeof(TimeOffsetSerializer)), ViewVariables(VVAccess.ReadWrite)] + public TimeSpan DecayMoment; + + /// + /// The starting value of the entity. + /// + [DataField, ViewVariables(VVAccess.ReadWrite)] + public double StartPrice = 10000; + + /// + /// The value of the object sought during decaying + /// + [DataField, ViewVariables(VVAccess.ReadWrite)] + public double EndPrice = 200; + + /// + /// Has the core decayed? + /// + [DataField, ViewVariables(VVAccess.ReadWrite)] + public bool IsDecayed; +} diff --git a/Content.Server/Anomaly/Effects/AnomalyCoreSystem.cs b/Content.Server/Anomaly/Effects/AnomalyCoreSystem.cs new file mode 100644 index 0000000000..eb45101373 --- /dev/null +++ b/Content.Server/Anomaly/Effects/AnomalyCoreSystem.cs @@ -0,0 +1,56 @@ +using Content.Server.Anomaly.Components; +using Content.Server.Cargo.Systems; +using Content.Shared.Anomaly; +using Robust.Shared.Timing; + +namespace Content.Server.Anomaly.Effects; + +/// +/// This component reduces the value of the entity during decay +/// +public sealed class AnomalyCoreSystem : EntitySystem +{ + [Dependency] private readonly SharedAppearanceSystem _appearance = default!; + [Dependency] private readonly IGameTiming _gameTiming = default!; + + public override void Initialize() + { + SubscribeLocalEvent(OnMapInit); + SubscribeLocalEvent(OnGetPrice); + } + + private void OnMapInit(Entity core, ref MapInitEvent args) + { + core.Comp.DecayMoment = _gameTiming.CurTime + TimeSpan.FromSeconds(core.Comp.TimeToDecay); + } + + public override void Update(float frameTime) + { + base.Update(frameTime); + + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var component)) + { + if (component.IsDecayed) + continue; + + //When time runs out, we completely decompose + if (component.DecayMoment < _gameTiming.CurTime) + Decay(uid, component); + } + } + private void OnGetPrice(Entity core, ref PriceCalculationEvent args) + { + var timeLeft = core.Comp.DecayMoment - _gameTiming.CurTime; + var lerp = (double) (timeLeft.TotalSeconds / core.Comp.TimeToDecay); + lerp = Math.Clamp(lerp, 0, 1); + + args.Price = MathHelper.Lerp(core.Comp.EndPrice, core.Comp.StartPrice, lerp); + } + + private void Decay(EntityUid uid, AnomalyCoreComponent component) + { + _appearance.SetData(uid, AnomalyCoreVisuals.Decaying, false); + component.IsDecayed = true; + } +} diff --git a/Content.Shared/Anomaly/AnomalyCoreVisuals.cs b/Content.Shared/Anomaly/AnomalyCoreVisuals.cs new file mode 100644 index 0000000000..f15ab58e0c --- /dev/null +++ b/Content.Shared/Anomaly/AnomalyCoreVisuals.cs @@ -0,0 +1,9 @@ +using Robust.Shared.Serialization; + +namespace Content.Shared.Anomaly; + +[Serializable, NetSerializable] +public enum AnomalyCoreVisuals : byte +{ + Decaying +} diff --git a/Content.Shared/Anomaly/Components/AnomalyComponent.cs b/Content.Shared/Anomaly/Components/AnomalyComponent.cs index 07fc603e26..cf3ba75aaa 100644 --- a/Content.Shared/Anomaly/Components/AnomalyComponent.cs +++ b/Content.Shared/Anomaly/Components/AnomalyComponent.cs @@ -2,6 +2,7 @@ using System.Numerics; using Content.Shared.Damage; using Robust.Shared.Audio; using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; namespace Content.Shared.Anomaly.Components; @@ -208,6 +209,18 @@ public sealed partial class AnomalyComponent : Component [DataField] public SoundSpecifier AnomalyContactDamageSound = new SoundPathSpecifier("/Audio/Effects/lightburn.ogg"); + /// + /// A prototype entity that appears when an anomaly supercrit collapse. + /// + [DataField, ViewVariables(VVAccess.ReadWrite)] + public EntProtoId? CorePrototype; + + /// + /// A prototype entity that appears when an anomaly decays. + /// + [DataField, ViewVariables(VVAccess.ReadWrite)] + public EntProtoId? CoreInertPrototype; + #region Floating Animation /// /// How long it takes to go from the bottom of the animation to the top. diff --git a/Content.Shared/Anomaly/SharedAnomalySystem.cs b/Content.Shared/Anomaly/SharedAnomalySystem.cs index 4b2b3ada70..ca77544a15 100644 --- a/Content.Shared/Anomaly/SharedAnomalySystem.cs +++ b/Content.Shared/Anomaly/SharedAnomalySystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Administration.Logs; +using Content.Shared.Administration.Logs; using Content.Shared.Anomaly.Components; using Content.Shared.Damage; using Content.Shared.Database; @@ -181,6 +181,9 @@ public abstract class SharedAnomalySystem : EntitySystem if (Terminating(uid) || _net.IsClient) return; + + Spawn(supercritical ? component.CorePrototype : component.CoreInertPrototype, Transform(uid).Coordinates); + QueueDel(uid); } diff --git a/Resources/Prototypes/Entities/Structures/Specific/anomalies.yml b/Resources/Prototypes/Entities/Structures/Specific/Anomaly/anomalies.yml similarity index 91% rename from Resources/Prototypes/Entities/Structures/Specific/anomalies.yml rename to Resources/Prototypes/Entities/Structures/Specific/Anomaly/anomalies.yml index 736834fa2f..3526216c13 100644 --- a/Resources/Prototypes/Entities/Structures/Specific/anomalies.yml +++ b/Resources/Prototypes/Entities/Structures/Specific/Anomaly/anomalies.yml @@ -53,6 +53,9 @@ parent: BaseAnomaly suffix: Pyroclastic components: + - type: Anomaly + corePrototype: AnomalyCorePyroclastic + coreInertPrototype: AnomalyCorePyroclasticInert - type: Sprite layers: - state: anom1 @@ -81,6 +84,9 @@ parent: BaseAnomaly suffix: Gravity components: + - type: Anomaly + corePrototype: AnomalyCoreGravity + coreInertPrototype: AnomalyCoreGravityInert - type: Sprite layers: - state: anom2 @@ -102,6 +108,9 @@ parent: BaseAnomaly suffix: Electricity components: + - type: Anomaly + corePrototype: AnomalyCoreElectricity + coreInertPrototype: AnomalyCoreElectricityInert - type: Sprite layers: - state: anom3 @@ -122,6 +131,9 @@ parent: BaseAnomaly suffix: Flesh components: + - type: Anomaly + corePrototype: AnomalyCoreFlesh + coreInertPrototype: AnomalyCoreFleshInert - type: Sprite layers: - state: anom5 @@ -186,6 +198,8 @@ - WallLayer hard: false - type: Anomaly + corePrototype: AnomalyCoreBluespace + coreInertPrototype: AnomalyCoreBluespaceInert pulseSound: collection: RadiationPulse params: @@ -214,6 +228,8 @@ color: "#befaff" castShadows: false - type: Anomaly + corePrototype: AnomalyCoreIce + coreInertPrototype: AnomalyCoreIceInert anomalyContactDamage: types: Cold: 10 @@ -238,6 +254,9 @@ parent: BaseAnomaly suffix: Rock components: + - type: Anomaly + corePrototype: AnomalyCoreRock + coreInertPrototype: AnomalyCoreRockInert - type: Sprite layers: - state: anom6 @@ -289,6 +308,8 @@ color: "#bbbbbb" - type: BadFood - type: Anomaly + corePrototype: AnomalyCoreLiquid + coreInertPrototype: AnomalyCoreLiquidInert anomalyContactDamage: types: Slash: 1 diff --git a/Resources/Prototypes/Entities/Structures/Specific/Anomaly/cores.yml b/Resources/Prototypes/Entities/Structures/Specific/Anomaly/cores.yml new file mode 100644 index 0000000000..835f309fc8 --- /dev/null +++ b/Resources/Prototypes/Entities/Structures/Specific/Anomaly/cores.yml @@ -0,0 +1,251 @@ +- type: entity + parent: BaseItem + id: BaseAnomalyCore + abstract: true + name: anomaly core + description: The core of a detroyed incomprehensible object. + components: + - type: Sprite + sprite: Structures/Specific/Anomalies/Cores/gravity_core.rsi + layers: + - state: core + - state: pulse + map: ["decay"] + - type: Appearance + - type: GenericVisualizer + visuals: + enum.AnomalyCoreVisuals.Decaying: + decay: + True: { visible: true } + False: { visible: false } + - type: Item + size: 10 + - type: ItemCooldown + - type: EmitSoundOnUse #placeholder for future unical mechanic + sound: + collection: RadiationPulse + - type: UseDelay + delay: 2 + - type: AnomalyCore + timeToDecay: 600 + startPrice: 10000 + endPrice: 200 + +- type: entity + parent: BaseAnomalyCore + id: AnomalyCorePyroclastic + suffix: Pyroclastic + components: + - type: Sprite + sprite: Structures/Specific/Anomalies/Cores/pyro_core.rsi + - type: PointLight + radius: 1.5 + energy: 1.5 + color: "#fca3c0" + castShadows: false + +- type: entity + parent: BaseAnomalyCore + id: AnomalyCoreGravity + suffix: Gravity + components: + - type: Sprite + sprite: Structures/Specific/Anomalies/Cores/gravity_core.rsi + - type: PointLight + radius: 1.5 + energy: 10 + color: "#1e070e" + castShadows: false + +- type: entity + parent: BaseAnomalyCore + id: AnomalyCoreIce + suffix: Ice + components: + - type: Sprite + sprite: Structures/Specific/Anomalies/Cores/ice_core.rsi + - type: PointLight + radius: 1.5 + energy: 1.5 + color: "#befaff" + castShadows: false + +- type: entity + parent: BaseAnomalyCore + id: AnomalyCoreFlesh + suffix: Flesh + components: + - type: Sprite + sprite: Structures/Specific/Anomalies/Cores/flesh_core.rsi + - type: PointLight + radius: 1.5 + energy: 3.5 + color: "#cb5b7e" + castShadows: false + +- type: entity + parent: BaseAnomalyCore + id: AnomalyCoreRock + suffix: Rock + components: + - type: Sprite + sprite: Structures/Specific/Anomalies/Cores/rock_core.rsi + - type: PointLight + radius: 1.5 + energy: 3.5 + color: "#5ca8cb" + castShadows: false + +- type: entity + parent: BaseAnomalyCore + id: AnomalyCoreLiquid + suffix: Liquid + components: + - type: Sprite + sprite: Structures/Specific/Anomalies/Cores/liquid_core.rsi + - type: PointLight + radius: 1.5 + energy: 3.5 + color: "#ffffff" + castShadows: false + +- type: entity + parent: BaseAnomalyCore + id: AnomalyCoreBluespace + suffix: Bluespace + components: + - type: Sprite + sprite: Structures/Specific/Anomalies/Cores/bluespace_core.rsi + - type: PointLight + radius: 1.5 + energy: 3.5 + color: "#00ccff" + castShadows: false + +- type: entity + parent: BaseAnomalyCore + id: AnomalyCoreElectricity + suffix: Electricity + components: + - type: Sprite + sprite: Structures/Specific/Anomalies/Cores/electric_core.rsi + - type: PointLight + radius: 1.5 + energy: 2.0 + color: "#ffffaa" + castShadows: false + - type: Electrified + +# Inert cores + +- type: entity + parent: BaseAnomalyCore + id: BaseAnomalyInertCore + abstract: true + components: + - type: AnomalyCore + timeToDecay: 1 #decay very fast + +- type: entity + parent: BaseAnomalyInertCore + id: AnomalyCorePyroclasticInert + suffix: Pyroclastic, Inert + components: + - type: Sprite + sprite: Structures/Specific/Anomalies/Cores/pyro_core.rsi + - type: PointLight + radius: 1.5 + energy: 1.5 + color: "#fca3c0" + castShadows: false + +- type: entity + parent: BaseAnomalyInertCore + id: AnomalyCoreGravityInert + suffix: Gravity, Inert + components: + - type: Sprite + sprite: Structures/Specific/Anomalies/Cores/gravity_core.rsi + - type: PointLight + radius: 1.5 + energy: 10 + color: "#1e070e" + castShadows: false + +- type: entity + parent: BaseAnomalyInertCore + id: AnomalyCoreIceInert + suffix: Ice, Inert + components: + - type: Sprite + sprite: Structures/Specific/Anomalies/Cores/ice_core.rsi + - type: PointLight + radius: 1.5 + energy: 1.5 + color: "#befaff" + castShadows: false + +- type: entity + parent: BaseAnomalyInertCore + id: AnomalyCoreFleshInert + suffix: Flesh, Inert + components: + - type: Sprite + sprite: Structures/Specific/Anomalies/Cores/flesh_core.rsi + - type: PointLight + radius: 1.5 + energy: 3.5 + color: "#cb5b7e" + castShadows: false + +- type: entity + parent: BaseAnomalyInertCore + id: AnomalyCoreRockInert + suffix: Rock, Inert + components: + - type: Sprite + sprite: Structures/Specific/Anomalies/Cores/rock_core.rsi + - type: PointLight + radius: 1.5 + energy: 3.5 + color: "#5ca8cb" + castShadows: false + +- type: entity + parent: BaseAnomalyInertCore + id: AnomalyCoreLiquidInert + suffix: Liquid, Inert + components: + - type: Sprite + sprite: Structures/Specific/Anomalies/Cores/liquid_core.rsi + - type: PointLight + radius: 1.5 + energy: 3.5 + color: "#ffffff" + castShadows: false + +- type: entity + parent: BaseAnomalyInertCore + id: AnomalyCoreBluespaceInert + suffix: Bluespace, Inert + components: + - type: Sprite + sprite: Structures/Specific/Anomalies/Cores/bluespace_core.rsi + - type: PointLight + radius: 1.5 + energy: 3.5 + color: "#00ccff" + castShadows: false + +- type: entity + parent: BaseAnomalyInertCore + id: AnomalyCoreElectricityInert + suffix: Electricity, Inert + components: + - type: Sprite + sprite: Structures/Specific/Anomalies/Cores/electric_core.rsi + - type: PointLight + radius: 1.5 + energy: 2.0 + color: "#ffffaa" + castShadows: false \ No newline at end of file diff --git a/Resources/Textures/Structures/Specific/Anomalies/Cores/bluespace_core.rsi/core.png b/Resources/Textures/Structures/Specific/Anomalies/Cores/bluespace_core.rsi/core.png new file mode 100644 index 0000000000000000000000000000000000000000..818a2fe22b9e2c7df5b3617d3957111ec48f703d GIT binary patch literal 185 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL|>AJY5_^B3j>0 z-pzYJfyZTThwUB~-*5SmO`da)p@QXJ;Ot z@cxPS#6Lgd!uOa=e#|;!%imMw2MTRv4N|wesEf+}x9sltww|M0QnD}h{%bY6(CE0KH-MEZx${CP3p00i_>zopr05WK2l>h($ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Specific/Anomalies/Cores/electric_core.rsi/core.png b/Resources/Textures/Structures/Specific/Anomalies/Cores/electric_core.rsi/core.png new file mode 100644 index 0000000000000000000000000000000000000000..9176daa63ad435d6cee56fe5ee44692f941b2a9b GIT binary patch literal 173 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}>7Fi*ArY-_ zFRd1AaNu#h$lZK=b8SPbo<@t&3(mc*I(3;qz1+r*YaYmoPCPHnC@45_|LQ%>g>&Dm zYfmkHpSkDw@5+`7PN!T9@;Sm89$5LYAB>Bhf92iDDUGt1K59CAlot>b)O^R%b5m?e T+@z)~pp^`su6{1-oD!MX?{NlE^} z;r{qA+YWIDu?XEi6TdVWKa24_8GB1+X24ZLn2z= zUNPi4WFXP@&|Hky>Sn|TCOst%zCPO)^{)c94vqpBrA2Z?SiGkQsk0tk>gf2PejCfA z_sWWliY)^F{aW>6N_PJ%&5I1}{hr<0c6(RarTLSN6;Hay5q&-1yLQh3TN~Lk3^#T# zC(GI&i`QqEz?UYmR8uegn3dYc+@4F0%LPIh6h7uMtSR?DI*Utd!c@!Z($pI-17ps; zxhncvHgabD{sWs222ihl2$-I``eR be|n@>6b7#GdbspA&~pr)u6{1-oD!MPx$1xZ9fRCt{2+HDSlAP_~-*QRT6_P-pu8T!jKF}7kDX8gEk0lYyG2qFOh003@^ zRI_VHQKVYU!aDEqpdX&$lbPP7$U55X$(Iz8{WCmj=%?oY3yCNoHNQx8D`a#L-uchg z&}vpEvpsFQYwg^ymvF@q;9A5PC&8vqU`zD+zm{L58nOf~L+7WSu?bp!l84xVMiz01 z4g&xH00000H*$qDIhSMcTbhr-Ge^N%_TGA2?*~NwnBaauR{pK;2egE={6QX_zo)$+ ztH5NY5ffzk{eYIn&o%;Fi#X#X`06j`8yxz7-YMT@ACS@UwfxXa5=Y$$hRVDaa|r2g d0001>!v~zJvdBpiknR8g002ovPDHLkV1f}+kNp4u literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Specific/Anomalies/Cores/gravity_core.rsi/core.png b/Resources/Textures/Structures/Specific/Anomalies/Cores/gravity_core.rsi/core.png new file mode 100644 index 0000000000000000000000000000000000000000..ccc1645d2dcea628d181dc5be6a73fec18a35ed7 GIT binary patch literal 191 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}m7Xq+ArY-_ zCvW6xFyL|VFWkTK@BjC&#jHxZnw73P8iU!D7W00Vam9(;TWdA1%9Z1n39`Pgg&ebxsLQ0GFOh;s5{u literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Specific/Anomalies/Cores/gravity_core.rsi/meta.json b/Resources/Textures/Structures/Specific/Anomalies/Cores/gravity_core.rsi/meta.json new file mode 100644 index 0000000000..94ffa2be6e --- /dev/null +++ b/Resources/Textures/Structures/Specific/Anomalies/Cores/gravity_core.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC0-1.0", + "copyright": "Created by TheShuEd (github) for ss14", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "core" + }, + { + "name": "pulse", + "delays": [ + [ + 0.15625, + 0.15625, + 0.15625, + 0.15625 + ] + ] + } + ] +} diff --git a/Resources/Textures/Structures/Specific/Anomalies/Cores/gravity_core.rsi/pulse.png b/Resources/Textures/Structures/Specific/Anomalies/Cores/gravity_core.rsi/pulse.png new file mode 100644 index 0000000000000000000000000000000000000000..9d22ec71d192c0c110696d532455bb195dc85fce GIT binary patch literal 287 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|ZhE>nhE&XX zdut=_VFiKKhruG9eK`jNZYoUP+}QqsZAbBQHII^qiw?J6_7hCY!b zKgDPB(&sC8b$7gZ{&Az+?(N&!Zn7*9Fc;Jed;B*tK8t@Z_XmS_kC$rZW!m?b-)`;} zd30?}OEmwyuZ%ipeyf@<+Eym5vsmiq(l(jbx9$pGSfaCigEF(2!(0~ijvYrAvxm>> zmj+q|0^esn{NopV|4UU(+w7YnNoBUCac`e-Ff^=}+$OnQF6&V7z2|3zmsxR|*{j?; fW&4nkfg!#Xe#@cerNjR%G}Yq&Gi&B%8*ApBeG0c3 zuP~)pG93MG;E<*DGd6| nC%)K*GN`5=(16tLZXq)^Xnuh^SU`c*>uK|_skn^vkOuT49TmPA{#rKg1MPg!*C9M}1dxl?X5GBX^mX6UP%x;$uS Rz&D^C22WQ%mvv4FO#mNIQQrUn literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Specific/Anomalies/Cores/liquid_core.rsi/core.png b/Resources/Textures/Structures/Specific/Anomalies/Cores/liquid_core.rsi/core.png new file mode 100644 index 0000000000000000000000000000000000000000..f44798cf18eafb666ce9472e7d483614c00b5019 GIT binary patch literal 216 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}lRRA?wp#*S O$KdJe=d#Wzp$Py+9#Jj; literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Specific/Anomalies/Cores/liquid_core.rsi/meta.json b/Resources/Textures/Structures/Specific/Anomalies/Cores/liquid_core.rsi/meta.json new file mode 100644 index 0000000000..94ffa2be6e --- /dev/null +++ b/Resources/Textures/Structures/Specific/Anomalies/Cores/liquid_core.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC0-1.0", + "copyright": "Created by TheShuEd (github) for ss14", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "core" + }, + { + "name": "pulse", + "delays": [ + [ + 0.15625, + 0.15625, + 0.15625, + 0.15625 + ] + ] + } + ] +} diff --git a/Resources/Textures/Structures/Specific/Anomalies/Cores/liquid_core.rsi/pulse.png b/Resources/Textures/Structures/Specific/Anomalies/Cores/liquid_core.rsi/pulse.png new file mode 100644 index 0000000000000000000000000000000000000000..d8b04a5aaa63ba65c80015eca5766b3915c0f70d GIT binary patch literal 441 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%yJzX3_D(1Ys zwK1zXK!okV{Y#dWoqVl%@9yqmee-OB;^c&Kd4(^GyOsxNl$>~ww!l9@UMaX;uY8~C z;k$n9)v;ZjvsQ=w-2bvg;dwz`$O%gZK_K|6`g-b#D%Id~^_4o7?+z)k9jUJQyi4au z>OYl!R)%?b^ZnzB1HT^qeqFub!U0F|LS|37Zrw#|xBZ-KBX%T`?> zBxos~8nwvB|J}i|FQyr;Gp9XB3#&P?WzU`S)%AOCJllOPb~U4y=8M&llHb>!W?pf% z;d^^F|Lna}3eUIMHPk0=ym|W3cYzKVu)0*{c<^Y&pE-YgE#fB>n99k&ZEBJ2mrg$S zi@kgcx6rz0pKEnJe1yIWcVrapy5+yZRCXIH!@K97ON;rfzopr0BTgkAOHXW literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Specific/Anomalies/Cores/pyro_core.rsi/core.png b/Resources/Textures/Structures/Specific/Anomalies/Cores/pyro_core.rsi/core.png new file mode 100644 index 0000000000000000000000000000000000000000..61a5f22489ea5dd5e32a9a1fb97e1ec9cecab426 GIT binary patch literal 369 zcmV-%0gnEOP)Px$D@jB_R9J=Wl`%`hKoo$#id)8mknM(`LYIIYOQ6s#gL4)kf1tm@pO8OLaOvdO ztv?|{M-_)GC6sn_?Kz0CHi_-s2?e=tP2PK7^4`4zhr{8pq{wo0*5c}Eu52VOY$dkk zyH$M8G%yL%##hhZX4?5KO$(3uaoc01E1@NjgsIvuJQh0u7F+X9o)lSRd1KJVVuy?Z zWE9jQqki1l8Y_V!%hl~&h>U_paUnf~^nOTm33qX{1%v6NSMZ%|wW&b(t?#Zj6+kUl zkgLIT^6N}!4NMZI>e{~o;Qq$1|4O;6czj+1@Unj8As*K9$8u^Pn?nhpF8(E;a}uPx$K}keGRCt{2+OZLWKoAAc)fx=UEWyAo44pBj0Rt-`paFAc4DG_e637TJG(Hmv zWDq%A?yuZ`p~0Ol`z!TZfMzX-}~w;g=NM{AY33s&nTBoe07`9ujF$yUGQRKuqt1e*cBW2~N$6-y;|1I{pAd`I}RHeCtbOO5lqMk*h z4VI&qYmzzG9Y#A#zUx7=jQ;VHQKdPqg^Bd>kOTB>mJGc(CSP8xpPx#&PhZ;R9J=WlTB{IKn#Vy$%K7-7jA_VBB~Z4e!8eoiy$c7aI2gJx-A~ef=Df* zi#l8Ut!6xW&u=Ul9LI5-dna@e^(XI2mR&BYXgYxiO|>xlnFamHhtkV=m=CV%`*{uD zN1ClIL}m@}yZLj7yo3nA<68;6Xtpy42<_;fLS$HuD2kGC8-if}k6m$-DExK&H@Q`y zssL1)sOv2OSZQkC>;dc(5aDaN17M?xb=&;#`UxUtyKZYZUHz;ffFx9eWrWjt;^2(S+T0000Px$LrFwIRCt{2+OckfFc5&@Yt)rF8KWq&SSucYmGT046&|5aRJ!&7D%L7P)v=wk z<4$yI;sYNR^#5i!JH|RYK8pYV0ARUX-guWce$2afnnpxKvc8nJ^W&fI4bPq5pMqmg zRac$={`e9Rx!Si$T;BM)>TZs5U3H_s#x;d&qsKH8yR$BDyww0~EP`50!|h=gJ0t*w zC1qjFN)(g?EtWM)!=4~S@G20Rg{}4hT61p1eig3uQ?{kIV#kiTIE8D2cB2~iF@ssV zY+mK^nYtGM000000Qje@4nOB^cXV+y>q|NAPqUxa9``57`jS)P*{yZNS6Ld1UK==WGu01(3u|K)?NK{;kn00000NkvXXu0mjfDN?17 literal 0 HcmV?d00001 -- 2.51.2