From 3fd47443aea4862f31d6099035dac78d228aeb3b Mon Sep 17 00:00:00 2001 From: Ed <96445749+TheShuEd@users.noreply.github.com> Date: Fri, 28 Feb 2025 15:55:47 +0300 Subject: [PATCH] Essence collector (#952) * collector attract essence * collector * Update magic-essence.yml * Update essence_collelctor.yml --- .../CP14SolutionNormalizerComponent.cs | 4 +- .../CP14SolutionNormalizerSystem.cs | 21 +--- .../CP14MagicEnergyAmbientSoundComponent.cs | 13 +++ .../SharedCP14MagicEnergySystem.cs | 13 +++ .../CP14MagicEssenceAttractorComponent.cs | 11 ++ .../CP14MagicEssenceCollecttorComponent.cs | 20 ++++ .../MagicEssence/CP14MagicEssenceComponent.cs | 20 ++++ .../MagicEssence/CP14MagicEssenceSystem.cs | 41 +++++++ .../Audio/_CP14/Effects/attributions.yml | 6 + .../Audio/_CP14/Effects/essence_consume.ogg | Bin 0 -> 13309 bytes .../en-US/_CP14/reagents/meta/essence.ftl | 23 ++++ .../ru-RU/_CP14/reagents/meta/essence.ftl | 23 ++++ .../Objects/Specific/Thaumaturgy/essence.yml | 69 +++++++++++- .../Specific/Alchemy/normalizer.yml | 1 + .../Thaumaturgy/essence_collelctor.yml | 86 +++++++++++++++ .../_CP14/Reagents/magic-essence.yml | 103 ++++++++++++++++++ .../essence_collector.rsi/active.png | Bin 0 -> 2271 bytes .../essence_collector.rsi/base.png | Bin 0 -> 960 bytes .../essence_collector.rsi/crystal.png | Bin 0 -> 194 bytes .../essence_collector.rsi/liq-1.png | Bin 0 -> 143 bytes .../essence_collector.rsi/liq-2.png | Bin 0 -> 175 bytes .../essence_collector.rsi/liq-3.png | Bin 0 -> 170 bytes .../essence_collector.rsi/liq-4.png | Bin 0 -> 169 bytes .../essence_collector.rsi/liq-5.png | Bin 0 -> 169 bytes .../essence_collector.rsi/liq-6.png | Bin 0 -> 178 bytes .../essence_collector.rsi/liq-7.png | Bin 0 -> 209 bytes .../essence_collector.rsi/meta.json | 53 +++++++++ 27 files changed, 483 insertions(+), 24 deletions(-) create mode 100644 Content.Shared/_CP14/MagicEnergy/CP14MagicEnergyAmbientSoundComponent.cs create mode 100644 Content.Shared/_CP14/MagicEssence/CP14MagicEssenceAttractorComponent.cs create mode 100644 Content.Shared/_CP14/MagicEssence/CP14MagicEssenceCollecttorComponent.cs create mode 100644 Content.Shared/_CP14/MagicEssence/CP14MagicEssenceComponent.cs create mode 100644 Resources/Audio/_CP14/Effects/essence_consume.ogg create mode 100644 Resources/Locale/en-US/_CP14/reagents/meta/essence.ftl create mode 100644 Resources/Locale/ru-RU/_CP14/reagents/meta/essence.ftl create mode 100644 Resources/Prototypes/_CP14/Entities/Structures/Specific/Thaumaturgy/essence_collelctor.yml create mode 100644 Resources/Prototypes/_CP14/Reagents/magic-essence.yml create mode 100644 Resources/Textures/_CP14/Structures/Specific/Thaumaturgy/essence_collector.rsi/active.png create mode 100644 Resources/Textures/_CP14/Structures/Specific/Thaumaturgy/essence_collector.rsi/base.png create mode 100644 Resources/Textures/_CP14/Structures/Specific/Thaumaturgy/essence_collector.rsi/crystal.png create mode 100644 Resources/Textures/_CP14/Structures/Specific/Thaumaturgy/essence_collector.rsi/liq-1.png create mode 100644 Resources/Textures/_CP14/Structures/Specific/Thaumaturgy/essence_collector.rsi/liq-2.png create mode 100644 Resources/Textures/_CP14/Structures/Specific/Thaumaturgy/essence_collector.rsi/liq-3.png create mode 100644 Resources/Textures/_CP14/Structures/Specific/Thaumaturgy/essence_collector.rsi/liq-4.png create mode 100644 Resources/Textures/_CP14/Structures/Specific/Thaumaturgy/essence_collector.rsi/liq-5.png create mode 100644 Resources/Textures/_CP14/Structures/Specific/Thaumaturgy/essence_collector.rsi/liq-6.png create mode 100644 Resources/Textures/_CP14/Structures/Specific/Thaumaturgy/essence_collector.rsi/liq-7.png create mode 100644 Resources/Textures/_CP14/Structures/Specific/Thaumaturgy/essence_collector.rsi/meta.json diff --git a/Content.Server/_CP14/Alchemy/Components/CP14SolutionNormalizerComponent.cs b/Content.Server/_CP14/Alchemy/Components/CP14SolutionNormalizerComponent.cs index 680b8905f2..df26556a94 100644 --- a/Content.Server/_CP14/Alchemy/Components/CP14SolutionNormalizerComponent.cs +++ b/Content.Server/_CP14/Alchemy/Components/CP14SolutionNormalizerComponent.cs @@ -1,8 +1,8 @@ - +using Content.Server._CP14.Alchemy.EntitySystems; using Content.Shared.FixedPoint; using Robust.Shared.Audio; -namespace Content.Server._CP14.Alchemy; +namespace Content.Server._CP14.Alchemy.Components; /// /// gradually rounds down all reagents in the specified solution diff --git a/Content.Server/_CP14/Alchemy/EntitySystems/CP14SolutionNormalizerSystem.cs b/Content.Server/_CP14/Alchemy/EntitySystems/CP14SolutionNormalizerSystem.cs index addc709d05..8c570f336f 100644 --- a/Content.Server/_CP14/Alchemy/EntitySystems/CP14SolutionNormalizerSystem.cs +++ b/Content.Server/_CP14/Alchemy/EntitySystems/CP14SolutionNormalizerSystem.cs @@ -1,7 +1,4 @@ using Content.Server._CP14.MagicEnergy; -using Content.Server.Audio; -using Content.Shared._CP14.MagicEnergy.Components; -using Content.Shared.Audio; using Content.Shared.Chemistry.Components.SolutionManager; using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Chemistry.Reagent; @@ -9,7 +6,7 @@ using Content.Shared.FixedPoint; using Robust.Shared.Audio.Systems; using Robust.Shared.Timing; -namespace Content.Server._CP14.Alchemy; +namespace Content.Server._CP14.Alchemy.EntitySystems; public sealed partial class CP14SolutionNormalizerSystem : EntitySystem { @@ -17,26 +14,12 @@ public sealed partial class CP14SolutionNormalizerSystem : EntitySystem [Dependency] private readonly IGameTiming _timing = default!; [Dependency] private readonly SharedSolutionContainerSystem _solutionContainer = default!; [Dependency] private readonly CP14MagicEnergyCrystalSlotSystem _magicSlot = default!; - [Dependency] private readonly AmbientSoundSystem _ambient = default!; - - public override void Initialize() - { - SubscribeLocalEvent(OnSlotPowerChanged); - } - - private void OnSlotPowerChanged(Entity ent, ref CP14SlotCrystalPowerChangedEvent args) - { - if (TryComp(ent, out var ambient)) - { - _ambient.SetAmbience(ent, args.Powered); - } - } public override void Update(float frameTime) { base.Update(frameTime); - var query = EntityQueryEnumerator(); + var query = EntityQueryEnumerator(); while (query.MoveNext(out var uid, out var normalizer, out var containerManager)) { if (_timing.CurTime <= normalizer.NextUpdateTime) diff --git a/Content.Shared/_CP14/MagicEnergy/CP14MagicEnergyAmbientSoundComponent.cs b/Content.Shared/_CP14/MagicEnergy/CP14MagicEnergyAmbientSoundComponent.cs new file mode 100644 index 0000000000..0000352f8a --- /dev/null +++ b/Content.Shared/_CP14/MagicEnergy/CP14MagicEnergyAmbientSoundComponent.cs @@ -0,0 +1,13 @@ +using Content.Shared._CP14.MagicRitual.Prototypes; +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; + +namespace Content.Shared._CP14.MagicEssence; + +/// +/// Turn on and off the ambient sound if entity magic powered +/// +[RegisterComponent, NetworkedComponent] +public sealed partial class CP14MagicEnergyAmbientSoundComponent : Component +{ +} diff --git a/Content.Shared/_CP14/MagicEnergy/SharedCP14MagicEnergySystem.cs b/Content.Shared/_CP14/MagicEnergy/SharedCP14MagicEnergySystem.cs index 1fc134d20b..7d7b3fedd3 100644 --- a/Content.Shared/_CP14/MagicEnergy/SharedCP14MagicEnergySystem.cs +++ b/Content.Shared/_CP14/MagicEnergy/SharedCP14MagicEnergySystem.cs @@ -1,5 +1,7 @@ using Content.Shared._CP14.MagicEnergy.Components; +using Content.Shared._CP14.MagicEssence; using Content.Shared.Alert; +using Content.Shared.Audio; using Content.Shared.FixedPoint; using Content.Shared.Inventory; using Content.Shared.Rounding; @@ -9,13 +11,24 @@ namespace Content.Shared._CP14.MagicEnergy; public partial class SharedCP14MagicEnergySystem : EntitySystem { [Dependency] private readonly AlertsSystem _alerts = default!; + [Dependency] private readonly SharedAmbientSoundSystem _ambient = default!; public override void Initialize() { + SubscribeLocalEvent(OnSlotPowerChanged); + SubscribeLocalEvent(OnComponentStartup); SubscribeLocalEvent(OnComponentShutdown); } + private void OnSlotPowerChanged(Entity ent, ref CP14SlotCrystalPowerChangedEvent args) + { + if (TryComp(ent, out var ambient)) + { + _ambient.SetAmbience(ent, args.Powered); + } + } + private void OnComponentStartup(Entity ent, ref ComponentStartup args) { UpdateMagicAlert(ent); diff --git a/Content.Shared/_CP14/MagicEssence/CP14MagicEssenceAttractorComponent.cs b/Content.Shared/_CP14/MagicEssence/CP14MagicEssenceAttractorComponent.cs new file mode 100644 index 0000000000..c51b2b14fc --- /dev/null +++ b/Content.Shared/_CP14/MagicEssence/CP14MagicEssenceAttractorComponent.cs @@ -0,0 +1,11 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared._CP14.MagicEssence; + +/// +/// Reflects the amount of essence stored in this item. The item can be destroyed to release the essence from it. +/// +[RegisterComponent, NetworkedComponent] +public sealed partial class CP14MagicEssenceAttractorComponent : Component +{ +} diff --git a/Content.Shared/_CP14/MagicEssence/CP14MagicEssenceCollecttorComponent.cs b/Content.Shared/_CP14/MagicEssence/CP14MagicEssenceCollecttorComponent.cs new file mode 100644 index 0000000000..4fd0b090ad --- /dev/null +++ b/Content.Shared/_CP14/MagicEssence/CP14MagicEssenceCollecttorComponent.cs @@ -0,0 +1,20 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared._CP14.MagicEssence; + +/// +/// Reflects the amount of essence stored in this item. The item can be destroyed to release the essence from it. +/// +[RegisterComponent, NetworkedComponent] +[Access(typeof(CP14MagicEssenceSystem))] +public sealed partial class CP14MagicEssenceCollectorComponent : Component +{ + [DataField] + public float CollectRange = 1f; + + [DataField] + public float AttractRange = 5f; + + [DataField] + public string Solution = "collector"; +} diff --git a/Content.Shared/_CP14/MagicEssence/CP14MagicEssenceComponent.cs b/Content.Shared/_CP14/MagicEssence/CP14MagicEssenceComponent.cs new file mode 100644 index 0000000000..3d0cbfbaf2 --- /dev/null +++ b/Content.Shared/_CP14/MagicEssence/CP14MagicEssenceComponent.cs @@ -0,0 +1,20 @@ +using Robust.Shared.Audio; +using Robust.Shared.GameStates; + +namespace Content.Shared._CP14.MagicEssence; + +/// +/// +/// +[RegisterComponent, NetworkedComponent] +public sealed partial class CP14MagicEssenceComponent : Component +{ + [DataField] + public string Solution = "essence"; + + [DataField] + public SoundSpecifier ConsumeSound = new SoundPathSpecifier("/Audio/_CP14/Effects/essence_consume.ogg") + { + Params = AudioParams.Default.WithVolume(-2f).WithVariation(0.2f), + }; +} diff --git a/Content.Shared/_CP14/MagicEssence/CP14MagicEssenceSystem.cs b/Content.Shared/_CP14/MagicEssence/CP14MagicEssenceSystem.cs index ff68bcbb07..d3cf371748 100644 --- a/Content.Shared/_CP14/MagicEssence/CP14MagicEssenceSystem.cs +++ b/Content.Shared/_CP14/MagicEssence/CP14MagicEssenceSystem.cs @@ -1,11 +1,15 @@ using System.Text; using Content.Shared._CP14.MagicEnergy; using Content.Shared._CP14.MagicEnergy.Components; +using Content.Shared.Chemistry.Components.SolutionManager; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Examine; using Content.Shared.Inventory; using Content.Shared.Throwing; using Content.Shared.Whitelist; +using Robust.Shared.Audio.Systems; using Robust.Shared.Network; +using Robust.Shared.Physics.Events; using Robust.Shared.Prototypes; using Robust.Shared.Random; @@ -21,6 +25,8 @@ public partial class CP14MagicEssenceSystem : EntitySystem [Dependency] private readonly IRobustRandom _random = default!; [Dependency] private readonly INetManager _net = default!; [Dependency] private readonly SharedCP14MagicEnergySystem _magicEnergy = default!; + [Dependency] private readonly SharedSolutionContainerSystem _solution = default!; + [Dependency] private readonly SharedAudioSystem _audio = default!; public override void Initialize() { @@ -32,6 +38,41 @@ public partial class CP14MagicEssenceSystem : EntitySystem SubscribeLocalEvent>((e, c, ev) => OnMagicScanAttempt(e, c, ev.Args)); SubscribeLocalEvent(OnEnergyOverload); + + SubscribeLocalEvent(OnPowerChanged); + SubscribeLocalEvent(OnCollectorCollide); + } + + private void OnPowerChanged(Entity ent, ref CP14SlotCrystalPowerChangedEvent args) + { + if (args.Powered) + EnsureComp(ent); + else + RemCompDeferred(ent); + } + + private void OnCollectorCollide(Entity ent, ref StartCollideEvent args) + { + if (!TryComp(args.OtherEntity, out var essenceComp)) + return; + + if (!TryComp(args.OtherEntity, out var essenceSolutionManager)) + return; + + if (!TryComp(ent, out var collectorSolutionManager)) + return; + + if (!_solution.TryGetSolution((args.OtherEntity, essenceSolutionManager), essenceComp.Solution, out var essenceSoln, out var essenceSolution)) + return; + + if (!_solution.TryGetSolution((ent, collectorSolutionManager), ent.Comp.Solution, out var collectorSoln, out var collectorSolution)) + return; + + _solution.TryTransferSolution(collectorSoln.Value, essenceSolution, essenceSolution.Volume); + _audio.PlayPvs(essenceComp.ConsumeSound, ent); + + if (_net.IsServer) + QueueDel(args.OtherEntity); } private void OnEnergyOverload(Entity ent, ref CP14MagicEnergyOverloadEvent args) diff --git a/Resources/Audio/_CP14/Effects/attributions.yml b/Resources/Audio/_CP14/Effects/attributions.yml index b7757b5298..2bd4ed0020 100644 --- a/Resources/Audio/_CP14/Effects/attributions.yml +++ b/Resources/Audio/_CP14/Effects/attributions.yml @@ -62,3 +62,9 @@ license: "CC-BY-4.0" copyright: 'by SpaceLife on Freesound.org' source: "https://freesound.org/people/SpaceLife/sounds/545938/" + + +- files: ["essence_consume.ogg"] + license: "CC0-1.0" + copyright: 'by DustyWind on Freesound.org' + source: "https://freesound.org/people/DustyWind/sounds/715784/" diff --git a/Resources/Audio/_CP14/Effects/essence_consume.ogg b/Resources/Audio/_CP14/Effects/essence_consume.ogg new file mode 100644 index 0000000000000000000000000000000000000000..845bcfecc24e88d9a2471b545877f8d88e96f0e8 GIT binary patch literal 13309 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 KIc50J2} literal 0 HcmV?d00001 diff --git a/Resources/Locale/en-US/_CP14/reagents/meta/essence.ftl b/Resources/Locale/en-US/_CP14/reagents/meta/essence.ftl new file mode 100644 index 0000000000..b01306837b --- /dev/null +++ b/Resources/Locale/en-US/_CP14/reagents/meta/essence.ftl @@ -0,0 +1,23 @@ +cp14-reagent-name-essence-earth = Essence of earth +cp14-reagent-desc-essence-earth = Liquid embodiment of the element earth + +cp14-reagent-name-essence-fire = Essence of fire +cp14-reagent-desc-essence-fire = Liquid embodiment of the element fire + +cp14-reagent-name-essence-life = Essence of life +cp14-reagent-desc-essence-life = Liquid embodiment of the element life + +cp14-reagent-name-essence-water = Essence of water +cp14-reagent-desc-essence-water = Liquid embodiment of the element water + +cp14-reagent-name-essence-light = Essence of light +cp14-reagent-desc-essence-light = Liquid embodiment of the element light + +cp14-reagent-name-essence-dimension = Essence of dimension +cp14-reagent-desc-essence-dimension = Liquid embodiment of the element dimension + +cp14-reagent-name-essence-death = Essence of death +cp14-reagent-desc-essence-death = Liquid embodiment of the element death + +cp14-reagent-name-essence-electric = Essence of electric +cp14-reagent-desc-essence-electric = Liquid embodiment of the element electric \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_CP14/reagents/meta/essence.ftl b/Resources/Locale/ru-RU/_CP14/reagents/meta/essence.ftl new file mode 100644 index 0000000000..0045c260de --- /dev/null +++ b/Resources/Locale/ru-RU/_CP14/reagents/meta/essence.ftl @@ -0,0 +1,23 @@ +cp14-reagent-name-essence-earth = Эссенция земли +cp14-reagent-desc-essence-earth = Жидкое воплощение стихии земли + +cp14-reagent-name-essence-fire = Эссенция огня +cp14-reagent-desc-essence-fire = Жидкое воплощение стихии огня + +cp14-reagent-name-essence-life = Эссенция жизни +cp14-reagent-desc-essence-life = Жидкое воплощение стихии жизни + +cp14-reagent-name-essence-water = Эссенция воды +cp14-reagent-desc-essence-water = Жидкое воплощение стихии воды + +cp14-reagent-name-essence-light = Эссенция света +cp14-reagent-desc-essence-light = Жидкое воплощение стихии света + +cp14-reagent-name-essence-dimension = Эссенция пространства +cp14-reagent-desc-essence-dimension = Жидкое воплощение стихии пространства + +cp14-reagent-name-essence-death = Эссенция смерти +cp14-reagent-desc-essence-death = Жидкое воплощение стихии смерти + +cp14-reagent-name-essence-electric = Эссенция молний +cp14-reagent-desc-essence-electric = Жидкое воплощение стихии молнии \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Specific/Thaumaturgy/essence.yml b/Resources/Prototypes/_CP14/Entities/Objects/Specific/Thaumaturgy/essence.yml index 62c13eaf14..5e1dbce84c 100644 --- a/Resources/Prototypes/_CP14/Entities/Objects/Specific/Thaumaturgy/essence.yml +++ b/Resources/Prototypes/_CP14/Entities/Objects/Specific/Thaumaturgy/essence.yml @@ -17,8 +17,8 @@ lifetime: 60 - type: CanMoveInAir - type: RandomWalk - minSpeed: 0.5 - maxSpeed: 1 + minSpeed: 0.25 + maxSpeed: 0.75 - type: Physics bodyType: Dynamic bodyStatus: InAir @@ -34,6 +34,13 @@ - Impassable restitution: 0.3 # fite me friction: 0.2 + - type: ChasingWalk + maxChaseRadius: 5 + minSpeed: 0.5 + maxSpeed: 1 + chasingComponent: + - type: CP14MagicEssenceAttractor + - type: CP14MagicEssence - type: entity parent: CP14BaseEssence @@ -42,6 +49,13 @@ components: - type: Sprite color: "#70533f" + - type: SolutionContainerManager + solutions: + essence: + maxVol: 1 + reagents: + - ReagentId: CP14EssenceEarth + Quantity: 1 - type: entity parent: CP14BaseEssence @@ -50,6 +64,13 @@ components: - type: Sprite color: "#d9741c" + - type: SolutionContainerManager + solutions: + essence: + maxVol: 1 + reagents: + - ReagentId: CP14EssenceFire + Quantity: 1 - type: entity parent: CP14BaseEssence @@ -58,6 +79,13 @@ components: - type: Sprite color: "#89e04f" + - type: SolutionContainerManager + solutions: + essence: + maxVol: 1 + reagents: + - ReagentId: CP14EssenceLife + Quantity: 1 - type: entity parent: CP14BaseEssence @@ -66,6 +94,13 @@ components: - type: Sprite color: "#1c94d9" + - type: SolutionContainerManager + solutions: + essence: + maxVol: 1 + reagents: + - ReagentId: CP14EssenceWater + Quantity: 1 - type: entity parent: CP14BaseEssence @@ -74,6 +109,13 @@ components: - type: Sprite color: "#ba97b8" + - type: SolutionContainerManager + solutions: + essence: + maxVol: 1 + reagents: + - ReagentId: CP14EssenceLight + Quantity: 1 - type: entity parent: CP14BaseEssence @@ -82,6 +124,13 @@ components: - type: Sprite color: "#391c57" + - type: SolutionContainerManager + solutions: + essence: + maxVol: 1 + reagents: + - ReagentId: CP14EssenceDimension + Quantity: 1 - type: entity parent: CP14BaseEssence @@ -90,6 +139,13 @@ components: - type: Sprite color: "#55877a" + - type: SolutionContainerManager + solutions: + essence: + maxVol: 1 + reagents: + - ReagentId: CP14EssenceDeath + Quantity: 1 - type: entity parent: CP14BaseEssence @@ -97,4 +153,11 @@ name: electric essence components: - type: Sprite - color: "#caed72" \ No newline at end of file + color: "#caed72" + - type: SolutionContainerManager + solutions: + essence: + maxVol: 1 + reagents: + - ReagentId: CP14EssenceElectric + Quantity: 1 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Specific/Alchemy/normalizer.yml b/Resources/Prototypes/_CP14/Entities/Structures/Specific/Alchemy/normalizer.yml index 7941e9afc3..a7ff349737 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Specific/Alchemy/normalizer.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Specific/Alchemy/normalizer.yml @@ -67,6 +67,7 @@ solution: normalizer - type: CP14SolutionNormalizer solution: normalizer + - type: CP14MagicEnergyAmbientSound - type: AmbientSound enabled: false range: 6 diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Specific/Thaumaturgy/essence_collelctor.yml b/Resources/Prototypes/_CP14/Entities/Structures/Specific/Thaumaturgy/essence_collelctor.yml new file mode 100644 index 0000000000..485a4c3efd --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Structures/Specific/Thaumaturgy/essence_collelctor.yml @@ -0,0 +1,86 @@ +- type: entity + id: CP14EssenceCollector + parent: + - BaseStructureDynamic + - CP14BaseCrystalSlot + name: essence collector + description: Being powered by the energy crystal, it will start sucking in all the essence floating in the air and converting it into useful liquid. + categories: [ ForkFiltered ] + components: + - type: Physics + bodyType: Static + - type: Transform + anchored: true + - type: InteractionOutline + - type: Sprite + drawdepth: Mobs + noRot: true + offset: 0, 0.2 + sprite: _CP14/Structures/Specific/Thaumaturgy/essence_collector.rsi + layers: + - state: liq-1 + map: ["enum.SolutionContainerLayers.Fill"] + visible: false + - state: base + - state: crystal + shader: unshaded + map: ["crystal"] + visible: false + - state: active + map: ["power"] + visible: false + shader: unshaded + - type: GenericVisualizer + visuals: + enum.CP14MagicSlotVisuals.Inserted: + crystal: + True: { visible: true } + False: { visible: false } + enum.CP14MagicSlotVisuals.Powered: + power: + True: { visible: true } + False: { visible: false } + - type: Fixtures + fixtures: + fix1: + hard: false + shape: + !type:PhysShapeAabb + bounds: "-0.25,-0.25,0.25,0.25" + density: 125 + mask: + - TabletopMachineMask + layer: + - WallLayer + - type: SolutionContainerManager + solutions: + collector: + maxVol: 50 + - type: CP14SolutionTemperature + - type: DrainableSolution + solution: collector + - type: ExaminableSolution + solution: collector + - type: MixableSolution + solution: collector + - type: RefillableSolution + solution: collector + - type: DrawableSolution + solution: collector + - type: DumpableSolution + solution: collector + - type: CP14MagicEnergyAmbientSound + - type: AmbientSound + enabled: false + range: 6 + volume: 3 + sound: + path: /Audio/Ambience/Objects/gravity_gen_hum.ogg + - type: Appearance + - type: SolutionContainerVisuals + maxFillLevels: 7 + fillBaseName: liq- + - type: CP14MagicEnergyDraw + energy: -1 + delay: 1 + - type: CP14MagicEssenceCollector \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Reagents/magic-essence.yml b/Resources/Prototypes/_CP14/Reagents/magic-essence.yml new file mode 100644 index 0000000000..9c59d0259f --- /dev/null +++ b/Resources/Prototypes/_CP14/Reagents/magic-essence.yml @@ -0,0 +1,103 @@ +- type: reagent + id: CP14EssenceEarth + name: cp14-reagent-name-essence-earth + desc: cp14-reagent-desc-essence-earth + group: CP14MagicEssence + flavor: CP14Bitterly + recognizable: true + physicalDesc: cp14-reagent-physical-desc-sparkling + color: "#70533f" + tileReactions: + - !type:CreateEntityTileReaction + entity: CP14EssenceEarth + +- type: reagent + id: CP14EssenceFire + name: cp14-reagent-name-essence-fire + desc: cp14-reagent-desc-essence-fire + group: CP14MagicEssence + flavor: CP14Bitterly + recognizable: true + physicalDesc: cp14-reagent-physical-desc-sparkling + color: "#d9741c" + tileReactions: + - !type:CreateEntityTileReaction + entity: CP14EssenceFire + +- type: reagent + id: CP14EssenceLife + name: cp14-reagent-name-essence-life + desc: cp14-reagent-desc-essence-life + group: CP14MagicEssence + flavor: CP14Bitterly + recognizable: true + physicalDesc: cp14-reagent-physical-desc-sparkling + color: "#89e04f" + tileReactions: + - !type:CreateEntityTileReaction + entity: CP14EssenceLife + +- type: reagent + id: CP14EssenceWater + name: cp14-reagent-name-essence-water + desc: cp14-reagent-desc-essence-water + group: CP14MagicEssence + flavor: CP14Bitterly + recognizable: true + physicalDesc: cp14-reagent-physical-desc-sparkling + color: "#1c94d9" + tileReactions: + - !type:CreateEntityTileReaction + entity: CP14EssenceWater + +- type: reagent + id: CP14EssenceLight + name: cp14-reagent-name-essence-light + desc: cp14-reagent-desc-essence-light + group: CP14MagicEssence + flavor: CP14Bitterly + recognizable: true + physicalDesc: cp14-reagent-physical-desc-sparkling + color: "#ba97b8" + tileReactions: + - !type:CreateEntityTileReaction + entity: CP14EssenceLight + +- type: reagent + id: CP14EssenceDimension + name: cp14-reagent-name-essence-dimension + desc: cp14-reagent-desc-essence-dimension + group: CP14MagicEssence + flavor: CP14Bitterly + recognizable: true + physicalDesc: cp14-reagent-physical-desc-sparkling + color: "#391c57" + tileReactions: + - !type:CreateEntityTileReaction + entity: CP14EssenceDimension + +- type: reagent + id: CP14EssenceDeath + name: cp14-reagent-name-essence-death + desc: cp14-reagent-desc-essence-death + group: CP14MagicEssence + flavor: CP14Bitterly + recognizable: true + physicalDesc: cp14-reagent-physical-desc-sparkling + color: "#55877a" + tileReactions: + - !type:CreateEntityTileReaction + entity: CP14EssenceDeath + +- type: reagent + id: CP14EssenceElectric + name: cp14-reagent-name-essence-electric + desc: cp14-reagent-desc-essence-electric + group: CP14MagicEssence + flavor: CP14Bitterly + recognizable: true + physicalDesc: cp14-reagent-physical-desc-sparkling + color: "#caed72" + tileReactions: + - !type:CreateEntityTileReaction + entity: CP14EssenceElectric \ No newline at end of file diff --git a/Resources/Textures/_CP14/Structures/Specific/Thaumaturgy/essence_collector.rsi/active.png b/Resources/Textures/_CP14/Structures/Specific/Thaumaturgy/essence_collector.rsi/active.png new file mode 100644 index 0000000000000000000000000000000000000000..59d48728120652a82fa1c81495f5cb566c6ec47f GIT binary patch literal 2271 zcmV<52q5=~P)Px-nMp)JRCt{2oZoL8)fLA-eeGtx{nK36L~2wiDaCw-4u>%-zY%dgs?p*Et_) z74PiK-ZS@}^S$TXI~#Bu$8j9TaUACsBI()yry3!IgwgQ}Ns@%F>^bNh)c$q>m;rK} z4`2?M*W&@$0|wJ_%4r8gmjS44&jCHs{vH6sSr>u%t__$Kx^ln*=SzSEps&aGfGtwT zoQ6GS6TlD{gb-Q@h@t=tAq@4Dw#OyWwhyTtLtsbk2$795mm#XIWBhZSAcIKeLoB#>;l)+ z7CUd6{!xq40uU*kIb|Q|m;ta2>?BFj>MYa&g)@K-a@(a;?0mN)<8~YH4gK8gYMZzp z77+pX6j-JGazSVjW=U%-RF-9)8H2q6}trp6~h?)xxs61ZRAZvmHq{{a64 z*3jBKgwUjK#HH0y;Jd)9(dW+qe+RwNjHVwZXLU;mE!pbT*sR>9B+Tivh+t!G(pN56XoNtHp z-sht4-`3YI;`ptIWC)=L90Be`g8me6AF!deZINaOO{c*LB6_R9y^IFmbHF*^+lY_O zYullz6g)|ipz93_$b|Q5=9DwQPl2xy{}|G)7$0Xe_|1ls$aqXlp#bCr{t}|VePkfs z&$;Y%;7Q;s8W4btGh6U4=-+n&F907zmsC>0NlYOPLYs+h2cAOuCxXXIRuWZ7rnDjO;|g@w-C^AC(#F+`2Ieew*zr)jtOO4GI2V z6@2G1sqwof%ky#YuhWxEU=37 z-4f|`T_utv2}zO+wf%MA5&h_8;4R=$L=bI(uCMJbl8QlHmXO-_waoF;YEz%lGAYhd z>SF#_6nsmhK6gpaZzBaCAel}cTZrJ@Se$IJJpH8L_<3MXeRd*>7LKguT0)$81^6rQ zA@Bp>38e1IV;f1o=JZu{AhHWi@hbRH;9CXP6{%xsG9omue_J4AQ?S!WN_-b0mTO2o z*yI9T(6)b@IsOVFJ|+N*NNsF3H-Xjvd6?+OWm1!Aui;2%1K}9bKkw-K?@%KR&8z1r&TviueMhM|7@FQeRi>}9ndmqA?_+w-7UGnp>%lQkpA`w5 z-FHB?=GGDCY^oNGXTR5@;7tj{m#`=20NpmV^RdhEwYKP@BoeGTdVP0}%_ zg)Z=3MSS`)>2nF^kgU%#umKIMz35Ixu86A$dmq%*=Hk;T! zztuMbJ=RC++`cw;4e4x<4mzsuceREsbMyN?e%aJs=olL;{f{$%9+HMX%xECIh-{60 zMJkRa0DBegKdsUC+AcuW-qQD8 z(7rkMlD2JY9DQx`te*O$w*5Ymfn7qzW2Xr_GWOW`#HE%^RPlpKrL%!?!5^KI_h451 zP?Tk4h2v1zK=kD!Ul`v=G$@P647rNje7tB@*$KLSys|)qKpgN6BoGdhrl*(D?LZ>2 ztYULc-`)^YWc_1A_>ft@)#ue!1ne1v9?`>J+Fq``O$Aa;&=nVWM!2}+&on`po4_tdq&4qdf7ZKm-X@>`ZBoT%=1 z)S1N-E#T|4U)P4NXzJb_r!%@1psw3@9LI4S$8j9TaU92S9LI4S$8j9TaU92S9LI4S z$8j9Tab^#H7Ts}b(8SL{ySBk`Ze=`v9LI4E8m{aq-WSf)ai>f1zL;J7e*|(IXZG+} tC&l~1aU92S9LI4S$8j9TaU93V<$t9!ideZa8My!e002ovPDHLkV1l5aRvZ8T literal 0 HcmV?d00001 diff --git a/Resources/Textures/_CP14/Structures/Specific/Thaumaturgy/essence_collector.rsi/base.png b/Resources/Textures/_CP14/Structures/Specific/Thaumaturgy/essence_collector.rsi/base.png new file mode 100644 index 0000000000000000000000000000000000000000..6f809d3b291d144081031ffb73bd6565ff623ac5 GIT binary patch literal 960 zcmV;x13&zUP)Px&dPzhys0slJ;Eq$D>=Z{icw*dgywV993fL?Lk1}GbgTQ@3>&Okn(%fO|2 z>%TRSmn>J|P&A+=$yTE&#d$RjSp(F_07uzaRRe0EY%Hje0ok`8ZJ=|A0|4fczetIE zHJSpmVNx_8aO`nvGl2Xgm=-Q+1Hpd9$O)JY6AT;M+FZzR9@F;pKIVG8oWtYZ`^Nz& z0XqB~0IV;DaqUS+llhzt%=LOX0H6~r=;D>*eSKUlFl*T7|My zc!ro*ji&e{l-LHvbAXhO!{bIQo)*OEA3r63#9%C*2H7U15(H%40A*vrY?wgV*sPO` zhycLHbawL9mYRim`>B(BbbHSdE=EF2{tX2Ci%5;HFNQG~Y{%&EZAo$Q*y!+W30RX5tcP4A;w@+ULvjCs00*3-LW$LrLO~N+Vt4wfs z+=37R854v7JeXWi<=0e(v3MHitNHAv6D+V8#=Y^CtToSpEOGT};c=+@fLKUrEN=#y z1Cvp483KT>!47Mg8P+m0d<}MCoUCgOOh&bEYd#4bU5~MAESdTc=<*51s`r}=F?XTo z>6Bq7e)iru^-fBH)i)5I^>fCVu6mN$ za#4y+8Fn&0<4jk5eAcgetyeUViHvjIuwX32pmsTc>&NGPB#T{ zE3!8vP0gsy<>b7sO4zIT_Dm;OwA{HO2s%7&yq#Xknh!;icoliC%CD&k2oX8&Ly;u9 zv7ZXvupkskLcB(cIFLgXkk%@0%?BG0onSS!VBKhQIXQCI%S6UGYGi6YbpP};Tt0000PyJDaPU;cPEB*=VV?2IW?Xxjv*1P zZ!Z~g9dZzGduYEba8Kig32q#6NzBuxSsswf)SqM~nLZ1$wdT8a(B$k^?q0d?lWhc_HQfHXqR_&7(yj{;*KaV#&3AqOe$~HA qv-)>0&0Kf>Q}N%1+wT~Gy5pqTX3AWj=-ed@GRxD|&t;ucLK6U0a!i5% literal 0 HcmV?d00001 diff --git a/Resources/Textures/_CP14/Structures/Specific/Thaumaturgy/essence_collector.rsi/liq-1.png b/Resources/Textures/_CP14/Structures/Specific/Thaumaturgy/essence_collector.rsi/liq-1.png new file mode 100644 index 0000000000000000000000000000000000000000..ac8e56ede4256bf5cb6d9c65dad68495661b8bc9 GIT binary patch literal 143 zcmeAS@N?(olHy`uVBq!ia0vp^3P5bY!3HD?)>PyJDaPU;cPEB*=VV?2Ii8*_jv*1P zZ_hjOG8pnOAGDRw?Eb(mD5lvn?V#t|<@4vRPxWT=oTLIow%_hf*;UQx!opDO$8b#I nc=hqtRZ;boX>oIba+?{Ksc|#kx+1O$G?c;9)z4*}Q$iB}yJsvK literal 0 HcmV?d00001 diff --git a/Resources/Textures/_CP14/Structures/Specific/Thaumaturgy/essence_collector.rsi/liq-2.png b/Resources/Textures/_CP14/Structures/Specific/Thaumaturgy/essence_collector.rsi/liq-2.png new file mode 100644 index 0000000000000000000000000000000000000000..e6c2267a214a78ce97b227b3b2fb0c102a24c46e GIT binary patch literal 175 zcmeAS@N?(olHy`uVBq!ia0vp^3P5bY!3HD?)>PyJDaPU;cPEB*=VV?2Ihmd=jv*1P zZ!hfTJ)j`aoH$ukAbG=ofteH{7cxNerY$lQD9vpsKZPyJDaPU;cPEB*=VV?2IVqkljv*1P zZ!dXs9Z=wLy*T|*+ou1nJ9r93UtSUO>gDizC%M0dVW8RF^c=d#Wzp$Py*BSB*T literal 0 HcmV?d00001 diff --git a/Resources/Textures/_CP14/Structures/Specific/Thaumaturgy/essence_collector.rsi/liq-4.png b/Resources/Textures/_CP14/Structures/Specific/Thaumaturgy/essence_collector.rsi/liq-4.png new file mode 100644 index 0000000000000000000000000000000000000000..f4b0071846a8ae20a9717e909eba6b4325f5ee48 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^3P5bY!3HD?)>PyJDaPU;cPEB*=VV?2ImwgTe~DWM4fU<)|t literal 0 HcmV?d00001 diff --git a/Resources/Textures/_CP14/Structures/Specific/Thaumaturgy/essence_collector.rsi/liq-5.png b/Resources/Textures/_CP14/Structures/Specific/Thaumaturgy/essence_collector.rsi/liq-5.png new file mode 100644 index 0000000000000000000000000000000000000000..87beefa80cbd5d42d0929844ccf871e00a7db638 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^3P5bY!3HD?)>PyJDaPU;cPEB*=VV?2ImwPyJDaPU;cPEB*=VV?2IXRv#jv*1P zZ?AfD9Z=wL4b;6m;di{tG{tp~N<&__a|n71zLPxugqO#Y6R7yW`A;vLJ$IR&s@x&I zfz9~x=jY!&Ce7Sgy4+T1(Y0Su`{R6FG!C3#IB&L9nsFcBg{av<#iDi!_qwJAS$HvQ an8tj;R-;6;JnI$ECPyJDaPU;cPEB*=VV?2Io+Nvjv*1P zZ?8IXF)Q-4K8&d1?0@)|e`2(R&C%D3dw?DC+|)#ZLd~yahbD^ zwb<89>%h5&skfKj<@oTDA-TspEA3@}a_P~i>>4+Q5AkvjEzQb0mv;mLZDH_q^>bP0 Hl+XkK;$c$b literal 0 HcmV?d00001 diff --git a/Resources/Textures/_CP14/Structures/Specific/Thaumaturgy/essence_collector.rsi/meta.json b/Resources/Textures/_CP14/Structures/Specific/Thaumaturgy/essence_collector.rsi/meta.json new file mode 100644 index 0000000000..db62db3d0e --- /dev/null +++ b/Resources/Textures/_CP14/Structures/Specific/Thaumaturgy/essence_collector.rsi/meta.json @@ -0,0 +1,53 @@ +{ + "version": 1, + "license": "All right reserved", + "copyright": "Created by TheShuEd for CrystallEdge", + "size": { + "x": 32, + "y": 48 + }, + "states": [ + { + "name": "base" + }, + { + "name": "active", + "delays": [ + [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2 + ] + ] + }, + { + "name": "crystal" + }, + { + "name": "liq-1" + }, + { + "name": "liq-2" + }, + { + "name": "liq-3" + }, + { + "name": "liq-4" + }, + { + "name": "liq-5" + }, + { + "name": "liq-6" + }, + { + "name": "liq-7" + } + ] +} \ No newline at end of file