From 2358bc46d6f8d4ef71ca707e205dc55eda0155be Mon Sep 17 00:00:00 2001 From: Ed <96445749+TheShuEd@users.noreply.github.com> Date: Wed, 30 Apr 2025 17:28:38 +0300 Subject: [PATCH] Torches + Cotton (#1246) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * torches add, wallmount crystals deletion * cotton * Update buy.yml * craftis * delete elemental quartz * energy crystal resprite and rewamp * fix * Update misc.yml * а * delete rituals * riat * Update migration.yml * Delete CP14ClientRitualSystem.cs * Update statues.yml * fix * Update wallmount_lamp.yml * fix --- .../MagicRituals/CP14ClientRitualSystem.cs | 35 --- .../Tests/_CP14/CP14RitualTest.cs | 53 ----- .../MagicEnergy/CP14MagicEnergySystem.Draw.cs | 2 +- .../CP14RitualTriggerSystem.Sacrifice.cs | 86 -------- .../CP14RitualTriggerSystem.Timer.cs | 43 ---- .../CP14RitualTriggerSystem.Voice.cs | 36 ---- .../CP14RitualTriggerSystem.cs | 28 --- .../CP14RitualSystem.Describer.cs | 167 --------------- .../MagicRituals/CP14RitualSystem.Visuals.cs | 22 -- .../_CP14/MagicRituals/CP14RitualSystem.cs | 201 ------------------ .../CP14PaperPhaseDescriberComponent.cs | 31 --- .../Fireplace/CP14FireplaceComponent.cs | 5 +- .../Fireplace/CP14FireplaceSystem.cs | 8 +- .../_CP14/MagicRitual/Actions/AddOrb.cs | 44 ---- .../MagicRitual/Actions/ApplyEntityEffect.cs | 75 ------- .../MagicRitual/Actions/CP14RitualAction.cs | 19 -- .../_CP14/MagicRitual/Actions/ConsumeOrb.cs | 41 ---- .../MagicRitual/Actions/ConsumeResource.cs | 104 --------- .../MagicRitual/Actions/EditStability.cs | 27 --- .../_CP14/MagicRitual/Actions/SpawnEntity.cs | 44 ---- .../MagicRitual/CP14MagicRitualComponent.cs | 37 ---- .../MagicRitual/CP14MagicRitualEvents.cs | 86 -------- .../CP14MagicRitualOrbComponent.cs | 14 -- .../CP14MagicRitualPhaseComponent.cs | 41 ---- .../MagicRitual/CP14SharedRitualSystem.cs | 70 ------ .../Requirements/CP14RitualRequirement.cs | 19 -- .../MagicRitual/Requirements/RequiredOrbs.cs | 66 ------ .../Requirements/RequiredResource.cs | 113 ---------- .../Requirements/RequiredStability.cs | 37 ---- .../MagicRitualTrigger/CP14RitualTrigger.cs | 17 -- .../CP14SharedRitualTriggerSystem.cs | 5 - .../CP14RitualSacrificeSpeciesTrigger.cs | 34 --- ...4RitualSacrificeSpeciesTriggerComponent.cs | 8 - .../CP14RitualSacrificeWhitelistTrigger.cs | 34 --- ...itualSacrificeWhitelistTriggerComponent.cs | 8 - .../Triggers/CP14RitualTimerTrigger.cs | 28 --- .../CP14RitualTimerTriggerComponent.cs | 8 - .../Triggers/CP14RitualVoiceTrigger.cs | 28 --- .../CP14RitualVoiceTriggerComponent.cs | 8 - .../Catalog/Cargo/Store/SpiceStream/buy.yml | 6 +- .../Cargo/Store/Sylphoria/sell_special.yml | 20 -- .../_CP14/Catalog/Fills/closets.yml | 4 +- .../Prototypes/_CP14/Catalog/Fills/crates.yml | 2 +- .../_CP14/Entities/Mobs/NPC/Slimes/fire.yml | 2 - .../_CP14/Entities/Mobs/NPC/Slimes/ice.yml | 2 - .../_CP14/Entities/Objects/Flora/farm.yml | 27 ++- .../_CP14/Entities/Objects/Materials/misc.yml | 29 +++ .../Objects/Specific/Farming/seeds.yml | 13 ++ .../Objects/Specific/Thaumaturgy/crystal.yml | 47 +--- .../_CP14/Entities/Objects/Tools/torch.yml | 41 +--- .../Entities/Objects/ritual_describer.yml | 25 --- .../Entities/Ritual/Graph/neutral_cluster.yml | 55 ----- .../_CP14/Entities/Ritual/basic.yml | 23 -- .../Prototypes/_CP14/Entities/Ritual/orbs.yml | 39 ---- .../Structures/Decorations/statues.yml | 32 --- .../Structures/Flora/Crystal/elemental.yml | 169 +-------------- .../Structures/Flora/Crystal/shards.yml | 102 --------- .../Flora/Gatherable/Farm/cotton.yml | 26 +++ .../Entities/Structures/Furniture/torch.yml | 184 ++++++++++++++++ .../Structures/Furniture/wallmount.yml | 84 -------- .../Structures/Furniture/wallmount_lamp.yml | 8 +- .../_CP14/Entities/Structures/crystal.yml | 135 ------------ .../Demiplane/Modifiers/Reward/crystals.yml | 144 +------------ .../Graphs/Furniture/lighting.yml | 4 +- .../Graphs/Furniture/mannequin.yml | 4 +- .../Graphs/Furniture/orders_border.yml | 2 +- .../{Wallmount => Furniture}/lighting.yml | 24 ++- .../_CP14/Recipes/Construction/structures.yml | 20 +- .../Crafting/Graphs/improvised/torch.yml | 2 +- .../_CP14/Recipes/Workbench/Anvil/misc.yml | 13 ++ .../Recipes/Workbench/CookingTable/seeds.yml | 15 +- .../Recipes/Workbench/Workbench/misc.yml | 2 +- .../_CP14/Recipes/Workbench/furnace.yml | 5 +- .../_CP14/Recipes/Workbench/sewing_table.yml | 10 + .../_CP14/Roles/Jobs/Artisan/alchemist.yml | 4 +- .../_CP14/Roles/Jobs/Artisan/apprentice.yml | 4 +- .../_CP14/Roles/Jobs/Artisan/blacksmith.yml | 4 +- .../_CP14/Roles/Jobs/Artisan/innkeeper.yml | 2 +- .../_CP14/Roles/Jobs/Mercenary/adventurer.yml | 4 +- .../Roles/Jobs/Mercenary/guildmaster.yml | 2 +- .../_CP14/Roles/Jobs/Traders/merchant.yml | 4 +- .../JobsTabs/AlchemistTabs/Alchemy.xml | 8 - .../JobsTabs/AlchemistTabs/Alchemy.xml | 8 - .../Objects/Flora/Farm/cotton.rsi/base1.png | Bin 0 -> 363 bytes .../Objects/Flora/Farm/cotton.rsi/base2.png | Bin 0 -> 356 bytes .../Objects/Flora/Farm/cotton.rsi/base3.png | Bin 0 -> 384 bytes .../Objects/Flora/Farm/cotton.rsi/meta.json | 20 ++ .../Specific/Farming/seeds.rsi/cotton.png | Bin 0 -> 153 bytes .../Specific/Farming/seeds.rsi/meta.json | 3 + .../Thaumaturgy/crystal.rsi/medium.png | Bin 0 -> 380 bytes .../Thaumaturgy/crystal.rsi/medium1.png | Bin 283 -> 0 bytes .../Thaumaturgy/crystal.rsi/medium2.png | Bin 276 -> 0 bytes .../Thaumaturgy/crystal.rsi/medium3.png | Bin 267 -> 0 bytes .../crystal.rsi/medium_connector.png | Bin 204 -> 316 bytes .../Thaumaturgy/crystal.rsi/meta.json | 22 +- .../Thaumaturgy/crystal.rsi/small1.png | Bin 218 -> 0 bytes .../Thaumaturgy/crystal.rsi/small2.png | Bin 206 -> 0 bytes .../Thaumaturgy/crystal.rsi/small3.png | Bin 275 -> 0 bytes .../crystal.rsi/small_connector.png | Bin 196 -> 0 bytes .../Flora/Farm/cotton.rsi/grow-1.png | Bin 0 -> 511 bytes .../Flora/Farm/cotton.rsi/grow-2.png | Bin 0 -> 717 bytes .../Flora/Farm/cotton.rsi/grow-3.png | Bin 0 -> 1064 bytes .../Flora/Farm/cotton.rsi/grow-4.png | Bin 0 -> 1561 bytes .../Flora/Farm/cotton.rsi/grow-5.png | Bin 0 -> 1924 bytes .../Flora/Farm/cotton.rsi/grow-6.png | Bin 0 -> 1186 bytes .../Flora/Farm/cotton.rsi/meta.json | 29 +++ .../Furniture/torch_floor.rsi/base.png | Bin 0 -> 460 bytes .../Furniture/torch_floor.rsi/burned.png | Bin 0 -> 348 bytes .../Furniture/torch_floor.rsi/fire.png | Bin 0 -> 998 bytes .../Furniture/torch_floor.rsi/meta.json | 27 +++ .../TODO - DELETE THIS WALLMOUNT FOLDER.txt | 1 + .../Wallmount/wallmount_32icon.rsi/meta.json | 14 -- .../Wallmount/wallmount_32icon.rsi/torch.png | Bin 497 -> 0 bytes .../wallmount_crystal.rsi/crystal1.png | Bin 1007 -> 0 bytes .../wallmount_crystal.rsi/crystal2.png | Bin 1078 -> 0 bytes .../wallmount_crystal.rsi/crystal3.png | Bin 716 -> 0 bytes .../Wallmount/wallmount_crystal.rsi/meta.json | 23 -- .../Wallmount/wallmount_decor.rsi/boards.png | Bin 820 -> 0 bytes .../Wallmount/wallmount_decor.rsi/boards2.png | Bin 886 -> 0 bytes .../Wallmount/wallmount_decor.rsi/boards3.png | Bin 619 -> 0 bytes .../Wallmount/wallmount_decor.rsi/boards4.png | Bin 616 -> 0 bytes .../Wallmount/wallmount_decor.rsi/meta.json | 43 ---- .../Wallmount/wallmount_decor.rsi/vines.png | Bin 1025 -> 0 bytes .../Wallmount/wallmount_decor.rsi/web.png | Bin 450 -> 0 bytes .../Wallmount/wallmount_decor.rsi/web2.png | Bin 511 -> 0 bytes .../Wallmount/wallmount_decor.rsi/web3.png | Bin 511 -> 0 bytes Resources/migration.yml | 77 +++---- 127 files changed, 520 insertions(+), 2831 deletions(-) delete mode 100644 Content.Client/_CP14/MagicRituals/CP14ClientRitualSystem.cs delete mode 100644 Content.IntegrationTests/Tests/_CP14/CP14RitualTest.cs delete mode 100644 Content.Server/_CP14/MagicRitualTrigger/CP14RitualTriggerSystem.Sacrifice.cs delete mode 100644 Content.Server/_CP14/MagicRitualTrigger/CP14RitualTriggerSystem.Timer.cs delete mode 100644 Content.Server/_CP14/MagicRitualTrigger/CP14RitualTriggerSystem.Voice.cs delete mode 100644 Content.Server/_CP14/MagicRitualTrigger/CP14RitualTriggerSystem.cs delete mode 100644 Content.Server/_CP14/MagicRituals/CP14RitualSystem.Describer.cs delete mode 100644 Content.Server/_CP14/MagicRituals/CP14RitualSystem.Visuals.cs delete mode 100644 Content.Server/_CP14/MagicRituals/CP14RitualSystem.cs delete mode 100644 Content.Server/_CP14/MagicRituals/Components/CP14PaperPhaseDescriberComponent.cs delete mode 100644 Content.Shared/_CP14/MagicRitual/Actions/AddOrb.cs delete mode 100644 Content.Shared/_CP14/MagicRitual/Actions/ApplyEntityEffect.cs delete mode 100644 Content.Shared/_CP14/MagicRitual/Actions/CP14RitualAction.cs delete mode 100644 Content.Shared/_CP14/MagicRitual/Actions/ConsumeOrb.cs delete mode 100644 Content.Shared/_CP14/MagicRitual/Actions/ConsumeResource.cs delete mode 100644 Content.Shared/_CP14/MagicRitual/Actions/EditStability.cs delete mode 100644 Content.Shared/_CP14/MagicRitual/Actions/SpawnEntity.cs delete mode 100644 Content.Shared/_CP14/MagicRitual/CP14MagicRitualComponent.cs delete mode 100644 Content.Shared/_CP14/MagicRitual/CP14MagicRitualEvents.cs delete mode 100644 Content.Shared/_CP14/MagicRitual/CP14MagicRitualOrbComponent.cs delete mode 100644 Content.Shared/_CP14/MagicRitual/CP14MagicRitualPhaseComponent.cs delete mode 100644 Content.Shared/_CP14/MagicRitual/CP14SharedRitualSystem.cs delete mode 100644 Content.Shared/_CP14/MagicRitual/Requirements/CP14RitualRequirement.cs delete mode 100644 Content.Shared/_CP14/MagicRitual/Requirements/RequiredOrbs.cs delete mode 100644 Content.Shared/_CP14/MagicRitual/Requirements/RequiredResource.cs delete mode 100644 Content.Shared/_CP14/MagicRitual/Requirements/RequiredStability.cs delete mode 100644 Content.Shared/_CP14/MagicRitualTrigger/CP14RitualTrigger.cs delete mode 100644 Content.Shared/_CP14/MagicRitualTrigger/CP14SharedRitualTriggerSystem.cs delete mode 100644 Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualSacrificeSpeciesTrigger.cs delete mode 100644 Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualSacrificeSpeciesTriggerComponent.cs delete mode 100644 Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualSacrificeWhitelistTrigger.cs delete mode 100644 Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualSacrificeWhitelistTriggerComponent.cs delete mode 100644 Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualTimerTrigger.cs delete mode 100644 Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualTimerTriggerComponent.cs delete mode 100644 Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualVoiceTrigger.cs delete mode 100644 Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualVoiceTriggerComponent.cs create mode 100644 Resources/Prototypes/_CP14/Entities/Objects/Materials/misc.yml delete mode 100644 Resources/Prototypes/_CP14/Entities/Objects/ritual_describer.yml delete mode 100644 Resources/Prototypes/_CP14/Entities/Ritual/Graph/neutral_cluster.yml delete mode 100644 Resources/Prototypes/_CP14/Entities/Ritual/basic.yml delete mode 100644 Resources/Prototypes/_CP14/Entities/Ritual/orbs.yml delete mode 100644 Resources/Prototypes/_CP14/Entities/Structures/Flora/Crystal/shards.yml create mode 100644 Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/cotton.yml create mode 100644 Resources/Prototypes/_CP14/Entities/Structures/Furniture/torch.yml delete mode 100644 Resources/Prototypes/_CP14/Entities/Structures/crystal.yml rename Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Structures/{Wallmount => Furniture}/lighting.yml (61%) create mode 100644 Resources/Textures/_CP14/Objects/Flora/Farm/cotton.rsi/base1.png create mode 100644 Resources/Textures/_CP14/Objects/Flora/Farm/cotton.rsi/base2.png create mode 100644 Resources/Textures/_CP14/Objects/Flora/Farm/cotton.rsi/base3.png create mode 100644 Resources/Textures/_CP14/Objects/Flora/Farm/cotton.rsi/meta.json create mode 100644 Resources/Textures/_CP14/Objects/Specific/Farming/seeds.rsi/cotton.png create mode 100644 Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/medium.png delete mode 100644 Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/medium1.png delete mode 100644 Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/medium2.png delete mode 100644 Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/medium3.png delete mode 100644 Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/small1.png delete mode 100644 Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/small2.png delete mode 100644 Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/small3.png delete mode 100644 Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/small_connector.png create mode 100644 Resources/Textures/_CP14/Structures/Flora/Farm/cotton.rsi/grow-1.png create mode 100644 Resources/Textures/_CP14/Structures/Flora/Farm/cotton.rsi/grow-2.png create mode 100644 Resources/Textures/_CP14/Structures/Flora/Farm/cotton.rsi/grow-3.png create mode 100644 Resources/Textures/_CP14/Structures/Flora/Farm/cotton.rsi/grow-4.png create mode 100644 Resources/Textures/_CP14/Structures/Flora/Farm/cotton.rsi/grow-5.png create mode 100644 Resources/Textures/_CP14/Structures/Flora/Farm/cotton.rsi/grow-6.png create mode 100644 Resources/Textures/_CP14/Structures/Flora/Farm/cotton.rsi/meta.json create mode 100644 Resources/Textures/_CP14/Structures/Furniture/torch_floor.rsi/base.png create mode 100644 Resources/Textures/_CP14/Structures/Furniture/torch_floor.rsi/burned.png create mode 100644 Resources/Textures/_CP14/Structures/Furniture/torch_floor.rsi/fire.png create mode 100644 Resources/Textures/_CP14/Structures/Furniture/torch_floor.rsi/meta.json create mode 100644 Resources/Textures/_CP14/Structures/Wallmount/TODO - DELETE THIS WALLMOUNT FOLDER.txt delete mode 100644 Resources/Textures/_CP14/Structures/Wallmount/wallmount_32icon.rsi/meta.json delete mode 100644 Resources/Textures/_CP14/Structures/Wallmount/wallmount_32icon.rsi/torch.png delete mode 100644 Resources/Textures/_CP14/Structures/Wallmount/wallmount_crystal.rsi/crystal1.png delete mode 100644 Resources/Textures/_CP14/Structures/Wallmount/wallmount_crystal.rsi/crystal2.png delete mode 100644 Resources/Textures/_CP14/Structures/Wallmount/wallmount_crystal.rsi/crystal3.png delete mode 100644 Resources/Textures/_CP14/Structures/Wallmount/wallmount_crystal.rsi/meta.json delete mode 100644 Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/boards.png delete mode 100644 Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/boards2.png delete mode 100644 Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/boards3.png delete mode 100644 Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/boards4.png delete mode 100644 Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/meta.json delete mode 100644 Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/vines.png delete mode 100644 Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/web.png delete mode 100644 Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/web2.png delete mode 100644 Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/web3.png diff --git a/Content.Client/_CP14/MagicRituals/CP14ClientRitualSystem.cs b/Content.Client/_CP14/MagicRituals/CP14ClientRitualSystem.cs deleted file mode 100644 index 92db60ba09..0000000000 --- a/Content.Client/_CP14/MagicRituals/CP14ClientRitualSystem.cs +++ /dev/null @@ -1,35 +0,0 @@ -using Content.Shared._CP14.MagicRitual; -using Robust.Client.GameObjects; - -namespace Content.Server._CP14.MagicRituals; - -public partial class CP14ClientRitualSystem : CP14SharedRitualSystem -{ - [Dependency] private readonly SharedAppearanceSystem _appearance = default!; - - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnAppearanceChange); - } - - private void OnAppearanceChange(Entity ent, ref AppearanceChangeEvent args) - { - if (args.Sprite == null) - return; - - if (!args.Sprite.LayerMapTryGet(ent.Comp.RitualLayerMap, out var ritualLayer)) - return; - - if (_appearance.TryGetData(ent, RitualVisuals.Color, out var ritualColor, args.Component)) - { - args.Sprite.LayerSetColor(ritualLayer, ritualColor); - } - - if (_appearance.TryGetData(ent, RitualVisuals.Enabled, out var enabled, args.Component)) - { - args.Sprite.LayerSetVisible(ritualLayer, enabled); - } - } -} diff --git a/Content.IntegrationTests/Tests/_CP14/CP14RitualTest.cs b/Content.IntegrationTests/Tests/_CP14/CP14RitualTest.cs deleted file mode 100644 index 3a61bbe320..0000000000 --- a/Content.IntegrationTests/Tests/_CP14/CP14RitualTest.cs +++ /dev/null @@ -1,53 +0,0 @@ -using Content.Shared._CP14.MagicRitual; -using Robust.Shared.GameObjects; -using Robust.Shared.Prototypes; - -namespace Content.IntegrationTests.Tests._CP14; - -#nullable enable - -[TestFixture] -public sealed class CP14RitualTest -{ - - /// - /// States that all edges of the ritual phase have triggers. - /// - [Test] - public async Task RitualHasAllTriggersTest() - { - await using var pair = await PoolManager.GetServerClient(); - var server = pair.Server; - - var compFactory = server.ResolveDependency(); - var protoManager = server.ResolveDependency(); - - await server.WaitAssertion(() => - { - Assert.Multiple(() => - { - foreach (var proto in protoManager.EnumeratePrototypes()) - { - if (!proto.TryGetComponent(out CP14MagicRitualPhaseComponent? phase, compFactory)) - continue; - - if (phase.DeadEnd) - { - Assert.That(phase.Edges.Count == 0, $"{proto} is a ritual node, but has no paths to other nodes. Either add deadEnd = true, or add paths to other nodes."); - } - else - { - Assert.That(phase.Edges.Count > 0, $"{proto} is a deadEnd ritual node, but has {phase.Edges.Count} edges! Remove all edges, or make it a non dead-end node"); - } - - foreach (var edge in phase.Edges) - { - Assert.That(edge.Triggers.Count > 0, $"{proto} is ritual node, but edge to {edge.Target} has no triggers and cannot be activated."); - } - } - }); - }); - - await pair.CleanReturnAsync(); - } -} diff --git a/Content.Server/_CP14/MagicEnergy/CP14MagicEnergySystem.Draw.cs b/Content.Server/_CP14/MagicEnergy/CP14MagicEnergySystem.Draw.cs index 3fd5710bf5..b4dc1f04b2 100644 --- a/Content.Server/_CP14/MagicEnergy/CP14MagicEnergySystem.Draw.cs +++ b/Content.Server/_CP14/MagicEnergy/CP14MagicEnergySystem.Draw.cs @@ -59,7 +59,7 @@ public partial class CP14MagicEnergySystem if (TryComp(uid, out var mobState) && !_mobState.IsAlive(uid, mobState)) continue; - draw.NextUpdateTime = _gameTiming.CurTime + TimeSpan.FromSeconds(draw.Delay); + draw.NextUpdateTime += TimeSpan.FromSeconds(draw.Delay); ChangeEnergy((uid, magicContainer), draw.Energy, out _, out _, draw.Safe); } diff --git a/Content.Server/_CP14/MagicRitualTrigger/CP14RitualTriggerSystem.Sacrifice.cs b/Content.Server/_CP14/MagicRitualTrigger/CP14RitualTriggerSystem.Sacrifice.cs deleted file mode 100644 index 0976c9a9cb..0000000000 --- a/Content.Server/_CP14/MagicRitualTrigger/CP14RitualTriggerSystem.Sacrifice.cs +++ /dev/null @@ -1,86 +0,0 @@ -using Content.Shared._CP14.MagicRitual; -using Content.Shared._CP14.MagicRitualTrigger.Triggers; -using Content.Shared.Humanoid; -using Content.Shared.Mobs; -using Content.Shared.Whitelist; - -namespace Content.Server._CP14.MagicRitualTrigger; - - -public partial class CP14RitualTriggerSystem -{ - [Dependency] private readonly EntityWhitelistSystem _whitelist = default!; - - private void InitializeSacrifice() - { - SubscribeLocalEvent(OnMobStateChanged); - } - - private void OnMobStateChanged(MobStateChangedEvent ev) - { - if (ev.NewMobState != MobState.Dead) - return; - - var deathXform = Transform(ev.Target); - - SacrificeSpecies(ev, deathXform); - SacrificeWhitelist(ev, deathXform); - } - - private void SacrificeSpecies(MobStateChangedEvent ev, TransformComponent deathXform) - { - - if (!TryComp(ev.Target, out var humanoid)) - return; - - var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out var sacrifice, out var phase, out var xform)) - { - if (!deathXform.Coordinates.TryDistance(EntityManager, xform.Coordinates, out var distance)) - continue; - - foreach (var trigger in sacrifice.Triggers) - { - if (distance > trigger.Range) - continue; - - if (trigger.Edge is null) - continue; - - if (trigger.Species != humanoid.Species) - continue; - - TriggerRitualPhase((uid, phase), trigger.Edge.Value.Target); - } - } - } - - private void SacrificeWhitelist(MobStateChangedEvent ev, TransformComponent deathXform) - { - var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out var sacrifice, out var phase, out var xform)) - { - if (!deathXform.Coordinates.TryDistance(EntityManager, xform.Coordinates, out var distance)) - continue; - - foreach (var trigger in sacrifice.Triggers) - { - if (distance > trigger.Range) - continue; - - if (trigger.Edge is null) - continue; - - var entProto = MetaData(ev.Target).EntityPrototype; - - if (entProto is null) - continue; - - if (!_whitelist.IsValid(trigger.Whitelist, ev.Target)) - continue; - - TriggerRitualPhase((uid, phase), trigger.Edge.Value.Target); - } - } - } -} diff --git a/Content.Server/_CP14/MagicRitualTrigger/CP14RitualTriggerSystem.Timer.cs b/Content.Server/_CP14/MagicRitualTrigger/CP14RitualTriggerSystem.Timer.cs deleted file mode 100644 index 63bccc6f43..0000000000 --- a/Content.Server/_CP14/MagicRitualTrigger/CP14RitualTriggerSystem.Timer.cs +++ /dev/null @@ -1,43 +0,0 @@ -using Content.Shared._CP14.MagicRitual; -using Content.Shared._CP14.MagicRitualTrigger.Triggers; -using Robust.Shared.Timing; - -namespace Content.Server._CP14.MagicRitualTrigger; - - -public partial class CP14RitualTriggerSystem -{ - [Dependency] private readonly IGameTiming _timing = default!; - - private void InitializeTimer() - { - SubscribeLocalEvent(OnMapInit); - } - - private void OnMapInit(Entity ent, ref MapInitEvent args) - { - foreach (var trigger in ent.Comp.Triggers) - { - trigger.TriggerTime = _timing.CurTime + TimeSpan.FromSeconds(trigger.Delay); - } - } - - private void UpdateTimer(float frameTime) - { - var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out var timer, out var phase)) - { - foreach (var trigger in timer.Triggers) - { - if (_timing.CurTime < trigger.TriggerTime || trigger.TriggerTime == TimeSpan.Zero) - continue; - - if (trigger.Edge is null) - continue; - - TriggerRitualPhase((uid, phase), trigger.Edge.Value.Target); - trigger.TriggerTime = TimeSpan.Zero; - } - } - } -} diff --git a/Content.Server/_CP14/MagicRitualTrigger/CP14RitualTriggerSystem.Voice.cs b/Content.Server/_CP14/MagicRitualTrigger/CP14RitualTriggerSystem.Voice.cs deleted file mode 100644 index 3cdd461067..0000000000 --- a/Content.Server/_CP14/MagicRitualTrigger/CP14RitualTriggerSystem.Voice.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Text.RegularExpressions; -using Content.Server.Speech; -using Content.Shared._CP14.MagicRitual; -using Content.Shared._CP14.MagicRitualTrigger.Triggers; - -namespace Content.Server._CP14.MagicRitualTrigger; - -public partial class CP14RitualTriggerSystem -{ - private void InitializeVoice() - { - SubscribeLocalEvent(OnListenEvent); - } - - private void OnListenEvent(Entity ent, ref ListenEvent args) - { - if (!TryComp(ent, out var phase)) - return; - - // Lowercase the phrase and remove all punctuation marks - var message = Regex.Replace(args.Message.Trim().ToLower(), @"[^\w\s]", ""); - - foreach (var trigger in ent.Comp.Triggers) - { - var triggerMessage = Regex.Replace(trigger.Message.ToLower(), @"[^\w\s]", ""); - - if (triggerMessage != message) - continue; - - if (trigger.Edge is null) - continue; - - TriggerRitualPhase((ent.Owner, phase), trigger.Edge.Value.Target); - } - } -} diff --git a/Content.Server/_CP14/MagicRitualTrigger/CP14RitualTriggerSystem.cs b/Content.Server/_CP14/MagicRitualTrigger/CP14RitualTriggerSystem.cs deleted file mode 100644 index 37852bbc2f..0000000000 --- a/Content.Server/_CP14/MagicRitualTrigger/CP14RitualTriggerSystem.cs +++ /dev/null @@ -1,28 +0,0 @@ -using Content.Shared._CP14.MagicRitual; -using Content.Shared._CP14.MagicRitualTrigger; -using Robust.Shared.Prototypes; - -namespace Content.Server._CP14.MagicRitualTrigger; - -public partial class CP14RitualTriggerSystem : CP14SharedRitualTriggerSystem -{ - public override void Initialize() - { - InitializeTimer(); - InitializeVoice(); - InitializeSacrifice(); - } - - public override void Update(float frameTime) - { - base.Update(frameTime); - - UpdateTimer(frameTime); - } - - private void TriggerRitualPhase(Entity ent, EntProtoId nextPhase) - { - var evConfirmed = new CP14RitualTriggerEvent(nextPhase); - RaiseLocalEvent(ent, evConfirmed); - } -} diff --git a/Content.Server/_CP14/MagicRituals/CP14RitualSystem.Describer.cs b/Content.Server/_CP14/MagicRituals/CP14RitualSystem.Describer.cs deleted file mode 100644 index da99773a6a..0000000000 --- a/Content.Server/_CP14/MagicRituals/CP14RitualSystem.Describer.cs +++ /dev/null @@ -1,167 +0,0 @@ -using System.Text; -using Content.Server._CP14.MagicRituals.Components; -using Content.Shared._CP14.MagicRitual; -using Content.Shared.Paper; -using Content.Shared.Verbs; -using Robust.Shared.Audio.Systems; -using Robust.Shared.Map; -using Robust.Shared.Prototypes; - -namespace Content.Server._CP14.MagicRituals; - -public sealed partial class CP14RitualSystem -{ - [Dependency] private readonly PaperSystem _paper = default!; - [Dependency] private readonly SharedAudioSystem _audio = default!; - private void InitializeDescriber() - { - - SubscribeLocalEvent>(OnDescriberVerbs); - SubscribeLocalEvent(OnMapInit); - SubscribeLocalEvent(OnShutdown); - } - - private void OnShutdown(Entity ent, ref ComponentShutdown args) - { - QueueDel(ent.Comp.CurrentPhase); - } - - private void OnMapInit(Entity ent, ref MapInitEvent args) - { - SetPhase(ent, ent.Comp.StartPhase); - } - - private void SetPhase(Entity ent, EntProtoId newProto, bool saveHistory = true) - { - var oldPhase = ent.Comp.CurrentPhase; - if (oldPhase is not null && saveHistory) - { - var oldProto = MetaData(oldPhase.Value).EntityPrototype; - if (oldProto is not null && oldProto != newProto) - { - ent.Comp.SearchHistory.Add(oldProto); - if (ent.Comp.SearchHistory.Count > 50) - ent.Comp.SearchHistory.RemoveAt(0); - } - } - QueueDel(oldPhase); - var newPhase = Spawn(newProto, MapCoordinates.Nullspace); - - ent.Comp.CurrentPhase = newPhase; - - if (!TryComp(ent, out var paper)) - return; - - _paper.SetContent((ent, paper), GetPhaseDescription(newPhase)); - _audio.PlayPvs(ent.Comp.UseSound, ent); - } - - private void BackPhase(Entity ent) - { - if (ent.Comp.SearchHistory.Count > 0) - SetPhase(ent, ent.Comp.SearchHistory[^1], false); - } - - private void OnDescriberVerbs(Entity ent, ref GetVerbsEvent args) - { - if (!args.CanAccess || !args.CanInteract) - return; - - if (!TryComp(ent.Comp.CurrentPhase, out var phase)) - return; - - if (!TryComp(ent.Comp.CurrentPhase.Value, out var phaseComp)) - return; - - foreach (var edge in phaseComp.Edges) - { - if (!_proto.TryIndex(edge.Target, out var indexedTarget)) - continue; - - Verb verb = new() - { - Text = Loc.GetString("cp14-ritual-describer-verb-item", ("name", indexedTarget.Name)), - Category = VerbCategory.CP14RitualBook, - Priority = 1, - Act = () => SetPhase(ent, edge.Target), - }; - args.Verbs.Add(verb); - } - - foreach (var hyperlink in ent.Comp.Hyperlinks) - { - if (!_proto.TryIndex(hyperlink, out var indexedTarget)) - continue; - - Verb verb = new() - { - Text = Loc.GetString("cp14-ritual-describer-verb-hyperlink", ("name", indexedTarget.Name)), - Category = VerbCategory.CP14RitualBook, - Priority = 0, - Act = () => SetPhase(ent, hyperlink), - }; - args.Verbs.Add(verb); - } - - if (ent.Comp.SearchHistory.Count > 0) - { - Verb verb = new() - { - Text = Loc.GetString("cp14-ritual-describer-verb-back"), - Category = VerbCategory.CP14RitualBook, - Priority = -1, - Act = () => BackPhase(ent), - }; - args.Verbs.Add(verb); - } - } - - private string GetPhaseDescription(EntityUid uid) - { - if (!TryComp(uid, out var phase)) - return string.Empty; - - return GetPhaseDescription((uid, phase)); - } - - private string GetPhaseDescription(Entity ent) - { - var sb = new StringBuilder(); - sb.Append($"[color=#e6a132][head=1]{MetaData(ent).EntityName}[/head][/color] \n \n"); - sb.Append($"[italic]{MetaData(ent).EntityDescription}[/italic] \n \n"); - - sb.Append(Loc.GetString("cp14-ritual-intro") + "\n \n \n"); - foreach (var edge in ent.Comp.Edges) - { - if (!_proto.TryIndex(edge.Target, out var targetIndexed)) - continue; - - sb.Append($"[color=#b5783c][head=3]{targetIndexed.Name}[/head][/color]" + "\n"); - - //TRIGGERS - if (edge.Triggers.Count > 0) - { - sb.Append($"[bold]{Loc.GetString("cp14-ritual-trigger-header")}[/bold] \n"); - foreach (var trigger in edge.Triggers) - sb.Append(trigger.GetGuidebookTriggerDescription(_proto, _entitySystem) + "\n"); - } - - //REQUIREMENTS - if (edge.Requirements.Count > 0) - { - sb.Append($"[bold]{Loc.GetString("cp14-ritual-req-header")}[/bold] \n"); - foreach (var req in edge.Requirements) - sb.Append(req.GetGuidebookRequirementDescription(_proto, _entitySystem) + "\n"); - } - - //ACTIONS - if (edge.Actions.Count > 0) - { - sb.Append($"[bold]{Loc.GetString("cp14-ritual-effect-header")}[/bold] \n"); - foreach (var act in edge.Actions) - sb.Append(act.GetGuidebookEffectDescription(_proto, _entitySystem) + "\n"); - } - } - return sb.ToString(); - } -} diff --git a/Content.Server/_CP14/MagicRituals/CP14RitualSystem.Visuals.cs b/Content.Server/_CP14/MagicRituals/CP14RitualSystem.Visuals.cs deleted file mode 100644 index 9b88426e68..0000000000 --- a/Content.Server/_CP14/MagicRituals/CP14RitualSystem.Visuals.cs +++ /dev/null @@ -1,22 +0,0 @@ -using Content.Shared._CP14.MagicRitual; -using Robust.Server.GameObjects; - -namespace Content.Server._CP14.MagicRituals; - -public sealed partial class CP14RitualSystem -{ - [Dependency] private readonly AppearanceSystem _appearance = default!; - private void InitializeVisuals() - { - SubscribeLocalEvent(OnPhaseBound); - } - - private void OnPhaseBound(Entity ent, ref CP14RitualPhaseBoundEvent args) - { - if (!TryComp(args.Ritual, out var ritual)) - return; - - _pointLight.SetColor(ent, ent.Comp.PhaseColor); - _appearance.SetData(args.Ritual, RitualVisuals.Color, ent.Comp.PhaseColor); - } -} diff --git a/Content.Server/_CP14/MagicRituals/CP14RitualSystem.cs b/Content.Server/_CP14/MagicRituals/CP14RitualSystem.cs deleted file mode 100644 index 5f440a5a50..0000000000 --- a/Content.Server/_CP14/MagicRituals/CP14RitualSystem.cs +++ /dev/null @@ -1,201 +0,0 @@ -using System.Text; -using Content.Server.Speech.Components; -using Content.Shared._CP14.MagicRitual; -using Content.Shared.DoAfter; -using Content.Shared.Examine; -using Content.Shared.Verbs; -using Robust.Server.GameObjects; -using Robust.Shared.Prototypes; -using Robust.Shared.Random; -using Robust.Shared.Timing; - -namespace Content.Server._CP14.MagicRituals; - -public partial class CP14RitualSystem : CP14SharedRitualSystem -{ - [Dependency] private readonly SharedDoAfterSystem _doAfter = default!; - [Dependency] private readonly IEntitySystemManager _entitySystem = default!; - [Dependency] private readonly PointLightSystem _pointLight = default!; - [Dependency] private readonly IPrototypeManager _proto = default!; - [Dependency] private readonly IRobustRandom _random = default!; - [Dependency] private readonly IGameTiming _timing = default!; - [Dependency] private readonly TransformSystem _transform = default!; - - public override void Initialize() - { - base.Initialize(); - - InitializeDescriber(); - InitializeVisuals(); - - SubscribeLocalEvent(OnActivateRitual); - SubscribeLocalEvent>(OnAlternativeVerb); - - SubscribeLocalEvent(OnPhaseTrigger); - - SubscribeLocalEvent(OnOrbExamine); - } - - private void OnActivateRitual(Entity ent, ref CP14ActivateRitualDoAfter args) - { - //if (args.Cancelled || args.Handled) - // return; -// - //args.Handled = true; -// - //StartRitual(ent); - } - - private void OnAlternativeVerb(Entity ent, ref GetVerbsEvent args) - { - //if (!args.CanInteract || ent.Comp.CurrentPhase is not null) - // return; -// - //var user = args.User; - //AlternativeVerb verb = new() - //{ - // Act = () => - // { - // var doAfterArgs = - // new DoAfterArgs(EntityManager, user, ent.Comp.ActivationTime, new CP14ActivateRitualDoAfter(), ent, ent) - // { - // BreakOnDamage = true, - // BreakOnMove = true, - // }; -// - // _doAfter.TryStartDoAfter(doAfterArgs); - // }, - // Text = Loc.GetString("cp14-ritual-verb-text"), - // Priority = 1, - //}; - //args.Verbs.Add(verb); - } - - private void OnOrbExamine(Entity ent, ref ExaminedEvent args) - { - //var sb = new StringBuilder(); - //sb.Append(Loc.GetString("cp14-ritual-orb-examine", ("name", MetaData(ent).EntityName)) + "\n"); - //foreach (var orbType in ent.Comp.Powers) - //{ - // if (!_proto.TryIndex(orbType.Key, out var indexedType)) - // continue; -// - // sb.Append($"[color={indexedType.Color.ToHex()}]"); - // sb.Append(Loc.GetString("cp14-ritual-entry-item", - // ("name", Loc.GetString(indexedType.Name)), - // ("count", orbType.Value))); - // sb.Append($"[/color] \n"); - //} -// - //args.PushMarkup(sb.ToString()); - } - - private void OnPhaseTrigger(Entity phase, ref CP14RitualTriggerEvent args) - { - //if (phase.Comp.Ritual is null) - // return; -// - //if (!TryComp(phase, out var ritualComp)) - // return; -// - //RitualPhaseEdge? selectedEdge = null; - //foreach (var edge in phase.Comp.Edges) - //{ - // if (edge.Target == args.NextPhase) - // { - // selectedEdge = edge; - // break; - // } - //} -// - //if (selectedEdge is null) - // return; -// - //var passed = true; - //foreach (var req in selectedEdge.Value.Requirements) - //{ - // if (!req.Check(EntityManager, phase, ritualComp.Stability)) //lol - // { - // ChangeRitualStability(phase.Comp.Ritual.Value, -req.FailStabilityCost); - // passed = false; - // break; - // } - //} -// - //if (!passed) - // return; -// - //foreach (var action in selectedEdge.Value.Actions) - //{ - // action.Effect(EntityManager, _transform, phase); - //} -// - //ChangePhase(phase.Comp.Ritual.Value, args.NextPhase); - } - - public void StartRitual(EntityUid uid, CP14MagicRitualComponent? ritual = null) - { - //if (!Resolve(uid, ref ritual, false)) - // return; -// - //EndRitual(uid); -// - //var ev = new CP14RitualStartEvent(uid); - //RaiseLocalEvent(uid, ev); -// - //ChangePhase(uid, ritual.StartPhase); - //_appearance.SetData(uid, RitualVisuals.Enabled, true); - } - - private void ChangePhase(EntityUid uid, EntProtoId newPhase, CP14MagicRitualComponent? ritual = null) - { - //if (!Resolve(uid, ref ritual, false)) - // return; -// - //QueueDel(ritual.CurrentPhase); -// - //var newPhaseEnt = Spawn(newPhase, Transform(uid).Coordinates); - //_transform.SetParent(newPhaseEnt, uid); - //var newPhaseComp = EnsureComp(newPhaseEnt); -// - //ritual.CurrentPhase = newPhaseEnt; - //newPhaseComp.Ritual = uid; -// - //foreach (var edge in newPhaseComp.Edges) - //{ - // foreach (var trigger in edge.Triggers) - // { - // trigger.Initialize(EntityManager, ritual.CurrentPhase.Value, edge); - // } - //} -// - //var ev = new CP14RitualPhaseBoundEvent(uid, newPhaseEnt); - //RaiseLocalEvent(uid, ev); - //RaiseLocalEvent(newPhaseEnt, ev); -// - //if (newPhaseComp.DeadEnd) - // EndRitual(uid); - } - - public void EndRitual(EntityUid uid, CP14MagicRitualComponent? ritual = null) - { - //if (!Resolve(uid, ref ritual, false)) - // return; -// - //if (ritual.CurrentPhase is null) - // return; -// - //QueueDel(ritual.CurrentPhase); - //ritual.CurrentPhase = null; -// - //var ev = new CP14RitualEndEvent(uid); - //RaiseLocalEvent(uid, ev); -// - //_appearance.SetData(uid, RitualVisuals.Enabled, false); -// - //foreach (var orb in ritual.Orbs) - //{ - // QueueDel(orb); - //} - } -} diff --git a/Content.Server/_CP14/MagicRituals/Components/CP14PaperPhaseDescriberComponent.cs b/Content.Server/_CP14/MagicRituals/Components/CP14PaperPhaseDescriberComponent.cs deleted file mode 100644 index d3bd9b00af..0000000000 --- a/Content.Server/_CP14/MagicRituals/Components/CP14PaperPhaseDescriberComponent.cs +++ /dev/null @@ -1,31 +0,0 @@ -using Content.Shared._CP14.MagicRitual; -using Robust.Shared.Audio; -using Robust.Shared.Prototypes; - -namespace Content.Server._CP14.MagicRituals.Components; - -/// -/// -/// -[RegisterComponent, Access(typeof(CP14RitualSystem))] -public sealed partial class CP14PaperPhaseDescriberComponent : Component -{ - [DataField(required: true)] - public EntProtoId StartPhase = default!; - - [DataField] - public EntityUid? CurrentPhase = null; - - public List SearchHistory = new(); - - [DataField] - public List Hyperlinks = new(); - - public SoundSpecifier UseSound = new SoundCollectionSpecifier("CP14Book") - { - Params = AudioParams.Default - .WithVariation(0.05f) - .WithVolume(0.5f), - }; -} - diff --git a/Content.Server/_CP14/Temperature/Fireplace/CP14FireplaceComponent.cs b/Content.Server/_CP14/Temperature/Fireplace/CP14FireplaceComponent.cs index 62c99e9e80..3dd4bf1126 100644 --- a/Content.Server/_CP14/Temperature/Fireplace/CP14FireplaceComponent.cs +++ b/Content.Server/_CP14/Temperature/Fireplace/CP14FireplaceComponent.cs @@ -37,7 +37,10 @@ public sealed partial class CP14FireplaceComponent : Component public float FuelDrainingPerUpdate = 1f; [DataField] - public TimeSpan UpdateFrequency = TimeSpan.FromSeconds(2f); + public bool DeleteOnEmpty = false; + + [DataField] + public TimeSpan UpdateFrequency = TimeSpan.FromSeconds(1f); [DataField] public TimeSpan NextUpdateTime = TimeSpan.Zero; diff --git a/Content.Server/_CP14/Temperature/Fireplace/CP14FireplaceSystem.cs b/Content.Server/_CP14/Temperature/Fireplace/CP14FireplaceSystem.cs index bba2430003..02a0088b3e 100644 --- a/Content.Server/_CP14/Temperature/Fireplace/CP14FireplaceSystem.cs +++ b/Content.Server/_CP14/Temperature/Fireplace/CP14FireplaceSystem.cs @@ -88,7 +88,7 @@ public sealed partial class CP14FireplaceSystem : EntitySystem if (_timing.CurTime <= fireplace.NextUpdateTime) continue; - fireplace.NextUpdateTime = _timing.CurTime + fireplace.UpdateFrequency; + fireplace.NextUpdateTime += fireplace.UpdateFrequency; if (fireplace.Fuel >= fireplace.FuelDrainingPerUpdate) { @@ -102,6 +102,12 @@ public sealed partial class CP14FireplaceSystem : EntitySystem ConsumeFuel(uid, fireplace, fuel.Value); flammable.FirestackFade = -fireplace.FireFadeDelta; + + if (flammable.FireStacks == 0 && fireplace.DeleteOnEmpty) + { + QueueDel(uid); + return; + } } } } diff --git a/Content.Shared/_CP14/MagicRitual/Actions/AddOrb.cs b/Content.Shared/_CP14/MagicRitual/Actions/AddOrb.cs deleted file mode 100644 index 599b393526..0000000000 --- a/Content.Shared/_CP14/MagicRitual/Actions/AddOrb.cs +++ /dev/null @@ -1,44 +0,0 @@ -using System.Text; -using Robust.Shared.Prototypes; - -namespace Content.Shared._CP14.MagicRitual.Actions; - -/// -/// Adds a key-orb to the ritual. -/// -public sealed partial class AddOrb : CP14RitualAction -{ - [DataField(required: true)] - public Dictionary Orbs = new(); - - public override string? GetGuidebookEffectDescription(IPrototypeManager prototype, IEntitySystemManager entSys) - { - var sb = new StringBuilder(); - sb.Append(Loc.GetString("cp14-ritual-effect-add-orb")+ "\n"); - foreach (var orb in Orbs) - { - if (!prototype.TryIndex(orb.Key, out var indexedOrb)) - continue; - - sb.Append(Loc.GetString("cp14-ritual-entry-item", ("name", indexedOrb.Name), ("count", orb.Value)) + "\n"); - } - - return sb.ToString(); - } - - public override void Effect(EntityManager entManager, SharedTransformSystem transform, Entity phase) - { - if (phase.Comp.Ritual is null) - return; - - var ritual = entManager.System(); - - foreach (var orb in Orbs) - { - for (var i = 0; i < orb.Value; i++) - { - ritual.AddOrbToRitual(phase.Comp.Ritual.Value, orb.Key); - } - } - } -} diff --git a/Content.Shared/_CP14/MagicRitual/Actions/ApplyEntityEffect.cs b/Content.Shared/_CP14/MagicRitual/Actions/ApplyEntityEffect.cs deleted file mode 100644 index b5b0159c18..0000000000 --- a/Content.Shared/_CP14/MagicRitual/Actions/ApplyEntityEffect.cs +++ /dev/null @@ -1,75 +0,0 @@ -using System.Text; -using Content.Shared.EntityEffects; -using Content.Shared.Whitelist; -using Robust.Shared.Prototypes; - -namespace Content.Shared._CP14.MagicRitual.Actions; - -/// -/// Filters the nearest X entities by whitelist and applies the specified EntityEffects on them -/// -public sealed partial class ApplyEntityEffect : CP14RitualAction -{ - [DataField] - public float CheckRange = 1f; - - [DataField] - public EntityWhitelist? Whitelist; - - [DataField] - public LocId? WhitelistDesc; - - [DataField(required: true, serverOnly: true)] - public List Effects = new(); - - [DataField] - public int MaxEntities = 1; - - public override string? GetGuidebookEffectDescription(IPrototypeManager prototype, IEntitySystemManager entSys) - { - var sb = new StringBuilder(); - - sb.Append(Loc.GetString("cp14-ritual-range", ("range", CheckRange)) + "\n"); - sb.Append(Loc.GetString("cp14-ritual-effect-apply-effect", ("count", MaxEntities), ("range", CheckRange)) + "\n"); - - if (WhitelistDesc is not null) - { - sb.Append(Loc.GetString(WhitelistDesc)); - sb.Append("\n"); - } - - foreach (var effect in Effects) - { - sb.Append("- " + effect.GuidebookEffectDescription(prototype, entSys) + "\n"); - } - sb.Append("\n"); - - return sb.ToString(); - } - - public override void Effect(EntityManager entManager, SharedTransformSystem transform, Entity phase) - { - var lookup = entManager.System(); - var whitelist = entManager.System(); - - var entitiesAround = lookup.GetEntitiesInRange(phase, CheckRange, LookupFlags.Uncontained); - - var count = 0; - foreach (var entity in entitiesAround) - { - if (Whitelist is not null && !whitelist.IsValid(Whitelist, entity)) - continue; - - foreach (var effect in Effects) - { - effect.Effect(new EntityEffectBaseArgs(entity, entManager)); - } - - entManager.Spawn(VisualEffect, transform.GetMapCoordinates(entity)); - count++; - - if (count >= MaxEntities) - break; - } - } -} diff --git a/Content.Shared/_CP14/MagicRitual/Actions/CP14RitualAction.cs b/Content.Shared/_CP14/MagicRitual/Actions/CP14RitualAction.cs deleted file mode 100644 index b8e4d5b55c..0000000000 --- a/Content.Shared/_CP14/MagicRitual/Actions/CP14RitualAction.cs +++ /dev/null @@ -1,19 +0,0 @@ -using JetBrains.Annotations; -using Robust.Shared.Prototypes; - -namespace Content.Shared._CP14.MagicRitual.Actions; - -[ImplicitDataDefinitionForInheritors] -[MeansImplicitUse] -public abstract partial class CP14RitualAction -{ - /// - /// Effect appearing in place of interacted entities - /// - [DataField("vfx")] - public EntProtoId? VisualEffect = "CP14DustEffect"; - - public abstract void Effect(EntityManager entManager, SharedTransformSystem transform, Entity phase); - - public abstract string? GetGuidebookEffectDescription(IPrototypeManager prototype, IEntitySystemManager entSys); -} diff --git a/Content.Shared/_CP14/MagicRitual/Actions/ConsumeOrb.cs b/Content.Shared/_CP14/MagicRitual/Actions/ConsumeOrb.cs deleted file mode 100644 index 4bfa738bde..0000000000 --- a/Content.Shared/_CP14/MagicRitual/Actions/ConsumeOrb.cs +++ /dev/null @@ -1,41 +0,0 @@ -using System.Text; -using Content.Shared._CP14.MagicRitual.Prototypes; -using Robust.Shared.Prototypes; - -namespace Content.Shared._CP14.MagicRitual.Actions; - -/// -/// Removes the orb key from the ritual. -/// -public sealed partial class ConsumeOrb : CP14RitualAction -{ - [DataField(required: true)] - public ProtoId MagicType = new(); - - [DataField(required: true)] - public int Count = 0; - - public override string? GetGuidebookEffectDescription(IPrototypeManager prototype, IEntitySystemManager entSys) - { - if (!prototype.TryIndex(MagicType, out var indexedType)) - return null; - - var sb = new StringBuilder(); - sb.Append(Loc.GetString("cp14-ritual-effect-consume-orb", ("name", Loc.GetString(indexedType.Name)), ("count", Count))+ "\n"); - - return sb.ToString(); - } - - public override void Effect(EntityManager entManager, SharedTransformSystem transform, Entity phase) - { - if (phase.Comp.Ritual is null) - return; - - var ritual = entManager.System(); - - for (var i = 0; i < Count; i++) - { - ritual.ConsumeOrbType(phase.Comp.Ritual.Value, MagicType); - } - } -} diff --git a/Content.Shared/_CP14/MagicRitual/Actions/ConsumeResource.cs b/Content.Shared/_CP14/MagicRitual/Actions/ConsumeResource.cs deleted file mode 100644 index cad1cb1ee1..0000000000 --- a/Content.Shared/_CP14/MagicRitual/Actions/ConsumeResource.cs +++ /dev/null @@ -1,104 +0,0 @@ -using System.Text; -using Content.Shared.Stacks; -using Robust.Shared.Prototypes; - -namespace Content.Shared._CP14.MagicRitual.Actions; - -public sealed partial class ConsumeResource : CP14RitualAction -{ - [DataField] - public float CheckRange = 1f; - - [DataField] - public Dictionary RequiredEntities = new (); - - [DataField] - public Dictionary, int> RequiredStacks = new(); - - public override string? GetGuidebookEffectDescription(IPrototypeManager prototype, IEntitySystemManager entSys) - { - var sb = new StringBuilder(); - sb.Append(Loc.GetString("cp14-ritual-effect-consume-resource", ("range", CheckRange)) + "\n"); - - foreach (var entity in RequiredEntities) - { - if (!prototype.TryIndex(entity.Key, out var indexed)) - continue; - - sb.Append(Loc.GetString("cp14-ritual-entry-item", ("name", indexed.Name), ("count", entity.Value)) + "\n"); - } - - foreach (var stack in RequiredStacks) - { - if (!prototype.TryIndex(stack.Key, out var indexed)) - continue; - - sb.Append(Loc.GetString("cp14-ritual-entry-item", ("name", Loc.GetString(indexed.Name)), ("count", stack.Value)) + "\n"); - } - - return sb.ToString(); - } - - public override void Effect(EntityManager entManager, SharedTransformSystem transform, Entity phase) - { - var lookup = entManager.System(); - var stack = entManager.System(); - - var entitiesAround = lookup.GetEntitiesInRange(phase, CheckRange, LookupFlags.Uncontained); - - foreach (var reqEnt in RequiredEntities) - { - var requiredCount = reqEnt.Value; - - foreach (var entity in entitiesAround) - { - if (!entManager.TryGetComponent(entity, out var metaData)) - continue; - if (!entManager.HasComponent(entity)) - continue; - - var entProto = metaData.EntityPrototype; - if (entProto is null) - continue; - - if (entProto.ID == reqEnt.Key && requiredCount > 0) - { - if (VisualEffect is not null) - entManager.Spawn(VisualEffect.Value, transform.GetMapCoordinates(entity)); - - entManager.DeleteEntity(entity); - - requiredCount--; - } - } - } - - foreach (var reqStack in RequiredStacks) - { - var requiredCount = reqStack.Value; - - foreach (var entity in entitiesAround) - { - if (!entManager.TryGetComponent(entity, out var stackComp)) - continue; - - if (stackComp.StackTypeId != reqStack.Key) - continue; - - var count = (int)MathF.Min(requiredCount, stackComp.Count); - - - if (stackComp.Count - count <= 0) - entManager.DeleteEntity(entity); - else - stack.SetCount(entity, stackComp.Count - count, stackComp); - - - requiredCount -= count; - - if (VisualEffect is not null) - entManager.Spawn(VisualEffect.Value, transform.GetMapCoordinates(entity)); - } - } - } -} diff --git a/Content.Shared/_CP14/MagicRitual/Actions/EditStability.cs b/Content.Shared/_CP14/MagicRitual/Actions/EditStability.cs deleted file mode 100644 index f70cdfab23..0000000000 --- a/Content.Shared/_CP14/MagicRitual/Actions/EditStability.cs +++ /dev/null @@ -1,27 +0,0 @@ -using Robust.Shared.Prototypes; - -namespace Content.Shared._CP14.MagicRitual.Actions; - -public sealed partial class EditStability : CP14RitualAction -{ - [DataField(required: true)] - public float Mod; - - public override void Effect(EntityManager entManager, SharedTransformSystem transform, Entity phase) - { - var ritual = entManager.System(); - - if (phase.Comp.Ritual is not null) - ritual.ChangeRitualStability(phase.Comp.Ritual.Value, Mod); - } - - public override string? GetGuidebookEffectDescription(IPrototypeManager prototype, IEntitySystemManager entSys) - { - return Mod switch - { - > 0 => Loc.GetString("cp14-ritual-effect-stability-add", ("count", Mod * 100)) + "\n", - < 0 => Loc.GetString("cp14-ritual-effect-stability-minus", ("count", -Mod * 100)) + "\n", - _ => null, - }; - } -} diff --git a/Content.Shared/_CP14/MagicRitual/Actions/SpawnEntity.cs b/Content.Shared/_CP14/MagicRitual/Actions/SpawnEntity.cs deleted file mode 100644 index faff072030..0000000000 --- a/Content.Shared/_CP14/MagicRitual/Actions/SpawnEntity.cs +++ /dev/null @@ -1,44 +0,0 @@ -using System.Text; -using Robust.Shared.Prototypes; - -namespace Content.Shared._CP14.MagicRitual.Actions; - -/// -/// Creates an entity in the coordinates of the ritual. -/// TODO: EntityTable support? -public sealed partial class SpawnEntity : CP14RitualAction -{ - [DataField(required: true)] - public Dictionary Spawns = new(); - - [DataField] - public LocId? Name; - - public override string? GetGuidebookEffectDescription(IPrototypeManager prototype, IEntitySystemManager entSys) - { - var sb = new StringBuilder(); - sb.Append(Loc.GetString("cp14-ritual-effect-spawn-entity")+ "\n"); - foreach (var spawn in Spawns) - { - if (!prototype.TryIndex(spawn.Key, out var indexed)) - return null; - - sb.Append(Loc.GetString("cp14-ritual-entry-item", - ("name", Name is null ? indexed.Name : Loc.GetString(Name)), - ("count", spawn.Value)) + "\n"); - } - - return sb.ToString(); - } - - public override void Effect(EntityManager entManager, SharedTransformSystem transform, Entity phase) - { - foreach (var spawn in Spawns) - { - for (var i = 0; i < spawn.Value; i++) - { - entManager.Spawn(spawn.Key, transform.GetMapCoordinates(phase)); - } - } - } -} diff --git a/Content.Shared/_CP14/MagicRitual/CP14MagicRitualComponent.cs b/Content.Shared/_CP14/MagicRitual/CP14MagicRitualComponent.cs deleted file mode 100644 index df6f93bfbc..0000000000 --- a/Content.Shared/_CP14/MagicRitual/CP14MagicRitualComponent.cs +++ /dev/null @@ -1,37 +0,0 @@ -using Robust.Shared.Prototypes; - -namespace Content.Shared._CP14.MagicRitual; - -/// -/// Ritual Behavior Controller. Creates and removes entities of magical phases -/// -[RegisterComponent, Access(typeof(CP14SharedRitualSystem))] -public sealed partial class CP14MagicRitualComponent : Component -{ - [DataField(required: true)] - public EntProtoId StartPhase; - - [DataField] - public EntityUid? CurrentPhase; - - [DataField] - public float Stability = 1f; - - [DataField] - public float ActivationTime = 5f; - - [DataField] - public string RitualLayerMap = "ritual"; - - [DataField] - public int MaxOrbCapacity = 3; - - [DataField] - public float RitualRadius = 5; - - [DataField] - public TimeSpan TriggerTime = TimeSpan.Zero; - - [DataField] - public List Orbs = new(); -} diff --git a/Content.Shared/_CP14/MagicRitual/CP14MagicRitualEvents.cs b/Content.Shared/_CP14/MagicRitual/CP14MagicRitualEvents.cs deleted file mode 100644 index fe676a44eb..0000000000 --- a/Content.Shared/_CP14/MagicRitual/CP14MagicRitualEvents.cs +++ /dev/null @@ -1,86 +0,0 @@ -using Content.Shared.DoAfter; -using Robust.Shared.Prototypes; -using Robust.Shared.Serialization; - -namespace Content.Shared._CP14.MagicRitual; - -/// -/// Called out a ritual when any of its phase triggers are activated -/// -public sealed class CP14RitualTriggerEvent : EntityEventArgs -{ - public EntProtoId NextPhase; - - public CP14RitualTriggerEvent(EntProtoId phase) - { - NextPhase = phase; - } -} - -/// -/// Called out at a ritual when his stability is altered -/// -public sealed class CP14RitualStabilityChangedEvent : EntityEventArgs -{ - public float OldStability; - public float NewStability; - - public CP14RitualStabilityChangedEvent(float oldS, float newS) - { - OldStability = oldS; - NewStability = newS; - } -} - -/// -/// Called on both the ritual and the phase when they link together -/// -public sealed class CP14RitualPhaseBoundEvent : EntityEventArgs -{ - public EntityUid Ritual; - public EntityUid Phase; - - public CP14RitualPhaseBoundEvent(EntityUid r, EntityUid p) - { - Ritual = r; - Phase = p; - } -} - -/// -/// Invoked at the ritual holder entity when the ritual is complete and the phase entities have been removed -/// -public sealed class CP14RitualEndEvent : EntityEventArgs -{ - public EntityUid Ritual; - - public CP14RitualEndEvent(EntityUid r) - { - Ritual = r; - } -} - -/// -/// Invoked at the ritual holder entity when the ritual begins, and invokes the starting phase -/// -public sealed class CP14RitualStartEvent : EntityEventArgs -{ - public EntityUid Ritual; - - public CP14RitualStartEvent(EntityUid r) - { - Ritual = r; - } -} - -[Serializable, NetSerializable] -public sealed partial class CP14ActivateRitualDoAfter : SimpleDoAfterEvent -{ -} - -[Serializable, NetSerializable] -public enum RitualVisuals -{ - Color, - Enabled, -} diff --git a/Content.Shared/_CP14/MagicRitual/CP14MagicRitualOrbComponent.cs b/Content.Shared/_CP14/MagicRitual/CP14MagicRitualOrbComponent.cs deleted file mode 100644 index fb82663d62..0000000000 --- a/Content.Shared/_CP14/MagicRitual/CP14MagicRitualOrbComponent.cs +++ /dev/null @@ -1,14 +0,0 @@ -using Content.Shared._CP14.MagicRitual.Prototypes; -using Robust.Shared.Prototypes; - -namespace Content.Shared._CP14.MagicRitual; - -/// -/// “Key” in the concept of rituals. An entity that can be a key to a ritual, and holds certain characteristics that can be spent, or by which a phase transition requirement check can be made. -/// -[RegisterComponent, Access(typeof(CP14SharedRitualSystem))] -public sealed partial class CP14MagicRitualOrbComponent : Component -{ - [DataField] - public Dictionary, int> Powers = new(); -} diff --git a/Content.Shared/_CP14/MagicRitual/CP14MagicRitualPhaseComponent.cs b/Content.Shared/_CP14/MagicRitual/CP14MagicRitualPhaseComponent.cs deleted file mode 100644 index f5a897d98c..0000000000 --- a/Content.Shared/_CP14/MagicRitual/CP14MagicRitualPhaseComponent.cs +++ /dev/null @@ -1,41 +0,0 @@ -using Content.Shared._CP14.MagicRitual.Actions; -using Content.Shared._CP14.MagicRitual.Requirements; -using Content.Shared._CP14.MagicRitualTrigger; -using Robust.Shared.Prototypes; - -namespace Content.Shared._CP14.MagicRitual; - -/// -/// Magical entity that reacts to world events -/// -[RegisterComponent, Access(typeof(CP14SharedRitualSystem))] -public sealed partial class CP14MagicRitualPhaseComponent : Component -{ - /// - /// A link to the ritual itself in which this phase is found - /// - [DataField] - public EntityUid? Ritual; - - [DataField] - public Color PhaseColor = Color.White; - - [DataField] - public List Edges = new(); - - /// - /// by moving to this node, the ritual will end instantly. - /// - [DataField] - public bool DeadEnd = false; -} - -[DataRecord] -public partial record struct RitualPhaseEdge() -{ - public EntProtoId Target { get; set; } - - public List Triggers { get; set; } = new(); - public List Requirements { get; set; } = new(); - public List Actions { get; set; } = new(); -} diff --git a/Content.Shared/_CP14/MagicRitual/CP14SharedRitualSystem.cs b/Content.Shared/_CP14/MagicRitual/CP14SharedRitualSystem.cs deleted file mode 100644 index e36cdffb27..0000000000 --- a/Content.Shared/_CP14/MagicRitual/CP14SharedRitualSystem.cs +++ /dev/null @@ -1,70 +0,0 @@ -using Content.Shared._CP14.MagicRitual.Prototypes; -using Content.Shared.Follower; -using Robust.Shared.Network; -using Robust.Shared.Prototypes; - -namespace Content.Shared._CP14.MagicRitual; - -public partial class CP14SharedRitualSystem : EntitySystem -{ - [Dependency] private readonly FollowerSystem _followerSystem = default!; - [Dependency] private readonly IPrototypeManager _proto = default!; - [Dependency] private readonly SharedTransformSystem _transform = default!; - [Dependency] private readonly INetManager _net = default!; - - public void ChangeRitualStability(EntityUid uid, float dStab, CP14MagicRitualComponent? ritual = null) - { - //if (!Resolve(uid, ref ritual)) - // return; -// - //var newS = MathHelper.Clamp01(ritual.Stability + dStab); -// - //var ev = new CP14RitualStabilityChangedEvent(ritual.Stability, newS); - //RaiseLocalEvent(uid, ev); -// - //ritual.Stability = newS; - } - - public void AddOrbToRitual(EntityUid uid, EntProtoId orb, CP14MagicRitualComponent? ritual = null) - { - //if (_net.IsClient) - // return; -// - //if (!Resolve(uid, ref ritual)) - // return; -// - //if (!_proto.TryIndex(orb, out var indexedOrb)) - // return; -// - //if (ritual.Orbs.Count >= ritual.MaxOrbCapacity) - // return; -// - //var spawnedOrb = Spawn(orb, _transform.GetMapCoordinates(uid)); -// - //if (!TryComp(spawnedOrb, out var orbComp)) - //{ - // QueueDel(spawnedOrb); - // return; - //} -// - //_followerSystem.StartFollowingEntity(spawnedOrb, uid); - //ritual.Orbs.Add((spawnedOrb, orbComp)); - } - - public void ConsumeOrbType(EntityUid uid, ProtoId magicType, CP14MagicRitualComponent? ritual = null) - { - //if (!Resolve(uid, ref ritual)) - // return; -// - //foreach (var orb in ritual.Orbs) - //{ - // var powers = orb.Comp.Powers; - // if (!powers.ContainsKey(magicType)) - // continue; -// - // ritual.Orbs.Remove(orb); - // QueueDel(orb); - // return; - //} - } -} diff --git a/Content.Shared/_CP14/MagicRitual/Requirements/CP14RitualRequirement.cs b/Content.Shared/_CP14/MagicRitual/Requirements/CP14RitualRequirement.cs deleted file mode 100644 index dafe4d5183..0000000000 --- a/Content.Shared/_CP14/MagicRitual/Requirements/CP14RitualRequirement.cs +++ /dev/null @@ -1,19 +0,0 @@ -using JetBrains.Annotations; -using Robust.Shared.Prototypes; - -namespace Content.Shared._CP14.MagicRitual.Requirements; - -[ImplicitDataDefinitionForInheritors] -[MeansImplicitUse] -public abstract partial class CP14RitualRequirement -{ - /// - /// If this checks fails, the ritual will lose some of its stability. - /// - [DataField] - public float FailStabilityCost; - - public abstract bool Check(EntityManager entManager, Entity phaseEnt, float stability); - - public abstract string? GetGuidebookRequirementDescription(IPrototypeManager prototype, IEntitySystemManager entSys); -} diff --git a/Content.Shared/_CP14/MagicRitual/Requirements/RequiredOrbs.cs b/Content.Shared/_CP14/MagicRitual/Requirements/RequiredOrbs.cs deleted file mode 100644 index 54d1480b8f..0000000000 --- a/Content.Shared/_CP14/MagicRitual/Requirements/RequiredOrbs.cs +++ /dev/null @@ -1,66 +0,0 @@ -using System.Text; -using Content.Shared._CP14.MagicRitual.Prototypes; -using Robust.Shared.Prototypes; - -namespace Content.Shared._CP14.MagicRitual.Requirements; - -/// -/// Requires specific daytime period -/// -public sealed partial class RequiredOrbs : CP14RitualRequirement -{ - [DataField] - public ProtoId MagicType = new(); - - [DataField] - public int? Min; - - [DataField] - public int? Max; - - public override string? GetGuidebookRequirementDescription(IPrototypeManager prototype, IEntitySystemManager entSys) - { - var sb = new StringBuilder(); - - if (!prototype.TryIndex(MagicType, out var indexedType)) - return null; - - sb.Append(Loc.GetString("cp14-ritual-required-orbs", ("name", Loc.GetString(indexedType.Name))) + " "); - if (Min is not null && Max is not null) - sb.Append(Loc.GetString("cp14-ritual-required-orbs-item-minmax", ("min", Min), ("max", Max))+ "\n"); - else if (Min is not null) - sb.Append(Loc.GetString("cp14-ritual-required-orbs-item-min", ("min", Min))+ "\n"); - else if (Max is not null) - sb.Append(Loc.GetString("cp14-ritual-required-orbs-item-min", ("max", Max))+ "\n"); - - return sb.ToString(); - } - - public override bool Check(EntityManager entManager, Entity phaseEnt, float stability) - { - //if (phaseEnt.Comp.Ritual is null) - // return false; -// - //if (!entManager.TryGetComponent(phaseEnt, out var ritualComp)) - // return false; -// - //var count = 0; - //foreach (var orb in ritualComp.Orbs) - //{ - // foreach (var power in orb.Comp.Powers) - // { - // if (power.Key == MagicType) - // count += power.Value; - // } - //} -// - //if (Min is not null && Max is not null) - // return count >= Min && count <= Max; - //if (Min is not null) - // return count >= Min; - //if (Max is not null) - // return count <= Max; -// - return false; - } -} diff --git a/Content.Shared/_CP14/MagicRitual/Requirements/RequiredResource.cs b/Content.Shared/_CP14/MagicRitual/Requirements/RequiredResource.cs deleted file mode 100644 index 88a2ceb9d4..0000000000 --- a/Content.Shared/_CP14/MagicRitual/Requirements/RequiredResource.cs +++ /dev/null @@ -1,113 +0,0 @@ -using System.Text; -using Content.Shared.Stacks; -using Robust.Shared.Prototypes; - -namespace Content.Shared._CP14.MagicRitual.Requirements; - -/// -/// Requires certain specific entities to be near the ritual. TODO: Replace with Whitelist -/// -public sealed partial class RequiredResource : CP14RitualRequirement -{ - [DataField] - public float CheckRange = 3f; - - [DataField] - public Dictionary RequiredEntities = new (); - - [DataField] - public Dictionary, int> RequiredStacks = new(); - - /// - /// Effect appearing in place of used entities - /// - [DataField("vfx")] - public EntProtoId? Effect = "CP14DustEffect"; - - public override string? GetGuidebookRequirementDescription(IPrototypeManager prototype, IEntitySystemManager entSys) - { - var sb = new StringBuilder(); - sb.Append(Loc.GetString("cp14-ritual-required-resource", ("range", CheckRange)) + "\n"); - - foreach (var entity in RequiredEntities) - { - if (!prototype.TryIndex(entity.Key, out var indexed)) - continue; - - sb.Append(Loc.GetString("cp14-ritual-entry-item", ("name", indexed.Name), ("count", entity.Value)) + "\n"); - } - - foreach (var stack in RequiredStacks) - { - if (!prototype.TryIndex(stack.Key, out var indexed)) - continue; - - sb.Append(Loc.GetString("cp14-ritual-entry-item", ("name", Loc.GetString(indexed.Name)), ("count", stack.Value)) + "\n"); - } - - return sb.ToString(); - } - - public override bool Check(EntityManager entManager, Entity phaseEnt, float stability) - { - var _lookup = entManager.System(); - var _transform = entManager.System(); - - var entitiesAround = _lookup.GetEntitiesInRange(phaseEnt, CheckRange, LookupFlags.Uncontained); - - var passed = true; - - foreach (var reqEnt in RequiredEntities) - { - var requiredCount = reqEnt.Value; - - foreach (var entity in entitiesAround) - { - if (!entManager.TryGetComponent(entity, out var metaData)) - continue; - if (!entManager.TryGetComponent(entity, out var xform)) - continue; - - var entProto = metaData.EntityPrototype; - if (entProto is null) - continue; - - if (entProto.ID == reqEnt.Key && requiredCount > 0) - { - if (Effect is not null) - entManager.Spawn(Effect.Value, _transform.GetMapCoordinates(entity)); - - requiredCount--; - } - } - - if (requiredCount > 0) - passed = false; - } - - foreach (var reqStack in RequiredStacks) - { - var requiredCount = reqStack.Value; - - foreach (var entity in entitiesAround) - { - if (!entManager.TryGetComponent(entity, out var stack)) - continue; - - if (stack.StackTypeId != reqStack.Key) - continue; - - var count = (int)MathF.Min(requiredCount, stack.Count); - requiredCount -= count; - - if (Effect is not null) - entManager.Spawn(Effect.Value, _transform.GetMapCoordinates(entity)); - } - - if (requiredCount > 0) - passed = false; - } - - return passed; - } -} diff --git a/Content.Shared/_CP14/MagicRitual/Requirements/RequiredStability.cs b/Content.Shared/_CP14/MagicRitual/Requirements/RequiredStability.cs deleted file mode 100644 index 51f3eace29..0000000000 --- a/Content.Shared/_CP14/MagicRitual/Requirements/RequiredStability.cs +++ /dev/null @@ -1,37 +0,0 @@ -using Robust.Shared.Prototypes; - -namespace Content.Shared._CP14.MagicRitual.Requirements; - -/// -/// Requires that the stability of the ritual be within specified limits. If the stability is above or below the specified values, the check will fail -/// -public sealed partial class RequiredStability : CP14RitualRequirement -{ - [DataField] - public float Min = 0; - [DataField] - public float Max = 1; - - public override string? GetGuidebookRequirementDescription(IPrototypeManager prototype, IEntitySystemManager entSys) - { - return Min switch - { - > 0 when Max < 1 => - Loc.GetString("cp14-ritual-required-stability-minmax", ("min", Min*100), ("max", Max*100)), - > 0 => Loc.GetString("cp14-ritual-required-stability-min", ("min", Min*100)), - < 0 => Loc.GetString("cp14-ritual-required-stability-max", ("min", Max*100)), - _ => null, - }; - } - - public override bool Check(EntityManager entManager, Entity phaseEnt, float stability) - { - if (phaseEnt.Comp.Ritual is null) - return false; - - if (!entManager.TryGetComponent(phaseEnt, out var ritualComp)) - return false; - - return !(ritualComp.Stability < Min) && !(ritualComp.Stability > Max); - } -} diff --git a/Content.Shared/_CP14/MagicRitualTrigger/CP14RitualTrigger.cs b/Content.Shared/_CP14/MagicRitualTrigger/CP14RitualTrigger.cs deleted file mode 100644 index a86b942ed5..0000000000 --- a/Content.Shared/_CP14/MagicRitualTrigger/CP14RitualTrigger.cs +++ /dev/null @@ -1,17 +0,0 @@ -using Content.Shared._CP14.MagicRitual; -using JetBrains.Annotations; -using Robust.Shared.Prototypes; - -namespace Content.Shared._CP14.MagicRitualTrigger; - -[ImplicitDataDefinitionForInheritors] -[MeansImplicitUse] -public abstract partial class CP14RitualTrigger -{ - [DataField] - public RitualPhaseEdge? Edge = null; - - public abstract void Initialize(EntityManager entManager, Entity ritual, RitualPhaseEdge edge); - - public abstract string? GetGuidebookTriggerDescription(IPrototypeManager prototype, IEntitySystemManager entSys); -} diff --git a/Content.Shared/_CP14/MagicRitualTrigger/CP14SharedRitualTriggerSystem.cs b/Content.Shared/_CP14/MagicRitualTrigger/CP14SharedRitualTriggerSystem.cs deleted file mode 100644 index 49e3a8f0d3..0000000000 --- a/Content.Shared/_CP14/MagicRitualTrigger/CP14SharedRitualTriggerSystem.cs +++ /dev/null @@ -1,5 +0,0 @@ -namespace Content.Shared._CP14.MagicRitualTrigger; - -public partial class CP14SharedRitualTriggerSystem : EntitySystem -{ -} diff --git a/Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualSacrificeSpeciesTrigger.cs b/Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualSacrificeSpeciesTrigger.cs deleted file mode 100644 index f2f6629fb3..0000000000 --- a/Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualSacrificeSpeciesTrigger.cs +++ /dev/null @@ -1,34 +0,0 @@ -using Content.Shared._CP14.MagicRitual; -using Content.Shared.Humanoid.Prototypes; -using Robust.Shared.Prototypes; - -namespace Content.Shared._CP14.MagicRitualTrigger.Triggers; - -/// -/// triggers when a creature of a certain race dies within range of the ritual. -/// -public sealed partial class CP14SacrificeSpeciesTrigger : CP14RitualTrigger -{ - [DataField] - public float Range = 3f; - - [DataField(required: true)] - public ProtoId Species = default!; - - public override void Initialize(EntityManager entManager, Entity ritual, RitualPhaseEdge edge) - { - entManager.EnsureComponent(ritual, out var trigger); - trigger.Triggers.Add(this); - Edge = edge; - } - - public override string? GetGuidebookTriggerDescription(IPrototypeManager prototype, IEntitySystemManager entSys) - { - if (!prototype.TryIndex(Species, out var indexedSpecies)) - return null; - - return Loc.GetString("cp14-ritual-trigger-sacrifice", - ("name", Loc.GetString(indexedSpecies.Name)), - ("range", Range)); - } -} diff --git a/Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualSacrificeSpeciesTriggerComponent.cs b/Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualSacrificeSpeciesTriggerComponent.cs deleted file mode 100644 index cb92dc1cd8..0000000000 --- a/Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualSacrificeSpeciesTriggerComponent.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Content.Shared._CP14.MagicRitualTrigger.Triggers; - -[RegisterComponent] -public sealed partial class CP14RitualSacrificeSpeciesTriggerComponent : Component -{ - [DataField] - public HashSet Triggers = new(); -} diff --git a/Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualSacrificeWhitelistTrigger.cs b/Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualSacrificeWhitelistTrigger.cs deleted file mode 100644 index 7b8b29cc24..0000000000 --- a/Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualSacrificeWhitelistTrigger.cs +++ /dev/null @@ -1,34 +0,0 @@ -using Content.Shared._CP14.MagicRitual; -using Content.Shared.Whitelist; -using Robust.Shared.Prototypes; - -namespace Content.Shared._CP14.MagicRitualTrigger.Triggers; - -/// -/// Triggers when a creature passing the whitelist dies within range of the ritual. -/// -public sealed partial class CP14SacrificeWhitelistTrigger : CP14RitualTrigger -{ - [DataField] - public float Range = 3f; - - [DataField(required: true)] - public EntityWhitelist Whitelist = default!; - - [DataField(required: true)] - public LocId WhitelistDesc = default!; - - public override void Initialize(EntityManager entManager, Entity ritual, RitualPhaseEdge edge) - { - entManager.EnsureComponent(ritual, out var trigger); - trigger.Triggers.Add(this); - Edge = edge; - } - - public override string? GetGuidebookTriggerDescription(IPrototypeManager prototype, IEntitySystemManager entSys) - { - return Loc.GetString("cp14-ritual-trigger-sacrifice", - ("name", Loc.GetString(WhitelistDesc)), - ("range", Range)); - } -} diff --git a/Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualSacrificeWhitelistTriggerComponent.cs b/Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualSacrificeWhitelistTriggerComponent.cs deleted file mode 100644 index 20cad400cb..0000000000 --- a/Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualSacrificeWhitelistTriggerComponent.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Content.Shared._CP14.MagicRitualTrigger.Triggers; - -[RegisterComponent] -public sealed partial class CP14RitualSacrificeWhitelistTriggerComponent : Component -{ - [DataField] - public HashSet Triggers = new(); -} diff --git a/Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualTimerTrigger.cs b/Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualTimerTrigger.cs deleted file mode 100644 index 2c84afb3ec..0000000000 --- a/Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualTimerTrigger.cs +++ /dev/null @@ -1,28 +0,0 @@ -using Content.Shared._CP14.MagicRitual; -using Robust.Shared.Prototypes; - -namespace Content.Shared._CP14.MagicRitualTrigger.Triggers; - -/// -/// Triggers the phase transition after a certain period of time -/// -public sealed partial class CP14TimerTrigger : CP14RitualTrigger -{ - [DataField] - public float Delay = 10f; - - [DataField] - public TimeSpan TriggerTime = TimeSpan.Zero; - - public override void Initialize(EntityManager entManager, Entity ritual, RitualPhaseEdge edge) - { - entManager.EnsureComponent(ritual, out var trigger); - trigger.Triggers.Add(this); - Edge = edge; - } - - public override string? GetGuidebookTriggerDescription(IPrototypeManager prototype, IEntitySystemManager entSys) - { - return Loc.GetString("cp14-ritual-trigger-timer-stable", ("time", Delay)); - } -} diff --git a/Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualTimerTriggerComponent.cs b/Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualTimerTriggerComponent.cs deleted file mode 100644 index c1293c83ac..0000000000 --- a/Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualTimerTriggerComponent.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Content.Shared._CP14.MagicRitualTrigger.Triggers; - -[RegisterComponent] -public sealed partial class CP14RitualTimerTriggerComponent : Component -{ - [DataField] - public HashSet Triggers = new(); -} diff --git a/Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualVoiceTrigger.cs b/Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualVoiceTrigger.cs deleted file mode 100644 index 3793c64761..0000000000 --- a/Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualVoiceTrigger.cs +++ /dev/null @@ -1,28 +0,0 @@ -using Content.Shared._CP14.MagicRitual; -using Robust.Shared.Prototypes; - -namespace Content.Shared._CP14.MagicRitualTrigger.Triggers; - -/// -/// Triggers a phase transition when the Ritual hears a certain message -/// -public sealed partial class CP14VoiceTrigger : CP14RitualTrigger -{ - [DataField] - public string Message = string.Empty; - - [DataField] - public int Speakers = 1; - - public override void Initialize(EntityManager entManager, Entity ritual, RitualPhaseEdge edge) - { - entManager.EnsureComponent(ritual, out var trigger); - trigger.Triggers.Add(this); - Edge = edge; - } - - public override string? GetGuidebookTriggerDescription(IPrototypeManager prototype, IEntitySystemManager entSys) - { - return Loc.GetString("cp14-ritual-trigger-voice", ("phrase", Message), ("count", Speakers)); - } -} diff --git a/Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualVoiceTriggerComponent.cs b/Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualVoiceTriggerComponent.cs deleted file mode 100644 index 9704086dbe..0000000000 --- a/Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualVoiceTriggerComponent.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Content.Shared._CP14.MagicRitualTrigger.Triggers; - -[RegisterComponent] -public sealed partial class CP14RitualVoiceTriggerComponent : Component -{ - [DataField] - public HashSet Triggers = new(); -} diff --git a/Resources/Prototypes/_CP14/Catalog/Cargo/Store/SpiceStream/buy.yml b/Resources/Prototypes/_CP14/Catalog/Cargo/Store/SpiceStream/buy.yml index bca044f7e2..b88c8032c5 100644 --- a/Resources/Prototypes/_CP14/Catalog/Cargo/Store/SpiceStream/buy.yml +++ b/Resources/Prototypes/_CP14/Catalog/Cargo/Store/SpiceStream/buy.yml @@ -29,6 +29,8 @@ amount: 3 - id: CP14SeedPepper amount: 3 + - id: CP14SeedCotton + amount: 3 - type: storePositionBuy @@ -182,9 +184,7 @@ components: - type: StorageFill contents: - - id: CP14EnergyCrystalSmallEmpty - amount: 5 - id: CP14EnergyCrystalMediumEmpty - amount: 3 + amount: 5 - id: CP14ManaOperationGlove amount: 2 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Catalog/Cargo/Store/Sylphoria/sell_special.yml b/Resources/Prototypes/_CP14/Catalog/Cargo/Store/Sylphoria/sell_special.yml index dcd5c82e48..57e390647e 100644 --- a/Resources/Prototypes/_CP14/Catalog/Cargo/Store/Sylphoria/sell_special.yml +++ b/Resources/Prototypes/_CP14/Catalog/Cargo/Store/Sylphoria/sell_special.yml @@ -48,26 +48,6 @@ proto: CP14SpellScrollBeerCreation count: 1 -- type: storePositionSell - id: CP14EnergyCrystalSmallEmpty - special: true - price: 70 - factions: - - Sylphoria - service: !type:CP14SellPrototypeService - proto: CP14EnergyCrystalSmallEmpty - count: 5 - -- type: storePositionSell - id: CP14EnergyCrystalMediumEmpty - special: true - price: 80 - factions: - - Sylphoria - service: !type:CP14SellPrototypeService - proto: CP14EnergyCrystalMediumEmpty - count: 3 - - type: storePositionSell id: CP14ClothingRingIceShards special: true diff --git a/Resources/Prototypes/_CP14/Catalog/Fills/closets.yml b/Resources/Prototypes/_CP14/Catalog/Fills/closets.yml index ccd5d48f87..642b81a6b7 100644 --- a/Resources/Prototypes/_CP14/Catalog/Fills/closets.yml +++ b/Resources/Prototypes/_CP14/Catalog/Fills/closets.yml @@ -100,7 +100,7 @@ - id: CP14BaseLightCrossbow - id: CP14CrossboltIron amount: 5 - - id: CP14EnergyCrystalSmall + - id: CP14EnergyCrystalMedium - id: CP14CrystalLampBlueEmpty - type: entity @@ -118,7 +118,7 @@ - id: CP14BaseShield - id: CP14ModularGripIronLongGuard amount: 2 - - id: CP14EnergyCrystalSmall + - id: CP14EnergyCrystalMedium - id: CP14CrystalLampBlueEmpty - id: CP14StampGuardCommander diff --git a/Resources/Prototypes/_CP14/Catalog/Fills/crates.yml b/Resources/Prototypes/_CP14/Catalog/Fills/crates.yml index a4c7a4bad9..853a00cb4c 100644 --- a/Resources/Prototypes/_CP14/Catalog/Fills/crates.yml +++ b/Resources/Prototypes/_CP14/Catalog/Fills/crates.yml @@ -75,7 +75,7 @@ - id: CP14CrystalLampBlueEmpty - id: CP14CrystalLampOrangeEmpty - id: CP14Rope - - id: CP14EnergyCrystalSmall + - id: CP14EnergyCrystalMediumEmpty - id: CP14d20Dice - id: CP14d6Dice - id: CP14CopperCoin5 diff --git a/Resources/Prototypes/_CP14/Entities/Mobs/NPC/Slimes/fire.yml b/Resources/Prototypes/_CP14/Entities/Mobs/NPC/Slimes/fire.yml index 20774dfad2..5d630cc192 100644 --- a/Resources/Prototypes/_CP14/Entities/Mobs/NPC/Slimes/fire.yml +++ b/Resources/Prototypes/_CP14/Entities/Mobs/NPC/Slimes/fire.yml @@ -64,8 +64,6 @@ - id: CP14FoodMeatLambCutletCooked - id: CP14ModularInlayQuartzFire - id: CP14CopperCoin1 - - id: CP14CrystalShardFire - weight: 3 - type: entity id: CP14AreaEntityEffectSlimeIgnite diff --git a/Resources/Prototypes/_CP14/Entities/Mobs/NPC/Slimes/ice.yml b/Resources/Prototypes/_CP14/Entities/Mobs/NPC/Slimes/ice.yml index b593e16fd6..e6273e1723 100644 --- a/Resources/Prototypes/_CP14/Entities/Mobs/NPC/Slimes/ice.yml +++ b/Resources/Prototypes/_CP14/Entities/Mobs/NPC/Slimes/ice.yml @@ -77,8 +77,6 @@ - id: CP14Snowball - id: CP14CopperCoin1 - id: CP14ModularInlayQuartzWater - - id: CP14CrystalShardWater - weight: 3 - type: entity id: CP14AreaEntityEffectSlimeFroze diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Flora/farm.yml b/Resources/Prototypes/_CP14/Entities/Objects/Flora/farm.yml index 34356abd6c..c0879d7be3 100644 --- a/Resources/Prototypes/_CP14/Entities/Objects/Flora/farm.yml +++ b/Resources/Prototypes/_CP14/Entities/Objects/Flora/farm.yml @@ -1,13 +1,12 @@ - type: entity id: CP14Wheat - parent: ProduceBase + parent: BaseItem name: wheat bushel description: You have the choice of either planting the grains again or grinding them into flour. categories: [ ForkFiltered ] components: - type: Item size: Tiny - - type: Produce - type: Sprite sprite: _CP14/Objects/Flora/Farm/wheat.rsi layers: @@ -22,3 +21,27 @@ tags: - CP14Wheat - CP14FarmFood + +- type: entity + id: CP14Cotton + parent: BaseItem + name: cotton + description: A plant raw fiber used to make cotton fabric. + categories: [ ForkFiltered ] + components: + - type: Item + size: Tiny + - type: Sprite + sprite: _CP14/Objects/Flora/Farm/cotton.rsi + layers: + - state: base1 + map: ["random"] + - type: RandomSprite + available: + - random: + base1: "" + base2: "" + base3: "" + - type: Tag + tags: + - CP14FarmFood diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Materials/misc.yml b/Resources/Prototypes/_CP14/Entities/Objects/Materials/misc.yml new file mode 100644 index 0000000000..a6899ee95a --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Objects/Materials/misc.yml @@ -0,0 +1,29 @@ +- type: entity + id: CP14CrystalShardQuartz + parent: BaseItem + name: quartz shard + description: Natural quartz crystals that can absorb the magical energy of the world around them. + categories: [ ForkFiltered ] + components: + - type: Tag + tags: + - CP14FitInMortar + - type: Item + size: Tiny + - type: Sprite + sprite: _CP14/Structures/Flora/Crystal/crystal_shard.rsi + layers: + - state: shard0 + map: ["random"] + - type: RandomSprite + available: + - random: + shard0: "" + shard1: "" + shard2: "" + shard3: "" + - type: Extractable + juiceSolution: + reagents: + - ReagentId: CP14GroundQuartz + Quantity: 7 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Specific/Farming/seeds.yml b/Resources/Prototypes/_CP14/Entities/Objects/Specific/Farming/seeds.yml index 3e4ce201a0..3929a26da7 100644 --- a/Resources/Prototypes/_CP14/Entities/Objects/Specific/Farming/seeds.yml +++ b/Resources/Prototypes/_CP14/Entities/Objects/Specific/Farming/seeds.yml @@ -100,3 +100,16 @@ - state: sage - type: CP14Seed plantProto: CP14PlantSage + +- type: entity + id: CP14SeedCotton + name: cotton seeds + description: Cotton seeds. It's time to grow some pants! + parent: CP14BaseSeed + components: + - type: Sprite + layers: + - state: bag + - state: cotton + - type: CP14Seed + plantProto: CP14PlantCotton diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Specific/Thaumaturgy/crystal.yml b/Resources/Prototypes/_CP14/Entities/Objects/Specific/Thaumaturgy/crystal.yml index 69de76e142..2225795c23 100644 --- a/Resources/Prototypes/_CP14/Entities/Objects/Specific/Thaumaturgy/crystal.yml +++ b/Resources/Prototypes/_CP14/Entities/Objects/Specific/Thaumaturgy/crystal.yml @@ -13,60 +13,19 @@ - type: CP14MagicEnergyContainer - type: CP14MagicEnergyExaminable -- type: entity - id: CP14EnergyCrystalSmall - parent: CP14EnergyCrystalBase - name: small energyshard - suffix: Full - components: - - type: Sprite - layers: - - state: small1 - shader: unshaded - map: ["random"] - - state: small_connector - - type: RandomSprite - available: - - random: - small1: "" - small2: "" - small3: "" - - type: CP14MagicEnergyContainer - energy: 30 - maxEnergy: 30 - -- type: entity - id: CP14EnergyCrystalSmallEmpty - parent: CP14EnergyCrystalSmall - suffix: Empty - components: - - type: CP14MagicEnergyContainer - energy: 0 - - - type: entity id: CP14EnergyCrystalMedium parent: CP14EnergyCrystalBase name: energyshard suffix: Full components: - - type: PointLight - radius: 1.2 - type: Sprite layers: - - state: medium1 - shader: unshaded - map: ["random"] + - state: medium - state: medium_connector - - type: RandomSprite - available: - - random: - medium1: "" - medium2: "" - medium3: "" - type: CP14MagicEnergyContainer - energy: 100 - maxEnergy: 100 + energy: 50 + maxEnergy: 50 - type: entity id: CP14EnergyCrystalMediumEmpty diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Tools/torch.yml b/Resources/Prototypes/_CP14/Entities/Objects/Tools/torch.yml index 15349e4887..d46d2b3f15 100644 --- a/Resources/Prototypes/_CP14/Entities/Objects/Tools/torch.yml +++ b/Resources/Prototypes/_CP14/Entities/Objects/Tools/torch.yml @@ -1,6 +1,8 @@ - type: entity id: CP14Torch - parent: BaseItem + parent: + - BaseItem + - CP14BaseTorch name: torch description: At its core, a stick burning on one side. Used to light up the area. categories: [ ForkFiltered ] @@ -15,30 +17,6 @@ shape: - 0,0,0,2 storedRotation: -65 - - type: CP14FlammableAmbientSound - - type: AmbientSound - enabled: false - volume: -5 - range: 5 - sound: - path: /Audio/Ambience/Objects/fireplace.ogg - - type: Appearance - - type: Reactive - groups: - Flammable: [ Touch ] - Extinguish: [ Touch ] - - type: Flammable - fireSpread: false - canResistFire: false - alwaysCombustible: true - canExtinguish: true - firestacksOnIgnite: 0.5 - damage: - types: - Heat: 0 - - type: CP14Fireplace - maxFuelLimit: 200 - fuel: 200 - type: FireVisuals sprite: _CP14/Objects/Tools/torch.rsi normalState: lit-overlay @@ -58,17 +36,6 @@ Empty: { state: torch-spent } Medium: { state: torch-unlit } Full: { state: torch-unlit } - - type: Damageable - damageContainer: Inorganic - damageModifierSet: Wood - - type: Destructible - thresholds: - - trigger: - !type:DamageTrigger - damage: 50 - behaviors: - - !type:DoActsBehavior - acts: [ "Destruction" ] - type: CP14DelayedIgnitionSource - type: CP14IgnitionModifier hideCaution: true @@ -86,7 +53,7 @@ - type: UseDelay - type: ExtinguishOnInteract extinguishAttemptSound: - path: /Audio/Items/candle_blowing.ogg #TODO sound + path: /Audio/Items/candle_blowing.ogg params: variation: 0.05 volume: 10 diff --git a/Resources/Prototypes/_CP14/Entities/Objects/ritual_describer.yml b/Resources/Prototypes/_CP14/Entities/Objects/ritual_describer.yml deleted file mode 100644 index 073d55a3c8..0000000000 --- a/Resources/Prototypes/_CP14/Entities/Objects/ritual_describer.yml +++ /dev/null @@ -1,25 +0,0 @@ -- type: entity - parent: BookBase - id: CP14RitualGrimoire - name: ritualist's grimoire - description: a book that holds the knowledge of hundreds of ritualists before you. Use it on an active ritual to get all the information about its current state. - categories: [ ForkFiltered ] - components: - - type: Sprite - sprite: Objects/Misc/books.rsi - layers: - - state: paper - - state: cover_old - color: "#a6161d" - - state: decor_bottom - color: "#6e1022" - - state: decor_wingette - color: "#4a101b" - - state: icon_pentagramm - color: "#911129" - - state: detail_bookmark - color: red - - type: CP14PaperPhaseDescriber - startPhase: CP14_NeutralCluster_Root - hyperlinks: - - CP14_NeutralCluster_Root \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Ritual/Graph/neutral_cluster.yml b/Resources/Prototypes/_CP14/Entities/Ritual/Graph/neutral_cluster.yml deleted file mode 100644 index 3b24ea224e..0000000000 --- a/Resources/Prototypes/_CP14/Entities/Ritual/Graph/neutral_cluster.yml +++ /dev/null @@ -1,55 +0,0 @@ -- type: entity - parent: CP14BaseRitualPhase - abstract: true - id: CP14_NeutralCluster_Base - components: - - type: CP14MagicRitualPhase - phaseColor: "#FFFFFF" - - type: ActiveListener - range: 3 - -- type: entity - parent: CP14_NeutralCluster_Base - id: CP14_NeutralCluster_Root - name: Te-Se-Ra - description: The perfect energetic position to begin any ritual. - categories: [ HideSpawnMenu ] - components: - - type: CP14MagicRitualPhase - edges: - - target: CP14_NeutralCluster_00 - triggers: - - !type:CP14SacrificeWhitelistTrigger - whitelist: - components: - - MobState - whitelistDesc: cp14-ritual-category-all-living - -- type: entity - parent: CP14_NeutralCluster_Base - id: CP14_NeutralCluster_00 - name: Li-Ra - categories: [ HideSpawnMenu ] - components: - - type: CP14MagicRitualPhase - edges: - - target: CP14RitualEnd - triggers: - - !type:CP14VoiceTrigger - message: "Vespere nebula" - actions: - - !type:ApplyEntityEffect - maxEntities: 3 - vfx: CP14ImpactEffectCureWounds - whitelist: - components: - - HumanoidAppearance - effects: - - !type:HealthChange - damage: - types: - Asphyxiation: -50 - Bloodloss: -10 - - !type:ModifyBleedAmount - - !type:ModifyBloodLevel - - !type:Jitter \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Ritual/basic.yml b/Resources/Prototypes/_CP14/Entities/Ritual/basic.yml deleted file mode 100644 index 294083e95b..0000000000 --- a/Resources/Prototypes/_CP14/Entities/Ritual/basic.yml +++ /dev/null @@ -1,23 +0,0 @@ -- type: entity - id: CP14BaseRitualPhase - abstract: true - components: - - type: CP14MagicRitualPhase - - type: Tag - tags: - - HideContextMenu - - type: PointLight - - type: EmitSoundOnSpawn - sound: - path: /Audio/Effects/tesla_consume.ogg - params: - variation: 0.3 - -- type: entity - parent: CP14BaseRitualPhase - id: CP14RitualEnd - name: end of ritual - categories: [ HideSpawnMenu ] - components: - - type: CP14MagicRitualPhase - deadEnd: true \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Ritual/orbs.yml b/Resources/Prototypes/_CP14/Entities/Ritual/orbs.yml deleted file mode 100644 index 7081a34043..0000000000 --- a/Resources/Prototypes/_CP14/Entities/Ritual/orbs.yml +++ /dev/null @@ -1,39 +0,0 @@ -- type: entity - id: CP14BaseRitualOrb - abstract: true - components: - - type: Transform - - type: Physics - canCollide: false - - type: Sprite - sprite: _CP14/Effects/Magic/ritual_orbs.rsi - drawDepth: Mobs - noRot: true - -#- type: entity -# parent: CP14BaseRitualOrb -# id: CP14RitualOrbCreation -# name: creation orb -# categories: [ HideSpawnMenu] -# components: -# - type: CP14MagicRitualOrb -# powers: -# Creation: 1 -# - type: Sprite -# layers: -# - state: creation -# shader: unshaded -# -#- type: entity -# parent: CP14BaseRitualOrb -# id: CP14RitualOrbDestruction -# name: destruction orb -# categories: [ HideSpawnMenu] -# components: -# - type: CP14MagicRitualOrb -# powers: -# Destruction: 1 -# - type: Sprite -# layers: -# - state: destruction -# shader: unshaded \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Decorations/statues.yml b/Resources/Prototypes/_CP14/Entities/Structures/Decorations/statues.yml index fd05c1b2e8..b31f540030 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Decorations/statues.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Decorations/statues.yml @@ -11,10 +11,6 @@ sprite: _CP14/Structures/Decoration/statue_gob.rsi layers: - state: gob - - state: eyes - map: ["ritual"] - visible: false - shader: unshaded - state: wire map: ["wire"] visible: false @@ -55,8 +51,6 @@ CP14StoneBlock1: min: 4 max: 5 - - type: CP14MagicRitual - startPhase: CP14_NeutralCluster_Root - type: Appearance - type: HolidayVisuals holidays: @@ -82,10 +76,6 @@ - type: Sprite layers: - state: gob_vines - - state: eyes - map: ["ritual"] - visible: false - shader: unshaded - state: wire map: ["wire"] visible: false @@ -102,10 +92,6 @@ - type: Sprite layers: - state: gob_ruined - - state: eyes - map: ["ritual"] - visible: false - shader: unshaded - state: wire map: ["wire"] visible: false @@ -122,10 +108,6 @@ - type: Sprite layers: - state: gob_ruined_vines - - state: eyes - map: ["ritual"] - visible: false - shader: unshaded - state: wire map: ["wire"] visible: false @@ -146,10 +128,6 @@ sprite: _CP14/Structures/Decoration/angel_statue.rsi layers: - state: statue1 - - state: glow - map: ["ritual"] - visible: false - shader: unshaded drawdepth: Mobs offset: "0.0,0.5" - type: Fixtures @@ -184,8 +162,6 @@ CP14StoneBlock1: min: 4 max: 5 - - type: CP14MagicRitual - startPhase: CP14_NeutralCluster_Root - type: Appearance - type: entity @@ -196,10 +172,6 @@ - type: Sprite layers: - state: statue2 - - state: glow - map: ["ritual"] - visible: false - shader: unshaded - type: entity id: CP14StatueAngelLimestone @@ -209,10 +181,6 @@ - type: Sprite layers: - state: statue3 - - state: glow - map: ["ritual"] - visible: false - shader: unshaded - type: entity id: CP14StatueStoneHeadHigh diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Flora/Crystal/elemental.yml b/Resources/Prototypes/_CP14/Entities/Structures/Flora/Crystal/elemental.yml index 1a2548c97b..79aa6da757 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Flora/Crystal/elemental.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Flora/Crystal/elemental.yml @@ -68,7 +68,7 @@ # Normal - type: entity - id: CP14CrystalEmpty + id: CP14CrystalQuartz suffix: Normal parent: CP14CrystalBase components: @@ -89,171 +89,8 @@ collection: GlassBreak - !type:SpawnEntitiesBehavior spawn: - CP14CrystalShardBase: + CP14CrystalShardQuartz: min: 1 max: 2 - - !type:TriggerBehavior - !type:DoActsBehavior - acts: [ "Destruction" ] - -- type: entity - id: CP14CrystalEarth - parent: CP14CrystalBase - suffix: Terra - components: - - type: PointLight - color: "#70533f" - - type: Sprite - color: "#70533f" - - type: Destructible - thresholds: - - trigger: - !type:DamageTrigger - damage: 15 - behaviors: - - !type:PlaySoundBehavior - sound: - collection: GlassBreak - - !type:SpawnEntitiesBehavior - spawn: - CP14CrystalShardEarth: - min: 1 - max: 2 - - !type:TriggerBehavior - - !type:DoActsBehavior - acts: [ "Destruction" ] - -- type: entity - id: CP14CrystalFire - parent: CP14CrystalBase - suffix: Ignis - components: - - type: PointLight - color: "#d9741c" - - type: Sprite - color: "#d9741c" - - type: Destructible - thresholds: - - trigger: - !type:DamageTrigger - damage: 15 - behaviors: - - !type:PlaySoundBehavior - sound: - collection: GlassBreak - - !type:SpawnEntitiesBehavior - spawn: - CP14CrystalShardFire: - min: 1 - max: 2 - - !type:TriggerBehavior - - !type:DoActsBehavior - acts: [ "Destruction" ] - -- type: entity - id: CP14CrystalWater - parent: CP14CrystalBase - suffix: Aqua - components: - - type: PointLight - color: "#1c94d9" - - type: Sprite - color: "#1c94d9" - - type: Destructible - thresholds: - - trigger: - !type:DamageTrigger - damage: 15 - behaviors: - - !type:PlaySoundBehavior - sound: - collection: GlassBreak - - !type:SpawnEntitiesBehavior - spawn: - CP14CrystalShardWater: - min: 1 - max: 2 - - !type:TriggerBehavior - - !type:DoActsBehavior - acts: [ "Destruction" ] - -- type: entity - id: CP14CrystalAir - parent: CP14CrystalBase - suffix: Aer - components: - - type: PointLight - color: "#fdfe86" - - type: Sprite - color: "#fdfe86" - - type: Destructible - thresholds: - - trigger: - !type:DamageTrigger - damage: 15 - behaviors: - - !type:PlaySoundBehavior - sound: - collection: GlassBreak - - !type:SpawnEntitiesBehavior - spawn: - CP14CrystalShardAir: - min: 1 - max: 2 - - !type:TriggerBehavior - - !type:DoActsBehavior - acts: [ "Destruction" ] - -- type: entity - id: CP14CrystalOrder - parent: CP14CrystalBase - suffix: Ordo - components: - - type: PointLight - color: "#d9d9d9" - - type: Sprite - color: "#d9d9d9" - - type: Destructible - thresholds: - - trigger: - !type:DamageTrigger - damage: 15 - behaviors: - - !type:PlaySoundBehavior - sound: - collection: GlassBreak - - !type:SpawnEntitiesBehavior - spawn: - CP14CrystalShardOrder: - min: 1 - max: 2 - - !type:TriggerBehavior - - !type:DoActsBehavior - acts: [ "Destruction" ] - -- type: entity - id: CP14CrystalChaos - parent: CP14CrystalBase - suffix: Perditio - components: - - type: PointLight - color: "#5c5c5c" - - type: Sprite - color: "#5c5c5c" - - type: Destructible - thresholds: - - trigger: - !type:DamageTrigger - damage: 15 - behaviors: - - !type:PlaySoundBehavior - sound: - collection: GlassBreak - - !type:SpawnEntitiesBehavior - spawn: - CP14CrystalShardChaos: - min: 1 - max: 2 - - !type:TriggerBehavior - - !type:DoActsBehavior - acts: [ "Destruction" ] + acts: [ "Destruction" ] \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Flora/Crystal/shards.yml b/Resources/Prototypes/_CP14/Entities/Structures/Flora/Crystal/shards.yml deleted file mode 100644 index 119b66061b..0000000000 --- a/Resources/Prototypes/_CP14/Entities/Structures/Flora/Crystal/shards.yml +++ /dev/null @@ -1,102 +0,0 @@ -- type: entity - id: CP14CrystalShardBase - parent: BaseItem - name: quartz shard - description: Natural quartz crystals that can absorb the magical energy of the world around them. - categories: [ ForkFiltered ] - components: - - type: Tag - tags: - - CP14FitInMortar - - type: Item - size: Tiny - - type: Sprite - sprite: _CP14/Structures/Flora/Crystal/crystal_shard.rsi - layers: - - state: shard0 - map: ["random"] - - type: RandomSprite - available: - - random: - shard0: "" - shard1: "" - shard2: "" - shard3: "" - - type: Extractable - juiceSolution: - reagents: - - ReagentId: CP14GroundQuartz - Quantity: 7 - -- type: entity - parent: CP14CrystalShardBase - id: CP14CrystalShardEarth - name: terra quartz shard - components: - - type: Sprite - color: "#70533f" - - type: CP14MagicEssenceContainer - essences: - Earth: 3 - Crystal: 1 - -- type: entity - parent: CP14CrystalShardBase - id: CP14CrystalShardFire - name: ignis quartz shard - components: - - type: Sprite - color: "#d9741c" - - type: CP14MagicEssenceContainer - essences: - Fire: 3 - Crystal: 1 - -- type: entity - parent: CP14CrystalShardBase - id: CP14CrystalShardWater - name: aqua quartz shard - components: - - type: Sprite - color: "#1c94d9" - - type: CP14MagicEssenceContainer - essences: - Water: 3 - Crystal: 1 - -- type: entity - parent: CP14CrystalShardBase - id: CP14CrystalShardAir - name: aer quartz shard - components: - - type: Sprite - color: "#fdfe86" - - type: CP14MagicEssenceContainer - essences: - Air: 3 - Crystal: 1 - -- type: entity - parent: CP14CrystalShardBase - id: CP14CrystalShardOrder - name: ordo quartz shard - components: - - type: Sprite - color: "#d9d9d9" - - type: CP14MagicEssenceContainer - essences: - Order: 3 - Crystal: 1 - -- type: entity - parent: CP14CrystalShardBase - id: CP14CrystalShardChaos - name: perditio quartz shard - components: - - type: Sprite - color: "#5c5c5c" - - type: CP14MagicEssenceContainer - essences: - Chaos: 3 - Crystal: 1 - diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/cotton.yml b/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/cotton.yml new file mode 100644 index 0000000000..85ceb87ee2 --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/cotton.yml @@ -0,0 +1,26 @@ +- type: entity + id: CP14PlantCotton + parent: CP14GatherablePlantSingleHarvestBase + name: cotton + description: In a way, you're growing future clothes. + components: + - type: Sprite + offset: 0, 0.5 + drawdepth: Mobs + layers: + - state: liq-1 + map: ["enum.SolutionContainerLayers.Fill"] + visible: false + - state: grow-1 + sprite: _CP14/Structures/Flora/Farm/cotton.rsi + map: ["enum.PlantVisualLayers.Base"] + - type: CP14PlantGatherable + loot: + All: CP14GatherCotton + +- type: entityLootTable + id: CP14GatherCotton + entries: + - id: CP14Cotton + amount: 4 + maxAmount: 6 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Furniture/torch.yml b/Resources/Prototypes/_CP14/Entities/Structures/Furniture/torch.yml new file mode 100644 index 0000000000..fd413a0488 --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Structures/Furniture/torch.yml @@ -0,0 +1,184 @@ +- type: entity + id: CP14BaseTorch + abstract: true + description: A good, reliable light source. Too bad it doesn't last. + categories: [ ForkFiltered ] + components: + - type: InteractionOutline + - type: Damageable + damageContainer: Inorganic + damageModifierSet: Wood + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 30 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - type: CP14FlammableAmbientSound + - type: AmbientSound + enabled: false + volume: -15 + range: 5 + sound: + path: /Audio/Ambience/Objects/fireplace.ogg + - type: Reactive + groups: + Flammable: [ Touch ] + Extinguish: [ Touch ] + - type: Flammable + fireSpread: false + canResistFire: false + alwaysCombustible: true + canExtinguish: true + firestacksOnIgnite: 0.5 + damage: + types: + Heat: 0 + - type: CP14Fireplace + deleteOnEmpty: true + maxFuelLimit: 1800 + fuel: 1800 + - type: Appearance + - type: CP14IgnitionModifier + hideCaution: true + +- type: entity + id: CP14FloorTorch + parent: + - CP14BaseTorch + - BaseStructure + name: floor torch + components: + - type: Sprite + noRot: true + drawdepth: Mobs + sprite: _CP14/Structures/Furniture/torch_floor.rsi + offset: 0, 0.3 + layers: + - state: base + map: ["fuel"] + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeAabb + bounds: "-0.2,-0.2,0.2,0.2" + density: 1000 + layer: + - LowImpassable + - MidImpassable + - type: FireVisuals + sprite: _CP14/Structures/Furniture/torch_floor.rsi + normalState: fire + - type: GenericVisualizer + visuals: + enum.FireplaceFuelVisuals.Status: + fuel: + Empty: { state: burned } + Medium: { state: base } + Full: { state: base } + - type: Construction + graph: CP14FloorTorch + node: CP14FloorTorch + +- type: entity + parent: CP14FloorTorch + id: CP14FloorTorchIgnited + suffix: Ignited + components: + - type: CP14AutoIgnite + +- type: entity + id: CP14FloorTorchAlwaysPowered + name: floor torch + parent: BaseStructure + categories: [ ForkFiltered ] + suffix: Debug, Infinite + components: + - type: Sprite + noRot: true + drawdepth: Mobs + sprite: _CP14/Structures/Furniture/torch_floor.rsi + offset: 0, 0.3 + layers: + - state: base + - state: fire + shader: unshaded + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeAabb + bounds: "-0.2,-0.2,0.2,0.2" + density: 1000 + layer: + - LowImpassable + - MidImpassable + - type: PointLight + color: "#e67c34" + energy: 2 + radius: 8 + - type: AmbientSound + enabled: true + volume: -15 + range: 5 + sound: + path: /Audio/Ambience/Objects/fireplace.ogg + +- type: entity + id: CP14WallmountTorch + parent: + - CP14BaseTorch + - CP14BaseWallmount + name: wallmount torch + components: + - type: Sprite + sprite: _CP14/Structures/Furniture/wallmount_torch.rsi + layers: + - state: base + map: ["fuel"] + - type: FireVisuals + sprite: _CP14/Structures/Furniture/wallmount_torch.rsi + normalState: fire + - type: GenericVisualizer + visuals: + enum.FireplaceFuelVisuals.Status: + fuel: + Empty: { state: burned } + Medium: { state: base } + Full: { state: base } + - type: Construction + graph: CP14WallmountTorch + node: CP14WallmountTorch + +- type: entity + parent: CP14WallmountTorch + id: CP14WallmountTorchIgnited + suffix: Ignited + components: + - type: CP14AutoIgnite + +- type: entity + id: CP14WallmountTorchAlwaysPowered + name: wallmount torch + parent: CP14BaseWallmount + suffix: Debug, Infinite + components: + - type: Sprite + sprite: _CP14/Structures/Furniture/wallmount_torch.rsi + layers: + - state: base + - state: fire + shader: unshaded + - type: PointLight + color: "#e67c34" + energy: 2 + radius: 8 + - type: AmbientSound + enabled: true + volume: -15 + range: 5 + sound: + path: /Audio/Ambience/Objects/fireplace.ogg \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Furniture/wallmount.yml b/Resources/Prototypes/_CP14/Entities/Structures/Furniture/wallmount.yml index 743744b6b9..c26bbf4e14 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Furniture/wallmount.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Furniture/wallmount.yml @@ -15,90 +15,6 @@ - type: Physics canCollide: false -- type: entity - id: CP14WallmountTorch - name: wallmount torch - parent: CP14BaseWallmount - description: A good, reliable light source. Too bad it doesn't last. - components: - - type: Sprite - sprite: _CP14/Structures/Furniture/wallmount_torch.rsi - layers: - - state: base - map: ["fuel"] - - type: Damageable - damageContainer: Inorganic - damageModifierSet: Wood - - type: Destructible - thresholds: - - trigger: - !type:DamageTrigger - damage: 80 - behaviors: - - !type:DoActsBehavior - acts: [ "Destruction" ] - - type: CP14FlammableAmbientSound - - type: AmbientSound - enabled: false - volume: -15 - range: 5 - sound: - path: /Audio/Ambience/Objects/fireplace.ogg - - type: Reactive - groups: - Flammable: [ Touch ] - Extinguish: [ Touch ] - - type: Flammable - fireSpread: false - canResistFire: false - alwaysCombustible: true - canExtinguish: true - firestacksOnIgnite: 0.5 - damage: - types: - Heat: 0 - - type: CP14Fireplace - maxFuelLimit: 200 - fuel: 200 - - type: FireVisuals - sprite: _CP14/Structures/Furniture/wallmount_torch.rsi - normalState: fire - - type: Appearance - - type: GenericVisualizer - visuals: - enum.FireplaceFuelVisuals.Status: - fuel: - Empty: { state: burned } - Medium: { state: base } - Full: { state: base } - - type: Construction - graph: CP14WallmountTorch - node: CP14WallmountTorch - - type: CP14IgnitionModifier - hideCaution: true - -- type: entity - id: CP14WallmountTorchAlwaysPowered - name: always powered wallmount torch - parent: CP14BaseWallmount - components: - - type: Sprite - sprite: _CP14/Structures/Furniture/wallmount_torch.rsi - layers: - - state: base - - state: fire - shader: unshaded - - type: PointLight - color: "#e67c34" - energy: 2 - radius: 8 - - type: AmbientSound - enabled: true - volume: -15 - range: 5 - sound: - path: /Audio/Ambience/Objects/fireplace.ogg - - type: entity id: CP14WallmountBarShelfA name: bar shelf diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Furniture/wallmount_lamp.yml b/Resources/Prototypes/_CP14/Entities/Structures/Furniture/wallmount_lamp.yml index 16e70e455a..12d673a6da 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Furniture/wallmount_lamp.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Furniture/wallmount_lamp.yml @@ -22,7 +22,7 @@ - type: PointLight energy: 1 radius: 8 - color: "#b2ceeb" + color: "#dfe7f0" enabled: false - type: Appearance - type: GenericVisualizer @@ -41,14 +41,14 @@ thresholds: - trigger: !type:DamageTrigger - damage: 40 + damage: 20 behaviors: - !type:DoActsBehavior acts: [ "Destruction" ] - type: CP14MagicLantern - type: CP14MagicEnergyDraw energy: -0.1 - delay: 6 + delay: 12 - type: Construction graph: CP14WallmountLampEmpty node: CP14WallmountLampEmpty @@ -75,7 +75,7 @@ - type: ItemSlots slots: crystal_slot: - startingItem: CP14EnergyCrystalSmall + startingItem: CP14EnergyCrystalMedium insertSound: path: /Audio/_CP14/Items/crystal_insert.ogg params: diff --git a/Resources/Prototypes/_CP14/Entities/Structures/crystal.yml b/Resources/Prototypes/_CP14/Entities/Structures/crystal.yml deleted file mode 100644 index 2430025711..0000000000 --- a/Resources/Prototypes/_CP14/Entities/Structures/crystal.yml +++ /dev/null @@ -1,135 +0,0 @@ -# Wallmount crystall - -- type: entity - id: CP14WallmountCrystalBase - parent: - - CP14BaseWallmount - abstract: true - name: sparkling quartz - description: bioluminescent quartz crystals that can take on any color - a very handy light source in a deep caves. Unfortunately, the luminous properties are very hard to preserve. - categories: [ ForkFiltered ] - components: - - type: Sprite - drawdepth: Mobs - sprite: _CP14/Structures/Wallmount/wallmount_crystal.rsi - layers: - - state: crystal1 - map: ["random"] - shader: unshaded - - type: MeleeSound - soundGroups: - Brute: - collection: GlassSmash - - type: Damageable - damageContainer: Inorganic - damageModifierSet: Glass - - type: Destructible - thresholds: - - trigger: - !type:DamageTrigger - damage: 80 - behaviors: - - !type:DoActsBehavior - acts: [ "Destruction" ] - - trigger: - !type:DamageTrigger - damage: 20 - behaviors: - - !type:PlaySoundBehavior - sound: - collection: GlassBreak - - !type:DoActsBehavior - acts: [ "Destruction" ] - - type: Fixtures - fixtures: - fix1: - shape: - !type:PhysShapeAabb - bounds: "0.49,0.49,-0.49,0.36" - density: 60 - mask: - - MachineMask - layer: - - MidImpassable - - LowImpassable - - type: RandomSprite - available: - - random: - crystal1: Inherit - crystal2: Inherit - crystal3: Inherit - - type: PointLight - radius: 1.5 - energy: 1 - -- type: entity - id: CP14WallmountCrystalRubies - parent: CP14WallmountCrystalBase - suffix: Red - components: - - type: Sprite - color: "#ff3d0b" - - type: RandomSprite - cP14InheritBaseColor: "#ff3d0b" - - type: PointLight - color: "#ff3d0b" - -- type: entity - id: CP14WallmountCrystalTopazes - parent: CP14WallmountCrystalBase - suffix: Yellow - components: - - type: Sprite - color: "#ffe269" - - type: RandomSprite - cP14InheritBaseColor: "#ffe269" - - type: PointLight - color: "#ffe269" - -- type: entity - id: CP14WallmountCrystalEmeralds - parent: CP14WallmountCrystalBase - suffix: Green - components: - - type: Sprite - color: "#30be81" - - type: RandomSprite - cP14InheritBaseColor: "#30be81" - - type: PointLight - color: "#30be81" - -- type: entity - id: CP14WallmountCrystalSapphires - parent: CP14WallmountCrystalBase - suffix: Cyan - components: - - type: Sprite - color: "#5eabeb" - - type: RandomSprite - cP14InheritBaseColor: "#5eabeb" - - type: PointLight - color: "#5eabeb" - -- type: entity - id: CP14WallmountCrystalAmethysts - parent: CP14WallmountCrystalBase - suffix: Purple - components: - - type: Sprite - color: "#a878d1" - - type: RandomSprite - cP14InheritBaseColor: "#a878d1" - - type: PointLight - color: "#a878d1" - -- type: entity - id: CP14WallmountCrystalDiamonds - parent: CP14WallmountCrystalBase - suffix: White - components: - - type: Sprite - color: "#f8f8f8" - - type: RandomSprite - cP14InheritBaseColor: "#f8f8f8" - - type: PointLight - color: "#f8f8f8" \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/Reward/crystals.yml b/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/Reward/crystals.yml index 2082cd9bab..4d5446b23f 100644 --- a/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/Reward/crystals.yml +++ b/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/Reward/crystals.yml @@ -1,151 +1,15 @@ - - type: cp14DemiplaneModifier - id: CrystalNormal + id: Quartz levels: min: 1 - max: 3 - generationWeight: 0.1 + max: 8 categories: Reward: 0.1 layers: - !type:OreDunGen tileMask: - CP14FloorBase - entity: CP14CrystalEmpty + entity: CP14CrystalQuartz count: 30 minGroupSize: 1 - maxGroupSize: 5 - -# TIER 2 - -- type: cp14DemiplaneModifier - id: CrystalFire - levels: - min: 4 - max: 10 - generationWeight: 0.1 - categories: - Reward: 0.1 - requiredTags: - - CP14DemiplaneHot - layers: - - !type:OreDunGen - entity: CP14CrystalFire - count: 30 - minGroupSize: 1 - maxGroupSize: 5 - - !type:OreDunGen - entity: CP14EssenceNodeFire - count: 3 - minGroupSize: 1 - maxGroupSize: 1 - -- type: cp14DemiplaneModifier - id: CrystalEarth - levels: - min: 4 - max: 10 - generationWeight: 0.1 - categories: - Reward: 0.1 - requiredTags: - - CP14DemiplaneUnderground - blacklistTags: - - CP14DemiplaneOpenSky - layers: - - !type:OreDunGen - entity: CP14CrystalEarth - count: 30 - minGroupSize: 1 - maxGroupSize: 5 - - !type:OreDunGen - entity: CP14EssenceNodeEarth - count: 3 - minGroupSize: 1 - maxGroupSize: 1 - -- type: cp14DemiplaneModifier - id: CrystalWater - levels: - min: 4 - max: 10 - generationWeight: 0.1 - categories: - Reward: 0.1 - requiredTags: - - CP14DemiplaneWater - layers: - - !type:OreDunGen - entity: CP14CrystalWater - count: 30 - minGroupSize: 1 - maxGroupSize: 5 - - !type:OreDunGen - entity: CP14EssenceNodeWater - count: 3 - minGroupSize: 1 - maxGroupSize: 1 - -- type: cp14DemiplaneModifier - id: CrystalAir - levels: - min: 4 - max: 10 - generationWeight: 0.1 - categories: - Reward: 0.1 - requiredTags: - - CP14DemiplaneOpenSky - blacklistTags: - - CP14DemiplaneUnderground - layers: - - !type:OreDunGen - entity: CP14CrystalAir - count: 30 - minGroupSize: 1 - maxGroupSize: 5 - - !type:OreDunGen - entity: CP14EssenceNodeAir - count: 3 - minGroupSize: 1 - maxGroupSize: 1 - -- type: cp14DemiplaneModifier - id: CrystalOrder - levels: - min: 4 - max: 10 - generationWeight: 0.1 - categories: - Reward: 0.1 - layers: - - !type:OreDunGen - entity: CP14CrystalOrder - count: 30 - minGroupSize: 1 - maxGroupSize: 5 - - !type:OreDunGen - entity: CP14EssenceNodeOrder - count: 3 - minGroupSize: 1 - maxGroupSize: 1 - -- type: cp14DemiplaneModifier - id: CrystalChaos - levels: - min: 4 - max: 10 - generationWeight: 0.1 - categories: - Reward: 0.1 - layers: - - !type:OreDunGen - entity: CP14CrystalChaos - count: 30 - minGroupSize: 1 - maxGroupSize: 5 - - !type:OreDunGen - entity: CP14EssenceNodeChaos - count: 3 - minGroupSize: 1 - maxGroupSize: 1 \ No newline at end of file + maxGroupSize: 5 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Furniture/lighting.yml b/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Furniture/lighting.yml index d8b02a1b6f..f89e28747b 100644 --- a/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Furniture/lighting.yml +++ b/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Furniture/lighting.yml @@ -9,10 +9,10 @@ - to: CP14Bonfire steps: - material: CP14Stone - amount: 3 + amount: 2 doAfter: 2 - stackGroup: WoodenPlanks - amount: 2 + amount: 1 doAfter: 2 - node: CP14Bonfire diff --git a/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Furniture/mannequin.yml b/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Furniture/mannequin.yml index 3e451d18ef..3d359ca282 100644 --- a/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Furniture/mannequin.yml +++ b/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Furniture/mannequin.yml @@ -11,7 +11,7 @@ - !type:SnapToGrid { } steps: - stackGroup: WoodenPlanks - amount: 5 + amount: 2 doAfter: 3 - node: CP14mannequin entity: CP14Mannequin @@ -21,7 +21,7 @@ - !type:EmptyAllContainers - !type:SpawnPrototype prototype: CP14WoodenPlanks1 - amount: 5 + amount: 2 steps: - tool: CP14Hammering doAfter: 3 diff --git a/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Furniture/orders_border.yml b/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Furniture/orders_border.yml index 741908c9df..9a8e185606 100644 --- a/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Furniture/orders_border.yml +++ b/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Furniture/orders_border.yml @@ -9,7 +9,7 @@ - to: CP14WallmountOrdersBorder steps: - stackGroup: WoodenPlanks - amount: 3 + amount: 1 doAfter: 3 - node: CP14WallmountOrdersBorder diff --git a/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Structures/Wallmount/lighting.yml b/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Structures/Furniture/lighting.yml similarity index 61% rename from Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Structures/Wallmount/lighting.yml rename to Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Structures/Furniture/lighting.yml index 0cd8ae795b..471ffd24d1 100644 --- a/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Structures/Wallmount/lighting.yml +++ b/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Structures/Furniture/lighting.yml @@ -9,8 +9,8 @@ - to: CP14WallmountTorch steps: - stackGroup: WoodenPlanks - amount: 3 - doAfter: 3 + amount: 1 + doAfter: 1 - material: CP14Cloth amount: 1 doAfter: 1 @@ -18,6 +18,26 @@ - node: CP14WallmountTorch entity: CP14WallmountTorch +- type: constructionGraph + id: CP14FloorTorch + start: start + graph: + - node: start + actions: + - !type:DestroyEntity {} + edges: + - to: CP14FloorTorch + steps: + - stackGroup: WoodenPlanks + amount: 1 + doAfter: 1 + - material: CP14Cloth + amount: 1 + doAfter: 1 + + - node: CP14FloorTorch + entity: CP14FloorTorch + - type: constructionGraph id: CP14WallmountLampEmpty start: start diff --git a/Resources/Prototypes/_CP14/Recipes/Construction/structures.yml b/Resources/Prototypes/_CP14/Recipes/Construction/structures.yml index 6407c816a1..de8c7fd797 100644 --- a/Resources/Prototypes/_CP14/Recipes/Construction/structures.yml +++ b/Resources/Prototypes/_CP14/Recipes/Construction/structures.yml @@ -9,7 +9,7 @@ category: construction-category-structures icon: sprite: _CP14/Structures/Furniture/wallmount_torch.rsi - state: fire + state: base objectType: Structure placementMode: SnapgridCenter canBuildInImpassable: false @@ -18,6 +18,24 @@ - !type:TileNotBlocked - !type:CP14WallRequired +- type: construction + crystallPunkAllowed: true + name: floor torch + description: A good, reliable light source. Too bad it doesn't last. + id: CP14FloorTorch + graph: CP14FloorTorch + startNode: start + targetNode: CP14FloorTorch + category: construction-category-structures + icon: + sprite: _CP14/Structures/Furniture/torch_floor.rsi + state: base + objectType: Structure + placementMode: SnapgridCenter + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked + - type: construction crystallPunkAllowed: true name: crystal wall lamp diff --git a/Resources/Prototypes/_CP14/Recipes/Crafting/Graphs/improvised/torch.yml b/Resources/Prototypes/_CP14/Recipes/Crafting/Graphs/improvised/torch.yml index 9968fae8ac..f89cb8853a 100644 --- a/Resources/Prototypes/_CP14/Recipes/Crafting/Graphs/improvised/torch.yml +++ b/Resources/Prototypes/_CP14/Recipes/Crafting/Graphs/improvised/torch.yml @@ -7,7 +7,7 @@ - to: cp14torch steps: - material: CP14WoodenPlanks - amount: 3 + amount: 1 - material: CP14Cloth amount: 1 doAfter: 4 diff --git a/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/misc.yml b/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/misc.yml index 66adfe0f97..e13188f5a7 100644 --- a/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/misc.yml +++ b/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/misc.yml @@ -288,3 +288,16 @@ count: 1 result: CP14LockMithril +- type: CP14Recipe + id: CP14EnergyCrystalMediumEmpty + tag: CP14RecipeAnvil + category: Tools + craftTime: 2 + requirements: + - !type:ProtoIdResource + protoId: CP14CrystalShardQuartz + count: 1 + - !type:StackResource + stack: CP14CopperBar + count: 1 + result: CP14EnergyCrystalMediumEmpty \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Recipes/Workbench/CookingTable/seeds.yml b/Resources/Prototypes/_CP14/Recipes/Workbench/CookingTable/seeds.yml index 2f51e7e5c6..1e6355b4b4 100644 --- a/Resources/Prototypes/_CP14/Recipes/Workbench/CookingTable/seeds.yml +++ b/Resources/Prototypes/_CP14/Recipes/Workbench/CookingTable/seeds.yml @@ -60,7 +60,7 @@ protoId: CP14FoodPepper count: 1 result: CP14SeedPepper - resultCount: 3 + resultCount: 2 - type: CP14Recipe id: CP14SeedSage @@ -71,4 +71,15 @@ protoId: CP14WildSage count: 1 result: CP14SeedSage - resultCount: 1 + resultCount: 2 + +- type: CP14Recipe + id: CP14SeedCotton + tag: CP14RecipeCooking + craftTime: 1 + requirements: + - !type:ProtoIdResource + protoId: CP14Cotton + count: 1 + result: CP14SeedCotton + resultCount: 2 diff --git a/Resources/Prototypes/_CP14/Recipes/Workbench/Workbench/misc.yml b/Resources/Prototypes/_CP14/Recipes/Workbench/Workbench/misc.yml index 3260bc9185..a7e42aa549 100644 --- a/Resources/Prototypes/_CP14/Recipes/Workbench/Workbench/misc.yml +++ b/Resources/Prototypes/_CP14/Recipes/Workbench/Workbench/misc.yml @@ -159,7 +159,7 @@ - !type:StackGroupResource group: WoodenPlanks - !type:ProtoIdResource - protoId: CP14CrystalShardBase + protoId: CP14CrystalShardQuartz result: CP14CrayonWhite - type: CP14Recipe diff --git a/Resources/Prototypes/_CP14/Recipes/Workbench/furnace.yml b/Resources/Prototypes/_CP14/Recipes/Workbench/furnace.yml index 3ada6f8d61..50b51f8f31 100644 --- a/Resources/Prototypes/_CP14/Recipes/Workbench/furnace.yml +++ b/Resources/Prototypes/_CP14/Recipes/Workbench/furnace.yml @@ -41,10 +41,11 @@ - type: CP14Recipe id: CP14GlassSheet1 tag: CP14RecipeMeltingFurnace - craftTime: 4 + craftTime: 2 requirements: - !type:ProtoIdResource - protoId: CP14CrystalShardBase + protoId: CP14CrystalShardQuartz + count: 1 result: CP14GlassSheet1 - type: CP14Recipe diff --git a/Resources/Prototypes/_CP14/Recipes/Workbench/sewing_table.yml b/Resources/Prototypes/_CP14/Recipes/Workbench/sewing_table.yml index 1c9d132818..1b0d866d6b 100644 --- a/Resources/Prototypes/_CP14/Recipes/Workbench/sewing_table.yml +++ b/Resources/Prototypes/_CP14/Recipes/Workbench/sewing_table.yml @@ -1,3 +1,13 @@ +- type: CP14Recipe + id: CP14ClothMaterialCotton + tag: CP14RecipeSewing + craftTime: 2 + requirements: + - !type:ProtoIdResource + protoId: CP14Cotton + count: 2 + result: CP14Cloth1 + - type: CP14Recipe id: CP14ClothingShirtCottonBlue tag: CP14RecipeSewing diff --git a/Resources/Prototypes/_CP14/Roles/Jobs/Artisan/alchemist.yml b/Resources/Prototypes/_CP14/Roles/Jobs/Artisan/alchemist.yml index 6ab2949431..865f259a98 100644 --- a/Resources/Prototypes/_CP14/Roles/Jobs/Artisan/alchemist.yml +++ b/Resources/Prototypes/_CP14/Roles/Jobs/Artisan/alchemist.yml @@ -19,8 +19,8 @@ id: CP14AlchemistGear storage: back: - - CP14EnergyCrystalSmall - - CP14EnergyCrystalSmall + - CP14EnergyCrystalMedium + - CP14EnergyCrystalMedium equipment: belt1: CP14WalletFilledTest keys: CP14KeyRingAlchemist diff --git a/Resources/Prototypes/_CP14/Roles/Jobs/Artisan/apprentice.yml b/Resources/Prototypes/_CP14/Roles/Jobs/Artisan/apprentice.yml index 51bf92b2b1..8fb12ea307 100644 --- a/Resources/Prototypes/_CP14/Roles/Jobs/Artisan/apprentice.yml +++ b/Resources/Prototypes/_CP14/Roles/Jobs/Artisan/apprentice.yml @@ -11,8 +11,8 @@ id: CP14ApprenticeGear storage: back: - - CP14EnergyCrystalSmall - - CP14EnergyCrystalSmall + - CP14EnergyCrystalMedium + - CP14EnergyCrystalMedium equipment: keys: CP14BaseKeyRing belt1: CP14WalletFilledTest \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Roles/Jobs/Artisan/blacksmith.yml b/Resources/Prototypes/_CP14/Roles/Jobs/Artisan/blacksmith.yml index 774a0d5c2f..8126c96418 100644 --- a/Resources/Prototypes/_CP14/Roles/Jobs/Artisan/blacksmith.yml +++ b/Resources/Prototypes/_CP14/Roles/Jobs/Artisan/blacksmith.yml @@ -15,8 +15,8 @@ id: CP14BlacksmithGear storage: back: - - CP14EnergyCrystalSmall - - CP14EnergyCrystalSmall + - CP14EnergyCrystalMedium + - CP14EnergyCrystalMedium equipment: belt1: CP14WalletFilledTest keys: CP14KeyRingBlacksmith \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Roles/Jobs/Artisan/innkeeper.yml b/Resources/Prototypes/_CP14/Roles/Jobs/Artisan/innkeeper.yml index a5aa1ad380..3ce1ff25e1 100644 --- a/Resources/Prototypes/_CP14/Roles/Jobs/Artisan/innkeeper.yml +++ b/Resources/Prototypes/_CP14/Roles/Jobs/Artisan/innkeeper.yml @@ -11,7 +11,7 @@ id: CP14InnkeeperGear storage: back: - - CP14EnergyCrystalSmall + - CP14EnergyCrystalMedium equipment: belt1: CP14WalletFilledTest keys: CP14KeyRingInnkeeper \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Roles/Jobs/Mercenary/adventurer.yml b/Resources/Prototypes/_CP14/Roles/Jobs/Mercenary/adventurer.yml index 14409b1eec..851bfa2af1 100644 --- a/Resources/Prototypes/_CP14/Roles/Jobs/Mercenary/adventurer.yml +++ b/Resources/Prototypes/_CP14/Roles/Jobs/Mercenary/adventurer.yml @@ -11,8 +11,8 @@ id: CP14AdventurerGear storage: back: - - CP14EnergyCrystalSmall - - CP14EnergyCrystalSmall + - CP14EnergyCrystalMedium + - CP14EnergyCrystalMedium equipment: keys: CP14BaseKeyRing belt1: CP14WalletFilledTest \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Roles/Jobs/Mercenary/guildmaster.yml b/Resources/Prototypes/_CP14/Roles/Jobs/Mercenary/guildmaster.yml index bcdb613c54..3dfd695627 100644 --- a/Resources/Prototypes/_CP14/Roles/Jobs/Mercenary/guildmaster.yml +++ b/Resources/Prototypes/_CP14/Roles/Jobs/Mercenary/guildmaster.yml @@ -29,7 +29,7 @@ id: CP14GuildmasterGear storage: back: - - CP14EnergyCrystalSmall + - CP14EnergyCrystalMedium equipment: belt1: CP14WalletFilledTest keys: CP14KeyRingGuildmaster diff --git a/Resources/Prototypes/_CP14/Roles/Jobs/Traders/merchant.yml b/Resources/Prototypes/_CP14/Roles/Jobs/Traders/merchant.yml index 93e6824b18..bb139cb541 100644 --- a/Resources/Prototypes/_CP14/Roles/Jobs/Traders/merchant.yml +++ b/Resources/Prototypes/_CP14/Roles/Jobs/Traders/merchant.yml @@ -14,8 +14,8 @@ id: CP14MerchantGear storage: back: - - CP14EnergyCrystalSmall - - CP14EnergyCrystalSmall + - CP14EnergyCrystalMedium + - CP14EnergyCrystalMedium equipment: belt1: CP14WalletFilledTest keys: CP14KeyRingMerchant \ No newline at end of file diff --git a/Resources/ServerInfo/_CP14/Guidebook_EN/JobsTabs/AlchemistTabs/Alchemy.xml b/Resources/ServerInfo/_CP14/Guidebook_EN/JobsTabs/AlchemistTabs/Alchemy.xml index 5d8588b604..787ab25db9 100644 --- a/Resources/ServerInfo/_CP14/Guidebook_EN/JobsTabs/AlchemistTabs/Alchemy.xml +++ b/Resources/ServerInfo/_CP14/Guidebook_EN/JobsTabs/AlchemistTabs/Alchemy.xml @@ -19,14 +19,6 @@ - - - - - - - - Most "raw" ingredients can first be ground using a mortar and pestle: diff --git a/Resources/ServerInfo/_CP14/Guidebook_RU/JobsTabs/AlchemistTabs/Alchemy.xml b/Resources/ServerInfo/_CP14/Guidebook_RU/JobsTabs/AlchemistTabs/Alchemy.xml index 7ee910b2ee..78789197ca 100644 --- a/Resources/ServerInfo/_CP14/Guidebook_RU/JobsTabs/AlchemistTabs/Alchemy.xml +++ b/Resources/ServerInfo/_CP14/Guidebook_RU/JobsTabs/AlchemistTabs/Alchemy.xml @@ -19,14 +19,6 @@ - - - - - - - - Большая часть таких "сырых" ингредиентов может быть сначала измельчена при помощи пестика и ступки: diff --git a/Resources/Textures/_CP14/Objects/Flora/Farm/cotton.rsi/base1.png b/Resources/Textures/_CP14/Objects/Flora/Farm/cotton.rsi/base1.png new file mode 100644 index 0000000000000000000000000000000000000000..5ec1b0cbf800e29fb3f77ca15f8042d586055845 GIT binary patch literal 363 zcmV-x0hIoUP)Px$B}qgE3tsBp{Q?Wd1waSZ=$XW7psQMVyGZoE116 zU!jeSGBJr+B!%Fzn8KXSeyp4o(8h9A-rvOR`6INkOhimX3;?x~{=4mZKb}k}fPUo~RXJMi}YfxGDh!+r-mJfeAi0sxrP z8N+^um*JT1EpUWYx+L1J=j09P2qTt4jDPpP<7$;=GMP+jJ^|8-1_w(O$VmVI002ov JPDHLkV1l@Kp#lH^ literal 0 HcmV?d00001 diff --git a/Resources/Textures/_CP14/Objects/Flora/Farm/cotton.rsi/base2.png b/Resources/Textures/_CP14/Objects/Flora/Farm/cotton.rsi/base2.png new file mode 100644 index 0000000000000000000000000000000000000000..ea26b17ad8cc966413af625b35bf51a5aa85e231 GIT binary patch literal 356 zcmV-q0h|7bP)Px$9!W$&R9J=Wldo>WFc8MSO&b{+stN)M0%A~N7F6tq=tGPQ6^-moLK2N^@31#$ zEOo%L3aV(V`p%<+4ysdXw z%x55?(I&2jiZA9f0DwC*005&EyXJ^`zrPr3<|IVKMOiTsF%hxRilt6Ola1vId6u%# zswXaD)_Inl2yVn^#nySY&bQr*@aEyMXE2BXK_y8m@Ll&sS+UWIyXPjOD<-w|YT247 z%8K(W4J+K8yBPSZ=*bx7S<1IJ*O2%ua^9N{J^Vy3me0qW<93+ zL8v5Yw_Ltn;u&1LOP-~@?LJHQzY!#Akw_$RPCfy5x(fP$0mtP40000Px$I!Q!9R9J=Wm9b94Fcd{^5Gxz1GGxe*p&q(;%al11EbRFcCKmprODh(T_=IkZ z)Dj&mPo>I$6a-Hq(qnQ+5E4zCF5t7-mVNKL&$0oJ$K&}cC~bJYSaRQeM`MT+5y#;K zkLxEWZF-sLWnjKoa$7(|5d(nU?x43j06-j0dYjk_r43(RT{96e5j6toG~ptfHS_bu zva|jhdnKT>;W(TC_^LLSf&pNqHbGg{O#&C^XSlh&LoNl|gq&$tMns%T!9_M>rA;Rh zr45f7zlb8vrRa!Tk@nc$ja&*&r^)#JPp3&EoJ-N^x4joio5P6zWX4wfJ%xjdTiR`L zjXoG^qR3`kRy9sfj0000~c)dU~p9}X*zV_(J9{0HM3toJTfun-|7eHYN`wj4dTyk8QJd=OQ;hO zl-hghPsX~xwP#+0u1#@0vez`~Px$Hc3Q5R9J=Wluv5HKop066CLW#3O3LXqhuvLK$R{+uHd5E9zqJ9Ay9e<7umYa zvM7k{0gB5=B!y6DyNRtrr;EWqG%jW$xN*MSd(1q(d2eO_g+ie?b%^M~`^gvEjjJUM z@87?8XqSa+>_f}Dv1t^LM9YkrEJe|U)slv$QOM-i5_vlzyvg-q_BvT@;=A5CUdBHF zfJTiVj2MPpU0OnF1QnB_Vp0G=-}}V%%^3h7j2Id<0_QQ29*2~%>&5JCzKuWTt4t>V zpnrQITvxhft`{@Qrg$E1$I)^q!iXP!I$9tZ)P?Ixzk;WpK>|NT%b~b5c`oqN&FN*y z^$e3iodkXg%jObSZHmB8k0GB6XYGW_yNYotw0000Px#)k#D_R9J=Wlrav1Ko9^26@7seCM1N)7g!j=FKm5;@ex)$!q#6H3QJ!=Oz66D)*%)MqpSpolY;4_FHIvC@LUVW9g?LvaZ(WYHqiZ2iUm&TyG~uA68V;aqg9s5Zv0puP$TVu5=1CNe+!2LSdfr_=ZWItNrNcjrdC hU3af2ilQig!xKxsNB`*5njHWD002ovPDHLkV1n?ZaytM3 diff --git a/Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/medium2.png b/Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/medium2.png deleted file mode 100644 index 2b5935848a61d4e2c3d73272d097f56f7755e7aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}=R92;Ln2y} z6C_v{Cx`?vSn1XL^Is|H^CauehgZ@^r%is_FiBYc;j~~Wu9S9$tqdpmI->td9X+03 z_s5x2aF%sLV`JmPtB>P(+~568yD%Y1?RwlPnGX*Pj~oUGYzRzBO-M*kuoj6pv2{)( zqm&R2Pl5ZF2@e@2IX?)PD51P5IpJdAlY9A_oEq0?1WZUxsrdRsd=7uIa`(k6j3*c@ zy(Zi&DQsxcu`!c~v;Eh4NL_5gI%cj5rjExL T@G)Hu^cjPvtDnm{r-UW|u2^ba diff --git a/Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/medium3.png b/Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/medium3.png deleted file mode 100644 index 87a74db46fa600deccfea5e783a00b13236dbd55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 267 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}M?GB}Ln2y} z6C_v{Cx`@anC*ST`xL=Tv-s`@c86UemD2O3~l}U&ZIg@;5I! zY-4^Dw*O!KlY9AWyqal6y$jAT^2;r*`f;|u{!1x?(T2bz)o6WX%UK{*{~vs;XJd_Y zV>6626LDwhD4dw0#%;;h(8%8Z-?-zXk-?s-Kiv;GW~NPe%K%hXVbyS9{|Te^H6|N0 zLZ%2l>j*wxr)1ew;t(iuK!&mSilP^m6bzQ*u!sv{S(xJ5lw-qOkcBIHbGpIs{`x!f%rh?tA%qa3B(YXD*2?~O zu2yD*;&yT2gT%8puV8o`;O_VHjvW;{YaXMd{GX$AoHR*1U;Twbm0@H-{+bKYJ*$&AO` zM0_L%=W`xf!s%>LK`T3KrewwgV1KIrS^IAfFX1*dB*zy3-gjN+?Jrd?YFpQ>7ea`q a^8+PkPs-HU)(y-60000*55Fo~A$pF1LdLEZe86{9isT(&tIWq$``3tWx%1 z3r>#tSHIKbx&1EX6NMt&JNqp5RhTxX=4c$A?mg|lq=baTym+f~A09jso^&=*2 diff --git a/Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/meta.json b/Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/meta.json index 62c74e8f0b..265b8b03ba 100644 --- a/Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/meta.json +++ b/Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/meta.json @@ -5,28 +5,10 @@ "y": 32 }, "license": "CC-BY-SA-3.0", - "copyright": "Created by TheShuEd (Github) ", + "copyright": "Created by TheShuEd (Github)", "states": [ { - "name": "small1" - }, - { - "name": "small2" - }, - { - "name": "small3" - }, - { - "name": "small_connector" - }, - { - "name": "medium1" - }, - { - "name": "medium2" - }, - { - "name": "medium3" + "name": "medium" }, { "name": "medium_connector" diff --git a/Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/small1.png b/Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/small1.png deleted file mode 100644 index 480755d599a86ec19486bbfc0f308e00de7ca115..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 218 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}Q#@T9Ln2z= zUN+=nG8AcfD4%-JI6{x(k>ocW%hvV}dOJIoUKP6GCUEJ9Th65;5gpYH;st`wRy%b~ zPpn`R6#SXK{PgB+=OT1v56K+(8S?$M>GwZbmHYQHHaz~Bn0HX-LDlM(2#H^P3*WCv z&S9M6FPbpNNKwp5=kr~ECYdtn2bT|7JpH+c<9TrIPtLR6KXRR2T#mfr{V>JYGd1$O QH_&|yp00i_>zopr09j&KJ^%m! diff --git a/Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/small2.png b/Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/small2.png deleted file mode 100644 index 0165769c62690efde6f82899c3352e239f63d8ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 206 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}9iA?ZArY;~ z2@GLGx)`wTO>$5DIbl4S`y<{DyG3VL*KAo`m$SDy1 z@am&J+wOhgDb_&woZH{$Cf+@`p2vLN-`4JluQ@i!Ja~HK)W!o*BfN4ESiwa s^3~yZ>-qnW!}c%p>OPx#%}GQ-R9J=W(>)5pKoExEcl|4bSZP2Z5Ueb<6vQ*w*m?-D@Dv^*t&L}p6du7! zgn+_oBZ5do*DlyPsl<7@DfZjhon25$DfP=H%adE#o6D17@+@B2o7*0q0L;6dD61gd ze6l=cCqLg`(inLI`@|9N9&}no0A`zuXcVGr8!oH^2m^y3R2a0&0F3kB8^w<>8aGU{?q&6Q>gW2>N-3rO Z*Bf~QG&G;Lt62a5002ovPDHLkV1m1Eai;(P diff --git a/Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/small_connector.png b/Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/small_connector.png deleted file mode 100644 index c6209173e025b5ff32ac9955f2c7cef6de970012..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 196 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}b)GJcArY-_ z&+X-PNRVK8@cFWYPx$xk*GpRA_P6~0ND^EVcZA@+yu;JOGYi(klL-hPx%he*od!Goc~;58Tu^56)(+8#3MKM;8L?A>7c z4|pkbkhBI|4K@@)*FaD~Lxv8WiXq@C%j;lHIV+N^JH;t&@3ZQjbnn;qJpmexMx)Va zG#ZUYqtR&oA6(BORlDh|t7Mx8Q!$#(y3}gaFd8mP+uM%0ck%B(e&O?{uS(w+d8TUU z2Qh5Nd=SyB?6{sqMss&pqsg$Cuh}7+vM4z)8LybpWEk}72qQ`^VLK-IL5#Fhqv4WG z#w!K@twwF{;(0b@QBI-jS;R}I({GdU?lpLn`6aVTjN8fB9GyWLQc9QWS>y*XfL&7tU$)YUa&~@7z4s?c4-I;CrSg%^z;xE#yL=cCZa3TH zS&^cMbKrKfMHo@i1FDUz+%UFd5|0{hNRhNursqKT?I$iTt{Bf|`g~cGdmx?i#eB^~ ztrs&Om%*R$yQ=1%JS&!tYM;EMG2%?r4mMLYwoMh#&UgO^R#MMX!Zvo7(h zap#ZjzW9~$c z0#~6!b!Rd-i=u00000NkvXXu0mjfjuchK literal 0 HcmV?d00001 diff --git a/Resources/Textures/_CP14/Structures/Flora/Farm/cotton.rsi/grow-3.png b/Resources/Textures/_CP14/Structures/Flora/Farm/cotton.rsi/grow-3.png new file mode 100644 index 0000000000000000000000000000000000000000..e5c2817c4ca67c9456e40123ceb49ee33cc4eb68 GIT binary patch literal 1064 zcmV+@1lRkCP)Px&;z>k7RA_Pmv4`c%t7FS#q1i{m0QpmSAJMQVutcL`AASll4e)GLI-}h#K3of|e zf(tIV;6FyMU*P9_{~Ny#m@T%b)-q>Xg!TfOtt%F8JAEdy?S1KwCmLxhpj4V>|F>E6c033?G;q z*YUl6fs^b`33hzQVWf*m{`>ZxCl&h}XI3eODm`URed1z^M(j5vd+^-*`q4(YqsFK{vQtK}L4b7Ma%5esND zp{>JwCB;YGDN7fV-1ztoz%wi2I6tg;ff57a?`R}we|IaVG)I>;uQ-~4UcbOat(tdh zJ9GI;im#Sy{JySZ!}Q?6ht%awH zQ^oSa+N**n7fUF8uhuelpw!gFk2pSEOme_klAEn8*V)LPS1(J6*l^pBWGBezHR@xQ zucUZ15=5sxVbuKO=Mv;zaR{C^akG_m1aHl`g9W#0LJOqEHtJ4Ur#)f$N{U~HLjZQH zk#7>4oeC35`V*TG;M~M7&7ojsi>+M%(#0hI^7%a)^)ai~GMswBz}zThA5gRsa>a1V zysYJcxxv8Pz?yS=6aV=30kRzjo~5J0z+06C9I6*m?$b85Fe)xbFpE$0l{?a%sqp+3}MvfHrnC5_C{bfi~)6Mp>10 zy;`nOE)7|yJz=Zm8USG4t#OmPQZ{zlM@rcuP#_ertYc9k*Wr+7JAMo&>4LJQc*!Qe zhOzT~tNfc>>jG z>Z)X;Wi7ki*7>#LZct)?>a^HZ<<3m5RPG7#H4KfX?{0S7%ax_liA=s-$X8OfRi@I| zX-^mhCieu|@L~xSjh)-VkJ$=k3CV^Ia7sax0N||uDt6qfu~Xi}ZudIk%S8!Lz&du^ zt1Hzmqi$zq3WgdM^#Wo+$BrL^b{Q4V%3|<Px)(@8`@RA_bvR7B)yA zhsuIE$BP~UQbOs;9=70N##?tG=8!^ZYjcabX$WfqIq0Pogs7Ldhv7~B8DpIpwM!S@ z#pIuPllT4q_ul*72;A6>-PnzN*QV(z{g=Q0!)2V)S%r4nr>_0360~Cg_8--Bm4X3* zM$1?(6r+xV+HIdAomH*`gku1^?Nd-EL)6I-03;J-@o@AOy8FjSXBBF+=)#?4kc}20 z7!U(D<=Ox&CPVn}dK-H?UC1B+AQ%u>TL>fZ=)t-Enyyl#MM!5A>h2%o;pi>XpEt$} z9UTJ@{*rh+9m3eS59-s8=K9fL4~xkV_IA4X@Os+>XSc+o2UuGOBNz|>U*Xkzvd&*Ri$`hJ3H5Sll|qQxV!+ z-x8XxQZi8%OsRwR7XZM$(YpYEv2h>tTGPU9=6pOAq1cmQG+G4Cfolbz=_>8EPf>Z> z!{+*yU=R$byfT5kovs-;04!DjBpGs%6W0OX^WkDNj9ZgLZ1 zu5YeynKa`@chLTV$I~Gbg#8(EcXn!DtwJo=ICxn~$jvODs|s#%01$g(B=*bIHzJ>_ z3c1nEE!P3`sYsm+l~*RvXc0ClC$2@FBedzPLNX0FP;OkC>sz8wj1p4@Flb}nO+Jyz z+a7%PZ)0sC487Kb@8Hw~$0gY5NjT~QoM^&d5^}}ZT;CGB+pI8WVnYCoo=_-8N$#*S zu_5GhRl(1kTdrfbZ3M5^ngEQ`bVH*{RRB#_X`^xiz~}+%eS ze|>}BfBOl$?Nc;bgzo+^Vo!!maBl2U0J!EaY1?Ln;&nM`_jbDY^Iv-zEEJ<;m)Ys8Vy>~DEVt!*FEZB@ zDiou{^?H7G#3JSfDa?GXDmXWoGL284F=!}KpMG>bUb+%<{arC0&J~Ewslt5sLIH4g zo?uCG&^8i2pR2kF&%H4X_;Wg|kev#4qfUnY`STZg|2#_6$&h`bV}DIo>DpeJ$wBhx zcq&4LVw9Xn0rrt|0q{0ny2^G_wPQKW zd}nnDz#^e#nS7DTjHeyjIIGHG$VlAJmiptv_0sY#(q-~q`$|@58 z=9cSdv`)^<6hOo*#g`c`JvEF%F-jbWoigdHLTd|QOJiaQ4V;}R0GP^@*WJY88i1Wn zEWl)G4fMOTUTd17jb{qZnYrbmB4&ZAzT7$v!*GtJUjh1|{u zp3MmWyF`%XxGd4XSPx+K1oDDRA_|t{ts6$v3d@4%?;bsuiIqhI313~QW!yZaO zvRR}ZRw=AAEo&*wCWWnU3r!2QO)Rq=TVtSxI)-I?*jUUUED-`~2O~wu(U-G_?00)| zdz0K7(~ZGC5cJ-A&i#Go{Qi8ua|Qm#e;Co2SNz*HJXh~PHK2%8ZqM?#Mw6~epwi2t zF|TlTF{Cr4+rg0Av{9+t9@K!+FcMV>q;h*2iBlhcrd{{@;;g5m3HdD!HK2%eM$}wc zBALzzIJ;QY#c3D;09Z`yLJcV51;;G`0GxAi?Z!>beZuoe7M@Qszc0=z%@K`xMLHv( z1{9Is;^^sUg8V!!PBiAV?3Pst%uKE@XBWeWrx}UWA~@$_?))Vja2>?VV z_3Vb2J#$W|0YyY(UJ;FXg&I)Az^F@b&c*DRb7DQaApoFnuvZw7j>f#gN-Wg{eem@S z_G-qHA;FMar~ySIQ;W1b?>~~3$wi2Oe2-Q?7;}0N`pkf{jOaL55^Ew~^i4 zMo&kR=EoEdo_>2-rfPB6F?;5mHfHMBcl+}F=dC;(o=-AhT;#X7cJ1hiLm2TigHj-+ zN&x8TXu^*_48#zr)<0Fd9}m^(eqx;xw1Tka3RITz0)9w?uy0j11W5WH-0b)@nmKBQ*K4F9I`@D~x=zr=tns`6N>Vir}1!_ohF= zh^H984HNj^I@+3yG04VL2 zykfF@5$S6;Zi;BkD+WegS{jyRhg^-HS#cv-Kz>Yxjben1){`blA(NKlN>9>?O?9WQ zXw0j{NPdfBV$6Y5Zm&!#lQF5>9uliXEHA9FzQJDc(Xm&M%IzVY5eUyGSuo@l#m7T9 zqK>1xv)z(Sbray6i|E%&_&xtQ601eDwc5(=lP~vlG(AP&hi`vj(U@0UzFyGAjd+@$ zlG$cps*ur2UcO!c0Ne>DF?aqFj;Q1KJrC>@intO^0x0ErXBR_awFpnYT?^_`-EfIJ z;UuD8FNsv{^D@K3^HxnSp=KeY=6x}-i?&u9CdM4dZf;}tcg(8NBmQbr9s)njtCQm}GUOFRiYAS-O;Rx*>_(`% z1Abqe`F(M=nAk;6M-yfyS6F_Fqr0=6eg8`o0C45PJ?;6q)6;BV)FtFx?)SynVO7DY zsR+(q9LF2)yskY@zZ3EN7RO>@7tSsQXBR6Ihx>*+5p6RyCq@$4NNNm>x&*b4YCsWv zgS}75X{(y3W(<%KeqWr?r-+qYh&UR)bk*QM4@buepC!ECa&{A2Jk|p@^!kVQ_ zRFMF!(qdw_?BFUI^NQl*AuVVr0QIVq+)o}ib?iHBT=DS`S{!!xeQ`#CObS=tg<39D zk$_$z)1>uEWHSv>@$t}8>Xn4uzGIfGh^HBsuNSbqu*QNRx1j25Y6UC6R7X~?M5aR5)@p;Ziy@WU z!^D`QVsAibNJB%Y))&0m_CZ-+Fn9hEIOl?{>50!wu9UT(Mh%fs;%ErW^aXV60z8q( zW_tr!mQ&0;vy(b~UqA$mNLnTSk3vsC?#%ROqVhEwNA9zq6N!Cg0H8!-r%*(T!>$FZ z{`|iZ*0USpYB++~lgDvbRp9Bjn;uKBM1Vd(Q2L`4e&e0j(c&mo(TOpKX#?bRd-mdZ z**&v|U8V`>8|^C>?m?EqbEl`PexWfUPR$S1m0-v%=o6ILoiKGaN+0!rQc4WZC)r_D z(Tu&7SE~oIbQtk8gFZb0r8EsdOSfihGeyAfi!)j!ddc#_8k741qa0p~ z_@`fN0x0d~wHr4DVBU2ImV-DN^9udy^bPh3=W8#PNn|1ply<>LZtN6_xPSYh)?Zsa zk!Tpqq(P&iL=BNX-CBXAPx(TuDShRA_@ex1_utK!3aYN%J2rmuS4=vfA{X)>F#v0Gx!66 z{q)|`_r3f5`Q8E7xW+Y>LKrBzY7UiAmi$L0HVhOg&nr#nN=0O19mbR{B`=aJT$23y-Sj!y~rUy#-6@i0)CAtRey z7^r!o^SG^gNddJcw5|R#@?xIXans|y`n?WGQBtV>c>FT;t&vKKPf)JD47_Nm+UQ}Hdy@b?_^S>$AokY0!nqc+kuFeynU z%T}{!SvJiRmQPK2UMk6L7JO+iF(xaY0+W*6w%hg-zJ_=@!w(OB!oAJA008dX%JV3iOy*tsX5$9VXBUX4Genb#)9-a?_wd-^ zy*qTFfP0&FQ?@#u&d_Q$a6Y@hvlmDBKo+mwyiM$- zwWhKnO5F#zl05zE&%_)a2ZKCXbqBhvdAd|Dj zFDIqU72AD63gix6TPa=ER`a+NDA$_8tGsH-&4DVmT8iI2JWkncnbamWzFEi7$qC}K zDO$}2TFs>EEg~od*@XCXc--s*{az>Gk>nhcG(Q;*8{3?$vC3Fvt8KS1Nx&2+8=383 zY7tP>Rs%_olyv~67s@-BrHGrb*=l~*DSc1g9;Uz|2UF|IUvoo_W3Dzu_mTEG?_i4T zRVuT)ZJ%C_Pv#bZhS&l0US$X#d|#5Q~&?~07*qoM6N<$f~H$U ATmS$7 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_CP14/Structures/Flora/Farm/cotton.rsi/meta.json b/Resources/Textures/_CP14/Structures/Flora/Farm/cotton.rsi/meta.json new file mode 100644 index 0000000000..205c4b691c --- /dev/null +++ b/Resources/Textures/_CP14/Structures/Flora/Farm/cotton.rsi/meta.json @@ -0,0 +1,29 @@ +{ + "version": 1, + "license": "CC-BY-SA-4.0", + "copyright": "Created by omsoyk (Discord)", + "size": { + "x": 48, + "y": 48 + }, + "states": [ + { + "name": "grow-1" + }, + { + "name": "grow-2" + }, + { + "name": "grow-3" + }, + { + "name": "grow-4" + }, + { + "name": "grow-5" + }, + { + "name": "grow-6" + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/_CP14/Structures/Furniture/torch_floor.rsi/base.png b/Resources/Textures/_CP14/Structures/Furniture/torch_floor.rsi/base.png new file mode 100644 index 0000000000000000000000000000000000000000..51149cbfc8f809ec7aebcfd37cdb527243e8cea4 GIT binary patch literal 460 zcmV;-0WPx$hDk(0R9J=Wl|f4aK@@<$A`hj8=!%N$Aq1fyC4)|O3W9z>M9{4t8FZ_pL!glz zf+&hSWUz_2Drv@ch+Pyt)EnJBwBKoGVBh=Z&6^qU@$vEb@61Vm+}>EXhQ}Azx1v}J z(&WWL&KaBS4uB<*n3p8aXEP&n;ZTr#HZxY0-yo{MoAEx9Tm_Lpz0m|9p~dX-k4Vj2 zpjgOJs#K{rnk1tUQDP;5hvyga*$m-OkW!@zAQllF9lP0*(Fh4G=7_j*3IMu+6v=3W zdZWqB{Uc_(LpP9;gpzFmfWEPVK0NVsDT*V$2{*TPN6vit>eRiP5MXWb6}n>=jlm zE&Stem;+8KccNJ09+(!&0=?dsw*smt38=1KNub&NR8FoW5LpTUVD>E~nWPx$7D+@wR9J=Wl`(6=KorOS77L|VP-vzkh}fZ7OQ84>96J;#xb;Ii>)`0x58#?X zJdsO0a}IJ>1(&{;Cd>OxkHEeEFYiJgAP9mW2m*s7iY&Ls9k;>g^@Sxt7D%GVb~_Kg zu3f-|Z+6<(wF+#t_9CvP(54t(gR7z5!18bB}r0&+Z2V7^!~BClyt502jw`}}nF z&y>Mz^+W2#-UVFP0(pLHR)7mjfcy3=fzAHF4rd8;AMXJGs<14XN+#fBY7=n(eN|X5 uQ~NHc3i2+9!)bE@RqleuuRst4p>a+ckW|K3Px&ph-kQRCt{2n9pmQbsWcES@Oi@mq?Nt2_?NOKSpEdC|wYGF`yt$Wi$*gcJi=8 zJ?$Xdz(b|=;w(D|JLF<<_Mi;+4>%|YgHeZdNVT!urLql1N?C2Y!oqkwJbWLU4#DU9 zEKewYUbp89`Mf{Bzt0mm#I(%Hg?SNN26`*BStmoy(VdQzle`qJ5 zWmc@1IdbUrwF{seXjJq6+bIa;vYu^tnt)I)%f#ieo~@!#F5B}4XjJo-m-s!epuh`Z zjM11^GuoWFQtL?rsF=@Osd=)aT>xV=#?yxz1T$%j!2w^B&@wBQN9GmeJ!H(B1XB;aTYU2d@DkvD&wHG0Fue=_&!%Upu}u0NCp70gBR}p1ib&D{x1G6sQAI2y3Gx{;1g#{&NqSECeXTs)$Uggm@_rn z%d1)r=(1lwo(N-<3mAg~UDa2%jdFp;#Tx)@ZtQvbAahj!<-pw30_Kc;38_hFuixXl zuQ#+E(bWey_14Q>)jf!sIDpAZZvfCw zTL;`QxwsaXpT2`RQ{&p~O_J#dr_YaJlndGkaH|h?{K<6WndIwCpKE6u)x0%66meb! z+smuWPv7C{mc^~+-L3_{UmxrX59sh=d?-Ty+^=2rp;66SN?W0(U#Iw5&VF+8T`SjG zah|Vk+4r6w1pxT`)H~Ko51Jikel-B_%>Peb;&=TW0FX?j_>*J&@?Z^s*N^5&rc&H$ z-qkVZno=f4lM<>3kFq6ZPlOrsNk4o1IKMyKPx$t4TybR9J=Wl)p;?VI0Okrf1|?gI5GmHkF0pP=t$(Z4M#(NKoK+uIoIwa zQ4lSHV-UDU6cQJOF8v(h#G#+i5pRQNHNNi!5#6)BaNp-1KF{}k!ILLXe_6Jf5N zej>=P1hCD7(9J3G$q`o+ToDLF2UyrlxvIi-1-{N8+O)1buN**|)_K3L0OWt@D>03N(yKaczS#T zP`V9Dx1iO1quxYr=F&J;6+pTMsQ@kWLbi;VO9Qk?I9IpqZPlfIE*+pHGnXd6dH_Iv z^#I4Jws&LcuqJg4r9KA8Cr3mk-bH9GhBh&ZV^!H%uTW~}?AI#Ne$oQ~YcsPVYM-~y zrABl4R01fygb~BwnsF}gZUC5!4G}R6_G=YsFQovx)&t9Nh#F(~5$NKD4eLS0O05Eb n$*Ih@2j}FtsO;s*)Bn~7wu*pW|4QKZ00000NkvXXu0mjf1n=7v diff --git a/Resources/Textures/_CP14/Structures/Wallmount/wallmount_crystal.rsi/crystal1.png b/Resources/Textures/_CP14/Structures/Wallmount/wallmount_crystal.rsi/crystal1.png deleted file mode 100644 index 9835d85bd1d1e2fc12ae0f7650ae95fff1ed418d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1007 zcmeAS@N?(olHy`uVBq!ia0vp^4nTZ>gAGV-xtR*07>k44ofy`glX=O&z`WAa#WAE} z&fB{ObDIrB8XmI0;+VRlwA(|rNzuyDKT^TA_!L)cBWq3f6;=z@PU%VI3)-)p5O};q zkyG#A{@`0CoON|(Ds`nUKyw*(WUSr2wEy9}p!;)O151=%^EH_>Y!}HAP-hMhalLNR zE5paW@^#fGPQA>C6Em-{C%k&FNoVr5+`0V!yqkRl&L%r?x@kRnw{ThJlM0)zAg@n0 z{?GPZc>X-S-g-&T3*&@4&cFZK2@2lK+kWm?eDR0U*y{GnLcbVp*rrTLwanO)x#gv! z;KaiZ3%pA`p1&@=&GWL!WX+h+sU36D8h=*)vGV>D$9Ze-6DhTI zB4*+NdZn@Kg|9aMeHnB^PEBp<@|v2OjuQslQ-U1N{3)OMyz=|MfA^kN-pgETeZNM4 zDV^<%=Vf5nJpQPm^l!7vhOR{~wp_cbd+gN@9U-N3wjTZN^-rx_+m1;xTu=QNW$Sx) z$c>KJq4};6ItNc5fOtvqXNU5Vm=J#uJZrr+Truq_imGR@tMcRL1H}DcYIx|pJz5(<@BaH&$uTgvB`U! zQuROit>e~l&A!{4EwpOYr0dtipVulW<=*xJhFNi2P}T;oRCefhe`%62gIz>T%9c%8J*?mV^iE8D(V z?GKC(m@U7TuJnbK{qTHc=CHpU`>uGX5PyJ#%TS_w8+y+CJs#_g~xg*8lkY+j(hc*>d|cm27T$ z>nuAaJ%_b!so}SMhBth4mzlGbMK7*5pD|0?FqY@0^oFJT^nIhXtC_c5`MxwWJIyS? z+x1TTtZik6+a&#BI6UV#KG=Ie-%jw6u%ew{S4>YjL-Wy#9k=-y>@9fRYP33bzD02| bg96iiuAU#Px&@JU2LRCt{2-92urKokYw1M(6qO&7_jya9SIU>4$vDs?1MQ)LB6*#ZkN9g;Ud z1ri++d*Bt;5KJ%(JYptrzUt}48FMf5<1p6%5D^g(5s{9vEUTrDVNUj#7q2aNpd$fm z46;vW59mt5S`(u+1bpAGgOB5QmNzyfp+6E31Ob5W160A!6?n5v6Oz!|1Hv$@E|&}P zJO^+~f)HZzo0$-B+rtE?V9)0>03b;c2qEA&jy2_tnrA)FbHs6sEXyVx^qhVqAkT9I zK>#5HilTrJ0%@8e&vO(-G1y?=SylnRzrWY*FYQMHK0iM#0PsAo?(Sh2S^yxW96bA3 zmOV_u*VkA5?0Mjn%M1a;Co!Q&uG^f z_I+P_8B3DnVLPUKNnA%H4M7fH;qcbT!j-V5$*O=@kdkV z=IFD{wJRlrsDoFR?}x5NFWv*@ESzv0#}Y!+J5uNK`7SA47Eb`6S2&?NEQ+G2&wjJW zBM1U??Nk|&0G+~#zQT(p^}A~CLI?rR^8j?$I2bVp0KKK^-MW?u8s9@t!p@%96F|KF{xD{8tzP=(&Qv^YPIF5U(QKXcWPR)Yi zx^9)GDNd)8nLS`^amAS6f$;?)i(+vF5fKp)5fKp)5fKp)5fKp)5fKp)5fKqhV)PA9 ze~F6O-tspxuGed2Kl)bH+U@syYs~kNX|=XE0V?%ZXSbMydKFmuK$f=K>TR#HEJINg zuuXZ|%d@GQt7zYGX^plVJ5kf7KL>0vc*WS8s5}!B0L=R|$-hFyys4+ocEx6eVOR+v za5x+QVD(prR1)gH1(GDGgWr}c10Jkx*_OlP%dbk?@$K#Q!K>fHq6Q2M1 zEK*9#geTsbVa?0l5MC4oKMG^F)yY7`z4JT|r_*WKqgg-{MYvopOCJUi5iM`ip9EPX w#Ud#pA|fIpA|fIpA|fIpA|fIpA|hI;e}R?Jx)d6MMF0Q*07*qoM6N<$f++yo4gdfE diff --git a/Resources/Textures/_CP14/Structures/Wallmount/wallmount_crystal.rsi/crystal3.png b/Resources/Textures/_CP14/Structures/Wallmount/wallmount_crystal.rsi/crystal3.png deleted file mode 100644 index 36e0bc53f044b772c095a36dbd1c9236af779bbd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 716 zcmeAS@N?(olHy`uVBq!ia0vp^4nTZ>gAGV-xtR*07>k44ofy`glX=O&z|`jH;uumf z=k49Sy{jEW+8!o95t^`~}R0f7M3t#WL_f3NB;4S|MkyhiQ-4PiL*P;#?+*$i~&+4Mg zu6m>2JON%`m2PJqdZo{J{mt_lgQX$&O?sbH>II6N{du9gat7mlpS%9`!mbmy$ZS}||>9X%fXU}`}YFAzLoSQ6{%}q0Bee<03<*?}D@+m>J zlT_-&_`#knIDgGINd2FAhOzMj7v?=Dc+MntPVW>pejx4rl+WyP!_qUe_#;kD+S%-T zwxN6{^W~VsYEmCG%RlICE_fgL?chqbJ-52&7qP!L;{I-zD!<0)ET7L=9Sc+DWhv}F z#@v3U2UM&LOgBFWVRku|&i?F_jzwZt*@3MJ-!f9z!S7_{Q$&q(YhZr#Ahm)3sx$7oL9TQM&LB&0qKL-3$#AH@mXeey(4Uh0L42V@zwm s=Gq1^e3*S*+$p8y1P3FE>l^G}iO*lLLhIA=>|Bt9r>mdKI;Vst03ixN9smFU diff --git a/Resources/Textures/_CP14/Structures/Wallmount/wallmount_crystal.rsi/meta.json b/Resources/Textures/_CP14/Structures/Wallmount/wallmount_crystal.rsi/meta.json deleted file mode 100644 index 34f9974994..0000000000 --- a/Resources/Textures/_CP14/Structures/Wallmount/wallmount_crystal.rsi/meta.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "version": 1, - "license": "All right reserved", - "copyright": "By TheShuEd", - "size": { - "x": 32, - "y": 96 - }, - "states": [ - { - "name": "crystal1", - "directions": 4 - }, - { - "name": "crystal2", - "directions": 4 - }, - { - "name": "crystal3", - "directions": 4 - } - ] -} \ No newline at end of file diff --git a/Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/boards.png b/Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/boards.png deleted file mode 100644 index f82732c05f8ee4c4a5117b92cd8443a114d49ab4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 820 zcmeAS@N?(olHy`uVBq!ia0vp^4nTZ>gAGV-xtR*07>k44ofy`glX=O&!1T`3#WAE} z&fB{OvxFUGj(?1ITF`nSdPTxPhw4+VhVJ=M0iQVJY`#3>{vlG!m@jAZM6gTl%e7=z zecP=ICNwE-H%U+s;D4#IdGg#6=UHcRzWv^LMd#?;|M_X#PM_N_5oj9_a4p;NQh46H zJ(Av+LYJ@ZkFU@9^Jm?uUH_7USG?XA#X^e`d8F1?(JT8Zv8x4 zPuse(!k-`3-dZq8W$UcomwVQ~J!|AS`}Mmm2EoU_KD<0Vrl)78+pWYKZxWXLEVz?> z`10Z7E7f~+XPoK%$Qr!RdZPo|3em$^A z&{(4H%Ip3`Ke#u2WV>4A~ zxXAio^Ql>>x02RH&gy=oG{g1UQp?T#2l-Y1Q@1H)Kp{C}y*uKAiCjYRx z`=IcipUin*hDfu_o3?Lv&)C(y>0&H%P3ym1`#fvvR_yf#T5z9pmeb}peiQ%Pez!?) zkDDRu8|#Cw?z(w>cRL~S>f4)D+GhfL7=HT|T$PIr6H#`U^(9AVwi?ub7}Teu-`kcc zWtd7oE_&hC;>NI0T0n|%$9<7dm9Mw-lp7eF%oR+SIPNxF;7}-GcGC9#cReD{IM`Sj z%=;bZ7|Y_${(G|EgWpVFbJMcYxLWcYGFSw5F)o~{`v3LH?K4--6a?`E8$!;!XD~N4 kW&#?xgAGV-xtR*07>k44ofy`glX=O&z--{@;uumf z=j~m4Z)HcBV;|KM9Ub2sij;{tuzC%j?pqtjkE#(7H-56!h*mORkBpf(U0~0nb(_EJ zIHkpIdBX8fnUsgZ1no(8XRon7dF;g=|CHNSU$`m4@*`q$yWg`WCPgSX19%4)fr`nF1~m_0#z%e@@$NmhIJsbr>S zZ&{sYdhc2D8Acy%lao3|dU2nYJy&j>z4`FL;we zbB^N7gB~v*mQ?+{a`;Dnz>KYm_rzw-8e{a?x7mR6c-&4$hun)6?M?_YmS_=VP9 zu7qo+7rfmwF)U`!+l9Z5J=2R*@O-wnp)z^0%&zWTJZYBC*Lc+k>AYpTWxq2h`-=6+ z)dzOPzt26!*XS7^bZu|IY>S2uJJ)~Mxqo9T6F4|s_Eh|sIA?y$(|yyo*(HcYK2x7A z+9R&4P^FP=*XU>06o2i`5_3kE`MIBYx@XPy`J}`UJWX>)O(VVf(CH>YXndgjWvacloBk1u{%eXl#(~pYz?A#)IpE;+5 z!7P&B66{4xVuM?bzQ(C$U?N)ZVwd1L!G_mtJHn>?`L*AEwb0cw90hk7u5&m@)lbZf zb1^k$iZMT6$^;VYy7Z*{L*A+t&lbJix}`E8f14#sk$gkmIlkiWt{O$fWha;g!Rj~; zlrqOCGhF8_SZndJ_ucGuf@PA7EDv@uu6t^S;+ULW^@$&*M!hf1oC^~7boFyt=akR{ E0O0wZR{#J2 diff --git a/Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/boards3.png b/Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/boards3.png deleted file mode 100644 index bf82782525f7c129705addda0fc2d0432f77b545..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 619 zcmeAS@N?(olHy`uVBq!ia0vp^4nTZ>gAGV-xtR*07>k44ofy`glX=O&z@+Nw;uumf z=k48%UQU5B$3M+j7QG)JxWW@ zlxBrEm4V^&e13^zwzGEc+BrYl*LXJnj3e(eL!6`ApRWot`BG38b}%K0eU9v#Qg7*_ z`hb*3w))0)R+o(ChqW(-plZBwtqytZlA2rGbRp6 zb%{&^nfhY~=Qi)CtI$k&*|}!sTb5AK3m&V;2DFEs{sE bYT8}?jI)Pa{vZEb4ifit^>bP0l+XkK&1eWy diff --git a/Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/boards4.png b/Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/boards4.png deleted file mode 100644 index 5cafb12731dbc2b1dd4efa298a88d95c4f56282c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 616 zcmeAS@N?(olHy`uVBq!ia0vp^4nTZ>gAGV-xtR*07>k44ofy`glX=O&z@+5q;uumf z=k1-1S+^Zzj(?ortk^io*Tk94*}636c#dMgW%m;o4o1f>@P8=&V%oxHdBrW>+j>sU zILXSd6_T-;S4?7xqU}$e-$GM`{x5y;JCbKo+x@@q-W)9VU;%Umxx7%UmS;+Ut@^tcO=gNzuB84nMcC$7dM=RegCFD<@m_HEVzLof+xgo?7d6 ziUwW#lGMd?r!}r5;7*CEN0j#Q>tB-0oPMSLSadj)aiP(l(92VjwAxn&^=yeeXA`|H zw)kkzW0(7N_hwDsSgW;t$DWdtW$w z&RJQqi)Y#{Z)^Ss;=%1uM>8;FOuY72-(KcRapqRj@XG8pnRgscr|mWVyHoD3t?)gG~WsTUT0D!KED18kyhf6Mn_^yl58Q?l*g**(F#?>8K0+hsUg_1^;L-RGbFJrO1H zK>pIF^er{p4#a*AmCf+b-N!V!WMSpE=zKqW?~fjrvKGAiT+c2Q)XgOG|N721JGWiR z4tB6wdwwA&Bor~p1)fgt-)1&HTrmHAWcvm;#%qjg0vk#hvPBYP4@j{_upgAGV-xtR*07>k44ofy`glX=O&z`Wbj#WAE} z&fB|tgFZQkG(4Of62TS6)EBDN)@N1fRkiN)y-T-dom;pm>46Z>luK({iy!RBVffmt zbAO+|vi-?ff7{>8bY%e=%D|vt7A1^_=4dru348Ze9ra0c--D|x#;n%gZaOXU)ps1*K^nDl}l?k zz1$moi9>YCeWpda3={u$Z;m}&Z~G$}!)Vyy7{Z&r`4@3^+E&g+Zt^=0~-UJL#I z_UXJs_DT5zv)HyQyOlpn^vy>@o(VhcXJzZ2U3NOhFg{;DXnu5a;Qg0|b!lRsx8AY8 zlQ(~Q=tCg$hRN4z*V&tZ;qyn(_DXnZfym9XLQ1>eEy{eMu=3@L1L?aP_T}}ng2Vnm z>mT#-WGC-;zJ`2ZBCH>-S2PCPX{x{fQU4=P`qI-m_K|MZTc+fPuUH)2#c%mk>1}Mf zy_jOjy82*qk@EtFb${9}49&8?=U`mE!i|4zS@yBTT>%^Uj*7^fiqM#wEZMUudX7+X zLDpH*wXSZGD}^qJBn!NH?EBa1%9Xc2Kl*Yj-Jf>uPpInr*o9oWZ(kegpU;oX*wwp^ zp-$L;0qYX)JgL(O=f5^vuT%1Scq2ou>ioRq|7O0Ecg}aXy+!To&R)X+V6w5b-IwR5t7ig<+fvt(bIvr|Zd=23y(*aFDAx^+%>jEFPt?UU$v!RJ@Hx|}E{7Q$ zURa2AQB$P5Voy{Ul~nTBmt2|_x_6?@(_R-~Iyw2)|KSp~r+eP3*mG>F73^^Ay6fg>DciURX=s}+H1ZO`r3Dv=z&tXJ*ynDzTr z?&lg&X`cBf6RwokhzofBE@qfC{gKFuZS$FfuD&f**>2x5N9eEJ1oy4yzqJC>hR$~T tz{!(B_ujlK*j2Xvud$cmc@$R*ec^l_`TXGVh>&WKxTmY1%Q~loCIF7a=;Z(a diff --git a/Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/web.png b/Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/web.png deleted file mode 100644 index c2706184db642cabe05038afcf8ae37cc8da6a1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 450 zcmeAS@N?(olHy`uVBq!ia0vp^4nTZ>gAGV-xtR*07>k44ofy`glX(eb*Lb=(hE&XX zd-q^plYs!kg;Oj4|Icg_e%b!zn4FoZQ%Skt9iiuYyA2&)@`NhSoiYWe9|$V;N4>tY zoBy!(T#HqYm-@JyZ1z9TGAD`U$sGM?>!4F5UFYNzS8P2O-S%i=xc&1Q%SCJNX081k z&z$|c_i^dHqC1O=dmnH8uaPzPhvtH>+rHK9U3<;So_p2X^7?(>U0K0a9QgTVUW#nh zJe#GDvskM9KEJ=T`PzbOR^{@H?l-KC-tRkU8NW;Y!BnQ+^le*;XDRiY`R-eO?ZLiY z-Q&6M-_Bl>EmF7IutMaA)x`c=5&6N3!Db>6@{dBaHUDhxk90}xS6n*7+w)G+zWO*1 zmF`lvMXHJ=AI>Uq1`1EO#O*)pm&o?1OO*aGnLMtT>&*9Gt>_IfOiL#I7u=~kFGx!1 z9&eV{%ze*UmFjrJ4Bh<>Ot{oJZPtJFZs~)%A2K*I)^FE8sImCLzgN?Z)~0zdby_Kd dq5uR0YZ;eBJny@uE_4IL^>p=fS?83{1OVMay@&t+ diff --git a/Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/web2.png b/Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/web2.png deleted file mode 100644 index a9acbb8e89d5119deca9e508f83ecae47d88eae8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 511 zcmeAS@N?(olHy`uVBq!ia0vp^4nTZ>gAGV-xtR*07>k44ofy`glX(eb@APzW45^s& z_U^&F#RdWl0qU{eKtr)h8Rd;r+c|2P$TG-i5ztnYuO*Kt-!liUgm*Av*-~Q?@6G7LWiYAdL!I|*$3&n@n9={oDgj?fQ(XMFhZoKdh@Uo5?8;;n>_$t(6qymY^) rbnS(%z`s=mCmwX4*vJfZ?U9e{oW6qVqQA{s4HEHm^>bP0l+XkK6^i3- diff --git a/Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/web3.png b/Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/web3.png deleted file mode 100644 index ddfb3ca56466668c2a9264a11808930f676ccebe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 511 zcmeAS@N?(olHy`uVBq!ia0vp^4nTZ>gAGV-xtR*07>k44ofy`glX(eb@APzW45^s& z_O9=wM+zbg32NH>mrTFgcTWwS&Yn0u(w6JxPs6}=wVL~ETO;;-cUmOWwS)y|1_ML< zlR4Y(8SXiJ$-3d5oYsNJ{yHyfw*zm#Rlaiib9GnT_9=b+E$?G?#9nX6bay;g*&QhG zR_=Ax-8S8rxix$4P4@X>8?@uyttXE^YaCK;&FKEVFC$)~DYv~gy645`pJbNTaa6SeS6&D3u0^Y+O;7*fS3*@tIzD&>T<3! zI<2-W;Em;$B~vavE&6%Udcps-Pi(F{&X3b5o2D6^dA3CA&Qq($7x{ty@Y_1`mg44k z=3}?>U%Q@aoNxHE;JYq^@a(VA3--+X=pGDtd6~FE?YVz**`C{^`C(~yN z CrystallEdge migration zone end