diff --git a/Content.Client/Anomaly/Effects/ClientInnerBodySystem.cs b/Content.Client/Anomaly/Effects/ClientInnerBodySystem.cs index 15ebc8a993..8d7292d468 100644 --- a/Content.Client/Anomaly/Effects/ClientInnerBodySystem.cs +++ b/Content.Client/Anomaly/Effects/ClientInnerBodySystem.cs @@ -45,7 +45,7 @@ public sealed class ClientInnerBodyAnomalySystem : SharedInnerBodyAnomalySystem if (!TryComp(ent, out var sprite)) return; - var index = _sprite.LayerMapGet((ent.Owner, sprite), ent.Comp.LayerMap); - _sprite.LayerSetVisible((ent.Owner, sprite), index, false); + if (sprite.LayerMapTryGet(ent.Comp.LayerMap, out var index)) // imp. added this check to prevent errors on anomalites - not having it was bad code on upstream's part + sprite.LayerSetVisible(index, false); } } diff --git a/Content.Server/Anomaly/AnomalySynchronizerSystem.cs b/Content.Server/Anomaly/AnomalySynchronizerSystem.cs index b1814c2741..67c0eeb266 100644 --- a/Content.Server/Anomaly/AnomalySynchronizerSystem.cs +++ b/Content.Server/Anomaly/AnomalySynchronizerSystem.cs @@ -147,7 +147,7 @@ public sealed partial class AnomalySynchronizerSystem : EntitySystem var targetXform = _transform.GetWorldPosition(ent); _transform.SetWorldPosition(anomaly, targetXform); - if (ent.Comp.PulseOnConnect) + if (ent.Comp.PulseOnConnect && !anomaly.Comp.CannotRandomPulse) // imp - added cannotrandompulse _anomaly.DoAnomalyPulse(anomaly, anomaly); _popup.PopupEntity(Loc.GetString("anomaly-sync-connected"), ent, PopupType.Medium); @@ -163,7 +163,7 @@ public sealed partial class AnomalySynchronizerSystem : EntitySystem if (TryComp(other, out var anomaly)) { - if (ent.Comp.PulseOnDisconnect) + if (ent.Comp.PulseOnDisconnect && !anomaly.CannotRandomPulse) // imp - added cannotrandompulse _anomaly.DoAnomalyPulse(ent.Comp.ConnectedAnomaly.Value, anomaly); } diff --git a/Content.Server/Anomaly/Effects/ElectricityAnomalySystem.cs b/Content.Server/Anomaly/Effects/ElectricityAnomalySystem.cs index bd4718e8e3..753a10eeef 100644 --- a/Content.Server/Anomaly/Effects/ElectricityAnomalySystem.cs +++ b/Content.Server/Anomaly/Effects/ElectricityAnomalySystem.cs @@ -50,6 +50,9 @@ public sealed class ElectricityAnomalySystem : EntitySystem var query = EntityQueryEnumerator(); while (query.MoveNext(out var uid, out var elec, out var anom, out var xform)) { + if (anom.CannotRandomPulse) // imp. added CannotRandomPulse + continue; + if (_timing.CurTime < elec.NextSecond) continue; elec.NextSecond = _timing.CurTime + TimeSpan.FromSeconds(1); diff --git a/Content.Server/Anomaly/Effects/InnerBodyAnomalySystem.cs b/Content.Server/Anomaly/Effects/InnerBodyAnomalySystem.cs index ff644ad3e0..828db09ce0 100644 --- a/Content.Server/Anomaly/Effects/InnerBodyAnomalySystem.cs +++ b/Content.Server/Anomaly/Effects/InnerBodyAnomalySystem.cs @@ -96,8 +96,11 @@ public sealed class InnerBodyAnomalySystem : SharedInnerBodyAnomalySystem EntityManager.AddComponents(ent, injectedAnom.Components); - _stun.TryParalyze(ent, TimeSpan.FromSeconds(ent.Comp.StunDuration), true); - _jitter.DoJitter(ent, TimeSpan.FromSeconds(ent.Comp.StunDuration), true); + if (!ent.Comp.SkipStun) // imp. added this check for anomalites + { + _stun.TryParalyze(ent, TimeSpan.FromSeconds(ent.Comp.StunDuration), true); + _jitter.DoJitter(ent, TimeSpan.FromSeconds(ent.Comp.StunDuration), true); + } if (ent.Comp.StartSound is not null) _audio.PlayPvs(ent.Comp.StartSound, ent); @@ -125,7 +128,8 @@ public sealed class InnerBodyAnomalySystem : SharedInnerBodyAnomalySystem private void OnAnomalyPulse(Entity ent, ref AnomalyPulseEvent args) { - _stun.TryParalyze(ent, TimeSpan.FromSeconds(ent.Comp.StunDuration / 2 * args.Severity), true); + if (!ent.Comp.SkipStun) // imp. added this check for anomalites + _stun.TryParalyze(ent, TimeSpan.FromSeconds(ent.Comp.StunDuration / 2 * args.Severity), true); _jitter.DoJitter(ent, TimeSpan.FromSeconds(ent.Comp.StunDuration / 2 * args.Severity), true); } @@ -213,7 +217,8 @@ public sealed class InnerBodyAnomalySystem : SharedInnerBodyAnomalySystem if (_proto.TryIndex(ent.Comp.InjectionProto, out var injectedAnom)) EntityManager.RemoveComponents(ent, injectedAnom.Components); - _stun.TryParalyze(ent, TimeSpan.FromSeconds(ent.Comp.StunDuration), true); + if (!ent.Comp.SkipStun) // imp. added this check for anomalites + _stun.TryParalyze(ent, TimeSpan.FromSeconds(ent.Comp.StunDuration), true); if (ent.Comp.EndMessage is not null && _mind.TryGetMind(ent, out _, out var mindComponent) && diff --git a/Content.Server/Pinpointer/PinpointerSystem.cs b/Content.Server/Pinpointer/PinpointerSystem.cs index eebf9cbbfd..0b958cffd4 100644 --- a/Content.Server/Pinpointer/PinpointerSystem.cs +++ b/Content.Server/Pinpointer/PinpointerSystem.cs @@ -5,7 +5,6 @@ using System.Numerics; using Robust.Shared.Utility; using Content.Server.Shuttles.Events; using Content.Shared.IdentityManagement; - namespace Content.Server.Pinpointer; public sealed class PinpointerSystem : SharedPinpointerSystem @@ -51,7 +50,7 @@ public sealed class PinpointerSystem : SharedPinpointerSystem TogglePinpointer(uid, component); if (!component.CanRetarget) - LocateTarget(uid, component); + LocateTarget(uid, component, args); //#IMP args args.Handled = true; } @@ -73,7 +72,8 @@ public sealed class PinpointerSystem : SharedPinpointerSystem } } - private void LocateTarget(EntityUid uid, PinpointerComponent component) + //#IMP ActivateInWorldEvent args: added this + private void LocateTarget(EntityUid uid, PinpointerComponent component, ActivateInWorldEvent? args = null) { // try to find target from whitelist if (component.IsActive && component.Component != null) diff --git a/Content.Server/_Shitmed/Medical/Surgery/SurgerySystem.cs b/Content.Server/_Shitmed/Medical/Surgery/SurgerySystem.cs index b3c43a26ac..8bf1fd1586 100644 --- a/Content.Server/_Shitmed/Medical/Surgery/SurgerySystem.cs +++ b/Content.Server/_Shitmed/Medical/Surgery/SurgerySystem.cs @@ -16,6 +16,7 @@ using Content.Shared._DV.Surgery; using Content.Shared.FixedPoint; using Content.Shared.Forensics.Components; using Content.Shared.Damage.Prototypes; +using Content.Shared.Traits.Assorted; // End DeltaV Additions using Content.Shared._Shitmed.Medical.Surgery; using Content.Shared._Shitmed.Medical.Surgery.Conditions; @@ -263,6 +264,8 @@ public sealed class SurgerySystem : SharedSurgerySystem { if (HasComp(args.Body)) // DeltaV return; + if (HasComp(args.Body)) // DeltaV + return; _chat.TryEmoteWithChat(args.Body, ent.Comp.Emote); } diff --git a/Content.Shared/Anomaly/Components/AnomalyComponent.cs b/Content.Shared/Anomaly/Components/AnomalyComponent.cs index f58f9f1d07..e1f59d3b97 100644 --- a/Content.Shared/Anomaly/Components/AnomalyComponent.cs +++ b/Content.Shared/Anomaly/Components/AnomalyComponent.cs @@ -19,6 +19,18 @@ namespace Content.Shared.Anomaly.Components; [Access(typeof(SharedAnomalySystem), typeof(SharedInnerBodyAnomalySystem))] public sealed partial class AnomalyComponent : Component { + /// + /// Imp. If true, skips doing supercritical logic for this anomaly. Used for Anomalites. + /// + [DataField] + public bool CannotSupercrit; + + /// + /// imp. if true, skips random pulsing and health change over time. + /// + [DataField] + public bool CannotRandomPulse; + /// /// How likely an anomaly is to grow more dangerous. Moves both up and down. /// Ranges from 0 to 1. diff --git a/Content.Shared/Anomaly/Components/InnerBodyAnomalyComponent.cs b/Content.Shared/Anomaly/Components/InnerBodyAnomalyComponent.cs index a7e07ae2b5..1e48abf35b 100644 --- a/Content.Shared/Anomaly/Components/InnerBodyAnomalyComponent.cs +++ b/Content.Shared/Anomaly/Components/InnerBodyAnomalyComponent.cs @@ -69,6 +69,12 @@ public sealed partial class InnerBodyAnomalyComponent : Component /// [DataField] public string LayerMap = "inner_anomaly_layer"; + + /// + /// imp. added for anomalites to prevent stunning + /// + [DataField] + public bool SkipStun; } /// diff --git a/Content.Shared/Anomaly/SharedAnomalySystem.cs b/Content.Shared/Anomaly/SharedAnomalySystem.cs index 3d00d43f41..40ac362f1c 100644 --- a/Content.Shared/Anomaly/SharedAnomalySystem.cs +++ b/Content.Shared/Anomaly/SharedAnomalySystem.cs @@ -124,6 +124,9 @@ public abstract class SharedAnomalySystem : EntitySystem /// Entity to go supercritical public void StartSupercriticalEvent(Entity ent) { + if (!TryComp(ent, out var anomComp) || anomComp.CannotSupercrit) // imp + return; + // don't restart it if it's already begun if (HasComp(ent)) return; @@ -333,6 +336,9 @@ public abstract class SharedAnomalySystem : EntitySystem var anomalyQuery = EntityQueryEnumerator(); while (anomalyQuery.MoveNext(out var ent, out var anomaly)) { + if (anomaly.CannotRandomPulse) // imp + continue; + // if the stability is under the death threshold, // update it every second to start killing it slowly. if (anomaly.Stability < anomaly.DecayThreshold) @@ -359,6 +365,9 @@ public abstract class SharedAnomalySystem : EntitySystem var supercriticalQuery = EntityQueryEnumerator(); while (supercriticalQuery.MoveNext(out var ent, out var super, out var anom)) { + if (anom.CannotSupercrit) // imp + continue; + if (Timing.CurTime <= super.EndTime) continue; DoAnomalySupercriticalEvent(ent, anom); diff --git a/Content.Shared/Gravity/FloatingVisualsComponent.cs b/Content.Shared/Gravity/FloatingVisualsComponent.cs index 67650baecd..cef92bcce0 100644 --- a/Content.Shared/Gravity/FloatingVisualsComponent.cs +++ b/Content.Shared/Gravity/FloatingVisualsComponent.cs @@ -25,5 +25,6 @@ public sealed partial class FloatingVisualsComponent : Component [AutoNetworkedField] public bool CanFloat = false; - public readonly string AnimationKey = "gravity"; + [DataField] // imp. made this a read/write datafield instead of readonly to fix a bug with anomalites. + public string AnimationKey = "gravity"; } diff --git a/Content.Shared/Pinpointer/PinpointerComponent.cs b/Content.Shared/Pinpointer/PinpointerComponent.cs index e83a2e38d6..ff7321d50c 100644 --- a/Content.Shared/Pinpointer/PinpointerComponent.cs +++ b/Content.Shared/Pinpointer/PinpointerComponent.cs @@ -62,6 +62,12 @@ public sealed partial class PinpointerComponent : Component [ViewVariables] public bool HasTarget => DistanceToTarget != Distance.Unknown; + + /// + /// #IMP Force pinpointer to activate immediately. + /// + [DataField("activateImmediately"), ViewVariables] + public bool ActivateImmediately = false; } [Serializable, NetSerializable] diff --git a/Resources/Audio/_Impstation/Voice/Talk/Anomalite/anomalite.ogg b/Resources/Audio/_Impstation/Voice/Talk/Anomalite/anomalite.ogg new file mode 100644 index 0000000000..095a418d17 Binary files /dev/null and b/Resources/Audio/_Impstation/Voice/Talk/Anomalite/anomalite.ogg differ diff --git a/Resources/Audio/_Impstation/Voice/Talk/Anomalite/anomalite_ask.ogg b/Resources/Audio/_Impstation/Voice/Talk/Anomalite/anomalite_ask.ogg new file mode 100644 index 0000000000..43062221e6 Binary files /dev/null and b/Resources/Audio/_Impstation/Voice/Talk/Anomalite/anomalite_ask.ogg differ diff --git a/Resources/Audio/_Impstation/Voice/Talk/Anomalite/anomalite_exclaim.ogg b/Resources/Audio/_Impstation/Voice/Talk/Anomalite/anomalite_exclaim.ogg new file mode 100644 index 0000000000..be9e516d15 Binary files /dev/null and b/Resources/Audio/_Impstation/Voice/Talk/Anomalite/anomalite_exclaim.ogg differ diff --git a/Resources/Audio/_Impstation/Voice/Talk/Anomalite/anomalite_scream.ogg b/Resources/Audio/_Impstation/Voice/Talk/Anomalite/anomalite_scream.ogg new file mode 100644 index 0000000000..b26f4afc6c Binary files /dev/null and b/Resources/Audio/_Impstation/Voice/Talk/Anomalite/anomalite_scream.ogg differ diff --git a/Resources/Changelog/DeltaVChangelog.yml b/Resources/Changelog/DeltaVChangelog.yml index dbfa01b06e..41e9294ac0 100644 --- a/Resources/Changelog/DeltaVChangelog.yml +++ b/Resources/Changelog/DeltaVChangelog.yml @@ -1,26 +1,4 @@ Entries: -- author: deltanedas - changes: - - message: Changed the Cloning research to be in Biochemical. - type: Tweak - id: 1194 - time: '2025-03-23T14:17:22.0000000+00:00' - url: https://github.com/DeltaV-Station/Delta-v/pull/3303 -- author: foxcurl - changes: - - message: Security cyborg modules have been moved to the secfab. - type: Tweak - id: 1195 - time: '2025-03-23T19:50:15.0000000+00:00' - url: https://github.com/DeltaV-Station/Delta-v/pull/3306 -- author: Radezolid - changes: - - message: The cooldown between FTL travels has been reduced by 30 seconds and the - range which you can FTL to has been doubled. - type: Tweak - id: 1196 - time: '2025-03-24T00:21:26.0000000+00:00' - url: https://github.com/DeltaV-Station/Delta-v/pull/3293 - author: sowelipililimute changes: - message: The character height slider is now visible in the profile editor @@ -4172,3 +4150,28 @@ id: 1693 time: '2025-10-02T23:51:14.0000000+00:00' url: https://github.com/DeltaV-Station/Delta-v/pull/4464 +- author: WidgetBeck, FaelingDraws, TheGrimbeeper + changes: + - message: Anomalites from Impstation are making their appearance in the delta sector. + Hold on to their cores if you want to keep a hold on the anomaly sprites. + type: Add + id: 1694 + time: '2025-10-03T00:17:21.0000000+00:00' + url: https://github.com/DeltaV-Station/Delta-v/pull/4375 +- author: SirWarock + changes: + - message: Reduced the sprinting speed of all Webvests by 10%! + type: Tweak + - message: Reduced the TC price of the Elite Webvest. 5 TC -> 3 TC. + type: Tweak + id: 1695 + time: '2025-10-03T00:18:16.0000000+00:00' + url: https://github.com/DeltaV-Station/Delta-v/pull/4404 +- author: Minerva + changes: + - message: People with the Numb trait no longer scream during surgery. Anesthesia + is still largely required. + type: Fix + id: 1696 + time: '2025-10-03T00:33:48.0000000+00:00' + url: https://github.com/DeltaV-Station/Delta-v/pull/4329 diff --git a/Resources/Locale/en-US/_Impstation/chat/chat-manager.ftl b/Resources/Locale/en-US/_Impstation/chat/chat-manager.ftl new file mode 100644 index 0000000000..2c7a512bfb --- /dev/null +++ b/Resources/Locale/en-US/_Impstation/chat/chat-manager.ftl @@ -0,0 +1,4 @@ +chat-speech-verb-name-anomalite = Anomalite +chat-speech-verb-anomalite-1 = twinkles +chat-speech-verb-anomalite-2 = sparkles +chat-speech-verb-anomalite-3 = glitters diff --git a/Resources/Locale/en-US/_Impstation/ghost/roles/ghost-role-component.ftl b/Resources/Locale/en-US/_Impstation/ghost/roles/ghost-role-component.ftl new file mode 100644 index 0000000000..0c3df4df4d --- /dev/null +++ b/Resources/Locale/en-US/_Impstation/ghost/roles/ghost-role-component.ftl @@ -0,0 +1,17 @@ +ghost-role-information-anomalite-description = A small sprite, born from the latent energies of an anomaly core. Loyal to its core, or whoever possesses it. +ghost-role-information-familiar-anomalite-rules = You are a [color=#6495ed][bold]Familiar[/bold][/color], loyal to the Anomaly Core you came from (or whoever happens to have it right now.) Serve the interests of your master, whatever those may be. + + You don't remember any of your previous life, and you don't remember anything you learned as a ghost. + +# Anomalite Names +ghost-role-information-fireanomalite-name = Pyroclastic Anomalite +ghost-role-information-gravanomalite-name = Gravity Anomalite +ghost-role-information-iceanomalite-name = Ice Anomalite +ghost-role-information-fleshanomalite-name = Flesh Anomalite +ghost-role-information-rockanomalite-name = Rock Anomalite +ghost-role-information-reagentanomalite-name = Liquid Anomalite +ghost-role-information-bluespaceanomalite-name = Bluespace Anomalite +ghost-role-information-electricanomalite-name = Electricity Anomalite +ghost-role-information-floralanomalite-name = Floral Anomalite +ghost-role-information-shadowanomalite-name = Shadow Anomalite +ghost-role-information-techanomalite-name = Tech Anomalite diff --git a/Resources/Locale/en-US/_Impstation/interaction/interaction-popup-component.ftl b/Resources/Locale/en-US/_Impstation/interaction/interaction-popup-component.ftl new file mode 100644 index 0000000000..06ac48c9e7 --- /dev/null +++ b/Resources/Locale/en-US/_Impstation/interaction/interaction-popup-component.ftl @@ -0,0 +1,4 @@ +## Anomalites + +petting-success-anomalite = You pet {THE($target)} on their anomalous little head. +petting-failure-anomalite = You try to pet {THE($target)}, but your fingers are zapped by its energy field! diff --git a/Resources/Prototypes/Catalog/uplink_catalog.yml b/Resources/Prototypes/Catalog/uplink_catalog.yml index a256c71013..5326880278 100644 --- a/Resources/Prototypes/Catalog/uplink_catalog.yml +++ b/Resources/Prototypes/Catalog/uplink_catalog.yml @@ -1640,9 +1640,9 @@ productEntity: ClothingOuterVestWeb discountCategory: usualDiscounts discountDownTo: - Telecrystal: 1 + Telecrystal: 3 # DeltaV - was 1 cost: - Telecrystal: 3 + Telecrystal: 5 # DeltaV - Was 3 categories: - UplinkWearables diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml index 4781b5e337..b2bc4147ba 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml @@ -163,7 +163,7 @@ Piercing: 0.3 Heat: 0.9 - type: StaminaResistance # DeltaV - damageCoefficient: 0.8 + damageCoefficient: 0.6 - type: ExplosionResistance damageCoefficient: 0.9 - type: StaticPrice diff --git a/Resources/Prototypes/Entities/Structures/Specific/Anomaly/cores.yml b/Resources/Prototypes/Entities/Structures/Specific/Anomaly/cores.yml index 45a5a6d4d6..b95eb300b8 100644 --- a/Resources/Prototypes/Entities/Structures/Specific/Anomaly/cores.yml +++ b/Resources/Prototypes/Entities/Structures/Specific/Anomaly/cores.yml @@ -49,6 +49,9 @@ - type: IgnitionSource temperature: 400 ignited: true + - type: Summonable # imp + requiresBibleUser: false + specialItem: SpawnPointGhostAnomalitePyroclastic - type: entity parent: BaseAnomalyCore @@ -62,6 +65,9 @@ energy: 10 color: "#1e070e" castShadows: false + - type: Summonable # imp + requiresBibleUser: false + specialItem: SpawnPointGhostAnomaliteGravity - type: entity parent: BaseAnomalyCore @@ -75,6 +81,9 @@ energy: 1.5 color: "#befaff" castShadows: false + - type: Summonable # imp + requiresBibleUser: false + specialItem: SpawnPointGhostAnomaliteIce - type: entity parent: BaseAnomalyCore @@ -89,6 +98,9 @@ energy: 3.5 color: "#cb5b7e" castShadows: false + - type: Summonable # imp + requiresBibleUser: false + specialItem: SpawnPointGhostAnomaliteFlesh - type: entity parent: BaseAnomalyCore @@ -102,6 +114,9 @@ energy: 3.5 color: "#5ca8cb" castShadows: false + - type: Summonable # imp + requiresBibleUser: false + specialItem: SpawnPointGhostAnomaliteRock - type: entity parent: BaseAnomalyCore @@ -115,6 +130,9 @@ energy: 3.5 color: "#ffffff" castShadows: false + - type: Summonable # imp + requiresBibleUser: false + specialItem: SpawnPointGhostAnomaliteLiquid - type: entity parent: BaseAnomalyCore @@ -128,6 +146,9 @@ energy: 3.5 color: "#00ccff" castShadows: false + - type: Summonable # imp + requiresBibleUser: false + specialItem: SpawnPointGhostAnomaliteBluespace - type: entity parent: BaseAnomalyCore @@ -142,6 +163,9 @@ color: "#ffffaa" castShadows: false - type: Electrified + - type: Summonable # imp + requiresBibleUser: false + specialItem: SpawnPointGhostAnomaliteElectricity - type: entity parent: BaseAnomalyCore @@ -157,6 +181,9 @@ energy: 2.0 color: "#6270bb" castShadows: false + - type: Summonable # imp + requiresBibleUser: false + specialItem: SpawnPointGhostAnomaliteFlora - type: entity parent: [ BaseAnomalyCore, BaseShadow ] @@ -170,6 +197,9 @@ energy: 2.0 color: "#793a80" castShadows: false + - type: Summonable # imp + requiresBibleUser: false + specialItem: SpawnPointGhostAnomaliteShadow - type: entity parent: BaseAnomalyCore @@ -183,6 +213,9 @@ energy: 2.0 color: "#56c1e8" castShadows: false + - type: Summonable # imp + requiresBibleUser: false + specialItem: SpawnPointGhostAnomaliteTech - type: entity parent: BaseAnomalyCore @@ -226,6 +259,9 @@ energy: 1.5 color: "#fca3c0" castShadows: false + - type: Summonable # imp + requiresBibleUser: false + specialItem: SpawnPointGhostAnomalitePyroclastic - type: entity parent: BaseAnomalyInertCore @@ -239,6 +275,9 @@ energy: 10 color: "#1e070e" castShadows: false + - type: Summonable # imp + requiresBibleUser: false + specialItem: SpawnPointGhostAnomaliteGravity - type: entity parent: BaseAnomalyInertCore @@ -252,6 +291,9 @@ energy: 1.5 color: "#befaff" castShadows: false + - type: Summonable # imp + requiresBibleUser: false + specialItem: SpawnPointGhostAnomaliteIce - type: entity parent: BaseAnomalyInertCore @@ -266,6 +308,9 @@ energy: 3.5 color: "#cb5b7e" castShadows: false + - type: Summonable # imp + requiresBibleUser: false + specialItem: SpawnPointGhostAnomaliteFlesh - type: entity parent: BaseAnomalyInertCore @@ -279,6 +324,9 @@ energy: 3.5 color: "#5ca8cb" castShadows: false + - type: Summonable # imp + requiresBibleUser: false + specialItem: SpawnPointGhostAnomaliteRock - type: entity parent: BaseAnomalyInertCore @@ -292,6 +340,9 @@ energy: 3.5 color: "#ffffff" castShadows: false + - type: Summonable # imp + requiresBibleUser: false + specialItem: SpawnPointGhostAnomaliteLiquid - type: entity parent: BaseAnomalyInertCore @@ -305,6 +356,9 @@ energy: 3.5 color: "#00ccff" castShadows: false + - type: Summonable # imp + requiresBibleUser: false + specialItem: SpawnPointGhostAnomaliteBluespace - type: entity parent: BaseAnomalyInertCore @@ -318,6 +372,9 @@ energy: 2.0 color: "#ffffaa" castShadows: false + - type: Summonable # imp + requiresBibleUser: false + specialItem: SpawnPointGhostAnomaliteElectricity - type: entity parent: BaseAnomalyInertCore @@ -333,6 +390,9 @@ energy: 2.0 color: "#6270bb" castShadows: false + - type: Summonable # imp + requiresBibleUser: false + specialItem: SpawnPointGhostAnomaliteFlora - type: entity parent: [ BaseAnomalyInertCore, BaseShadow ] @@ -346,6 +406,9 @@ energy: 2.0 color: "#793a80" castShadows: false + - type: Summonable # imp + requiresBibleUser: false + specialItem: SpawnPointGhostAnomaliteShadow - type: entity parent: BaseAnomalyInertCore @@ -359,6 +422,9 @@ energy: 2.0 color: "#56c1e8" castShadows: false + - type: Summonable # imp + requiresBibleUser: false + specialItem: SpawnPointGhostAnomaliteTech - type: entity parent: BaseAnomalyInertCore diff --git a/Resources/Prototypes/_Impstation/Entities/Mobs/Anomalites/anomalite_damage.yml b/Resources/Prototypes/_Impstation/Entities/Mobs/Anomalites/anomalite_damage.yml new file mode 100644 index 0000000000..5cef576d49 --- /dev/null +++ b/Resources/Prototypes/_Impstation/Entities/Mobs/Anomalites/anomalite_damage.yml @@ -0,0 +1,76 @@ +# Pyroclastic +- type: damageModifierSet + id: AnomalitePyroclastic + coefficients: + Heat: 0.0 + flatReductions: + Heat: 100 + +# Gravity +- type: damageModifierSet + id: AnomaliteGravity + coefficients: + Blunt: 0.3 + Piercing: 0.3 + Slash: 0.3 + +# Ice +- type: damageModifierSet + id: AnomaliteIce + coefficients: + Cold: 0.0 + flatReductions: + Cold: 100 + +# Flesh +- type: damageModifierSet + id: AnomaliteFlesh + coefficients: + Slash: 0.0 + +# Rock +- type: damageModifierSet + id: AnomaliteRock + coefficients: + Blunt: 0.0 + Structural: 2.0 + +# Reagent +- type: damageModifierSet + id: AnomaliteLiquid + coefficients: + Poison: 0.0 + +# Bluespace +- type: damageModifierSet + id: AnomaliteBluespace + coefficients: + Cellular: 0.0 + Radiation: 0.0 + +# Electricity +- type: damageModifierSet + id: AnomaliteElectricity + coefficients: + Shock: 0.0 + +# Flora +- type: damageModifierSet + id: AnomaliteFlora + coefficients: + Piercing: 0.0 + +# Shadow +- type: damageModifierSet + id: AnomaliteShadow + coefficients: + Asphyxiation: 0.0 + Bloodloss: 0.0 + Holy: 2.0 # let there be light + +# Tech +- type: damageModifierSet + id: AnomaliteTech + coefficients: + Radiation: 0.5 + Shock: 0.5 diff --git a/Resources/Prototypes/_Impstation/Entities/Mobs/Anomalites/anomalite_nameidentifiers.yml b/Resources/Prototypes/_Impstation/Entities/Mobs/Anomalites/anomalite_nameidentifiers.yml new file mode 100644 index 0000000000..d335805bcc --- /dev/null +++ b/Resources/Prototypes/_Impstation/Entities/Mobs/Anomalites/anomalite_nameidentifiers.yml @@ -0,0 +1,65 @@ +- type: nameIdentifierGroup + id: AnomalitePyroclastic + prefix: ANOM-PY + minValue: 0 + maxValue: 999 + +- type: nameIdentifierGroup + id: AnomaliteBluespace + prefix: ANOM-BL + minValue: 0 + maxValue: 999 + +- type: nameIdentifierGroup + id: AnomaliteElectric + prefix: ANOM-EL + minValue: 0 + maxValue: 999 + +- type: nameIdentifierGroup + id: AnomaliteFlesh + prefix: ANOM-MT # mt for meat - to differentiate from fl for flora + minValue: 0 + maxValue: 999 + +- type: nameIdentifierGroup + id: AnomaliteFlora + prefix: ANOM-FL + minValue: 0 + maxValue: 999 + +- type: nameIdentifierGroup + id: AnomaliteGravity + prefix: ANOM-GR + minValue: 0 + maxValue: 999 + +- type: nameIdentifierGroup + id: AnomaliteIce + prefix: ANOM-FR # fr for frost. i don't think IC would read well + minValue: 0 + maxValue: 999 + +- type: nameIdentifierGroup + id: AnomaliteReagent + prefix: ANOM-LQ # lq for liquid + minValue: 0 + maxValue: 999 + +- type: nameIdentifierGroup + id: AnomaliteRock + prefix: ANOM-RK + minValue: 0 + maxValue: 999 + +- type: nameIdentifierGroup + id: AnomaliteShadow + prefix: ANOM-SH + minValue: 0 + maxValue: 999 + +- type: nameIdentifierGroup + id: AnomaliteTech + prefix: ANOM-TK # tk for tech. tc, te, and th, don't read well + minValue: 0 + maxValue: 999 diff --git a/Resources/Prototypes/_Impstation/Entities/Mobs/Anomalites/anomalite_sounds.yml b/Resources/Prototypes/_Impstation/Entities/Mobs/Anomalites/anomalite_sounds.yml new file mode 100644 index 0000000000..76276143a2 --- /dev/null +++ b/Resources/Prototypes/_Impstation/Entities/Mobs/Anomalites/anomalite_sounds.yml @@ -0,0 +1,24 @@ +- type: speechSounds + id: Anomalite + saySound: + path: /Audio/_Impstation/Voice/Talk/Anomalite/anomalite.ogg + askSound: + path: /Audio/_Impstation/Voice/Talk/Anomalite/anomalite_ask.ogg + exclaimSound: + path: /Audio/_Impstation/Voice/Talk/Anomalite/anomalite_exclaim.ogg + +- type: speechVerb + id: Anomalite + name: chat-speech-verb-name-anomalite + speechVerbStrings: + - chat-speech-verb-anomalite-1 + - chat-speech-verb-anomalite-2 + - chat-speech-verb-anomalite-3 + +- type: emoteSounds + id: Anomalite + params: + variation: 0.125 + sounds: + Scream: + path: /Audio/_Impstation/Voice/Talk/Anomalite/anomalite_scream.ogg diff --git a/Resources/Prototypes/_Impstation/Entities/Mobs/Anomalites/anomalite_spawners.yml b/Resources/Prototypes/_Impstation/Entities/Mobs/Anomalites/anomalite_spawners.yml new file mode 100644 index 0000000000..f93a19a737 --- /dev/null +++ b/Resources/Prototypes/_Impstation/Entities/Mobs/Anomalites/anomalite_spawners.yml @@ -0,0 +1,274 @@ +# Pyroclastic +- type: entity + parent: MarkerBase + id: SpawnPointGhostAnomalitePyroclastic + name: anomalite spawn point + suffix: Pyroclastic + categories: [ DoNotMap ] + components: + - type: GhostRole + name: ghost-role-information-fireanomalite-name + description: ghost-role-information-anomalite-description + rules: ghost-role-information-familiar-anomalite-rules + mindRoles: + - MindRoleGhostRoleFamiliar + raffle: + settings: short + - type: GhostRoleMobSpawner + prototype: MobAnomalitePyroclastic + - type: Sprite + sprite: Markers/jobs.rsi + layers: + - state: green + - sprite: _Impstation/Mobs/Anomalites/anomalite.rsi + state: anomalyfire + +# Gravity +- type: entity + parent: MarkerBase + id: SpawnPointGhostAnomaliteGravity + name: anomalite spawn point + suffix: Gravity + categories: [ DoNotMap ] + components: + - type: GhostRole + name: ghost-role-information-gravanomalite-name + description: ghost-role-information-anomalite-description + rules: ghost-role-information-familiar-anomalite-rules + mindRoles: + - MindRoleGhostRoleFamiliar + raffle: + settings: short + - type: GhostRoleMobSpawner + prototype: MobAnomaliteGravity + - type: Sprite + sprite: Markers/jobs.rsi + layers: + - state: green + - sprite: _Impstation/Mobs/Anomalites/anomalite.rsi + state: anomalygravity + +# Ice +- type: entity + parent: MarkerBase + id: SpawnPointGhostAnomaliteIce + name: anomalite spawn point + suffix: Ice + categories: [ DoNotMap ] + components: + - type: GhostRole + name: ghost-role-information-iceanomalite-name + description: ghost-role-information-anomalite-description + rules: ghost-role-information-familiar-anomalite-rules + mindRoles: + - MindRoleGhostRoleFamiliar + raffle: + settings: short + - type: GhostRoleMobSpawner + prototype: MobAnomaliteIce + - type: Sprite + sprite: Markers/jobs.rsi + layers: + - state: green + - sprite: _Impstation/Mobs/Anomalites/anomalite.rsi + state: anomalyice + +# Flesh +- type: entity + parent: MarkerBase + id: SpawnPointGhostAnomaliteFlesh + name: anomalite spawn point + suffix: Flesh + categories: [ DoNotMap ] + components: + - type: GhostRole + name: ghost-role-information-fleshanomalite-name + description: ghost-role-information-anomalite-description + rules: ghost-role-information-familiar-anomalite-rules + mindRoles: + - MindRoleGhostRoleFamiliar + raffle: + settings: short + - type: GhostRoleMobSpawner + prototype: MobAnomaliteFlesh + - type: Sprite + sprite: Markers/jobs.rsi + layers: + - state: green + - sprite: _Impstation/Mobs/Anomalites/anomalite.rsi + state: anomalyflesh + +# Rock +- type: entity + parent: MarkerBase + id: SpawnPointGhostAnomaliteRock + name: anomalite spawn point + suffix: Rock + categories: [ DoNotMap ] + components: + - type: GhostRole + name: ghost-role-information-rockanomalite-name + description: ghost-role-information-anomalite-description + rules: ghost-role-information-familiar-anomalite-rules + mindRoles: + - MindRoleGhostRoleFamiliar + raffle: + settings: short + - type: GhostRoleMobSpawner + prototype: MobAnomaliteRock + - type: Sprite + sprite: Markers/jobs.rsi + layers: + - state: green + - sprite: _Impstation/Mobs/Anomalites/anomalite.rsi + state: anomalyrock + +# Reagent +- type: entity + parent: MarkerBase + id: SpawnPointGhostAnomaliteLiquid + name: anomalite spawn point + suffix: Reagent + categories: [ DoNotMap ] + components: + - type: GhostRole + name: ghost-role-information-reagentanomalite-name + description: ghost-role-information-anomalite-description + rules: ghost-role-information-familiar-anomalite-rules + mindRoles: + - MindRoleGhostRoleFamiliar + raffle: + settings: short + - type: GhostRoleMobSpawner + prototype: MobAnomaliteLiquid + - type: Sprite + sprite: Markers/jobs.rsi + layers: + - state: green + - sprite: _Impstation/Mobs/Anomalites/anomalite.rsi + state: anomalyreagent + +# Bluespace +- type: entity + parent: MarkerBase + id: SpawnPointGhostAnomaliteBluespace + name: anomalite spawn point + suffix: Bluespace + categories: [ DoNotMap ] + components: + - type: GhostRole + name: ghost-role-information-bluespaceanomalite-name + description: ghost-role-information-anomalite-description + rules: ghost-role-information-familiar-anomalite-rules + mindRoles: + - MindRoleGhostRoleFamiliar + raffle: + settings: short + - type: GhostRoleMobSpawner + prototype: MobAnomaliteBluespace + - type: Sprite + sprite: Markers/jobs.rsi + layers: + - state: green + - sprite: _Impstation/Mobs/Anomalites/anomalite.rsi + state: anomalybluespace + +# Electricity +- type: entity + parent: MarkerBase + id: SpawnPointGhostAnomaliteElectricity + name: anomalite spawn point + suffix: Electric + categories: [ DoNotMap ] + components: + - type: GhostRole + name: ghost-role-information-electricanomalite-name + description: ghost-role-information-anomalite-description + rules: ghost-role-information-familiar-anomalite-rules + mindRoles: + - MindRoleGhostRoleFamiliar + raffle: + settings: short + - type: GhostRoleMobSpawner + prototype: MobAnomaliteElectricity + - type: Sprite + sprite: Markers/jobs.rsi + layers: + - state: green + - sprite: _Impstation/Mobs/Anomalites/anomalite.rsi + state: anomalyelectric + +# Flora +- type: entity + parent: MarkerBase + id: SpawnPointGhostAnomaliteFlora + name: anomalite spawn point + suffix: Flora + categories: [ DoNotMap ] + components: + - type: GhostRole + name: ghost-role-information-floralanomalite-name + description: ghost-role-information-anomalite-description + rules: ghost-role-information-familiar-anomalite-rules + mindRoles: + - MindRoleGhostRoleFamiliar + raffle: + settings: short + - type: GhostRoleMobSpawner + prototype: MobAnomaliteFlora + - type: Sprite + sprite: Markers/jobs.rsi + layers: + - state: green + - sprite: _Impstation/Mobs/Anomalites/anomalite.rsi + state: anomalyflower + +# Shadow +- type: entity + parent: MarkerBase + id: SpawnPointGhostAnomaliteShadow + name: anomalite spawn point + suffix: Shadow + categories: [ DoNotMap ] + components: + - type: GhostRole + name: ghost-role-information-shadowanomalite-name + description: ghost-role-information-anomalite-description + rules: ghost-role-information-familiar-anomalite-rules + mindRoles: + - MindRoleGhostRoleFamiliar + raffle: + settings: short + - type: GhostRoleMobSpawner + prototype: MobAnomaliteShadow + - type: Sprite + sprite: Markers/jobs.rsi + layers: + - state: green + - sprite: _Impstation/Mobs/Anomalites/anomalite.rsi + state: anomalyshadow + +# Shadow +- type: entity + parent: MarkerBase + id: SpawnPointGhostAnomaliteTech + name: anomalite spawn point + suffix: Tech + categories: [ DoNotMap ] + components: + - type: GhostRole + name: ghost-role-information-techanomalite-name + description: ghost-role-information-anomalite-description + rules: ghost-role-information-familiar-anomalite-rules + mindRoles: + - MindRoleGhostRoleFamiliar + raffle: + settings: short + - type: GhostRoleMobSpawner + prototype: MobAnomaliteTech + - type: Sprite + sprite: Markers/jobs.rsi + layers: + - state: green + - sprite: _Impstation/Mobs/Anomalites/anomalite.rsi + state: anomalytech diff --git a/Resources/Prototypes/_Impstation/Entities/Mobs/Anomalites/anomalites.yml b/Resources/Prototypes/_Impstation/Entities/Mobs/Anomalites/anomalites.yml new file mode 100644 index 0000000000..a08a047025 --- /dev/null +++ b/Resources/Prototypes/_Impstation/Entities/Mobs/Anomalites/anomalites.yml @@ -0,0 +1,694 @@ +- type: entity + parent: BaseAnomalyInertCore + id: AnomaliteCore + name: anomalite core + description: It's empty. + components: + - type: Sprite + sprite: Structures/Specific/Anomalies/Cores/gravity_core.rsi + +# Base Anomalite +- type: entity + parent: [ BaseMob, MobDamageable, MobPolymorphable, MobAtmosExposed, MobCombat, MobBloodstream, MobFlammable ] + id: BaseAnomalite + name: anomalite + abstract: true + categories: [ HideSpawnMenu ] + components: + - type: MindContainer + showExamineInfo: true + - type: Sprite + noRot: true + drawdepth: Mobs + scale: 1, 1 + - type: MeleeWeapon + damage: + types: + Blunt: 0 # this should be a custom type and value for each anomaly type. + angle: 0 + animation: WeaponArcBite + - type: NpcFactionMember + factions: + - SimpleNeutral + - type: Body + prototype: Animal + - type: Damageable # DeltaV - Change their damage to BiologicalMetaphysical, since they're magical sprite things. Also the shadow anomalite is supposed to take holy damage and it can't normally + damageContainer: BiologicalMetaphysical + - type: Dispellable # DeltaV - they're anomalies so they should be dispellable + - type: Climbing + - type: NameIdentifier + group: Anomalite + - type: GhostTakeoverAvailable + - type: Tag + tags: + - VimPilot + - DoorBumpOpener + - AnomalyHost # this is potentially really funny. if not, or if it causes problems, we can remove it. + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeCircle + radius: 0.35 + density: 75 + restitution: 0.0 + mask: + - CrateMask # this is so they can fly over tables and through plastic flaps + layer: + - MobLayer + - type: Bloodstream + bloodMaxVolume: 75 + bloodReagent: Entropy # DeltaV - Was Anomalium, not part of the initial Anomalite PR. Might port it eventually, but until then Entropy is our closest analogue. + - type: InteractionPopup + successChance: 0.1 + interactSuccessString: petting-success-anomalite + interactFailureString: petting-success-anomalite + interactSuccessSpawn: EffectHearts + interactSuccessSound: + path: /Audio/Animals/mouse_squeak.ogg # this should be unique per-type. + interactFailureSound: + path: /Audio/Effects/tesla_consume.ogg # this should be unique per-type. + - type: StatusEffects + allowed: + - Stun + - KnockedDown + - SlowedDown + - Stutter + - Electrocution + - ForcedSleep + - TemporaryBlindness + - Pacified + - StaminaModifier + - Flashed + - RadiationProtection + - Drowsiness + - Adrenaline + - type: Puller + needsHands: false + - type: ComplexInteraction + - type: SSDIndicator + - type: Speech + speechVerb: Anomalite + speechSounds: Anomalite + allowedEmotes: [ 'Scream' ] + - type: Vocal + sounds: + Male: Anomalite + Female: Anomalite + Unsexed: Anomalite + - type: Emoting + - type: BodyEmotes + soundsId: GeneralBodyEmotes + - type: MobState + - type: MobThresholds + thresholds: + 0: Alive + 100: Dead + - type: Destructible + thresholds: + - trigger: + !type:DamageTypeTrigger + damageType: Blunt + damage: 200 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - !type:SpawnEntitiesBehavior + spawn: + AnomaliteCore: + min: 1 + max: 1 + - trigger: + !type:DamageTypeTrigger + damageType: Heat + damage: 1500 + behaviors: + - !type:SpawnEntitiesBehavior + spawnInContainer: true + spawn: + Ash: + min: 1 + max: 1 + - !type:BurnBodyBehavior { } + - !type:PlaySoundBehavior + sound: + collection: MeatLaserImpact + - type: StandingState + # Anomaly component. Some settings changed to make them not be fucked-up powerful. now they're only a little bit fucked-up powerful. + - type: Anomaly + cannotSupercrit: true + cannotRandomPulse: true + deleteEntity: false + maxPointsPerSecond: 10 + corePrototype: AnomaliteCore + healthChangePerSecond: 0.0 + decayhreshold: 9999.0 + growthThreshold: 9999.0 + # apid-type always weightless movement + - type: MovementAlwaysTouching + - type: MovementIgnoreGravity + gravityState: true + - type: Physics + bodyStatus: InAir + - type: CanMoveInAir + - type: FloatingVisuals + animationKey: anomalyfloat + - type: AnimationPlayer + - type: MovementSpeedModifier + weightlessFriction: 1 + weightlessFrictionNoInput: 2 # so they can actually stop moving + weightlessAcceleration: 1.5 + - type: NoSlip + - type: Familiar # Provides information on core to the pinpointer + - type: Inventory + templateId: anomalite + - type: InventorySlots + - type: Loadout + prototypes: + - StartingGearAnomalitePinpointer + - type: Strippable + - type: UserInterface + interfaces: + enum.StrippingUiKey.Key: + type: StrippableBoundUserInterface + - type: Hands + +# Anomalites: +# Pyroclastic +- type: entity + parent: [ BaseAnomalite ] + id: MobAnomalitePyroclastic + suffix: Pyroclastic + description: A flickering little sprite, born from the leftover energies of an anomaly core. + components: + - type: Icon + sprite: _Impstation/Mobs/Anomalites/fire.rsi + state: anom + - type: Sprite + sprite: _Impstation/Mobs/Anomalites/fire.rsi + layers: + - map: [ "enum.DamageStateVisualLayers.Base" ] + state: anom + noRot: true + drawdepth: Mobs + - type: DamageStateVisuals + states: + Alive: + Base: anom + Dead: + Base: dead + - type: MeleeWeapon + damage: + types: + Heat: 5 + angle: 0 + animation: WeaponArcBite + - type: Damageable + damageModifierSet: AnomalitePyroclastic + - type: Temperature + heatDamageThreshold: 325 + coldDamageThreshold: 0 + currentTemperature: 310.15 + coldDamage: + types: + Cold: 0.1 + specificHeat: 42 + heatDamage: + types: + Heat: 0.0 + - type: PointLight + radius: 2 + energy: 1 + softness: 10 + color: "#E25822" + - type: NameIdentifier + group: AnomalitePyroclastic + # Anomaly functionality + - type: InnerBodyAnomaly + injectionProto: AnomalyInjectionPyroclastic + skipStun: true + +# Gravity +- type: entity + parent: [ BaseAnomalite ] + id: MobAnomaliteGravity + suffix: Gravity + description: A strange little sprite, born from the leftover energies of an anomaly core. + components: + - type: Icon + sprite: _Impstation/Mobs/Anomalites/grav.rsi + state: anom + - type: Sprite + sprite: _Impstation/Mobs/Anomalites/grav.rsi + layers: + - map: [ "enum.DamageStateVisualLayers.Base" ] + state: anom + noRot: true + drawdepth: Mobs + - type: DamageStateVisuals + states: + Alive: + Base: anom + Dead: + Base: dead + - type: MeleeWeapon + damage: + types: + Blunt: 5 + angle: 0 + animation: WeaponArcBite + - type: Damageable + damageModifierSet: AnomaliteGravity + - type: PointLight + radius: 2 + energy: 1 + softness: 10 + color: "#1e070e" + - type: NameIdentifier + group: AnomaliteGravity + # Anomaly functionality + - type: InnerBodyAnomaly + injectionProto: AnomalyInjectionGravity + skipStun: true + +# Ice +- type: entity + parent: [ BaseAnomalite ] + id: MobAnomaliteIce + suffix: Ice + description: A chilly little sprite, born from the leftover energies of an anomaly core. + components: + - type: Icon + sprite: _Impstation/Mobs/Anomalites/ice.rsi + state: anom + - type: Sprite + sprite: _Impstation/Mobs/Anomalites/ice.rsi + layers: + - map: [ "enum.DamageStateVisualLayers.Base" ] + state: anom + noRot: true + drawdepth: Mobs + - type: DamageStateVisuals + states: + Alive: + Base: anom + Dead: + Base: dead + - type: MeleeWeapon + damage: + types: + Cold: 5 + angle: 0 + animation: WeaponArcBite + - type: Damageable + damageModifierSet: AnomaliteIce + - type: Temperature + heatDamageThreshold: 325 + coldDamageThreshold: 0 + currentTemperature: 310.15 + coldDamage: + types: + Cold: 0.0 + specificHeat: 42 + heatDamage: + types: + Heat: 1.5 + - type: PointLight + radius: 2 + energy: 1 + softness: 10 + color: "#befaff" + - type: NameIdentifier + group: AnomaliteIce + # Anomaly functionality + - type: InnerBodyAnomaly + injectionProto: AnomalyInjectionIce + skipStun: true + +# Flesh +- type: entity + parent: [ BaseAnomalite ] + id: MobAnomaliteFlesh + suffix: Flesh + description: A gristly little sprite, born from the leftover energies of an anomaly core. + components: + - type: Icon + sprite: _Impstation/Mobs/Anomalites/flesh.rsi + state: anom + - type: Sprite + sprite: _Impstation/Mobs/Anomalites/flesh.rsi + layers: + - map: [ "enum.DamageStateVisualLayers.Base" ] + state: anom + noRot: true + drawdepth: Mobs + - type: DamageStateVisuals + states: + Alive: + Base: anom + Dead: + Base: dead + - type: MeleeWeapon + damage: + types: + Slash: 5 + angle: 0 + animation: WeaponArcBite + - type: Damageable + damageModifierSet: AnomaliteFlesh + - type: PointLight + radius: 2 + energy: 1 + softness: 10 + color: "#cb5b7e" + - type: NameIdentifier + group: AnomaliteFlesh + # Anomaly functionality + - type: InnerBodyAnomaly + injectionProto: AnomalyInjectionFlesh + skipStun: true + +# Rock +- type: entity + parent: [ BaseAnomalite ] + id: MobAnomaliteRock + suffix: Rock + description: A sturdy little sprite, born from the leftover energies of an anomaly core. + components: + - type: Icon + sprite: _Impstation/Mobs/Anomalites/rock.rsi + state: anom + - type: Sprite + sprite: _Impstation/Mobs/Anomalites/rock.rsi + layers: + - map: [ "enum.DamageStateVisualLayers.Base" ] + state: anom + noRot: true + drawdepth: Mobs + - type: DamageStateVisuals + states: + Alive: + Base: anom + Dead: + Base: dead + - type: MeleeWeapon + damage: + types: + Blunt: 5 + Structural: 15 + angle: 0 + animation: WeaponArcBite + - type: Damageable + damageModifierSet: AnomaliteRock + - type: PointLight + radius: 2 + energy: 1 + softness: 10 + color: "#5ca8cb" + - type: NameIdentifier + group: AnomaliteRock + # Anomaly functionality + - type: InnerBodyAnomaly + injectionProto: AnomalyInjectionRock + skipStun: true + +# Reagent +- type: entity + parent: [ BaseAnomalite ] + id: MobAnomaliteLiquid + suffix: Liquid + description: A sopping little sprite, born from the leftover energies of an anomaly core. + components: + - type: Icon + sprite: _Impstation/Mobs/Anomalites/reagent.rsi + state: anom + - type: Sprite + sprite: _Impstation/Mobs/Anomalites/reagent.rsi + layers: + - state: anom + map: [ "enum.AnomalyVisualLayers.Base", "enum.DamageStateVisualLayers.Base" ] + - state: pulse + map: [ "enum.AnomalyVisualLayers.Animated" ] + visible: false + noRot: true + drawdepth: Mobs + - type: DamageStateVisuals + states: + Alive: + Base: anom + Dead: + Base: dead + - type: MeleeWeapon + damage: + types: + Poison: 1 # reduced cus they inject their solution into you + angle: 0 + animation: WeaponArcBite + - type: Damageable + damageModifierSet: AnomaliteLiquid + - type: PointLight + radius: 2 + energy: 1 + softness: 10 + color: "#ffffff" + - type: NameIdentifier + group: AnomaliteReagent + # Anomaly functionality + - type: InnerBodyAnomaly + injectionProto: AnomalyInjectionLiquid + skipStun: true + - type: SolutionContainerManager + solutions: + anomaly: + maxVol: 1500 + - type: MeleeChemicalInjector + solution: anomaly + transferAmount: 6 + - type: RandomSprite + selected: + enum.AnomalyVisualLayers.Base: + anom: "#ffffff" + enum.AnomalyVisualLayers.Animated: + pulse: "#ffffff" + - type: SolutionScanner # i think it's fun for them to be able to scan their solutions + +# Bluespace +- type: entity + parent: [ BaseAnomalite ] + id: MobAnomaliteBluespace + suffix: Bluespace + description: A non-euclidean little sprite, born from the leftover energies of an anomaly core. + components: + - type: Icon + sprite: _Impstation/Mobs/Anomalites/bluespace.rsi + state: anom + - type: Sprite + sprite: _Impstation/Mobs/Anomalites/bluespace.rsi + layers: + - map: [ "enum.DamageStateVisualLayers.Base" ] + state: anom + noRot: true + drawdepth: Mobs + - type: DamageStateVisuals + states: + Alive: + Base: anom + Dead: + Base: dead + - type: MeleeWeapon + damage: + types: + Cellular: 5 # there was a great big flash, everything just changed / his molecules got all rearranged + angle: 0 + animation: WeaponArcBite + - type: Damageable + damageModifierSet: AnomaliteBluespace + - type: PointLight + radius: 2 + energy: 1 + softness: 10 + color: "#00ccff" + - type: NameIdentifier + group: AnomaliteBluespace + # Anomaly functionality + - type: InnerBodyAnomaly + injectionProto: AnomalyInjectionBluespace + skipStun: true + +# Electricity +- type: entity + parent: [ BaseAnomalite ] + id: MobAnomaliteElectricity + suffix: Electricity + description: A shocking little sprite, born from the leftover energies of an anomaly core. + components: + - type: Icon + sprite: _Impstation/Mobs/Anomalites/electric.rsi + state: anom + - type: Sprite + sprite: _Impstation/Mobs/Anomalites/electric.rsi + layers: + - map: [ "enum.DamageStateVisualLayers.Base" ] + state: anom + noRot: true + drawdepth: Mobs + - type: DamageStateVisuals + states: + Alive: + Base: anom + Dead: + Base: dead + - type: MeleeWeapon + damage: + types: + Shock: 5 + angle: 0 + animation: WeaponArcBite + - type: Damageable + damageModifierSet: AnomaliteElectricity + - type: PointLight + radius: 2 + energy: 1 + softness: 10 + color: "#ffffaa" + - type: NameIdentifier + group: AnomaliteElectric + # Anomaly functionality + - type: InnerBodyAnomaly + injectionProto: AnomalyInjectionElectric + skipStun: true + +# Flora +- type: entity + parent: [ BaseAnomalite ] + id: MobAnomaliteFlora + suffix: Flora + description: A blossoming little sprite, born from the leftover energies of an anomaly core. + components: + - type: Icon + sprite: _Impstation/Mobs/Anomalites/flower.rsi + state: anom + - type: Sprite + sprite: _Impstation/Mobs/Anomalites/flower.rsi + layers: + - map: [ "enum.DamageStateVisualLayers.Base" ] + state: anom + noRot: true + drawdepth: Mobs + - type: DamageStateVisuals + states: + Alive: + Base: anom + Dead: + Base: dead + - type: MeleeWeapon + damage: + types: + Piercing: 5 # thorns? + angle: 0 + animation: WeaponArcBite + - type: Damageable + damageModifierSet: AnomaliteFlora + - type: PointLight + radius: 2 + energy: 1 + softness: 10 + color: "#6270bb" + - type: NameIdentifier + group: AnomaliteFlora + # Anomaly functionality + - type: InnerBodyAnomaly + injectionProto: AnomalyInjectionFlora + skipStun: true + +# Shadow +- type: entity + parent: [ BaseAnomalite ] + id: MobAnomaliteShadow + suffix: Shadow + description: A dark little sprite, born from the leftover energies of an anomaly core. + components: + - type: Icon + sprite: _Impstation/Mobs/Anomalites/shadow.rsi + state: anom + - type: Sprite + sprite: _Impstation/Mobs/Anomalites/shadow.rsi + layers: + - map: [ "enum.DamageStateVisualLayers.Base" ] + state: anom + noRot: true + drawdepth: Mobs + - type: DamageStateVisuals + states: + Alive: + Base: anom + Dead: + Base: dead + - type: MeleeWeapon + damage: + types: + Asphyxiation: 10 # suffocating darkness + angle: 0 + animation: WeaponArcBite + - type: Damageable + damageModifierSet: AnomaliteShadow + - type: PointLight + radius: 2 + energy: 1 + softness: 10 + color: "#793a80" + - type: NameIdentifier + group: AnomaliteShadow + # Anomaly functionality + - type: InnerBodyAnomaly + injectionProto: AnomalyInjectionShadow + skipStun: true + - type: NightVision + isActive: true + toggleAction: null + color: "#50595C" + activateSound: null + deactivateSound: null + +# Tech +- type: entity + parent: [ BaseAnomalite ] + id: MobAnomaliteTech + suffix: Tech + description: A cybernetic little sprite, born from the leftover energies of an anomaly core. + components: + - type: Icon + sprite: _Impstation/Mobs/Anomalites/tech.rsi + state: anom + - type: Sprite + sprite: _Impstation/Mobs/Anomalites/tech.rsi + layers: + - map: [ "enum.DamageStateVisualLayers.Base" ] + state: anom + noRot: true + drawdepth: Mobs + - type: DamageStateVisuals + states: + Alive: + Base: anom + Dead: + Base: dead + - type: MeleeWeapon + damage: + types: + Radiation: 5 # there's not really a relevant damage type for this + angle: 0 + animation: WeaponArcBite + - type: Damageable + damageModifierSet: AnomaliteTech + - type: PointLight + radius: 2 + energy: 1 + softness: 10 + color: "#56c1e8" + - type: NameIdentifier + group: AnomaliteTech + # Anomaly functionality + - type: InnerBodyAnomaly + injectionProto: AnomalyInjectionTech + skipStun: true diff --git a/Resources/Prototypes/_Impstation/Entities/Structures/Specific/Anomaly/anomaly_injections.yml b/Resources/Prototypes/_Impstation/Entities/Structures/Specific/Anomaly/anomaly_injections.yml new file mode 100644 index 0000000000..aaf7c8cf47 --- /dev/null +++ b/Resources/Prototypes/_Impstation/Entities/Structures/Specific/Anomaly/anomaly_injections.yml @@ -0,0 +1,78 @@ +# Imp. This is only used for Anomalites +- type: entity + parent: AnomalyInjectionBase + id: AnomalyInjectionLiquid + categories: [ HideSpawnMenu ] + components: + - type: PointLight + color: "#ffffff" + - type: PuddleCreateAnomaly + solution: anomaly + - type: InjectionAnomaly + solution: anomaly + superCriticalInjectRadius: 10 + - type: ReagentProducerAnomaly + solution: anomaly + needRecolor: true + dangerousChemicals: + - UnstableMutagen + - Mold + - PolytrinicAcid + - FerrochromicAcid + - FluorosulfuricAcid + - SulfuricAcid + - HeartbreakerToxin + - VentCrud + - UncookedAnimalProteins + - Thermite + - Napalm + - Phlogiston + - ChlorineTrifluoride + - FoamingAgent + - BuzzochloricBees + - RobustHarvest + usefulChemicals: + - Cryptobiolin + - Dylovene + - Arithrazine + - Bicaridine + - Cryoxadone + - Dermaline + - Dexalin + - DexalinPlus + - Epinephrine + - Leporazine + - Ambuzol + - Tricordrazine + - Artifexium + - Ethylredoxrazine + funChemicals: + - Desoxyephedrine + - Ephedrine + - THC + - SpaceDrugs + - Nocturine + - MuteToxin + - NorepinephricAcid + - Pax + - Ipecac + - Cognizine + - Beer + - SpaceGlue + - SpaceLube + - CogChamp + - Honk + - Carpetium + - JuiceThatMakesYouWeh + - type: Drink + solution: anomaly + - type: DrainableSolution + solution: anomaly + - type: DrawableSolution + solution: anomaly + - type: ExaminableSolution + solution: anomaly + - type: RefillableSolution + solution: anomaly + - type: InjectableSolution + solution: beaker diff --git a/Resources/Prototypes/_Impstation/InventoryTemplates/anomalite_inventory_template.yml b/Resources/Prototypes/_Impstation/InventoryTemplates/anomalite_inventory_template.yml new file mode 100644 index 0000000000..a3f650e0d1 --- /dev/null +++ b/Resources/Prototypes/_Impstation/InventoryTemplates/anomalite_inventory_template.yml @@ -0,0 +1,14 @@ +- type: inventoryTemplate + id: anomalite + slots: + - name: pocket1 + slotTexture: pocket + fullTextureName: template_small + slotFlags: POCKET + slotGroup: MainHotbar + stripTime: 3 + uiWindowPos: 0,3 + strippingWindowPos: 0,4 + dependsOn: jumpsuit + displayName: Pocket 1 + stripHidden: true diff --git a/Resources/Prototypes/_Impstation/Objects/Devices/pinpointer.yml b/Resources/Prototypes/_Impstation/Objects/Devices/pinpointer.yml new file mode 100644 index 0000000000..bb10c12f89 --- /dev/null +++ b/Resources/Prototypes/_Impstation/Objects/Devices/pinpointer.yml @@ -0,0 +1,28 @@ +- type: entity + parent: PinpointerBase + name: core pull + description: You have an instinctual knowledge of the location of your core. + suffix: Station, Unremoveable + id: PinpointerAnomalite + components: + - type: Sprite + sprite: _DV/Objects/Devices/pinpointer.rsi # DeltaV - They were just using the impstation dragon pinpointer so I made them a custom one + layers: + - state: pinpointer-anomalite + map: ["enum.PinpointerLayers.Base"] + - state: pinonnull + map: ["enum.PinpointerLayers.Screen"] + shader: unshaded + visible: false + - type: Icon + sprite: _DV/Objects/Devices/pinpointer.rsi # DeltaV - They were just using the impstation dragon pinpointer so I made them a custom one + state: pinpointer-anomalite + - type: Pinpointer + targetName: your core + activateImmediately: true + - type: Unremoveable + +- type: startingGear + id: StartingGearAnomalitePinpointer + equipment: + pocket1: PinpointerAnomalite diff --git a/Resources/Textures/_DV/Objects/Devices/pinpointer.rsi/inhand-left.png b/Resources/Textures/_DV/Objects/Devices/pinpointer.rsi/inhand-left.png new file mode 100644 index 0000000000..d364822849 Binary files /dev/null and b/Resources/Textures/_DV/Objects/Devices/pinpointer.rsi/inhand-left.png differ diff --git a/Resources/Textures/_DV/Objects/Devices/pinpointer.rsi/inhand-right.png b/Resources/Textures/_DV/Objects/Devices/pinpointer.rsi/inhand-right.png new file mode 100644 index 0000000000..8f268d6a75 Binary files /dev/null and b/Resources/Textures/_DV/Objects/Devices/pinpointer.rsi/inhand-right.png differ diff --git a/Resources/Textures/_DV/Objects/Devices/pinpointer.rsi/meta.json b/Resources/Textures/_DV/Objects/Devices/pinpointer.rsi/meta.json new file mode 100644 index 0000000000..88a7d9c9d1 --- /dev/null +++ b/Resources/Textures/_DV/Objects/Devices/pinpointer.rsi/meta.json @@ -0,0 +1,150 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/commit/59f2a4e10e5ba36033c9734ddebfbbdc6157472d, pinpointer-anomalite by AeraAulin(Github)", + "states": [ + { + "name": "pinonalert", + "directions": 8, + "delays": [ + [ + 0.2, + 0.2 + ], + [ + 0.2, + 0.2 + ], + [ + 0.2, + 0.2 + ], + [ + 0.2, + 0.2 + ], + [ + 0.2, + 0.2 + ], + [ + 0.2, + 0.2 + ], + [ + 0.2, + 0.2 + ], + [ + 0.2, + 0.2 + ] + ] + }, + { + "name": "pinonalertdirect", + "delays": [ + [ + 0.2, + 0.2 + ] + ] + }, + { + "name": "pinonalertnull", + "delays": [ + [ + 0.2, + 0.2 + ] + ] + }, + { + "name": "pinonclose", + "delays": [ + [ + 0.2, + 0.2 + ] + ] + }, + { + "name": "pinondirect", + "delays": [ + [ + 0.2, + 0.2 + ] + ] + }, + { + "name": "pinondirectlarge", + "delays": [ + [ + 0.2, + 0.2 + ] + ] + }, + { + "name": "pinondirectsmall", + "delays": [ + [ + 0.2, + 0.2 + ] + ] + }, + { + "name": "pinondirectxtrlarge", + "delays": [ + [ + 0.2, + 0.2 + ] + ] + }, + { + "name": "pinonfar", + "delays": [ + [ + 0.6, + 0.2 + ] + ] + }, + { + "name": "pinonmedium", + "delays": [ + [ + 0.4, + 0.2 + ] + ] + }, + { + "name": "pinonnull", + "delays": [ + [ + 0.2, + 0.2 + ] + ] + }, + { + "name": "pinpointer-anomalite" + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DV/Objects/Devices/pinpointer.rsi/pinonalert.png b/Resources/Textures/_DV/Objects/Devices/pinpointer.rsi/pinonalert.png new file mode 100644 index 0000000000..39e73ee266 Binary files /dev/null and b/Resources/Textures/_DV/Objects/Devices/pinpointer.rsi/pinonalert.png differ diff --git a/Resources/Textures/_DV/Objects/Devices/pinpointer.rsi/pinonalertdirect.png b/Resources/Textures/_DV/Objects/Devices/pinpointer.rsi/pinonalertdirect.png new file mode 100644 index 0000000000..6e53ef3a3b Binary files /dev/null and b/Resources/Textures/_DV/Objects/Devices/pinpointer.rsi/pinonalertdirect.png differ diff --git a/Resources/Textures/_DV/Objects/Devices/pinpointer.rsi/pinonalertnull.png b/Resources/Textures/_DV/Objects/Devices/pinpointer.rsi/pinonalertnull.png new file mode 100644 index 0000000000..1556d82c76 Binary files /dev/null and b/Resources/Textures/_DV/Objects/Devices/pinpointer.rsi/pinonalertnull.png differ diff --git a/Resources/Textures/_DV/Objects/Devices/pinpointer.rsi/pinonclose.png b/Resources/Textures/_DV/Objects/Devices/pinpointer.rsi/pinonclose.png new file mode 100644 index 0000000000..d652e4cd02 Binary files /dev/null and b/Resources/Textures/_DV/Objects/Devices/pinpointer.rsi/pinonclose.png differ diff --git a/Resources/Textures/_DV/Objects/Devices/pinpointer.rsi/pinondirect.png b/Resources/Textures/_DV/Objects/Devices/pinpointer.rsi/pinondirect.png new file mode 100644 index 0000000000..c2ac6e44e2 Binary files /dev/null and b/Resources/Textures/_DV/Objects/Devices/pinpointer.rsi/pinondirect.png differ diff --git a/Resources/Textures/_DV/Objects/Devices/pinpointer.rsi/pinondirectlarge.png b/Resources/Textures/_DV/Objects/Devices/pinpointer.rsi/pinondirectlarge.png new file mode 100644 index 0000000000..c8b1fa4875 Binary files /dev/null and b/Resources/Textures/_DV/Objects/Devices/pinpointer.rsi/pinondirectlarge.png differ diff --git a/Resources/Textures/_DV/Objects/Devices/pinpointer.rsi/pinondirectsmall.png b/Resources/Textures/_DV/Objects/Devices/pinpointer.rsi/pinondirectsmall.png new file mode 100644 index 0000000000..ab7940efd9 Binary files /dev/null and b/Resources/Textures/_DV/Objects/Devices/pinpointer.rsi/pinondirectsmall.png differ diff --git a/Resources/Textures/_DV/Objects/Devices/pinpointer.rsi/pinondirectxtrlarge.png b/Resources/Textures/_DV/Objects/Devices/pinpointer.rsi/pinondirectxtrlarge.png new file mode 100644 index 0000000000..5db693402c Binary files /dev/null and b/Resources/Textures/_DV/Objects/Devices/pinpointer.rsi/pinondirectxtrlarge.png differ diff --git a/Resources/Textures/_DV/Objects/Devices/pinpointer.rsi/pinonfar.png b/Resources/Textures/_DV/Objects/Devices/pinpointer.rsi/pinonfar.png new file mode 100644 index 0000000000..fd0fbf51ac Binary files /dev/null and b/Resources/Textures/_DV/Objects/Devices/pinpointer.rsi/pinonfar.png differ diff --git a/Resources/Textures/_DV/Objects/Devices/pinpointer.rsi/pinonmedium.png b/Resources/Textures/_DV/Objects/Devices/pinpointer.rsi/pinonmedium.png new file mode 100644 index 0000000000..5f8e89aec2 Binary files /dev/null and b/Resources/Textures/_DV/Objects/Devices/pinpointer.rsi/pinonmedium.png differ diff --git a/Resources/Textures/_DV/Objects/Devices/pinpointer.rsi/pinonnull.png b/Resources/Textures/_DV/Objects/Devices/pinpointer.rsi/pinonnull.png new file mode 100644 index 0000000000..a309d053e5 Binary files /dev/null and b/Resources/Textures/_DV/Objects/Devices/pinpointer.rsi/pinonnull.png differ diff --git a/Resources/Textures/_DV/Objects/Devices/pinpointer.rsi/pinpointer-anomalite.png b/Resources/Textures/_DV/Objects/Devices/pinpointer.rsi/pinpointer-anomalite.png new file mode 100644 index 0000000000..01415647c1 Binary files /dev/null and b/Resources/Textures/_DV/Objects/Devices/pinpointer.rsi/pinpointer-anomalite.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/anomalite.rsi/anomalybluespace.png b/Resources/Textures/_Impstation/Mobs/Anomalites/anomalite.rsi/anomalybluespace.png new file mode 100644 index 0000000000..7c3f8dac62 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Anomalites/anomalite.rsi/anomalybluespace.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/anomalite.rsi/anomalyelectric.png b/Resources/Textures/_Impstation/Mobs/Anomalites/anomalite.rsi/anomalyelectric.png new file mode 100644 index 0000000000..530bb21144 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Anomalites/anomalite.rsi/anomalyelectric.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/anomalite.rsi/anomalyfire.png b/Resources/Textures/_Impstation/Mobs/Anomalites/anomalite.rsi/anomalyfire.png new file mode 100644 index 0000000000..4b6be1ac9e Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Anomalites/anomalite.rsi/anomalyfire.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/anomalite.rsi/anomalyflesh.png b/Resources/Textures/_Impstation/Mobs/Anomalites/anomalite.rsi/anomalyflesh.png new file mode 100644 index 0000000000..c35520eb1c Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Anomalites/anomalite.rsi/anomalyflesh.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/anomalite.rsi/anomalyflower.png b/Resources/Textures/_Impstation/Mobs/Anomalites/anomalite.rsi/anomalyflower.png new file mode 100644 index 0000000000..d3c9d23e2f Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Anomalites/anomalite.rsi/anomalyflower.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/anomalite.rsi/anomalygravity.png b/Resources/Textures/_Impstation/Mobs/Anomalites/anomalite.rsi/anomalygravity.png new file mode 100644 index 0000000000..52529bcd2b Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Anomalites/anomalite.rsi/anomalygravity.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/anomalite.rsi/anomalyice.png b/Resources/Textures/_Impstation/Mobs/Anomalites/anomalite.rsi/anomalyice.png new file mode 100644 index 0000000000..9b3fb6052c Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Anomalites/anomalite.rsi/anomalyice.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/anomalite.rsi/anomalyreagent.png b/Resources/Textures/_Impstation/Mobs/Anomalites/anomalite.rsi/anomalyreagent.png new file mode 100644 index 0000000000..3b37969da0 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Anomalites/anomalite.rsi/anomalyreagent.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/anomalite.rsi/anomalyrock.png b/Resources/Textures/_Impstation/Mobs/Anomalites/anomalite.rsi/anomalyrock.png new file mode 100644 index 0000000000..3694bc89ab Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Anomalites/anomalite.rsi/anomalyrock.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/anomalite.rsi/anomalyshadow.png b/Resources/Textures/_Impstation/Mobs/Anomalites/anomalite.rsi/anomalyshadow.png new file mode 100644 index 0000000000..3eb26da5c1 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Anomalites/anomalite.rsi/anomalyshadow.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/anomalite.rsi/anomalytech.png b/Resources/Textures/_Impstation/Mobs/Anomalites/anomalite.rsi/anomalytech.png new file mode 100644 index 0000000000..6f3e9a8bb6 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Anomalites/anomalite.rsi/anomalytech.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/anomalite.rsi/blank.png b/Resources/Textures/_Impstation/Mobs/Anomalites/anomalite.rsi/blank.png new file mode 100644 index 0000000000..414ce7e3f6 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Anomalites/anomalite.rsi/blank.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/anomalite.rsi/meta.json b/Resources/Textures/_Impstation/Mobs/Anomalites/anomalite.rsi/meta.json new file mode 100644 index 0000000000..342f1a1b3e --- /dev/null +++ b/Resources/Textures/_Impstation/Mobs/Anomalites/anomalite.rsi/meta.json @@ -0,0 +1,59 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Made by FaelinDraws", + "states": [ + { + "name": "anomalybluespace", + "directions": 4 + }, + { + "name": "anomalyelectric", + "directions": 4 + }, + { + "name": "anomalyfire", + "directions": 4 + }, + { + "name": "anomalyflesh", + "directions": 4 + }, + { + "name": "anomalyflower", + "directions": 4 + }, + { + "name": "anomalygravity", + "directions": 4 + }, + { + "name": "anomalyice", + "directions": 4 + }, + { + "name": "anomalyreagent", + "directions": 4 + }, + { + "name": "anomalyrock", + "directions": 4 + }, + { + "name": "anomalyshadow", + "directions": 4 + }, + { + "name": "anomalytech", + "directions": 4 + }, + { + "name": "blank", + "directions": 4 + } + ] + } diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/bluespace.rsi/anom.png b/Resources/Textures/_Impstation/Mobs/Anomalites/bluespace.rsi/anom.png new file mode 100644 index 0000000000..7c3f8dac62 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Anomalites/bluespace.rsi/anom.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/bluespace.rsi/dead.png b/Resources/Textures/_Impstation/Mobs/Anomalites/bluespace.rsi/dead.png new file mode 100644 index 0000000000..e4ff8eeeae Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Anomalites/bluespace.rsi/dead.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/bluespace.rsi/meta.json b/Resources/Textures/_Impstation/Mobs/Anomalites/bluespace.rsi/meta.json new file mode 100644 index 0000000000..ac9c7ae523 --- /dev/null +++ b/Resources/Textures/_Impstation/Mobs/Anomalites/bluespace.rsi/meta.json @@ -0,0 +1,23 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Made by FaelinDraws", + "states": [ + { + "name": "anom", + "directions": 4 + }, + { + "name": "pulse", + "directions": 4 + }, + { + "name": "dead", + "directions": 4 + } + ] + } diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/bluespace.rsi/pulse.png b/Resources/Textures/_Impstation/Mobs/Anomalites/bluespace.rsi/pulse.png new file mode 100644 index 0000000000..7c3f8dac62 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Anomalites/bluespace.rsi/pulse.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/electric.rsi/anom.png b/Resources/Textures/_Impstation/Mobs/Anomalites/electric.rsi/anom.png new file mode 100644 index 0000000000..530bb21144 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Anomalites/electric.rsi/anom.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/electric.rsi/dead.png b/Resources/Textures/_Impstation/Mobs/Anomalites/electric.rsi/dead.png new file mode 100644 index 0000000000..84a3becf70 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Anomalites/electric.rsi/dead.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/electric.rsi/meta.json b/Resources/Textures/_Impstation/Mobs/Anomalites/electric.rsi/meta.json new file mode 100644 index 0000000000..ac9c7ae523 --- /dev/null +++ b/Resources/Textures/_Impstation/Mobs/Anomalites/electric.rsi/meta.json @@ -0,0 +1,23 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Made by FaelinDraws", + "states": [ + { + "name": "anom", + "directions": 4 + }, + { + "name": "pulse", + "directions": 4 + }, + { + "name": "dead", + "directions": 4 + } + ] + } diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/electric.rsi/pulse.png b/Resources/Textures/_Impstation/Mobs/Anomalites/electric.rsi/pulse.png new file mode 100644 index 0000000000..530bb21144 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Anomalites/electric.rsi/pulse.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/fire.rsi/anom.png b/Resources/Textures/_Impstation/Mobs/Anomalites/fire.rsi/anom.png new file mode 100644 index 0000000000..4b6be1ac9e Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Anomalites/fire.rsi/anom.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/fire.rsi/dead.png b/Resources/Textures/_Impstation/Mobs/Anomalites/fire.rsi/dead.png new file mode 100644 index 0000000000..61bf38134f Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Anomalites/fire.rsi/dead.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/fire.rsi/meta.json b/Resources/Textures/_Impstation/Mobs/Anomalites/fire.rsi/meta.json new file mode 100644 index 0000000000..ac9c7ae523 --- /dev/null +++ b/Resources/Textures/_Impstation/Mobs/Anomalites/fire.rsi/meta.json @@ -0,0 +1,23 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Made by FaelinDraws", + "states": [ + { + "name": "anom", + "directions": 4 + }, + { + "name": "pulse", + "directions": 4 + }, + { + "name": "dead", + "directions": 4 + } + ] + } diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/fire.rsi/pulse.png b/Resources/Textures/_Impstation/Mobs/Anomalites/fire.rsi/pulse.png new file mode 100644 index 0000000000..4b6be1ac9e Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Anomalites/fire.rsi/pulse.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/flesh.rsi/anom.png b/Resources/Textures/_Impstation/Mobs/Anomalites/flesh.rsi/anom.png new file mode 100644 index 0000000000..c35520eb1c Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Anomalites/flesh.rsi/anom.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/flesh.rsi/dead.png b/Resources/Textures/_Impstation/Mobs/Anomalites/flesh.rsi/dead.png new file mode 100644 index 0000000000..d88f4516e5 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Anomalites/flesh.rsi/dead.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/flesh.rsi/meta.json b/Resources/Textures/_Impstation/Mobs/Anomalites/flesh.rsi/meta.json new file mode 100644 index 0000000000..ac9c7ae523 --- /dev/null +++ b/Resources/Textures/_Impstation/Mobs/Anomalites/flesh.rsi/meta.json @@ -0,0 +1,23 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Made by FaelinDraws", + "states": [ + { + "name": "anom", + "directions": 4 + }, + { + "name": "pulse", + "directions": 4 + }, + { + "name": "dead", + "directions": 4 + } + ] + } diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/flesh.rsi/pulse.png b/Resources/Textures/_Impstation/Mobs/Anomalites/flesh.rsi/pulse.png new file mode 100644 index 0000000000..c35520eb1c Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Anomalites/flesh.rsi/pulse.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/flower.rsi/anom.png b/Resources/Textures/_Impstation/Mobs/Anomalites/flower.rsi/anom.png new file mode 100644 index 0000000000..d3c9d23e2f Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Anomalites/flower.rsi/anom.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/flower.rsi/dead.png b/Resources/Textures/_Impstation/Mobs/Anomalites/flower.rsi/dead.png new file mode 100644 index 0000000000..dd34573ca5 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Anomalites/flower.rsi/dead.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/flower.rsi/meta.json b/Resources/Textures/_Impstation/Mobs/Anomalites/flower.rsi/meta.json new file mode 100644 index 0000000000..ac9c7ae523 --- /dev/null +++ b/Resources/Textures/_Impstation/Mobs/Anomalites/flower.rsi/meta.json @@ -0,0 +1,23 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Made by FaelinDraws", + "states": [ + { + "name": "anom", + "directions": 4 + }, + { + "name": "pulse", + "directions": 4 + }, + { + "name": "dead", + "directions": 4 + } + ] + } diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/flower.rsi/pulse.png b/Resources/Textures/_Impstation/Mobs/Anomalites/flower.rsi/pulse.png new file mode 100644 index 0000000000..d3c9d23e2f Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Anomalites/flower.rsi/pulse.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/grav.rsi/anom.png b/Resources/Textures/_Impstation/Mobs/Anomalites/grav.rsi/anom.png new file mode 100644 index 0000000000..52529bcd2b Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Anomalites/grav.rsi/anom.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/grav.rsi/dead.png b/Resources/Textures/_Impstation/Mobs/Anomalites/grav.rsi/dead.png new file mode 100644 index 0000000000..77cb270fa3 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Anomalites/grav.rsi/dead.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/grav.rsi/meta.json b/Resources/Textures/_Impstation/Mobs/Anomalites/grav.rsi/meta.json new file mode 100644 index 0000000000..ac9c7ae523 --- /dev/null +++ b/Resources/Textures/_Impstation/Mobs/Anomalites/grav.rsi/meta.json @@ -0,0 +1,23 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Made by FaelinDraws", + "states": [ + { + "name": "anom", + "directions": 4 + }, + { + "name": "pulse", + "directions": 4 + }, + { + "name": "dead", + "directions": 4 + } + ] + } diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/grav.rsi/pulse.png b/Resources/Textures/_Impstation/Mobs/Anomalites/grav.rsi/pulse.png new file mode 100644 index 0000000000..52529bcd2b Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Anomalites/grav.rsi/pulse.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/ice.rsi/anom.png b/Resources/Textures/_Impstation/Mobs/Anomalites/ice.rsi/anom.png new file mode 100644 index 0000000000..9b3fb6052c Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Anomalites/ice.rsi/anom.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/ice.rsi/dead.png b/Resources/Textures/_Impstation/Mobs/Anomalites/ice.rsi/dead.png new file mode 100644 index 0000000000..22e05c2df9 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Anomalites/ice.rsi/dead.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/ice.rsi/meta.json b/Resources/Textures/_Impstation/Mobs/Anomalites/ice.rsi/meta.json new file mode 100644 index 0000000000..ac9c7ae523 --- /dev/null +++ b/Resources/Textures/_Impstation/Mobs/Anomalites/ice.rsi/meta.json @@ -0,0 +1,23 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Made by FaelinDraws", + "states": [ + { + "name": "anom", + "directions": 4 + }, + { + "name": "pulse", + "directions": 4 + }, + { + "name": "dead", + "directions": 4 + } + ] + } diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/ice.rsi/pulse.png b/Resources/Textures/_Impstation/Mobs/Anomalites/ice.rsi/pulse.png new file mode 100644 index 0000000000..9b3fb6052c Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Anomalites/ice.rsi/pulse.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/reagent.rsi/anom.png b/Resources/Textures/_Impstation/Mobs/Anomalites/reagent.rsi/anom.png new file mode 100644 index 0000000000..3b37969da0 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Anomalites/reagent.rsi/anom.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/reagent.rsi/dead.png b/Resources/Textures/_Impstation/Mobs/Anomalites/reagent.rsi/dead.png new file mode 100644 index 0000000000..1e531ffba7 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Anomalites/reagent.rsi/dead.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/reagent.rsi/meta.json b/Resources/Textures/_Impstation/Mobs/Anomalites/reagent.rsi/meta.json new file mode 100644 index 0000000000..ac9c7ae523 --- /dev/null +++ b/Resources/Textures/_Impstation/Mobs/Anomalites/reagent.rsi/meta.json @@ -0,0 +1,23 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Made by FaelinDraws", + "states": [ + { + "name": "anom", + "directions": 4 + }, + { + "name": "pulse", + "directions": 4 + }, + { + "name": "dead", + "directions": 4 + } + ] + } diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/reagent.rsi/pulse.png b/Resources/Textures/_Impstation/Mobs/Anomalites/reagent.rsi/pulse.png new file mode 100644 index 0000000000..3b37969da0 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Anomalites/reagent.rsi/pulse.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/rock.rsi/anom.png b/Resources/Textures/_Impstation/Mobs/Anomalites/rock.rsi/anom.png new file mode 100644 index 0000000000..3694bc89ab Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Anomalites/rock.rsi/anom.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/rock.rsi/dead.png b/Resources/Textures/_Impstation/Mobs/Anomalites/rock.rsi/dead.png new file mode 100644 index 0000000000..d68e1aa613 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Anomalites/rock.rsi/dead.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/rock.rsi/meta.json b/Resources/Textures/_Impstation/Mobs/Anomalites/rock.rsi/meta.json new file mode 100644 index 0000000000..ac9c7ae523 --- /dev/null +++ b/Resources/Textures/_Impstation/Mobs/Anomalites/rock.rsi/meta.json @@ -0,0 +1,23 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Made by FaelinDraws", + "states": [ + { + "name": "anom", + "directions": 4 + }, + { + "name": "pulse", + "directions": 4 + }, + { + "name": "dead", + "directions": 4 + } + ] + } diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/rock.rsi/pulse.png b/Resources/Textures/_Impstation/Mobs/Anomalites/rock.rsi/pulse.png new file mode 100644 index 0000000000..3694bc89ab Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Anomalites/rock.rsi/pulse.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/shadow.rsi/anom.png b/Resources/Textures/_Impstation/Mobs/Anomalites/shadow.rsi/anom.png new file mode 100644 index 0000000000..3eb26da5c1 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Anomalites/shadow.rsi/anom.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/shadow.rsi/dead.png b/Resources/Textures/_Impstation/Mobs/Anomalites/shadow.rsi/dead.png new file mode 100644 index 0000000000..0dd63aeb9d Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Anomalites/shadow.rsi/dead.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/shadow.rsi/meta.json b/Resources/Textures/_Impstation/Mobs/Anomalites/shadow.rsi/meta.json new file mode 100644 index 0000000000..ac9c7ae523 --- /dev/null +++ b/Resources/Textures/_Impstation/Mobs/Anomalites/shadow.rsi/meta.json @@ -0,0 +1,23 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Made by FaelinDraws", + "states": [ + { + "name": "anom", + "directions": 4 + }, + { + "name": "pulse", + "directions": 4 + }, + { + "name": "dead", + "directions": 4 + } + ] + } diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/shadow.rsi/pulse.png b/Resources/Textures/_Impstation/Mobs/Anomalites/shadow.rsi/pulse.png new file mode 100644 index 0000000000..3eb26da5c1 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Anomalites/shadow.rsi/pulse.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/tech.rsi/anom.png b/Resources/Textures/_Impstation/Mobs/Anomalites/tech.rsi/anom.png new file mode 100644 index 0000000000..6f3e9a8bb6 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Anomalites/tech.rsi/anom.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/tech.rsi/dead.png b/Resources/Textures/_Impstation/Mobs/Anomalites/tech.rsi/dead.png new file mode 100644 index 0000000000..31826c4d02 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Anomalites/tech.rsi/dead.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/tech.rsi/meta.json b/Resources/Textures/_Impstation/Mobs/Anomalites/tech.rsi/meta.json new file mode 100644 index 0000000000..ac9c7ae523 --- /dev/null +++ b/Resources/Textures/_Impstation/Mobs/Anomalites/tech.rsi/meta.json @@ -0,0 +1,23 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Made by FaelinDraws", + "states": [ + { + "name": "anom", + "directions": 4 + }, + { + "name": "pulse", + "directions": 4 + }, + { + "name": "dead", + "directions": 4 + } + ] + } diff --git a/Resources/Textures/_Impstation/Mobs/Anomalites/tech.rsi/pulse.png b/Resources/Textures/_Impstation/Mobs/Anomalites/tech.rsi/pulse.png new file mode 100644 index 0000000000..6f3e9a8bb6 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Anomalites/tech.rsi/pulse.png differ