diff --git a/Content.Client/_CP14/Trading/CP14ClientStationEconomySystem.cs b/Content.Client/_CP14/Trading/CP14ClientStationEconomySystem.cs
new file mode 100644
index 0000000000..c0a769f4fb
--- /dev/null
+++ b/Content.Client/_CP14/Trading/CP14ClientStationEconomySystem.cs
@@ -0,0 +1,7 @@
+using Content.Shared._CP14.Trading.Systems;
+
+namespace Content.Client._CP14.Trading;
+
+public sealed partial class CP14ClientStationEconomySystem : CP14SharedStationEconomySystem
+{
+}
diff --git a/Content.Client/_CP14/Trading/CP14ClientTradingPlatformSystem.cs b/Content.Client/_CP14/Trading/CP14ClientTradingPlatformSystem.cs
new file mode 100644
index 0000000000..f9f3830495
--- /dev/null
+++ b/Content.Client/_CP14/Trading/CP14ClientTradingPlatformSystem.cs
@@ -0,0 +1,7 @@
+using Content.Shared._CP14.Trading.Systems;
+
+namespace Content.Client._CP14.Trading;
+
+public sealed partial class CP14ClientTradingPlatformSystem : CP14SharedTradingPlatformSystem
+{
+}
diff --git a/Content.Client/_CP14/Trading/CP14TradingFactionButtonControl.xaml b/Content.Client/_CP14/Trading/CP14TradingFactionButtonControl.xaml
new file mode 100644
index 0000000000..519eaa4325
--- /dev/null
+++ b/Content.Client/_CP14/Trading/CP14TradingFactionButtonControl.xaml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
diff --git a/Content.Client/_CP14/Trading/CP14TradingFactionButtonControl.xaml.cs b/Content.Client/_CP14/Trading/CP14TradingFactionButtonControl.xaml.cs
new file mode 100644
index 0000000000..9cbaa3a3f8
--- /dev/null
+++ b/Content.Client/_CP14/Trading/CP14TradingFactionButtonControl.xaml.cs
@@ -0,0 +1,23 @@
+using Content.Shared.FixedPoint;
+using Robust.Client.AutoGenerated;
+using Robust.Client.Graphics;
+using Robust.Client.UserInterface;
+using Robust.Client.UserInterface.XAML;
+
+namespace Content.Client._CP14.Trading;
+
+[GenerateTypedNameReferences]
+public sealed partial class CP14TradingFactionButtonControl : Control
+{
+ public event Action? OnPressed;
+
+ public CP14TradingFactionButtonControl(Color color, string label, FixedPoint2 reputation)
+ {
+ RobustXamlLoader.Load(this);
+
+ ColorPanel.PanelOverride = new StyleBoxFlat { BackgroundColor = color };
+ SkillTreeLabel.Text = $"{reputation} {label}";
+
+ MainButton.OnPressed += args => OnPressed?.Invoke();
+ }
+}
diff --git a/Content.Client/_CP14/Trading/CP14TradingPlatformBoundUserInterface.cs b/Content.Client/_CP14/Trading/CP14TradingPlatformBoundUserInterface.cs
new file mode 100644
index 0000000000..47a2d19950
--- /dev/null
+++ b/Content.Client/_CP14/Trading/CP14TradingPlatformBoundUserInterface.cs
@@ -0,0 +1,32 @@
+using Content.Shared._CP14.Trading;
+using Content.Shared._CP14.Trading.Systems;
+using Robust.Client.UserInterface;
+
+namespace Content.Client._CP14.Trading;
+
+public sealed class CP14TradingPlatformBoundUserInterface(EntityUid owner, Enum uiKey) : BoundUserInterface(owner, uiKey)
+{
+ private CP14TradingPlatformWindow? _window;
+
+ protected override void Open()
+ {
+ base.Open();
+
+ _window = this.CreateWindow();
+
+ _window.OnUnlock += pos => SendMessage(new CP14TradingPositionUnlockAttempt(pos));
+ _window.OnBuy += pos => SendMessage(new CP14TradingPositionBuyAttempt(pos));
+ }
+
+ protected override void UpdateState(BoundUserInterfaceState state)
+ {
+ base.UpdateState(state);
+
+ switch (state)
+ {
+ case CP14TradingPlatformUiState storeState:
+ _window?.UpdateState(storeState);
+ break;
+ }
+ }
+}
diff --git a/Content.Client/_CP14/Trading/CP14TradingPlatformWindow.xaml b/Content.Client/_CP14/Trading/CP14TradingPlatformWindow.xaml
new file mode 100644
index 0000000000..02d811e322
--- /dev/null
+++ b/Content.Client/_CP14/Trading/CP14TradingPlatformWindow.xaml
@@ -0,0 +1,96 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Content.Client/_CP14/Trading/CP14TradingPlatformWindow.xaml.cs b/Content.Client/_CP14/Trading/CP14TradingPlatformWindow.xaml.cs
new file mode 100644
index 0000000000..ca0d3f95b0
--- /dev/null
+++ b/Content.Client/_CP14/Trading/CP14TradingPlatformWindow.xaml.cs
@@ -0,0 +1,254 @@
+using System.Linq;
+using System.Numerics;
+using Content.Client._CP14.UserInterface;
+using Content.Client._CP14.UserInterface.Systems.NodeTree;
+using Content.Shared._CP14.Trading;
+using Content.Shared._CP14.Trading.Components;
+using Content.Shared._CP14.Trading.Prototypes;
+using Robust.Client.AutoGenerated;
+using Robust.Client.UserInterface.Controls;
+using Robust.Client.UserInterface.CustomControls;
+using Robust.Client.UserInterface.XAML;
+using Robust.Client.Utility;
+using Robust.Shared.Audio;
+using Robust.Shared.Audio.Systems;
+using Robust.Shared.Prototypes;
+using Robust.Shared.Timing;
+using Robust.Shared.Utility;
+
+namespace Content.Client._CP14.Trading;
+
+[GenerateTypedNameReferences]
+public sealed partial class CP14TradingPlatformWindow : DefaultWindow
+{
+ [Dependency] private readonly ILogManager _log = default!;
+ [Dependency] private readonly IPrototypeManager _proto = default!;
+ [Dependency] private readonly IEntityManager _e = default!;
+ [Dependency] private readonly IGameTiming _timing = default!;
+
+ private readonly CP14ClientTradingPlatformSystem _tradingSystem;
+ private readonly CP14ClientStationEconomySystem _economySystem;
+ private readonly SharedAudioSystem _audio = default!;
+
+ private CP14TradingPlatformUiState? _cacheState;
+ private Entity? _cachedUser;
+ private Entity? _cachedPlatform;
+
+ private IEnumerable _allPositions = [];
+ private IEnumerable _allFactions = [];
+
+ private ProtoId? _selectedFaction;
+ private CP14TradingPositionPrototype? _selectedPosition;
+
+ public event Action>? OnUnlock;
+ public event Action>? OnBuy;
+
+ private ISawmill Sawmill { get; init; }
+
+ public CP14TradingPlatformWindow()
+ {
+ RobustXamlLoader.Load(this);
+ IoCManager.InjectDependencies(this);
+
+ Sawmill = _log.GetSawmill("cp14_trading");
+
+ CacheSkillProto();
+ _proto.PrototypesReloaded += _ => CacheSkillProto();
+ if (_cachedUser is not null)
+ {
+ foreach (var (f, _) in _cachedUser.Value.Comp.Reputation)
+ {
+ if (_proto.TryIndex(f, out var indexedFaction))
+ {
+ SelectFaction(indexedFaction);
+ break;
+ }
+ }
+ }
+
+ _tradingSystem = _e.System();
+ _economySystem = _e.System();
+ _audio = _e.System();
+
+ GraphControl.OnOffsetChanged += offset =>
+ {
+ ParallaxBackground.Offset = -offset * 0.25f + new Vector2(1000, 1000); //hardcoding is bad
+ };
+ GraphControl.OnNodeSelected += SelectNode;
+ UnlockButton.OnPressed += UnlockPressed;
+ BuyButton.OnPressed += BuyPressed;
+ }
+
+ private void UnlockPressed(BaseButton.ButtonEventArgs obj)
+ {
+ if (_selectedPosition is null)
+ return;
+
+ OnUnlock?.Invoke(_selectedPosition);
+
+ if (_cachedUser is not null)
+ _audio.PlayGlobal(new SoundCollectionSpecifier("CP14CoinImpact"), _cachedUser.Value);
+ }
+
+ private void BuyPressed(BaseButton.ButtonEventArgs obj)
+ {
+ if (_selectedPosition is null)
+ return;
+
+ OnBuy?.Invoke(_selectedPosition.ID);
+ }
+
+ private void SelectNode(CP14NodeTreeElement? node)
+ {
+ if (node == null)
+ {
+ DeselectNode();
+ return;
+ }
+
+ if (_cacheState == null)
+ {
+ Sawmill.Error("Tried to select node without a cached state.");
+ return;
+ }
+
+ if (!_proto.TryIndex(node.NodeKey, out var indexedPosition))
+ return;
+
+ SelectNode(indexedPosition);
+ }
+
+ private void SelectNode(CP14TradingPositionPrototype? node)
+ {
+ if (node is null || _cachedUser is null || _cachedPlatform is null)
+ {
+ DeselectNode();
+ return;
+ }
+
+ if (_cacheState == null)
+ {
+ Sawmill.Error("Tried to select node without a cached state.");
+ return;
+ }
+
+ _selectedPosition = node;
+ var unlocked = _cachedUser.Value.Comp.UnlockedPositions;
+
+ Name.Text = _tradingSystem.GetTradeName(_selectedPosition);
+ Description.Text = _tradingSystem.GetTradeDescription(_selectedPosition);
+
+ LocationView.Texture = _selectedPosition.Icon.Frame0();
+ UnlockButton.Disabled = !_tradingSystem.CanUnlockPosition((_cachedUser.Value.Owner, _cachedUser.Value.Comp), _selectedPosition);
+ BuyButton.Disabled = !unlocked.Contains(_selectedPosition);
+
+ UnlockCost.Text = _selectedPosition.UnlockReputationCost.ToString();
+
+ BuyPriceHolder.RemoveAllChildren();
+ BuyPriceHolder.AddChild(new CP14PriceControl(_economySystem.GetPrice(_selectedPosition) ?? 0));
+ }
+
+ private void DeselectNode()
+ {
+ Name.Text = string.Empty;
+ Description.Text = string.Empty;
+ LocationView.Texture = null;
+ UnlockButton.Disabled = true;
+ }
+
+ private void CacheSkillProto()
+ {
+ _allPositions = _proto.EnumeratePrototypes();
+ _allFactions = _proto.EnumeratePrototypes().OrderBy(tree => Loc.GetString(tree.Name));
+ }
+
+ public void UpdateState(CP14TradingPlatformUiState state)
+ {
+ _cacheState = state;
+ var ent = _e.GetEntity(state.User);
+
+ if (!_e.TryGetComponent(ent, out var repComp))
+ return;
+
+ _cachedUser = (ent, repComp);
+
+ var plat = _e.GetEntity(state.Platform);
+ if (!_e.TryGetComponent(plat, out var platComp))
+ return;
+
+ _cachedPlatform = (plat, platComp);
+ UpdateGraphControl();
+ }
+
+ private void UpdateGraphControl()
+ {
+ if (_cachedUser is null)
+ return;
+
+ HashSet nodeTreeElements = new();
+ var edges = new HashSet<(string, string)>();
+ foreach (var position in _allPositions)
+ {
+ if (position.Faction != _selectedFaction)
+ continue;
+
+ var unlocked = _cachedUser.Value.Comp.UnlockedPositions;
+ var gained = unlocked.Contains(position);
+ var active = _tradingSystem.CanUnlockPosition((_cachedUser.Value.Owner, _cachedUser.Value.Comp), position);
+ var node = new CP14NodeTreeElement(position.ID, gained, active, position.UiPosition * 66, position.Icon);
+ nodeTreeElements.Add(node);
+ if (position.Prerequisite != null)
+ {
+ edges.Add((position.Prerequisite, position.ID));
+ }
+ }
+
+ GraphControl.UpdateState(
+ new CP14NodeTreeUiState(
+ nodeTreeElements,
+ edges: edges,
+ frameIcon: new SpriteSpecifier.Rsi(
+ new ResPath("/Textures/_CP14/Interface/NodeTree/trading.rsi"),
+ "frame"),
+ hoveredIcon: new SpriteSpecifier.Rsi(
+ new ResPath("/Textures/_CP14/Interface/NodeTree/trading.rsi"),
+ "hovered"),
+ selectedIcon: new SpriteSpecifier.Rsi(
+ new ResPath("/Textures/_CP14/Interface/NodeTree/trading.rsi"),
+ "selected"),
+ learnedIcon: new SpriteSpecifier.Rsi(
+ new ResPath("/Textures/_CP14/Interface/NodeTree/trading.rsi"),
+ "learned"),
+ activeLineColor: new Color(172, 102, 190),
+ lineColor: new Color(83, 40, 121)
+ )
+ );
+
+ //Faction tabs update
+ TreeTabsContainer.RemoveAllChildren();
+ foreach (var (faction, rep) in _cachedUser.Value.Comp.Reputation)
+ {
+ if (!_proto.TryIndex(faction, out var indexedFaction))
+ continue;
+ var factionButton = new CP14TradingFactionButtonControl(
+ indexedFaction.Color,
+ Loc.GetString(indexedFaction.Name),
+ rep);
+
+ factionButton.OnPressed += () =>
+ {
+ SelectFaction(indexedFaction);
+ };
+
+ TreeTabsContainer.AddChild(factionButton);
+ }
+ SelectNode(_selectedPosition);
+ }
+
+ private void SelectFaction(CP14TradingFactionPrototype faction)
+ {
+ _selectedFaction = faction;
+ TreeName.Text = Loc.GetString("cp14-trading-faction-prefix") + " " + Loc.GetString(faction.Name);
+ UpdateGraphControl();
+ }
+}
diff --git a/Content.Client/_CP14/TravelingStoreShip/CP14StoreBoundUserInterface.cs b/Content.Client/_CP14/TravelingStoreShip/CP14StoreBoundUserInterface.cs
deleted file mode 100644
index 9df18283d3..0000000000
--- a/Content.Client/_CP14/TravelingStoreShip/CP14StoreBoundUserInterface.cs
+++ /dev/null
@@ -1,34 +0,0 @@
-using Content.Shared._CP14.Cargo;
-using JetBrains.Annotations;
-using Robust.Client.UserInterface;
-
-namespace Content.Client._CP14.TravelingStoreShip;
-
-public sealed class CP14StoreBoundUserInterface : BoundUserInterface
-{
- private CP14StoreWindow? _window;
-
- public CP14StoreBoundUserInterface(EntityUid owner, [NotNull] Enum uiKey) : base(owner, uiKey)
- {
- }
-
- protected override void Open()
- {
- base.Open();
-
- _window = this.CreateWindow();
- }
-
-
- protected override void UpdateState(BoundUserInterfaceState state)
- {
- base.UpdateState(state);
-
- switch (state)
- {
- case CP14StoreUiState storeState:
- _window?.UpdateUI(storeState);
- break;
- }
- }
-}
diff --git a/Content.Client/_CP14/TravelingStoreShip/CP14StoreProductControl.xaml b/Content.Client/_CP14/TravelingStoreShip/CP14StoreProductControl.xaml
deleted file mode 100644
index 1637e572e2..0000000000
--- a/Content.Client/_CP14/TravelingStoreShip/CP14StoreProductControl.xaml
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
diff --git a/Content.Client/_CP14/TravelingStoreShip/CP14StoreProductControl.xaml.cs b/Content.Client/_CP14/TravelingStoreShip/CP14StoreProductControl.xaml.cs
deleted file mode 100644
index 53fa42eef6..0000000000
--- a/Content.Client/_CP14/TravelingStoreShip/CP14StoreProductControl.xaml.cs
+++ /dev/null
@@ -1,40 +0,0 @@
-using Content.Shared._CP14.Cargo;
-using Robust.Client.AutoGenerated;
-using Robust.Client.GameObjects;
-using Robust.Client.UserInterface;
-using Robust.Client.UserInterface.XAML;
-
-namespace Content.Client._CP14.TravelingStoreShip;
-
-[GenerateTypedNameReferences]
-public sealed partial class CP14StoreProductControl : Control
-{
- [Dependency] private readonly IEntityManager _entity = default!;
-
- private readonly SpriteSystem _sprite;
-
- public CP14StoreProductControl(CP14StoreUiProductEntry entry)
- {
- RobustXamlLoader.Load(this);
- IoCManager.InjectDependencies(this);
-
- _sprite = _entity.System();
-
- PriceHolder.RemoveAllChildren();
- PriceHolder.AddChild(new CP14PriceControl(entry.Price));
- ProductName.Text = $"[bold]{entry.Name}[/bold]";
-
- SpecialLabel.Visible = entry.Special;
-
- if (entry.Icon is not null)
- {
- View.Visible = true;
- View.Texture = _sprite.Frame0(entry.Icon);
- }
- else if (entry.EntityView is not null)
- {
- EntityView.Visible = true;
- EntityView.SetPrototype(entry.EntityView);
- }
- }
-}
diff --git a/Content.Client/_CP14/TravelingStoreShip/CP14StoreWindow.xaml b/Content.Client/_CP14/TravelingStoreShip/CP14StoreWindow.xaml
deleted file mode 100644
index 9a80eed09f..0000000000
--- a/Content.Client/_CP14/TravelingStoreShip/CP14StoreWindow.xaml
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Content.Client/_CP14/TravelingStoreShip/CP14StoreWindow.xaml.cs b/Content.Client/_CP14/TravelingStoreShip/CP14StoreWindow.xaml.cs
deleted file mode 100644
index cea44cf7bd..0000000000
--- a/Content.Client/_CP14/TravelingStoreShip/CP14StoreWindow.xaml.cs
+++ /dev/null
@@ -1,60 +0,0 @@
-using Content.Shared._CP14.Cargo;
-using Robust.Client.AutoGenerated;
-using Robust.Client.UserInterface.CustomControls;
-using Robust.Client.UserInterface.XAML;
-using Robust.Shared.Timing;
-
-namespace Content.Client._CP14.TravelingStoreShip;
-
-[GenerateTypedNameReferences]
-public sealed partial class CP14StoreWindow : DefaultWindow
-{
- [Dependency] private readonly IGameTiming _timing = default!;
-
- public CP14StoreWindow()
- {
- RobustXamlLoader.Load(this);
- IoCManager.InjectDependencies(this);
-
- Tabs.SetTabTitle(0, Loc.GetString("cp14-store-ui-tab-buy"));
- Tabs.SetTabTitle(1, Loc.GetString("cp14-store-ui-tab-sell"));
- }
-
- public void UpdateUI(CP14StoreUiState state)
- {
- Window.Title = Loc.GetString("cp14-store-ui-title", ("name", state.ShopName));
- UpdateProducts(state);
- }
-
- private void UpdateProducts(CP14StoreUiState state)
- {
- BuyProductsContainer.RemoveAllChildren();
- SellProductsContainer.RemoveAllChildren();
-
- foreach (var product in state.ProductsBuy)
- {
- var control = new CP14StoreProductControl(product);
- control.ProductButton.OnPressed += _ =>
- {
- SelectProduct(product);
- };
- BuyProductsContainer.AddChild(control);
- }
-
- foreach (var product in state.ProductsSell)
- {
- var control = new CP14StoreProductControl(product);
- control.ProductButton.OnPressed += _ =>
- {
- SelectProduct(product);
- };
- SellProductsContainer.AddChild(control);
- }
- }
-
- private void SelectProduct(CP14StoreUiProductEntry? entry)
- {
- SelectedName.Text = entry is null ? string.Empty : $"[bold]{entry.Value.Name}[/bold]";
- SelectedDesc.Text = entry is null ? string.Empty : entry.Value.Desc;
- }
-}
diff --git a/Content.Client/_CP14/TravelingStoreShip/CP14PriceControl.xaml b/Content.Client/_CP14/UserInterface/CP14PriceControl.xaml
similarity index 100%
rename from Content.Client/_CP14/TravelingStoreShip/CP14PriceControl.xaml
rename to Content.Client/_CP14/UserInterface/CP14PriceControl.xaml
diff --git a/Content.Client/_CP14/TravelingStoreShip/CP14PriceControl.xaml.cs b/Content.Client/_CP14/UserInterface/CP14PriceControl.xaml.cs
similarity index 96%
rename from Content.Client/_CP14/TravelingStoreShip/CP14PriceControl.xaml.cs
rename to Content.Client/_CP14/UserInterface/CP14PriceControl.xaml.cs
index 9df5bee7a0..07de824eee 100644
--- a/Content.Client/_CP14/TravelingStoreShip/CP14PriceControl.xaml.cs
+++ b/Content.Client/_CP14/UserInterface/CP14PriceControl.xaml.cs
@@ -5,7 +5,7 @@ using Robust.Client.UserInterface.XAML;
using Robust.Shared.Prototypes;
using Robust.Shared.Utility;
-namespace Content.Client._CP14.TravelingStoreShip;
+namespace Content.Client._CP14.UserInterface;
[GenerateTypedNameReferences]
public sealed partial class CP14PriceControl : Control
diff --git a/Content.IntegrationTests/Tests/_CP14/CP14CargoTest.cs b/Content.IntegrationTests/Tests/_CP14/CP14CargoTest.cs
index ad11b611dd..600ff3092a 100644
--- a/Content.IntegrationTests/Tests/_CP14/CP14CargoTest.cs
+++ b/Content.IntegrationTests/Tests/_CP14/CP14CargoTest.cs
@@ -1,6 +1,5 @@
using System.Collections.Generic;
-using Content.Shared._CP14.Cargo.Prototype;
-using Robust.Shared.GameObjects;
+using Content.Shared._CP14.Trading.Prototypes;
using Robust.Shared.Prototypes;
namespace Content.IntegrationTests.Tests._CP14;
@@ -16,7 +15,6 @@ public sealed class CP14CargoTest
await using var pair = await PoolManager.GetServerClient();
var server = pair.Server;
- var compFactory = server.ResolveDependency();
var protoManager = server.ResolveDependency();
await server.WaitAssertion(() =>
@@ -25,10 +23,9 @@ public sealed class CP14CargoTest
{
HashSet existedCodes = new();
- foreach (var proto in protoManager.EnumeratePrototypes())
+ foreach (var proto in protoManager.EnumeratePrototypes())
{
- Assert.That(!existedCodes.Contains(proto.Code), $"Repeated purchasing code {proto.Code} of the {proto}");
- existedCodes.Add(proto.Code);
+
}
});
});
diff --git a/Content.Server/Cargo/Systems/PricingSystem.cs b/Content.Server/Cargo/Systems/PricingSystem.cs
index edc273b3c1..b0932ebc3d 100644
--- a/Content.Server/Cargo/Systems/PricingSystem.cs
+++ b/Content.Server/Cargo/Systems/PricingSystem.cs
@@ -16,6 +16,7 @@ using Robust.Shared.Map.Components;
using Robust.Shared.Prototypes;
using Robust.Shared.Utility;
using System.Linq;
+using Content.Server._CP14.Trading;
using Content.Shared.Research.Prototypes;
namespace Content.Server.Cargo.Systems;
@@ -261,7 +262,9 @@ public sealed class PricingSystem : EntitySystem
{
double price = 0;
- if (HasComp(uid) &&
+ //CP14 We take materials into account when calculating the price in any case.
+ var proto = MetaData(uid).EntityPrototype?.ID ?? "";
+ if ((HasComp(uid) || proto.StartsWith("CP14")) &&
TryComp(uid, out var composition))
{
var matPrice = GetMaterialPrice(composition);
@@ -278,7 +281,8 @@ public sealed class PricingSystem : EntitySystem
{
double price = 0;
- if (prototype.Components.ContainsKey(_factory.GetComponentName(typeof(MaterialComponent))) &&
+ //CP14 We take materials into account when calculating the price in any case.
+ if ((prototype.Components.ContainsKey(_factory.GetComponentName(typeof(MaterialComponent))) || prototype.ID.StartsWith("CP14")) &&
prototype.Components.TryGetValue(_factory.GetComponentName(typeof(PhysicalCompositionComponent)), out var composition))
{
var compositionComp = (PhysicalCompositionComponent) composition.Component;
diff --git a/Content.Server/_CP14/Cargo/BuyServices/CP14RerollSpecialPositionsService.cs b/Content.Server/_CP14/Cargo/BuyServices/CP14RerollSpecialPositionsService.cs
deleted file mode 100644
index 9a928cd0bc..0000000000
--- a/Content.Server/_CP14/Cargo/BuyServices/CP14RerollSpecialPositionsService.cs
+++ /dev/null
@@ -1,64 +0,0 @@
-using Content.Shared._CP14.Cargo;
-using Content.Shared._CP14.Cargo.Prototype;
-using Robust.Shared.Prototypes;
-using Robust.Shared.Random;
-using Robust.Shared.Utility;
-
-namespace Content.Server._CP14.Cargo.BuyServices;
-
-public sealed partial class CP14RerollSpecialPositionsService : CP14StoreBuyService
-{
- [DataField] public int RerollBuy;
- [DataField] public int RerollSell;
-
- public override void Buy(EntityManager entManager, IPrototypeManager prototype, Entity portal)
- {
- var randomSystem = IoCManager.Resolve();
- var cargoSystem = entManager.System();
-
- if (RerollBuy > 0)
- {
- var removed = 0;
- for (var i = 0; i < RerollBuy; i++)
- {
- if (portal.Comp.CurrentSpecialBuyPositions.Count == 0)
- break;
- removed++;
- var position = randomSystem.Pick(portal.Comp.CurrentSpecialBuyPositions);
- portal.Comp.CurrentSpecialBuyPositions.Remove(position.Key);
- }
-
- cargoSystem.AddRandomBuySpecialPosition(portal, removed);
- }
-
- if (RerollSell > 0)
- {
- var removed = 0;
- for (var i = 0; i < RerollSell; i++)
- {
- if (portal.Comp.CurrentSpecialSellPositions.Count == 0)
- break;
- removed++;
- var position = randomSystem.Pick(portal.Comp.CurrentSpecialSellPositions);
- portal.Comp.CurrentSpecialSellPositions.Remove(position.Key);
- }
-
- cargoSystem.AddRandomSellSpecialPosition(portal, removed);
- }
- }
-
- public override string GetName(IPrototypeManager protoMan)
- {
- return string.Empty;
- }
-
- public override EntProtoId? GetEntityView(IPrototypeManager protoManager)
- {
- return null;
- }
-
- public override SpriteSpecifier? GetTexture(IPrototypeManager protoManager)
- {
- return null;
- }
-}
diff --git a/Content.Server/_CP14/Cargo/CP14CargoSystem.Portals.cs b/Content.Server/_CP14/Cargo/CP14CargoSystem.Portals.cs
deleted file mode 100644
index 1be8c0e836..0000000000
--- a/Content.Server/_CP14/Cargo/CP14CargoSystem.Portals.cs
+++ /dev/null
@@ -1,55 +0,0 @@
-using Content.Server.Storage.Components;
-using Content.Shared._CP14.Cargo;
-using Content.Shared.Storage.Components;
-
-namespace Content.Server._CP14.Cargo;
-
-public sealed partial class CP14CargoSystem
-{
- private void InitializePortals()
- {
- SubscribeLocalEvent(OnTradePortalMapInit);
-
- SubscribeLocalEvent(OnTradePortalClose);
- SubscribeLocalEvent(OnTradePortalOpen);
- }
-
- private void UpdatePortals(float frameTime)
- {
- var query = EntityQueryEnumerator();
- while (query.MoveNext(out var ent, out var portal, out var storage))
- {
- if (portal.ProcessFinishTime == TimeSpan.Zero || portal.ProcessFinishTime >= _timing.CurTime)
- continue;
-
- portal.ProcessFinishTime = TimeSpan.Zero;
-
- SellingThings((ent, portal), storage);
- TopUpBalance((ent, portal), storage);
- BuyThings((ent, portal), storage);
- CashOut((ent, portal), storage);
- ThrowAllItems((ent, portal), storage);
- }
- }
-
- private void OnTradePortalMapInit(Entity ent, ref MapInitEvent args)
- {
- AddRoundstartTradingPositions(ent);
- UpdateStaticPositions(ent);
-
- ent.Comp.CurrentSpecialBuyPositions.Clear();
- ent.Comp.CurrentSpecialSellPositions.Clear();
- AddRandomBuySpecialPosition(ent, ent.Comp.SpecialBuyPositionCount);
- AddRandomSellSpecialPosition(ent, ent.Comp.SpecialSellPositionCount);
- }
-
- private void OnTradePortalClose(Entity ent, ref StorageAfterCloseEvent args)
- {
- ent.Comp.ProcessFinishTime = _timing.CurTime + ent.Comp.Delay;
- }
-
- private void OnTradePortalOpen(Entity ent, ref StorageAfterOpenEvent args)
- {
- ent.Comp.ProcessFinishTime = TimeSpan.Zero;
- }
-}
diff --git a/Content.Server/_CP14/Cargo/CP14CargoSystem.UI.cs b/Content.Server/_CP14/Cargo/CP14CargoSystem.UI.cs
deleted file mode 100644
index 5b20d4843d..0000000000
--- a/Content.Server/_CP14/Cargo/CP14CargoSystem.UI.cs
+++ /dev/null
@@ -1,112 +0,0 @@
-using System.Text;
-using Content.Shared._CP14.Cargo;
-using Content.Shared.UserInterface;
-
-namespace Content.Server._CP14.Cargo;
-
-public sealed partial class CP14CargoSystem
-{
- public void InitializeUI()
- {
- SubscribeLocalEvent(OnBeforeUIOpen);
- }
-
- private void TryInitStore(Entity ent)
- {
- //TODO: more accurate way to find the trading portal, without lookup
- var entitiesInRange = _lookup.GetEntitiesInRange(Transform(ent).Coordinates, 2);
- foreach (var trading in entitiesInRange)
- {
- ent.Comp.TradingPortal = trading;
- ent.Comp.CahcedFaction = trading.Comp.Faction;
- break;
- }
- }
-
- private void OnBeforeUIOpen(Entity ent, ref BeforeActivatableUIOpenEvent args)
- {
- //TODO: If you open a store on a mapping, and initStore() it, the entity will throw an error when you try to save the grid\map.
-
- if (ent.Comp.TradingPortal is null)
- TryInitStore(ent);
-
- UpdateUIProducts(ent);
- }
-
- private void UpdateUIProducts(Entity ent)
- {
- if (ent.Comp.TradingPortal is null)
- return;
-
- if (!TryComp(ent.Comp.TradingPortal.Value, out var tradePortalComp))
- return;
-
- var prodBuy = new HashSet();
- var prodSell = new HashSet();
-
- //Add special buy positions
- foreach (var (proto, price) in tradePortalComp.CurrentSpecialBuyPositions)
- {
- var name = proto.NameOverride is null ? proto.Service.GetName(_proto) : Loc.GetString(proto.NameOverride);
- var desc = new StringBuilder();
- desc.Append("\n" + Loc.GetString("cp14-store-buy-hint", ("name", name), ("code", "[color=yellow][bold]#" + proto.Code + "[/bold][/color]")));
-
- prodBuy.Add(new CP14StoreUiProductEntry(proto.ID, proto.IconOverride ?? proto.Service.GetTexture(_proto), proto.Service.GetEntityView(_proto), name, desc.ToString(), price, true));
- }
-
- //Add static buy positions
- foreach (var (proto, price) in tradePortalComp.CurrentBuyPositions)
- {
- var name = proto.NameOverride is null ? proto.Service.GetName(_proto) : Loc.GetString(proto.NameOverride);
- var desc = new StringBuilder();
- desc.Append("\n" + Loc.GetString("cp14-store-buy-hint", ("name", name), ("code", "[color=yellow][bold]#" + proto.Code + "[/bold][/color]")));
-
- prodBuy.Add(new CP14StoreUiProductEntry(proto.ID, proto.IconOverride ?? proto.Service.GetTexture(_proto), proto.Service.GetEntityView(_proto), name, desc.ToString(), price, false));
- }
-
- //Add special sell positions
- foreach (var (proto, price) in tradePortalComp.CurrentSpecialSellPositions)
- {
- var name = proto.NameOverride is null ? proto.Service.GetName(_proto) : Loc.GetString(proto.NameOverride);
-
- var desc = new StringBuilder();
- desc.Append("\n" + Loc.GetString("cp14-store-sell-hint", ("name", name)));
-
- prodSell.Add(new CP14StoreUiProductEntry(
- proto.ID,
- proto.Service.GetTexture(_proto),
- proto.Service.GetEntityView(_proto),
- name,
- desc.ToString(),
- price,
- true));
- }
-
- //Add static sell positions
- foreach (var (proto, price) in tradePortalComp.CurrentSellPositions)
- {
- var name = proto.NameOverride is null ? proto.Service.GetName(_proto) : Loc.GetString(proto.NameOverride);
-
- var desc = new StringBuilder();
- desc.Append("\n" + Loc.GetString("cp14-store-sell-hint", ("name", name)));
-
- prodSell.Add(new CP14StoreUiProductEntry(
- proto.ID,
- proto.Service.GetTexture(_proto),
- proto.Service.GetEntityView(_proto),
- name,
- desc.ToString(),
- price,
- false));
- }
-
- var shopName = ":3";
- //Get shop name
- if (ent.Comp.CahcedFaction is not null && _proto.TryIndex(ent.Comp.CahcedFaction.Value, out var indexedShop))
- {
- shopName = Loc.GetString(indexedShop.Name);
- }
-
- _userInterface.SetUiState(ent.Owner, CP14StoreUiKey.Key, new CP14StoreUiState(shopName, prodBuy, prodSell));
- }
-}
diff --git a/Content.Server/_CP14/Cargo/CP14CargoSystem.cs b/Content.Server/_CP14/Cargo/CP14CargoSystem.cs
deleted file mode 100644
index 02c31c4fd2..0000000000
--- a/Content.Server/_CP14/Cargo/CP14CargoSystem.cs
+++ /dev/null
@@ -1,317 +0,0 @@
-using System.Linq;
-using System.Numerics;
-using Content.Server._CP14.Currency;
-using Content.Server.Storage.Components;
-using Content.Server.Storage.EntitySystems;
-using Content.Shared._CP14.Cargo;
-using Content.Shared._CP14.Cargo.Prototype;
-using Content.Shared._CP14.Currency;
-using Content.Shared.Paper;
-using Content.Shared.Stacks;
-using Content.Shared.Throwing;
-using Robust.Server.GameObjects;
-using Robust.Shared.Prototypes;
-using Robust.Shared.Random;
-using Robust.Shared.Timing;
-
-namespace Content.Server._CP14.Cargo;
-
-public sealed partial class CP14CargoSystem : CP14SharedCargoSystem
-{
- [Dependency] private readonly IRobustRandom _random = default!;
- [Dependency] private readonly IGameTiming _timing = default!;
- [Dependency] private readonly IPrototypeManager _proto = default!;
- [Dependency] private readonly UserInterfaceSystem _userInterface = default!;
- [Dependency] private readonly EntityLookupSystem _lookup = default!;
- [Dependency] private readonly CP14CurrencySystem _currency = default!;
- [Dependency] private readonly EntityStorageSystem _entityStorage = default!;
- [Dependency] private readonly ThrowingSystem _throwing = default!;
- [Dependency] private readonly SharedTransformSystem _transform = default!;
-
- private IEnumerable? _buyProto;
- private IEnumerable? _sellProto;
-
-
- public override void Initialize()
- {
- base.Initialize();
-
- InitializeUI();
- InitializePortals();
-
- _buyProto = _proto.EnumeratePrototypes();
- _sellProto = _proto.EnumeratePrototypes();
-
- SubscribeLocalEvent(OnProtoReload);
- }
-
- public override void Update(float frameTime)
- {
- base.Update(frameTime);
- UpdatePortals(frameTime);
- }
-
- private void OnProtoReload(PrototypesReloadedEventArgs ev)
- {
- _buyProto = _proto.EnumeratePrototypes();
- _sellProto = _proto.EnumeratePrototypes();
- }
-
- private void AddRoundstartTradingPositions(Entity portal)
- {
- if (_buyProto is not null)
- {
- foreach (var buy in _buyProto)
- {
- if (buy.RoundstartAvailable)
- portal.Comp.AvailableBuyPosition.Add(buy);
- }
- }
-
- if (_sellProto is not null)
- {
- foreach (var sell in _sellProto)
- {
- if (sell.RoundstartAvailable)
- portal.Comp.AvailableSellPosition.Add(sell);
- }
- }
- }
-
- private void UpdateStaticPositions(Entity portal)
- {
- portal.Comp.CurrentBuyPositions.Clear();
- portal.Comp.CurrentSellPositions.Clear();
-
- //Add static positions + cash special ones
- foreach (var buyPos in portal.Comp.AvailableBuyPosition)
- {
- if (buyPos.Special)
- continue;
-
- if (buyPos.Factions.Count > 0 && !buyPos.Factions.Contains(portal.Comp.Faction))
- continue;
-
- portal.Comp.CurrentBuyPositions.Add(buyPos, buyPos.Price);
- }
-
- foreach (var sellPos in portal.Comp.AvailableSellPosition)
- {
- if (sellPos.Special)
- continue;
-
- if (sellPos.Factions.Count > 0 && !sellPos.Factions.Contains(portal.Comp.Faction))
- continue;
-
- portal.Comp.CurrentSellPositions.Add(sellPos, sellPos.Price);
- }
- }
-
- public void AddRandomBuySpecialPosition(Entity portal, int count)
- {
- if (_buyProto is null)
- return;
-
- var availableSpecialBuyPositions = new List();
- foreach (var buyPos in _buyProto)
- {
- if (!buyPos.Special)
- continue;
-
- if (portal.Comp.CurrentSpecialBuyPositions.ContainsKey(buyPos))
- continue;
-
- if (buyPos.Factions.Count > 0 && !buyPos.Factions.Contains(portal.Comp.Faction))
- continue;
-
- availableSpecialBuyPositions.Add(buyPos);
- }
-
- _random.Shuffle(availableSpecialBuyPositions);
-
- var added = 0;
- foreach (var buyPos in availableSpecialBuyPositions)
- {
- if (added >= count)
- break;
- portal.Comp.CurrentSpecialBuyPositions.Add(buyPos, buyPos.Price);
- added++;
- }
- }
-
- public void AddRandomSellSpecialPosition(Entity portal, int count)
- {
- if (_sellProto is null)
- return;
-
- var availableSpecialSellPositions = new List();
- foreach (var sellPos in _sellProto)
- {
- if (!sellPos.Special)
- continue;
-
- if (portal.Comp.CurrentSpecialSellPositions.ContainsKey(sellPos))
- continue;
-
- if (sellPos.Factions.Count > 0 && !sellPos.Factions.Contains(portal.Comp.Faction))
- continue;
-
- availableSpecialSellPositions.Add(sellPos);
- }
-
- _random.Shuffle(availableSpecialSellPositions);
-
- var added = 0;
- foreach (var sellPos in availableSpecialSellPositions)
- {
- if (added >= count)
- break;
- portal.Comp.CurrentSpecialSellPositions.Add(sellPos, sellPos.Price);
- added++;
- }
- }
-
- ///
- /// Sell all the items we can, and replenish the internal balance
- ///
- private void SellingThings(Entity portal, EntityStorageComponent storage)
- {
- var containedEntities = storage.Contents.ContainedEntities.ToHashSet();
- //var ev = new BeforeSellEntities(ref portal.Comp.EntitiesInPortal);
- //RaiseLocalEvent(ev);
-
- foreach (var sellPos in portal.Comp.CurrentSellPositions)
- {
- //WHILE = sell all we can
- while (sellPos.Key.Service.TrySell(EntityManager, containedEntities))
- {
- portal.Comp.Balance += sellPos.Value;
- }
- }
-
- List toRemove = new();
- foreach (var sellPos in portal.Comp.CurrentSpecialSellPositions)
- {
- //IF = only 1 try
- if (sellPos.Key.Service.TrySell(EntityManager, containedEntities))
- {
- portal.Comp.Balance += sellPos.Value;
- toRemove.Add(sellPos.Key);
- }
- }
-
- //Remove this special position from the list and add new random one
- foreach (var position in toRemove)
- {
- portal.Comp.CurrentSpecialSellPositions.Remove(position);
- AddRandomSellSpecialPosition(portal, 1);
- }
- }
-
- ///
- /// Take all the money from the portal, and credit it to the internal balance
- ///
- private void TopUpBalance(Entity portal, EntityStorageComponent storage)
- {
- //Get all currency in portal
- var cash = 0;
- foreach (var stored in storage.Contents.ContainedEntities)
- {
- if (TryComp(stored, out var currency))
- {
- //fix currency calculation
- var c = currency.Currency;
-
- if (TryComp(stored, out var stack))
- c *= stack.Count;
-
- cash += c;
- QueueDel(stored);
- }
- }
-
- portal.Comp.Balance += cash;
- }
-
- private void BuyThings(Entity portal, EntityStorageComponent storage)
- {
- //Reading all papers in portal
- List> requests = new();
- foreach (var stored in storage.Contents.ContainedEntities)
- {
- if (!TryComp(stored, out var paper))
- continue;
-
- var splittedText = paper.Content.Split("#");
- foreach (var fragment in splittedText)
- {
- foreach (var buyPosition in portal.Comp.CurrentBuyPositions)
- {
- if (fragment.StartsWith(buyPosition.Key.Code))
- requests.Add(buyPosition);
- }
-
- foreach (var buyPosition in portal.Comp.CurrentSpecialBuyPositions)
- {
- if (fragment.StartsWith(buyPosition.Key.Code))
- requests.Add(buyPosition);
- }
- }
-
- QueueDel(stored);
- }
-
- //Trying to spend inner money to buy requested things
- foreach (var request in requests)
- {
- if (portal.Comp.Balance < request.Value)
- continue;
-
- portal.Comp.Balance -= request.Value;
-
- if (!_proto.TryIndex(request.Key, out var indexedBuyed))
- continue;
-
- //Remove this position from the list and add new random one
- if (request.Key.Special)
- {
- portal.Comp.CurrentSpecialBuyPositions.Remove(request.Key);
- AddRandomBuySpecialPosition(portal, 1);
- }
-
- indexedBuyed.Service.Buy(EntityManager, _proto, portal);
- }
- }
-
- ///
- /// Transform all the accumulated balance into physical money, which we will give to the players.
- ///
- private void CashOut(Entity portal, EntityStorageComponent storage)
- {
- var coins = _currency.GenerateMoney(portal.Comp.Balance, Transform(portal).Coordinates);
- foreach (var coin in coins)
- {
- _entityStorage.Insert(coin, portal, storage);
- }
- portal.Comp.Balance = 0;
- }
-
- ///
- /// Return all items to the map
- ///
- private void ThrowAllItems(Entity portal, EntityStorageComponent storage)
- {
- var containedEntities = storage.Contents.ContainedEntities.ToList();
-
- _entityStorage.OpenStorage(portal, storage);
-
- var xform = Transform(portal);
- var rotation = xform.LocalRotation;
- foreach (var stored in containedEntities)
- {
- _transform.AttachToGridOrMap(stored);
- var targetThrowPosition = xform.Coordinates.Offset(rotation.ToWorldVec() * 1);
- _throwing.TryThrow(stored, targetThrowPosition.Offset(new Vector2(_random.NextFloat(-0.5f, 0.5f), _random.NextFloat(-0.5f, 0.5f))));
- }
- }
-}
diff --git a/Content.Server/_CP14/Currency/CP14CurrencySystem.Converter.cs b/Content.Server/_CP14/Currency/CP14CurrencySystem.Converter.cs
index 04dd347b04..ea96eff1c3 100644
--- a/Content.Server/_CP14/Currency/CP14CurrencySystem.Converter.cs
+++ b/Content.Server/_CP14/Currency/CP14CurrencySystem.Converter.cs
@@ -2,6 +2,7 @@ using Content.Shared._CP14.Currency;
using Content.Shared.Examine;
using Content.Shared.Interaction;
using Content.Shared.Stacks;
+using Content.Shared.Tag;
using Content.Shared.Verbs;
using Robust.Shared.Audio;
using Robust.Shared.Map;
@@ -12,6 +13,7 @@ namespace Content.Server._CP14.Currency;
public sealed partial class CP14CurrencySystem
{
+ [Dependency] private readonly TagSystem _tag = default!;
private void InitializeConverter()
{
SubscribeLocalEvent>(OnGetVerb);
@@ -115,14 +117,14 @@ public sealed partial class CP14CurrencySystem
private void OnInteractUsing(Entity ent, ref InteractUsingEvent args)
{
- if (!TryComp(args.Used, out var currency))
+ if (!_tag.HasTag(args.Used, ent.Comp.CoinTag))
return;
if (ent.Comp.Whitelist is not null && !_whitelist.IsValid(ent.Comp.Whitelist, args.Used))
return;
- var delta = GetTotalCurrencyRecursive(args.Used);
- ent.Comp.Balance += delta;
+ var delta = _price.GetPrice(args.Used);
+ ent.Comp.Balance += (int)delta;
QueueDel(args.Used);
_popup.PopupEntity(Loc.GetString("cp14-currency-converter-insert", ("cash", delta)), ent, args.User);
@@ -130,9 +132,9 @@ public sealed partial class CP14CurrencySystem
}
public HashSet GenerateMoney(EntProtoId currencyType,
- int target,
+ double target,
EntityCoordinates coordinates,
- out int remainder)
+ out double remainder)
{
remainder = target;
HashSet spawns = new();
@@ -155,7 +157,7 @@ public sealed partial class CP14CurrencySystem
}
public HashSet GenerateMoney(
- int target,
+ double target,
EntityCoordinates coordinates)
{
HashSet coins = new();
@@ -204,9 +206,9 @@ public sealed partial class CP14CurrencySystem
return coins;
}
- private bool ProcessEntity(EntityUid ent, ref int remainder, HashSet spawns)
+ private bool ProcessEntity(EntityUid ent, ref double remainder, HashSet spawns)
{
- var singleCurrency = GetTotalCurrencyRecursive(ent);
+ var singleCurrency = _price.GetPrice(ent);
if (singleCurrency > remainder)
{
@@ -229,15 +231,15 @@ public sealed partial class CP14CurrencySystem
private void AdjustStack(EntityUid ent,
StackComponent stack,
StackPrototype stackProto,
- float singleCurrency,
- ref int remainder)
+ double singleCurrency,
+ ref double remainder)
{
var singleStackCurrency = singleCurrency / stack.Count;
var stackLeftSpace = stackProto.MaxCount - stack.Count;
if (stackLeftSpace is not null)
{
- var addedStack = MathF.Min((float)stackLeftSpace, MathF.Floor(remainder / singleStackCurrency));
+ var addedStack = MathF.Min((float)stackLeftSpace, MathF.Floor((float)(remainder / singleStackCurrency)));
if (addedStack > 0)
{
diff --git a/Content.Server/_CP14/Currency/CP14CurrencySystem.cs b/Content.Server/_CP14/Currency/CP14CurrencySystem.cs
index 200e2d9587..a277dfb074 100644
--- a/Content.Server/_CP14/Currency/CP14CurrencySystem.cs
+++ b/Content.Server/_CP14/Currency/CP14CurrencySystem.cs
@@ -1,13 +1,10 @@
+using Content.Server.Cargo.Systems;
using Content.Server.Popups;
using Content.Server.Stack;
-using Content.Server.Storage.Components;
using Content.Shared._CP14.Currency;
using Content.Shared.Examine;
-using Content.Shared.Stacks;
-using Content.Shared.Storage;
using Content.Shared.Whitelist;
using Robust.Server.Audio;
-using Robust.Shared.Containers;
using Robust.Shared.Prototypes;
namespace Content.Server._CP14.Currency;
@@ -19,6 +16,7 @@ public sealed partial class CP14CurrencySystem : CP14SharedCurrencySystem
[Dependency] private readonly StackSystem _stack = default!;
[Dependency] private readonly AudioSystem _audio = default!;
[Dependency] private readonly IPrototypeManager _proto = default!;
+ [Dependency] private readonly PricingSystem _price = default!;
public override void Initialize()
{
@@ -27,46 +25,13 @@ public sealed partial class CP14CurrencySystem : CP14SharedCurrencySystem
InitializeConverter();
SubscribeLocalEvent(OnExamine);
-
- SubscribeLocalEvent(OnGetCurrency);
- SubscribeLocalEvent(OnContainerGetCurrency);
- }
-
- private void OnGetCurrency(Entity ent, ref CP14GetCurrencyEvent args)
- {
- if (args.CheckedEntities.Contains(ent))
- return;
-
- var total = ent.Comp.Currency;
- if (TryComp(ent, out var stack))
- {
- total *= stack.Count;
- }
-
- args.Currency += total;
- args.CheckedEntities.Add(ent);
- }
-
- private void OnContainerGetCurrency(Entity ent, ref CP14GetCurrencyEvent args)
- {
- var total = 0;
- foreach (var container in ent.Comp.Containers.Values)
- {
- foreach (var containedEnt in container.ContainedEntities)
- {
- total += GetTotalCurrencyRecursive(containedEnt);
- }
- }
-
- args.Currency += total;
}
private void OnExamine(Entity currency, ref ExaminedEvent args)
{
- var total = GetTotalCurrencyRecursive(currency);
-
+ var price = _price.GetPrice(currency);
var push = Loc.GetString("cp14-currency-examine-title");
- push += GetCurrencyPrettyString(total);
+ push += GetCurrencyPrettyString((int)price);
args.PushMarkup(push);
}
}
diff --git a/Content.Server/_CP14/ModularCraft/CP14ModularCraftSystem.cs b/Content.Server/_CP14/ModularCraft/CP14ModularCraftSystem.cs
index eeae4b4adc..8d0ce4a0ba 100644
--- a/Content.Server/_CP14/ModularCraft/CP14ModularCraftSystem.cs
+++ b/Content.Server/_CP14/ModularCraft/CP14ModularCraftSystem.cs
@@ -1,9 +1,11 @@
+using Content.Server.Cargo.Components;
using Content.Server.Item;
using Content.Shared._CP14.ModularCraft;
using Content.Shared._CP14.ModularCraft.Components;
using Content.Shared._CP14.ModularCraft.Prototypes;
using Content.Shared.Throwing;
using Content.Shared.Examine;
+using Content.Shared.Materials;
using Content.Shared.Verbs;
using Robust.Server.GameObjects;
using Robust.Shared.Prototypes;
@@ -182,6 +184,36 @@ public sealed class CP14ModularCraftSystem : CP14SharedModularCraftSystem
var indexedPart = _proto.Index(partProto);
+ if (TryComp(part, out var partMaterial))
+ {
+ var startMaterial = EnsureComp(start);
+
+ //Merge materials
+ foreach (var (material, count) in partMaterial.MaterialComposition)
+ {
+ if (startMaterial.MaterialComposition.TryGetValue(material, out var existingCount))
+ startMaterial.MaterialComposition[material] = existingCount + count;
+ else
+ startMaterial.MaterialComposition[material] = count;
+ }
+
+ //Merge solutions
+ foreach (var (sol, count) in partMaterial.ChemicalComposition)
+ {
+ if (startMaterial.ChemicalComposition.TryGetValue(sol, out var existingCount))
+ startMaterial.ChemicalComposition[sol] = existingCount + count;
+ else
+ startMaterial.ChemicalComposition[sol] = count;
+ }
+ }
+
+ if (TryComp(part, out var staticPartPrice))
+ {
+ var startStaticPrice = EnsureComp(start);
+
+ startStaticPrice.Price += staticPartPrice.Price;
+ }
+
foreach (var modifier in indexedPart.Modifiers)
{
modifier.Effect(EntityManager, start, part);
diff --git a/Content.Server/_CP14/Objectives/Components/CP14TownSendConditionComponent.cs b/Content.Server/_CP14/Objectives/Components/CP14TownSendConditionComponent.cs
deleted file mode 100644
index 6b99e4e429..0000000000
--- a/Content.Server/_CP14/Objectives/Components/CP14TownSendConditionComponent.cs
+++ /dev/null
@@ -1,42 +0,0 @@
-using Content.Server._CP14.Objectives.Systems;
-using Content.Shared.Objectives;
-using Robust.Shared.Prototypes;
-
-namespace Content.Server._CP14.Objectives.Components;
-
-[RegisterComponent, Access(typeof(CP14TownSendConditionSystem))]
-public sealed partial class CP14TownSendConditionComponent : Component
-{
- [DataField]
- public ProtoId CollectGroup;
-
- ///
- /// The minimum number of items you need to steal to fulfill a objective
- ///
- [DataField]
- public int MinCollectionSize = 1;
-
- ///
- /// The maximum number of items you need to steal to fulfill a objective
- ///
- [DataField]
- public int MaxCollectionSize = 1;
-
- ///
- /// Target collection size after calculation
- ///
- [DataField]
- public int CollectionSize;
-
- ///
- /// how many items have already been sent to the city
- ///
- [DataField]
- public int CollectionSent = 0;
-
- [DataField(required: true)]
- public LocId ObjectiveText;
-
- [DataField(required: true)]
- public LocId ObjectiveDescription;
-}
diff --git a/Content.Server/_CP14/Objectives/Systems/CP14CurrencyCollectConditionSystem.cs b/Content.Server/_CP14/Objectives/Systems/CP14CurrencyCollectConditionSystem.cs
index 8200f95f95..b5fef19043 100644
--- a/Content.Server/_CP14/Objectives/Systems/CP14CurrencyCollectConditionSystem.cs
+++ b/Content.Server/_CP14/Objectives/Systems/CP14CurrencyCollectConditionSystem.cs
@@ -1,4 +1,5 @@
using Content.Server._CP14.Objectives.Components;
+using Content.Server.Cargo.Systems;
using Content.Server.Objectives.Components;
using Content.Shared._CP14.Currency;
using Content.Shared.Interaction;
@@ -16,6 +17,7 @@ public sealed class CP14CurrencyCollectConditionSystem : EntitySystem
[Dependency] private readonly MetaDataSystem _metaData = default!;
[Dependency] private readonly SharedObjectivesSystem _objectives = default!;
[Dependency] private readonly CP14SharedCurrencySystem _currency = default!;
+ [Dependency] private readonly PricingSystem _price = default!;
public override void Initialize()
{
@@ -40,15 +42,16 @@ public sealed class CP14CurrencyCollectConditionSystem : EntitySystem
private float GetProgress(MindComponent mind, CP14CurrencyCollectConditionComponent condition)
{
- var count = 0;
+ double count = 0;
if (mind.OwnedEntity is null)
return 0;
- count += _currency.GetTotalCurrencyRecursive(mind.OwnedEntity.Value);
+ count += _price.GetPrice(mind.OwnedEntity.Value);
+ count -= _price.GetPrice(mind.OwnedEntity.Value, false); //We don't want to count the price of the entity itself.
var result = count / (float)condition.Currency;
result = Math.Clamp(result, 0, 1);
- return result;
+ return (float)result;
}
}
diff --git a/Content.Server/_CP14/Objectives/Systems/CP14TownSendConditionSystem.cs b/Content.Server/_CP14/Objectives/Systems/CP14TownSendConditionSystem.cs
deleted file mode 100644
index 2e7436cbce..0000000000
--- a/Content.Server/_CP14/Objectives/Systems/CP14TownSendConditionSystem.cs
+++ /dev/null
@@ -1,94 +0,0 @@
-using Content.Server._CP14.Objectives.Components;
-using Content.Shared._CP14.Cargo;
-using Content.Shared.Objectives.Components;
-using Content.Shared.Objectives.Systems;
-using Content.Shared.Stacks;
-using Robust.Shared.Prototypes;
-using Robust.Shared.Random;
-
-namespace Content.Server._CP14.Objectives.Systems;
-
-public sealed class CP14TownSendConditionSystem : EntitySystem
-{
- [Dependency] private readonly IRobustRandom _random = default!;
- [Dependency] private readonly IPrototypeManager _proto = default!;
- [Dependency] private readonly MetaDataSystem _metaData = default!;
- [Dependency] private readonly SharedObjectivesSystem _objectives = default!;
-
- private EntityQuery _stealQuery;
- private EntityQuery _stackQuery;
-
- public override void Initialize()
- {
- base.Initialize();
-
- _stealQuery = GetEntityQuery();
- _stackQuery = GetEntityQuery();
-
- SubscribeLocalEvent(OnAfterAssign);
- SubscribeLocalEvent(OnGetProgress);
-
- SubscribeLocalEvent(OnBeforeSell);
- }
-
- private void OnBeforeSell(BeforeSellEntities ev)
- {
- var query = EntityQueryEnumerator();
-
- HashSet removed = new();
- while (query.MoveNext(out var uid, out var condition))
- {
- foreach (var sentEnt in ev.Sent)
- {
- if (condition.CollectionSent >= condition.CollectionSize)
- continue;
-
- if (!_stealQuery.TryComp(sentEnt, out var stealTarget))
- continue;
-
- if (stealTarget.StealGroup != condition.CollectGroup)
- continue;
-
- if (_stackQuery.TryComp(sentEnt, out var stack))
- {
- condition.CollectionSent += stack.Count;
- }
- else
- {
- condition.CollectionSent++;
- }
-
- if (!removed.Contains(sentEnt))
- removed.Add(sentEnt);
- }
- }
-
- foreach (var remove in removed)
- {
- ev.Sent.Remove(remove);
- QueueDel(remove);
- }
- }
-
- //Set the visual, name, icon for the objective.
- private void OnAfterAssign(Entity condition, ref ObjectiveAfterAssignEvent args)
- {
- condition.Comp.CollectionSize = _random.Next(condition.Comp.MinCollectionSize, condition.Comp.MaxCollectionSize);
-
- var group = _proto.Index(condition.Comp.CollectGroup);
-
- var title = Loc.GetString(condition.Comp.ObjectiveText, ("itemName", Loc.GetString(group.Name)), ("count", condition.Comp.CollectionSize));
- var description = Loc.GetString(condition.Comp.ObjectiveDescription, ("itemName", Loc.GetString(group.Name)), ("count", condition.Comp.CollectionSize));
-
- _metaData.SetEntityName(condition.Owner, title, args.Meta);
- _metaData.SetEntityDescription(condition.Owner, description, args.Meta);
- _objectives.SetIcon(condition.Owner, group.Sprite, args.Objective);
- }
-
- private void OnGetProgress(Entity condition, ref ObjectiveGetProgressEvent args)
- {
- var result = (float)condition.Comp.CollectionSent / (float)condition.Comp.CollectionSize;
- result = Math.Clamp(result, 0, 1);
- args.Progress = result;
- }
-}
diff --git a/Content.Server/_CP14/Trading/CP14SellingPlatformComponent.cs b/Content.Server/_CP14/Trading/CP14SellingPlatformComponent.cs
new file mode 100644
index 0000000000..1ce02cb5ce
--- /dev/null
+++ b/Content.Server/_CP14/Trading/CP14SellingPlatformComponent.cs
@@ -0,0 +1,20 @@
+using Robust.Shared.Audio;
+using Robust.Shared.Prototypes;
+
+namespace Content.Server._CP14.Trading;
+
+///
+/// Allows you to sell items by overloading the platform with energy
+///
+[RegisterComponent]
+public sealed partial class CP14SellingPlatformComponent : Component
+{
+ [DataField]
+ public SoundSpecifier SellSound = new SoundPathSpecifier("/Audio/_CP14/Effects/cash.ogg")
+ {
+ Params = AudioParams.Default.WithVariation(0.1f),
+ };
+
+ [DataField]
+ public EntProtoId SellVisual = "CP14CashImpact";
+}
diff --git a/Content.Server/_CP14/Trading/CP14StationEconomySystem.Price.cs b/Content.Server/_CP14/Trading/CP14StationEconomySystem.Price.cs
new file mode 100644
index 0000000000..fb8de8ca1e
--- /dev/null
+++ b/Content.Server/_CP14/Trading/CP14StationEconomySystem.Price.cs
@@ -0,0 +1,30 @@
+using Content.Server.Cargo.Systems;
+using Content.Shared.Weapons.Melee;
+
+namespace Content.Server._CP14.Trading;
+
+public sealed partial class CP14StationEconomySystem
+{
+ private void InitPriceEvents()
+ {
+ SubscribeLocalEvent(OnMeleeWeaponPriceCalculation);
+ }
+
+ private void OnMeleeWeaponPriceCalculation(Entity ent, ref PriceCalculationEvent args)
+ {
+ //double price = 0;
+ //var dps = ent.Comp.Damage.GetTotal() * ent.Comp.AttackRate;
+ //if (dps <= 0)
+ // return;
+//
+ //price += dps.Value;
+//
+ //if (ent.Comp.ResetOnHandSelected == false)
+ // price *= 1.5; // If the weapon doesn't reset on hand selection, it's more valuable.
+//
+ //if (ent.Comp.AltDisarm)
+ // price *= 1.5; // If the weapon has an alt disarm, it's more valuable.
+//
+ //args.Price += price * 0.1f;
+ }
+}
diff --git a/Content.Server/_CP14/Trading/CP14StationEconomySystem.cs b/Content.Server/_CP14/Trading/CP14StationEconomySystem.cs
new file mode 100644
index 0000000000..5bc87ced44
--- /dev/null
+++ b/Content.Server/_CP14/Trading/CP14StationEconomySystem.cs
@@ -0,0 +1,54 @@
+using Content.Server.Cargo.Systems;
+using Content.Server.Station.Events;
+using Content.Shared._CP14.Trading.BuyServices;
+using Content.Shared._CP14.Trading.Components;
+using Content.Shared._CP14.Trading.Prototypes;
+using Content.Shared._CP14.Trading.Systems;
+using Robust.Shared.Prototypes;
+using Robust.Shared.Random;
+
+namespace Content.Server._CP14.Trading;
+
+public sealed partial class CP14StationEconomySystem : CP14SharedStationEconomySystem
+{
+ [Dependency] private readonly IPrototypeManager _proto = default!;
+ [Dependency] private readonly PricingSystem _price = default!;
+ [Dependency] private readonly IRobustRandom _random = default!;
+ public override void Initialize()
+ {
+ base.Initialize();
+ InitPriceEvents();
+
+ SubscribeLocalEvent(OnStationPostInit);
+ }
+
+ private void OnStationPostInit(Entity ent, ref StationPostInitEvent args)
+ {
+ UpdatePricing(ent);
+ }
+
+ private void UpdatePricing(Entity ent)
+ {
+ ent.Comp.Pricing.Clear();
+ foreach (var trade in _proto.EnumeratePrototypes())
+ {
+ double price = 0;
+ switch (trade.Service)
+ {
+ case CP14BuyItemsService buyItems:
+ if (!_proto.TryIndex(buyItems.Product, out var indexedProduct))
+ break;
+ price += _price.GetEstimatedPrice(indexedProduct) * buyItems.Count;
+ break;
+ }
+
+ price += trade.PriceMarkup;
+
+ //Random fluctuation
+ price *= 1 + _random.NextFloat(trade.PriceFluctuation);
+
+ ent.Comp.Pricing.TryAdd(trade, (int) price);
+ }
+ Dirty(ent);
+ }
+}
diff --git a/Content.Server/_CP14/Trading/CP14TradingPlatformSystem.cs b/Content.Server/_CP14/Trading/CP14TradingPlatformSystem.cs
new file mode 100644
index 0000000000..3f68a20de6
--- /dev/null
+++ b/Content.Server/_CP14/Trading/CP14TradingPlatformSystem.cs
@@ -0,0 +1,125 @@
+using Content.Server._CP14.Currency;
+using Content.Server._CP14.MagicEnergy;
+using Content.Server.Cargo.Systems;
+using Content.Shared._CP14.MagicEnergy;
+using Content.Shared._CP14.Trading.Components;
+using Content.Shared._CP14.Trading.Prototypes;
+using Content.Shared._CP14.Trading.Systems;
+using Content.Shared.Mobs.Components;
+using Content.Shared.Mobs.Systems;
+using Content.Shared.Placeable;
+using Content.Shared.Popups;
+using Content.Shared.Tag;
+using Robust.Shared.Audio.Systems;
+using Robust.Shared.Prototypes;
+
+namespace Content.Server._CP14.Trading;
+
+public sealed partial class CP14TradingPlatformSystem : CP14SharedTradingPlatformSystem
+{
+ [Dependency] private readonly TagSystem _tag = default!;
+ [Dependency] private readonly SharedAudioSystem _audio = default!;
+ [Dependency] private readonly PricingSystem _price = default!;
+ [Dependency] private readonly CP14CurrencySystem _cp14Currency = default!;
+ [Dependency] private readonly CP14StationEconomySystem _economy = default!;
+ [Dependency] private readonly SharedPopupSystem _popup = default!;
+ [Dependency] private readonly CP14MagicEnergySystem _magicEnergy = default!;
+ [Dependency] private readonly MobStateSystem _mobState = default!;
+
+ public override void Initialize()
+ {
+ base.Initialize();
+
+ SubscribeLocalEvent(OnBuyAttempt);
+ SubscribeLocalEvent(OnMagicOverload);
+ }
+
+ private void OnMagicOverload(Entity ent, ref CP14MagicEnergyOverloadEvent args)
+ {
+ _magicEnergy.ClearEnergy(ent.Owner);
+
+ if (!TryComp(ent, out var itemPlacer))
+ return;
+
+ double price = 0;
+ foreach (var placed in itemPlacer.PlacedEntities)
+ {
+ if (HasComp(placed))
+ continue;
+
+ var placedPrice = _price.GetPrice(placed);
+
+ if (placedPrice <= 0)
+ continue;
+
+ price += placedPrice;
+ QueueDel(placed);
+ }
+
+ _audio.PlayPvs(ent.Comp.SellSound, Transform(ent).Coordinates);
+ _cp14Currency.GenerateMoney(price, Transform(ent).Coordinates);
+ SpawnAtPosition(ent.Comp.SellVisual, Transform(ent).Coordinates);
+ }
+
+ private void OnBuyAttempt(Entity ent, ref CP14TradingPositionBuyAttempt args)
+ {
+ TryBuyPosition(args.Actor, ent, args.Position);
+ UpdateUIState(ent, args.Actor);
+ }
+
+ public bool TryBuyPosition(Entity user, Entity platform, ProtoId position)
+ {
+ if (!CanBuyPosition(user, platform!, position))
+ return false;
+
+ if (!Proto.TryIndex(position, out var indexedPosition))
+ return false;
+
+ if (!Resolve(user.Owner, ref user.Comp, false))
+ return false;
+
+ if (!TryComp(platform, out var itemPlacer))
+ return false;
+
+ //Top up balance
+ double balance = 0;
+ foreach (var placedEntity in itemPlacer.PlacedEntities)
+ {
+ if (!_tag.HasTag(placedEntity, platform.Comp.CoinTag))
+ continue;
+ balance += _price.GetPrice(placedEntity);
+ }
+
+ var price = _economy.GetPrice(position) ?? 10000;
+ if (balance < price)
+ {
+ // Not enough balance to buy the position
+ _popup.PopupEntity(Loc.GetString("cp14-trading-failure-popup-money"), platform);
+ return false;
+ }
+
+ foreach (var placedEntity in itemPlacer.PlacedEntities)
+ {
+ if (!_tag.HasTag(placedEntity, platform.Comp.CoinTag))
+ continue;
+ QueueDel(placedEntity);
+ }
+
+ balance -= price;
+
+ platform.Comp.NextBuyTime = Timing.CurTime + TimeSpan.FromSeconds(1f);
+ Dirty(platform);
+
+ if (indexedPosition.Service is not null)
+ indexedPosition.Service.Buy(EntityManager, Proto, platform);
+ user.Comp.Reputation[indexedPosition.Faction] += (float)price / 10;
+ Dirty(user);
+
+ _audio.PlayPvs(platform.Comp.BuySound, Transform(platform).Coordinates);
+
+ //return the change
+ _cp14Currency.GenerateMoney(balance, Transform(platform).Coordinates);
+ SpawnAtPosition(platform.Comp.BuyVisual, Transform(platform).Coordinates);
+ return true;
+ }
+}
diff --git a/Content.Shared/Armor/ArmorComponent.cs b/Content.Shared/Armor/ArmorComponent.cs
index 38f5f2cb1b..865aa0d795 100644
--- a/Content.Shared/Armor/ArmorComponent.cs
+++ b/Content.Shared/Armor/ArmorComponent.cs
@@ -22,7 +22,7 @@ public sealed partial class ArmorComponent : Component
/// to determine the monetary value of the armor
///
[DataField]
- public float PriceMultiplier = 1;
+ public float PriceMultiplier = 0.25f; //CP14 1 -> 0.25 (different economy)
///
/// If true, you can examine the armor to see the protection. If false, the verb won't appear.
diff --git a/Content.Shared/_CP14/Cargo/CP14SharedCargoSystem.cs b/Content.Shared/_CP14/Cargo/CP14SharedCargoSystem.cs
deleted file mode 100644
index 6243f76ed9..0000000000
--- a/Content.Shared/_CP14/Cargo/CP14SharedCargoSystem.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-namespace Content.Shared._CP14.Cargo;
-
-public class CP14SharedCargoSystem : EntitySystem
-{
-}
-
-///
-/// is called in just before the goods are shipped into town, and before the profit on them is calculated. It allows you to edit the list of sent items.
-///
-public sealed class BeforeSellEntities : EntityEventArgs
-{
- public HashSet Sent;
-
- public BeforeSellEntities(ref HashSet sent)
- {
- Sent = sent;
- }
-}
diff --git a/Content.Shared/_CP14/Cargo/CP14StoreUI.cs b/Content.Shared/_CP14/Cargo/CP14StoreUI.cs
deleted file mode 100644
index a4257d80ae..0000000000
--- a/Content.Shared/_CP14/Cargo/CP14StoreUI.cs
+++ /dev/null
@@ -1,65 +0,0 @@
-using Content.Shared._CP14.Workbench;
-using Robust.Shared.Prototypes;
-using Robust.Shared.Serialization;
-using Robust.Shared.Utility;
-
-namespace Content.Shared._CP14.Cargo;
-
-[Serializable, NetSerializable]
-public enum CP14StoreUiKey
-{
- Key,
-}
-
-[Serializable, NetSerializable]
-public sealed class CP14StoreUiState : BoundUserInterfaceState
-{
- public readonly string ShopName;
- public readonly HashSet ProductsBuy;
- public readonly HashSet ProductsSell;
-
- public CP14StoreUiState(string name, HashSet productsBuy, HashSet productsSell)
- {
- ShopName = name;
- ProductsBuy = productsBuy;
- ProductsSell = productsSell;
- }
-}
-
-[Serializable, NetSerializable]
-public readonly struct CP14StoreUiProductEntry : IEquatable
-{
- public readonly string ProtoId;
- public readonly SpriteSpecifier? Icon;
- public readonly EntProtoId? EntityView;
- public readonly string Name;
- public readonly string Desc;
- public readonly int Price;
- public readonly bool Special;
-
- public CP14StoreUiProductEntry(string protoId, SpriteSpecifier? icon, EntProtoId? entityView, string name, string desc, int price, bool special)
- {
- ProtoId = protoId;
- Icon = icon;
- EntityView = entityView;
- Name = name;
- Desc = desc;
- Price = price;
- Special = special;
- }
-
- public bool Equals(CP14StoreUiProductEntry other)
- {
- return ProtoId == other.ProtoId;
- }
-
- public override bool Equals(object? obj)
- {
- return obj is CP14StoreUiProductEntry other && Equals(other);
- }
-
- public override int GetHashCode()
- {
- return HashCode.Combine(ProtoId, Icon, Name, Desc, Price);
- }
-}
diff --git a/Content.Shared/_CP14/Cargo/CP14TradingInfoBoardComponent.cs b/Content.Shared/_CP14/Cargo/CP14TradingInfoBoardComponent.cs
deleted file mode 100644
index 0104113e04..0000000000
--- a/Content.Shared/_CP14/Cargo/CP14TradingInfoBoardComponent.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-using Content.Shared._CP14.Cargo.Prototype;
-using Robust.Shared.Prototypes;
-
-namespace Content.Shared._CP14.Cargo;
-
-///
-/// Allows users to view information on faction trading opportunities
-///
-[RegisterComponent]
-public sealed partial class CP14TradingInfoBoardComponent : Component
-{
- [DataField]
- public EntityUid? TradingPortal = null;
-
- [DataField]
- public ProtoId? CahcedFaction;
-}
diff --git a/Content.Shared/_CP14/Cargo/CP14TradingPortalComponent.cs b/Content.Shared/_CP14/Cargo/CP14TradingPortalComponent.cs
deleted file mode 100644
index 70475196ad..0000000000
--- a/Content.Shared/_CP14/Cargo/CP14TradingPortalComponent.cs
+++ /dev/null
@@ -1,63 +0,0 @@
-using Content.Shared._CP14.Cargo.Prototype;
-using Content.Shared.Destructible.Thresholds;
-using Robust.Shared.GameStates;
-using Robust.Shared.Map;
-using Robust.Shared.Prototypes;
-
-namespace Content.Shared._CP14.Cargo;
-
-///
-/// Add to the station so ...
-///
-[NetworkedComponent, RegisterComponent, AutoGenerateComponentPause, AutoGenerateComponentState]
-public sealed partial class CP14TradingPortalComponent : Component
-{
- [DataField(required: true), AutoNetworkedField]
- public ProtoId Faction = default;
-
- [DataField]
- public EntityCoordinates? TradingPosition = null;
-
- [DataField, AutoNetworkedField]
- public TimeSpan Delay = TimeSpan.FromSeconds(3f);
-
- [DataField, AutoNetworkedField]
- [AutoPausedField]
- public TimeSpan ProcessFinishTime = TimeSpan.Zero;
-
- ///
- /// Available to random selecting and pusharing
- ///
- [DataField]
- public HashSet AvailableBuyPosition = new();
-
- ///
- /// Available to random selecting and pusharing
- ///
- [DataField]
- public HashSet AvailableSellPosition = new();
-
- ///
- /// Fixed prices and positions of the current flight
- ///
- [DataField]
- public Dictionary CurrentBuyPositions = new(); //Proto, price
-
- [DataField]
- public Dictionary CurrentSpecialBuyPositions = new(); //Proto, price
-
- [DataField]
- public int SpecialBuyPositionCount = 2;
-
- [DataField]
- public Dictionary CurrentSellPositions = new(); //Proto, price
-
- [DataField]
- public Dictionary CurrentSpecialSellPositions = new(); //Proto, price
-
- [DataField]
- public int SpecialSellPositionCount = 2;
-
- [DataField]
- public int Balance = 0;
-}
diff --git a/Content.Shared/_CP14/Cargo/Prototype/BuyServices/CP14UnlockPositionsService.cs b/Content.Shared/_CP14/Cargo/Prototype/BuyServices/CP14UnlockPositionsService.cs
deleted file mode 100644
index 8d43771edc..0000000000
--- a/Content.Shared/_CP14/Cargo/Prototype/BuyServices/CP14UnlockPositionsService.cs
+++ /dev/null
@@ -1,81 +0,0 @@
-using Robust.Shared.Prototypes;
-using Robust.Shared.Utility;
-
-namespace Content.Shared._CP14.Cargo.Prototype.BuyServices;
-
-public sealed partial class CP14UnlockPositionsService : CP14StoreBuyService
-{
- [DataField]
- public HashSet> AddBuyPositions = new();
-
- [DataField]
- public HashSet> AddSellPositions = new();
-
- [DataField]
- public HashSet> RemoveBuyPositions = new();
-
- [DataField]
- public HashSet> RemoveSellPositions = new();
-
- [DataField]
- public SpriteSpecifier? Icon = null;
-
- [DataField]
- public LocId Name = string.Empty;
-
- public override void Buy(EntityManager entManager, IPrototypeManager prototype, Entity portal)
- {
- foreach (var buy in AddBuyPositions)
- {
- if (!prototype.TryIndex(buy, out var indexedBuy))
- continue;
-
- portal.Comp.AvailableBuyPosition.Add(indexedBuy);
- }
-
- foreach (var sell in AddSellPositions)
- {
- if (!prototype.TryIndex(sell, out var indexedSell))
- continue;
-
- portal.Comp.AvailableSellPosition.Add(indexedSell);
- }
-
- foreach (var rBuy in RemoveBuyPositions)
- {
- if (!prototype.TryIndex(rBuy, out var indexedBuy))
- continue;
-
- if (!portal.Comp.AvailableBuyPosition.Contains(indexedBuy))
- continue;
-
- portal.Comp.AvailableBuyPosition.Remove(indexedBuy);
- }
-
- foreach (var rSell in RemoveSellPositions)
- {
- if (!prototype.TryIndex(rSell, out var indexedSell))
- continue;
-
- if (!portal.Comp.AvailableSellPosition.Contains(indexedSell))
- continue;
-
- portal.Comp.AvailableSellPosition.Remove(indexedSell);
- }
- }
-
- public override string GetName(IPrototypeManager protoMan)
- {
- return Loc.GetString(Name);
- }
-
- public override EntProtoId? GetEntityView(IPrototypeManager protoManager)
- {
- return null;
- }
-
- public override SpriteSpecifier? GetTexture(IPrototypeManager protoManager)
- {
- return Icon;
- }
-}
diff --git a/Content.Shared/_CP14/Cargo/Prototype/CP14StoreBuyPositionPrototype.cs b/Content.Shared/_CP14/Cargo/Prototype/CP14StoreBuyPositionPrototype.cs
deleted file mode 100644
index 1a30ad0068..0000000000
--- a/Content.Shared/_CP14/Cargo/Prototype/CP14StoreBuyPositionPrototype.cs
+++ /dev/null
@@ -1,64 +0,0 @@
-using JetBrains.Annotations;
-using Robust.Shared.Prototypes;
-using Robust.Shared.Utility;
-
-namespace Content.Shared._CP14.Cargo.Prototype;
-
-///
-/// Stores the price and product/service pair that players can buy.
-///
-[Prototype("storePositionBuy")]
-public sealed partial class CP14StoreBuyPositionPrototype : IPrototype
-{
- [IdDataField, ViewVariables]
- public string ID { get; private set; } = default!;
-
- [DataField(required: true)]
- public int Price = 100;
-
- ///
- /// a unique code that can be used to purchase items.
- ///
- [DataField(required: true)]
- public string Code = string.Empty;
-
- [DataField(required: true, serverOnly: true)]
- public CP14StoreBuyService Service = default!;
-
- [DataField]
- public SpriteSpecifier? IconOverride;
-
- [DataField]
- public LocId? NameOverride;
-
- [DataField]
- public bool RoundstartAvailable = true;
-
- ///
- /// If true, this item will randomly appear under the ‘Special Offer’ heading. With a chance to show up every time the ship arrives.
- ///
- [DataField]
- public bool Special;
-
- [DataField]
- public HashSet> Factions = new();
-}
-
-[ImplicitDataDefinitionForInheritors]
-[MeansImplicitUse]
-public abstract partial class CP14StoreBuyService
-{
- public abstract void Buy(EntityManager entManager, IPrototypeManager prototype, Entity portal);
-
- public abstract string GetName(IPrototypeManager protoMan);
-
- ///
- /// You can specify an icon generated from an entity. It will support layering, colour changes and other layer options. Return null to disable.
- ///
- public abstract EntProtoId? GetEntityView(IPrototypeManager protoManager);
-
- ///
- /// You can specify the texture directly. Return null to disable.
- ///
- public abstract SpriteSpecifier? GetTexture(IPrototypeManager protoManager);
-}
diff --git a/Content.Shared/_CP14/Cargo/Prototype/CP14StoreFactionPrototype.cs b/Content.Shared/_CP14/Cargo/Prototype/CP14StoreFactionPrototype.cs
deleted file mode 100644
index 418120285d..0000000000
--- a/Content.Shared/_CP14/Cargo/Prototype/CP14StoreFactionPrototype.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-using Robust.Shared.Prototypes;
-
-namespace Content.Shared._CP14.Cargo.Prototype;
-
-[Prototype("storeFaction")]
-public sealed partial class CP14StoreFactionPrototype : IPrototype
-{
- [IdDataField, ViewVariables]
- public string ID { get; private set; } = default!;
-
- [DataField(required: true)]
- public LocId Name = string.Empty;
-
- [DataField]
- public LocId Desc = string.Empty;
-}
diff --git a/Content.Shared/_CP14/Cargo/Prototype/CP14StoreSellPositionPrototype.cs b/Content.Shared/_CP14/Cargo/Prototype/CP14StoreSellPositionPrototype.cs
deleted file mode 100644
index 35da395c21..0000000000
--- a/Content.Shared/_CP14/Cargo/Prototype/CP14StoreSellPositionPrototype.cs
+++ /dev/null
@@ -1,59 +0,0 @@
-using Content.Shared.Destructible.Thresholds;
-using JetBrains.Annotations;
-using Robust.Shared.Prototypes;
-using Robust.Shared.Utility;
-
-namespace Content.Shared._CP14.Cargo.Prototype;
-
-///
-/// Stores the price and product/service pair that players can buy.
-///
-[Prototype("storePositionSell")]
-public sealed partial class CP14StoreSellPositionPrototype : IPrototype
-{
- [IdDataField, ViewVariables]
- public string ID { get; private set; } = default!;
-
- [DataField(required: true)]
- public int Price = 100;
-
- [DataField(required: true, serverOnly: true)]
- public CP14StoreSellService Service = default!;
-
- [DataField]
- public SpriteSpecifier? IconOverride;
-
- [DataField]
- public LocId? NameOverride;
-
- [DataField]
- public bool RoundstartAvailable = true;
-
- ///
- /// If true, this item will randomly appear under the ‘Special Offer’ heading. With a chance to show up every time the ship arrives.
- ///
- [DataField]
- public bool Special;
-
- [DataField]
- public HashSet> Factions = new();
-}
-
-[ImplicitDataDefinitionForInheritors]
-[MeansImplicitUse]
-public abstract partial class CP14StoreSellService
-{
- public abstract bool TrySell(EntityManager entManager, HashSet entities);
-
- public abstract string GetName(IPrototypeManager protoMan);
-
- ///
- /// You can specify an icon generated from an entity. It will support layering, colour changes and other layer options. Return null to disable.
- ///
- public abstract EntProtoId? GetEntityView(IPrototypeManager protoManager);
-
- ///
- /// You can specify the texture directly. Return null to disable.
- ///
- public abstract SpriteSpecifier? GetTexture(IPrototypeManager protoManager);
-}
diff --git a/Content.Shared/_CP14/Cargo/Prototype/SellServices/CP14SellProrotypeService.cs b/Content.Shared/_CP14/Cargo/Prototype/SellServices/CP14SellProrotypeService.cs
deleted file mode 100644
index 78db8fea78..0000000000
--- a/Content.Shared/_CP14/Cargo/Prototype/SellServices/CP14SellProrotypeService.cs
+++ /dev/null
@@ -1,65 +0,0 @@
-using Robust.Shared.Prototypes;
-using Robust.Shared.Utility;
-
-namespace Content.Shared._CP14.Cargo.Prototype.SellServices;
-
-public sealed partial class CP14SellPrototypeService : CP14StoreSellService
-{
- [DataField(required: true)]
- public EntProtoId Proto;
-
- [DataField]
- public int Count = 1;
-
- public override bool TrySell(EntityManager entManager, HashSet entities)
- {
- HashSet suitable = new();
-
- var needCount = Count;
- foreach (var ent in entities)
- {
- if (needCount <= 0)
- break;
-
- if (!entManager.TryGetComponent(ent, out var metaData))
- continue;
-
- if (metaData.EntityPrototype is null)
- continue;
-
- if (metaData.EntityPrototype != Proto)
- continue;
-
- suitable.Add(ent);
- needCount -= 1;
- }
-
- if (needCount > 0)
- return false;
-
- foreach (var selledEnt in suitable)
- {
- entManager.DeleteEntity(selledEnt);
- }
-
- return true;
- }
-
- public override string GetName(IPrototypeManager protoMan)
- {
- if (!protoMan.TryIndex(Proto, out var proto))
- return ":3";
-
- return $"{proto.Name} x{Count}";
- }
-
- public override EntProtoId? GetEntityView(IPrototypeManager protoManager)
- {
- return Proto;
- }
-
- public override SpriteSpecifier? GetTexture(IPrototypeManager protoManager)
- {
- return null;
- }
-}
diff --git a/Content.Shared/_CP14/Cargo/Prototype/SellServices/CP14SellStackService.cs b/Content.Shared/_CP14/Cargo/Prototype/SellServices/CP14SellStackService.cs
deleted file mode 100644
index 63c4338113..0000000000
--- a/Content.Shared/_CP14/Cargo/Prototype/SellServices/CP14SellStackService.cs
+++ /dev/null
@@ -1,74 +0,0 @@
-using Content.Shared.Stacks;
-using Robust.Shared.Prototypes;
-using Robust.Shared.Utility;
-
-namespace Content.Shared._CP14.Cargo.Prototype.SellServices;
-
-public sealed partial class CP14SellStackService : CP14StoreSellService
-{
- [DataField(required: true)]
- public ProtoId StackId;
-
- [DataField(required: true)]
- public int Count = 1;
-
- public override bool TrySell(EntityManager entManager, HashSet entities)
- {
- var stackSystem = entManager.System();
-
- Dictionary, int> suitable = new();
-
- var needCount = Count;
- foreach (var ent in entities)
- {
- if (needCount <= 0)
- break;
-
- if (!entManager.TryGetComponent(ent, out var stack) || stack.StackTypeId != StackId.Id)
- continue;
-
- var consumed = Math.Min(needCount, stack.Count);
- suitable.Add((ent,stack), consumed);
- needCount -= consumed;
- }
-
- if (needCount > 0)
- return false;
-
- foreach (var selledEnt in suitable)
- {
- if (selledEnt.Key.Comp.Count == selledEnt.Value)
- {
- entities.Remove(selledEnt.Key);
- entManager.DeleteEntity(selledEnt.Key);
- }
- else
- {
- stackSystem.Use(selledEnt.Key, selledEnt.Value);
- }
- }
-
- return true;
- }
-
- public override string GetName(IPrototypeManager protoMan)
- {
- if (!protoMan.TryIndex(StackId, out var proto))
- return ":3";
-
- return $"{Loc.GetString(proto.Name)} x{Count}";
- }
-
- public override EntProtoId? GetEntityView(IPrototypeManager protoManager)
- {
- return null;
- }
-
- public override SpriteSpecifier? GetTexture(IPrototypeManager protoManager)
- {
- if (!protoManager.TryIndex(StackId, out var proto))
- return null;
-
- return proto.Icon;
- }
-}
diff --git a/Content.Shared/_CP14/Cargo/Prototype/SellServices/CP14SellWhitelistService.cs b/Content.Shared/_CP14/Cargo/Prototype/SellServices/CP14SellWhitelistService.cs
deleted file mode 100644
index 0d15060158..0000000000
--- a/Content.Shared/_CP14/Cargo/Prototype/SellServices/CP14SellWhitelistService.cs
+++ /dev/null
@@ -1,72 +0,0 @@
-using Content.Shared.Stacks;
-using Content.Shared.Whitelist;
-using Robust.Shared.Prototypes;
-using Robust.Shared.Utility;
-
-namespace Content.Shared._CP14.Cargo.Prototype.SellServices;
-
-public sealed partial class CP14SellWhitelistService : CP14StoreSellService
-{
- [DataField(required: true)]
- public EntityWhitelist Whitelist = new();
-
- [DataField(required: true)]
- public int Count = 1;
-
- [DataField(required: true)]
- public LocId Name = string.Empty;
-
- [DataField(required: true)]
- public SpriteSpecifier? Sprite = null;
-
- public override bool TrySell(EntityManager entManager, HashSet entities)
- {
- var whitelistSystem = entManager.System();
-
- HashSet suitable = new();
-
- var needCount = Count;
- foreach (var ent in entities)
- {
- if (needCount <= 0)
- break;
-
- if (!whitelistSystem.IsValid(Whitelist, ent))
- continue;
-
- var count = 1;
-
- if (entManager.TryGetComponent(ent, out var stack))
- count = stack.Count;
-
- suitable.Add(ent);
- needCount -= count;
- }
-
- if (needCount > 0)
- return false;
-
- foreach (var selledEnt in suitable)
- {
- entities.Remove(selledEnt);
- entManager.DeleteEntity(selledEnt);
- }
-
- return true;
- }
-
- public override string GetName(IPrototypeManager protoMan)
- {
- return $"{Loc.GetString(Name)} x{Count}";
- }
-
- public override EntProtoId? GetEntityView(IPrototypeManager protoManager)
- {
- return null;
- }
-
- public override SpriteSpecifier? GetTexture(IPrototypeManager protoManager)
- {
- return Sprite;
- }
-}
diff --git a/Content.Shared/_CP14/Currency/CP14CurrencyComponent.cs b/Content.Shared/_CP14/Currency/CP14CurrencyComponent.cs
deleted file mode 100644
index ce712d2c40..0000000000
--- a/Content.Shared/_CP14/Currency/CP14CurrencyComponent.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-namespace Content.Shared._CP14.Currency;
-
-///
-/// Reflects the market value of an item, to guide players through the economy.
-///
-
-[RegisterComponent, Access(typeof(CP14SharedCurrencySystem))]
-public sealed partial class CP14CurrencyComponent : Component
-{
- [DataField]
- public int Currency = 1;
-}
diff --git a/Content.Shared/_CP14/Currency/CP14CurrencyConverterComponent.cs b/Content.Shared/_CP14/Currency/CP14CurrencyConverterComponent.cs
index 5348094b4a..381ee77c70 100644
--- a/Content.Shared/_CP14/Currency/CP14CurrencyConverterComponent.cs
+++ b/Content.Shared/_CP14/Currency/CP14CurrencyConverterComponent.cs
@@ -1,6 +1,8 @@
using System.Numerics;
+using Content.Shared.Tag;
using Content.Shared.Whitelist;
using Robust.Shared.Audio;
+using Robust.Shared.Prototypes;
namespace Content.Shared._CP14.Currency;
@@ -22,4 +24,7 @@ public sealed partial class CP14CurrencyConverterComponent : Component
[DataField]
public SoundSpecifier InsertSound = new SoundCollectionSpecifier("CP14Coins");
+
+ [DataField]
+ public ProtoId CoinTag = "CP14Coin";
}
diff --git a/Content.Shared/_CP14/Currency/CP14SharedCurrencySystem.cs b/Content.Shared/_CP14/Currency/CP14SharedCurrencySystem.cs
index 5e66bb4bd3..7db235fc84 100644
--- a/Content.Shared/_CP14/Currency/CP14SharedCurrencySystem.cs
+++ b/Content.Shared/_CP14/Currency/CP14SharedCurrencySystem.cs
@@ -36,19 +36,4 @@ public partial class CP14SharedCurrencySystem : EntitySystem
return sb.ToString();
}
-
- public int GetTotalCurrencyRecursive(EntityUid uid)
- {
- var ev = new CP14GetCurrencyEvent();
- RaiseLocalEvent(uid, ev);
-
- return (int)(ev.Currency * ev.Multiplier);
- }
-}
-
-public sealed class CP14GetCurrencyEvent(int currency = 0, int multiplier = 1) : EntityEventArgs
-{
- public HashSet CheckedEntities = new();
- public int Currency = currency;
- public float Multiplier = multiplier;
}
diff --git a/Content.Shared/_CP14/MagicEnergy/SharedCP14MagicEnergySystem.cs b/Content.Shared/_CP14/MagicEnergy/SharedCP14MagicEnergySystem.cs
index fd2c4717d2..a8abb247a9 100644
--- a/Content.Shared/_CP14/MagicEnergy/SharedCP14MagicEnergySystem.cs
+++ b/Content.Shared/_CP14/MagicEnergy/SharedCP14MagicEnergySystem.cs
@@ -112,6 +112,24 @@ public abstract class SharedCP14MagicEnergySystem : EntitySystem
UpdateMagicAlert((ent, ent.Comp));
}
+ ///
+ /// Set energy to 0
+ ///
+ public void ClearEnergy(Entity ent)
+ {
+ if (!Resolve(ent, ref ent.Comp, false))
+ return;
+
+ var oldEnergy = ent.Comp.Energy;
+
+ ent.Comp.Energy = 0;
+
+ if (oldEnergy != 0)
+ RaiseLocalEvent(ent, new CP14MagicEnergyLevelChangeEvent(oldEnergy, 0, ent.Comp.MaxEnergy));
+
+ UpdateMagicAlert((ent, ent.Comp));
+ }
+
public void TransferEnergy(Entity sender,
Entity receiver,
FixedPoint2 energy,
diff --git a/Content.Shared/_CP14/Material/CP14MaterialComponent.cs b/Content.Shared/_CP14/Material/CP14MaterialComponent.cs
deleted file mode 100644
index 19aa955754..0000000000
--- a/Content.Shared/_CP14/Material/CP14MaterialComponent.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-using Content.Shared.Materials;
-using Robust.Shared.Prototypes;
-
-namespace Content.Shared._CP14.Material;
-
-[RegisterComponent]
-public sealed partial class CP14MaterialComponent : Component
-{
- [DataField(required: true)]
- public Dictionary, int> Materials = new();
-}
diff --git a/Content.Shared/_CP14/Material/CP14MaterialSystem.cs b/Content.Shared/_CP14/Material/CP14MaterialSystem.cs
deleted file mode 100644
index f8bba75221..0000000000
--- a/Content.Shared/_CP14/Material/CP14MaterialSystem.cs
+++ /dev/null
@@ -1,39 +0,0 @@
-using System.Text;
-using Content.Shared.Examine;
-using Content.Shared.Stacks;
-using Robust.Shared.Prototypes;
-
-namespace Content.Shared._CP14.Material;
-
-public sealed partial class CP14MaterialSystem : EntitySystem
-{
- [Dependency] private readonly IPrototypeManager _proto = default!;
- public override void Initialize()
- {
- base.Initialize();
-
- SubscribeLocalEvent(OnMaterialExamined);
- }
-
- private void OnMaterialExamined(Entity ent, ref ExaminedEvent args)
- {
- TryComp(ent, out var stack);
-
- var sb = new StringBuilder();
-
- sb.Append($"{Loc.GetString("cp14-material-examine")}\n");
- foreach (var material in ent.Comp.Materials)
- {
- if (!_proto.TryIndex(material.Key, out var indexedMaterial))
- continue;
-
- var count = material.Value;
- if (stack is not null)
- count *= stack.Count;
-
- sb.Append($"[color={indexedMaterial.Color.ToHex()}]{Loc.GetString(indexedMaterial.Name)}[/color] ({count})\n");
- }
- args.PushMarkup(sb.ToString());
- }
-
-}
diff --git a/Content.Shared/_CP14/Cargo/Prototype/BuyServices/CP14BuyItemsService.cs b/Content.Shared/_CP14/Trading/BuyServices/CP14BuyItemsService.cs
similarity index 60%
rename from Content.Shared/_CP14/Cargo/Prototype/BuyServices/CP14BuyItemsService.cs
rename to Content.Shared/_CP14/Trading/BuyServices/CP14BuyItemsService.cs
index 1abc45d543..6453ec45d7 100644
--- a/Content.Shared/_CP14/Cargo/Prototype/BuyServices/CP14BuyItemsService.cs
+++ b/Content.Shared/_CP14/Trading/BuyServices/CP14BuyItemsService.cs
@@ -1,9 +1,10 @@
+using Content.Shared._CP14.Trading.Prototypes;
using Content.Shared.Stacks;
-using Content.Shared.Storage.EntitySystems;
+using Robust.Client.GameObjects;
using Robust.Shared.Prototypes;
using Robust.Shared.Utility;
-namespace Content.Shared._CP14.Cargo.Prototype.BuyServices;
+namespace Content.Shared._CP14.Trading.BuyServices;
public sealed partial class CP14BuyItemsService : CP14StoreBuyService
{
@@ -15,14 +16,11 @@ public sealed partial class CP14BuyItemsService : CP14StoreBuyService
public override void Buy(EntityManager entManager,
IPrototypeManager prototype,
- Entity portal)
+ EntityUid platform)
{
- var storageSystem = entManager.System();
-
for (var i = 0; i < Count; i++)
{
- var spawned = entManager.Spawn(Product);
- storageSystem.Insert(spawned, portal);
+ entManager.SpawnNextToOrDrop(Product, platform);
}
}
@@ -38,13 +36,11 @@ public sealed partial class CP14BuyItemsService : CP14StoreBuyService
return Count > 0 ? $"{indexedProduct.Name} x{count}" : indexedProduct.Name;
}
- public override EntProtoId? GetEntityView(IPrototypeManager protoManager)
+ public override string GetDesc(IPrototypeManager protoMan)
{
- return Product;
- }
+ if (!protoMan.TryIndex(Product, out var indexedProduct))
+ return string.Empty;
- public override SpriteSpecifier? GetTexture(IPrototypeManager protoManager)
- {
- return null;
+ return indexedProduct.Description;
}
}
diff --git a/Content.Shared/_CP14/Trading/CP14TradingUI.cs b/Content.Shared/_CP14/Trading/CP14TradingUI.cs
new file mode 100644
index 0000000000..57060bca04
--- /dev/null
+++ b/Content.Shared/_CP14/Trading/CP14TradingUI.cs
@@ -0,0 +1,21 @@
+using Robust.Shared.Serialization;
+
+namespace Content.Shared._CP14.Trading;
+
+[Serializable, NetSerializable]
+public enum CP14TradingUiKey
+{
+ Key,
+}
+
+[Serializable, NetSerializable]
+public sealed class CP14TradingPlatformUiState(NetEntity user, NetEntity platform) : BoundUserInterfaceState
+{
+ public NetEntity User = user;
+ public NetEntity Platform = platform;
+}
+
+[Serializable, NetSerializable]
+public readonly struct CP14TradingProductEntry
+{
+}
diff --git a/Content.Shared/_CP14/Trading/Components/CP14StationEconomyComponent.cs b/Content.Shared/_CP14/Trading/Components/CP14StationEconomyComponent.cs
new file mode 100644
index 0000000000..ff4d0d03b7
--- /dev/null
+++ b/Content.Shared/_CP14/Trading/Components/CP14StationEconomyComponent.cs
@@ -0,0 +1,16 @@
+using Content.Shared._CP14.Trading.Prototypes;
+using Robust.Shared.GameStates;
+using Robust.Shared.Prototypes;
+
+namespace Content.Shared._CP14.Trading.Components;
+
+///
+/// The server calculates all prices for all product items, saves them in this component at the station,
+/// and synchronizes the data with the client for the entire round.
+///
+[RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
+public sealed partial class CP14StationEconomyComponent : Component
+{
+ [DataField, AutoNetworkedField]
+ public Dictionary, int> Pricing = new();
+}
diff --git a/Content.Shared/_CP14/Trading/Components/CP14TradingContractComponent.cs b/Content.Shared/_CP14/Trading/Components/CP14TradingContractComponent.cs
new file mode 100644
index 0000000000..fa7c98bfa2
--- /dev/null
+++ b/Content.Shared/_CP14/Trading/Components/CP14TradingContractComponent.cs
@@ -0,0 +1,18 @@
+using Content.Shared._CP14.Trading.Prototypes;
+using Content.Shared._CP14.Trading.Systems;
+using Robust.Shared.Prototypes;
+
+namespace Content.Shared._CP14.Trading.Components;
+
+[RegisterComponent, Access(typeof(CP14SharedTradingPlatformSystem))]
+public sealed partial class CP14TradingContractComponent : Component
+{
+ [DataField]
+ public TimeSpan Delay = TimeSpan.FromSeconds(2);
+
+ [DataField]
+ public ProtoId Faction;
+
+ [DataField]
+ public float StartReputation = 1f;
+}
diff --git a/Content.Shared/_CP14/Trading/Components/CP14TradingPlatformComponent.cs b/Content.Shared/_CP14/Trading/Components/CP14TradingPlatformComponent.cs
new file mode 100644
index 0000000000..1144d7b12e
--- /dev/null
+++ b/Content.Shared/_CP14/Trading/Components/CP14TradingPlatformComponent.cs
@@ -0,0 +1,26 @@
+using Content.Shared._CP14.Trading.Systems;
+using Content.Shared.Tag;
+using Robust.Shared.Audio;
+using Robust.Shared.GameStates;
+using Robust.Shared.Prototypes;
+
+namespace Content.Shared._CP14.Trading.Components;
+
+[RegisterComponent, NetworkedComponent, AutoGenerateComponentState, Access(typeof(CP14SharedTradingPlatformSystem))]
+public sealed partial class CP14TradingPlatformComponent : Component
+{
+ [DataField, AutoNetworkedField]
+ public TimeSpan NextBuyTime = TimeSpan.Zero;
+
+ [DataField]
+ public SoundSpecifier BuySound = new SoundPathSpecifier("/Audio/_CP14/Effects/cash.ogg")
+ {
+ Params = AudioParams.Default.WithVariation(0.1f)
+ };
+
+ [DataField]
+ public ProtoId CoinTag = "CP14Coin";
+
+ [DataField]
+ public EntProtoId BuyVisual = "CP14CashImpact";
+}
diff --git a/Content.Shared/_CP14/Trading/Components/CP14TradingReputationComponent.cs b/Content.Shared/_CP14/Trading/Components/CP14TradingReputationComponent.cs
new file mode 100644
index 0000000000..bc564a7ab4
--- /dev/null
+++ b/Content.Shared/_CP14/Trading/Components/CP14TradingReputationComponent.cs
@@ -0,0 +1,24 @@
+using Content.Shared._CP14.Trading.Prototypes;
+using Content.Shared._CP14.Trading.Systems;
+using Content.Shared.FixedPoint;
+using Robust.Shared.GameStates;
+using Robust.Shared.Prototypes;
+
+namespace Content.Shared._CP14.Trading.Components;
+
+///
+/// Reflects the entity's level of reputation, debts, and balance sheet in the “outside” world.
+/// Used for personal progression in trading systems
+///
+[RegisterComponent, NetworkedComponent, AutoGenerateComponentState, Access(typeof(CP14SharedTradingPlatformSystem))]
+public sealed partial class CP14TradingReputationComponent : Component
+{
+ ///
+ /// is both a reputation counter for each faction and an indicator of whether that faction is unlocked for that player.
+ ///
+ [DataField, AutoNetworkedField]
+ public Dictionary, FixedPoint2> Reputation = new();
+
+ [DataField, AutoNetworkedField]
+ public HashSet> UnlockedPositions = new();
+}
diff --git a/Content.Shared/_CP14/Trading/Prototypes/CP14TradingFactionPrototype.cs b/Content.Shared/_CP14/Trading/Prototypes/CP14TradingFactionPrototype.cs
new file mode 100644
index 0000000000..533307ea29
--- /dev/null
+++ b/Content.Shared/_CP14/Trading/Prototypes/CP14TradingFactionPrototype.cs
@@ -0,0 +1,21 @@
+using Robust.Shared.Prototypes;
+
+namespace Content.Shared._CP14.Trading.Prototypes;
+
+[Prototype("cp14TradingFaction")]
+public sealed partial class CP14TradingFactionPrototype : IPrototype
+{
+ [IdDataField] public string ID { get; private set; } = default!;
+
+ [DataField(required: true)]
+ public LocId Name = default!;
+
+ [DataField]
+ public Color Color = Color.White;
+
+ ///
+ /// If not null, this faction is automatically unlocked for players, and grants the specified amount of reputation to unlock the first positions.
+ ///
+ [DataField]
+ public float? RoundStart = null;
+}
diff --git a/Content.Shared/_CP14/Trading/Prototypes/CP14TradingPositionPrototype.cs b/Content.Shared/_CP14/Trading/Prototypes/CP14TradingPositionPrototype.cs
new file mode 100644
index 0000000000..1403467230
--- /dev/null
+++ b/Content.Shared/_CP14/Trading/Prototypes/CP14TradingPositionPrototype.cs
@@ -0,0 +1,66 @@
+using System.Numerics;
+using Content.Shared.FixedPoint;
+using JetBrains.Annotations;
+using Robust.Shared.Prototypes;
+using Robust.Shared.Utility;
+
+namespace Content.Shared._CP14.Trading.Prototypes;
+
+[Prototype("cp14TradingPosition")]
+public sealed partial class CP14TradingPositionPrototype : IPrototype
+{
+ [IdDataField] public string ID { get; private set; } = default!;
+
+ ///
+ /// Service Title. If you leave null, the name will try to generate from first Service.GetName()
+ ///
+ [DataField]
+ public LocId? Name;
+
+ ///
+ /// Service Description. If you leave null, the description will try to generate from first Service.GetDescription()
+ ///
+ [DataField]
+ public LocId? Desc;
+
+ ///
+ /// Icon for UI. If you leave null, the icon will try to generate from first Service.GetTexture()
+ ///
+ [DataField(required: true)]
+ public SpriteSpecifier Icon = default!;
+
+ [DataField(required: true)]
+ public ProtoId Faction;
+
+ [DataField]
+ public FixedPoint2 UnlockReputationCost = 1f;
+
+ [DataField(required: true)]
+ public Vector2 UiPosition = default!;
+
+ [DataField(required: true)]
+ public CP14StoreBuyService? Service = null;
+
+ [DataField]
+ public ProtoId? Prerequisite;
+
+ [DataField]
+ public int PriceMarkup = 1;
+
+ ///
+ /// each round prices will differ within +X percent of the calculated value
+ ///
+ [DataField]
+ public float PriceFluctuation = 0.2f;
+}
+
+[ImplicitDataDefinitionForInheritors]
+[MeansImplicitUse]
+public abstract partial class CP14StoreBuyService
+{
+ public abstract void Buy(EntityManager entManager, IPrototypeManager prototype, EntityUid platform);
+
+ public abstract string GetName(IPrototypeManager protoMan);
+
+ public abstract string GetDesc(IPrototypeManager protoMan);
+}
diff --git a/Content.Shared/_CP14/Trading/Systems/CP14SharedStationEconomySystem.cs b/Content.Shared/_CP14/Trading/Systems/CP14SharedStationEconomySystem.cs
new file mode 100644
index 0000000000..b2d194921b
--- /dev/null
+++ b/Content.Shared/_CP14/Trading/Systems/CP14SharedStationEconomySystem.cs
@@ -0,0 +1,23 @@
+using Content.Shared._CP14.Trading.Components;
+using Content.Shared._CP14.Trading.Prototypes;
+using Robust.Shared.Prototypes;
+
+namespace Content.Shared._CP14.Trading.Systems;
+
+public abstract partial class CP14SharedStationEconomySystem : EntitySystem
+{
+ public int? GetPrice(ProtoId position)
+ {
+ var query = EntityQueryEnumerator();
+
+ while (query.MoveNext(out var uid, out var economy))
+ {
+ if (!economy.Pricing.TryGetValue(position, out var price))
+ return null;
+
+ return price;
+ }
+
+ return null;
+ }
+}
diff --git a/Content.Shared/_CP14/Trading/Systems/CP14SharedTradingPlatformSystem.UI.cs b/Content.Shared/_CP14/Trading/Systems/CP14SharedTradingPlatformSystem.UI.cs
new file mode 100644
index 0000000000..52db72706e
--- /dev/null
+++ b/Content.Shared/_CP14/Trading/Systems/CP14SharedTradingPlatformSystem.UI.cs
@@ -0,0 +1,47 @@
+using Content.Shared._CP14.Trading.Components;
+using Content.Shared._CP14.Trading.Prototypes;
+using Content.Shared.UserInterface;
+
+namespace Content.Shared._CP14.Trading.Systems;
+
+public abstract partial class CP14SharedTradingPlatformSystem
+{
+ private void InitializeUI()
+ {
+ SubscribeLocalEvent(OnUnlockAttempt);
+ SubscribeLocalEvent(OnBeforeUIOpen);
+ }
+
+ private void OnUnlockAttempt(Entity ent, ref CP14TradingPositionUnlockAttempt args)
+ {
+ TryUnlockPosition(args.Actor, args.Position);
+ UpdateUIState(ent, args.Actor);
+ }
+
+ private void OnBeforeUIOpen(Entity ent, ref BeforeActivatableUIOpenEvent args)
+ {
+ UpdateUIState(ent, args.User);
+ }
+
+ public string GetTradeDescription(CP14TradingPositionPrototype position)
+ {
+ if (position.Desc != null)
+ return Loc.GetString(position.Desc);
+
+ if (position.Service is null)
+ return string.Empty;
+
+ return position.Service.GetDesc(Proto);
+ }
+
+ public string GetTradeName(CP14TradingPositionPrototype position)
+ {
+ if (position.Name != null)
+ return Loc.GetString(position.Name);
+
+ if (position.Service is null)
+ return string.Empty;
+
+ return position.Service.GetName(Proto);
+ }
+}
diff --git a/Content.Shared/_CP14/Trading/Systems/CP14SharedTradingPlatformSystem.cs b/Content.Shared/_CP14/Trading/Systems/CP14SharedTradingPlatformSystem.cs
new file mode 100644
index 0000000000..57d7d77d3c
--- /dev/null
+++ b/Content.Shared/_CP14/Trading/Systems/CP14SharedTradingPlatformSystem.cs
@@ -0,0 +1,126 @@
+using Content.Shared._CP14.Trading.Components;
+using Content.Shared._CP14.Trading.Prototypes;
+using Content.Shared.Interaction.Events;
+using Content.Shared.Popups;
+using Robust.Shared.Network;
+using Robust.Shared.Prototypes;
+using Robust.Shared.Serialization;
+using Robust.Shared.Timing;
+
+namespace Content.Shared._CP14.Trading.Systems;
+
+public abstract partial class CP14SharedTradingPlatformSystem : EntitySystem
+{
+ [Dependency] private readonly SharedUserInterfaceSystem _userInterface = default!;
+ [Dependency] protected readonly IPrototypeManager Proto = default!;
+ [Dependency] protected readonly IGameTiming Timing = default!;
+ [Dependency] private readonly SharedPopupSystem _popup = default!;
+ [Dependency] private readonly INetManager _net = default!;
+
+ public override void Initialize()
+ {
+ base.Initialize();
+ InitializeUI();
+
+ SubscribeLocalEvent(OnReputationMapInit);
+ SubscribeLocalEvent(OnContractUse);
+ }
+
+ private void OnReputationMapInit(Entity ent, ref MapInitEvent args)
+ {
+ foreach (var faction in Proto.EnumeratePrototypes())
+ {
+ if (faction.RoundStart is not null)
+ {
+ ent.Comp.Reputation[faction] = ent.Comp.Reputation.GetValueOrDefault(faction, 0f) + faction.RoundStart.Value;
+ }
+ }
+ Dirty(ent);
+ }
+
+ private void OnContractUse(Entity ent, ref UseInHandEvent args)
+ {
+ if (!Proto.TryIndex(ent.Comp.Faction, out var indexedFaction))
+ return;
+
+ var repComp = EnsureComp(args.User);
+ repComp.Reputation.TryAdd(ent.Comp.Faction, ent.Comp.StartReputation);
+ _popup.PopupPredicted(Loc.GetString("cp14-trading-contract-use", ("name", Loc.GetString(indexedFaction.Name))), args.User, args.User);
+ if (_net.IsServer)
+ QueueDel(ent);
+ }
+
+ protected void UpdateUIState(Entity ent, EntityUid user)
+ {
+ if (!TryComp(user, out var repComp))
+ return;
+
+ _userInterface.SetUiState(ent.Owner, CP14TradingUiKey.Key, new CP14TradingPlatformUiState(GetNetEntity(user), GetNetEntity(ent)));
+ }
+
+ public bool TryUnlockPosition(Entity user, ProtoId position)
+ {
+ if (!CanUnlockPosition(user, position))
+ return false;
+
+ if (!Proto.TryIndex(position, out var indexedPosition))
+ return false;
+
+ if (!Resolve(user.Owner, ref user.Comp, false))
+ return false;
+
+ user.Comp.Reputation[indexedPosition.Faction] -= indexedPosition.UnlockReputationCost;
+ user.Comp.UnlockedPositions.Add(position);
+ Dirty(user);
+
+ return true;
+ }
+
+ public bool CanUnlockPosition(Entity user, ProtoId position)
+ {
+ if (!Resolve(user.Owner, ref user.Comp, false))
+ return false;
+
+ if (!Proto.TryIndex(position, out var indexedPosition))
+ return false;
+
+ if (!user.Comp.Reputation.ContainsKey(indexedPosition.Faction))
+ return false;
+
+ if (user.Comp.UnlockedPositions.Contains(position))
+ return false;
+
+ if (indexedPosition.Prerequisite is not null && !user.Comp.UnlockedPositions.Contains(indexedPosition.Prerequisite.Value))
+ return false;
+
+ return user.Comp.Reputation.GetValueOrDefault(indexedPosition.Faction, 0f) >= indexedPosition.UnlockReputationCost;
+ }
+
+ public bool CanBuyPosition(Entity user, Entity platform, ProtoId position)
+ {
+ if (!Resolve(user.Owner, ref user.Comp, false))
+ return false;
+ if (!Resolve(platform.Owner, ref platform.Comp, false))
+ return false;
+
+ if (!user.Comp.UnlockedPositions.Contains(position))
+ return false;
+
+ if (Timing.CurTime < platform.Comp.NextBuyTime)
+ return false;
+
+ return true;
+ }
+}
+
+[Serializable, NetSerializable]
+public sealed class CP14TradingPositionUnlockAttempt(ProtoId position) : BoundUserInterfaceMessage
+{
+ public readonly ProtoId Position = position;
+}
+
+[Serializable, NetSerializable]
+public sealed class CP14TradingPositionBuyAttempt(ProtoId position) : BoundUserInterfaceMessage
+{
+ public readonly ProtoId Position = position;
+}
diff --git a/Content.Shared/_CP14/Workbench/Requirements/MaterialResource.cs b/Content.Shared/_CP14/Workbench/Requirements/MaterialResource.cs
index 302d17e928..bf67580db5 100644
--- a/Content.Shared/_CP14/Workbench/Requirements/MaterialResource.cs
+++ b/Content.Shared/_CP14/Workbench/Requirements/MaterialResource.cs
@@ -3,8 +3,6 @@
* https://github.com/space-wizards/space-station-14/blob/master/LICENSE.TXT
*/
-using Content.Shared._CP14.Material;
-using Content.Shared._CP14.Workbench.Prototypes;
using Content.Shared.Materials;
using Content.Shared.Stacks;
using Robust.Shared.Prototypes;
@@ -31,12 +29,12 @@ public sealed partial class MaterialResource : CP14WorkbenchCraftRequirement
var count = 0;
foreach (var ent in placedEntities)
{
- if (!entManager.TryGetComponent(ent, out var material))
+ if (!entManager.TryGetComponent(ent, out var material))
continue;
entManager.TryGetComponent(ent, out var stack);
- foreach (var (key, value) in material.Materials)
+ foreach (var (key, value) in material.MaterialComposition)
{
if (key != Material)
continue;
@@ -65,12 +63,12 @@ public sealed partial class MaterialResource : CP14WorkbenchCraftRequirement
var requiredCount = Count;
foreach (var placedEntity in placedEntities)
{
- if (!entManager.TryGetComponent(placedEntity, out var material))
+ if (!entManager.TryGetComponent(placedEntity, out var material))
continue;
entManager.TryGetComponent(placedEntity, out var stack);
- foreach (var mat in material.Materials)
+ foreach (var mat in material.MaterialComposition)
{
if (mat.Key != Material)
continue;
diff --git a/Resources/Audio/_CP14/Effects/attributions.yml b/Resources/Audio/_CP14/Effects/attributions.yml
index 303e241a78..1c3c18d4ea 100644
--- a/Resources/Audio/_CP14/Effects/attributions.yml
+++ b/Resources/Audio/_CP14/Effects/attributions.yml
@@ -82,3 +82,13 @@
license: "CC0-1.0"
copyright: 'Created by Fenodyrie on Freesound.org'
source: "https://freesound.org/people/Fenodyrie/sounds/583950/"
+
+- files: ["coin_impact1.ogg", "coin_impact2.ogg", "coin_impact3.ogg", "coin_impact4.ogg"]
+ license: "CC-BY-NC-4.0"
+ copyright: 'Created by Timbre on Freesound.org'
+ source: "https://freesound.org/people/Timbre/sounds/103219/"
+
+- files: ["cash.ogg"]
+ license: "CC0-1.0"
+ copyright: 'Created by Zott820 on Freesound.org'
+ source: "https://freesound.org/people/Zott820/sounds/209578/"
\ No newline at end of file
diff --git a/Resources/Audio/_CP14/Effects/cash.ogg b/Resources/Audio/_CP14/Effects/cash.ogg
new file mode 100644
index 0000000000..29324caa98
Binary files /dev/null and b/Resources/Audio/_CP14/Effects/cash.ogg differ
diff --git a/Resources/Audio/_CP14/Effects/coin_impact1.ogg b/Resources/Audio/_CP14/Effects/coin_impact1.ogg
new file mode 100644
index 0000000000..a3e3826334
Binary files /dev/null and b/Resources/Audio/_CP14/Effects/coin_impact1.ogg differ
diff --git a/Resources/Audio/_CP14/Effects/coin_impact2.ogg b/Resources/Audio/_CP14/Effects/coin_impact2.ogg
new file mode 100644
index 0000000000..b8bf37d315
Binary files /dev/null and b/Resources/Audio/_CP14/Effects/coin_impact2.ogg differ
diff --git a/Resources/Audio/_CP14/Effects/coin_impact3.ogg b/Resources/Audio/_CP14/Effects/coin_impact3.ogg
new file mode 100644
index 0000000000..04d5dc8439
Binary files /dev/null and b/Resources/Audio/_CP14/Effects/coin_impact3.ogg differ
diff --git a/Resources/Locale/en-US/_CP14/cargo/buyPositions.ftl b/Resources/Locale/en-US/_CP14/cargo/buyPositions.ftl
deleted file mode 100644
index 16aa360891..0000000000
--- a/Resources/Locale/en-US/_CP14/cargo/buyPositions.ftl
+++ /dev/null
@@ -1,2 +0,0 @@
-cp14-buy-position-reroll-buy = Reroll purchase offers
-cp14-buy-position-reroll-sell = Reroll sales offers
\ No newline at end of file
diff --git a/Resources/Locale/en-US/_CP14/statisticTracker/trackers.ftl b/Resources/Locale/en-US/_CP14/statisticTracker/trackers.ftl
deleted file mode 100644
index 4e29ccb2a0..0000000000
--- a/Resources/Locale/en-US/_CP14/statisticTracker/trackers.ftl
+++ /dev/null
@@ -1,4 +0,0 @@
-cp14-tracker-header = Round statistic:
-
-cp14-tracker-demiplane-open = Demiplanes opened
-cp14-tracker-demiplane-deaths = Players died in demiplanes
\ No newline at end of file
diff --git a/Resources/Locale/en-US/_CP14/store/factions.ftl b/Resources/Locale/en-US/_CP14/store/factions.ftl
deleted file mode 100644
index c69e2c680e..0000000000
--- a/Resources/Locale/en-US/_CP14/store/factions.ftl
+++ /dev/null
@@ -1,11 +0,0 @@
-cp14-faction-name-helmir = Helmir's descendants
-cp14-faction-desc-helmir = TODO
-
-cp14-faction-name-sylphoria = The winds of Sylphoria
-cp14-faction-desc-sylphoria = TODO
-
-cp14-faction-name-spice-stream = Spice Stream
-cp14-faction-desc-spice-stream = TODO
-
-cp14-faction-name-brad-family = Brad's imperial family
-cp14-faction-desc-brad-family = TODO
\ No newline at end of file
diff --git a/Resources/Locale/en-US/_CP14/store/positions_buy.ftl b/Resources/Locale/en-US/_CP14/store/positions_buy.ftl
deleted file mode 100644
index 09afa056e2..0000000000
--- a/Resources/Locale/en-US/_CP14/store/positions_buy.ftl
+++ /dev/null
@@ -1,40 +0,0 @@
-cp14-store-buy-hint = To purchase "{$name}", leave your money and order in the trade box: Any paper that says {$code} on it will do.
-
-cp14-store-buy-alchemy-unlock-t1-name = Trade Alliance: Alchemists
-cp14-store-buy-alchemy-unlock-t1-desc = The Alchemists Guild of the Kingdom of Klanir is willing to include the settlement in their trade route in return for small gifts and payment.
-
-cp14-store-buy-alchemy-vials-name = Alchemical vials
-cp14-store-buy-alchemy-vials-desc = Now the shortage of potion vessels is no longer a problem! After all, for a rather modest price, you can order batches of shiny vials directly from the best artisans! Random alchemical devices as a gift.
-
-cp14-store-buy-alchemy-bureaucracy-name = Bureaucratic reserve
-cp14-store-buy-alchemy-bureaucracy-desc = Pens, ink pots and a big stack of paper. In folders of different colors, or without folders at all: because we make sure that you can choose the option that is most comfortable for you.
-
-cp14-store-buy-alchemy-farm-seeds-name = Seeds for farming
-cp14-store-buy-alchemy-farm-seeds-desc = A set of different seeds, for farming of all kinds! Don't limit yourself, buy several boxes at once, just in case the farmers eat everything and don't have any food left to process into seeds.
-
-cp14-store-buy-alchemy-demiplan-name = 5 demiplane Keys
-cp14-store-buy-alchemy-demiplan-desc = Unstable pocket dimensions in which doom or riches may await you. What could be better for your adventurers?
-
-cp14-store-buy-wood-name = Wood stockpile
-cp14-store-buy-wood-desc = Fresh wood with delivery to your settlement! Do you live in a region where trees do not grow? Or you simply do not have the working hands to go and cut them yourself? We are ready to do it for you! Or rather, for your money.
-
-cp14-store-buy-fabric-name = Stock of textiles
-cp14-store-buy-fabric-desc = A large supply of fabric and thread, to make exquisite outfits or other tools. Only today, only now, only for the last six months.
-
-cp14-store-buy-energy-name = Energy reserve
-cp14-store-buy-energy-desc = Energy crystals in both medium and small sizes, and in addition, mana manipulation gauntlets. A complete set to power your energy devices.
-
-cp14-store-buy-cheese-name = Cheese stockpile
-cp14-store-buy-cheese-desc = Cows don't like to sail on ships, but their cheese is quite fond of traveling! So pay its way to your table!
-
-cp14-store-buy-copper-name = 10 copper bars
-cp14-store-buy-copper-desc = Looking for quality copper ingots? Our copper ingots are suitable for all needs, whether it is blacksmithing or coinage. Order right now, before they are sold out by craftsmen from all over the empire.
-
-cp14-store-buy-iron-name = 10 iron bars
-cp14-store-buy-iron-desc = Durable, reliable and versatile metal for the most daring projects! Do you need armor, weapons, or fasteners? The highest grade iron ingots are at your service. This is the foundation of your success!
-
-cp14-store-buy-gold-name = 10 gold bars
-cp14-store-buy-gold-desc = For those who appreciate luxury and elegance. Bars of the purest gold for jewelry, inlay or investment in the future. Gold is always in the price, and our delivery is always on time!
-
-cp14-store-buy-guidebook-name = Educational books
-cp14-store-buy-guidebook-desc = Have you run out of specialists in key areas? No problem, with this set of training literature you can make even an infant a professional, and put him to work for the good of the Empire! (OOC: There are only books for the blacksmith so far.)
\ No newline at end of file
diff --git a/Resources/Locale/en-US/_CP14/store/services.ftl b/Resources/Locale/en-US/_CP14/store/services.ftl
deleted file mode 100644
index 3f29593c8d..0000000000
--- a/Resources/Locale/en-US/_CP14/store/services.ftl
+++ /dev/null
@@ -1,10 +0,0 @@
-
-# Buy
-
-
-cp14-store-service-unlock-sell = Unlocks the ability to sell:
-cp14-store-service-unlock-buy = Unlocks the ability to buy:
-
-# Sell
-
-cp14-store-service-sell-entities = Sale items:
\ No newline at end of file
diff --git a/Resources/Locale/en-US/_CP14/store/ui.ftl b/Resources/Locale/en-US/_CP14/store/ui.ftl
deleted file mode 100644
index 9ee8bde93d..0000000000
--- a/Resources/Locale/en-US/_CP14/store/ui.ftl
+++ /dev/null
@@ -1,11 +0,0 @@
-cp14-store-ui-title = Trading outpost "{$name}"
-cp14-store-ui-order = More info
-
-cp14-store-ui-next-travel-out = Before departure:
-cp14-store-ui-next-travel-in = Before arrival:
-
-cp14-store-ui-tab-buy = Buying
-cp14-store-ui-tab-sell = Selling
-cp14-store-ui-tab-special = [bold][color=#eba346]One-off offer![/color][/bold]
-
-cp14-store-sell-hint = To sell {$name}, put the item you want in the trade cabinet, and close it. Our people will figure out what's what, pick up the item, and send you the money through the same sales cabinet.
\ No newline at end of file
diff --git a/Resources/Locale/en-US/_CP14/trading/factions.ftl b/Resources/Locale/en-US/_CP14/trading/factions.ftl
new file mode 100644
index 0000000000..54e27532c7
--- /dev/null
+++ b/Resources/Locale/en-US/_CP14/trading/factions.ftl
@@ -0,0 +1,3 @@
+cp14-trade-faction-contracts = Zellasian Trade Guild
+cp14-trade-faction-victoria-gardens = Victoria Gardens
+cp14-trade-faction-brad-potions = Brad's marvelous potions
\ No newline at end of file
diff --git a/Resources/Locale/en-US/_CP14/trading/ui.ftl b/Resources/Locale/en-US/_CP14/trading/ui.ftl
new file mode 100644
index 0000000000..27a8c6991d
--- /dev/null
+++ b/Resources/Locale/en-US/_CP14/trading/ui.ftl
@@ -0,0 +1,14 @@
+cp14-trading-ui-button-unlock = Unlock contract
+cp14-trading-ui-button-unlock-tooltip = You contract to purchase the specified equipment or service by spending your reputation. After that, you can buy that equipment or service with money in unlimited quantities.
+
+cp14-trading-ui-button-buy = Buy
+cp14-trading-ui-button-buy-tooltip = You spend the funds on the trading platform and buy the specified equipment or service from the selected vendor, which also increases your reputation. The equipment will be instantly delivered to you by spatial magic, and the service will be rendered as soon as possible.
+
+
+cp14-trading-ui-title = Empire Trade link Platform
+cp14-trading-ui-cooldown = Cooldown:
+cp14-trading-faction-prefix = Trading with:
+
+cp14-trading-failure-popup-money = Not enough funds on the platform!
+
+cp14-trading-contract-use = Trade with "{$name}" unlocked!
\ No newline at end of file
diff --git a/Resources/Locale/ru-RU/_CP14/cargo/buyPositions.ftl b/Resources/Locale/ru-RU/_CP14/cargo/buyPositions.ftl
deleted file mode 100644
index d52e6da1a4..0000000000
--- a/Resources/Locale/ru-RU/_CP14/cargo/buyPositions.ftl
+++ /dev/null
@@ -1,2 +0,0 @@
-cp14-buy-position-reroll-buy = Реролл предложений покупки
-cp14-buy-position-reroll-sell = Реролл предложений продажи
\ No newline at end of file
diff --git a/Resources/Locale/ru-RU/_CP14/statisticTracker/trackers.ftl b/Resources/Locale/ru-RU/_CP14/statisticTracker/trackers.ftl
deleted file mode 100644
index b225a1072b..0000000000
--- a/Resources/Locale/ru-RU/_CP14/statisticTracker/trackers.ftl
+++ /dev/null
@@ -1,4 +0,0 @@
-cp14-tracker-header = Статистика раунда:
-
-cp14-tracker-demiplane-open = Открыто демипланов
-cp14-tracker-demiplane-deaths = Умерло игроков в демипланах
\ No newline at end of file
diff --git a/Resources/Locale/ru-RU/_CP14/store/factions.ftl b/Resources/Locale/ru-RU/_CP14/store/factions.ftl
deleted file mode 100644
index 9837c5c605..0000000000
--- a/Resources/Locale/ru-RU/_CP14/store/factions.ftl
+++ /dev/null
@@ -1,11 +0,0 @@
-cp14-faction-name-helmir = Хельмировы потомки
-cp14-faction-desc-helmir = TODO
-
-cp14-faction-name-sylphoria = Ветра Сильфории
-cp14-faction-desc-sylphoria = TODO
-
-cp14-faction-name-spice-stream = Поток пряностей
-cp14-faction-desc-spice-stream = TODO
-
-cp14-faction-name-brad-family = Имперская семья Брада
-cp14-faction-desc-brad-family = TODO
\ No newline at end of file
diff --git a/Resources/Locale/ru-RU/_CP14/store/positions_buy.ftl b/Resources/Locale/ru-RU/_CP14/store/positions_buy.ftl
deleted file mode 100644
index b493e85445..0000000000
--- a/Resources/Locale/ru-RU/_CP14/store/positions_buy.ftl
+++ /dev/null
@@ -1,40 +0,0 @@
-cp14-store-buy-hint = Чтобы приобрести "{$name}", оставьте деньги и ваш заказ в торговом ящике: Подойдет любая бумага, на которой будет написано {$code}
-
-cp14-store-buy-alchemy-unlock-t1-name = Торговый союз: Алхимики
-cp14-store-buy-alchemy-unlock-t1-desc = Гильдия алхимиков королевства Кланира готова включить поселение в свой торговый путь взамен на небольшие дары и оплату.
-
-cp14-store-buy-alchemy-vials-name = Алхимические пузырьки
-cp14-store-buy-alchemy-vials-desc = Теперь проблема дефицита емкостей для зелий больше не проблема! Ведь по довольно скромной цене вы можете заказывать партии блестящих склянок прямо от лучших ремесленников! Случайные алхимические приборы в подарок.
-
-cp14-store-buy-alchemy-bureaucracy-name = Бюрократический запас
-cp14-store-buy-alchemy-bureaucracy-desc = Ручки, чернильницы и большая пачка бумаги. В папках разных цветов, и вовсе без папок: ведь мы заботимся о том, чтобы вы могли выбирать тот вариант, который вам комфортнее.
-
-cp14-store-buy-alchemy-farm-seeds-name = Семена для фермерства
-cp14-store-buy-alchemy-farm-seeds-desc = Набор разных семян, для фермерства всех видов! Не ограничивайте себя, купите сразу несколько ящиков, на случай, если фермеры все съедят и не оставят еды на переработку в семена.
-
-cp14-store-buy-alchemy-demiplan-name = 5 ключей демиплана
-cp14-store-buy-alchemy-demiplan-desc = Нестабильные карманные измерения, в котором вас может поджидать гибель или богатства. Что может быть лучше для ваших авантюристов?
-
-cp14-store-buy-wood-name = Запас древесины
-cp14-store-buy-wood-desc = Свежая древесина с доставкой до вашего поселения! Вы живете в краю где не растут деревья? Или у вас просто нет рабочих рук, чтобы пойти и нарубить их самостоятельно? Мы готовы сделать это за вас! Точнее, за ваши деньги.
-
-cp14-store-buy-fabric-name = Запас текстиля
-cp14-store-buy-fabric-desc = Большой запас ткани и ниток, для производства изысканнейших нарядов или другого инструментария. Только сегодня, только сейчас, только последние полгода.
-
-cp14-store-buy-energy-name = Энергетический запас
-cp14-store-buy-energy-desc = Энергетические кристаллы и средних, и малых размеров, и в добавок - перчатки манипулирования маной. Полный комплект, чтобы обеспечивать ваши энергоприборы энергией.
-
-cp14-store-buy-cheese-name = Запас сыра
-cp14-store-buy-cheese-desc = Коровки не любят плавать на кораблях, а вот их сыр вполне любит путешествия! Так оплатите же ему дорогу к вашему столу!
-
-cp14-store-buy-copper-name = 10 слитков меди
-cp14-store-buy-copper-desc = Ищете качественные медные слитки? Наши медные слитки подходят для всех нужд, будь то кузнечное дело или чеканка монет. Заказывайте прямо сейчас, пока их не раскупили мастера со всех уголков империи!
-
-cp14-store-buy-iron-name = 10 слитков железа
-cp14-store-buy-iron-desc = Прочный, надежный и универсальный металл для самых смелых проектов! Нужна броня, оружие или элементы креплений? Железные слитки в высшей пробе к вашим услугам. Это основа вашего успеха!
-
-cp14-store-buy-gold-name = 10 слитков золота
-cp14-store-buy-gold-desc = Для тех, кто ценит роскошь и изящество. Слитки чистейшего золота для украшений, инкрустации или инвестиций в будущее. Золото всегда в цене, а наша доставка — всегда в срок!
-
-cp14-store-buy-guidebook-name = Обучающие книги
-cp14-store-buy-guidebook-desc = У вас закончились специалисты в ключевых областях? Не проблема, с этим набором учебной литературы вы сможете сделать профессионалом даже младенца, и заставить его работать на благо Империи! (ООС: Тут пока что только книги для кузнеца)
\ No newline at end of file
diff --git a/Resources/Locale/ru-RU/_CP14/store/services.ftl b/Resources/Locale/ru-RU/_CP14/store/services.ftl
deleted file mode 100644
index ed29a3c9cd..0000000000
--- a/Resources/Locale/ru-RU/_CP14/store/services.ftl
+++ /dev/null
@@ -1,9 +0,0 @@
-
-# Buy
-
-cp14-store-service-unlock-sell = Разблокирует возможность продажи:
-cp14-store-service-unlock-buy = Разблокирует возможность покупки:
-
-# Sell
-
-cp14-store-service-sell-entities = Продажа предметов:
\ No newline at end of file
diff --git a/Resources/Locale/ru-RU/_CP14/store/ui.ftl b/Resources/Locale/ru-RU/_CP14/store/ui.ftl
deleted file mode 100644
index 9f07fe968e..0000000000
--- a/Resources/Locale/ru-RU/_CP14/store/ui.ftl
+++ /dev/null
@@ -1,11 +0,0 @@
-cp14-store-ui-title = Торговый аванпост "{$name}"
-cp14-store-ui-order = Дополнительная информация
-
-cp14-store-ui-next-travel-out = До отправления:
-cp14-store-ui-next-travel-in = До прибытия:
-
-cp14-store-ui-tab-buy = Покупка
-cp14-store-ui-tab-sell = Продажа
-cp14-store-ui-tab-special = [bold][color=#eba346]Разовое предложение![/color][/bold]
-
-cp14-store-sell-hint = Чтобы продать {$name}, засуньте необходимый товар в торговый шкаф, и закройте его. Наши люди разберутся что к чему, заберут товар и отправят вам деньги через этот же торговый шкаф.
\ No newline at end of file
diff --git a/Resources/Locale/ru-RU/_CP14/trading/factions.ftl b/Resources/Locale/ru-RU/_CP14/trading/factions.ftl
new file mode 100644
index 0000000000..21cd7a4781
--- /dev/null
+++ b/Resources/Locale/ru-RU/_CP14/trading/factions.ftl
@@ -0,0 +1,3 @@
+cp14-trade-faction-contracts = Торговая гильдия Зелласиан
+cp14-trade-faction-victoria-gardens = Сады Виктории
+cp14-trade-faction-brad-potions = Великолепные зелья Брада
\ No newline at end of file
diff --git a/Resources/Locale/ru-RU/_CP14/trading/ui.ftl b/Resources/Locale/ru-RU/_CP14/trading/ui.ftl
new file mode 100644
index 0000000000..953ab2b678
--- /dev/null
+++ b/Resources/Locale/ru-RU/_CP14/trading/ui.ftl
@@ -0,0 +1,14 @@
+cp14-trading-ui-button-unlock = Разблокировать контракт
+cp14-trading-ui-button-unlock-tooltip = Вы заключаете контракт, затрачивая на это свою репутацию. После этого, вы можете покупать это снаряжение или услугу за деньги в неограниченном количестве.
+
+cp14-trading-ui-button-buy = Купить
+cp14-trading-ui-button-buy-tooltip = Вы тратите средства, расположенные на торговой платформе и закупаете указанное снаряжение или услугу у выбранного продавца, что так же увеличивает вашу репутацию. Снаряжение будет мгновенно доставлено вам путем пространственной магии, а услуга оказана в ближайшее время.
+
+
+cp14-trading-ui-title = Платформа торговой связи с империей
+cp14-trading-ui-cooldown = Перезарядка:
+cp14-trading-faction-prefix = Торговля с:
+
+cp14-trading-failure-popup-money = Недостаточно средств на платформе!
+
+cp14-trading-contract-use = Торговля с "{$name}" разблокирована!
\ No newline at end of file
diff --git a/Resources/Maps/_CP14/comoss.yml b/Resources/Maps/_CP14/comoss.yml
index d3babced34..6827a7ebe2 100644
--- a/Resources/Maps/_CP14/comoss.yml
+++ b/Resources/Maps/_CP14/comoss.yml
@@ -1,11 +1,11 @@
meta:
format: 7
category: Map
- engineVersion: 255.0.0
+ engineVersion: 255.1.0
forkId: ""
forkVersion: ""
- time: 05/20/2025 19:15:42
- entityCount: 15339
+ time: 05/28/2025 20:50:51
+ entityCount: 15379
maps:
- 1
grids:
@@ -102,7 +102,7 @@ entities:
version: 6
-1,0:
ind: -1,0
- tiles: BgAAAAABBgAAAAAABgAAAAACBgAAAAAABgAAAAAAHgAAAAACBAAAAAAIBgAAAAADBgAAAAABBgAAAAADAgAAAAAMAgAAAAAHAgAAAAAFIQAAAAAAIQAAAAAAIQAAAAAABwAAAAAABQAAAAACBwAAAAACBwAAAAADBgAAAAACHgAAAAADBAAAAAAIBgAAAAAABgAAAAABBgAAAAAABgAAAAADBgAAAAAAAgAAAAABAgAAAAALAgAAAAAFIQAAAAAABQAAAAAABAAAAAAIBAAAAAAGBAAAAAAIBgAAAAABHgAAAAAEBAAAAAADBgAAAAACBgAAAAACBAAAAAAHBAAAAAALBgAAAAABBAAAAAAEBAAAAAABAgAAAAACIQAAAAAABQAAAAABBgAAAAADBgAAAAAABQAAAAACBgAAAAABHQAAAAAABAAAAAAGBgAAAAADBgAAAAAABgAAAAADBgAAAAACBgAAAAABBgAAAAABBAAAAAAMAgAAAAACIQAAAAAABwAAAAABBgAAAAACBgAAAAABBQAAAAAABgAAAAAAHgAAAAAABAAAAAAGBgAAAAADBgAAAAACBgAAAAAABgAAAAACBgAAAAACBgAAAAADBAAAAAAIHgAAAAACIQAAAAAABQAAAAACBQAAAAABBwAAAAADBwAAAAACBgAAAAADHgAAAAAEBAAAAAAKBgAAAAAABgAAAAADBgAAAAACBgAAAAACBgAAAAACBgAAAAADBAAAAAACHQAAAAAAIQAAAAAABgAAAAAABgAAAAADBgAAAAADBgAAAAAABgAAAAADHgAAAAABBAAAAAAFBAAAAAAGBAAAAAANBAAAAAAIBAAAAAAHBAAAAAAFBAAAAAAIBAAAAAABHgAAAAAFIQAAAAAABgAAAAABHgAAAAADHgAAAAAEHgAAAAAFHgAAAAAEHgAAAAACHgAAAAAFHQAAAAAAHQAAAAAAHgAAAAACHgAAAAAEHgAAAAAFHgAAAAAFHgAAAAAFHgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAAgAAAAAEHAAAAAAAHAAAAAAAHQAAAAAAHAAAAAADHgAAAAAFHgAAAAAEHQAAAAADHAAAAAADBgAAAAAAHQAAAAAAHgAAAAAEHgAAAAAFHgAAAAADHAAAAAACBgAAAAAAHAAAAAAFHAAAAAABHAAAAAACHAAAAAAFHAAAAAAFBgAAAAABBgAAAAABBgAAAAABBgAAAAACBgAAAAABBgAAAAACBgAAAAACHgAAAAAABwAAAAADBwAAAAABBwAAAAAAHAAAAAACHAAAAAAAHAAAAAACHAAAAAAFHAAAAAAABgAAAAACBgAAAAACBgAAAAABBgAAAAABBgAAAAACBgAAAAADBgAAAAAAHgAAAAABBwAAAAAABgAAAAACBwAAAAACHAAAAAADHAAAAAAAHAAAAAAEHAAAAAAFHAAAAAAEBgAAAAAABgAAAAABBgAAAAAABQAAAAAABQAAAAADBQAAAAADBgAAAAABHgAAAAAFBwAAAAACBwAAAAADBwAAAAACHAAAAAADHAAAAAAAHAAAAAAEHAAAAAABHAAAAAAEBgAAAAAABgAAAAAABgAAAAAABQAAAAABBQAAAAABBQAAAAABBgAAAAACHgAAAAACBwAAAAAABQAAAAAABQAAAAADHAAAAAABHAAAAAADHAAAAAADHAAAAAACHAAAAAACBgAAAAACBQAAAAAABQAAAAAABgAAAAAABgAAAAABBgAAAAAABgAAAAADHgAAAAACBwAAAAACBwAAAAACBgAAAAAA
+ tiles: BgAAAAABBgAAAAAABgAAAAACBgAAAAAABgAAAAAAHgAAAAACBAAAAAAIBgAAAAADBgAAAAABBgAAAAADAgAAAAAMAgAAAAAHAgAAAAAFIQAAAAAAIQAAAAAAIQAAAAAABwAAAAAABQAAAAACBwAAAAACBwAAAAADBgAAAAACHgAAAAADBAAAAAAIBgAAAAAABgAAAAABBgAAAAAABgAAAAADBgAAAAAAAgAAAAABAgAAAAALAgAAAAAFIQAAAAAABQAAAAAABAAAAAAIBAAAAAAGBAAAAAAIBgAAAAABHgAAAAAEBAAAAAADBgAAAAACBgAAAAACBAAAAAAHBAAAAAALBgAAAAABBAAAAAAEBAAAAAABAgAAAAACIQAAAAAABQAAAAABBgAAAAADBgAAAAAABQAAAAACBgAAAAABHQAAAAAABAAAAAAGBgAAAAADBgAAAAAABgAAAAADBgAAAAACBgAAAAABBgAAAAABBAAAAAAMAgAAAAACIQAAAAAABwAAAAABBgAAAAACBgAAAAABBQAAAAAABgAAAAAAHgAAAAAABAAAAAAGBgAAAAADBgAAAAACBgAAAAAABgAAAAACBgAAAAACBgAAAAADBAAAAAAIHgAAAAACIQAAAAAABQAAAAACBQAAAAABBwAAAAADBwAAAAACBgAAAAADHgAAAAAEBAAAAAAKBgAAAAAABgAAAAADBgAAAAACBgAAAAACBgAAAAACBgAAAAADBAAAAAACHQAAAAAAIQAAAAAABgAAAAAABgAAAAADBgAAAAADBgAAAAAABgAAAAADHgAAAAABBAAAAAAFBAAAAAAGBAAAAAANBAAAAAAIBAAAAAAHBAAAAAAFBAAAAAAIBAAAAAABHgAAAAAFIQAAAAAABgAAAAABHgAAAAADHgAAAAAEHgAAAAAFHgAAAAAEHgAAAAACHgAAAAAFHQAAAAAAHQAAAAAAHgAAAAACHgAAAAAEHgAAAAAFHgAAAAAFHgAAAAAFHgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAAgAAAAAEHAAAAAAAHAAAAAAAHQAAAAAAHAAAAAADHgAAAAAFHgAAAAAEHQAAAAADHAAAAAADBgAAAAAAHQAAAAAAHgAAAAAEHgAAAAAFHgAAAAADHAAAAAACBgAAAAAABQAAAAAABQAAAAAAHAAAAAACHAAAAAAFHAAAAAAFBgAAAAABBgAAAAABBgAAAAABBgAAAAACBgAAAAABBgAAAAACBgAAAAACHgAAAAAABwAAAAADBwAAAAABBwAAAAAABQAAAAAABQAAAAAAHAAAAAACHAAAAAAFHAAAAAAABgAAAAACBgAAAAACBgAAAAABBgAAAAABBgAAAAACBgAAAAADBgAAAAAAHgAAAAABBwAAAAAABgAAAAACBwAAAAACBQAAAAAABQAAAAAAHAAAAAAEHAAAAAAFHAAAAAAEBgAAAAAABgAAAAABBgAAAAAABQAAAAAABQAAAAADBQAAAAADBgAAAAABHgAAAAAFBwAAAAACBwAAAAADBwAAAAACBQAAAAAABQAAAAAAHAAAAAAEHAAAAAABHAAAAAAEBgAAAAAABgAAAAAABgAAAAAABQAAAAABBQAAAAABBQAAAAABBgAAAAACHgAAAAACBwAAAAAABQAAAAAABQAAAAADBQAAAAAABQAAAAAAHAAAAAADHAAAAAACHAAAAAACBgAAAAACBQAAAAAABQAAAAAABgAAAAAABgAAAAABBgAAAAAABgAAAAADHgAAAAACBwAAAAACBwAAAAACBgAAAAAA
version: 6
-1,-2:
ind: -1,-2
@@ -122,7 +122,7 @@ entities:
version: 6
-2,0:
ind: -2,0
- tiles: AQAAAAAAAQAAAAAAAQAAAAACAQAAAAACAQAAAAABAQAAAAAAAgAAAAAFHQAAAAABHQAAAAADHQAAAAACIQAAAAAAHgAAAAAAHgAAAAABBgAAAAABBgAAAAAABgAAAAADAQAAAAAAAQAAAAAAAQAAAAACAQAAAAACAQAAAAADAQAAAAABAgAAAAAKHgAAAAAAAgAAAAAHAgAAAAAEAgAAAAAGAgAAAAAFHgAAAAADBgAAAAAABgAAAAAABgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAADAgAAAAANAgAAAAAGAgAAAAAMAgAAAAAFHQAAAAAAAgAAAAABAgAAAAAIHQAAAAADHQAAAAADBgAAAAAABgAAAAADBgAAAAABAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAACAgAAAAAKHQAAAAACHQAAAAAAAgAAAAAHAgAAAAAIIQAAAAAAAgAAAAAEHgAAAAAAHQAAAAAFBgAAAAACBwAAAAACBQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAACAgAAAAALHQAAAAABHgAAAAACHQAAAAABHQAAAAACIQAAAAAAAgAAAAAFAgAAAAAOHQAAAAADBgAAAAADBQAAAAAABQAAAAACAQAAAAAAAQAAAAACAQAAAAABAQAAAAADAgAAAAAKAgAAAAAFHQAAAAACHgAAAAABHQAAAAADAgAAAAAMIQAAAAAAAgAAAAAIHAAAAAAFBgAAAAACBgAAAAACBQAAAAADAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAABAgAAAAAFAgAAAAAIHQAAAAADHgAAAAADHQAAAAACAgAAAAAGAgAAAAAAAgAAAAAFHAAAAAAABgAAAAABBgAAAAAABgAAAAABAQAAAAABAQAAAAAEAgAAAAAFAgAAAAAGAgAAAAAEHQAAAAAFAgAAAAAOAgAAAAAPAgAAAAAPAgAAAAAJAgAAAAAIHAAAAAADHgAAAAAEHgAAAAACBgAAAAADBgAAAAACAQAAAAAEAQAAAAACAgAAAAAHHQAAAAAAHQAAAAAAHQAAAAABAgAAAAAPAgAAAAALAgAAAAAMHAAAAAAEAgAAAAAGIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAAQAAAAAAAQAAAAACAgAAAAAJHQAAAAACHgAAAAAEHgAAAAAEHQAAAAADHQAAAAADAgAAAAAHAgAAAAAPIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAAQAAAAAAAQAAAAAEAQAAAAABAgAAAAABAgAAAAAMAgAAAAAOHQAAAAAFAgAAAAAHHgAAAAAFAgAAAAAHHAAAAAACAgAAAAAKAgAAAAAGAgAAAAAOAgAAAAADAgAAAAAIAQAAAAAAAQAAAAACAQAAAAAAAQAAAAAAAQAAAAADAgAAAAAGHQAAAAACAgAAAAAKHAAAAAACHAAAAAAFHAAAAAAFHAAAAAAAHAAAAAADHAAAAAAFHAAAAAAFHAAAAAAAAQAAAAAAAQAAAAAAAQAAAAADAQAAAAACAQAAAAAAAgAAAAAGAgAAAAAEAgAAAAAIHAAAAAAFHAAAAAAAHAAAAAABHAAAAAAFHAAAAAAAHAAAAAABHAAAAAAEHAAAAAAAAQAAAAAAAQAAAAAAAQAAAAACAgAAAAADAgAAAAAJAgAAAAACAgAAAAAMAgAAAAAMHAAAAAABHAAAAAADHAAAAAABHAAAAAADHAAAAAACHAAAAAAAHAAAAAABHAAAAAABAQAAAAAAAQAAAAAAAQAAAAACAgAAAAAJHQAAAAAAHQAAAAAEHQAAAAAAAgAAAAAEHAAAAAAAHAAAAAAAHAAAAAADHAAAAAAFHAAAAAABHAAAAAACHAAAAAAFHAAAAAABAQAAAAAAAQAAAAAAAQAAAAABAgAAAAAJHQAAAAACHQAAAAADAgAAAAANAgAAAAANHAAAAAADHAAAAAADHAAAAAADHAAAAAAFHAAAAAABHAAAAAAFHAAAAAACHAAAAAAD
+ tiles: AQAAAAAAAQAAAAAAAQAAAAACAQAAAAACAQAAAAABAQAAAAAAAgAAAAAFHQAAAAABHQAAAAADHQAAAAACIQAAAAAAHgAAAAAAHgAAAAABBgAAAAABBgAAAAAABgAAAAADAQAAAAAAAQAAAAAAAQAAAAACAQAAAAACAQAAAAADAQAAAAABAgAAAAAKHgAAAAAAAgAAAAAHAgAAAAAEAgAAAAAGAgAAAAAFHgAAAAADBgAAAAAABgAAAAAABgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAADAgAAAAANAgAAAAAGAgAAAAAMAgAAAAAFHQAAAAAAAgAAAAABAgAAAAAIHQAAAAADHQAAAAADBgAAAAAABgAAAAADBgAAAAABAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAACAgAAAAAKHQAAAAACHQAAAAAAAgAAAAAHAgAAAAAIIQAAAAAAAgAAAAAEHgAAAAAAHQAAAAAFBgAAAAACBwAAAAACBQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAACAgAAAAALHQAAAAABHgAAAAACHQAAAAABHQAAAAACIQAAAAAAAgAAAAAFAgAAAAAOHQAAAAADBgAAAAADBQAAAAAABQAAAAACAQAAAAAAAQAAAAACAQAAAAABAQAAAAADAgAAAAAKAgAAAAAFHQAAAAACHgAAAAABHQAAAAADAgAAAAAMIQAAAAAAAgAAAAAIHAAAAAAFBgAAAAACBgAAAAACBQAAAAADAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAABAgAAAAAFAgAAAAAIHQAAAAADHgAAAAADHQAAAAACAgAAAAAGAgAAAAAAAgAAAAAFHAAAAAAABgAAAAABBgAAAAAABgAAAAABAQAAAAABAQAAAAAEAgAAAAAFAgAAAAAGAgAAAAAEHQAAAAAFAgAAAAAOAgAAAAAPAgAAAAAPAgAAAAAJAgAAAAAIHAAAAAADHgAAAAAEHgAAAAACBgAAAAADBgAAAAACAQAAAAAEAQAAAAACAgAAAAAHHQAAAAAAHQAAAAAAHQAAAAABAgAAAAAPAgAAAAALAgAAAAAMHAAAAAAEAgAAAAAGIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAAQAAAAAAAQAAAAACAgAAAAAJHQAAAAACHgAAAAAEHgAAAAAEHQAAAAADHQAAAAADAgAAAAAHAgAAAAAPIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAAQAAAAAAAQAAAAAEAQAAAAABAgAAAAABAgAAAAAMAgAAAAAOHQAAAAAFAgAAAAAHHgAAAAAFAgAAAAAHHAAAAAACAgAAAAAKAgAAAAAGAgAAAAAOAgAAAAADAgAAAAAIAQAAAAAAAQAAAAACAQAAAAAAAQAAAAAAAQAAAAADAgAAAAAGHQAAAAACAgAAAAAKHAAAAAACHAAAAAAFBQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAAAQAAAAAAAQAAAAAAAQAAAAADAQAAAAACAQAAAAAAAgAAAAAGAgAAAAAEAgAAAAAIHAAAAAAFHAAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAAAQAAAAAAAQAAAAAAAQAAAAACAgAAAAADAgAAAAAJAgAAAAACAgAAAAAMAgAAAAAMHAAAAAABHAAAAAADBQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAAAQAAAAAAAQAAAAAAAQAAAAACAgAAAAAJHQAAAAAAHQAAAAAEHQAAAAAAAgAAAAAEHAAAAAAAHAAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAAAQAAAAAAAQAAAAAAAQAAAAABAgAAAAAJHQAAAAACHQAAAAADAgAAAAANAgAAAAANHAAAAAADHAAAAAADHAAAAAADHAAAAAAFHAAAAAAABQAAAAAABQAAAAAABQAAAAAA
version: 6
1,0:
ind: 1,0
@@ -142,7 +142,7 @@ entities:
version: 6
0,1:
ind: 0,1
- tiles: BgAAAAADBwAAAAABBQAAAAACBQAAAAABBQAAAAABBQAAAAADBQAAAAABHgAAAAAFBgAAAAADBwAAAAADBwAAAAAABwAAAAADBwAAAAAABQAAAAAABgAAAAADHQAAAAAABwAAAAABBwAAAAABBQAAAAABBQAAAAADBQAAAAACBQAAAAADBQAAAAACHgAAAAABBgAAAAABBgAAAAABBgAAAAADBwAAAAABBgAAAAABBgAAAAADBgAAAAABHQAAAAACBwAAAAAABwAAAAADBwAAAAADBQAAAAAABQAAAAADBQAAAAACBQAAAAADHgAAAAABHgAAAAABHgAAAAABHgAAAAADHQAAAAABHQAAAAACHQAAAAACHQAAAAABHQAAAAACHgAAAAACHgAAAAABHgAAAAAFHgAAAAACHQAAAAAAHAAAAAAAAgAAAAACHAAAAAAAHgAAAAAAHgAAAAADHgAAAAAEHgAAAAABHgAAAAAAHQAAAAADHgAAAAAEHgAAAAAAHgAAAAADHgAAAAAFHQAAAAAAAgAAAAANAgAAAAAIHQAAAAAAHAAAAAAAHQAAAAAABgAAAAABCwAAAAAACwAAAAAACwAAAAAABgAAAAAACwAAAAAABAAAAAAKBgAAAAACHAAAAAAAHAAAAAADHAAAAAAAAgAAAAAAAgAAAAAIAgAAAAABHQAAAAAAHQAAAAAABgAAAAADCwAAAAAACwAAAAAADAAAAAAACwAAAAAABQAAAAACBQAAAAAABgAAAAABHAAAAAAAHAAAAAACHAAAAAACHAAAAAAAAgAAAAAFAgAAAAALAgAAAAAMHQAAAAAFBgAAAAAACwAAAAAADAAAAAAADAAAAAAABgAAAAADBQAAAAADCwAAAAAABgAAAAAAHAAAAAAEHAAAAAABHAAAAAADHgAAAAABHQAAAAAAHgAAAAACCQAAAAAHCQAAAAAIBgAAAAACBQAAAAABCwAAAAAABgAAAAADBQAAAAABCwAAAAAACwAAAAAABgAAAAACHAAAAAAFHAAAAAABHAAAAAACCQAAAAACCQAAAAANCQAAAAAMCQAAAAALCQAAAAAHBgAAAAABCwAAAAAACwAAAAAACwAAAAAABQAAAAABCwAAAAAACwAAAAAABgAAAAAACQAAAAACCQAAAAAMCQAAAAAECQAAAAACCQAAAAAFCQAAAAACCQAAAAAECQAAAAAHBgAAAAABDAAAAAAADAAAAAAACwAAAAAABgAAAAABCwAAAAAABAAAAAABBgAAAAADCQAAAAAICQAAAAADCQAAAAAJCQAAAAACCQAAAAAFCQAAAAAGCQAAAAABCQAAAAABBgAAAAAADAAAAAAADAAAAAAACwAAAAAADAAAAAAADAAAAAAABAAAAAAGBgAAAAACCQAAAAALCQAAAAAKCQAAAAANCQAAAAAGCQAAAAACCQAAAAAICQAAAAAICQAAAAAHBgAAAAADDAAAAAAADAAAAAAACwAAAAAACwAAAAAACwAAAAAACwAAAAAABgAAAAABCQAAAAAKCQAAAAALCQAAAAAACQAAAAAMCQAAAAAMCQAAAAAICQAAAAAFCQAAAAAHBgAAAAABBgAAAAAABgAAAAACBgAAAAAABgAAAAACBgAAAAABBgAAAAAABgAAAAAACQAAAAALCQAAAAACCQAAAAALCQAAAAAFCQAAAAAHCQAAAAALCQAAAAACCQAAAAACCQAAAAAFCQAAAAANCQAAAAAFCQAAAAAICQAAAAAICQAAAAABCQAAAAABCQAAAAAKCQAAAAAFCQAAAAAKCQAAAAAECQAAAAAECQAAAAAKCQAAAAAMCQAAAAABCQAAAAAMCQAAAAADCQAAAAAKCQAAAAACCQAAAAALCQAAAAADCQAAAAABCQAAAAAICQAAAAAKCQAAAAAGCQAAAAAMCQAAAAAHCQAAAAACCQAAAAALCQAAAAAICQAAAAANCQAAAAAHCQAAAAADCQAAAAALCQAAAAABCQAAAAANCQAAAAACCQAAAAAJCQAAAAABCQAAAAAN
+ tiles: BgAAAAADBwAAAAABBQAAAAACBQAAAAABBQAAAAABBQAAAAADBQAAAAABHgAAAAAFBgAAAAADBwAAAAADBwAAAAAABwAAAAADBwAAAAAABQAAAAAABgAAAAADHQAAAAAABwAAAAABBwAAAAABBQAAAAABBQAAAAADBQAAAAACBQAAAAADBQAAAAACHgAAAAABBgAAAAABBgAAAAABBgAAAAADBwAAAAABBgAAAAABBgAAAAADBgAAAAABHQAAAAACBwAAAAAABwAAAAADBwAAAAADBQAAAAAABQAAAAADBQAAAAACBQAAAAADHgAAAAABHgAAAAABHgAAAAABHgAAAAADHQAAAAABHQAAAAACHQAAAAACHQAAAAABHQAAAAACHgAAAAACHgAAAAABBQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAAHAAAAAAAHgAAAAAAHgAAAAADHgAAAAAEHgAAAAABHgAAAAAAHQAAAAADHgAAAAAEHgAAAAAAHgAAAAADHgAAAAAFBQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAAHQAAAAAABgAAAAABCwAAAAAACwAAAAAACwAAAAAABgAAAAAACwAAAAAABAAAAAAKBgAAAAACHAAAAAAAHAAAAAADBQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAAHQAAAAAABgAAAAADCwAAAAAACwAAAAAADAAAAAAACwAAAAAABQAAAAACBQAAAAAABgAAAAABHAAAAAAAHAAAAAACBQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAAHQAAAAAFBgAAAAAACwAAAAAADAAAAAAADAAAAAAABgAAAAADBQAAAAADCwAAAAAABgAAAAAAHAAAAAAEHAAAAAABHAAAAAADHgAAAAABHQAAAAAAHgAAAAACCQAAAAAHCQAAAAAIBgAAAAACBQAAAAABCwAAAAAABgAAAAADBQAAAAABCwAAAAAACwAAAAAABgAAAAACHAAAAAAFHAAAAAABHAAAAAACCQAAAAACCQAAAAANCQAAAAAMCQAAAAALCQAAAAAHBgAAAAABCwAAAAAACwAAAAAACwAAAAAABQAAAAABCwAAAAAACwAAAAAABgAAAAAACQAAAAACCQAAAAAMCQAAAAAECQAAAAACCQAAAAAFCQAAAAACCQAAAAAECQAAAAAHBgAAAAABDAAAAAAADAAAAAAACwAAAAAABgAAAAABCwAAAAAABAAAAAABBgAAAAADCQAAAAAICQAAAAADCQAAAAAJCQAAAAACCQAAAAAFCQAAAAAGCQAAAAABCQAAAAABBgAAAAAADAAAAAAADAAAAAAACwAAAAAADAAAAAAADAAAAAAABAAAAAAGBgAAAAACCQAAAAALCQAAAAAKCQAAAAANCQAAAAAGCQAAAAACCQAAAAAICQAAAAAICQAAAAAHBgAAAAADDAAAAAAADAAAAAAACwAAAAAACwAAAAAACwAAAAAACwAAAAAABgAAAAABCQAAAAAKCQAAAAALCQAAAAAACQAAAAAMCQAAAAAMCQAAAAAICQAAAAAFCQAAAAAHBgAAAAABBgAAAAAABgAAAAACBgAAAAAABgAAAAACBgAAAAABBgAAAAAABgAAAAAACQAAAAALCQAAAAACCQAAAAALCQAAAAAFCQAAAAAHCQAAAAALCQAAAAACCQAAAAACCQAAAAAFCQAAAAANCQAAAAAFCQAAAAAICQAAAAAICQAAAAABCQAAAAABCQAAAAAKCQAAAAAFCQAAAAAKCQAAAAAECQAAAAAECQAAAAAKCQAAAAAMCQAAAAABCQAAAAAMCQAAAAADCQAAAAAKCQAAAAACCQAAAAALCQAAAAADCQAAAAABCQAAAAAICQAAAAAKCQAAAAAGCQAAAAAMCQAAAAAHCQAAAAACCQAAAAALCQAAAAAICQAAAAANCQAAAAAHCQAAAAADCQAAAAALCQAAAAABCQAAAAANCQAAAAACCQAAAAAJCQAAAAABCQAAAAAN
version: 6
1,2:
ind: 1,2
@@ -154,7 +154,7 @@ entities:
version: 6
-1,1:
ind: -1,1
- tiles: HAAAAAABHAAAAAAAHAAAAAAFHAAAAAAEHQAAAAAABgAAAAADBQAAAAAABQAAAAAABgAAAAABBgAAAAADHgAAAAADHgAAAAACHgAAAAAABwAAAAADBQAAAAADBgAAAAACHAAAAAAFHAAAAAAEHAAAAAAAHAAAAAAFHAAAAAADBgAAAAADBQAAAAAABQAAAAACBgAAAAADBgAAAAACHgAAAAADHgAAAAADHgAAAAAFBwAAAAACBQAAAAACBQAAAAABHAAAAAAFHAAAAAABHAAAAAAEHAAAAAAEHAAAAAACBgAAAAACBgAAAAACBgAAAAAABgAAAAABBgAAAAAAHQAAAAACHgAAAAAFHgAAAAAFBwAAAAADBwAAAAACBwAAAAABHAAAAAAFHAAAAAACHAAAAAAEHAAAAAAEHAAAAAAAHgAAAAAAHgAAAAADHgAAAAACHgAAAAAAHQAAAAABHQAAAAAAHAAAAAAEHAAAAAABHAAAAAAEHgAAAAACHgAAAAAFAgAAAAAMHAAAAAACHAAAAAAEAgAAAAACAgAAAAACAgAAAAANHQAAAAAAHAAAAAAAHQAAAAAAHQAAAAAAAgAAAAACAgAAAAAFAgAAAAAGHAAAAAAAHgAAAAADHgAAAAAFAgAAAAAKAgAAAAAFCQAAAAAIAgAAAAAIAgAAAAAMAgAAAAADAgAAAAAOHQAAAAAAAgAAAAALAgAAAAAEAgAAAAAEHAAAAAAFHQAAAAAAHgAAAAACHgAAAAAFHgAAAAABCQAAAAADCQAAAAANCQAAAAAFAgAAAAAMAgAAAAADAgAAAAANAgAAAAAHAgAAAAAIAgAAAAAAAgAAAAANAgAAAAABAgAAAAACHAAAAAADHgAAAAADHgAAAAAEHAAAAAABCQAAAAABCQAAAAAACQAAAAALCQAAAAAHCQAAAAAIAgAAAAALAgAAAAAKAgAAAAACAgAAAAADAgAAAAAIHQAAAAAAAgAAAAAPCQAAAAACHgAAAAAEHgAAAAAEHAAAAAACCQAAAAAGCQAAAAAKCQAAAAAGCQAAAAAMCQAAAAABCQAAAAAFCQAAAAACAgAAAAAJAgAAAAAKAgAAAAAIAgAAAAAJAgAAAAAICQAAAAADCQAAAAACHgAAAAADHAAAAAADCQAAAAAECQAAAAAMCQAAAAANCQAAAAAHCQAAAAAKCQAAAAAMCQAAAAANCQAAAAAACQAAAAADCQAAAAACCQAAAAAECQAAAAAFCQAAAAADCQAAAAAMCQAAAAAACQAAAAAICQAAAAADCQAAAAANCQAAAAALCQAAAAALCQAAAAABCQAAAAAFCQAAAAAHCQAAAAAJCQAAAAADCQAAAAAKCQAAAAALCQAAAAACCQAAAAANCQAAAAALCQAAAAAFCQAAAAAMCQAAAAAFCQAAAAAACQAAAAAECQAAAAACCQAAAAAKCQAAAAABCQAAAAABCQAAAAAFCQAAAAAICQAAAAACCQAAAAAFCQAAAAAACQAAAAAJCQAAAAAHCQAAAAAFCQAAAAAFCQAAAAABCQAAAAALCQAAAAAICQAAAAAKCQAAAAAHCQAAAAADCQAAAAAKCQAAAAABCQAAAAADCQAAAAABCQAAAAAICQAAAAAJCQAAAAANCQAAAAANCQAAAAABCQAAAAAHCQAAAAAICQAAAAAKCQAAAAAJCQAAAAAACQAAAAAHCQAAAAANCQAAAAAACQAAAAADCQAAAAAJCQAAAAAHCQAAAAACCQAAAAAICQAAAAAHCQAAAAAJCQAAAAABCQAAAAAICQAAAAAGCQAAAAAMCQAAAAACCQAAAAADCQAAAAAHCQAAAAAICQAAAAANCQAAAAAMCQAAAAAFCQAAAAAGCQAAAAAGCQAAAAADCQAAAAAECQAAAAAACQAAAAACCQAAAAAKCQAAAAAACQAAAAADCQAAAAAMCQAAAAAJCQAAAAAFCQAAAAAFCQAAAAAACQAAAAAACQAAAAAICQAAAAALCQAAAAAACQAAAAALCQAAAAAHCQAAAAAFCQAAAAAJCQAAAAAM
+ tiles: BQAAAAAABQAAAAAAHAAAAAAFHAAAAAAEHQAAAAAABgAAAAADBQAAAAAABQAAAAAABgAAAAABBgAAAAADHgAAAAADHgAAAAACHgAAAAAABwAAAAADBQAAAAADBgAAAAACHAAAAAAFHAAAAAAEHAAAAAAAHAAAAAAFHAAAAAADBgAAAAADBQAAAAAABQAAAAACBgAAAAADBgAAAAACHgAAAAADHgAAAAADHgAAAAAFBwAAAAACBQAAAAACBQAAAAABHAAAAAAFHAAAAAABHAAAAAAEHAAAAAAEHAAAAAACBgAAAAACBgAAAAACBgAAAAAABgAAAAABBgAAAAAAHQAAAAACHgAAAAAFHgAAAAAFBwAAAAADBwAAAAACBwAAAAABHAAAAAAFHAAAAAACHAAAAAAEHAAAAAAEHAAAAAAAHgAAAAAAHgAAAAADHgAAAAACHgAAAAAAHQAAAAABHQAAAAAAHAAAAAAEHAAAAAABHAAAAAAEHgAAAAACHgAAAAAFAgAAAAAMHAAAAAACHAAAAAAEAgAAAAACAgAAAAACAgAAAAANHQAAAAAAHAAAAAAAHQAAAAAAHQAAAAAAAgAAAAACAgAAAAAFAgAAAAAGHAAAAAAAHgAAAAADHgAAAAAFAgAAAAAKAgAAAAAFCQAAAAAIAgAAAAAIAgAAAAAMAgAAAAADAgAAAAAOHQAAAAAAAgAAAAALAgAAAAAEAgAAAAAEHAAAAAAFHQAAAAAAHgAAAAACHgAAAAAFHgAAAAABCQAAAAADCQAAAAANCQAAAAAFAgAAAAAMAgAAAAADAgAAAAANAgAAAAAHAgAAAAAIAgAAAAAAAgAAAAANAgAAAAABAgAAAAACHAAAAAADHgAAAAADHgAAAAAEHAAAAAABCQAAAAABCQAAAAAACQAAAAALCQAAAAAHCQAAAAAIAgAAAAALAgAAAAAKAgAAAAACAgAAAAADAgAAAAAIHQAAAAAAAgAAAAAPCQAAAAACHgAAAAAEHgAAAAAEHAAAAAACCQAAAAAGCQAAAAAKCQAAAAAGCQAAAAAMCQAAAAABCQAAAAAFCQAAAAACAgAAAAAJAgAAAAAKAgAAAAAIAgAAAAAJAgAAAAAICQAAAAADCQAAAAACHgAAAAADHAAAAAADCQAAAAAECQAAAAAMCQAAAAANCQAAAAAHCQAAAAAKCQAAAAAMCQAAAAANCQAAAAAACQAAAAADCQAAAAACCQAAAAAECQAAAAAFCQAAAAADCQAAAAAMCQAAAAAACQAAAAAICQAAAAADCQAAAAANCQAAAAALCQAAAAALCQAAAAABCQAAAAAFCQAAAAAHCQAAAAAJCQAAAAADCQAAAAAKCQAAAAALCQAAAAACCQAAAAANCQAAAAALCQAAAAAFCQAAAAAMCQAAAAAFCQAAAAAACQAAAAAECQAAAAACCQAAAAAKCQAAAAABCQAAAAABCQAAAAAFCQAAAAAICQAAAAACCQAAAAAFCQAAAAAACQAAAAAJCQAAAAAHCQAAAAAFCQAAAAAFCQAAAAABCQAAAAALCQAAAAAICQAAAAAKCQAAAAAHCQAAAAADCQAAAAAKCQAAAAABCQAAAAADCQAAAAABCQAAAAAICQAAAAAJCQAAAAANCQAAAAANCQAAAAABCQAAAAAHCQAAAAAICQAAAAAKCQAAAAAJCQAAAAAACQAAAAAHCQAAAAANCQAAAAAACQAAAAADCQAAAAAJCQAAAAAHCQAAAAACCQAAAAAICQAAAAAHCQAAAAAJCQAAAAABCQAAAAAICQAAAAAGCQAAAAAMCQAAAAACCQAAAAADCQAAAAAHCQAAAAAICQAAAAANCQAAAAAMCQAAAAAFCQAAAAAGCQAAAAAGCQAAAAADCQAAAAAECQAAAAAACQAAAAACCQAAAAAKCQAAAAAACQAAAAADCQAAAAAMCQAAAAAJCQAAAAAFCQAAAAAFCQAAAAAACQAAAAAACQAAAAAICQAAAAALCQAAAAAACQAAAAALCQAAAAAHCQAAAAAFCQAAAAAJCQAAAAAM
version: 6
-1,2:
ind: -1,2
@@ -166,7 +166,7 @@ entities:
version: 6
-2,1:
ind: -2,1
- tiles: AQAAAAABAQAAAAADAQAAAAADAgAAAAANHQAAAAAFAgAAAAAMAgAAAAAFAgAAAAAFHAAAAAABHAAAAAABHAAAAAADHAAAAAAEHAAAAAAEHAAAAAAAHAAAAAAFHAAAAAADAQAAAAABAQAAAAAEAgAAAAAEAgAAAAAEAgAAAAACAgAAAAANAgAAAAAAHQAAAAAFHAAAAAACHAAAAAADHAAAAAAFHAAAAAABHAAAAAAFHAAAAAAEHAAAAAAAHAAAAAADAQAAAAADAQAAAAADAgAAAAANAgAAAAAOAgAAAAAFAgAAAAAGAgAAAAACAgAAAAAOHAAAAAAFHAAAAAACHAAAAAAAHAAAAAAAHAAAAAABHAAAAAABHAAAAAAAHAAAAAABAQAAAAAEAQAAAAAEAQAAAAAAAQAAAAAEAQAAAAACAQAAAAAAAQAAAAACAQAAAAAAHAAAAAAAHAAAAAADHAAAAAACHAAAAAAAHAAAAAACHAAAAAAEHAAAAAADHAAAAAABAQAAAAADAQAAAAAAAQAAAAABAQAAAAACCQAAAAAACQAAAAANCQAAAAALCQAAAAACHAAAAAADHAAAAAAEHAAAAAAEHAAAAAABAgAAAAAGAgAAAAAGAgAAAAABAgAAAAAGAQAAAAACAQAAAAACAQAAAAACAQAAAAABCQAAAAAMCQAAAAACCQAAAAAICQAAAAAACQAAAAAKCQAAAAAHCQAAAAADAgAAAAACAgAAAAACAgAAAAAOAgAAAAAOAgAAAAAEAQAAAAAAAQAAAAAECQAAAAAMCQAAAAANCQAAAAACCQAAAAANCQAAAAADCQAAAAAFCQAAAAAACQAAAAAJCQAAAAAFCQAAAAAJCQAAAAAMCQAAAAAMCQAAAAAACQAAAAAKCQAAAAACCQAAAAADCQAAAAAJCQAAAAAFCQAAAAABCQAAAAAFCQAAAAAGCQAAAAAMCQAAAAAECQAAAAAECQAAAAAKCQAAAAACCQAAAAAKCQAAAAAACQAAAAAGCQAAAAABCQAAAAALCQAAAAADCQAAAAAACQAAAAAECQAAAAAECQAAAAACCQAAAAAICQAAAAANCQAAAAALCQAAAAACCQAAAAANCQAAAAAKCQAAAAAECQAAAAACCQAAAAAICQAAAAAECQAAAAAACQAAAAADCQAAAAALCQAAAAACCQAAAAAFCQAAAAAHCQAAAAAGCQAAAAAACQAAAAAMCQAAAAAGCQAAAAACCQAAAAAECQAAAAANCQAAAAAECQAAAAAGCQAAAAAKCQAAAAAMCQAAAAABCQAAAAAKCQAAAAALCQAAAAABCQAAAAAECQAAAAAGCQAAAAAACQAAAAAKCQAAAAALCQAAAAAACQAAAAAICQAAAAAKCQAAAAAECQAAAAAGCQAAAAACCQAAAAAACQAAAAAICQAAAAAECQAAAAAGCQAAAAAJCQAAAAACCQAAAAAHCQAAAAAGCQAAAAAJCQAAAAACCQAAAAABCQAAAAAFCQAAAAAMCQAAAAAFCQAAAAADCQAAAAADCQAAAAALCQAAAAADCQAAAAAGCQAAAAAACQAAAAADCQAAAAADCQAAAAANCQAAAAAICQAAAAAICQAAAAANCQAAAAADCQAAAAADCQAAAAAACQAAAAAACQAAAAAFCQAAAAAJCQAAAAABCQAAAAAECQAAAAALCQAAAAADCQAAAAAICQAAAAACCQAAAAANCQAAAAAACQAAAAACCQAAAAAJCQAAAAABCQAAAAACCQAAAAAECQAAAAAKCQAAAAALCQAAAAALCQAAAAAFCQAAAAALCQAAAAAKCQAAAAAKCQAAAAANCQAAAAAJCQAAAAABCQAAAAAHCQAAAAAJCQAAAAABCQAAAAANCQAAAAANCQAAAAAMCQAAAAAJCQAAAAALCQAAAAAFCQAAAAACCQAAAAAJCQAAAAALCQAAAAAACQAAAAAHCQAAAAAHCQAAAAAJCQAAAAADCQAAAAAECQAAAAALCQAAAAAHCQAAAAAACQAAAAAECQAAAAAMCQAAAAAKCQAAAAAE
+ tiles: AQAAAAABAQAAAAADAQAAAAADAgAAAAANHQAAAAAFAgAAAAAMAgAAAAAFAgAAAAAFHAAAAAABHAAAAAABHAAAAAADHAAAAAAEHAAAAAAABQAAAAAABQAAAAAABQAAAAAAAQAAAAABAQAAAAAEAgAAAAAEAgAAAAAEAgAAAAACAgAAAAANAgAAAAAAHQAAAAAFHAAAAAACHAAAAAADHAAAAAAFHAAAAAABHAAAAAAFHAAAAAAEHAAAAAAAHAAAAAADAQAAAAADAQAAAAADAgAAAAANAgAAAAAOAgAAAAAFAgAAAAAGAgAAAAACAgAAAAAOHAAAAAAFHAAAAAACHAAAAAAAHAAAAAAAHAAAAAABHAAAAAABHAAAAAAAHAAAAAABAQAAAAAEAQAAAAAEAQAAAAAAAQAAAAAEAQAAAAACAQAAAAAAAQAAAAACAQAAAAAAHAAAAAAAHAAAAAADHAAAAAACHAAAAAAAHAAAAAACHAAAAAAEHAAAAAADHAAAAAABAQAAAAADAQAAAAAAAQAAAAABAQAAAAACCQAAAAAACQAAAAANCQAAAAALCQAAAAACHAAAAAADHAAAAAAEHAAAAAAEHAAAAAABAgAAAAAGAgAAAAAGAgAAAAABAgAAAAAGAQAAAAACAQAAAAACAQAAAAACAQAAAAABCQAAAAAMCQAAAAACCQAAAAAICQAAAAAACQAAAAAKCQAAAAAHCQAAAAADAgAAAAACAgAAAAACAgAAAAAOAgAAAAAOAgAAAAAEAQAAAAAAAQAAAAAECQAAAAAMCQAAAAANCQAAAAACCQAAAAANCQAAAAADCQAAAAAFCQAAAAAACQAAAAAJCQAAAAAFCQAAAAAJCQAAAAAMCQAAAAAMCQAAAAAACQAAAAAKCQAAAAACCQAAAAADCQAAAAAJCQAAAAAFCQAAAAABCQAAAAAFCQAAAAAGCQAAAAAMCQAAAAAECQAAAAAECQAAAAAKCQAAAAACCQAAAAAKCQAAAAAACQAAAAAGCQAAAAABCQAAAAALCQAAAAADCQAAAAAACQAAAAAECQAAAAAECQAAAAACCQAAAAAICQAAAAANCQAAAAALCQAAAAACCQAAAAANCQAAAAAKCQAAAAAECQAAAAACCQAAAAAICQAAAAAECQAAAAAACQAAAAADCQAAAAALCQAAAAACCQAAAAAFCQAAAAAHCQAAAAAGCQAAAAAACQAAAAAMCQAAAAAGCQAAAAACCQAAAAAECQAAAAANCQAAAAAECQAAAAAGCQAAAAAKCQAAAAAMCQAAAAABCQAAAAAKCQAAAAALCQAAAAABCQAAAAAECQAAAAAGCQAAAAAACQAAAAAKCQAAAAALCQAAAAAACQAAAAAICQAAAAAKCQAAAAAECQAAAAAGCQAAAAACCQAAAAAACQAAAAAICQAAAAAECQAAAAAGCQAAAAAJCQAAAAACCQAAAAAHCQAAAAAGCQAAAAAJCQAAAAACCQAAAAABCQAAAAAFCQAAAAAMCQAAAAAFCQAAAAADCQAAAAADCQAAAAALCQAAAAADCQAAAAAGCQAAAAAACQAAAAADCQAAAAADCQAAAAANCQAAAAAICQAAAAAICQAAAAANCQAAAAADCQAAAAADCQAAAAAACQAAAAAACQAAAAAFCQAAAAAJCQAAAAABCQAAAAAECQAAAAALCQAAAAADCQAAAAAICQAAAAACCQAAAAANCQAAAAAACQAAAAACCQAAAAAJCQAAAAABCQAAAAACCQAAAAAECQAAAAAKCQAAAAALCQAAAAALCQAAAAAFCQAAAAALCQAAAAAKCQAAAAAKCQAAAAANCQAAAAAJCQAAAAABCQAAAAAHCQAAAAAJCQAAAAABCQAAAAANCQAAAAANCQAAAAAMCQAAAAAJCQAAAAALCQAAAAAFCQAAAAACCQAAAAAJCQAAAAALCQAAAAAACQAAAAAHCQAAAAAHCQAAAAAJCQAAAAADCQAAAAAECQAAAAALCQAAAAAHCQAAAAAACQAAAAAECQAAAAAMCQAAAAAKCQAAAAAE
version: 6
-2,-6:
ind: -2,-6
@@ -912,21 +912,11 @@ entities:
- type: Transform
pos: -14.349041,-14.417055
parent: 1
- - uid: 12
- components:
- - type: Transform
- pos: 5.8588877,22.397306
- parent: 1
- uid: 15
components:
- type: Transform
pos: -13.60219,-33.730145
parent: 1
- - uid: 18
- components:
- - type: Transform
- pos: -10.318126,4.006343
- parent: 1
- uid: 19
components:
- type: Transform
@@ -1171,6 +1161,11 @@ entities:
rot: -1.5707963267948966 rad
pos: 30.5,5.5
parent: 1
+ - type: PlaceableSurface
+ isPlaceable: False
+ - type: ItemPlacer
+ placedEntities:
+ - 11439
- uid: 15352
components:
- type: Transform
@@ -31083,11 +31078,6 @@ entities:
parent: 1
- proto: CP14BiomeSpawnerLeafMaze
entities:
- - uid: 6554
- components:
- - type: Transform
- pos: -15.5,11.5
- parent: 1
- uid: 6555
components:
- type: Transform
@@ -31112,11 +31102,6 @@ entities:
rot: 1.5707963267948966 rad
pos: 41.5,-15.5
parent: 1
- - uid: 6559
- components:
- - type: Transform
- pos: -13.5,12.5
- parent: 1
- uid: 6560
components:
- type: Transform
@@ -31128,22 +31113,12 @@ entities:
- type: Transform
pos: -13.5,14.5
parent: 1
- - uid: 6562
- components:
- - type: Transform
- pos: -20.5,11.5
- parent: 1
- uid: 6563
components:
- type: Transform
rot: 1.5707963267948966 rad
pos: 41.5,-17.5
parent: 1
- - uid: 6564
- components:
- - type: Transform
- pos: -12.5,11.5
- parent: 1
- uid: 6565
components:
- type: Transform
@@ -31166,21 +31141,6 @@ entities:
- type: Transform
pos: -14.5,18.5
parent: 1
- - uid: 6569
- components:
- - type: Transform
- pos: -16.5,13.5
- parent: 1
- - uid: 6570
- components:
- - type: Transform
- pos: -16.5,14.5
- parent: 1
- - uid: 6571
- components:
- - type: Transform
- pos: -14.5,12.5
- parent: 1
- uid: 6572
components:
- type: Transform
@@ -31196,81 +31156,31 @@ entities:
- type: Transform
pos: -18.5,19.5
parent: 1
- - uid: 6575
- components:
- - type: Transform
- pos: -18.5,15.5
- parent: 1
- - uid: 6576
- components:
- - type: Transform
- pos: -16.5,11.5
- parent: 1
- - uid: 6577
- components:
- - type: Transform
- pos: -18.5,12.5
- parent: 1
- uid: 6578
components:
- type: Transform
pos: -14.5,20.5
parent: 1
- - uid: 6579
- components:
- - type: Transform
- pos: -16.5,15.5
- parent: 1
- - uid: 6580
- components:
- - type: Transform
- pos: -14.5,13.5
- parent: 1
- uid: 6581
components:
- type: Transform
pos: -16.5,20.5
parent: 1
- - uid: 6582
- components:
- - type: Transform
- pos: -14.5,11.5
- parent: 1
- uid: 6583
components:
- type: Transform
pos: -19.5,18.5
parent: 1
- - uid: 6584
- components:
- - type: Transform
- pos: -17.5,14.5
- parent: 1
- uid: 6585
components:
- type: Transform
pos: -15.5,20.5
parent: 1
- - uid: 6586
- components:
- - type: Transform
- pos: -17.5,13.5
- parent: 1
- - uid: 6587
- components:
- - type: Transform
- pos: -17.5,12.5
- parent: 1
- uid: 6588
components:
- type: Transform
pos: -13.5,20.5
parent: 1
- - uid: 6589
- components:
- - type: Transform
- pos: -17.5,11.5
- parent: 1
- uid: 6590
components:
- type: Transform
@@ -31286,26 +31196,11 @@ entities:
- type: Transform
pos: -18.5,18.5
parent: 1
- - uid: 6593
- components:
- - type: Transform
- pos: -18.5,11.5
- parent: 1
- - uid: 6594
- components:
- - type: Transform
- pos: -18.5,14.5
- parent: 1
- uid: 6595
components:
- type: Transform
pos: -19.5,17.5
parent: 1
- - uid: 6596
- components:
- - type: Transform
- pos: -16.5,12.5
- parent: 1
- uid: 6597
components:
- type: Transform
@@ -31316,26 +31211,6 @@ entities:
- type: Transform
pos: -18.5,17.5
parent: 1
- - uid: 6599
- components:
- - type: Transform
- pos: -15.5,13.5
- parent: 1
- - uid: 6600
- components:
- - type: Transform
- pos: -15.5,14.5
- parent: 1
- - uid: 6601
- components:
- - type: Transform
- pos: -15.5,15.5
- parent: 1
- - uid: 6602
- components:
- - type: Transform
- pos: -15.5,16.5
- parent: 1
- uid: 6603
components:
- type: Transform
@@ -31371,36 +31246,11 @@ entities:
- type: Transform
pos: -19.5,19.5
parent: 1
- - uid: 6610
- components:
- - type: Transform
- pos: -18.5,13.5
- parent: 1
- uid: 6611
components:
- type: Transform
pos: -17.5,17.5
parent: 1
- - uid: 6612
- components:
- - type: Transform
- pos: -19.5,16.5
- parent: 1
- - uid: 6613
- components:
- - type: Transform
- pos: -17.5,16.5
- parent: 1
- - uid: 6614
- components:
- - type: Transform
- pos: -16.5,16.5
- parent: 1
- - uid: 6615
- components:
- - type: Transform
- pos: -17.5,15.5
- parent: 1
- uid: 6616
components:
- type: Transform
@@ -31426,11 +31276,6 @@ entities:
- type: Transform
pos: -12.5,20.5
parent: 1
- - uid: 6621
- components:
- - type: Transform
- pos: -13.5,11.5
- parent: 1
- uid: 6622
components:
- type: Transform
@@ -32015,11 +31860,6 @@ entities:
rot: 1.5707963267948966 rad
pos: 41.5,43.5
parent: 1
- - uid: 6722
- components:
- - type: Transform
- pos: -19.5,11.5
- parent: 1
- uid: 6723
components:
- type: Transform
@@ -32030,16 +31870,6 @@ entities:
- type: Transform
pos: -12.5,21.5
parent: 1
- - uid: 6725
- components:
- - type: Transform
- pos: -14.5,15.5
- parent: 1
- - uid: 6726
- components:
- - type: Transform
- pos: -15.5,12.5
- parent: 1
- uid: 6727
components:
- type: Transform
@@ -32050,22 +31880,12 @@ entities:
- type: Transform
pos: -14.5,17.5
parent: 1
- - uid: 6729
- components:
- - type: Transform
- pos: -14.5,16.5
- parent: 1
- uid: 6730
components:
- type: Transform
rot: 1.5707963267948966 rad
pos: 88.5,43.5
parent: 1
- - uid: 6731
- components:
- - type: Transform
- pos: -14.5,14.5
- parent: 1
- uid: 6732
components:
- type: Transform
@@ -32078,11 +31898,6 @@ entities:
rot: 1.5707963267948966 rad
pos: 86.5,43.5
parent: 1
- - uid: 6734
- components:
- - type: Transform
- pos: -19.5,15.5
- parent: 1
- uid: 6735
components:
- type: Transform
@@ -32093,21 +31908,11 @@ entities:
- type: Transform
pos: -12.5,14.5
parent: 1
- - uid: 6737
- components:
- - type: Transform
- pos: -12.5,12.5
- parent: 1
- uid: 6738
components:
- type: Transform
pos: -12.5,13.5
parent: 1
- - uid: 6739
- components:
- - type: Transform
- pos: -19.5,14.5
- parent: 1
- uid: 6740
components:
- type: Transform
@@ -32134,26 +31939,11 @@ entities:
rot: 1.5707963267948966 rad
pos: 42.5,48.5
parent: 1
- - uid: 6745
- components:
- - type: Transform
- pos: -19.5,13.5
- parent: 1
- - uid: 6746
- components:
- - type: Transform
- pos: -18.5,16.5
- parent: 1
- uid: 6747
components:
- type: Transform
pos: -20.5,18.5
parent: 1
- - uid: 6748
- components:
- - type: Transform
- pos: -20.5,16.5
- parent: 1
- uid: 6749
components:
- type: Transform
@@ -34175,76 +33965,16 @@ entities:
- type: Transform
pos: -13.5,16.5
parent: 1
- - uid: 7086
- components:
- - type: Transform
- pos: -21.5,15.5
- parent: 1
- - uid: 7087
- components:
- - type: Transform
- pos: -20.5,12.5
- parent: 1
- - uid: 7088
- components:
- - type: Transform
- pos: -19.5,12.5
- parent: 1
- - uid: 7089
- components:
- - type: Transform
- pos: -22.5,15.5
- parent: 1
- - uid: 7090
- components:
- - type: Transform
- pos: -21.5,13.5
- parent: 1
- - uid: 7091
- components:
- - type: Transform
- pos: -22.5,14.5
- parent: 1
- - uid: 7092
- components:
- - type: Transform
- pos: -23.5,15.5
- parent: 1
- uid: 7093
components:
- type: Transform
pos: -21.5,17.5
parent: 1
- - uid: 7094
- components:
- - type: Transform
- pos: -22.5,16.5
- parent: 1
- uid: 7095
components:
- type: Transform
pos: -23.5,18.5
parent: 1
- - uid: 7096
- components:
- - type: Transform
- pos: -23.5,16.5
- parent: 1
- - uid: 7097
- components:
- - type: Transform
- pos: -21.5,16.5
- parent: 1
- - uid: 7098
- components:
- - type: Transform
- pos: -21.5,14.5
- parent: 1
- - uid: 7099
- components:
- - type: Transform
- pos: -23.5,13.5
- parent: 1
- uid: 7100
components:
- type: Transform
@@ -34260,11 +33990,6 @@ entities:
- type: Transform
pos: -22.5,18.5
parent: 1
- - uid: 7103
- components:
- - type: Transform
- pos: -23.5,14.5
- parent: 1
- uid: 7104
components:
- type: Transform
@@ -34275,31 +34000,11 @@ entities:
- type: Transform
pos: -13.5,15.5
parent: 1
- - uid: 7106
- components:
- - type: Transform
- pos: -13.5,13.5
- parent: 1
- - uid: 7107
- components:
- - type: Transform
- pos: -22.5,13.5
- parent: 1
- uid: 7108
components:
- type: Transform
pos: -17.5,20.5
parent: 1
- - uid: 7109
- components:
- - type: Transform
- pos: -20.5,14.5
- parent: 1
- - uid: 7110
- components:
- - type: Transform
- pos: -20.5,13.5
- parent: 1
- uid: 7111
components:
- type: Transform
@@ -34315,31 +34020,11 @@ entities:
- type: Transform
pos: -26.5,15.5
parent: 1
- - uid: 7114
- components:
- - type: Transform
- pos: -20.5,15.5
- parent: 1
- uid: 7115
components:
- type: Transform
pos: -21.5,19.5
parent: 1
- - uid: 7116
- components:
- - type: Transform
- pos: -22.5,12.5
- parent: 1
- - uid: 7117
- components:
- - type: Transform
- pos: -21.5,12.5
- parent: 1
- - uid: 7118
- components:
- - type: Transform
- pos: -21.5,11.5
- parent: 1
- uid: 7119
components:
- type: Transform
@@ -38109,11 +37794,6 @@ entities:
canCollide: False
- proto: CP14Bucket
entities:
- - uid: 7151
- components:
- - type: Transform
- pos: -10.802501,4.115718
- parent: 1
- uid: 7153
components:
- type: Transform
@@ -38562,6 +38242,42 @@ entities:
- type: Transform
pos: 20.5,-42.5
parent: 1
+ - uid: 8846
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 3.5,21.5
+ parent: 1
+ - uid: 9148
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 3.5,20.5
+ parent: 1
+ - uid: 11759
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 4.5,20.5
+ parent: 1
+ - uid: 11761
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 4.5,21.5
+ parent: 1
+ - uid: 11762
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 5.5,20.5
+ parent: 1
+ - uid: 11763
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 5.5,21.5
+ parent: 1
- proto: CP14CarpetRed
entities:
- uid: 7247
@@ -38894,6 +38610,12 @@ entities:
parent: 1
- proto: CP14ChairWooden
entities:
+ - uid: 6577
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: -18.530989,13.612628
+ parent: 1
- uid: 7314
components:
- type: Transform
@@ -38911,18 +38633,6 @@ entities:
rot: -1.5707963267948966 rad
pos: 3.3535092,13.384851
parent: 1
- - uid: 7317
- components:
- - type: Transform
- rot: 1.5707963267948966 rad
- pos: 1.6278565,20.430185
- parent: 1
- - uid: 7318
- components:
- - type: Transform
- rot: -1.5707963267948966 rad
- pos: 3.4162872,20.677563
- parent: 1
- uid: 7319
components:
- type: Transform
@@ -39154,6 +38864,12 @@ entities:
rot: 3.141592653589793 rad
pos: -8.40942,4.6642976
parent: 1
+ - uid: 8845
+ components:
+ - type: Transform
+ rot: 3.141592653589793 rad
+ pos: -20.555626,12.735566
+ parent: 1
- uid: 11647
components:
- type: Transform
@@ -40278,18 +39994,6 @@ entities:
rot: -1.5707963267948966 rad
pos: -1.439316,22.62645
parent: 1
- - uid: 7555
- components:
- - type: Transform
- rot: -1.5707963267948966 rad
- pos: 4.4403806,21.389568
- parent: 1
- - uid: 7556
- components:
- - type: Transform
- rot: -1.5707963267948966 rad
- pos: 5.5089397,23.222403
- parent: 1
- uid: 7557
components:
- type: Transform
@@ -41251,6 +40955,16 @@ entities:
parent: 1
- proto: CP14FenceBigWooden
entities:
+ - uid: 6576
+ components:
+ - type: Transform
+ pos: -11.5,12.5
+ parent: 1
+ - uid: 6748
+ components:
+ - type: Transform
+ pos: -12.5,12.5
+ parent: 1
- uid: 7744
components:
- type: Transform
@@ -41332,11 +41046,6 @@ entities:
rot: -1.5707963267948966 rad
pos: 18.5,-7.5
parent: 1
- - uid: 7845
- components:
- - type: Transform
- pos: -10.5,5.5
- parent: 1
- uid: 7847
components:
- type: Transform
@@ -41597,6 +41306,11 @@ entities:
rot: 3.141592653589793 rad
pos: 0.5,-23.5
parent: 1
+ - uid: 7950
+ components:
+ - type: Transform
+ pos: -13.5,12.5
+ parent: 1
- uid: 14319
components:
- type: Transform
@@ -41990,42 +41704,18 @@ entities:
rot: -1.5707963267948966 rad
pos: -12.5,-29.5
parent: 1
- - uid: 7791
- components:
- - type: Transform
- rot: 1.5707963267948966 rad
- pos: 6.5,19.5
- parent: 1
- - uid: 7792
- components:
- - type: Transform
- rot: 1.5707963267948966 rad
- pos: 6.5,20.5
- parent: 1
- uid: 7793
components:
- type: Transform
rot: -1.5707963267948966 rad
pos: -2.5,21.5
parent: 1
- - uid: 7794
- components:
- - type: Transform
- rot: 1.5707963267948966 rad
- pos: 6.5,21.5
- parent: 1
- uid: 7795
components:
- type: Transform
rot: -1.5707963267948966 rad
pos: -2.5,22.5
parent: 1
- - uid: 7796
- components:
- - type: Transform
- rot: 1.5707963267948966 rad
- pos: 6.5,22.5
- parent: 1
- uid: 7797
components:
- type: Transform
@@ -42341,12 +42031,6 @@ entities:
rot: 1.5707963267948966 rad
pos: 1.5,21.5
parent: 1
- - uid: 7910
- components:
- - type: Transform
- rot: 1.5707963267948966 rad
- pos: 2.5,24.5
- parent: 1
- uid: 7911
components:
- type: Transform
@@ -42359,12 +42043,6 @@ entities:
rot: 1.5707963267948966 rad
pos: 1.5,23.5
parent: 1
- - uid: 7913
- components:
- - type: Transform
- rot: 1.5707963267948966 rad
- pos: 2.5,22.5
- parent: 1
- uid: 7914
components:
- type: Transform
@@ -46748,13 +46426,6 @@ entities:
rot: 1.5707963267948966 rad
pos: 15.5,-6.5
parent: 1
-- proto: CP14FloraTreeGreen
- entities:
- - uid: 8717
- components:
- - type: Transform
- pos: 3.5,22.5
- parent: 1
- proto: CP14FloraTreeGreenLarge
entities:
- uid: 8719
@@ -47743,6 +47414,12 @@ entities:
parent: 1
- proto: CP14LargeWoodenCrateFilled
entities:
+ - uid: 6610
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: -15.5,12.5
+ parent: 1
- uid: 8905
components:
- type: Transform
@@ -48861,6 +48538,26 @@ entities:
parent: 1
- proto: CP14RandomBushOffsetSpawner
entities:
+ - uid: 6569
+ components:
+ - type: Transform
+ pos: -10.5,4.5
+ parent: 1
+ - uid: 7556
+ components:
+ - type: Transform
+ pos: -10.5,3.5
+ parent: 1
+ - uid: 7941
+ components:
+ - type: Transform
+ pos: -10.5,1.5
+ parent: 1
+ - uid: 8717
+ components:
+ - type: Transform
+ pos: -10.5,6.5
+ parent: 1
- uid: 9060
components:
- type: Transform
@@ -49236,12 +48933,6 @@ entities:
rot: -1.5707963267948966 rad
pos: -14.5,-0.5
parent: 1
- - uid: 9148
- components:
- - type: Transform
- rot: -1.5707963267948966 rad
- pos: -12.5,-0.5
- parent: 1
- uid: 9149
components:
- type: Transform
@@ -49423,12 +49114,6 @@ entities:
rot: -1.5707963267948966 rad
pos: 9.5,19.5
parent: 1
- - uid: 9194
- components:
- - type: Transform
- rot: -1.5707963267948966 rad
- pos: 7.5,21.5
- parent: 1
- uid: 9195
components:
- type: Transform
@@ -49531,11 +49216,6 @@ entities:
rot: -1.5707963267948966 rad
pos: -3.5,17.5
parent: 1
- - uid: 9238
- components:
- - type: Transform
- pos: -11.5,12.5
- parent: 1
- uid: 9243
components:
- type: Transform
@@ -57302,6 +56982,217 @@ entities:
fixtures: {}
- proto: CP14RoofWooden
entities:
+ - uid: 12
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 3.5,21.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 18
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 3.5,20.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 6554
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 3.5,19.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 6575
+ components:
+ - type: Transform
+ pos: -21.5,12.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 6586
+ components:
+ - type: Transform
+ pos: -19.5,13.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 6594
+ components:
+ - type: Transform
+ pos: -18.5,14.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 6596
+ components:
+ - type: Transform
+ pos: -18.5,11.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 6599
+ components:
+ - type: Transform
+ pos: -18.5,13.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 6600
+ components:
+ - type: Transform
+ pos: -19.5,11.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 6601
+ components:
+ - type: Transform
+ pos: -19.5,12.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 6602
+ components:
+ - type: Transform
+ pos: -17.5,11.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 6621
+ components:
+ - type: Transform
+ pos: -19.5,14.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 6731
+ components:
+ - type: Transform
+ pos: -20.5,11.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 7086
+ components:
+ - type: Transform
+ pos: -17.5,13.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 7087
+ components:
+ - type: Transform
+ pos: -18.5,12.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 7091
+ components:
+ - type: Transform
+ pos: -21.5,13.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 7092
+ components:
+ - type: Transform
+ pos: -20.5,12.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 7096
+ components:
+ - type: Transform
+ pos: -20.5,13.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 7107
+ components:
+ - type: Transform
+ pos: -17.5,14.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 7117
+ components:
+ - type: Transform
+ pos: -17.5,12.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 7118
+ components:
+ - type: Transform
+ pos: -20.5,14.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 7317
+ components:
+ - type: Transform
+ pos: -21.5,11.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 7318
+ components:
+ - type: Transform
+ pos: -16.5,11.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 7555
+ components:
+ - type: Transform
+ pos: -21.5,14.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 7792
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 2.5,20.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 7913
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 2.5,22.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 7940
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 2.5,21.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 9047
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 2.5,19.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 9238
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 3.5,22.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
- uid: 9952
components:
- type: Transform
@@ -65030,6 +64921,22 @@ entities:
parent: 1
- type: Fixtures
fixtures: {}
+ - uid: 11124
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 4.5,19.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 11131
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 4.5,20.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
- uid: 11143
components:
- type: Transform
@@ -66003,6 +65910,233 @@ entities:
parent: 1
- type: Fixtures
fixtures: {}
+ - uid: 11333
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 4.5,21.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 11410
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 4.5,22.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 11411
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 5.5,19.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 11422
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 5.5,20.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 11592
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 5.5,21.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 11601
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 5.5,22.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 11616
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 6.5,19.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 11617
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 6.5,20.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 11628
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 6.5,21.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 11754
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 6.5,22.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 11764
+ components:
+ - type: Transform
+ pos: -16.5,12.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 11765
+ components:
+ - type: Transform
+ pos: -16.5,13.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 11766
+ components:
+ - type: Transform
+ pos: -16.5,14.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 11767
+ components:
+ - type: Transform
+ pos: -15.5,11.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 11768
+ components:
+ - type: Transform
+ pos: -15.5,12.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 11769
+ components:
+ - type: Transform
+ pos: -15.5,13.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 11770
+ components:
+ - type: Transform
+ pos: -15.5,14.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 11771
+ components:
+ - type: Transform
+ pos: -14.5,11.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 11772
+ components:
+ - type: Transform
+ pos: -14.5,12.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 11773
+ components:
+ - type: Transform
+ pos: -14.5,13.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 11774
+ components:
+ - type: Transform
+ pos: -14.5,14.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 11775
+ components:
+ - type: Transform
+ pos: -18.5,16.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 11776
+ components:
+ - type: Transform
+ pos: -18.5,15.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 11825
+ components:
+ - type: Transform
+ pos: -17.5,16.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 14418
+ components:
+ - type: Transform
+ pos: -17.5,15.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 14831
+ components:
+ - type: Transform
+ pos: -16.5,16.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 15019
+ components:
+ - type: Transform
+ pos: -16.5,15.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 15061
+ components:
+ - type: Transform
+ pos: -15.5,16.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 15090
+ components:
+ - type: Transform
+ pos: -15.5,15.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 15105
+ components:
+ - type: Transform
+ pos: -14.5,16.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 15178
+ components:
+ - type: Transform
+ pos: -14.5,15.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
- proto: CP14Rope
entities:
- uid: 11273
@@ -66214,6 +66348,18 @@ entities:
rot: 1.5707963267948966 rad
pos: -17.5,-85.5
parent: 1
+- proto: CP14SackFarmingSeedFull
+ entities:
+ - uid: 15063
+ components:
+ - type: Transform
+ pos: -19.5,-14.5
+ parent: 1
+ - uid: 15064
+ components:
+ - type: Transform
+ pos: 14.5,-57.5
+ parent: 1
- proto: CP14SafeMerchant1
entities:
- uid: 11309
@@ -66361,6 +66507,12 @@ entities:
- 8954
- proto: CP14SmallWoodenCrateFilled
entities:
+ - uid: 6584
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: -15.5,13.5
+ parent: 1
- uid: 11313
components:
- type: Transform
@@ -66459,11 +66611,6 @@ entities:
- type: Transform
pos: -3.5,13.5
parent: 1
- - uid: 11333
- components:
- - type: Transform
- pos: -10.5,4.5
- parent: 1
- uid: 11334
components:
- type: Transform
@@ -66914,24 +67061,6 @@ entities:
- type: Transform
pos: 27.5,9.5
parent: 1
-- proto: CP14SpawnUniqueTradepost
- entities:
- - uid: 11410
- components:
- - type: Transform
- pos: -25.5,-73.5
- parent: 1
- - uid: 11411
- components:
- - type: Transform
- pos: 104.5,61.5
- parent: 1
- - uid: 15358
- components:
- - type: Transform
- rot: 1.5707963267948966 rad
- pos: -12.5,-16.5
- parent: 1
- proto: CP14SpellScrollBloodPurification
entities:
- uid: 11412
@@ -66996,11 +67125,6 @@ entities:
- type: DamagedByContact
- proto: CP14SteelBeerMug
entities:
- - uid: 11422
- components:
- - type: Transform
- pos: 2.2802398,20.688807
- parent: 1
- uid: 11423
components:
- type: Transform
@@ -67116,6 +67240,8 @@ entities:
- type: Transform
pos: 30.419683,4.8695054
parent: 1
+ - type: CollisionWake
+ enabled: False
- uid: 11440
components:
- type: Transform
@@ -67535,6 +67661,16 @@ entities:
parent: 1
- proto: CP14TableWoodenCounter
entities:
+ - uid: 6746
+ components:
+ - type: Transform
+ pos: -20.5,13.5
+ parent: 1
+ - uid: 7151
+ components:
+ - type: Transform
+ pos: -19.5,13.5
+ parent: 1
- uid: 11512
components:
- type: Transform
@@ -67988,12 +68124,6 @@ entities:
- type: Transform
pos: 5.5,16.5
parent: 1
- - uid: 11592
- components:
- - type: Transform
- rot: -1.5707963267948966 rad
- pos: 2.5,20.5
- parent: 1
- uid: 11593
components:
- type: Transform
@@ -68034,11 +68164,6 @@ entities:
- type: Transform
pos: -10.5,-23.5
parent: 1
- - uid: 11601
- components:
- - type: Transform
- pos: -24.5,9.5
- parent: 1
- proto: CP14Target
entities:
- uid: 11657
@@ -68111,24 +68236,50 @@ entities:
- type: Transform
pos: 22.65147,-24.178692
parent: 1
-- proto: CP14TradingBoardBase
+- proto: CP14TradeContractBradPotions
entities:
- - uid: 8927
+ - uid: 6562
components:
- type: Transform
- rot: 1.5707963267948966 rad
- pos: -12.5,-15.5
+ pos: 25.485006,24.530258
parent: 1
- - uid: 11616
+- proto: CP14TradeContractVictoriaGardens
+ entities:
+ - uid: 6559
components:
- type: Transform
- rot: 1.5707963267948966 rad
- pos: -26.5,-74.5
+ pos: -16.282024,-6.4612765
parent: 1
- - uid: 11617
+- proto: CP14TradingPlatform
+ entities:
+ - uid: 7090
components:
- type: Transform
- pos: 105.5,61.5
+ rot: -1.5707963267948966 rad
+ pos: -17.5,15.5
+ parent: 1
+ - uid: 7704
+ components:
+ - type: Transform
+ pos: 5.5,21.5
+ parent: 1
+- proto: CP14TradingSellingPlatform
+ entities:
+ - uid: 6571
+ components:
+ - type: Transform
+ pos: 104.5,61.5
+ parent: 1
+ - uid: 7098
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: -15.5,15.5
+ parent: 1
+ - uid: 7791
+ components:
+ - type: Transform
+ pos: 3.5,21.5
parent: 1
- proto: CP14VentCritterMarker
entities:
@@ -68665,6 +68816,16 @@ entities:
parent: 1
- proto: CP14WallLeaf
entities:
+ - uid: 7114
+ components:
+ - type: Transform
+ pos: -10.5,2.5
+ parent: 1
+ - uid: 7796
+ components:
+ - type: Transform
+ pos: -8.5,-1.5
+ parent: 1
- uid: 11712
components:
- type: Transform
@@ -69005,6 +69166,13 @@ entities:
fixtures: {}
- proto: CP14WallmountFlagBank
entities:
+ - uid: 7109
+ components:
+ - type: Transform
+ pos: -18.5,10.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
- uid: 11785
components:
- type: Transform
@@ -69033,6 +69201,22 @@ entities:
parent: 1
- type: Fixtures
fixtures: {}
+- proto: CP14WallmountFlagBankCrates
+ entities:
+ - uid: 7110
+ components:
+ - type: Transform
+ pos: -15.5,10.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 7116
+ components:
+ - type: Transform
+ pos: -20.5,10.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
- proto: CP14WallmountFlagBlacksmith
entities:
- uid: 11789
@@ -69259,6 +69443,27 @@ entities:
fixtures: {}
- proto: CP14WallmountLampEmpty
entities:
+ - uid: 6587
+ components:
+ - type: Transform
+ pos: -16.5,15.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 7097
+ components:
+ - type: Transform
+ pos: -18.5,13.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 11758
+ components:
+ - type: Transform
+ pos: 4.5,21.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
- uid: 11819
components:
- type: Transform
@@ -69303,13 +69508,6 @@ entities:
parent: 1
- type: Fixtures
fixtures: {}
- - uid: 11825
- components:
- - type: Transform
- pos: 5.5,17.5
- parent: 1
- - type: Fixtures
- fixtures: {}
- uid: 11826
components:
- type: Transform
@@ -70136,6 +70334,11 @@ entities:
- type: Transform
pos: 17.5,40.5
parent: 1
+ - uid: 7910
+ components:
+ - type: Transform
+ pos: 2.5,24.5
+ parent: 1
- uid: 8375
components:
- type: Transform
@@ -70151,6 +70354,21 @@ entities:
- type: Transform
pos: 15.5,45.5
parent: 1
+ - uid: 11755
+ components:
+ - type: Transform
+ pos: 3.5,23.5
+ parent: 1
+ - uid: 11756
+ components:
+ - type: Transform
+ pos: 4.5,23.5
+ parent: 1
+ - uid: 11757
+ components:
+ - type: Transform
+ pos: 5.5,23.5
+ parent: 1
- uid: 11939
components:
- type: Transform
@@ -83282,6 +83500,131 @@ entities:
parent: 1
- proto: CP14WallWooden
entities:
+ - uid: 6564
+ components:
+ - type: Transform
+ pos: 3.5,22.5
+ parent: 1
+ - uid: 6570
+ components:
+ - type: Transform
+ pos: -18.5,15.5
+ parent: 1
+ - uid: 6580
+ components:
+ - type: Transform
+ pos: -14.5,15.5
+ parent: 1
+ - uid: 6582
+ components:
+ - type: Transform
+ pos: -20.5,11.5
+ parent: 1
+ - uid: 6589
+ components:
+ - type: Transform
+ pos: -14.5,16.5
+ parent: 1
+ - uid: 6613
+ components:
+ - type: Transform
+ pos: -18.5,11.5
+ parent: 1
+ - uid: 6614
+ components:
+ - type: Transform
+ pos: -15.5,11.5
+ parent: 1
+ - uid: 6615
+ components:
+ - type: Transform
+ pos: -21.5,14.5
+ parent: 1
+ - uid: 6722
+ components:
+ - type: Transform
+ pos: -21.5,12.5
+ parent: 1
+ - uid: 6734
+ components:
+ - type: Transform
+ pos: -14.5,12.5
+ parent: 1
+ - uid: 6737
+ components:
+ - type: Transform
+ pos: -18.5,14.5
+ parent: 1
+ - uid: 6739
+ components:
+ - type: Transform
+ pos: -14.5,11.5
+ parent: 1
+ - uid: 7088
+ components:
+ - type: Transform
+ pos: -21.5,11.5
+ parent: 1
+ - uid: 7089
+ components:
+ - type: Transform
+ pos: -21.5,13.5
+ parent: 1
+ - uid: 7094
+ components:
+ - type: Transform
+ pos: -18.5,16.5
+ parent: 1
+ - uid: 7099
+ components:
+ - type: Transform
+ pos: -17.5,16.5
+ parent: 1
+ - uid: 7103
+ components:
+ - type: Transform
+ pos: -16.5,16.5
+ parent: 1
+ - uid: 7106
+ components:
+ - type: Transform
+ pos: -15.5,16.5
+ parent: 1
+ - uid: 7794
+ components:
+ - type: Transform
+ pos: 2.5,22.5
+ parent: 1
+ - uid: 7805
+ components:
+ - type: Transform
+ pos: 4.5,22.5
+ parent: 1
+ - uid: 7815
+ components:
+ - type: Transform
+ pos: 5.5,22.5
+ parent: 1
+ - uid: 7845
+ components:
+ - type: Transform
+ pos: 6.5,21.5
+ parent: 1
+ - uid: 7942
+ components:
+ - type: Transform
+ pos: 6.5,22.5
+ parent: 1
+ - uid: 8843
+ components:
+ - type: Transform
+ pos: 2.5,19.5
+ parent: 1
+ - uid: 8844
+ components:
+ - type: Transform
+ pos: 2.5,21.5
+ parent: 1
- uid: 14358
components:
- type: Transform
@@ -83662,11 +84005,6 @@ entities:
- type: Transform
pos: -18.5,-24.5
parent: 1
- - uid: 14418
- components:
- - type: Transform
- pos: 5.5,18.5
- parent: 1
- uid: 14419
components:
- type: Transform
@@ -85682,11 +86020,6 @@ entities:
layers:
- sprite: _CP14/Structures/Wallpaper/wallpaper_bank.rsi
state: top
- - uid: 14831
- components:
- - type: Transform
- pos: 3.5,18.5
- parent: 1
- uid: 14832
components:
- type: Transform
@@ -86092,6 +86425,52 @@ entities:
parent: 1
- proto: CP14WindowWooden
entities:
+ - uid: 6579
+ components:
+ - type: Transform
+ pos: -17.5,11.5
+ parent: 1
+ - uid: 6593
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: -14.5,14.5
+ parent: 1
+ - uid: 6725
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: -19.5,14.5
+ parent: 1
+ - uid: 6726
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: -20.5,14.5
+ parent: 1
+ - uid: 6729
+ components:
+ - type: Transform
+ pos: -16.5,11.5
+ parent: 1
+ - uid: 6745
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: -14.5,13.5
+ parent: 1
+ - uid: 7897
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 6.5,20.5
+ parent: 1
+ - uid: 8927
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 6.5,19.5
+ parent: 1
- uid: 14592
components:
- type: Transform
@@ -86695,11 +87074,6 @@ entities:
parent: 1
- proto: CP14WoodenBeerMug
entities:
- - uid: 15019
- components:
- - type: Transform
- pos: 2.7414074,20.891205
- parent: 1
- uid: 15020
components:
- type: Transform
@@ -86918,6 +87292,11 @@ entities:
parent: 1
- proto: CP14WoodenChest
entities:
+ - uid: 8998
+ components:
+ - type: Transform
+ pos: 3.5,18.5
+ parent: 1
- uid: 15057
components:
- type: Transform
@@ -86938,28 +87317,11 @@ entities:
- type: Transform
pos: 3.5,-6.5
parent: 1
- - uid: 15061
- components:
- - type: Transform
- pos: 2.5,19.5
- parent: 1
- uid: 15062
components:
- type: Transform
pos: 20.5,-45.5
parent: 1
-- proto: CP14WoodenChestFilledFarmSeeds
- entities:
- - uid: 15063
- components:
- - type: Transform
- pos: -19.5,-14.5
- parent: 1
- - uid: 15064
- components:
- - type: Transform
- pos: 14.5,-57.5
- parent: 1
- proto: CP14WoodenCloset
entities:
- uid: 15065
@@ -87103,13 +87465,19 @@ entities:
parent: 1
- proto: CP14WoodenClosetMerchantFilled
entities:
- - uid: 15090
+ - uid: 9194
components:
- type: Transform
- pos: 3.5,17.5
+ rot: -1.5707963267948966 rad
+ pos: 5.5,18.5
parent: 1
- proto: CP14WoodenDoor
entities:
+ - uid: 6612
+ components:
+ - type: Transform
+ pos: -19.5,11.5
+ parent: 1
- uid: 15091
components:
- type: Transform
@@ -87197,10 +87565,11 @@ entities:
parent: 1
- proto: CP14WoodenDoorMerchantShopMirrored1
entities:
- - uid: 15105
+ - uid: 9091
components:
- type: Transform
- pos: 4.5,18.5
+ rot: -1.5707963267948966 rad
+ pos: 2.5,20.5
parent: 1
- uid: 15106
components:
diff --git a/Resources/Maps/_CP14/comoss_d.yml b/Resources/Maps/_CP14/comoss_d.yml
index 00e74a2e6b..9d7e15bf70 100644
--- a/Resources/Maps/_CP14/comoss_d.yml
+++ b/Resources/Maps/_CP14/comoss_d.yml
@@ -1,11 +1,11 @@
meta:
format: 7
category: Map
- engineVersion: 251.0.0
+ engineVersion: 255.1.0
forkId: ""
forkVersion: ""
- time: 04/26/2025 08:35:07
- entityCount: 23369
+ time: 05/28/2025 20:50:45
+ entityCount: 23357
maps:
- 1
grids:
@@ -81,7 +81,7 @@ entities:
version: 6
0,-1:
ind: 0,-1
- tiles: CQAAAAAFMQAAAAAHCQAAAAAICQAAAAAJCQAAAAALCQAAAAABCQAAAAAACQAAAAABCQAAAAAACQAAAAACCQAAAAAFCQAAAAAMCQAAAAALCQAAAAAMCQAAAAAACQAAAAAACQAAAAADCQAAAAAACQAAAAAECQAAAAAKCQAAAAABCQAAAAAFCQAAAAAFCQAAAAAHCQAAAAAJCQAAAAAJCQAAAAAFCQAAAAAKCQAAAAAICQAAAAAECQAAAAAACQAAAAAACQAAAAALCQAAAAAGCQAAAAAHCQAAAAACCQAAAAAGCQAAAAAMCQAAAAACCQAAAAABCQAAAAAECQAAAAADCQAAAAAACQAAAAAHCQAAAAAMCQAAAAAGCQAAAAAECQAAAAAACQAAAAAACQAAAAAACQAAAAAECQAAAAAFCQAAAAAMCQAAAAAICQAAAAAICQAAAAAJCQAAAAACCQAAAAAKCQAAAAANCQAAAAAFCQAAAAAGCQAAAAAMCQAAAAAACQAAAAAECQAAAAAACQAAAAAACQAAAAALCQAAAAAACQAAAAAFCQAAAAAKCQAAAAACCQAAAAACCQAAAAABCQAAAAADCQAAAAADCQAAAAACCQAAAAAACQAAAAAECQAAAAAECQAAAAAMCQAAAAAACQAAAAAACQAAAAAMCQAAAAAJCQAAAAAJCQAAAAAKCQAAAAAFCQAAAAACCQAAAAAHCQAAAAAGCQAAAAAGCQAAAAALCQAAAAANCQAAAAAKCQAAAAABCQAAAAAECQAAAAAACQAAAAAACQAAAAANCQAAAAAECQAAAAAFCQAAAAACCQAAAAAMCQAAAAALCQAAAAAKCQAAAAADCQAAAAABCQAAAAAKCQAAAAAFCQAAAAANCQAAAAAECQAAAAAHCQAAAAAACQAAAAAACQAAAAAFCQAAAAAKCQAAAAABCQAAAAAKCQAAAAAKCQAAAAAMCQAAAAAICQAAAAAKCQAAAAANCQAAAAAFCQAAAAALCQAAAAACCQAAAAAKCQAAAAAFCQAAAAAMCQAAAAAICQAAAAAACQAAAAAACQAAAAAHCQAAAAAACQAAAAADCQAAAAAJCQAAAAAKCQAAAAAICQAAAAAKCQAAAAACCQAAAAAJCQAAAAAACQAAAAANCQAAAAANCQAAAAAACQAAAAAGCQAAAAAKIAAAAAABIAAAAAADIAAAAAACIAAAAAAAIAAAAAADCQAAAAADCQAAAAAKCQAAAAALCQAAAAAKCQAAAAALCQAAAAAICQAAAAALCQAAAAAFCQAAAAAHCQAAAAAJCQAAAAAFIAAAAAAAIAAAAAABIAAAAAABIAAAAAACIAAAAAAACQAAAAANCQAAAAAKCQAAAAANCQAAAAAHCQAAAAACCQAAAAAICQAAAAAMCQAAAAADCQAAAAADCQAAAAABCQAAAAAHIAAAAAACIAAAAAABIAAAAAACIAAAAAACIAAAAAABCQAAAAALCQAAAAAKCQAAAAAMCQAAAAACCQAAAAAFCQAAAAAFCQAAAAAECQAAAAAICQAAAAAICQAAAAACCQAAAAACIAAAAAABIAAAAAAAIAAAAAACIAAAAAABIAAAAAACCQAAAAADCQAAAAAICQAAAAABCQAAAAACCQAAAAAHCQAAAAAKCQAAAAANCQAAAAAJCQAAAAADCQAAAAABCQAAAAAIIAAAAAADIAAAAAACIAAAAAACMwAAAAAAIAAAAAADCQAAAAAFCQAAAAAECQAAAAAACQAAAAALCQAAAAABCQAAAAALCQAAAAAMCQAAAAAECQAAAAAKCQAAAAACCQAAAAAAIAAAAAAAIAAAAAAAIAAAAAADIAAAAAAAIAAAAAACCQAAAAAHCQAAAAANCQAAAAANCQAAAAAMCQAAAAALCQAAAAAHCQAAAAACCQAAAAAICQAAAAADCQAAAAAMCQAAAAADCQAAAAAMCQAAAAAACQAAAAACCQAAAAADCQAAAAAJCQAAAAAHCQAAAAAECQAAAAAMCQAAAAACCQAAAAALCQAAAAAECQAAAAAACQAAAAAN
+ tiles: CQAAAAAFMQAAAAAHCQAAAAAICQAAAAAJCQAAAAALCQAAAAABCQAAAAAACQAAAAABCQAAAAAACQAAAAACCQAAAAAFCQAAAAAMCQAAAAALCQAAAAAMCQAAAAAACQAAAAAACQAAAAADCQAAAAAACQAAAAAECQAAAAAKCQAAAAABCQAAAAAFCQAAAAAFCQAAAAAHCQAAAAAJCQAAAAAJCQAAAAAFCQAAAAAKCQAAAAAICQAAAAAECQAAAAAACQAAAAAACQAAAAALCQAAAAAGCQAAAAAHCQAAAAACCQAAAAAGCQAAAAAMCQAAAAACCQAAAAABCQAAAAAECQAAAAADCQAAAAAACQAAAAAHCQAAAAAMCQAAAAAGCQAAAAAECQAAAAAACQAAAAAACQAAAAAACQAAAAAECQAAAAAFCQAAAAAMCQAAAAAICQAAAAAICQAAAAAJCQAAAAACCQAAAAAKCQAAAAANCQAAAAAFCQAAAAAGCQAAAAAMCQAAAAAACQAAAAAECQAAAAAACQAAAAAACQAAAAALCQAAAAAACQAAAAAFCQAAAAAKCQAAAAACCQAAAAACCQAAAAABCQAAAAADCQAAAAADCQAAAAACCQAAAAAACQAAAAAECQAAAAAECQAAAAAMCQAAAAAACQAAAAAACQAAAAAMCQAAAAAJCQAAAAAJCQAAAAAKCQAAAAAFCQAAAAACCQAAAAAHCQAAAAAGCQAAAAAGCQAAAAALCQAAAAANCQAAAAAKCQAAAAABCQAAAAAECQAAAAAACQAAAAAACQAAAAANCQAAAAAECQAAAAAFCQAAAAACCQAAAAAMCQAAAAALCQAAAAAKCQAAAAADCQAAAAABCQAAAAAKCQAAAAAFCQAAAAANCQAAAAAECQAAAAAHCQAAAAAACQAAAAAACQAAAAAFCQAAAAAKCQAAAAABCQAAAAAKCQAAAAAKCQAAAAAMCQAAAAAICQAAAAAKCQAAAAANCQAAAAAFCQAAAAALCQAAAAACCQAAAAAKCQAAAAAFCQAAAAAMCQAAAAAICQAAAAAACQAAAAAACQAAAAAHCQAAAAAACQAAAAADCQAAAAAJCQAAAAAKCQAAAAAICQAAAAAKCQAAAAACCQAAAAAJCQAAAAAACQAAAAANCQAAAAANCQAAAAAACQAAAAAGCQAAAAAKIAAAAAABIAAAAAADIAAAAAACIAAAAAAAIAAAAAADIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAAACQAAAAALCQAAAAAICQAAAAALCQAAAAAFCQAAAAAHCQAAAAAJCQAAAAAFIAAAAAAAIAAAAAABIAAAAAABIAAAAAACIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAAACQAAAAACCQAAAAAICQAAAAAMCQAAAAADCQAAAAADCQAAAAABCQAAAAAHIAAAAAACIAAAAAABIAAAAAACIAAAAAACIAAAAAABIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAAACQAAAAAFCQAAAAAFCQAAAAAECQAAAAAICQAAAAAICQAAAAACCQAAAAACIAAAAAABIAAAAAAAIAAAAAACIAAAAAABIAAAAAACIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAAACQAAAAAHCQAAAAAKCQAAAAANCQAAAAAJCQAAAAADCQAAAAABCQAAAAAIIAAAAAADIAAAAAACIAAAAAACMwAAAAAAIAAAAAADIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAAACQAAAAABCQAAAAALCQAAAAAMCQAAAAAECQAAAAAKCQAAAAACCQAAAAAAIAAAAAAAIAAAAAAAIAAAAAADIAAAAAAAIAAAAAACCQAAAAAHCQAAAAANCQAAAAANCQAAAAAMCQAAAAALCQAAAAAHCQAAAAACCQAAAAAICQAAAAADCQAAAAAMCQAAAAADCQAAAAAMCQAAAAAACQAAAAACCQAAAAADCQAAAAAJCQAAAAAHCQAAAAAECQAAAAAMCQAAAAACCQAAAAALCQAAAAAECQAAAAAACQAAAAAN
version: 6
-1,-1:
ind: -1,-1
@@ -563,7 +563,16 @@ entities:
inherent: True
enabled: True
- type: Biome
+ forcedMarkerLayers: []
+ markerLayers: []
+ loadedMarkers: {}
+ pendingMarkers: {}
+ loadedChunks: []
+ entities: {}
+ decals: {}
+ modifiedTiles: {}
template: CP14CavesIndestructibleFill
+ layers: []
- type: DecalGrid
chunkCollection:
version: 2
@@ -4499,12 +4508,6 @@ entities:
- type: Transform
pos: 15.5,1.5
parent: 1
- - uid: 772
- components:
- - type: Transform
- rot: 3.141592653589793 rad
- pos: 11.5,-6.5
- parent: 1
- uid: 773
components:
- type: Transform
@@ -16487,16 +16490,6 @@ entities:
- type: Transform
pos: 9.5,6.5
parent: 1
- - uid: 3162
- components:
- - type: Transform
- pos: 9.5,-2.5
- parent: 1
- - uid: 3163
- components:
- - type: Transform
- pos: 9.5,-3.5
- parent: 1
- uid: 3164
components:
- type: Transform
@@ -16549,18 +16542,6 @@ entities:
- type: Transform
pos: 23.5,-12.5
parent: 1
- - uid: 3174
- components:
- - type: Transform
- rot: 3.141592653589793 rad
- pos: 10.5,-6.5
- parent: 1
- - uid: 3175
- components:
- - type: Transform
- rot: 3.141592653589793 rad
- pos: 10.5,-5.5
- parent: 1
- uid: 3176
components:
- type: Transform
@@ -19451,11 +19432,6 @@ entities:
- type: Transform
pos: 23.5,-19.5
parent: 1
- - uid: 3751
- components:
- - type: Transform
- pos: 10.5,-4.5
- parent: 1
- uid: 3752
components:
- type: Transform
@@ -19481,16 +19457,6 @@ entities:
- type: Transform
pos: 7.5,1.5
parent: 1
- - uid: 3757
- components:
- - type: Transform
- pos: 10.5,-2.5
- parent: 1
- - uid: 3758
- components:
- - type: Transform
- pos: 10.5,-3.5
- parent: 1
- uid: 3759
components:
- type: Transform
@@ -21959,26 +21925,11 @@ entities:
- type: Transform
pos: 19.5,-9.5
parent: 1
- - uid: 4252
- components:
- - type: Transform
- pos: 9.5,-4.5
- parent: 1
- uid: 4253
components:
- type: Transform
pos: 10.5,19.5
parent: 1
- - uid: 4254
- components:
- - type: Transform
- pos: 9.5,-5.5
- parent: 1
- - uid: 4255
- components:
- - type: Transform
- pos: 9.5,-6.5
- parent: 1
- uid: 4256
components:
- type: Transform
@@ -22024,11 +21975,6 @@ entities:
- type: Transform
pos: 12.5,18.5
parent: 1
- - uid: 4265
- components:
- - type: Transform
- pos: 11.5,-3.5
- parent: 1
- uid: 4266
components:
- type: Transform
@@ -22065,16 +22011,6 @@ entities:
- type: Transform
pos: 11.5,-12.5
parent: 1
- - uid: 4273
- components:
- - type: Transform
- pos: 11.5,-2.5
- parent: 1
- - uid: 4274
- components:
- - type: Transform
- pos: 11.5,-4.5
- parent: 1
- uid: 4275
components:
- type: Transform
@@ -22111,12 +22047,6 @@ entities:
- type: Transform
pos: 12.5,6.5
parent: 1
- - uid: 4282
- components:
- - type: Transform
- rot: 3.141592653589793 rad
- pos: 11.5,-5.5
- parent: 1
- uid: 4283
components:
- type: Transform
@@ -99241,11 +99171,6 @@ entities:
- type: Transform
pos: 4.5,-4.5
parent: 1
- - uid: 19605
- components:
- - type: Transform
- pos: 4.5,-3.5
- parent: 1
- uid: 19606
components:
- type: Transform
@@ -99256,11 +99181,6 @@ entities:
- type: Transform
pos: 5.5,-4.5
parent: 1
- - uid: 19608
- components:
- - type: Transform
- pos: 5.5,-3.5
- parent: 1
- uid: 19609
components:
- type: Transform
@@ -99271,10 +99191,15 @@ entities:
- type: Transform
pos: 6.5,-4.5
parent: 1
- - uid: 19611
+ - uid: 22528
components:
- type: Transform
- pos: 6.5,-3.5
+ pos: 7.5,-4.5
+ parent: 1
+ - uid: 22558
+ components:
+ - type: Transform
+ pos: 7.5,-5.5
parent: 1
- proto: CP14Cauldron
entities:
@@ -100185,44 +100110,6 @@ entities:
noRot: True
pos: -18.5,-7.5
parent: 1
-- proto: CP14CrystalAir
- entities:
- - uid: 19774
- components:
- - type: Transform
- pos: -56.469738,-3.527388
- parent: 1
- - uid: 19775
- components:
- - type: Transform
- pos: -52.500988,-24.52063
- parent: 1
-- proto: CP14CrystalChaos
- entities:
- - uid: 19776
- components:
- - type: Transform
- pos: -51.610363,-28.736225
- parent: 1
-- proto: CP14CrystalEmpty
- entities:
- - uid: 19777
- components:
- - type: Transform
- pos: 27.620623,-28.595926
- parent: 1
- - uid: 19778
- components:
- - type: Transform
- pos: 32.573746,-31.736551
- parent: 1
-- proto: CP14CrystalFire
- entities:
- - uid: 19779
- components:
- - type: Transform
- pos: -54.563488,-6.6640997
- parent: 1
- proto: CP14CrystalLampBlueEmpty
entities:
- uid: 19781
@@ -100241,8 +100128,38 @@ entities:
- type: Physics
canCollide: False
- type: InsideEntityStorage
-- proto: CP14CrystalOrder
+- proto: CP14CrystalQuartz
entities:
+ - uid: 19774
+ components:
+ - type: Transform
+ pos: -56.469738,-3.527388
+ parent: 1
+ - uid: 19775
+ components:
+ - type: Transform
+ pos: -52.500988,-24.52063
+ parent: 1
+ - uid: 19776
+ components:
+ - type: Transform
+ pos: -51.610363,-28.736225
+ parent: 1
+ - uid: 19777
+ components:
+ - type: Transform
+ pos: 27.620623,-28.595926
+ parent: 1
+ - uid: 19778
+ components:
+ - type: Transform
+ pos: 32.573746,-31.736551
+ parent: 1
+ - uid: 19779
+ components:
+ - type: Transform
+ pos: -54.563488,-6.6640997
+ parent: 1
- uid: 19783
components:
- type: Transform
@@ -100253,8 +100170,6 @@ entities:
- type: Transform
pos: 31.448748,-28.861551
parent: 1
-- proto: CP14CrystalWater
- entities:
- uid: 19785
components:
- type: Transform
@@ -100315,6 +100230,18 @@ entities:
rot: 3.141592653589793 rad
pos: -70.899994,32.127666
parent: 1
+- proto: CP14EnergyCrystalMedium
+ entities:
+ - uid: 19799
+ components:
+ - type: Transform
+ pos: 52.197514,-16.246778
+ parent: 1
+ - uid: 19800
+ components:
+ - type: Transform
+ pos: 52.416264,-16.199903
+ parent: 1
- proto: CP14EnergyCrystalMediumEmpty
entities:
- uid: 19797
@@ -100331,20 +100258,6 @@ entities:
- type: Physics
canCollide: False
- type: InsideEntityStorage
-- proto: CP14EnergyCrystalSmall
- entities:
- - uid: 19799
- components:
- - type: Transform
- pos: 52.197514,-16.246778
- parent: 1
- - uid: 19800
- components:
- - type: Transform
- pos: 52.416264,-16.199903
- parent: 1
-- proto: CP14EnergyCrystalSmallEmpty
- entities:
- uid: 19802
components:
- type: Transform
@@ -100425,7 +100338,7 @@ entities:
rot: -1.5707963267948966 rad
pos: -49.5,-71.5
parent: 1
-- proto: CP14FenceGateBigIronGuard
+- proto: CP14FenceGateBigIronGuardBarracks
entities:
- uid: 19809
components:
@@ -100452,12 +100365,6 @@ entities:
rot: 3.141592653589793 rad
pos: 9.5,15.5
parent: 1
- - uid: 19830
- components:
- - type: Transform
- rot: 3.141592653589793 rad
- pos: 6.5,-3.5
- parent: 1
- uid: 19831
components:
- type: Transform
@@ -100481,6 +100388,18 @@ entities:
rot: 3.141592653589793 rad
pos: -9.5,-18.5
parent: 1
+- proto: CP14FloorTorchAlwaysPowered
+ entities:
+ - uid: 772
+ components:
+ - type: Transform
+ pos: 2.5,-18.5
+ parent: 1
+ - uid: 3162
+ components:
+ - type: Transform
+ pos: -3.5,-12.5
+ parent: 1
- proto: CP14FloorWater
entities:
- uid: 19835
@@ -104396,7 +104315,7 @@ entities:
- type: Transform
pos: 76.5,31.5
parent: 1
-- proto: CP14IronDoorGuard
+- proto: CP14IronDoorGuardBarracks
entities:
- uid: 20617
components:
@@ -104474,6 +104393,18 @@ entities:
rot: 3.141592653589793 rad
pos: 79.5,24.5
parent: 1
+ - uid: 20633
+ components:
+ - type: Transform
+ rot: 1.5707963267948966 rad
+ pos: 13.5,-18.5
+ parent: 1
+ - uid: 20635
+ components:
+ - type: Transform
+ rot: 1.5707963267948966 rad
+ pos: 13.5,-17.5
+ parent: 1
- proto: CP14IronDoorWindowed
entities:
- uid: 20630
@@ -104494,14 +104425,6 @@ entities:
rot: 3.141592653589793 rad
pos: 41.5,-17.5
parent: 1
-- proto: CP14IronDoorWindowedGuardEntrance
- entities:
- - uid: 20633
- components:
- - type: Transform
- rot: 1.5707963267948966 rad
- pos: 13.5,-18.5
- parent: 1
- proto: CP14IronDoorWindowedMirrored
entities:
- uid: 20634
@@ -104510,14 +104433,6 @@ entities:
rot: 1.5707963267948966 rad
pos: 50.5,-14.5
parent: 1
-- proto: CP14IronDoorWindowedMirroredGuardEntrance
- entities:
- - uid: 20635
- components:
- - type: Transform
- rot: 1.5707963267948966 rad
- pos: 13.5,-17.5
- parent: 1
- proto: CP14LargeWoodenCrate
entities:
- uid: 20636
@@ -105030,18 +104945,6 @@ entities:
- type: Transform
pos: 70.90815,33.558662
parent: 1
-- proto: CP14Nail1
- entities:
- - uid: 20665
- components:
- - type: Transform
- pos: 10.679166,-34.388634
- parent: 1
- - uid: 20666
- components:
- - type: Transform
- pos: 10.158333,-34.388634
- parent: 1
- proto: CP14OreCopper1
entities:
- uid: 20668
@@ -105361,6 +105264,34 @@ entities:
parent: 1
- proto: CP14RoofStone
entities:
+ - uid: 3751
+ components:
+ - type: Transform
+ pos: 53.5,-11.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 3757
+ components:
+ - type: Transform
+ pos: 52.5,-11.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 3758
+ components:
+ - type: Transform
+ pos: 51.5,-11.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 4252
+ components:
+ - type: Transform
+ pos: 50.5,-11.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
- uid: 20718
components:
- type: Transform
@@ -110946,6 +110877,69 @@ entities:
fixtures: {}
- proto: CP14RoofWooden
entities:
+ - uid: 4254
+ components:
+ - type: Transform
+ pos: 11.5,-2.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 4255
+ components:
+ - type: Transform
+ pos: 11.5,-3.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 4265
+ components:
+ - type: Transform
+ pos: 11.5,-4.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 4273
+ components:
+ - type: Transform
+ pos: 11.5,-5.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 4274
+ components:
+ - type: Transform
+ pos: 11.5,-6.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 4282
+ components:
+ - type: Transform
+ pos: 10.5,-2.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 19605
+ components:
+ - type: Transform
+ pos: 10.5,-3.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 19608
+ components:
+ - type: Transform
+ pos: 10.5,-4.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 20665
+ components:
+ - type: Transform
+ pos: 9.5,-6.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
- uid: 21431
components:
- type: Transform
@@ -114823,6 +114817,83 @@ entities:
parent: 1
- type: Fixtures
fixtures: {}
+ - uid: 22179
+ components:
+ - type: Transform
+ pos: 8.5,-2.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 22181
+ components:
+ - type: Transform
+ pos: 9.5,-4.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 22184
+ components:
+ - type: Transform
+ pos: 9.5,-5.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 22191
+ components:
+ - type: Transform
+ pos: 8.5,-6.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 22192
+ components:
+ - type: Transform
+ pos: 8.5,-5.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 22193
+ components:
+ - type: Transform
+ pos: 8.5,-4.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 22194
+ components:
+ - type: Transform
+ pos: 8.5,-3.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 22195
+ components:
+ - type: Transform
+ pos: 9.5,-2.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 22197
+ components:
+ - type: Transform
+ pos: 9.5,-3.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 22485
+ components:
+ - type: Transform
+ pos: 10.5,-5.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
+ - uid: 22496
+ components:
+ - type: Transform
+ pos: 10.5,-6.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
- proto: CP14RoyalPumpkin
entities:
- uid: 21929
@@ -115263,13 +115334,6 @@ entities:
- type: Transform
pos: 56.5,55.5
parent: 1
-- proto: CP14SpawnUniqueTradepost
- entities:
- - uid: 22010
- components:
- - type: Transform
- pos: 51.5,-12.5
- parent: 1
- proto: CP14SpellScrollDemiplaneInfiltration
entities:
- uid: 22011
@@ -115676,13 +115740,35 @@ entities:
- type: Transform
pos: 36.87656,39.215775
parent: 1
-- proto: CP14TradingBoardBase
+- proto: CP14TradingPlatform
entities:
- - uid: 22083
+ - uid: 3163
+ components:
+ - type: Transform
+ pos: -4.5,-13.5
+ parent: 1
+ - uid: 3175
components:
- type: Transform
pos: 52.5,-12.5
parent: 1
+ - uid: 22199
+ components:
+ - type: Transform
+ pos: 10.5,-3.5
+ parent: 1
+- proto: CP14TradingSellingPlatform
+ entities:
+ - uid: 3174
+ components:
+ - type: Transform
+ pos: -0.5,-14.5
+ parent: 1
+ - uid: 22010
+ components:
+ - type: Transform
+ pos: 8.5,-3.5
+ parent: 1
- proto: CP14VialSmall
entities:
- uid: 22084
@@ -116251,140 +116337,6 @@ entities:
- type: Transform
pos: -44.5,-76.5
parent: 1
-- proto: CP14WallmountCrystalAmethysts
- entities:
- - uid: 22178
- components:
- - type: Transform
- rot: -1.5707963267948966 rad
- pos: -53.5,-22.5
- parent: 1
- - uid: 22179
- components:
- - type: Transform
- rot: 1.5707963267948966 rad
- pos: 10.5,-44.5
- parent: 1
- - uid: 22181
- components:
- - type: Transform
- rot: 3.141592653589793 rad
- pos: -3.5,-20.5
- parent: 1
- - uid: 22184
- components:
- - type: Transform
- rot: -1.5707963267948966 rad
- pos: 2.5,-14.5
- parent: 1
- - uid: 22185
- components:
- - type: Transform
- rot: -1.5707963267948966 rad
- pos: 2.5,-15.5
- parent: 1
- - uid: 22186
- components:
- - type: Transform
- rot: 3.141592653589793 rad
- pos: -0.5,-20.5
- parent: 1
- - uid: 22188
- components:
- - type: Transform
- rot: 3.141592653589793 rad
- pos: -2.5,-20.5
- parent: 1
- - uid: 22189
- components:
- - type: Transform
- rot: -1.5707963267948966 rad
- pos: 1.5,-19.5
- parent: 1
- - uid: 22190
- components:
- - type: Transform
- rot: -1.5707963267948966 rad
- pos: -47.5,-70.5
- parent: 1
-- proto: CP14WallmountCrystalDiamonds
- entities:
- - uid: 22191
- components:
- - type: Transform
- rot: 3.141592653589793 rad
- pos: 12.5,-48.5
- parent: 1
- - uid: 22192
- components:
- - type: Transform
- pos: -48.5,-70.5
- parent: 1
- - uid: 22193
- components:
- - type: Transform
- pos: -47.5,-70.5
- parent: 1
- - uid: 22194
- components:
- - type: Transform
- rot: -1.5707963267948966 rad
- pos: -55.5,-16.5
- parent: 1
-- proto: CP14WallmountCrystalEmeralds
- entities:
- - uid: 22195
- components:
- - type: Transform
- rot: 3.141592653589793 rad
- pos: 10.5,-46.5
- parent: 1
-- proto: CP14WallmountCrystalRubies
- entities:
- - uid: 22196
- components:
- - type: Transform
- rot: -1.5707963267948966 rad
- pos: 14.5,-45.5
- parent: 1
- - uid: 22197
- components:
- - type: Transform
- pos: -58.5,-2.5
- parent: 1
-- proto: CP14WallmountCrystalSapphires
- entities:
- - uid: 22198
- components:
- - type: Transform
- pos: 14.5,-43.5
- parent: 1
- - uid: 22199
- components:
- - type: Transform
- rot: 3.141592653589793 rad
- pos: -59.5,-34.5
- parent: 1
- - uid: 22200
- components:
- - type: Transform
- rot: 1.5707963267948966 rad
- pos: -69.5,-3.5
- parent: 1
-- proto: CP14WallmountCrystalTopazes
- entities:
- - uid: 22201
- components:
- - type: Transform
- rot: -1.5707963267948966 rad
- pos: 13.5,-47.5
- parent: 1
- - uid: 22202
- components:
- - type: Transform
- rot: 3.141592653589793 rad
- pos: -51.5,-30.5
- parent: 1
- proto: CP14WallmountGarlandPurple
entities:
- uid: 22203
@@ -116643,6 +116595,13 @@ entities:
parent: 1
- type: Fixtures
fixtures: {}
+ - uid: 22383
+ components:
+ - type: Transform
+ pos: 9.5,-3.5
+ parent: 1
+ - type: Fixtures
+ fixtures: {}
- proto: CP14WallmountPaintingCandle
entities:
- uid: 22238
@@ -117037,6 +116996,21 @@ entities:
- type: Transform
pos: -1.5,-7.5
parent: 1
+ - uid: 22196
+ components:
+ - type: Transform
+ pos: 6.5,-0.5
+ parent: 1
+ - uid: 22200
+ components:
+ - type: Transform
+ pos: 5.5,-0.5
+ parent: 1
+ - uid: 22201
+ components:
+ - type: Transform
+ pos: 4.5,-0.5
+ parent: 1
- uid: 22204
components:
- type: Transform
@@ -117712,11 +117686,6 @@ entities:
- type: Transform
pos: 0.5,-21.5
parent: 1
- - uid: 22383
- components:
- - type: Transform
- pos: 8.5,-5.5
- parent: 1
- uid: 22384
components:
- type: Transform
@@ -118202,31 +118171,11 @@ entities:
- type: Transform
pos: 8.5,-0.5
parent: 1
- - uid: 22481
- components:
- - type: Transform
- pos: 6.5,-0.5
- parent: 1
- uid: 22482
components:
- type: Transform
pos: 8.5,-1.5
parent: 1
- - uid: 22483
- components:
- - type: Transform
- pos: 8.5,-4.5
- parent: 1
- - uid: 22484
- components:
- - type: Transform
- pos: 8.5,-2.5
- parent: 1
- - uid: 22485
- components:
- - type: Transform
- pos: 8.5,-3.5
- parent: 1
- uid: 22486
components:
- type: Transform
@@ -118277,16 +118226,6 @@ entities:
- type: Transform
pos: 7.5,-15.5
parent: 1
- - uid: 22496
- components:
- - type: Transform
- pos: 5.5,-0.5
- parent: 1
- - uid: 22497
- components:
- - type: Transform
- pos: 4.5,-0.5
- parent: 1
- uid: 22498
components:
- type: Transform
@@ -118437,11 +118376,6 @@ entities:
- type: Transform
pos: 17.5,-14.5
parent: 1
- - uid: 22528
- components:
- - type: Transform
- pos: 8.5,-7.5
- parent: 1
- uid: 22529
components:
- type: Transform
@@ -118587,11 +118521,6 @@ entities:
- type: Transform
pos: 11.5,-14.5
parent: 1
- - uid: 22558
- components:
- - type: Transform
- pos: 8.5,-6.5
- parent: 1
- uid: 22559
components:
- type: Transform
@@ -121004,6 +120933,76 @@ entities:
parent: 1
- proto: CP14WallWooden
entities:
+ - uid: 19611
+ components:
+ - type: Transform
+ pos: 10.5,-2.5
+ parent: 1
+ - uid: 19830
+ components:
+ - type: Transform
+ pos: 10.5,-6.5
+ parent: 1
+ - uid: 20666
+ components:
+ - type: Transform
+ pos: 9.5,-2.5
+ parent: 1
+ - uid: 22178
+ components:
+ - type: Transform
+ pos: 11.5,-6.5
+ parent: 1
+ - uid: 22185
+ components:
+ - type: Transform
+ pos: 8.5,-2.5
+ parent: 1
+ - uid: 22186
+ components:
+ - type: Transform
+ pos: 11.5,-4.5
+ parent: 1
+ - uid: 22188
+ components:
+ - type: Transform
+ pos: 11.5,-5.5
+ parent: 1
+ - uid: 22189
+ components:
+ - type: Transform
+ pos: 11.5,-3.5
+ parent: 1
+ - uid: 22190
+ components:
+ - type: Transform
+ pos: 11.5,-2.5
+ parent: 1
+ - uid: 22198
+ components:
+ - type: Transform
+ pos: 9.5,-6.5
+ parent: 1
+ - uid: 22481
+ components:
+ - type: Transform
+ pos: 6.5,-1.5
+ parent: 1
+ - uid: 22483
+ components:
+ - type: Transform
+ pos: 4.5,-1.5
+ parent: 1
+ - uid: 22484
+ components:
+ - type: Transform
+ pos: 5.5,-1.5
+ parent: 1
+ - uid: 22497
+ components:
+ - type: Transform
+ pos: 8.5,-6.5
+ parent: 1
- uid: 23059
components:
- type: Transform
@@ -121064,11 +121063,6 @@ entities:
- type: Transform
pos: 11.5,-35.5
parent: 1
- - uid: 23071
- components:
- - type: Transform
- pos: 4.5,-1.5
- parent: 1
- uid: 23072
components:
- type: Transform
@@ -121134,11 +121128,6 @@ entities:
- type: Transform
pos: 9.5,-32.5
parent: 1
- - uid: 23085
- components:
- - type: Transform
- pos: 5.5,-1.5
- parent: 1
- uid: 23086
components:
- type: Transform
@@ -121289,11 +121278,6 @@ entities:
- type: Transform
pos: -18.5,-14.5
parent: 1
- - uid: 23116
- components:
- - type: Transform
- pos: 6.5,-1.5
- parent: 1
- uid: 23117
components:
- type: Transform
@@ -121624,21 +121608,6 @@ entities:
- type: Transform
pos: 21.5,14.5
parent: 1
- - uid: 23183
- components:
- - type: Transform
- pos: 7.5,-5.5
- parent: 1
- - uid: 23184
- components:
- - type: Transform
- pos: 7.5,-4.5
- parent: 1
- - uid: 23185
- components:
- - type: Transform
- pos: 7.5,-3.5
- parent: 1
- uid: 23186
components:
- type: Transform
@@ -122533,11 +122502,10 @@ entities:
parent: 1
- proto: CP14WoodenCabinetMerchant
entities:
- - uid: 23334
+ - uid: 23071
components:
- type: Transform
- rot: -1.5707963267948966 rad
- pos: 6.5,-3.5
+ pos: 7.5,-3.5
parent: 1
- uid: 23335
components:
@@ -122626,6 +122594,16 @@ entities:
showEnts: False
occludes: True
ent: null
+ - uid: 22083
+ components:
+ - type: Transform
+ pos: 9.5,-5.5
+ parent: 1
+ - uid: 22202
+ components:
+ - type: Transform
+ pos: 10.5,-5.5
+ parent: 1
- uid: 23336
components:
- type: Transform
@@ -122641,71 +122619,16 @@ entities:
- type: Transform
pos: -13.5,-31.5
parent: 1
- - uid: 23339
- components:
- - type: Transform
- pos: 6.5,-5.5
- parent: 1
- uid: 23340
components:
- type: Transform
pos: -3.5,6.5
parent: 1
- - uid: 23341
- components:
- - type: Transform
- pos: 6.5,-4.5
- parent: 1
- uid: 23342
components:
- type: Transform
pos: 23.5,1.5
parent: 1
-- proto: CP14WoodenChestFilledAlchemy
- entities:
- - uid: 23343
- components:
- - type: Transform
- pos: -47.5,-73.5
- parent: 1
-- proto: CP14WoodenChestFilledCheese
- entities:
- - uid: 23344
- components:
- - type: Transform
- pos: 85.5,30.5
- parent: 1
- - type: EntityStorage
- air:
- volume: 200
- immutable: False
- temperature: 293.14673
- moles:
- - 1.7459903
- - 6.568249
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
- - 0
-- proto: CP14WoodenChestFrame
- entities:
- - uid: 23345
- components:
- - type: Transform
- pos: 10.5,-34.5
- parent: 1
- - uid: 23346
- components:
- - type: Transform
- rot: -1.5707963267948966 rad
- pos: 32.5,54.5
- parent: 1
- proto: CP14WoodenCloset
entities:
- uid: 23347
diff --git a/Resources/Prototypes/Reagents/Consumable/Food/food.yml b/Resources/Prototypes/Reagents/Consumable/Food/food.yml
index e2897c4386..e78b4d2c56 100644
--- a/Resources/Prototypes/Reagents/Consumable/Food/food.yml
+++ b/Resources/Prototypes/Reagents/Consumable/Food/food.yml
@@ -20,7 +20,7 @@
amount: 1.5
- !type:PlantAdjustHealth
amount: 0.75
- pricePerUnit: 2
+ pricePerUnit: 0.2
- type: reagent
id: Vitamin #Anything "healthy"
@@ -53,7 +53,7 @@
amount: 0.5
- !type:PlantAdjustHealth
amount: 1.5
- pricePerUnit: 2.5
+ pricePerUnit: 0.25
- type: reagent
id: Protein #Meat and beans
@@ -78,7 +78,7 @@
- !type:OrganType
type: CP14Vampire
shouldHave: false
- pricePerUnit: 3
+ pricePerUnit: 0.3
- type: reagent
id: Sugar #Candy and grains
diff --git a/Resources/Prototypes/_CP14/Catalog/Cargo/Store/BradFamily/buy.yml b/Resources/Prototypes/_CP14/Catalog/Cargo/Store/BradFamily/buy.yml
deleted file mode 100644
index 2b12711323..0000000000
--- a/Resources/Prototypes/_CP14/Catalog/Cargo/Store/BradFamily/buy.yml
+++ /dev/null
@@ -1,275 +0,0 @@
-- type: storePositionBuy
- id: AlchemyVials
- code: VIALS
- price: 40
- iconOverride:
- sprite: _CP14/Objects/Specific/Alchemy/vial_medium.rsi
- state: vial
- factions:
- - BradFamily
- service: !type:CP14BuyItemsService
- product: CP14WoodenChestFilledAlchemy
-
-- type: entity
- parent: CP14WoodenChest
- id: CP14WoodenChestFilledAlchemy
- name: alchemical vials chest
- components:
- - type: StorageFill
- contents:
- - id: CP14VialTiny
- amount: 5
- - id: CP14VialSmall
- amount: 5
- - id: CP14VialMedium
- amount: 5
- - id: CP14GlassShard #Lol. Something broken
- prob: 0.2
-
-
-- type: storePositionBuy
- id: CP14VialSmallHealingBrute
- code: HEAL_BRUTE
- price: 50
- iconOverride:
- sprite: _CP14/Objects/Specific/Alchemy/vial_small.rsi
- state: vial
- factions:
- - BradFamily
- service: !type:CP14BuyItemsService
- product: CP14WoodenChestFilledSmallHealingBrute
-
-- type: entity
- parent: CP14WoodenChest
- id: CP14WoodenChestFilledSmallHealingBrute
- name: healing potions chest
- components:
- - type: StorageFill
- contents:
- - id: CP14VialSmallHealingBrute
- amount: 5
-
-
-- type: storePositionBuy
- id: CP14VialSmallHealingPoison
- code: HEAL_POISON
- price: 50
- iconOverride:
- sprite: _CP14/Objects/Specific/Alchemy/vial_small.rsi
- state: vial
- factions:
- - BradFamily
- service: !type:CP14BuyItemsService
- product: CP14WoodenChestFilledSmallHealingPoison
-
-- type: entity
- parent: CP14WoodenChest
- id: CP14WoodenChestFilledSmallHealingPoison
- name: antidote potions chest
- components:
- - type: StorageFill
- contents:
- - id: CP14VialSmallHealingPoison
- amount: 5
-
-
-- type: storePositionBuy
- id: CP14VialSmallHealingAirloss
- code: HEAL_AIRLOSS
- price: 50
- iconOverride:
- sprite: _CP14/Objects/Specific/Alchemy/vial_small.rsi
- state: vial
- factions:
- - BradFamily
- service: !type:CP14BuyItemsService
- product: CP14WoodenChestFilledSmallHealingAirloss
-
-- type: entity
- parent: CP14WoodenChest
- id: CP14WoodenChestFilledSmallHealingAirloss
- name: airloss healing potions chest
- components:
- - type: StorageFill
- contents:
- - id: CP14VialSmallHealingAirloss
- amount: 5
-
-
-- type: storePositionBuy
- id: CP14VialSmallHealingBlood
- code: HEAL_BLOOD
- price: 50
- iconOverride:
- sprite: _CP14/Objects/Specific/Alchemy/vial_small.rsi
- state: vial
- factions:
- - BradFamily
- service: !type:CP14BuyItemsService
- product: CP14WoodenChestFilledSmallHealingBlood
-
-- type: entity
- parent: CP14WoodenChest
- id: CP14WoodenChestFilledSmallHealingBlood
- name: blood restoration potions chest
- components:
- - type: StorageFill
- contents:
- - id: CP14VialSmallHealingBlood
- amount: 5
-
-
-- type: storePositionBuy
- id: CP14VialSmallHealingMana
- code: HEAL_MANA
- price: 70
- iconOverride:
- sprite: _CP14/Objects/Specific/Alchemy/vial_small.rsi
- state: vial
- factions:
- - BradFamily
- service: !type:CP14BuyItemsService
- product: CP14WoodenChestFilledSmallHealingMana
-
-- type: entity
- parent: CP14WoodenChest
- id: CP14WoodenChestFilledSmallHealingMana
- name: mana potions chest
- components:
- - type: StorageFill
- contents:
- - id: CP14VialSmallHealingMana
- amount: 5
-
-- type: storePositionBuy
- id: CP14VialSmallHealingManaDepletion
- code: HEAL_MANA_DEPLETION
- price: 70
- iconOverride:
- sprite: _CP14/Objects/Specific/Alchemy/vial_small.rsi
- state: vial
- factions:
- - BradFamily
- service: !type:CP14BuyItemsService
- product: CP14WoodenChestFilledSmallHealingManaDepletion
-
-- type: entity
- parent: CP14WoodenChest
- id: CP14WoodenChestFilledSmallHealingManaDepletion
- name: mana-depletion potions chest
- components:
- - type: StorageFill
- contents:
- - id: CP14VialSmallHealingManaDepletion
- amount: 5
-
-
-- type: storePositionBuy
- id: CP14VialSmallSpeedUp
- code: SPEED_UP
- price: 70
- iconOverride:
- sprite: _CP14/Objects/Specific/Alchemy/vial_small.rsi
- state: vial
- factions:
- - BradFamily
- service: !type:CP14BuyItemsService
- product: CP14WoodenChestFilledSmallSpeedUp
-
-- type: entity
- parent: CP14WoodenChest
- id: CP14WoodenChestFilledSmallSpeedUp
- name: accseleration potions chest
- components:
- - type: StorageFill
- contents:
- - id: CP14VialSmallSpeedUp
- amount: 5
-
-
-- type: storePositionBuy
- id: CP14VialSmallRainbow
- code: FUNNY_POTION
- price: 100
- iconOverride:
- sprite: _CP14/Objects/Specific/Alchemy/vial_small.rsi
- state: vial
- factions:
- - BradFamily
- service: !type:CP14BuyItemsService
- product: CP14WoodenChestFilledSmallRainbow
-
-- type: entity
- parent: CP14WoodenChest
- id: CP14WoodenChestFilledSmallRainbow
- name: funny potions chest
- components:
- - type: StorageFill
- contents:
- - id: CP14VialSmallRainbow
- amount: 5
-
-
-- type: storePositionBuy
- id: Candles
- code: CANDLES
- price: 100
- iconOverride:
- sprite: Objects/Misc/candles.rsi
- state: loadout
- factions:
- - BradFamily
- service: !type:CP14BuyItemsService
- product: CP14WoodenChestFilledCandles
-
-- type: entity
- parent: CP14WoodenChest
- id: CP14WoodenChestFilledCandles
- name: candles chest
- components:
- - type: StorageFill
- contents:
- - id: CP14CandleRed
- amount: 2
- - id: CP14CandleBlue
- amount: 2
- - id: CP14CandleBlack
- amount: 2
- - id: CP14CandleGreen
- amount: 2
- - id: CP14CandlePurple
- amount: 2
- - id: CP14CandleRedSmall
- amount: 2
- - id: CP14CandleBlueSmall
- amount: 2
- - id: CP14CandleBlackSmall
- amount: 2
- - id: CP14CandleGreenSmall
- amount: 2
- - id: CP14CandlePurpleSmall
- amount: 2
-
-- type: storePositionBuy
- id: SmokePowder
- code: TOBACCO
- price: 80
- iconOverride:
- sprite: _CP14/Objects/Misc/reagent_fillings.rsi
- state: tobacco_small
- factions:
- - BradFamily
- service: !type:CP14BuyItemsService
- product: CP14WoodenChestFilledSmokePowder
-
-- type: entity
- parent: CP14WoodenChest
- id: CP14WoodenChestFilledSmokePowder
- name: smoking powder chest
- components:
- - type: StorageFill
- contents:
- - id: CP14GroundTobacco
- amount: 10
- - id: CP14GroundSage
- amount: 5
diff --git a/Resources/Prototypes/_CP14/Catalog/Cargo/Store/BradFamily/sell.yml b/Resources/Prototypes/_CP14/Catalog/Cargo/Store/BradFamily/sell.yml
deleted file mode 100644
index 0f40644fd4..0000000000
--- a/Resources/Prototypes/_CP14/Catalog/Cargo/Store/BradFamily/sell.yml
+++ /dev/null
@@ -1,14 +0,0 @@
-- type: storePositionSell
- id: CP14AlchemicalHerbals
- price: 50
- factions:
- - BradFamily
- service: !type:CP14SellWhitelistService
- whitelist:
- tags:
- - CP14AlchemicalHerbals
- count: 10
- name: cp14-entity-group-alchemical-herbals
- sprite:
- sprite: _CP14/Objects/Flora/Wild/store_position.rsi
- state: sell
diff --git a/Resources/Prototypes/_CP14/Catalog/Cargo/Store/BradFamily/sell_special.yml b/Resources/Prototypes/_CP14/Catalog/Cargo/Store/BradFamily/sell_special.yml
deleted file mode 100644
index 6310a88fff..0000000000
--- a/Resources/Prototypes/_CP14/Catalog/Cargo/Store/BradFamily/sell_special.yml
+++ /dev/null
@@ -1,89 +0,0 @@
-- type: storePositionSell
- id: CP14BloodFlower
- special: true
- price: 200
- factions:
- - BradFamily
- service: !type:CP14SellPrototypeService
- proto: CP14BloodFlower
- count: 20
-
-- type: storePositionSell
- id: CP14AgaricMushroom
- special: true
- price: 200
- factions:
- - BradFamily
- service: !type:CP14SellPrototypeService
- proto: CP14AgaricMushroom
- count: 20
-
-- type: storePositionSell
- id: CP14ChromiumSlime
- special: true
- price: 600
- factions:
- - BradFamily
- service: !type:CP14SellPrototypeService
- proto: CP14ChromiumSlime
- count: 20
-
-- type: storePositionSell
- id: CP14WildSage
- special: true
- price: 200
- factions:
- - BradFamily
- service: !type:CP14SellPrototypeService
- proto: CP14WildSage
- count: 20
-
-- type: storePositionSell
- id: CP14LumiMushroom
- special: true
- price: 400
- factions:
- - BradFamily
- service: !type:CP14SellPrototypeService
- proto: CP14LumiMushroom
- count: 20
-
-- type: storePositionSell
- id: CP14BlueAmanita
- special: true
- price: 200
- factions:
- - BradFamily
- service: !type:CP14SellPrototypeService
- proto: CP14BlueAmanita
- count: 20
-
-- type: storePositionSell
- id: CP14Dayflin
- special: true
- price: 200
- factions:
- - BradFamily
- service: !type:CP14SellPrototypeService
- proto: CP14Dayflin
- count: 20
-
-- type: storePositionSell
- id: CP14AirLily
- special: true
- price: 300
- factions:
- - BradFamily
- service: !type:CP14SellPrototypeService
- proto: CP14AirLily
- count: 20
-
-- type: storePositionSell
- id: CP14BaseAlchemyBomb
- special: true
- price: 250
- factions:
- - BradFamily
- service: !type:CP14SellPrototypeService
- proto: CP14BaseAlchemyBomb
- count: 3
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Catalog/Cargo/Store/General/buy.yml b/Resources/Prototypes/_CP14/Catalog/Cargo/Store/General/buy.yml
deleted file mode 100644
index 4ed8160a84..0000000000
--- a/Resources/Prototypes/_CP14/Catalog/Cargo/Store/General/buy.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-- type: storePositionBuy
- id: RerollSell
- code: REROLL_SELL
- price: 20
- nameOverride: cp14-buy-position-reroll-sell
- iconOverride:
- sprite: _CP14/Interface/Misc/reroll.rsi
- state: reroll
- service: !type:CP14RerollSpecialPositionsService
- rerollSell: 5
-
-#- type: storePositionBuy #Неактуально, т.к. позиций таких нет
-# id: RerollBuy
-# code: REROLL_BUY
-# price: 20
-# nameOverride: cp14-buy-position-reroll-buy
-# iconOverride:
-# sprite: _CP14/Interface/Misc/reroll.rsi
-# state: reroll
-# service: !type:CP14RerollSpecialPositionsService
-# rerollBuy: 5
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Catalog/Cargo/Store/General/sell_special.yml b/Resources/Prototypes/_CP14/Catalog/Cargo/Store/General/sell_special.yml
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/Resources/Prototypes/_CP14/Catalog/Cargo/Store/HelmirWeapon/buy.yml b/Resources/Prototypes/_CP14/Catalog/Cargo/Store/HelmirWeapon/buy.yml
deleted file mode 100644
index 99052aaf55..0000000000
--- a/Resources/Prototypes/_CP14/Catalog/Cargo/Store/HelmirWeapon/buy.yml
+++ /dev/null
@@ -1,99 +0,0 @@
-- type: storePositionBuy
- id: CP14ModularIronArrow
- code: ARROW
- price: 100
- factions:
- - HelmirWeapon
- service: !type:CP14BuyItemsService
- product: CP14ModularIronArrow
- count: 6
-
-- type: storePositionBuy
- id: CP14ModularIronAxe
- code: AXE
- price: 150
- factions:
- - HelmirWeapon
- service: !type:CP14BuyItemsService
- product: CP14ModularIronAxe
- count: 3
-
-- type: storePositionBuy
- id: CP14ModularIronDagger
- code: DAGGER
- price: 150
- factions:
- - HelmirWeapon
- service: !type:CP14BuyItemsService
- product: CP14ModularIronDagger
- count: 7
-
-- type: storePositionBuy
- id: CP14ModularIronHammer
- code: HAMMER
- price: 150
- factions:
- - HelmirWeapon
- service: !type:CP14BuyItemsService
- product: CP14ModularIronHammer
- count: 5
-
-- type: storePositionBuy
- id: CP14ModularIronMace
- code: MACE
- price: 150
- factions:
- - HelmirWeapon
- service: !type:CP14BuyItemsService
- product: CP14ModularIronMace
- count: 5
-
-- type: storePositionBuy
- id: CP14ModularIronPickaxe
- code: PICKAXE
- price: 150
- factions:
- - HelmirWeapon
- service: !type:CP14BuyItemsService
- product: CP14ModularIronPickaxe
- count: 5
-
-- type: storePositionBuy
- id: CP14ModularIronShovel
- code: SHOVEL
- price: 150
- factions:
- - HelmirWeapon
- service: !type:CP14BuyItemsService
- product: CP14ModularIronShovel
- count: 5
-
-- type: storePositionBuy
- id: CP14ModularIronSickle
- code: SICKLE
- price: 150
- factions:
- - HelmirWeapon
- service: !type:CP14BuyItemsService
- product: CP14ModularIronSickle
- count: 7
-
-- type: storePositionBuy
- id: CP14ModularIronSpear
- code: SPEAR
- price: 150
- factions:
- - HelmirWeapon
- service: !type:CP14BuyItemsService
- product: CP14ModularIronSpear
- count: 5
-
-- type: storePositionBuy
- id: CP14ModularIronSword
- code: SWORD
- price: 150
- factions:
- - HelmirWeapon
- service: !type:CP14BuyItemsService
- product: CP14ModularIronSword
- count: 5
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Catalog/Cargo/Store/SpiceStream/buy.yml b/Resources/Prototypes/_CP14/Catalog/Cargo/Store/SpiceStream/buy.yml
deleted file mode 100644
index 79d82ad4a4..0000000000
--- a/Resources/Prototypes/_CP14/Catalog/Cargo/Store/SpiceStream/buy.yml
+++ /dev/null
@@ -1,169 +0,0 @@
-- type: storePositionBuy
- id: FarmSeeds
- code: SEEDS
- iconOverride:
- sprite: _CP14/Objects/Specific/Farming/seeds.rsi
- state: seeds
- price: 70
- factions:
- - SpiceStream
- service: !type:CP14BuyItemsService
- product: CP14WoodenChestFilledFarmSeeds
-
-- type: entity
- parent: CP14WoodenChest
- id: CP14WoodenChestFilledFarmSeeds
- name: farm seeds chest
- components:
- - type: StorageFill
- contents:
- - id: CP14SeedWheat
- amount: 3
- - id: CP14SeedPumpkin
- amount: 3
- - id: CP14SeedCabbage
- amount: 3
- - id: CP14SeedCucumber
- amount: 3
- - id: CP14SeedTomato
- amount: 3
- - id: CP14SeedPepper
- amount: 3
- - id: CP14SeedCotton
- amount: 3
-
-
-- type: storePositionBuy
- id: Cheese
- code: CHEESE
- iconOverride:
- sprite: _CP14/Objects/Consumable/Food/cheese.rsi
- state: cheese_wheel
- price: 100
- factions:
- - SpiceStream
- service: !type:CP14BuyItemsService
- product: CP14WoodenChestFilledCheese
-
-- type: entity
- parent: CP14WoodenChest
- id: CP14WoodenChestFilledCheese
- name: cheese chest
- components:
- - type: StorageFill
- contents:
- - id: CP14FoodCheeseWheel
- amount: 5
-
-
-- type: storePositionBuy
- id: Wood
- code: WOOD
- price: 50
- factions:
- - SpiceStream
- service: !type:CP14BuyItemsService
- product: CP14WoodenPlanks10
- count: 5
-
-
-- type: storePositionBuy
- id: Fabric
- code: FABRIC
- price: 30
- factions:
- - SpiceStream
- service: !type:CP14BuyItemsService
- product: CP14Cloth10
- count: 3
-
-- type: storePositionBuy
- id: CP14String
- code: STRINGS
- price: 30
- factions:
- - SpiceStream
- service: !type:CP14BuyItemsService
- product: CP14String
- count: 5
-
-- type: storePositionBuy
- id: CopperBar
- code: COPPER
- price: 250
- factions:
- - SpiceStream
- service: !type:CP14BuyItemsService
- product: CP14CopperBar10
-
-
-- type: storePositionBuy
- id: IronBar
- code: IRON
- price: 500
- factions:
- - SpiceStream
- service: !type:CP14BuyItemsService
- product: CP14IronBar10
-
-
-- type: storePositionBuy
- id: GoldBar
- code: GOLD
- price: 2000
- factions:
- - SpiceStream
- service: !type:CP14BuyItemsService
- product: CP14GoldBar10
-
-- type: storePositionBuy
- id: Bureaucracy
- code: PAPER
- iconOverride:
- sprite: _CP14/Objects/Bureaucracy/paper.rsi
- state: folder_red
- price: 100
- factions:
- - SpiceStream
- service: !type:CP14BuyItemsService
- product: CP14WoodenChestFilledBureaucracy
-
-- type: entity
- parent: CP14WoodenChest
- id: CP14WoodenChestFilledBureaucracy
- name: bureaucracy chest
- components:
- - type: StorageFill
- contents:
- - id: CP14PaperFolderBlue
- amount: 5
- - id: CP14PaperFolderRed
- amount: 5
- - id: CP14Paper
- amount: 5
- - id: CP14PenFeather
- amount: 3
-
-- type: storePositionBuy
- id: EnergyCrystals
- code: ENERGY
- iconOverride:
- sprite: _CP14/Objects/Specific/Thaumaturgy/powerline_gauntlet.rsi
- state: icon
- price: 150
- factions:
- - SpiceStream
- service: !type:CP14BuyItemsService
- product: CP14WoodenChestFilledEnergyCrystals
-
-- type: entity
- parent: CP14WoodenChest
- id: CP14WoodenChestFilledEnergyCrystals
- name: energy crystals chest
- components:
- - type: StorageFill
- contents:
- - id: CP14EnergyCrystalMediumEmpty
- amount: 5
- - id: CP14ManaOperationGlove
- amount: 2
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Catalog/Cargo/Store/SpiceStream/buy_special.yml b/Resources/Prototypes/_CP14/Catalog/Cargo/Store/SpiceStream/buy_special.yml
deleted file mode 100644
index 5556f95f67..0000000000
--- a/Resources/Prototypes/_CP14/Catalog/Cargo/Store/SpiceStream/buy_special.yml
+++ /dev/null
@@ -1,45 +0,0 @@
-# ANCHORABLE PROBLEMS
-
-#- type: storePositionBuy
-# id: DwarfBeer
-# code: BEER_DWARF
-# special: true
-# nameOverride: cp14-reagent-name-dwarfbeer
-# price: 150
-# factions:
-# - SpiceStream
-# service: !type:CP14BuyItemsService
-# product: CP14CraneBarrelDwarfBeer
-#
-#- type: storePositionBuy
-# id: BeerGerbil
-# code: BEER_BREEZE
-# special: true
-# nameOverride: cp14-reagent-name-breeze
-# price: 70
-# factions:
-# - SpiceStream
-# service: !type:CP14BuyItemsService
-# product: CP14CraneBarrelSmallBeerBreeze
-#
-#- type: storePositionBuy
-# id: AleBottomless
-# code: BEER_BOTTOMLESS
-# special: true
-# nameOverride: cp14-reagent-name-bottomless
-# price: 70
-# factions:
-# - SpiceStream
-# service: !type:CP14BuyItemsService
-# product: CP14CraneBarrelSmallAleBottomless
-#
-#- type: storePositionBuy
-# id: WineZellasian
-# code: WINE_ZELLASIAN
-# special: true
-# nameOverride: cp14-reagent-name-zellasian-pleasure
-# price: 150
-# factions:
-# - SpiceStream
-# service: !type:CP14BuyItemsService
-# product: CP14CraneBarrelWineZellasianPleasure
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Catalog/Cargo/Store/SpiceStream/sell.yml b/Resources/Prototypes/_CP14/Catalog/Cargo/Store/SpiceStream/sell.yml
deleted file mode 100644
index 7a1a367e8b..0000000000
--- a/Resources/Prototypes/_CP14/Catalog/Cargo/Store/SpiceStream/sell.yml
+++ /dev/null
@@ -1,94 +0,0 @@
-- type: storePositionSell
- id: CopperBars
- price: 150
- factions:
- - SpiceStream
- - HelmirWeapon
- service: !type:CP14SellStackService
- stackId: CP14CopperBar
- count: 10
-
-- type: storePositionSell
- id: CopperOre
- price: 20
- factions:
- - SpiceStream
- service: !type:CP14SellStackService
- stackId: CP14OreCopper
- count: 10
-
-- type: storePositionSell
- id: IronBars
- price: 300
- factions:
- - SpiceStream
- - HelmirWeapon
- service: !type:CP14SellStackService
- stackId: CP14IronBar
- count: 10
-
-- type: storePositionSell
- id: IronOre
- price: 30
- factions:
- - SpiceStream
- service: !type:CP14SellStackService
- stackId: CP14OreIron
- count: 10
-
-- type: storePositionSell
- id: GoldBars
- price: 1200
- factions:
- - SpiceStream
- - HelmirWeapon
- service: !type:CP14SellStackService
- stackId: CP14GoldBar
- count: 10
-
-- type: storePositionSell
- id: GoldOre
- price: 120
- factions:
- - SpiceStream
- service: !type:CP14SellStackService
- stackId: CP14OreGold
- count: 10
-
-- type: storePositionSell
- id: MithrilBars
- price: 2500
- factions:
- - SpiceStream
- - HelmirWeapon
- service: !type:CP14SellStackService
- stackId: CP14MithrilBar
- count: 10
-
-- type: storePositionSell
- id: MithrilOre
- price: 250
- factions:
- - SpiceStream
- service: !type:CP14SellStackService
- stackId: CP14OreMithril
- count: 10
-
-- type: storePositionSell
- id: Wood
- price: 5
- factions:
- - SpiceStream
- - HelmirWeapon
- service: !type:CP14SellStackService
- stackId: CP14WoodenPlanks
- count: 30
-
-- type: storePositionSell
- id: Glass
- price: 100
- factions:
- - SpiceStream
- service: !type:CP14SellStackService
- stackId: CP14GlassSheet
- count: 10
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Catalog/Cargo/Store/SpiceStream/sell_special.yml b/Resources/Prototypes/_CP14/Catalog/Cargo/Store/SpiceStream/sell_special.yml
deleted file mode 100644
index 1f0414be52..0000000000
--- a/Resources/Prototypes/_CP14/Catalog/Cargo/Store/SpiceStream/sell_special.yml
+++ /dev/null
@@ -1,129 +0,0 @@
-- type: storePositionSell
- id: CP14DyeRed
- special: true
- price: 75
- factions:
- - SpiceStream
- service: !type:CP14SellPrototypeService
- proto: CP14DyeRed
- count: 5
-
-- type: storePositionSell
- id: CP14DyeYellow
- special: true
- price: 75
- factions:
- - SpiceStream
- service: !type:CP14SellPrototypeService
- proto: CP14DyeYellow
- count: 5
-
-- type: storePositionSell
- id: CP14DyeBlue
- special: true
- price: 75
- factions:
- - SpiceStream
- service: !type:CP14SellPrototypeService
- proto: CP14DyeBlue
- count: 5
-
-- type: storePositionSell
- id: CP14FoodPieMeat
- special: true
- price: 100
- factions:
- - SpiceStream
- service: !type:CP14SellPrototypeService
- proto: CP14FoodPieMeat
- count: 1
-
-- type: storePositionSell
- id: CP14FoodPiePumpkin
- special: true
- price: 100
- factions:
- - SpiceStream
- service: !type:CP14SellPrototypeService
- proto: CP14FoodPiePumpkin
- count: 1
-
-- type: storePositionSell
- id: CP14FoodBreadBun
- special: true
- price: 20
- factions:
- - SpiceStream
- service: !type:CP14SellPrototypeService
- proto: CP14FoodBreadBun
- count: 3
-
-- type: storePositionSell
- id: CP14FoodCabbage
- special: true
- price: 80
- factions:
- - SpiceStream
- service: !type:CP14SellPrototypeService
- proto: CP14FoodCabbage
- count: 10
-
-- type: storePositionSell
- id: CP14FoodPumpkin
- special: true
- price: 80
- factions:
- - SpiceStream
- service: !type:CP14SellPrototypeService
- proto: CP14FoodPumpkin
- count: 10
-
-- type: storePositionSell
- id: CP14FoodPotato
- special: true
- price: 80
- factions:
- - SpiceStream
- service: !type:CP14SellPrototypeService
- proto: CP14FoodPotato
- count: 10
-
-- type: storePositionSell
- id: CP14FoodCucumber
- special: true
- price: 80
- factions:
- - SpiceStream
- service: !type:CP14SellPrototypeService
- proto: CP14FoodCucumber
- count: 10
-
-- type: storePositionSell
- id: CP14FoodTomatoes
- special: true
- price: 80
- factions:
- - SpiceStream
- service: !type:CP14SellPrototypeService
- proto: CP14FoodTomatoes
- count: 10
-
-- type: storePositionSell
- id: CP14FoodPepper
- special: true
- price: 80
- factions:
- - SpiceStream
- service: !type:CP14SellPrototypeService
- proto: CP14FoodPepper
- count: 10
-
-- type: storePositionSell
- id: CP14FoodOnion
- special: true
- price: 80
- factions:
- - SpiceStream
- service: !type:CP14SellPrototypeService
- proto: CP14FoodOnion
- count: 10
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Catalog/Cargo/Store/Sylphoria/buy.yml b/Resources/Prototypes/_CP14/Catalog/Cargo/Store/Sylphoria/buy.yml
deleted file mode 100644
index 64be84efd8..0000000000
--- a/Resources/Prototypes/_CP14/Catalog/Cargo/Store/Sylphoria/buy.yml
+++ /dev/null
@@ -1,68 +0,0 @@
-- type: storePositionBuy
- id: CP14SpellScrollResurrection
- code: SCROLL_RESURRECTION
- price: 100
- factions:
- - Sylphoria
- service: !type:CP14BuyItemsService
- product: CP14SpellScrollResurrection
-
-- type: storePositionBuy
- id: CP14SpellScrollCureWounds
- code: CURE_WOUNDS
- price: 100
- factions:
- - Sylphoria
- service: !type:CP14BuyItemsService
- product: CP14SpellScrollCureWounds
- count: 5
-
-- type: storePositionBuy
- id: CP14SpellScrollCureBurn
- code: CURE_BURN
- price: 100
- factions:
- - Sylphoria
- service: !type:CP14BuyItemsService
- product: CP14SpellScrollCureBurn
- count: 5
-
-- type: storePositionBuy
- id: CP14SpellScrollBloodPurification
- code: BLOOD_PURE
- price: 100
- factions:
- - Sylphoria
- service: !type:CP14BuyItemsService
- product: CP14SpellScrollBloodPurification
- count: 5
-
-- type: storePositionBuy
- id: CP14SpellscrollSignalLightBlue
- code: SIGNAL_BLUE
- price: 50
- factions:
- - Sylphoria
- service: !type:CP14BuyItemsService
- product: CP14SpellscrollSignalLightBlue
- count: 5
-
-- type: storePositionBuy
- id: CP14SpellscrollSignalLightYellow
- code: SIGNAL_YELLOW
- price: 50
- factions:
- - Sylphoria
- service: !type:CP14BuyItemsService
- product: CP14SpellscrollSignalLightYellow
- count: 5
-
-- type: storePositionBuy
- id: CP14SpellscrollSignalLightRed
- code: SIGNAL_RED
- price: 50
- factions:
- - Sylphoria
- service: !type:CP14BuyItemsService
- product: CP14SpellscrollSignalLightRed
- count: 5
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Catalog/Cargo/Store/Sylphoria/sell.yml b/Resources/Prototypes/_CP14/Catalog/Cargo/Store/Sylphoria/sell.yml
deleted file mode 100644
index 9c7b0ff836..0000000000
--- a/Resources/Prototypes/_CP14/Catalog/Cargo/Store/Sylphoria/sell.yml
+++ /dev/null
@@ -1,32 +0,0 @@
-- type: storePositionSell
- id: CP14LucenPlanks
- price: 100
- factions:
- - Sylphoria
- service: !type:CP14SellStackService
- stackId: CP14LucensWoodenPlanks
- count: 10
-
-- type: storePositionSell
- id: CP14SpellScroll
- price: 50
- factions:
- - Sylphoria
- service: !type:CP14SellWhitelistService
- whitelist:
- tags:
- - CP14SpellScroll
- count: 5
- name: cp14-entity-group-spell-scrolls
- sprite:
- sprite: _CP14/Objects/Bureaucracy/paper.rsi
- state: scrolls
-
-- type: storePositionSell
- id: CP14ClothingCloakAmuletGold
- price: 80
- factions:
- - Sylphoria
- service: !type:CP14SellPrototypeService
- proto: CP14ClothingCloakAmuletGold
- count: 1
diff --git a/Resources/Prototypes/_CP14/Catalog/Cargo/Store/Sylphoria/sell_special.yml b/Resources/Prototypes/_CP14/Catalog/Cargo/Store/Sylphoria/sell_special.yml
deleted file mode 100644
index 57e390647e..0000000000
--- a/Resources/Prototypes/_CP14/Catalog/Cargo/Store/Sylphoria/sell_special.yml
+++ /dev/null
@@ -1,139 +0,0 @@
-- type: storePositionSell
- id: BountyTorch
- special: true
- price: 20
- factions:
- - Sylphoria
- service: !type:CP14SellPrototypeService
- proto: CP14Torch
- count: 5
-
-- type: storePositionSell
- id: BountyLucenPlanks
- special: true
- price: 200
- factions:
- - Sylphoria
- service: !type:CP14SellStackService
- stackId: CP14LucensWoodenPlanks
- count: 20
-
-- type: storePositionSell
- id: CP14SpellScrollShadowStep
- special: true
- price: 80
- factions:
- - Sylphoria
- service: !type:CP14SellPrototypeService
- proto: CP14SpellScrollShadowStep
- count: 1
-
-- type: storePositionSell
- id: CP14SpellScrollFireball
- special: true
- price: 80
- factions:
- - Sylphoria
- service: !type:CP14SellPrototypeService
- proto: CP14SpellScrollFireball
- count: 1
-
-- type: storePositionSell
- id: CP14SpellScrollBeerCreation
- special: true
- price: 400
- factions:
- - Sylphoria
- service: !type:CP14SellPrototypeService
- proto: CP14SpellScrollBeerCreation
- count: 1
-
-- type: storePositionSell
- id: CP14ClothingRingIceShards
- special: true
- price: 150
- factions:
- - Sylphoria
- service: !type:CP14SellPrototypeService
- proto: CP14ClothingRingIceShards
- count: 1
-
-- type: storePositionSell
- id: CP14ClothingRingFlashLight
- special: true
- price: 150
- factions:
- - Sylphoria
- service: !type:CP14SellPrototypeService
- proto: CP14ClothingRingFlashLight
- count: 1
-
-- type: storePositionSell
- id: CP14BaseLockpick
- special: true
- price: 100
- factions:
- - Sylphoria
- service: !type:CP14SellPrototypeService
- proto: CP14BaseLockpick
- count: 10
-
-- type: storePositionSell
- id: CP14MobRabbit
- special: true
- price: 50
- factions:
- - Sylphoria
- service: !type:CP14SellPrototypeService
- proto: CP14MobRabbit
- count: 5
-
-- type: storePositionSell
- id: CP14MobPig
- special: true
- price: 130
- factions:
- - Sylphoria
- service: !type:CP14SellPrototypeService
- proto: CP14MobPig
- count: 5
-
-- type: storePositionSell
- id: CP14MobBoar
- special: true
- price: 170
- factions:
- - Sylphoria
- service: !type:CP14SellPrototypeService
- proto: CP14MobBoar
- count: 5
-
-- type: storePositionSell
- id: CP14MobFrog
- special: true
- price: 10
- factions:
- - Sylphoria
- service: !type:CP14SellPrototypeService
- proto: CP14MobFrog
- count: 5
-
-- type: storePositionSell
- id: CP14MobMonsterMole
- special: true
- price: 50
- factions:
- - Sylphoria
- service: !type:CP14SellPrototypeService
- proto: CP14MobMonsterMole
- count: 1
-
-- type: storePositionSell
- id: CP14PartsMonsterGlands
- special: true
- price: 100
- factions:
- - Sylphoria
- service: !type:CP14SellPrototypeService
- proto: CP14PartsMonsterGlands
- count: 1
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Catalog/Cargo/Store/factions.yml b/Resources/Prototypes/_CP14/Catalog/Cargo/Store/factions.yml
deleted file mode 100644
index 0f75c4f6b6..0000000000
--- a/Resources/Prototypes/_CP14/Catalog/Cargo/Store/factions.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-- type: storeFaction
- id: HelmirWeapon
- name: cp14-faction-name-helmir
- desc: cp14-faction-desc-helmir
-
-- type: storeFaction
- id: Sylphoria
- name: cp14-faction-name-sylphoria
- desc: cp14-faction-desc-sylphoria
-
-- type: storeFaction
- id: SpiceStream
- name: cp14-faction-name-spice-stream
- desc: cp14-faction-desc-spice-stream
-
-- type: storeFaction
- id: BradFamily
- name: cp14-faction-name-brad-family
- desc: cp14-faction-desc-brad-family
diff --git a/Resources/Prototypes/_CP14/Entities/Clothing/Head/ModularArmor/Aventail/chainmail.yml b/Resources/Prototypes/_CP14/Entities/Clothing/Head/ModularArmor/Aventail/chainmail.yml
index a5b1de75c4..4072b76352 100644
--- a/Resources/Prototypes/_CP14/Entities/Clothing/Head/ModularArmor/Aventail/chainmail.yml
+++ b/Resources/Prototypes/_CP14/Entities/Clothing/Head/ModularArmor/Aventail/chainmail.yml
@@ -23,8 +23,8 @@
- type: CP14ModularCraftPart
possibleParts:
- AventailIronChainmail
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Iron: 10
- type: entity
@@ -41,8 +41,8 @@
- type: CP14ModularCraftPart
possibleParts:
- AventailGoldChainmail
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Gold: 10
- type: entity
@@ -59,8 +59,8 @@
- type: CP14ModularCraftPart
possibleParts:
- AventailCopperChainmail
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Copper: 10
- type: entity
@@ -77,6 +77,6 @@
- type: CP14ModularCraftPart
possibleParts:
- AventailMithrilChainmail
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Mithril: 10
diff --git a/Resources/Prototypes/_CP14/Entities/Clothing/Head/ModularArmor/Aventail/plate.yml b/Resources/Prototypes/_CP14/Entities/Clothing/Head/ModularArmor/Aventail/plate.yml
index aac8eb83e1..72f7712b5f 100644
--- a/Resources/Prototypes/_CP14/Entities/Clothing/Head/ModularArmor/Aventail/plate.yml
+++ b/Resources/Prototypes/_CP14/Entities/Clothing/Head/ModularArmor/Aventail/plate.yml
@@ -11,8 +11,8 @@
- type: CP14ModularCraftPart
possibleParts:
- AventailIronPlate
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Iron: 10
- type: entity
@@ -29,8 +29,8 @@
- type: CP14ModularCraftPart
possibleParts:
- AventailGoldPlate
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Gold: 10
- type: entity
@@ -47,8 +47,8 @@
- type: CP14ModularCraftPart
possibleParts:
- AventailCopperPlate
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Copper: 10
- type: entity
@@ -65,6 +65,6 @@
- type: CP14ModularCraftPart
possibleParts:
- AventailMithrilPlate
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Mithril: 10
diff --git a/Resources/Prototypes/_CP14/Entities/Clothing/Head/ModularArmor/Helmet/capellina.yml b/Resources/Prototypes/_CP14/Entities/Clothing/Head/ModularArmor/Helmet/capellina.yml
index cdb8bfd996..68dc1111d6 100644
--- a/Resources/Prototypes/_CP14/Entities/Clothing/Head/ModularArmor/Helmet/capellina.yml
+++ b/Resources/Prototypes/_CP14/Entities/Clothing/Head/ModularArmor/Helmet/capellina.yml
@@ -36,8 +36,8 @@
startProtoPart: CP14HelmetIronCapellina
- type: CP14MagicManacostModify
globalModifier: 1.05
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Iron: 20
- type: entity
@@ -70,8 +70,8 @@
startProtoPart: CP14HelmetGoldCapellina
- type: CP14MagicManacostModify
globalModifier: 1.01
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Gold: 20
- type: entity
@@ -104,8 +104,8 @@
startProtoPart: CP14HelmetCopperCapellina
- type: CP14MagicManacostModify
globalModifier: 1.03
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Copper: 20
- type: entity
@@ -138,6 +138,6 @@
startProtoPart: CP14HelmetMithrilCapellina
- type: CP14MagicManacostModify
globalModifier: 0.98
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Mithril: 20
diff --git a/Resources/Prototypes/_CP14/Entities/Clothing/Head/ModularArmor/Helmet/palm_helmet.yml b/Resources/Prototypes/_CP14/Entities/Clothing/Head/ModularArmor/Helmet/palm_helmet.yml
index c5f2841bf7..f760f819ef 100644
--- a/Resources/Prototypes/_CP14/Entities/Clothing/Head/ModularArmor/Helmet/palm_helmet.yml
+++ b/Resources/Prototypes/_CP14/Entities/Clothing/Head/ModularArmor/Helmet/palm_helmet.yml
@@ -22,8 +22,8 @@
startProtoPart: CP14HelmetIronCapellina
- type: CP14MagicManacostModify
globalModifier: 1.05
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Iron: 20
- type: entity
@@ -56,8 +56,8 @@
startProtoPart: CP14HelmetGoldPalmHelmet
- type: CP14MagicManacostModify
globalModifier: 1.01
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Gold: 20
- type: entity
@@ -90,8 +90,8 @@
startProtoPart: CP14HelmetCopperPalmHelmet
- type: CP14MagicManacostModify
globalModifier: 1.03
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Copper: 20
- type: entity
@@ -125,6 +125,6 @@
startProtoPart: CP14HelmetMithrilPalmHelmet
- type: CP14MagicManacostModify
globalModifier: 0.98
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Mithril: 20
diff --git a/Resources/Prototypes/_CP14/Entities/Clothing/Head/ModularArmor/Visor/chainmail.yml b/Resources/Prototypes/_CP14/Entities/Clothing/Head/ModularArmor/Visor/chainmail.yml
index 27c5c4d91c..b3794ccf6e 100644
--- a/Resources/Prototypes/_CP14/Entities/Clothing/Head/ModularArmor/Visor/chainmail.yml
+++ b/Resources/Prototypes/_CP14/Entities/Clothing/Head/ModularArmor/Visor/chainmail.yml
@@ -23,8 +23,8 @@
- type: CP14ModularCraftPart
possibleParts:
- VisorIronChainmail
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Iron: 10
- type: entity
@@ -41,8 +41,8 @@
- type: CP14ModularCraftPart
possibleParts:
- VisorGoldChainmail
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Gold: 10
- type: entity
@@ -59,8 +59,8 @@
- type: CP14ModularCraftPart
possibleParts:
- VisorCopperChainmail
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Copper: 10
- type: entity
@@ -77,6 +77,6 @@
- type: CP14ModularCraftPart
possibleParts:
- VisorMithrilChainmail
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Mithril: 10
diff --git a/Resources/Prototypes/_CP14/Entities/Clothing/Head/ModularArmor/Visor/plate.yml b/Resources/Prototypes/_CP14/Entities/Clothing/Head/ModularArmor/Visor/plate.yml
index 7ecdd65a92..d9a123c378 100644
--- a/Resources/Prototypes/_CP14/Entities/Clothing/Head/ModularArmor/Visor/plate.yml
+++ b/Resources/Prototypes/_CP14/Entities/Clothing/Head/ModularArmor/Visor/plate.yml
@@ -11,8 +11,8 @@
- type: CP14ModularCraftPart
possibleParts:
- VisorIronPlate
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Iron: 10
- type: entity
@@ -29,8 +29,8 @@
- type: CP14ModularCraftPart
possibleParts:
- VisorGoldPlate
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Gold: 10
- type: entity
@@ -47,8 +47,8 @@
- type: CP14ModularCraftPart
possibleParts:
- VisorCopperPlate
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Copper: 10
- type: entity
@@ -65,6 +65,6 @@
- type: CP14ModularCraftPart
possibleParts:
- VisorMithrilPlate
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Mithril: 10
diff --git a/Resources/Prototypes/_CP14/Entities/Clothing/OuterClothing/ModularArmor/Breastplate/chainmail.yml b/Resources/Prototypes/_CP14/Entities/Clothing/OuterClothing/ModularArmor/Breastplate/chainmail.yml
index 54f02233c1..64ef3d3f1c 100644
--- a/Resources/Prototypes/_CP14/Entities/Clothing/OuterClothing/ModularArmor/Breastplate/chainmail.yml
+++ b/Resources/Prototypes/_CP14/Entities/Clothing/OuterClothing/ModularArmor/Breastplate/chainmail.yml
@@ -21,8 +21,8 @@
startProtoPart: CP14ArmorIronChainmail
- type: CP14MagicManacostModify
globalModifier: 1.15
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Iron: 40
- type: entity
@@ -64,8 +64,8 @@
startProtoPart: CP14ArmorGoldChainmail
- type: CP14MagicManacostModify
globalModifier: 1.05
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Gold: 40
- type: entity
@@ -104,8 +104,8 @@
startProtoPart: CP14ArmorCopperChainmail
- type: CP14MagicManacostModify
globalModifier: 1.1
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Copper: 40
- type: entity
@@ -147,6 +147,6 @@
startProtoPart: CP14ArmorMithrilChainmail
- type: CP14MagicManacostModify
globalModifier: 0.96
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Mithril: 40
diff --git a/Resources/Prototypes/_CP14/Entities/Clothing/OuterClothing/ModularArmor/Breastplate/cuirass.yml b/Resources/Prototypes/_CP14/Entities/Clothing/OuterClothing/ModularArmor/Breastplate/cuirass.yml
index 34051c4944..f55f1b2b20 100644
--- a/Resources/Prototypes/_CP14/Entities/Clothing/OuterClothing/ModularArmor/Breastplate/cuirass.yml
+++ b/Resources/Prototypes/_CP14/Entities/Clothing/OuterClothing/ModularArmor/Breastplate/cuirass.yml
@@ -37,8 +37,8 @@
startProtoPart: CP14ArmorIronCuirass
- type: CP14MagicManacostModify
globalModifier: 1.2
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Iron: 50
- type: entity
@@ -81,8 +81,8 @@
startProtoPart: CP14ArmorGoldCuirass
- type: CP14MagicManacostModify
globalModifier: 1.1
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Gold: 50
- type: entity
@@ -125,8 +125,8 @@
startProtoPart: CP14ArmorCopperCuirass
- type: CP14MagicManacostModify
globalModifier: 1.15
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Copper: 50
- type: entity
@@ -169,6 +169,6 @@
startProtoPart: CP14ArmorMithrilCuirass
- type: CP14MagicManacostModify
globalModifier: 0.95
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Mithril: 50
diff --git a/Resources/Prototypes/_CP14/Entities/Clothing/OuterClothing/ModularArmor/Breastplate/infantry_cuirass.yml b/Resources/Prototypes/_CP14/Entities/Clothing/OuterClothing/ModularArmor/Breastplate/infantry_cuirass.yml
index 5e566ea4bb..b9ceef42f5 100644
--- a/Resources/Prototypes/_CP14/Entities/Clothing/OuterClothing/ModularArmor/Breastplate/infantry_cuirass.yml
+++ b/Resources/Prototypes/_CP14/Entities/Clothing/OuterClothing/ModularArmor/Breastplate/infantry_cuirass.yml
@@ -22,8 +22,8 @@
startProtoPart: CP14ArmorIronInfantryCuirass
- type: CP14MagicManacostModify
globalModifier: 1.24
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Iron: 60
- type: entity
@@ -66,8 +66,8 @@
startProtoPart: CP14ArmorGoldInfantryCuirass
- type: CP14MagicManacostModify
globalModifier: 1.14
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Gold: 60
- type: entity
@@ -110,8 +110,8 @@
startProtoPart: CP14ArmorCopperInfantryCuirass
- type: CP14MagicManacostModify
globalModifier: 1.18
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Copper: 60
- type: entity
@@ -154,6 +154,6 @@
startProtoPart: CP14ArmorMithrilInfantryCuirass
- type: CP14MagicManacostModify
globalModifier: 0.92
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Mithril: 60
diff --git a/Resources/Prototypes/_CP14/Entities/Clothing/OuterClothing/ModularArmor/Cuisses/chainmail.yml b/Resources/Prototypes/_CP14/Entities/Clothing/OuterClothing/ModularArmor/Cuisses/chainmail.yml
index 1b8671de31..5a9dbb8821 100644
--- a/Resources/Prototypes/_CP14/Entities/Clothing/OuterClothing/ModularArmor/Cuisses/chainmail.yml
+++ b/Resources/Prototypes/_CP14/Entities/Clothing/OuterClothing/ModularArmor/Cuisses/chainmail.yml
@@ -11,8 +11,8 @@
- type: CP14ModularCraftPart
possibleParts:
- CuissesIronChainmail
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Iron: 10
- type: entity
@@ -29,8 +29,8 @@
- type: CP14ModularCraftPart
possibleParts:
- CuissesGoldChainmail
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Gold: 10
- type: entity
@@ -47,8 +47,8 @@
- type: CP14ModularCraftPart
possibleParts:
- CuissesCopperChainmail
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Copper: 10
- type: entity
@@ -65,6 +65,6 @@
- type: CP14ModularCraftPart
possibleParts:
- CuissesMithrilChainmail
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Mithril: 10
diff --git a/Resources/Prototypes/_CP14/Entities/Clothing/OuterClothing/ModularArmor/Cuisses/plate.yml b/Resources/Prototypes/_CP14/Entities/Clothing/OuterClothing/ModularArmor/Cuisses/plate.yml
index 5ae37c922a..6e33f506bd 100644
--- a/Resources/Prototypes/_CP14/Entities/Clothing/OuterClothing/ModularArmor/Cuisses/plate.yml
+++ b/Resources/Prototypes/_CP14/Entities/Clothing/OuterClothing/ModularArmor/Cuisses/plate.yml
@@ -26,8 +26,8 @@
- type: CP14ModularCraftPart
possibleParts:
- CuissesIronPlate
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Iron: 20
- type: entity
@@ -44,8 +44,8 @@
- type: CP14ModularCraftPart
possibleParts:
- CuissesGoldPlate
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Gold: 20
- type: entity
@@ -62,8 +62,8 @@
- type: CP14ModularCraftPart
possibleParts:
- CuissesCopperPlate
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Copper: 20
- type: entity
@@ -80,6 +80,6 @@
- type: CP14ModularCraftPart
possibleParts:
- CuissesMithrilPlate
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Mithril: 20
diff --git a/Resources/Prototypes/_CP14/Entities/Clothing/OuterClothing/ModularArmor/Greave/chainmail.yml b/Resources/Prototypes/_CP14/Entities/Clothing/OuterClothing/ModularArmor/Greave/chainmail.yml
index 444bfee86b..bace36defa 100644
--- a/Resources/Prototypes/_CP14/Entities/Clothing/OuterClothing/ModularArmor/Greave/chainmail.yml
+++ b/Resources/Prototypes/_CP14/Entities/Clothing/OuterClothing/ModularArmor/Greave/chainmail.yml
@@ -11,8 +11,8 @@
- type: CP14ModularCraftPart
possibleParts:
- GreaveIronChainmail
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Iron: 10
- type: entity
@@ -29,8 +29,8 @@
- type: CP14ModularCraftPart
possibleParts:
- GreaveGoldChainmail
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Gold: 10
- type: entity
@@ -47,8 +47,8 @@
- type: CP14ModularCraftPart
possibleParts:
- GreaveCopperChainmail
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Copper: 10
- type: entity
@@ -65,6 +65,6 @@
- type: CP14ModularCraftPart
possibleParts:
- GreaveMithrilChainmail
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Mithril: 10
diff --git a/Resources/Prototypes/_CP14/Entities/Clothing/OuterClothing/ModularArmor/Greave/plate.yml b/Resources/Prototypes/_CP14/Entities/Clothing/OuterClothing/ModularArmor/Greave/plate.yml
index 35e0f3291f..45eb969753 100644
--- a/Resources/Prototypes/_CP14/Entities/Clothing/OuterClothing/ModularArmor/Greave/plate.yml
+++ b/Resources/Prototypes/_CP14/Entities/Clothing/OuterClothing/ModularArmor/Greave/plate.yml
@@ -23,8 +23,8 @@
- type: CP14ModularCraftPart
possibleParts:
- GreaveIronPlate
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Iron: 20
- type: entity
@@ -41,8 +41,8 @@
- type: CP14ModularCraftPart
possibleParts:
- GreaveGoldPlate
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Gold: 20
- type: entity
@@ -59,8 +59,8 @@
- type: CP14ModularCraftPart
possibleParts:
- GreaveCopperPlate
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Copper: 20
- type: entity
@@ -77,6 +77,6 @@
- type: CP14ModularCraftPart
possibleParts:
- GreaveMithrilPlate
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Mithril: 20
diff --git a/Resources/Prototypes/_CP14/Entities/Clothing/Rings/amulet.yml b/Resources/Prototypes/_CP14/Entities/Clothing/Rings/amulet.yml
index 70ba0c3def..3305dbcf89 100644
--- a/Resources/Prototypes/_CP14/Entities/Clothing/Rings/amulet.yml
+++ b/Resources/Prototypes/_CP14/Entities/Clothing/Rings/amulet.yml
@@ -22,9 +22,9 @@
- state: icon
- type: Clothing
sprite: _CP14/Clothing/Rings/Amulet/amulet.rsi
- - type: CP14Material
- materials:
- CP14Gold: 5
+ - type: PhysicalComposition
+ materialComposition:
+ CP14Gold: 2
- type: entity
parent: CP14ClothingJewelleryBase
diff --git a/Resources/Prototypes/_CP14/Entities/Markers/Spawners/unique_loot.yml b/Resources/Prototypes/_CP14/Entities/Markers/Spawners/unique_loot.yml
index 7e7a803dce..4a2b9b4283 100644
--- a/Resources/Prototypes/_CP14/Entities/Markers/Spawners/unique_loot.yml
+++ b/Resources/Prototypes/_CP14/Entities/Markers/Spawners/unique_loot.yml
@@ -17,18 +17,4 @@
- sprite: Markers/cross.rsi
state: green
- sprite: _CP14/Clothing/Shoes/flightboots.rsi
- state: icon
-
-- type: entity
- name: random tradepost spawner
- id: CP14SpawnUniqueTradepost
- parent: CP14SpawnUniqueBase
- components:
- - type: CP14UniqueLootSpawner
- tag: CP14UniqueSpawnTradepost
- - type: Sprite
- layers:
- - sprite: Markers/cross.rsi
- state: green
- - sprite: _CP14/Structures/Specific/Economy/trade_portal.rsi
state: icon
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Entities/Mobs/Species/base.yml b/Resources/Prototypes/_CP14/Entities/Mobs/Species/base.yml
index 7eff97f075..5b59fa0468 100644
--- a/Resources/Prototypes/_CP14/Entities/Mobs/Species/base.yml
+++ b/Resources/Prototypes/_CP14/Entities/Mobs/Species/base.yml
@@ -232,6 +232,7 @@
Cold: 0.25
Bloodloss: 0.25
- type: CP14SkillStorage
+ - type: CP14TradingReputation
- type: entity
diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Economy/coins.yml b/Resources/Prototypes/_CP14/Entities/Objects/Economy/coins.yml
index d22c571e57..f2f5c83b52 100644
--- a/Resources/Prototypes/_CP14/Entities/Objects/Economy/coins.yml
+++ b/Resources/Prototypes/_CP14/Entities/Objects/Economy/coins.yml
@@ -24,9 +24,9 @@
- coin9
- coin10
- type: Appearance
- - type: CP14Currency
- currency: 1
- category: Currency
+ - type: StaticPrice
+ price: 0
+ - type: CP14CurrencyExaminable
- type: EmitSoundOnLand
sound:
path: /Audio/_CP14/Items/coins_fall.ogg
@@ -54,8 +54,8 @@
- type: Stack
stackType: CP14CopperCoin
count: 10
- - type: CP14Currency
- currency: 1
+ - type: StackPrice
+ price: 1
- type: entity
id: CP14CopperCoin5
@@ -94,8 +94,8 @@
- type: Stack
stackType: CP14SilverCoin
count: 10
- - type: CP14Currency
- currency: 10
+ - type: StackPrice
+ price: 10
- type: entity
id: CP14SilverCoin5
@@ -134,8 +134,8 @@
- type: Stack
stackType: CP14GoldCoin
count: 10
- - type: CP14Currency
- currency: 100
+ - type: StackPrice
+ price: 100
- type: entity
id: CP14GoldCoin5
@@ -174,8 +174,8 @@
- type: Stack
stackType: CP14PlatinumCoin
count: 10
- - type: CP14Currency
- currency: 1000
+ - type: StackPrice
+ price: 1000
- type: entity
id: CP14PlatinumCoin5
diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Economy/jewelry.yml b/Resources/Prototypes/_CP14/Entities/Objects/Economy/jewelry.yml
index 2d0d554f8a..94012bde7d 100644
--- a/Resources/Prototypes/_CP14/Entities/Objects/Economy/jewelry.yml
+++ b/Resources/Prototypes/_CP14/Entities/Objects/Economy/jewelry.yml
@@ -11,19 +11,15 @@
sprite: /Textures/_CP14/Objects/Economy/jewelry.rsi
- type: Item
size: Tiny
- - type: CP14Currency
- currency: 1
- category: Currency
+ - type: StaticPrice
+ price: 150
- type: entity
parent: CP14BaseJewelry
id: CP14JewelryRuby
name: ruby
description: A beautiful ruby stone that's worth a lot of money.
- suffix: 25gp
components:
- - type: CP14Currency
- currency: 2500
- type: Sprite
layers:
- state: ruby1
@@ -40,10 +36,7 @@
id: CP14JewelryEmerald
name: emerald
description: A beautiful emerald stone that's worth a lot of money.
- suffix: 40gp
components:
- - type: CP14Currency
- currency: 4000
- type: Sprite
layers:
- state: emerald1
@@ -61,10 +54,7 @@
id: CP14JewelrySapphire
name: sapphire
description: A beautiful sapphire stone that's worth a lot of money.
- suffix: 30gp
components:
- - type: CP14Currency
- currency: 3000
- type: Sprite
layers:
- state: sapphire1
@@ -81,10 +71,7 @@
id: CP14JewelryTopaz
name: topaz
description: A beautiful topaz stone that's worth a lot of money.
- suffix: 10gp
components:
- - type: CP14Currency
- currency: 1000
- type: Sprite
layers:
- state: topaz1
diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Economy/trade_contracts.yml b/Resources/Prototypes/_CP14/Entities/Objects/Economy/trade_contracts.yml
new file mode 100644
index 0000000000..34962fba6c
--- /dev/null
+++ b/Resources/Prototypes/_CP14/Entities/Objects/Economy/trade_contracts.yml
@@ -0,0 +1,40 @@
+- type: entity
+ parent: BaseItem
+ id: CP14TradeContractBase
+ abstract: true
+ categories: [ ForkFiltered ]
+ name: trade contract
+ components:
+ - type: Item
+ size: Tiny
+ - type: Tag
+ tags:
+ - Document
+ - type: Sprite
+ sprite: _CP14/Objects/Specific/Economy/trade_contracts.rsi
+ state: blank
+ - type: StaticPrice
+ price: 10
+ - type: CP14TradingContract
+
+- type: entity
+ parent: CP14TradeContractBase
+ id: CP14TradeContractVictoriaGardens
+ description: Trading contract with the "Victoria Gardens" shop. Allows you to purchase various natural products on the trading platform.
+ suffix: Victoria Gardens
+ components:
+ - type: Sprite
+ state: victoria_garden
+ - type: CP14TradingContract
+ faction: VictoriaGardens
+
+- type: entity
+ parent: CP14TradeContractBase
+ id: CP14TradeContractBradPotions
+ description: Trading contract with the "Brad's marvelous potions" ahop. Allows you to purchase various potions and alchemy equipment.
+ suffix: Brad Potions
+ components:
+ - type: Sprite
+ state: brad_potions
+ - type: CP14TradingContract
+ faction: BradPotions
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Economy/wallet.yml b/Resources/Prototypes/_CP14/Entities/Objects/Economy/wallet.yml
index 7d07b278a2..b8d1b3a5ef 100644
--- a/Resources/Prototypes/_CP14/Entities/Objects/Economy/wallet.yml
+++ b/Resources/Prototypes/_CP14/Entities/Objects/Economy/wallet.yml
@@ -52,4 +52,19 @@
- id: CP14SilverCoin1
- id: CP14CopperCoin
- id: CP14CopperCoin
+ - id: CP14CopperCoin
+
+- type: entity
+ id: CP14WalletFilledMerchant
+ parent: CP14Wallet
+ suffix: Merchant
+ components:
+ - type: StorageFill
+ contents:
+ - id: CP14GoldCoin1
+ - id: CP14SilverCoin5
+ - id: CP14SilverCoin1
+ - id: CP14SilverCoin1
+ - id: CP14CopperCoin
+ - id: CP14CopperCoin
- id: CP14CopperCoin
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Keys/key.yml b/Resources/Prototypes/_CP14/Entities/Objects/Keys/key.yml
index 9cab00731e..15364ae3cf 100644
--- a/Resources/Prototypes/_CP14/Entities/Objects/Keys/key.yml
+++ b/Resources/Prototypes/_CP14/Entities/Objects/Keys/key.yml
@@ -31,6 +31,9 @@
- 2
- 2
- 2
+ - type: PhysicalComposition
+ materialComposition:
+ CP14Copper: 10
- type: entity
parent: CP14BaseKey
@@ -45,6 +48,9 @@
- 2
- 2
- 2
+ - type: PhysicalComposition
+ materialComposition:
+ CP14Iron: 10
- type: entity
parent: CP14BaseKey
@@ -60,6 +66,9 @@
- 2
- 2
- 2
+ - type: PhysicalComposition
+ materialComposition:
+ CP14Gold: 10
- type: entity
parent: CP14BaseKey
@@ -75,4 +84,7 @@
- 2
- 2
- 2
- - 2
\ No newline at end of file
+ - 2
+ - type: PhysicalComposition
+ materialComposition:
+ CP14Mithril: 10
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Keys/keyrings.yml b/Resources/Prototypes/_CP14/Entities/Objects/Keys/keyrings.yml
index 793bd5e784..283ef8af86 100644
--- a/Resources/Prototypes/_CP14/Entities/Objects/Keys/keyrings.yml
+++ b/Resources/Prototypes/_CP14/Entities/Objects/Keys/keyrings.yml
@@ -42,6 +42,9 @@
slots:
- keys
- belt
+ - type: PhysicalComposition
+ materialComposition:
+ CP14Iron: 5
- type: entity
parent: CP14BaseKeyRing
diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Keys/locks.yml b/Resources/Prototypes/_CP14/Entities/Objects/Keys/locks.yml
index 4063fe761a..ebfa11359f 100644
--- a/Resources/Prototypes/_CP14/Entities/Objects/Keys/locks.yml
+++ b/Resources/Prototypes/_CP14/Entities/Objects/Keys/locks.yml
@@ -29,6 +29,9 @@
- 2
- 2
- 2
+ - type: PhysicalComposition
+ materialComposition:
+ CP14Copper: 10
- type: entity
parent: CP14BaseLock
@@ -43,6 +46,9 @@
- 2
- 2
- 2
+ - type: PhysicalComposition
+ materialComposition:
+ CP14Iron: 10
- type: entity
parent: CP14BaseLock
@@ -58,6 +64,9 @@
- 2
- 2
- 2
+ - type: PhysicalComposition
+ materialComposition:
+ CP14Gold: 10
- type: entity
parent: CP14BaseLock
@@ -73,4 +82,7 @@
- 2
- 2
- 2
- - 2
\ No newline at end of file
+ - 2
+ - type: PhysicalComposition
+ materialComposition:
+ CP14Mithril: 10
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Keys/tools.yml b/Resources/Prototypes/_CP14/Entities/Objects/Keys/tools.yml
index ff67d4c64d..2d1621d51d 100644
--- a/Resources/Prototypes/_CP14/Entities/Objects/Keys/tools.yml
+++ b/Resources/Prototypes/_CP14/Entities/Objects/Keys/tools.yml
@@ -15,6 +15,9 @@
- type: Tag
tags:
- CP14Lockpick
+ - type: PhysicalComposition
+ materialComposition:
+ CP14Iron: 10
- type: entity
parent: CP14BaseLockpick
@@ -25,6 +28,9 @@
health: 50
- type: Sprite
state: lockpick_mithril
+ - type: PhysicalComposition
+ materialComposition:
+ CP14Mithril: 10
- type: entity
parent: BaseItem
@@ -41,3 +47,6 @@
- type: CP14KeyFile
- type: UseDelay
delay: 1.0
+ - type: PhysicalComposition
+ materialComposition:
+ CP14Iron: 10
diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Materials/ash.yml b/Resources/Prototypes/_CP14/Entities/Objects/Materials/ash.yml
deleted file mode 100644
index bf3d356cb2..0000000000
--- a/Resources/Prototypes/_CP14/Entities/Objects/Materials/ash.yml
+++ /dev/null
@@ -1,50 +0,0 @@
-- type: entity
- parent: BaseItem
- id: CP14Ash1
- name: ash #Возможный реагент в будущем
- description: It used to be something that could be interesting and useful, now it's not.
- suffix: 1
- categories: [ ForkFiltered ]
- components:
- - type: Item
- size: Tiny
- - type: Sprite
- sprite: _CP14/Objects/Materials/ash.rsi
- layers:
- - state: ash_1
- map: ["base"]
- - type: SolutionContainerManager
- solutions:
- food:
- maxVol: 50
- reagents:
- - ReagentId: Ash
- Quantity: 10
- - type: SolutionSpiker
- sourceSolution: food
- ignoreEmpty: true
- - type: ScoopableSolution
- solution: food
- - type: Extractable
- grindableSolutionName: food
- - type: Appearance
- - type: Stack
- stackType: CP14Ash
- count: 1
- baseLayer: base
- layerStates:
- - ash_1
- - ash_2
- - ash_3
- - type: Material
- - type: PhysicalComposition # точно ли это нужно?
- materialComposition:
- CP14Ash: 100
-
-- type: entity
- id: CP14Ash3
- parent: CP14Ash1
- suffix: 3
- components:
- - type: Stack
- count: 3
diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Materials/bars.yml b/Resources/Prototypes/_CP14/Entities/Objects/Materials/bars.yml
index a88bee5596..373692a526 100644
--- a/Resources/Prototypes/_CP14/Entities/Objects/Materials/bars.yml
+++ b/Resources/Prototypes/_CP14/Entities/Objects/Materials/bars.yml
@@ -23,9 +23,9 @@
- bar_2
- bar_3
- type: Material
- #- type: CP14Material
- # materials:
- # CP14Copper: 10
+ - type: PhysicalComposition
+ materialComposition:
+ CP14Copper: 10
- type: entity
id: CP14CopperBar5
@@ -70,9 +70,9 @@
- bar_2
- bar_3
- type: Material
- #- type: CP14Material
- # materials:
- # CP14Iron: 10
+ - type: PhysicalComposition
+ materialComposition:
+ CP14Iron: 10
- type: entity
id: CP14IronBar5
@@ -116,9 +116,9 @@
- bar_2
- bar_3
- type: Material
- #- type: CP14Material
- # materials:
- # CP14Gold: 10
+ - type: PhysicalComposition
+ materialComposition:
+ CP14Gold: 10
- type: entity
id: CP14GoldBar5
@@ -161,6 +161,9 @@
- glass_2
- glass_3
- type: Material
+ - type: PhysicalComposition
+ materialComposition:
+ CP14Glass: 10
- type: entity
id: CP14GlassSheet5
@@ -202,9 +205,9 @@
- bar_2
- bar_3
- type: Material
- #- type: CP14Material
- # materials:
- # CP14Mithril: 10
+ - type: PhysicalComposition
+ materialComposition:
+ CP14Mithril: 10
- type: entity
id: CP14MithrilBar5
diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Materials/flora.yml b/Resources/Prototypes/_CP14/Entities/Objects/Materials/flora.yml
index 407f0a4ef0..bb17e4d241 100644
--- a/Resources/Prototypes/_CP14/Entities/Objects/Materials/flora.yml
+++ b/Resources/Prototypes/_CP14/Entities/Objects/Materials/flora.yml
@@ -23,6 +23,9 @@
- state: grass_material1
map: ["base"]
- type: Material
+ - type: PhysicalComposition
+ materialComposition:
+ CP14FloraMaterial: 10
- type: entity
id: CP14FloraMaterial10
diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Materials/misc.yml b/Resources/Prototypes/_CP14/Entities/Objects/Materials/misc.yml
index 0be891af5d..41075df80d 100644
--- a/Resources/Prototypes/_CP14/Entities/Objects/Materials/misc.yml
+++ b/Resources/Prototypes/_CP14/Entities/Objects/Materials/misc.yml
@@ -1,3 +1,55 @@
+- type: entity
+ parent: BaseItem
+ id: CP14Ash1
+ name: ash #Возможный реагент в будущем
+ description: It used to be something that could be interesting and useful, now it's not.
+ suffix: 1
+ categories: [ ForkFiltered ]
+ components:
+ - type: Item
+ size: Tiny
+ - type: Sprite
+ sprite: _CP14/Objects/Materials/ash.rsi
+ layers:
+ - state: ash_1
+ map: ["base"]
+ - type: SolutionContainerManager
+ solutions:
+ food:
+ maxVol: 50
+ reagents:
+ - ReagentId: Ash
+ Quantity: 10
+ - type: SolutionSpiker
+ sourceSolution: food
+ ignoreEmpty: true
+ - type: ScoopableSolution
+ solution: food
+ - type: Extractable
+ grindableSolutionName: food
+ - type: Appearance
+ - type: Stack
+ stackType: CP14Ash
+ count: 1
+ baseLayer: base
+ layerStates:
+ - ash_1
+ - ash_2
+ - ash_3
+ - type: Material
+ - type: PhysicalComposition
+ materialComposition:
+ CP14Ash: 10
+
+- type: entity
+ id: CP14Ash3
+ parent: CP14Ash1
+ suffix: 3
+ components:
+ - type: Stack
+ count: 3
+
+
- type: entity
parent: BaseItem
id: CP14CrystalShardQuartz
@@ -27,6 +79,9 @@
reagents:
- ReagentId: CP14GroundQuartz
Quantity: 7
+ - type: PhysicalComposition
+ materialComposition:
+ CP14Glass: 10
- type: entity
parent: BaseItem
diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Materials/ores.yml b/Resources/Prototypes/_CP14/Entities/Objects/Materials/ores.yml
index 5f2f1dd631..545ad2e823 100644
--- a/Resources/Prototypes/_CP14/Entities/Objects/Materials/ores.yml
+++ b/Resources/Prototypes/_CP14/Entities/Objects/Materials/ores.yml
@@ -21,8 +21,9 @@
- ore1
- ore2
- ore3
- - type: CP14Material
- materials:
+ - type: Material
+ - type: PhysicalComposition
+ materialComposition:
CP14Copper: 2
- type: entity
@@ -66,8 +67,9 @@
- ore1
- ore2
- ore3
- - type: CP14Material
- materials:
+ - type: Material
+ - type: PhysicalComposition
+ materialComposition:
CP14Iron: 2
- type: entity
@@ -111,8 +113,9 @@
- ore1
- ore2
- ore3
- - type: CP14Material
- materials:
+ - type: Material
+ - type: PhysicalComposition
+ materialComposition:
CP14Gold: 2
- type: entity
@@ -156,8 +159,9 @@
- ore1
- ore2
- ore3
- - type: CP14Material
- materials:
+ - type: Material
+ - type: PhysicalComposition
+ materialComposition:
CP14Mithril: 2
- type: entity
diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Materials/rocks.yml b/Resources/Prototypes/_CP14/Entities/Objects/Materials/rocks.yml
index 9200f11d34..ca76e0a90b 100644
--- a/Resources/Prototypes/_CP14/Entities/Objects/Materials/rocks.yml
+++ b/Resources/Prototypes/_CP14/Entities/Objects/Materials/rocks.yml
@@ -31,9 +31,9 @@
- dirt_2
- dirt_3
- type: Material
- - type: PhysicalComposition # точно ли это нужно?
+ - type: PhysicalComposition
materialComposition:
- CP14Dirt: 100
+ CP14Dirt: 10
- type: CP14MagicEssenceContainer
essences:
Earth: 1
@@ -71,9 +71,9 @@
- stone_2
- stone_3
- type: Material
- - type: PhysicalComposition # точно ли это нужно?
+ - type: PhysicalComposition
materialComposition:
- CP14Stone: 100
+ CP14Stone: 10
- type: CP14MagicEssenceContainer
essences:
Earth: 1
@@ -119,9 +119,9 @@
- stone_2
- stone_3
- type: Material
- - type: PhysicalComposition # точно ли это нужно?
+ - type: PhysicalComposition
materialComposition:
- CP14MarbleStone: 100
+ CP14MarbleStone: 10
- type: entity
id: CP14MarbleBlock10
diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Materials/scrap.yml b/Resources/Prototypes/_CP14/Entities/Objects/Materials/scrap.yml
index 52807bc44c..a9882cda92 100644
--- a/Resources/Prototypes/_CP14/Entities/Objects/Materials/scrap.yml
+++ b/Resources/Prototypes/_CP14/Entities/Objects/Materials/scrap.yml
@@ -24,9 +24,9 @@
layers:
- state: scrap
map: ["random"]
- - type: CP14Material
- materials:
- CP14Copper: 5
+ - type: PhysicalComposition
+ materialComposition:
+ CP14Copper: 10
- type: entity
id: CP14ScrapIron
@@ -39,9 +39,9 @@
layers:
- state: scrap
map: ["random"]
- - type: CP14Material
- materials:
- CP14Iron: 5
+ - type: PhysicalComposition
+ materialComposition:
+ CP14Iron: 10
- type: entity
id: CP14ScrapGold
@@ -54,9 +54,9 @@
layers:
- state: scrap
map: ["random"]
- - type: CP14Material
- materials:
- CP14Gold: 5
+ - type: PhysicalComposition
+ materialComposition:
+ CP14Gold: 10
- type: entity
id: CP14ScrapMithril
@@ -69,6 +69,6 @@
layers:
- state: scrap
map: ["random"]
- - type: CP14Material
- materials:
- CP14Mithril: 5
\ No newline at end of file
+ - type: PhysicalComposition
+ materialComposition:
+ CP14Mithril: 10
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Materials/simple.yml b/Resources/Prototypes/_CP14/Entities/Objects/Materials/simple.yml
index 1fe3c18135..0b96f4bff0 100644
--- a/Resources/Prototypes/_CP14/Entities/Objects/Materials/simple.yml
+++ b/Resources/Prototypes/_CP14/Entities/Objects/Materials/simple.yml
@@ -48,9 +48,9 @@
- cloth_2
- cloth_3
- type: Material
- - type: PhysicalComposition # точно ли это нужно?
+ - type: PhysicalComposition
materialComposition:
- CP14Cloth: 100
+ CP14Cloth: 10
- type: entity
id: CP14Cloth10
@@ -75,6 +75,9 @@
- enum.DamageStateVisualLayers.Base:
shard1: ""
shard2: ""
+ - type: PhysicalComposition
+ materialComposition:
+ CP14Glass: 5
- type: entity
id: CP14Snowball
diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Materials/wood.yml b/Resources/Prototypes/_CP14/Entities/Objects/Materials/wood.yml
index cca8f99cc5..78d6e9cd97 100644
--- a/Resources/Prototypes/_CP14/Entities/Objects/Materials/wood.yml
+++ b/Resources/Prototypes/_CP14/Entities/Objects/Materials/wood.yml
@@ -51,6 +51,9 @@
collection: WoodDestroy
- !type:DoActsBehavior
acts: [ "Destruction" ]
+ - type: PhysicalComposition
+ materialComposition:
+ CP14WoodenPlanks: 30
- type: entity
id: CP14WoodenPlanks1
@@ -90,9 +93,9 @@
- planks_2
- planks_3
- type: Material
- - type: PhysicalComposition # точно ли это нужно?
+ - type: PhysicalComposition
materialComposition:
- CP14WoodenPlanks: 100
+ CP14WoodenPlanks: 10
- type: Damageable
damageContainer: Inorganic
damageModifierSet: Wood
@@ -145,6 +148,9 @@
- type: Log
spawnedPrototype: CP14LucensWoodenPlanks1
spawnCount: 3
+ - type: PhysicalComposition
+ materialComposition:
+ CP14LucensWoodenPlanks: 30
- type: entity
id: CP14LucensWoodenPlanks1
@@ -165,6 +171,9 @@
- planks
- planks_2
- planks_3
+ - type: PhysicalComposition
+ materialComposition:
+ CP14LucensWoodenPlanks: 10
- type: entity
id: CP14LucensWoodenPlanks10
diff --git a/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/axe.yml b/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/axe.yml
index dc8c385b5f..b17934a49e 100644
--- a/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/axe.yml
+++ b/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/axe.yml
@@ -23,8 +23,8 @@
- type: CP14ModularCraftPart
possibleParts:
- BladeIronAxe
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Iron: 10
- type: entity
@@ -40,8 +40,8 @@
- type: CP14ModularCraftPart
possibleParts:
- BladeGoldAxe
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Gold: 10
- type: entity
@@ -57,8 +57,8 @@
- type: CP14ModularCraftPart
possibleParts:
- BladeCopperAxe
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Copper: 10
- type: entity
@@ -74,6 +74,6 @@
- type: CP14ModularCraftPart
possibleParts:
- BladeMithrilAxe
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Mithril: 10
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/dagger.yml b/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/dagger.yml
index 03365659e7..dec194d306 100644
--- a/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/dagger.yml
+++ b/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/dagger.yml
@@ -23,8 +23,8 @@
- type: CP14ModularCraftPart
possibleParts:
- BladeIronDagger
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Iron: 10
- type: entity
@@ -40,8 +40,8 @@
- type: CP14ModularCraftPart
possibleParts:
- BladeGoldDagger
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Gold: 10
- type: entity
@@ -57,8 +57,8 @@
- type: CP14ModularCraftPart
possibleParts:
- BladeCopperDagger
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Copper: 10
- type: entity
@@ -74,6 +74,6 @@
- type: CP14ModularCraftPart
possibleParts:
- BladeMithrilDagger
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Mithril: 10
diff --git a/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/hammer.yml b/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/hammer.yml
index 5d38abff27..52ebe1922e 100644
--- a/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/hammer.yml
+++ b/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/hammer.yml
@@ -23,8 +23,8 @@
- type: CP14ModularCraftPart
possibleParts:
- BladeIronHammer
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Iron: 10
- type: entity
@@ -40,8 +40,8 @@
- type: CP14ModularCraftPart
possibleParts:
- BladeGoldHammer
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Gold: 10
- type: entity
@@ -57,8 +57,8 @@
- type: CP14ModularCraftPart
possibleParts:
- BladeCopperHammer
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Copper: 10
- type: entity
@@ -74,6 +74,6 @@
- type: CP14ModularCraftPart
possibleParts:
- BladeMithrilHammer
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Mithril: 10
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/hoe.yml b/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/hoe.yml
index e8d79aef63..448e07d2b8 100644
--- a/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/hoe.yml
+++ b/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/hoe.yml
@@ -23,8 +23,8 @@
- type: CP14ModularCraftPart
possibleParts:
- BladeIronHoe
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Iron: 10
- type: entity
@@ -40,8 +40,8 @@
- type: CP14ModularCraftPart
possibleParts:
- BladeCopperHoe
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Copper: 10
- type: entity
@@ -57,8 +57,8 @@
- type: CP14ModularCraftPart
possibleParts:
- BladeGoldHoe
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Gold: 10
- type: entity
@@ -74,6 +74,6 @@
- type: CP14ModularCraftPart
possibleParts:
- BladeMithrilHoe
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Mithril: 10
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/mace.yml b/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/mace.yml
index 1c316c8333..7cb2be31d6 100644
--- a/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/mace.yml
+++ b/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/mace.yml
@@ -23,8 +23,8 @@
- type: CP14ModularCraftPart
possibleParts:
- BladeIronMace
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Iron: 10
- type: entity
@@ -40,8 +40,8 @@
- type: CP14ModularCraftPart
possibleParts:
- BladeGoldMace
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Gold: 10
- type: entity
@@ -57,8 +57,8 @@
- type: CP14ModularCraftPart
possibleParts:
- BladeCopperMace
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Copper: 10
- type: entity
@@ -74,6 +74,6 @@
- type: CP14ModularCraftPart
possibleParts:
- BladeMithrilMace
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Mithril: 10
diff --git a/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/pickaxe.yml b/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/pickaxe.yml
index fd2f7dff8b..770ec3ad02 100644
--- a/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/pickaxe.yml
+++ b/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/pickaxe.yml
@@ -23,8 +23,8 @@
- type: CP14ModularCraftPart
possibleParts:
- BladeIronPickaxe
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Iron: 10
- type: entity
@@ -40,8 +40,8 @@
- type: CP14ModularCraftPart
possibleParts:
- BladeGoldPickaxe
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Gold: 10
- type: entity
@@ -57,8 +57,8 @@
- type: CP14ModularCraftPart
possibleParts:
- BladeCopperPickaxe
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Copper: 10
- type: entity
@@ -74,6 +74,6 @@
- type: CP14ModularCraftPart
possibleParts:
- BladeMithrilPickaxe
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Mithril: 10
diff --git a/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/rapier.yml b/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/rapier.yml
index 37a3f616e0..333a96742b 100644
--- a/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/rapier.yml
+++ b/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/rapier.yml
@@ -23,8 +23,8 @@
- type: CP14ModularCraftPart
possibleParts:
- BladeIronRapier
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Iron: 10
- type: entity
@@ -40,8 +40,8 @@
- type: CP14ModularCraftPart
possibleParts:
- BladeGoldRapier
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Gold: 10
- type: entity
@@ -57,8 +57,8 @@
- type: CP14ModularCraftPart
possibleParts:
- BladeCopperRapier
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Copper: 10
- type: entity
@@ -74,6 +74,6 @@
- type: CP14ModularCraftPart
possibleParts:
- BladeMithrilRapier
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Mithril: 10
diff --git a/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/shovel.yml b/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/shovel.yml
index 55c6ee397d..a5912b61c7 100644
--- a/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/shovel.yml
+++ b/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/shovel.yml
@@ -23,8 +23,8 @@
- type: CP14ModularCraftPart
possibleParts:
- BladeIronShovel
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Iron: 10
- type: entity
@@ -40,8 +40,8 @@
- type: CP14ModularCraftPart
possibleParts:
- BladeGoldShovel
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Gold: 10
- type: entity
@@ -57,8 +57,8 @@
- type: CP14ModularCraftPart
possibleParts:
- BladeCopperShovel
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Copper: 10
- type: entity
@@ -74,6 +74,6 @@
- type: CP14ModularCraftPart
possibleParts:
- BladeMithrilShovel
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Mithril: 10
diff --git a/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/sickle.yml b/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/sickle.yml
index 4d0f873886..d5871f9222 100644
--- a/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/sickle.yml
+++ b/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/sickle.yml
@@ -23,8 +23,8 @@
- type: CP14ModularCraftPart
possibleParts:
- BladeIronSickle
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Iron: 10
- type: entity
@@ -40,8 +40,8 @@
- type: CP14ModularCraftPart
possibleParts:
- BladeCopperSickle
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Copper: 10
- type: entity
@@ -57,8 +57,8 @@
- type: CP14ModularCraftPart
possibleParts:
- BladeGoldSickle
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Gold: 10
- type: entity
@@ -74,6 +74,6 @@
- type: CP14ModularCraftPart
possibleParts:
- BladeMithrilSickle
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Mithril: 10
diff --git a/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/skimitar.yml b/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/skimitar.yml
index be991e9a7e..4f92d0ed83 100644
--- a/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/skimitar.yml
+++ b/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/skimitar.yml
@@ -22,8 +22,8 @@
- type: CP14ModularCraftPart
possibleParts:
- BladeIronSkimitar
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Iron: 10
- type: entity
@@ -39,8 +39,8 @@
- type: CP14ModularCraftPart
possibleParts:
- BladeGoldSkimitar
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Gold: 10
- type: entity
@@ -56,8 +56,8 @@
- type: CP14ModularCraftPart
possibleParts:
- BladeCopperSkimitar
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Copper: 10
- type: entity
@@ -73,6 +73,6 @@
- type: CP14ModularCraftPart
possibleParts:
- BladeMithrilSkimitar
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Mithril: 10
diff --git a/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/spear.yml b/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/spear.yml
index a6ff043116..83cb972c44 100644
--- a/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/spear.yml
+++ b/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/spear.yml
@@ -24,8 +24,8 @@
- type: CP14ModularCraftPart
possibleParts:
- BladeIronSpear
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Iron: 10
- type: entity
@@ -42,8 +42,8 @@
- type: CP14ModularCraftPart
possibleParts:
- BladeGoldSpear
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Gold: 10
- type: entity
@@ -60,8 +60,8 @@
- type: CP14ModularCraftPart
possibleParts:
- BladeCopperSpear
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Copper: 10
- type: entity
@@ -78,6 +78,6 @@
- type: CP14ModularCraftPart
possibleParts:
- BladeMithrilSpear
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Mithril: 10
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/sword.yml b/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/sword.yml
index 5f8ca25369..2eb1264efc 100644
--- a/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/sword.yml
+++ b/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/sword.yml
@@ -22,8 +22,8 @@
- type: CP14ModularCraftPart
possibleParts:
- BladeIronSword
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Iron: 10
- type: entity
@@ -39,8 +39,8 @@
- type: CP14ModularCraftPart
possibleParts:
- BladeGoldSword
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Gold: 10
- type: entity
@@ -56,8 +56,8 @@
- type: CP14ModularCraftPart
possibleParts:
- BladeCopperSword
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Copper: 10
- type: entity
@@ -73,8 +73,8 @@
- type: CP14ModularCraftPart
possibleParts:
- BladeMithrilSword
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Mithril: 10
- type: entity
diff --git a/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Garde/guildmaster.yml b/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Garde/guildmaster.yml
index c1b64365be..3fb616d148 100644
--- a/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Garde/guildmaster.yml
+++ b/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Garde/guildmaster.yml
@@ -10,4 +10,7 @@
- state: icon
- type: CP14ModularCraftPart
possibleParts:
- - GardeGuildmaster
\ No newline at end of file
+ - GardeGuildmaster
+ - type: PhysicalComposition
+ materialComposition:
+ CP14Gold: 15
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Garde/sharp.yml b/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Garde/sharp.yml
index 1831d70f92..41ad40f4a0 100644
--- a/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Garde/sharp.yml
+++ b/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Garde/sharp.yml
@@ -11,8 +11,8 @@
- type: CP14ModularCraftPart
possibleParts:
- GardeSharpIron
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Iron: 10
- type: entity
@@ -29,8 +29,8 @@
- type: CP14ModularCraftPart
possibleParts:
- GardeSharpGold
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Gold: 10
- type: entity
@@ -47,8 +47,8 @@
- type: CP14ModularCraftPart
possibleParts:
- GardeSharpCopper
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Copper: 10
- type: entity
@@ -65,6 +65,6 @@
- type: CP14ModularCraftPart
possibleParts:
- GardeSharpMithril
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Mithril: 10
diff --git a/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Garde/sturdy.yml b/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Garde/sturdy.yml
index 387296df6f..9d0d6e258e 100644
--- a/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Garde/sturdy.yml
+++ b/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Garde/sturdy.yml
@@ -11,8 +11,8 @@
- type: CP14ModularCraftPart
possibleParts:
- GardeSturdyIron
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Iron: 10
- type: entity
@@ -29,8 +29,8 @@
- type: CP14ModularCraftPart
possibleParts:
- GardeSturdyGold
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Gold: 10
- type: entity
@@ -47,8 +47,8 @@
- type: CP14ModularCraftPart
possibleParts:
- GardeSturdyCopper
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Copper: 10
- type: entity
@@ -65,6 +65,6 @@
- type: CP14ModularCraftPart
possibleParts:
- GardeSturdyMithril
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Mithril: 10
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Inlay/quartz.yml b/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Inlay/quartz.yml
index 2b5ec803ba..b52988434e 100644
--- a/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Inlay/quartz.yml
+++ b/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Inlay/quartz.yml
@@ -5,6 +5,8 @@
components:
- type: Sprite
sprite: _CP14/Objects/ModularTools/Inlay/quartz.rsi
+ - type: StaticPrice
+ price: 50
- type: entity
parent: CP14ModularInlayQuartzBase
@@ -50,6 +52,8 @@
- type: CP14ModularCraftPart
possibleParts:
- InlayQuartzFire
+ - type: StaticPrice
+ price: 70
- type: entity
parent: CP14ModularInlayQuartzBase
diff --git a/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Tip/arrows.yml b/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Tip/arrows.yml
index 75843571f5..70ac00016b 100644
--- a/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Tip/arrows.yml
+++ b/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Tip/arrows.yml
@@ -21,8 +21,8 @@
- type: CP14ModularCraftPart
possibleParts:
- TipIronArrow
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Iron: 2
- type: entity
@@ -38,8 +38,8 @@
- type: CP14ModularCraftPart
possibleParts:
- TipGoldArrow
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Gold: 2
- type: entity
@@ -55,8 +55,8 @@
- type: CP14ModularCraftPart
possibleParts:
- TipCopperArrow
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Copper: 2
- type: entity
@@ -72,6 +72,6 @@
- type: CP14ModularCraftPart
possibleParts:
- TipMithrilArrow
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Mithril: 2
diff --git a/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/grips.yml b/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/grips.yml
index ecb3255e0b..6c30ce866f 100644
--- a/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/grips.yml
+++ b/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/grips.yml
@@ -105,6 +105,9 @@
- !type:CP14ModularDisassembleBehavior
- !type:DoActsBehavior
acts: ["Destruction"]
+ - type: PhysicalComposition
+ materialComposition:
+ CP14WoodenPlanks: 10
- type: entity
parent: CP14ModularGripShort
@@ -131,6 +134,9 @@
- !type:CP14ModularDisassembleBehavior
- !type:DoActsBehavior
acts: ["Destruction"]
+ - type: PhysicalComposition
+ materialComposition:
+ CP14LucensWoodenPlanks: 10
- type: entity
parent: CP14ModularGripShort
@@ -155,6 +161,9 @@
- !type:CP14ModularDisassembleBehavior
- !type:DoActsBehavior
acts: ["Destruction"]
+ - type: PhysicalComposition
+ materialComposition:
+ CP14Iron: 10
- type: entity
parent: CP14ModularGripShort
@@ -180,6 +189,9 @@
- !type:CP14ModularDisassembleBehavior
- !type:DoActsBehavior
acts: ["Destruction"]
+ - type: PhysicalComposition
+ materialComposition:
+ CP14Gold: 10
- type: entity
parent: CP14ModularGripShort
@@ -205,6 +217,9 @@
- !type:CP14ModularDisassembleBehavior
- !type:DoActsBehavior
acts: ["Destruction"]
+ - type: PhysicalComposition
+ materialComposition:
+ CP14Copper: 10
- type: entity
parent: CP14ModularGripShort
@@ -230,6 +245,9 @@
- !type:CP14ModularDisassembleBehavior
- !type:DoActsBehavior
acts: ["Destruction"]
+ - type: PhysicalComposition
+ materialComposition:
+ CP14Mithril: 10
- type: entity
parent: CP14ModularGripShort
@@ -254,6 +272,10 @@
- !type:CP14ModularDisassembleBehavior
- !type:DoActsBehavior
acts: ["Destruction"]
+ - type: PhysicalComposition
+ materialComposition:
+ CP14Mithril: 10
+ CP14Gold: 10
# Long
- type: entity
@@ -278,6 +300,9 @@
- !type:CP14ModularDisassembleBehavior
- !type:DoActsBehavior
acts: ["Destruction"]
+ - type: PhysicalComposition
+ materialComposition:
+ CP14WoodenPlanks: 20
- type: entity
parent: CP14ModularGripLong
@@ -303,6 +328,9 @@
- !type:CP14ModularDisassembleBehavior
- !type:DoActsBehavior
acts: ["Destruction"]
+ - type: PhysicalComposition
+ materialComposition:
+ CP14LucensWoodenPlanks: 20
- type: entity
parent: CP14ModularGripLong
@@ -326,6 +354,9 @@
- !type:CP14ModularDisassembleBehavior
- !type:DoActsBehavior
acts: ["Destruction"]
+ - type: PhysicalComposition
+ materialComposition:
+ CP14Iron: 20
- type: entity
parent: CP14ModularGripIronLong
@@ -336,6 +367,8 @@
state: icon
- type: CP14ModularCraftStartPoint
startProtoPart: CP14ModularGripIronLongGuard
+ - type: StaticPrice
+ price: 10
- type: entity
parent: CP14ModularGripLong
@@ -361,6 +394,9 @@
- !type:CP14ModularDisassembleBehavior
- !type:DoActsBehavior
acts: ["Destruction"]
+ - type: PhysicalComposition
+ materialComposition:
+ CP14Gold: 20
- type: entity
parent: CP14ModularGripLong
@@ -386,6 +422,9 @@
- !type:CP14ModularDisassembleBehavior
- !type:DoActsBehavior
acts: ["Destruction"]
+ - type: PhysicalComposition
+ materialComposition:
+ CP14Copper: 20
- type: entity
@@ -412,3 +451,6 @@
- !type:CP14ModularDisassembleBehavior
- !type:DoActsBehavior
acts: ["Destruction"]
+ - type: PhysicalComposition
+ materialComposition:
+ CP14Mithril: 20
diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Specific/Alchemy/tools.yml b/Resources/Prototypes/_CP14/Entities/Objects/Specific/Alchemy/tools.yml
index 3c587b8674..8b233a011e 100644
--- a/Resources/Prototypes/_CP14/Entities/Objects/Specific/Alchemy/tools.yml
+++ b/Resources/Prototypes/_CP14/Entities/Objects/Specific/Alchemy/tools.yml
@@ -70,6 +70,9 @@
damage:
types:
Blunt: 5
+ - type: PhysicalComposition
+ materialComposition:
+ CP14Iron: 30
- type: entity
id: CP14Pestle
@@ -91,6 +94,9 @@
guides:
- CP14_RU_Alchemy
- CP14_EN_Alchemy
+ - type: PhysicalComposition
+ materialComposition:
+ CP14Stone: 5
- type: entity
id: CP14Mortar
@@ -169,6 +175,9 @@
guides:
- CP14_RU_Alchemy
- CP14_EN_Alchemy
+ - type: PhysicalComposition
+ materialComposition:
+ CP14Stone: 10
- type: entity
parent: BaseItem
@@ -264,4 +273,8 @@
fillBaseName: syringe
- type: Tag
tags:
- - Syringe
\ No newline at end of file
+ - Syringe
+ - type: PhysicalComposition
+ materialComposition:
+ CP14Glass: 10
+ CP14Iron: 10
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Specific/Alchemy/vials.yml b/Resources/Prototypes/_CP14/Entities/Objects/Specific/Alchemy/vials.yml
index 9d5717940b..40c1023b4b 100644
--- a/Resources/Prototypes/_CP14/Entities/Objects/Specific/Alchemy/vials.yml
+++ b/Resources/Prototypes/_CP14/Entities/Objects/Specific/Alchemy/vials.yml
@@ -147,6 +147,9 @@
fillBaseName: liq-
- type: Injector
maxTransferAmount: 5
+ - type: PhysicalComposition
+ materialComposition:
+ CP14Glass: 10
- type: entity
id: CP14VialTinyReinforced
@@ -178,6 +181,10 @@
fillBaseName: liq-
- type: Injector
maxTransferAmount: 5
+ - type: PhysicalComposition
+ materialComposition:
+ CP14Glass: 10
+ CP14Copper: 10
- type: entity
id: CP14VialSmall
@@ -205,6 +212,9 @@
- type: SolutionContainerVisuals
maxFillLevels: 5
fillBaseName: liq-
+ - type: PhysicalComposition
+ materialComposition:
+ CP14Glass: 20
- type: entity
id: CP14VialSmallReinforced
@@ -234,6 +244,10 @@
- type: SolutionContainerVisuals
maxFillLevels: 5
fillBaseName: liq-
+ - type: PhysicalComposition
+ materialComposition:
+ CP14Glass: 20
+ CP14Copper: 10
- type: entity
id: CP14VialMedium
@@ -262,7 +276,10 @@
maxVol: 50
- type: SolutionContainerVisuals
maxFillLevels: 5
- fillBaseName: liq-
+ fillBaseName: liq-
+ - type: PhysicalComposition
+ materialComposition:
+ CP14Glass: 40
- type: entity
id: CP14VialMediumReinforced
@@ -294,4 +311,8 @@
maxFillLevels: 5
fillBaseName: liq-
- type: Injector
- transferAmount: 10
\ No newline at end of file
+ transferAmount: 10
+ - type: PhysicalComposition
+ materialComposition:
+ CP14Glass: 40
+ CP14Copper: 10
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Ranged/Ammunition/crossbowBolts.yml b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Ranged/Ammunition/crossbowBolts.yml
index 991923ad30..c36d4ea830 100644
--- a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Ranged/Ammunition/crossbowBolts.yml
+++ b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Ranged/Ammunition/crossbowBolts.yml
@@ -31,8 +31,8 @@
- state: solution1
map: ["enum.SolutionContainerLayers.Fill"]
visible: false
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Iron: 3
- type: entity
@@ -55,8 +55,8 @@
- state: solution1
map: ["enum.SolutionContainerLayers.Fill"]
visible: false
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Gold: 3
- type: entity
@@ -79,8 +79,8 @@
- state: solution1
map: ["enum.SolutionContainerLayers.Fill"]
visible: false
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Copper: 3
- type: entity
@@ -103,6 +103,6 @@
- state: solution1
map: ["enum.SolutionContainerLayers.Fill"]
visible: false
- - type: CP14Material
- materials:
+ - type: PhysicalComposition
+ materialComposition:
CP14Mithril: 3
diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Ranged/lightCrossbow.yml b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Ranged/lightCrossbow.yml
index b3c6a36184..ee65583eb4 100644
--- a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Ranged/lightCrossbow.yml
+++ b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Ranged/lightCrossbow.yml
@@ -52,6 +52,4 @@
unwielded-arrow:
whitelist:
tags:
- - CP14CrossbowBolt
- - type: CP14Currency
- currency: 2500
\ No newline at end of file
+ - CP14CrossbowBolt
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Entities/Stations/base.yml b/Resources/Prototypes/_CP14/Entities/Stations/base.yml
index 15e7d2749c..f3ed2fed25 100644
--- a/Resources/Prototypes/_CP14/Entities/Stations/base.yml
+++ b/Resources/Prototypes/_CP14/Entities/Stations/base.yml
@@ -9,6 +9,7 @@
- BaseStationRecords # Required for lobby manifest + cryo leave
- CP14BaseStationCommonObjectives
- CP14BaseStationDemiplaneMap
+ - CP14BaseStationEconomy
- type: entity
id: CP14BaseStationCommonObjectives
@@ -28,3 +29,9 @@
abstract: true
components:
- type: CP14StationDemiplaneMap
+
+- type: entity
+ id: CP14BaseStationEconomy
+ abstract: true
+ components:
+ - type: CP14StationEconomy
diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Specific/Blacksmith/sharpening_stone.yml b/Resources/Prototypes/_CP14/Entities/Structures/Specific/Blacksmith/sharpening_stone.yml
index 696e9467ed..02a500c03b 100644
--- a/Resources/Prototypes/_CP14/Entities/Structures/Specific/Blacksmith/sharpening_stone.yml
+++ b/Resources/Prototypes/_CP14/Entities/Structures/Specific/Blacksmith/sharpening_stone.yml
@@ -18,7 +18,8 @@
fix1:
shape:
!type:PhysShapeAabb
- bounds: "-0.08,-0.35,0.15,0.25"
+ bounds: "-0.45,-0.45,0.45,0.45"
+ density: 55
mask:
- TabletopMachineMask
layer:
@@ -26,6 +27,15 @@
- MidImpassable
- LowImpassable
hard: false
+ fix2:
+ shape:
+ !type:PhysShapeAabb
+ bounds: "-0.45,-0.45,0.45,0.45"
+ density: 55
+ mask:
+ - TableMask
+ layer:
+ - TableLayer
- type: Damageable
damageContainer: Inorganic
- type: Destructible
diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Specific/Economy/trade_board.yml b/Resources/Prototypes/_CP14/Entities/Structures/Specific/Economy/trade_board.yml
deleted file mode 100644
index 9b4987cbe6..0000000000
--- a/Resources/Prototypes/_CP14/Entities/Structures/Specific/Economy/trade_board.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-- type: entity
- parent: BaseStructure
- id: CP14TradingBoardBase
- name: trading information board
- description: Allows you to track what is selling and buying right now.
- categories: [ ForkFiltered ]
- components:
- - type: Sprite
- snapCardinals: true
- sprite: _CP14/Structures/Furniture/workbench.rsi
- state: filler
- - type: Icon
- sprite: _CP14/Structures/Furniture/workbench.rsi
- state: filler
- - type: ActivatableUI
- key: enum.CP14StoreUiKey.Key
- - type: Clickable
- - type: InteractionOutline
- - type: CP14TradingInfoBoard
- - type: UserInterface
- interfaces:
- enum.CP14StoreUiKey.Key:
- type: CP14StoreBoundUserInterface
- - type: GuideHelp
- guides:
- - CP14_RU_Trading
- - CP14_EN_Trading
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Specific/Economy/trade_platform.yml b/Resources/Prototypes/_CP14/Entities/Structures/Specific/Economy/trade_platform.yml
new file mode 100644
index 0000000000..1b4d6ba628
--- /dev/null
+++ b/Resources/Prototypes/_CP14/Entities/Structures/Specific/Economy/trade_platform.yml
@@ -0,0 +1,121 @@
+- type: entity
+ parent: BaseStructure
+ id: CP14TradingPlatform
+ name: buying dimensional platform
+ description: Allows you to trade with the outside world, through retail trade transactions.
+ categories: [ ForkFiltered ]
+ components:
+ - type: Sprite
+ snapCardinals: true
+ sprite: _CP14/Structures/Specific/Economy/buy_platform.rsi
+ layers:
+ - state: base
+ - state: buy
+ - type: Icon
+ sprite: _CP14/Structures/Specific/Economy/buy_platform.rsi
+ state: base
+ - type: ActivatableUI
+ singleUser: true
+ key: enum.CP14TradingUiKey.Key
+ - type: Clickable
+ - type: InteractionOutline
+ - type: CP14TradingPlatform
+ - type: UserInterface
+ interfaces:
+ enum.CP14TradingUiKey.Key:
+ type: CP14TradingPlatformBoundUserInterface
+ - type: PlaceableSurface
+ - type: ItemPlacer
+ maxEntities: 0
+ whitelist:
+ tags:
+ - CP14Coin
+ - type: Fixtures
+ fixtures:
+ fix1:
+ shape:
+ !type:PhysShapeAabb
+ bounds: "-0.4,-0.4,0.4,0.4"
+ mask:
+ - TabletopMachineMask
+ layer:
+ - Impassable
+ - MidImpassable
+ - LowImpassable
+ hard: false
+ #- type: GuideHelp
+ # guides:
+ # - CP14_RU_Trading
+ # - CP14_EN_Trading
+
+- type: entity
+ parent: BaseStructure
+ id: CP14TradingSellingPlatform
+ name: selling dimensional platform
+ description: Allows you to sell any items and structures to the outside world. Fill the platform completely with mana to sell whatever you place on it.
+ categories: [ ForkFiltered ]
+ components:
+ - type: Sprite
+ snapCardinals: true
+ sprite: _CP14/Structures/Specific/Economy/buy_platform.rsi
+ layers:
+ - state: base
+ - state: sell
+ - type: Icon
+ sprite: _CP14/Structures/Specific/Economy/buy_platform.rsi
+ state: base
+ - type: Clickable
+ - type: InteractionOutline
+ - type: CP14SellingPlatform
+ - type: PlaceableSurface
+ - type: ItemPlacer
+ maxEntities: 0
+ - type: Fixtures
+ fixtures:
+ fix1:
+ shape:
+ !type:PhysShapeAabb
+ bounds: "-0.4,-0.4,0.4,0.4"
+ mask:
+ - TabletopMachineMask
+ layer:
+ - Impassable
+ - MidImpassable
+ - LowImpassable
+ hard: false
+ - type: CP14MagicEnergyContainer
+ maxEnergy: 30
+ energy: 0
+ unsafeSupport: true
+ - type: CP14MagicEnergyDraw
+ energy: -1
+ delay: 3 # 5m to full restore
+ - type: CP14MagicUnsafeDamage
+ - type: CP14MagicEnergyExaminable
+
+- type: entity
+ id: CP14CashImpact
+ categories: [ HideSpawnMenu ]
+ save: false
+ components:
+ - type: Sprite
+ snapCardinals: true
+ sprite: _CP14/Structures/Specific/Economy/buy_platform.rsi
+ layers:
+ - state: impact
+ shader: unshaded
+ color: "#8f42ff"
+ drawdepth: Effects
+ - type: TimedDespawn
+ lifetime: 2
+ - type: Tag
+ tags:
+ - HideContextMenu
+ - type: PointLight
+ color: "#8f42ff"
+ enabled: true
+ radius: 8
+ energy: 8
+ netsync: false
+ - type: LightFade
+ duration: 2
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Specific/Economy/trade_portal.yml b/Resources/Prototypes/_CP14/Entities/Structures/Specific/Economy/trade_portal.yml
deleted file mode 100644
index d55464dd2a..0000000000
--- a/Resources/Prototypes/_CP14/Entities/Structures/Specific/Economy/trade_portal.yml
+++ /dev/null
@@ -1,120 +0,0 @@
-- type: entity
- parent: BaseStructure
- id: CP14TradingPortalBase
- abstract: true
- name: trade cabinet
- description: A dimensional closet connected to a similar closet elsewhere. Not capable of moving living creatures, but great for trading at a distance.
- categories: [ ForkFiltered ]
- components:
- - type: Icon
- sprite: _CP14/Structures/Specific/Economy/trade_portal.rsi
- state: base
- - type: Sprite
- drawdepth: Mobs
- sprite: _CP14/Structures/Specific/Economy/trade_portal.rsi
- - type: Clickable
- - type: InteractionOutline
- - type: CP14TradingPortal
- - type: Fixtures
- fixtures:
- fix1:
- shape:
- !type:PhysShapeAabb
- bounds: "-0.4,-0.4,0.4,0.29"
- density: 50
- mask:
- - SmallMobMask #this is so they can go under plastic flaps
- layer:
- - MachineLayer
- - type: ResistLocker
- - type: Appearance
- - type: ContainerContainer
- containers:
- entity_storage: !type:Container
- - type: EntityStorage
- open: true
- isCollidableWhenOpen: true
- closeSound:
- path: /Audio/Effects/woodenclosetclose.ogg
- openSound:
- path: /Audio/Effects/woodenclosetopen.ogg
- enteringOffset: 0, -0.4
- enteringRange: 0.20
- - type: PlaceableSurface
- isPlaceable: false # defaults to closed.
- - type: EntityStorageVisuals
- stateBaseClosed: base
- stateDoorOpen: base_open
- stateDoorClosed: base_door
- - type: GuideHelp
- guides:
- - CP14_RU_Trading
- - CP14_EN_Trading
-
-- type: entity
- parent: CP14TradingPortalBase
- id: CP14TradingPortalSylphoria
- suffix: Sylphoria
- components:
- - type: Sprite
- layers:
- - state: base
- map: ["enum.StorageVisualLayers.Base"]
- - state: base_door
- map: ["enum.StorageVisualLayers.Door"]
- shader: unshaded
- - state: flag_sylphoria
- - type: CP14TradingPortal
- faction: Sylphoria
- specialSellPositionCount: 5
-
-- type: entity
- parent: CP14TradingPortalBase
- id: CP14TradingPortalHelmirWeapon
- suffix: HelmirWeapon
- components:
- - type: Sprite
- layers:
- - state: base
- map: ["enum.StorageVisualLayers.Base"]
- - state: base_door
- map: ["enum.StorageVisualLayers.Door"]
- shader: unshaded
- - state: flag_helmir
- - type: CP14TradingPortal
- faction: HelmirWeapon
- specialSellPositionCount: 5
-
-- type: entity
- parent: CP14TradingPortalBase
- id: CP14TradingPortalBradFamily
- suffix: BradFamily
- components:
- - type: Sprite
- layers:
- - state: base
- map: ["enum.StorageVisualLayers.Base"]
- - state: base_door
- map: ["enum.StorageVisualLayers.Door"]
- shader: unshaded
- - state: flag_bard
- - type: CP14TradingPortal
- faction: BradFamily
- specialSellPositionCount: 5
-
-- type: entity
- parent: CP14TradingPortalBase
- id: CP14TradingPortalSpiceStream
- suffix: SpiceStream
- components:
- - type: Sprite
- layers:
- - state: base
- map: ["enum.StorageVisualLayers.Base"]
- - state: base_door
- map: ["enum.StorageVisualLayers.Door"]
- shader: unshaded
- - state: flag_spice
- - type: CP14TradingPortal
- faction: SpiceStream
- specialSellPositionCount: 5
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Guidebook/Eng/jobs.yml b/Resources/Prototypes/_CP14/Guidebook/Eng/jobs.yml
index 45399c76c8..e127868ddf 100644
--- a/Resources/Prototypes/_CP14/Guidebook/Eng/jobs.yml
+++ b/Resources/Prototypes/_CP14/Guidebook/Eng/jobs.yml
@@ -6,7 +6,6 @@
children:
- CP14_EN_JobAdventurer
- CP14_EN_JobAlchemist
- - CP14_EN_JobMerchant
filterEnabled: True
@@ -27,13 +26,4 @@
text: "/ServerInfo/_CP14/Guidebook_EN/JobsTabs/Alchemist.xml"
children:
- CP14_EN_Alchemy
- filterEnabled: True
-
-- type: guideEntry
- crystallPunkAllowed: true
- id: CP14_EN_JobMerchant
- name: Merchant
- text: "/ServerInfo/_CP14/Guidebook_EN/JobsTabs/Merchant.xml"
- children:
- - CP14_EN_Trading
filterEnabled: True
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Guidebook/Eng/misc.yml b/Resources/Prototypes/_CP14/Guidebook/Eng/misc.yml
index cc5fa9a96d..633ebc1905 100644
--- a/Resources/Prototypes/_CP14/Guidebook/Eng/misc.yml
+++ b/Resources/Prototypes/_CP14/Guidebook/Eng/misc.yml
@@ -14,9 +14,11 @@
- type: guideEntry
crystallPunkAllowed: true
- id: CP14_EN_Trading
- name: External trade
- text: "/ServerInfo/_CP14/Guidebook_EN/JobsTabs/MerchantTabs/Trading.xml"
+ id: CP14_EN_Locks_and_Keys
+ name: Locks and Keys
+ text: "/ServerInfo/_CP14/Guidebook_EN/LocksKeys.xml"
+ children:
+ - CP14_EN_Lockpicking
filterEnabled: True
- type: guideEntry
@@ -24,13 +26,4 @@
id: CP14_EN_Lockpicking
name: Lockpicking
text: "/ServerInfo/_CP14/Guidebook_EN/Lockpicking.xml"
- filterEnabled: True
-
-- type: guideEntry
- crystallPunkAllowed: true
- id: CP14_EN_Locks_and_Keys
- name: Locks and Keys
- text: "/ServerInfo/_CP14/Guidebook_EN/LocksKeys.xml"
- children:
- - CP14_EN_Lockpicking
- filterEnabled: True
+ filterEnabled: True
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Guidebook/Ru/jobs.yml b/Resources/Prototypes/_CP14/Guidebook/Ru/jobs.yml
index d517b0d45b..2443b0be69 100644
--- a/Resources/Prototypes/_CP14/Guidebook/Ru/jobs.yml
+++ b/Resources/Prototypes/_CP14/Guidebook/Ru/jobs.yml
@@ -6,7 +6,6 @@
children:
- CP14_RU_JobAdventurer
- CP14_RU_JobAlchemist
- - CP14_RU_JobMerchant
filterEnabled: True
@@ -27,13 +26,4 @@
text: "/ServerInfo/_CP14/Guidebook_RU/JobsTabs/Alchemist.xml"
children:
- CP14_RU_Alchemy
- filterEnabled: True
-
-- type: guideEntry
- crystallPunkAllowed: true
- id: CP14_RU_JobMerchant
- name: Торговец
- text: "/ServerInfo/_CP14/Guidebook_RU/JobsTabs/Merchant.xml"
- children:
- - CP14_RU_Trading
filterEnabled: True
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Guidebook/Ru/misc.yml b/Resources/Prototypes/_CP14/Guidebook/Ru/misc.yml
index 5d04c625da..95c3f9a7a4 100644
--- a/Resources/Prototypes/_CP14/Guidebook/Ru/misc.yml
+++ b/Resources/Prototypes/_CP14/Guidebook/Ru/misc.yml
@@ -14,9 +14,11 @@
- type: guideEntry
crystallPunkAllowed: true
- id: CP14_RU_Trading
- name: Внешняя торговля
- text: "/ServerInfo/_CP14/Guidebook_RU/JobsTabs/MerchantTabs/Trading.xml"
+ id: CP14_RU_Locks_and_Keys
+ name: Замки и ключи
+ text: "/ServerInfo/_CP14/Guidebook_RU/LocksKeys.xml"
+ children:
+ - CP14_RU_Lockpicking
filterEnabled: True
- type: guideEntry
@@ -24,13 +26,4 @@
id: CP14_RU_Lockpicking
name: Взлом замков
text: "/ServerInfo/_CP14/Guidebook_RU/Lockpicking.xml"
- filterEnabled: True
-
-- type: guideEntry
- crystallPunkAllowed: true
- id: CP14_RU_Locks_and_Keys
- name: Замки и ключи
- text: "/ServerInfo/_CP14/Guidebook_RU/LocksKeys.xml"
- children:
- - CP14_RU_Lockpicking
- filterEnabled: True
+ filterEnabled: True
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Materials/simple.yml b/Resources/Prototypes/_CP14/Materials/simple.yml
index b50a476edb..4969c4f1ec 100644
--- a/Resources/Prototypes/_CP14/Materials/simple.yml
+++ b/Resources/Prototypes/_CP14/Materials/simple.yml
@@ -5,7 +5,16 @@
unit: materials-unit-plank
icon: { sprite: _CP14/Objects/Materials/wood.rsi, state: planks_2 }
color: "#874d3a"
- price: 0
+ price: 0.1
+
+- type: material
+ id: CP14LucensWoodenPlanks
+ stackEntity: CP14LucensWoodenPlanks1
+ name: cp14-material-lucens-planks
+ unit: materials-unit-bar
+ icon: { sprite: _CP14/Objects/Materials/wood_lucens.rsi, state: planks_2 }
+ color: "#1a1e22"
+ price: 1
- type: material
id: CP14Dirt
@@ -23,7 +32,15 @@
unit: materials-unit-chunk
icon: { sprite: _CP14/Objects/Materials/stone_block.rsi, state: stone_2 }
color: "#555963"
- price: 0
+ price: 0.02
+
+- type: material
+ id: CP14Glass
+ stackEntity: CP14GlassSheet1
+ name: materials-glass
+ icon: { sprite: _CP14/Objects/Materials/glass.rsi, state: glass_2 }
+ color: "#555963"
+ price: 0.15
- type: material
id: CP14MarbleStone
@@ -32,7 +49,7 @@
unit: materials-unit-chunk
icon: { sprite: _CP14/Objects/Materials/marble_block.rsi, state: stone_2 }
color: "#555963"
- price: 0
+ price: 0.15
- type: material
id: CP14Cloth
@@ -41,7 +58,7 @@
unit: materials-unit-roll
icon: { sprite: _CP14/Objects/Materials/cloth.rsi, state: cloth_3 }
color: "#d8e3e2"
- price: 0
+ price: 0.3
- type: material
id: CP14Copper
@@ -50,7 +67,7 @@
unit: materials-unit-bar
icon: { sprite: _CP14/Objects/Materials/copper_scrap.rsi, state: scrap }
color: "#9a5e22"
- price: 0
+ price: 1
- type: material
id: CP14Iron
@@ -59,7 +76,7 @@
unit: materials-unit-bar
icon: { sprite: _CP14/Objects/Materials/iron_scrap.rsi, state: scrap_2 }
color: "#9093a1"
- price: 0
+ price: 2
- type: material
id: CP14Gold
@@ -68,7 +85,7 @@
unit: materials-unit-bar
icon: { sprite: _CP14/Objects/Materials/gold_scrap.rsi, state: scrap_3 }
color: "#FFD700"
- price: 0
+ price: 5
- type: material
id: CP14Mithril
@@ -77,16 +94,7 @@
unit: materials-unit-bar
icon: { sprite: _CP14/Objects/Materials/mithril_scrap.rsi, state: scrap }
color: "#006c83"
- price: 0
-
-- type: material
- id: CP14LucensWoodenPlanks
- stackEntity: CP14LucensWoodenPlanks1
- name: cp14-material-lucens-planks
- unit: materials-unit-bar
- icon: { sprite: _CP14/Objects/Materials/wood_lucens.rsi, state: planks_2 }
- color: "#1a1e22"
- price: 0
+ price: 5
- type: material
id: CP14FloraMaterial
@@ -95,7 +103,7 @@
unit: materials-unit-bunch
icon: { sprite: _CP14/Objects/Materials/flora.rsi, state: grass_material1 }
color: "#85903e"
- price: 0
+ price: 0.01
- type: material
id: CP14Ash
diff --git a/Resources/Prototypes/_CP14/Objectives/empire_orders.yml b/Resources/Prototypes/_CP14/Objectives/empire_orders.yml
index debc0c0d88..a8f7fdf658 100644
--- a/Resources/Prototypes/_CP14/Objectives/empire_orders.yml
+++ b/Resources/Prototypes/_CP14/Objectives/empire_orders.yml
@@ -5,52 +5,4 @@
components:
- type: Objective
issuer: cp14-objective-issuer-town
- difficulty: 1
-
-
-# Send group
-- type: entity
- abstract: true
- parent: CP14BaseTownObjective
- id: CP14BaseTownSendObjective
- components:
- - type: CP14TownSendCondition
- minCollectionSize: 5
- maxCollectionSize: 10
- objectiveText: cp14-objective-town-send-title
- objectiveDescription: cp14-objective-town-send-desc
- - type: Objective
-
-- type: entity
- parent: CP14BaseTownSendObjective
- id: CP14TownSendDinoObjective
- components:
- - type: CP14TownSendCondition
- collectGroup: CP14Dino
- minCollectionSize: 10
- maxCollectionSize: 20
-
-- type: entity
- parent: CP14BaseTownSendObjective
- id: CP14TownSendMoleObjective
- components:
- - type: CP14TownSendCondition
- collectGroup: CP14Mole
- minCollectionSize: 10
- maxCollectionSize: 20
-
-- type: entity
- parent: CP14BaseTownSendObjective
- id: CP14TownSendBoarObjective
- components:
- - type: CP14TownSendCondition
- collectGroup: CP14Boar
- minCollectionSize: 15
- maxCollectionSize: 20
-
-- type: weightedRandom
- id: CP14TownSendObjectiveGroup
- weights:
- CP14TownSendDinoObjective: 1
- CP14TownSendMoleObjective: 1
- CP14TownSendBoarObjective: 1
\ No newline at end of file
+ difficulty: 1
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Reagents/Consumable/Drink/alcohol.yml b/Resources/Prototypes/_CP14/Reagents/Consumable/Drink/alcohol.yml
index b3aa5bb00d..fc84cc841d 100644
--- a/Resources/Prototypes/_CP14/Reagents/Consumable/Drink/alcohol.yml
+++ b/Resources/Prototypes/_CP14/Reagents/Consumable/Drink/alcohol.yml
@@ -56,6 +56,7 @@
- !type:Drunk
boozePower: 2
fizziness: 0.8
+ pricePerUnit: 2
- type: reagent
id: CP14Beer
@@ -74,6 +75,7 @@
- !type:Emote
emote: Laugh
probability: 0.05
+ pricePerUnit: 1
- type: reagent
id: CP14BeerGerbil
@@ -91,6 +93,7 @@
- !type:AdjustReagent
reagent: CP14Beer
amount: 0.2
+ pricePerUnit: 1.33
- type: reagent
id: CP14BeerBreeze
@@ -108,6 +111,7 @@
- !type:AdjustReagent
reagent: CP14Beer
amount: 0.2
+ pricePerUnit: 0.44
- type: reagent
id: CP14BeerBlowLaw
@@ -125,6 +129,7 @@
- !type:AdjustReagent
reagent: CP14Beer
amount: 0.3
+ pricePerUnit: 1.67
- type: reagent
id: CP14Wine
@@ -140,6 +145,7 @@
effects:
- !type:ModifyBloodLevel
amount: 0.4
+ pricePerUnit: 1.98
- type: reagent
id: CP14WineZellasianPleasure
@@ -158,6 +164,7 @@
- !type:AdjustReagent
reagent: CP14Wine
amount: 0.3
+ pricePerUnit: 1.12
- type: reagent
id: CP14WineLeeks
@@ -175,6 +182,7 @@
- !type:AdjustReagent
reagent: CP14Wine
amount: 0.2
+ pricePerUnit: 1
- type: reagent
id: CP14WineDurandate
@@ -193,6 +201,7 @@
- !type:AdjustReagent
reagent: CP14Wine
amount: 0.1
+ pricePerUnit: 1
- type: reagent
id: CP14Ale
@@ -211,6 +220,7 @@
- !type:Emote
emote: Laugh
probability: 0.05
+ pricePerUnit: 0.5
- type: reagent
id: CP14AleBloodyTear
@@ -228,6 +238,7 @@
- !type:AdjustReagent
reagent: CP14Ale
amount: 0.2
+ pricePerUnit: 1
- type: reagent
id: CP14AleBottomless
@@ -246,3 +257,4 @@
- !type:AdjustReagent
reagent: CP14Ale
amount: 0.2
+ pricePerUnit: 2
diff --git a/Resources/Prototypes/_CP14/Reagents/magic_essence.yml b/Resources/Prototypes/_CP14/Reagents/magic_essence.yml
index 3b414b59e8..bca8c91bb6 100644
--- a/Resources/Prototypes/_CP14/Reagents/magic_essence.yml
+++ b/Resources/Prototypes/_CP14/Reagents/magic_essence.yml
@@ -9,6 +9,7 @@
effects:
- !type:ChemVomit
probability: 0.25
+ pricePerUnit: 0.05
# Basic 6
@@ -82,6 +83,12 @@
- type: reagent
parent: CP14EssenceBase
+ id: CP14EssenceBaseT1
+ abstract: true
+ pricePerUnit: 0.1
+
+- type: reagent
+ parent: CP14EssenceBaseT1
id: CP14EssenceFrost
name: cp14-reagent-name-essence-frost
desc: cp14-reagent-desc-essence-frost
@@ -92,7 +99,7 @@
entity: CP14EssenceFrost
- type: reagent
- parent: CP14EssenceBase
+ parent: CP14EssenceBaseT1
id: CP14EssenceLight
name: cp14-reagent-name-essence-light
desc: cp14-reagent-desc-essence-light
@@ -103,7 +110,7 @@
entity: CP14EssenceLight
- type: reagent
- parent: CP14EssenceBase
+ parent: CP14EssenceBaseT1
id: CP14EssenceMotion
name: cp14-reagent-name-essence-motion
desc: cp14-reagent-desc-essence-motion
@@ -114,7 +121,7 @@
entity: CP14EssenceMotion
- type: reagent
- parent: CP14EssenceBase
+ parent: CP14EssenceBaseT1
id: CP14EssenceCycle
name: cp14-reagent-name-essence-cycle
desc: cp14-reagent-desc-essence-cycle
@@ -125,7 +132,7 @@
entity: CP14EssenceCycle
- type: reagent
- parent: CP14EssenceBase
+ parent: CP14EssenceBaseT1
id: CP14EssenceEnergia
name: cp14-reagent-name-essence-energia
desc: cp14-reagent-desc-essence-energia
@@ -136,7 +143,7 @@
entity: CP14EssenceEnergia
- type: reagent
- parent: CP14EssenceBase
+ parent: CP14EssenceBaseT1
id: CP14EssenceVoid
name: cp14-reagent-name-essence-void
desc: cp14-reagent-desc-essence-void
@@ -147,7 +154,7 @@
entity: CP14EssenceVoid
- type: reagent
- parent: CP14EssenceBase
+ parent: CP14EssenceBaseT1
id: CP14EssencePoison
name: cp14-reagent-name-essence-poison
desc: cp14-reagent-desc-essence-poison
@@ -158,7 +165,7 @@
entity: CP14EssencePoison
- type: reagent
- parent: CP14EssenceBase
+ parent: CP14EssenceBaseT1
id: CP14EssenceLife
name: cp14-reagent-name-essence-life
desc: cp14-reagent-desc-essence-life
@@ -169,7 +176,7 @@
entity: CP14EssenceLife
- type: reagent
- parent: CP14EssenceBase
+ parent: CP14EssenceBaseT1
id: CP14EssenceCrystal
name: cp14-reagent-name-essence-crystal
desc: cp14-reagent-desc-essence-crystal
@@ -183,6 +190,12 @@
- type: reagent
parent: CP14EssenceBase
+ id: CP14EssenceBaseT2
+ abstract: true
+ pricePerUnit: 0.2
+
+- type: reagent
+ parent: CP14EssenceBaseT2
id: CP14EssenceMagic
name: cp14-reagent-name-essence-magic
desc: cp14-reagent-desc-essence-magic
diff --git a/Resources/Prototypes/_CP14/Reagents/precurser.yml b/Resources/Prototypes/_CP14/Reagents/precurser.yml
index 69632e2192..72869c0ffc 100644
--- a/Resources/Prototypes/_CP14/Reagents/precurser.yml
+++ b/Resources/Prototypes/_CP14/Reagents/precurser.yml
@@ -14,6 +14,7 @@
collection: FootstepBlood
params:
volume: 6
+ pricePerUnit: 0.1
- type: reagent
id: CP14YellowDayflinPulp
@@ -23,6 +24,7 @@
flavor: CP14Sweetly
color: "#ffe269"
physicalDesc: cp14-reagent-physical-desc-pureed
+ pricePerUnit: 0.1
- type: reagent
id: CP14AirLily
@@ -49,6 +51,7 @@
showInChat: false
emote: Cough
probability: 0.3
+ pricePerUnit: 0.2
- type: reagent
id: CP14WildSageSap
@@ -71,6 +74,7 @@
type: Add
time: 3
refresh: false
+ pricePerUnit: 0.15
# Fungus based
@@ -99,6 +103,7 @@
type: Add
time: 6
refresh: false
+ pricePerUnit: 0.2
- type: reagent
id: CP14LumiMushroom
@@ -125,6 +130,7 @@
type: Add
time: 6
refresh: false
+ pricePerUnit: 0.2
- type: reagent
id: CP14BlueAmanita
@@ -149,6 +155,7 @@
damage:
types:
Poison: 0.1
+ pricePerUnit: 0.2
# Slime based
@@ -168,6 +175,7 @@
- !type:SatiateThirst
- !type:ChemVomit
probability: 0.05
+ pricePerUnit: 0.7
# Inorganic
@@ -208,4 +216,5 @@
key: ForcedSleep
component: ForcedSleeping
refresh: false
- type: Add
\ No newline at end of file
+ type: Add
+ pricePerUnit: 1.2
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Reagents/target_effects.yml b/Resources/Prototypes/_CP14/Reagents/target_effects.yml
index 43b07bffff..0ea8e6ca00 100644
--- a/Resources/Prototypes/_CP14/Reagents/target_effects.yml
+++ b/Resources/Prototypes/_CP14/Reagents/target_effects.yml
@@ -29,6 +29,7 @@
damage:
groups:
Brute: -6
+ pricePerUnit: 2
- type: reagent
id: CP14BasicEffectDamageBrute
@@ -47,6 +48,7 @@
damage:
groups:
Brute: 3
+ pricePerUnit: 2
- type: reagent
id: CP14BasicEffectHealHeat
@@ -65,6 +67,7 @@
damage:
types:
Heat: -10
+ pricePerUnit: 2
- type: reagent
id: CP14BasicEffectDamageHeat
@@ -87,6 +90,7 @@
- !type:AdjustTemperature
amount: 2000
- !type:Ignite
+ pricePerUnit: 2
- type: reagent
id: CP14BasicEffectHealCold
@@ -105,6 +109,7 @@
damage:
types:
Cold: -10
+ pricePerUnit: 2
- type: reagent
id: CP14BasicEffectDamageCold
@@ -123,6 +128,7 @@
damage:
types:
Cold: 3
+ pricePerUnit: 2
- type: reagent
id: CP14BasicEffectHealPoison
@@ -141,6 +147,7 @@
damage:
types:
Poison: -10
+ pricePerUnit: 2
- type: reagent
id: CP14BasicEffectDamagePoison
@@ -159,6 +166,7 @@
damage:
types:
Poison: 3
+ pricePerUnit: 2
- type: reagent
id: CP14BasicEffectHealAirloss
@@ -177,6 +185,7 @@
damage:
types:
Asphyxiation: -10
+ pricePerUnit: 3
- type: reagent
id: CP14BasicEffectDamageAirloss
@@ -195,6 +204,7 @@
damage:
types:
Asphyxiation: 3
+ pricePerUnit: 3
- type: reagent
id: CP14BasicEffectHealManaDepletion
@@ -213,6 +223,7 @@
damage:
types:
CP14ManaDepletion: -10
+ pricePerUnit: 2
- type: reagent
id: CP14BasicEffectDamageManaDepletion
@@ -231,6 +242,7 @@
damage:
types:
CP14ManaDepletion: 3
+ pricePerUnit: 2
- type: reagent
id: CP14BasicEffectBloodRestore
@@ -247,6 +259,7 @@
effects:
- !type:ModifyBloodLevel
amount: 20
+ pricePerUnit: 2
- type: reagent
id: CP14BasicEffectBloodAbsorption
@@ -263,6 +276,7 @@
effects:
- !type:ModifyBloodLevel
amount: -10
+ pricePerUnit: 2
- type: reagent
id: CP14BasicEffectSatiateHunger
@@ -282,6 +296,7 @@
- !type:OrganType
type: CP14Vampire
shouldHave: false
+ pricePerUnit: 1
- type: reagent
id: CP14BasicEffectSatiateThirst
@@ -297,6 +312,7 @@
effects:
- !type:SatiateThirst
factor: 15
+ pricePerUnit: 1
- type: reagent
id: CP14BasicEffectHealMana
@@ -313,6 +329,7 @@
- !type:CP14ManaChange
manaDelta: 1.5
safe: true
+ pricePerUnit: 3
- type: reagent
id: CP14BasicEffectDamageMana
@@ -329,6 +346,7 @@
- !type:CP14ManaChange
manaDelta: -1.5
safe: false
+ pricePerUnit: 3
- type: reagent
id: CP14BasicEffectSpeedUp
@@ -349,6 +367,7 @@
- !type:GenericStatusEffect
key: Stutter
component: StutteringAccent
+ pricePerUnit: 2
- type: reagent
id: CP14BasicEffectSpeedDown
@@ -369,6 +388,7 @@
- !type:GenericStatusEffect
key: Stutter
component: StutteringAccent
+ pricePerUnit: 2
- type: reagent
id: CP14BasicEffectSleep
@@ -390,6 +410,7 @@
key: ForcedSleep
component: ForcedSleeping
type: Add
+ pricePerUnit: 3
- type: reagent
id: CP14BasicEffectUnsleep
@@ -423,6 +444,7 @@
min: 1
reagent: CP14BasicEffectSleep
amount: -10
+ pricePerUnit: 1
# Gimmick solutions, otherwise doesn't give a mechanical benefit
@@ -444,6 +466,7 @@
type: Add
time: 25
refresh: false
+ pricePerUnit: 1
- type: reagent
id: CP14BasicEffectEmoteCough
@@ -491,6 +514,7 @@
effects:
- !type:Drunk
boozePower: 15
+ pricePerUnit: 0.5
- type: reagent
id: CP14BasicEffectJitter
diff --git a/Resources/Prototypes/_CP14/Recipes/Workbench/furnace.yml b/Resources/Prototypes/_CP14/Recipes/Workbench/furnace.yml
index 15b422b43a..2cf259b00f 100644
--- a/Resources/Prototypes/_CP14/Recipes/Workbench/furnace.yml
+++ b/Resources/Prototypes/_CP14/Recipes/Workbench/furnace.yml
@@ -144,7 +144,7 @@
- GlassMelting
- !type:StackResource
stack: CP14GlassSheet
- count: 6
+ count: 4
result: CP14VialMedium
- type: CP14Recipe
@@ -160,7 +160,7 @@
count: 1
- !type:StackResource
stack: CP14GlassSheet
- count: 6
+ count: 4
result: CP14VialMediumReinforced
- type: CP14Recipe
diff --git a/Resources/Prototypes/_CP14/Roles/Jobs/Traders/merchant.yml b/Resources/Prototypes/_CP14/Roles/Jobs/Traders/merchant.yml
index b5e23c6bb0..66f352f854 100644
--- a/Resources/Prototypes/_CP14/Roles/Jobs/Traders/merchant.yml
+++ b/Resources/Prototypes/_CP14/Roles/Jobs/Traders/merchant.yml
@@ -1,6 +1,6 @@
- type: job
id: CP14Merchant
- setPreference: false
+ setPreference: true
name: cp14-job-name-merchant
description: cp14-job-desc-merchant
playTimeTracker: CP14JobMerchant
@@ -18,5 +18,5 @@
- CP14EnergyCrystalMedium
- CP14EnergyCrystalMedium
equipment:
- belt1: CP14WalletFilledTest
+ belt1: CP14WalletFilledMerchant
keys: CP14KeyRingMerchant
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/SoundCollections/misc.yml b/Resources/Prototypes/_CP14/SoundCollections/misc.yml
index 1a068e78ce..198d7777c9 100644
--- a/Resources/Prototypes/_CP14/SoundCollections/misc.yml
+++ b/Resources/Prototypes/_CP14/SoundCollections/misc.yml
@@ -34,3 +34,10 @@
- /Audio/_CP14/Effects/Lurker/ritual1.ogg
- /Audio/_CP14/Effects/Lurker/ritual2.ogg
- /Audio/_CP14/Effects/Lurker/ritual3.ogg
+
+- type: soundCollection
+ id: CP14CoinImpact
+ files:
+ - /Audio/_CP14/Effects/coin_impact1.ogg
+ - /Audio/_CP14/Effects/coin_impact2.ogg
+ - /Audio/_CP14/Effects/coin_impact3.ogg
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Trading/brad_potions.yml b/Resources/Prototypes/_CP14/Trading/brad_potions.yml
new file mode 100644
index 0000000000..d29cb47bcc
--- /dev/null
+++ b/Resources/Prototypes/_CP14/Trading/brad_potions.yml
@@ -0,0 +1,212 @@
+- type: cp14TradingPosition
+ id: CP14VialSmallHealingBrute
+ faction: BradPotions
+ uiPosition: 0, 0
+ icon:
+ sprite: _CP14/Objects/Specific/Alchemy/vial_small.rsi
+ state: vial
+ service: !type:CP14BuyItemsService
+ product: CP14VialSmallHealingBrute
+
+- type: cp14TradingPosition
+ id: CP14VialSmallHealingPoison
+ faction: BradPotions
+ uiPosition: 0, 1
+ icon:
+ sprite: _CP14/Objects/Specific/Alchemy/vial_small.rsi
+ state: vial
+ service: !type:CP14BuyItemsService
+ product: CP14VialSmallHealingPoison
+
+- type: cp14TradingPosition
+ id: CP14VialSmallHealingAirloss
+ faction: BradPotions
+ uiPosition: 0, 2
+ icon:
+ sprite: _CP14/Objects/Specific/Alchemy/vial_small.rsi
+ state: vial
+ service: !type:CP14BuyItemsService
+ product: CP14VialSmallHealingAirloss
+
+- type: cp14TradingPosition
+ id: CP14VialSmallHealingBlood
+ faction: BradPotions
+ uiPosition: 0, 3
+ icon:
+ sprite: _CP14/Objects/Specific/Alchemy/vial_small.rsi
+ state: vial
+ service: !type:CP14BuyItemsService
+ product: CP14VialSmallHealingBlood
+
+- type: cp14TradingPosition
+ id: CP14VialSmallSpeedUp
+ faction: BradPotions
+ uiPosition: 1, 0
+ icon:
+ sprite: _CP14/Objects/Specific/Alchemy/vial_small.rsi
+ state: vial
+ service: !type:CP14BuyItemsService
+ product: CP14VialSmallSpeedUp
+
+- type: cp14TradingPosition
+ id: CP14VialSmallRainbow
+ faction: BradPotions
+ uiPosition: 1, 1
+ icon:
+ sprite: _CP14/Objects/Specific/Alchemy/vial_small.rsi
+ state: vial
+ service: !type:CP14BuyItemsService
+ product: CP14VialSmallRainbow
+
+- type: cp14TradingPosition
+ id: CP14VialSmallHealingManaDepletion
+ faction: BradPotions
+ uiPosition: 1, 2
+ icon:
+ sprite: _CP14/Objects/Specific/Alchemy/vial_small.rsi
+ state: vial
+ service: !type:CP14BuyItemsService
+ product: CP14VialSmallHealingManaDepletion
+
+- type: cp14TradingPosition
+ id: CP14VialSmallHealingMana
+ faction: BradPotions
+ uiPosition: 1, 3
+ icon:
+ sprite: _CP14/Objects/Specific/Alchemy/vial_small.rsi
+ state: vial
+ service: !type:CP14BuyItemsService
+ product: CP14VialSmallHealingMana
+
+
+
+
+- type: cp14TradingPosition
+ id: CP14VialTiny
+ faction: BradPotions
+ uiPosition: 3, 0
+ icon:
+ sprite: _CP14/Objects/Specific/Alchemy/vial_tiny.rsi
+ state: vial
+ service: !type:CP14BuyItemsService
+ product: CP14VialTiny
+
+- type: cp14TradingPosition
+ id: CP14VialTinyReinforced
+ prerequisite: CP14VialTiny
+ priceMarkup: 1
+ faction: BradPotions
+ uiPosition: 3, 1
+ icon:
+ sprite: _CP14/Objects/Specific/Alchemy/vial_tiny.rsi
+ state: vial
+ service: !type:CP14BuyItemsService
+ product: CP14VialTinyReinforced
+
+- type: cp14TradingPosition
+ id: CP14VialSmall
+ prerequisite: CP14VialTiny
+ priceMarkup: 1
+ faction: BradPotions
+ uiPosition: 4, 0
+ icon:
+ sprite: _CP14/Objects/Specific/Alchemy/vial_small.rsi
+ state: vial
+ service: !type:CP14BuyItemsService
+ product: CP14VialSmall
+
+- type: cp14TradingPosition
+ id: CP14VialSmallReinforced
+ prerequisite: CP14VialSmall
+ priceMarkup: 2
+ faction: BradPotions
+ uiPosition: 4, 1
+ icon:
+ sprite: _CP14/Objects/Specific/Alchemy/vial_small.rsi
+ state: vial
+ service: !type:CP14BuyItemsService
+ product: CP14VialSmallReinforced
+
+- type: cp14TradingPosition
+ id: CP14VialMedium
+ prerequisite: CP14VialSmall
+ priceMarkup: 2
+ faction: BradPotions
+ uiPosition: 5, 0
+ icon:
+ sprite: _CP14/Objects/Specific/Alchemy/vial_medium.rsi
+ state: vial
+ service: !type:CP14BuyItemsService
+ product: CP14VialMedium
+
+- type: cp14TradingPosition
+ id: CP14VialMediumReinforced
+ prerequisite: CP14VialMedium
+ priceMarkup: 3
+ faction: BradPotions
+ uiPosition: 5, 1
+ icon:
+ sprite: _CP14/Objects/Specific/Alchemy/vial_medium.rsi
+ state: vial
+ service: !type:CP14BuyItemsService
+ product: CP14VialMediumReinforced
+
+
+
+
+- type: cp14TradingPosition
+ id: CP14Cauldron
+ priceMarkup: 5
+ faction: BradPotions
+ uiPosition: 7, 0
+ icon:
+ sprite: _CP14/Objects/Specific/Alchemy/cauldron.rsi
+ state: icon
+ service: !type:CP14BuyItemsService
+ product: CP14Cauldron
+
+- type: cp14TradingPosition
+ id: CP14Pestle
+ priceMarkup: 2
+ faction: BradPotions
+ uiPosition: 8, 0
+ icon:
+ sprite: _CP14/Objects/Specific/Alchemy/mortar_pestle.rsi
+ state: pestle
+ service: !type:CP14BuyItemsService
+ product: CP14Pestle
+
+- type: cp14TradingPosition
+ id: CP14Mortar
+ priceMarkup: 2
+ faction: BradPotions
+ uiPosition: 9, 0
+ icon:
+ sprite: _CP14/Objects/Specific/Alchemy/mortar_pestle.rsi
+ state: mortar_base
+ service: !type:CP14BuyItemsService
+ product: CP14Mortar
+
+- type: cp14TradingPosition
+ id: CP14Dropper
+ priceMarkup: 1
+ faction: BradPotions
+ uiPosition: 7, 1
+ icon:
+ sprite: _CP14/Objects/Specific/Alchemy/dropper.rsi
+ state: dropper
+ service: !type:CP14BuyItemsService
+ product: CP14Dropper
+
+- type: cp14TradingPosition
+ id: CP14Syringe
+ priceMarkup: 2
+ faction: BradPotions
+ uiPosition: 8, 1
+ icon:
+ sprite: _CP14/Objects/Specific/Alchemy/syringe.rsi
+ state: base
+ service: !type:CP14BuyItemsService
+ product: CP14Syringe
+
+
diff --git a/Resources/Prototypes/_CP14/Trading/contracts.yml b/Resources/Prototypes/_CP14/Trading/contracts.yml
new file mode 100644
index 0000000000..ed2edca32c
--- /dev/null
+++ b/Resources/Prototypes/_CP14/Trading/contracts.yml
@@ -0,0 +1,23 @@
+- type: cp14TradingPosition
+ id: CP14TradeContractVictoriaGardens
+ faction: ContractGuild
+ uiPosition: 0, 0
+ unlockReputationCost: 1
+ icon:
+ sprite: _CP14/Objects/Specific/Economy/trade_contracts.rsi
+ state: victoria_garden
+ service: !type:CP14BuyItemsService
+ product: CP14TradeContractVictoriaGardens
+ count: 1
+
+- type: cp14TradingPosition
+ id: CP14TradeContractBradPotions
+ faction: ContractGuild
+ uiPosition: 0, 1
+ unlockReputationCost: 1
+ icon:
+ sprite: _CP14/Objects/Specific/Economy/trade_contracts.rsi
+ state: brad_potions
+ service: !type:CP14BuyItemsService
+ product: CP14TradeContractBradPotions
+ count: 1
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Trading/factions.yml b/Resources/Prototypes/_CP14/Trading/factions.yml
new file mode 100644
index 0000000000..c562a9182b
--- /dev/null
+++ b/Resources/Prototypes/_CP14/Trading/factions.yml
@@ -0,0 +1,12 @@
+- type: cp14TradingFaction
+ id: ContractGuild
+ name: cp14-trade-faction-contracts
+ roundStart: 1
+
+- type: cp14TradingFaction
+ id: VictoriaGardens
+ name: cp14-trade-faction-victoria-gardens
+
+- type: cp14TradingFaction
+ id: BradPotions
+ name: cp14-trade-faction-brad-potions
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Trading/victoria_gardens.yml b/Resources/Prototypes/_CP14/Trading/victoria_gardens.yml
new file mode 100644
index 0000000000..62ca00eae2
--- /dev/null
+++ b/Resources/Prototypes/_CP14/Trading/victoria_gardens.yml
@@ -0,0 +1,87 @@
+- type: cp14TradingPosition
+ id: CP14FoodCabbage
+ faction: VictoriaGardens
+ uiPosition: 0, 0
+ icon:
+ sprite: _CP14/Objects/Flora/Farm/cabbage.rsi
+ state: base1
+ service: !type:CP14BuyItemsService
+ product: CP14FoodCabbage
+ count: 3
+
+- type: cp14TradingPosition
+ id: CP14FoodPumpkin
+ faction: VictoriaGardens
+ uiPosition: 0, 1
+ icon:
+ sprite: _CP14/Objects/Flora/Farm/pumpkin.rsi
+ state: base1
+ service: !type:CP14BuyItemsService
+ product: CP14FoodPumpkin
+ count: 3
+
+- type: cp14TradingPosition
+ id: CP14FoodPotato
+ faction: VictoriaGardens
+ uiPosition: 0, 2
+ icon:
+ sprite: _CP14/Objects/Flora/Farm/potato.rsi
+ state: base1
+ service: !type:CP14BuyItemsService
+ product: CP14FoodPotato
+ count: 3
+
+- type: cp14TradingPosition
+ id: CP14FoodCucumber
+ faction: VictoriaGardens
+ uiPosition: 0, 3
+ icon:
+ sprite: _CP14/Objects/Flora/Farm/cucumber.rsi
+ state: base1
+ service: !type:CP14BuyItemsService
+ product: CP14FoodCucumber
+ count: 3
+
+- type: cp14TradingPosition
+ id: CP14FoodTomatoes
+ faction: VictoriaGardens
+ uiPosition: 1, 0
+ icon:
+ sprite: _CP14/Objects/Flora/Farm/tomatoes.rsi
+ state: base1
+ service: !type:CP14BuyItemsService
+ product: CP14FoodTomatoes
+ count: 3
+
+- type: cp14TradingPosition
+ id: CP14FoodApple
+ faction: VictoriaGardens
+ uiPosition: 1, 1
+ icon:
+ sprite: _CP14/Objects/Flora/Farm/apple.rsi
+ state: base1
+ service: !type:CP14BuyItemsService
+ product: CP14FoodApple
+ count: 3
+
+- type: cp14TradingPosition
+ id: CP14FoodPepper
+ faction: VictoriaGardens
+ uiPosition: 1, 2
+ icon:
+ sprite: _CP14/Objects/Flora/Farm/pepper.rsi
+ state: base1
+ service: !type:CP14BuyItemsService
+ product: CP14FoodPepper
+ count: 3
+
+- type: cp14TradingPosition
+ id: CP14FoodOnion
+ faction: VictoriaGardens
+ uiPosition: 1, 3
+ icon:
+ sprite: _CP14/Objects/Flora/Farm/onion.rsi
+ state: base1
+ service: !type:CP14BuyItemsService
+ product: CP14FoodOnion
+ count: 3
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/UniqueLoot/tradepost.yml b/Resources/Prototypes/_CP14/UniqueLoot/tradepost.yml
deleted file mode 100644
index 74681e099b..0000000000
--- a/Resources/Prototypes/_CP14/UniqueLoot/tradepost.yml
+++ /dev/null
@@ -1,26 +0,0 @@
-- type: Tag
- id: CP14UniqueSpawnTradepost
-
-- type: uniqueSpawn
- id: CP14TradingPortalSylphoria
- entity: CP14TradingPortalSylphoria
- tags:
- - CP14UniqueSpawnTradepost
-
-- type: uniqueSpawn
- id: CP14TradingPortalHelmirWeapon
- entity: CP14TradingPortalHelmirWeapon
- tags:
- - CP14UniqueSpawnTradepost
-
-- type: uniqueSpawn
- id: CP14TradingPortalBradFamily
- entity: CP14TradingPortalBradFamily
- tags:
- - CP14UniqueSpawnTradepost
-
-- type: uniqueSpawn
- id: CP14TradingPortalSpiceStream
- entity: CP14TradingPortalSpiceStream
- tags:
- - CP14UniqueSpawnTradepost
\ No newline at end of file
diff --git a/Resources/ServerInfo/_CP14/Guidebook_EN/JobsTabs/Merchant.xml b/Resources/ServerInfo/_CP14/Guidebook_EN/JobsTabs/Merchant.xml
deleted file mode 100644
index e7d4176cf2..0000000000
--- a/Resources/ServerInfo/_CP14/Guidebook_EN/JobsTabs/Merchant.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-# Merchant
-
-The Merchant is one of the available game roles, focusing on social interactions between players.
-
-The Merchant always has one of the [color=#a4885c]Shops[/color] located in the city at his disposal. You can use this construction to centralize other players' interactions with you.
-
-## Economic Race
-
-The main goal of the merchant as a role is to become the richest of the merchants. To fulfill this goal, you must have more currency on hand at the end of the round than the other merchants, and you must be alive.
-
-## Ways to make money
-
-- [textlink="External trade" link="CP14_EN_Trading"]
-
-
\ No newline at end of file
diff --git a/Resources/ServerInfo/_CP14/Guidebook_EN/JobsTabs/MerchantTabs/Trading.xml b/Resources/ServerInfo/_CP14/Guidebook_EN/JobsTabs/MerchantTabs/Trading.xml
deleted file mode 100644
index ba03fbefbd..0000000000
--- a/Resources/ServerInfo/_CP14/Guidebook_EN/JobsTabs/MerchantTabs/Trading.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-
-# Trade with the outside world
-
-Trade outposts are one of the main ways where you can spend money, or from where you can acquire it.
-
-
-
-
-
-
-
-There are trading outposts belonging to different factions that can be found in different locations throughout the game map. They are located in different places each round, so they have yet to be found.
-
-Different factions offer different items for sale or purchase. If you want to buy weapons, you'll obviously need to find an outpost of Helmir's Descendants.
-
-
-
-
-
-## Sel
-
-To sell an item - put the requested items into an open outpost, and close it. After a few seconds, the item will be picked up and payment will be thrown to you.
-
-
-
-
-
-
-### Purchase
-
-To buy an item - you need to compose a paper with an order. Each purchase item has a unique code that you can see in the sales table. It starts with the symbol #.
-
-On any paper, write any number of these unique codes, each starting with #, with a quill pen.
-
-Put the paper with your order and the required amount of money in the outpost. In a few seconds, your order will be delivered to you and your change will be returned.
-
-## One-time offers
-
-Many outposts have "One Time Offers" - special items to buy or sell that are upgraded after use. These items are often particularly lucrative, and you can make more money with them.
-
-
\ No newline at end of file
diff --git a/Resources/ServerInfo/_CP14/Guidebook_RU/JobsTabs/Merchant.xml b/Resources/ServerInfo/_CP14/Guidebook_RU/JobsTabs/Merchant.xml
deleted file mode 100644
index 5edb9f7ae3..0000000000
--- a/Resources/ServerInfo/_CP14/Guidebook_RU/JobsTabs/Merchant.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-# Торговец
-
-Торговец - одна из доступных игровых ролей, сосредоточенная на социальных взаимодействиях между игроками.
-
-Торговец всегда имеет в своем распоряжении один из [color=#a4885c]Магазинов[/color], расположенных в городе. Вы можете использовать эту постройку для централизации взаимодействия других игроков с вами.
-
-## Экономическая гонка
-
-Основная цель торговца как роли - стать самым богатым из торговцев. Чтобы выполнить эту цель, у вас на руках на момент конца раунда должно быть больше валюты, чем у других торговцев, и вы должны быть живыми.
-
-## Способы заработка
-
-- [textlink="Внешняя торговля" link="CP14_RU_Trading"]
-
-
\ No newline at end of file
diff --git a/Resources/ServerInfo/_CP14/Guidebook_RU/JobsTabs/MerchantTabs/Trading.xml b/Resources/ServerInfo/_CP14/Guidebook_RU/JobsTabs/MerchantTabs/Trading.xml
deleted file mode 100644
index 2db8718a56..0000000000
--- a/Resources/ServerInfo/_CP14/Guidebook_RU/JobsTabs/MerchantTabs/Trading.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-
-# Торговля с внешним миром
-
-Торговые аванпосты - один из основных способов куда можно потратить деньги, или откуда их можно приобрести.
-
-
-
-
-
-
-
-Существуют торговые аванпосты, принадлежащие к различным фракциям, которые можно найти в разных местах по всей игровой карте. Каждый раунд они располагаются в разных местах, так что их еще предстоит найти.
-
-Разные фракции предлагают различные товары на продажу или покупку. Если вы хотите прикупить оружие, вам явно нужно найти аванпост Хельмировых потомков.
-
-
-
-
-
-## Продажа
-
-Чтобы продать товар - положите в открытый аванпост запрошенные товары, и закройте его. Через несколько секунд товар заберут, а вам выбросят оплату.
-
-
-
-
-
-
-### Покупка
-
-Чтобы купить товар - вам необходимо составить бумагу с заказом. У каждой позиции покупки есть уникальный код, который можно увидеть в торговом столе. Он начинается с символа #.
-
-На любой бумаге напишите писчим пером любое количество этих уникальных кодов, начиная каждый с #
-
-Положите в аванпост бумагу с заказом, и необходимое количество денег. Через несколько секунд вам доставят ваш заказ, и вернут сдачу.
-
-## Разовые предложения
-
-Многие аванпосты имеют "Разовые предложения" - особые позиции в покупке или продаже, которые обновляются после использования. Часто такие позиции особо выгодные, и с их помощью можно заработать больше денег.
-
-
\ No newline at end of file
diff --git a/Resources/Textures/_CP14/Interface/Misc/star.png b/Resources/Textures/_CP14/Interface/Misc/star.png
new file mode 100644
index 0000000000..2bd0e5ae90
Binary files /dev/null and b/Resources/Textures/_CP14/Interface/Misc/star.png differ
diff --git a/Resources/Textures/_CP14/Interface/NodeTree/trading.rsi/frame.png b/Resources/Textures/_CP14/Interface/NodeTree/trading.rsi/frame.png
new file mode 100644
index 0000000000..c993e28e20
Binary files /dev/null and b/Resources/Textures/_CP14/Interface/NodeTree/trading.rsi/frame.png differ
diff --git a/Resources/Textures/_CP14/Interface/NodeTree/trading.rsi/hovered.png b/Resources/Textures/_CP14/Interface/NodeTree/trading.rsi/hovered.png
new file mode 100644
index 0000000000..9234505b49
Binary files /dev/null and b/Resources/Textures/_CP14/Interface/NodeTree/trading.rsi/hovered.png differ
diff --git a/Resources/Textures/_CP14/Interface/NodeTree/trading.rsi/learned.png b/Resources/Textures/_CP14/Interface/NodeTree/trading.rsi/learned.png
new file mode 100644
index 0000000000..f2c62c3939
Binary files /dev/null and b/Resources/Textures/_CP14/Interface/NodeTree/trading.rsi/learned.png differ
diff --git a/Resources/Textures/_CP14/Interface/NodeTree/trading.rsi/meta.json b/Resources/Textures/_CP14/Interface/NodeTree/trading.rsi/meta.json
new file mode 100644
index 0000000000..bc122cc7d0
--- /dev/null
+++ b/Resources/Textures/_CP14/Interface/NodeTree/trading.rsi/meta.json
@@ -0,0 +1,23 @@
+{
+ "version": 1,
+ "size": {
+ "x": 48,
+ "y": 48
+ },
+ "license": "CC-BY-SA-4.0",
+ "copyright": "Created by TheShuEd (Github)",
+ "states": [
+ {
+ "name": "frame"
+ },
+ {
+ "name": "hovered"
+ },
+ {
+ "name": "selected"
+ },
+ {
+ "name": "learned"
+ }
+ ]
+}
diff --git a/Resources/Textures/_CP14/Interface/NodeTree/trading.rsi/selected.png b/Resources/Textures/_CP14/Interface/NodeTree/trading.rsi/selected.png
new file mode 100644
index 0000000000..b6812ad5d9
Binary files /dev/null and b/Resources/Textures/_CP14/Interface/NodeTree/trading.rsi/selected.png differ
diff --git a/Resources/Textures/_CP14/Objects/Economy/cp_coin.rsi/coin1.png b/Resources/Textures/_CP14/Objects/Economy/cp_coin.rsi/coin1.png
index 340f2c1bab..4daf465ea7 100644
Binary files a/Resources/Textures/_CP14/Objects/Economy/cp_coin.rsi/coin1.png and b/Resources/Textures/_CP14/Objects/Economy/cp_coin.rsi/coin1.png differ
diff --git a/Resources/Textures/_CP14/Objects/Economy/cp_coin.rsi/coin10.png b/Resources/Textures/_CP14/Objects/Economy/cp_coin.rsi/coin10.png
index 5823f9b510..9ee559104c 100644
Binary files a/Resources/Textures/_CP14/Objects/Economy/cp_coin.rsi/coin10.png and b/Resources/Textures/_CP14/Objects/Economy/cp_coin.rsi/coin10.png differ
diff --git a/Resources/Textures/_CP14/Objects/Economy/cp_coin.rsi/coin2.png b/Resources/Textures/_CP14/Objects/Economy/cp_coin.rsi/coin2.png
index 30a755b2b7..2a9c9e9a32 100644
Binary files a/Resources/Textures/_CP14/Objects/Economy/cp_coin.rsi/coin2.png and b/Resources/Textures/_CP14/Objects/Economy/cp_coin.rsi/coin2.png differ
diff --git a/Resources/Textures/_CP14/Objects/Economy/cp_coin.rsi/coin3.png b/Resources/Textures/_CP14/Objects/Economy/cp_coin.rsi/coin3.png
index 99119dd30a..3e9688c899 100644
Binary files a/Resources/Textures/_CP14/Objects/Economy/cp_coin.rsi/coin3.png and b/Resources/Textures/_CP14/Objects/Economy/cp_coin.rsi/coin3.png differ
diff --git a/Resources/Textures/_CP14/Objects/Economy/cp_coin.rsi/coin4.png b/Resources/Textures/_CP14/Objects/Economy/cp_coin.rsi/coin4.png
index 97e8e5bdc3..acdec5bfba 100644
Binary files a/Resources/Textures/_CP14/Objects/Economy/cp_coin.rsi/coin4.png and b/Resources/Textures/_CP14/Objects/Economy/cp_coin.rsi/coin4.png differ
diff --git a/Resources/Textures/_CP14/Objects/Economy/cp_coin.rsi/coin5.png b/Resources/Textures/_CP14/Objects/Economy/cp_coin.rsi/coin5.png
index 24a4fd06a2..9dc7e213ec 100644
Binary files a/Resources/Textures/_CP14/Objects/Economy/cp_coin.rsi/coin5.png and b/Resources/Textures/_CP14/Objects/Economy/cp_coin.rsi/coin5.png differ
diff --git a/Resources/Textures/_CP14/Objects/Economy/cp_coin.rsi/coin6.png b/Resources/Textures/_CP14/Objects/Economy/cp_coin.rsi/coin6.png
index f227305d1c..c017ea4026 100644
Binary files a/Resources/Textures/_CP14/Objects/Economy/cp_coin.rsi/coin6.png and b/Resources/Textures/_CP14/Objects/Economy/cp_coin.rsi/coin6.png differ
diff --git a/Resources/Textures/_CP14/Objects/Economy/cp_coin.rsi/coin7.png b/Resources/Textures/_CP14/Objects/Economy/cp_coin.rsi/coin7.png
index a94cb7130c..15fd214718 100644
Binary files a/Resources/Textures/_CP14/Objects/Economy/cp_coin.rsi/coin7.png and b/Resources/Textures/_CP14/Objects/Economy/cp_coin.rsi/coin7.png differ
diff --git a/Resources/Textures/_CP14/Objects/Economy/cp_coin.rsi/coin8.png b/Resources/Textures/_CP14/Objects/Economy/cp_coin.rsi/coin8.png
index 6b0879509b..10a7ba04c9 100644
Binary files a/Resources/Textures/_CP14/Objects/Economy/cp_coin.rsi/coin8.png and b/Resources/Textures/_CP14/Objects/Economy/cp_coin.rsi/coin8.png differ
diff --git a/Resources/Textures/_CP14/Objects/Economy/cp_coin.rsi/coin9.png b/Resources/Textures/_CP14/Objects/Economy/cp_coin.rsi/coin9.png
index 00433551ef..3fa237e755 100644
Binary files a/Resources/Textures/_CP14/Objects/Economy/cp_coin.rsi/coin9.png and b/Resources/Textures/_CP14/Objects/Economy/cp_coin.rsi/coin9.png differ
diff --git a/Resources/Textures/_CP14/Objects/Economy/cp_coin.rsi/meta.json b/Resources/Textures/_CP14/Objects/Economy/cp_coin.rsi/meta.json
index 453b7a15bd..4f176d9959 100644
--- a/Resources/Textures/_CP14/Objects/Economy/cp_coin.rsi/meta.json
+++ b/Resources/Textures/_CP14/Objects/Economy/cp_coin.rsi/meta.json
@@ -5,7 +5,7 @@
"y": 32
},
"license": "CC-BY-SA-4.0",
- "copyright": "Created by TheShuEd (Github)",
+ "copyright": "Created by TheShuEd (Github) & resprite by omsoyk",
"states": [
{
"name": "coin0"
diff --git a/Resources/Textures/_CP14/Objects/Economy/gp_coin.rsi/coin1.png b/Resources/Textures/_CP14/Objects/Economy/gp_coin.rsi/coin1.png
index 1675246a4a..5bbcb616a6 100644
Binary files a/Resources/Textures/_CP14/Objects/Economy/gp_coin.rsi/coin1.png and b/Resources/Textures/_CP14/Objects/Economy/gp_coin.rsi/coin1.png differ
diff --git a/Resources/Textures/_CP14/Objects/Economy/gp_coin.rsi/coin10.png b/Resources/Textures/_CP14/Objects/Economy/gp_coin.rsi/coin10.png
index 96bd118411..4bc012bcf4 100644
Binary files a/Resources/Textures/_CP14/Objects/Economy/gp_coin.rsi/coin10.png and b/Resources/Textures/_CP14/Objects/Economy/gp_coin.rsi/coin10.png differ
diff --git a/Resources/Textures/_CP14/Objects/Economy/gp_coin.rsi/coin2.png b/Resources/Textures/_CP14/Objects/Economy/gp_coin.rsi/coin2.png
index 6d0cf75ab9..962261c8e3 100644
Binary files a/Resources/Textures/_CP14/Objects/Economy/gp_coin.rsi/coin2.png and b/Resources/Textures/_CP14/Objects/Economy/gp_coin.rsi/coin2.png differ
diff --git a/Resources/Textures/_CP14/Objects/Economy/gp_coin.rsi/coin3.png b/Resources/Textures/_CP14/Objects/Economy/gp_coin.rsi/coin3.png
index d8122045d1..7f5c2c4be9 100644
Binary files a/Resources/Textures/_CP14/Objects/Economy/gp_coin.rsi/coin3.png and b/Resources/Textures/_CP14/Objects/Economy/gp_coin.rsi/coin3.png differ
diff --git a/Resources/Textures/_CP14/Objects/Economy/gp_coin.rsi/coin4.png b/Resources/Textures/_CP14/Objects/Economy/gp_coin.rsi/coin4.png
index df0b612fa8..573f2d9d1a 100644
Binary files a/Resources/Textures/_CP14/Objects/Economy/gp_coin.rsi/coin4.png and b/Resources/Textures/_CP14/Objects/Economy/gp_coin.rsi/coin4.png differ
diff --git a/Resources/Textures/_CP14/Objects/Economy/gp_coin.rsi/coin5.png b/Resources/Textures/_CP14/Objects/Economy/gp_coin.rsi/coin5.png
index f58bf0513a..c49ec1b584 100644
Binary files a/Resources/Textures/_CP14/Objects/Economy/gp_coin.rsi/coin5.png and b/Resources/Textures/_CP14/Objects/Economy/gp_coin.rsi/coin5.png differ
diff --git a/Resources/Textures/_CP14/Objects/Economy/gp_coin.rsi/coin6.png b/Resources/Textures/_CP14/Objects/Economy/gp_coin.rsi/coin6.png
index 310b710cab..ee72b6b203 100644
Binary files a/Resources/Textures/_CP14/Objects/Economy/gp_coin.rsi/coin6.png and b/Resources/Textures/_CP14/Objects/Economy/gp_coin.rsi/coin6.png differ
diff --git a/Resources/Textures/_CP14/Objects/Economy/gp_coin.rsi/coin7.png b/Resources/Textures/_CP14/Objects/Economy/gp_coin.rsi/coin7.png
index 00fb01d9d1..4b00977550 100644
Binary files a/Resources/Textures/_CP14/Objects/Economy/gp_coin.rsi/coin7.png and b/Resources/Textures/_CP14/Objects/Economy/gp_coin.rsi/coin7.png differ
diff --git a/Resources/Textures/_CP14/Objects/Economy/gp_coin.rsi/coin8.png b/Resources/Textures/_CP14/Objects/Economy/gp_coin.rsi/coin8.png
index 1da72e42ac..b9b39a0704 100644
Binary files a/Resources/Textures/_CP14/Objects/Economy/gp_coin.rsi/coin8.png and b/Resources/Textures/_CP14/Objects/Economy/gp_coin.rsi/coin8.png differ
diff --git a/Resources/Textures/_CP14/Objects/Economy/gp_coin.rsi/coin9.png b/Resources/Textures/_CP14/Objects/Economy/gp_coin.rsi/coin9.png
index 068ab47ec9..a0547ccc1c 100644
Binary files a/Resources/Textures/_CP14/Objects/Economy/gp_coin.rsi/coin9.png and b/Resources/Textures/_CP14/Objects/Economy/gp_coin.rsi/coin9.png differ
diff --git a/Resources/Textures/_CP14/Objects/Economy/gp_coin.rsi/meta.json b/Resources/Textures/_CP14/Objects/Economy/gp_coin.rsi/meta.json
index 453b7a15bd..4f176d9959 100644
--- a/Resources/Textures/_CP14/Objects/Economy/gp_coin.rsi/meta.json
+++ b/Resources/Textures/_CP14/Objects/Economy/gp_coin.rsi/meta.json
@@ -5,7 +5,7 @@
"y": 32
},
"license": "CC-BY-SA-4.0",
- "copyright": "Created by TheShuEd (Github)",
+ "copyright": "Created by TheShuEd (Github) & resprite by omsoyk",
"states": [
{
"name": "coin0"
diff --git a/Resources/Textures/_CP14/Objects/Economy/pp_coin.rsi/coin1.png b/Resources/Textures/_CP14/Objects/Economy/pp_coin.rsi/coin1.png
index 521629df5e..d1ba375fca 100644
Binary files a/Resources/Textures/_CP14/Objects/Economy/pp_coin.rsi/coin1.png and b/Resources/Textures/_CP14/Objects/Economy/pp_coin.rsi/coin1.png differ
diff --git a/Resources/Textures/_CP14/Objects/Economy/pp_coin.rsi/coin10.png b/Resources/Textures/_CP14/Objects/Economy/pp_coin.rsi/coin10.png
index 8ba64ba0f1..8fd0777bc7 100644
Binary files a/Resources/Textures/_CP14/Objects/Economy/pp_coin.rsi/coin10.png and b/Resources/Textures/_CP14/Objects/Economy/pp_coin.rsi/coin10.png differ
diff --git a/Resources/Textures/_CP14/Objects/Economy/pp_coin.rsi/coin2.png b/Resources/Textures/_CP14/Objects/Economy/pp_coin.rsi/coin2.png
index 96efd52e39..d2d3227b5e 100644
Binary files a/Resources/Textures/_CP14/Objects/Economy/pp_coin.rsi/coin2.png and b/Resources/Textures/_CP14/Objects/Economy/pp_coin.rsi/coin2.png differ
diff --git a/Resources/Textures/_CP14/Objects/Economy/pp_coin.rsi/coin3.png b/Resources/Textures/_CP14/Objects/Economy/pp_coin.rsi/coin3.png
index 3882363e45..2ec69540d1 100644
Binary files a/Resources/Textures/_CP14/Objects/Economy/pp_coin.rsi/coin3.png and b/Resources/Textures/_CP14/Objects/Economy/pp_coin.rsi/coin3.png differ
diff --git a/Resources/Textures/_CP14/Objects/Economy/pp_coin.rsi/coin4.png b/Resources/Textures/_CP14/Objects/Economy/pp_coin.rsi/coin4.png
index cf2ffa036f..05db93765e 100644
Binary files a/Resources/Textures/_CP14/Objects/Economy/pp_coin.rsi/coin4.png and b/Resources/Textures/_CP14/Objects/Economy/pp_coin.rsi/coin4.png differ
diff --git a/Resources/Textures/_CP14/Objects/Economy/pp_coin.rsi/coin5.png b/Resources/Textures/_CP14/Objects/Economy/pp_coin.rsi/coin5.png
index 27b77dc9f7..0c2f16c7ec 100644
Binary files a/Resources/Textures/_CP14/Objects/Economy/pp_coin.rsi/coin5.png and b/Resources/Textures/_CP14/Objects/Economy/pp_coin.rsi/coin5.png differ
diff --git a/Resources/Textures/_CP14/Objects/Economy/pp_coin.rsi/coin6.png b/Resources/Textures/_CP14/Objects/Economy/pp_coin.rsi/coin6.png
index 0d77878602..dec0e99ce2 100644
Binary files a/Resources/Textures/_CP14/Objects/Economy/pp_coin.rsi/coin6.png and b/Resources/Textures/_CP14/Objects/Economy/pp_coin.rsi/coin6.png differ
diff --git a/Resources/Textures/_CP14/Objects/Economy/pp_coin.rsi/coin7.png b/Resources/Textures/_CP14/Objects/Economy/pp_coin.rsi/coin7.png
index 51b438ff41..bae8d66bd4 100644
Binary files a/Resources/Textures/_CP14/Objects/Economy/pp_coin.rsi/coin7.png and b/Resources/Textures/_CP14/Objects/Economy/pp_coin.rsi/coin7.png differ
diff --git a/Resources/Textures/_CP14/Objects/Economy/pp_coin.rsi/coin8.png b/Resources/Textures/_CP14/Objects/Economy/pp_coin.rsi/coin8.png
index 7c07b8bd78..6ac2a8ade7 100644
Binary files a/Resources/Textures/_CP14/Objects/Economy/pp_coin.rsi/coin8.png and b/Resources/Textures/_CP14/Objects/Economy/pp_coin.rsi/coin8.png differ
diff --git a/Resources/Textures/_CP14/Objects/Economy/pp_coin.rsi/coin9.png b/Resources/Textures/_CP14/Objects/Economy/pp_coin.rsi/coin9.png
index b1000a6e58..48c5871153 100644
Binary files a/Resources/Textures/_CP14/Objects/Economy/pp_coin.rsi/coin9.png and b/Resources/Textures/_CP14/Objects/Economy/pp_coin.rsi/coin9.png differ
diff --git a/Resources/Textures/_CP14/Objects/Economy/pp_coin.rsi/meta.json b/Resources/Textures/_CP14/Objects/Economy/pp_coin.rsi/meta.json
index 453b7a15bd..4f176d9959 100644
--- a/Resources/Textures/_CP14/Objects/Economy/pp_coin.rsi/meta.json
+++ b/Resources/Textures/_CP14/Objects/Economy/pp_coin.rsi/meta.json
@@ -5,7 +5,7 @@
"y": 32
},
"license": "CC-BY-SA-4.0",
- "copyright": "Created by TheShuEd (Github)",
+ "copyright": "Created by TheShuEd (Github) & resprite by omsoyk",
"states": [
{
"name": "coin0"
diff --git a/Resources/Textures/_CP14/Objects/Economy/sp_coin.rsi/coin1.png b/Resources/Textures/_CP14/Objects/Economy/sp_coin.rsi/coin1.png
index 3280379ded..0a7e8f39fe 100644
Binary files a/Resources/Textures/_CP14/Objects/Economy/sp_coin.rsi/coin1.png and b/Resources/Textures/_CP14/Objects/Economy/sp_coin.rsi/coin1.png differ
diff --git a/Resources/Textures/_CP14/Objects/Economy/sp_coin.rsi/coin10.png b/Resources/Textures/_CP14/Objects/Economy/sp_coin.rsi/coin10.png
index 2e5165d861..1ac41785b0 100644
Binary files a/Resources/Textures/_CP14/Objects/Economy/sp_coin.rsi/coin10.png and b/Resources/Textures/_CP14/Objects/Economy/sp_coin.rsi/coin10.png differ
diff --git a/Resources/Textures/_CP14/Objects/Economy/sp_coin.rsi/coin2.png b/Resources/Textures/_CP14/Objects/Economy/sp_coin.rsi/coin2.png
index 656f221100..6f810bee97 100644
Binary files a/Resources/Textures/_CP14/Objects/Economy/sp_coin.rsi/coin2.png and b/Resources/Textures/_CP14/Objects/Economy/sp_coin.rsi/coin2.png differ
diff --git a/Resources/Textures/_CP14/Objects/Economy/sp_coin.rsi/coin3.png b/Resources/Textures/_CP14/Objects/Economy/sp_coin.rsi/coin3.png
index 2f6c4217a0..e9f61cccc5 100644
Binary files a/Resources/Textures/_CP14/Objects/Economy/sp_coin.rsi/coin3.png and b/Resources/Textures/_CP14/Objects/Economy/sp_coin.rsi/coin3.png differ
diff --git a/Resources/Textures/_CP14/Objects/Economy/sp_coin.rsi/coin4.png b/Resources/Textures/_CP14/Objects/Economy/sp_coin.rsi/coin4.png
index e6ce27db10..fc087c6bb0 100644
Binary files a/Resources/Textures/_CP14/Objects/Economy/sp_coin.rsi/coin4.png and b/Resources/Textures/_CP14/Objects/Economy/sp_coin.rsi/coin4.png differ
diff --git a/Resources/Textures/_CP14/Objects/Economy/sp_coin.rsi/coin5.png b/Resources/Textures/_CP14/Objects/Economy/sp_coin.rsi/coin5.png
index eea72431f1..472a4edca6 100644
Binary files a/Resources/Textures/_CP14/Objects/Economy/sp_coin.rsi/coin5.png and b/Resources/Textures/_CP14/Objects/Economy/sp_coin.rsi/coin5.png differ
diff --git a/Resources/Textures/_CP14/Objects/Economy/sp_coin.rsi/coin6.png b/Resources/Textures/_CP14/Objects/Economy/sp_coin.rsi/coin6.png
index 8a8b1c3b97..76046b0f5c 100644
Binary files a/Resources/Textures/_CP14/Objects/Economy/sp_coin.rsi/coin6.png and b/Resources/Textures/_CP14/Objects/Economy/sp_coin.rsi/coin6.png differ
diff --git a/Resources/Textures/_CP14/Objects/Economy/sp_coin.rsi/coin7.png b/Resources/Textures/_CP14/Objects/Economy/sp_coin.rsi/coin7.png
index 6e08dc1e98..353ad8885c 100644
Binary files a/Resources/Textures/_CP14/Objects/Economy/sp_coin.rsi/coin7.png and b/Resources/Textures/_CP14/Objects/Economy/sp_coin.rsi/coin7.png differ
diff --git a/Resources/Textures/_CP14/Objects/Economy/sp_coin.rsi/coin8.png b/Resources/Textures/_CP14/Objects/Economy/sp_coin.rsi/coin8.png
index 776f90a8d7..5d3bcb77c1 100644
Binary files a/Resources/Textures/_CP14/Objects/Economy/sp_coin.rsi/coin8.png and b/Resources/Textures/_CP14/Objects/Economy/sp_coin.rsi/coin8.png differ
diff --git a/Resources/Textures/_CP14/Objects/Economy/sp_coin.rsi/coin9.png b/Resources/Textures/_CP14/Objects/Economy/sp_coin.rsi/coin9.png
index 636f7d608c..0fb6a5a832 100644
Binary files a/Resources/Textures/_CP14/Objects/Economy/sp_coin.rsi/coin9.png and b/Resources/Textures/_CP14/Objects/Economy/sp_coin.rsi/coin9.png differ
diff --git a/Resources/Textures/_CP14/Objects/Economy/sp_coin.rsi/meta.json b/Resources/Textures/_CP14/Objects/Economy/sp_coin.rsi/meta.json
index 453b7a15bd..4f176d9959 100644
--- a/Resources/Textures/_CP14/Objects/Economy/sp_coin.rsi/meta.json
+++ b/Resources/Textures/_CP14/Objects/Economy/sp_coin.rsi/meta.json
@@ -5,7 +5,7 @@
"y": 32
},
"license": "CC-BY-SA-4.0",
- "copyright": "Created by TheShuEd (Github)",
+ "copyright": "Created by TheShuEd (Github) & resprite by omsoyk",
"states": [
{
"name": "coin0"
diff --git a/Resources/Textures/_CP14/Objects/Specific/Economy/trade_contracts.rsi/blank.png b/Resources/Textures/_CP14/Objects/Specific/Economy/trade_contracts.rsi/blank.png
new file mode 100644
index 0000000000..6e8696d95f
Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Specific/Economy/trade_contracts.rsi/blank.png differ
diff --git a/Resources/Textures/_CP14/Objects/Specific/Economy/trade_contracts.rsi/brad_potions.png b/Resources/Textures/_CP14/Objects/Specific/Economy/trade_contracts.rsi/brad_potions.png
new file mode 100644
index 0000000000..3a8a5d6285
Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Specific/Economy/trade_contracts.rsi/brad_potions.png differ
diff --git a/Resources/Textures/_CP14/Objects/Specific/Economy/trade_contracts.rsi/meta.json b/Resources/Textures/_CP14/Objects/Specific/Economy/trade_contracts.rsi/meta.json
new file mode 100644
index 0000000000..12f2d5a4b7
--- /dev/null
+++ b/Resources/Textures/_CP14/Objects/Specific/Economy/trade_contracts.rsi/meta.json
@@ -0,0 +1,20 @@
+{
+ "version": 1,
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "license": "CC-BY-SA-4.0",
+ "copyright": "Created by TheShuEd (Github) ",
+ "states": [
+ {
+ "name": "blank"
+ },
+ {
+ "name": "victoria_garden"
+ },
+ {
+ "name": "brad_potions"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Resources/Textures/_CP14/Objects/Specific/Economy/trade_contracts.rsi/victoria_garden.png b/Resources/Textures/_CP14/Objects/Specific/Economy/trade_contracts.rsi/victoria_garden.png
new file mode 100644
index 0000000000..907c2770af
Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Specific/Economy/trade_contracts.rsi/victoria_garden.png differ
diff --git a/Resources/Textures/_CP14/Structures/Specific/Blacksmith/furnace.rsi.rar b/Resources/Textures/_CP14/Structures/Specific/Blacksmith/furnace.rsi.rar
deleted file mode 100644
index f090beba21..0000000000
Binary files a/Resources/Textures/_CP14/Structures/Specific/Blacksmith/furnace.rsi.rar and /dev/null differ
diff --git a/Resources/Textures/_CP14/Structures/Specific/Economy/buy_platform.rsi/base.png b/Resources/Textures/_CP14/Structures/Specific/Economy/buy_platform.rsi/base.png
new file mode 100644
index 0000000000..9ef0a6a919
Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Specific/Economy/buy_platform.rsi/base.png differ
diff --git a/Resources/Textures/_CP14/Structures/Specific/Economy/buy_platform.rsi/buy.png b/Resources/Textures/_CP14/Structures/Specific/Economy/buy_platform.rsi/buy.png
new file mode 100644
index 0000000000..84a5427d83
Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Specific/Economy/buy_platform.rsi/buy.png differ
diff --git a/Resources/Textures/_CP14/Structures/Specific/Economy/buy_platform.rsi/impact.png b/Resources/Textures/_CP14/Structures/Specific/Economy/buy_platform.rsi/impact.png
new file mode 100644
index 0000000000..dfe3a90261
Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Specific/Economy/buy_platform.rsi/impact.png differ
diff --git a/Resources/Textures/_CP14/Structures/Specific/Economy/buy_platform.rsi/meta.json b/Resources/Textures/_CP14/Structures/Specific/Economy/buy_platform.rsi/meta.json
new file mode 100644
index 0000000000..f5cbcccca2
--- /dev/null
+++ b/Resources/Textures/_CP14/Structures/Specific/Economy/buy_platform.rsi/meta.json
@@ -0,0 +1,34 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-4.0",
+ "copyright": "Created by TheShuEd (Github) ",
+ "size": {
+ "x": 39,
+ "y": 39
+ },
+ "states": [
+ {
+ "name": "base"
+ },
+ {
+ "name": "buy"
+ },
+ {
+ "name": "sell"
+ },
+ {
+ "name": "impact",
+ "delays": [
+ [
+ 0.2,
+ 0.2,
+ 0.2,
+ 0.2,
+ 0.2,
+ 0.2,
+ 0.8
+ ]
+ ]
+ }
+ ]
+}
diff --git a/Resources/Textures/_CP14/Structures/Specific/Economy/buy_platform.rsi/sell.png b/Resources/Textures/_CP14/Structures/Specific/Economy/buy_platform.rsi/sell.png
new file mode 100644
index 0000000000..43ba72e75d
Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Specific/Economy/buy_platform.rsi/sell.png differ
diff --git a/Resources/Textures/_CP14/Structures/Specific/Economy/trade_portal.rsi/base.png b/Resources/Textures/_CP14/Structures/Specific/Economy/trade_portal.rsi/base.png
deleted file mode 100644
index 018e084190..0000000000
Binary files a/Resources/Textures/_CP14/Structures/Specific/Economy/trade_portal.rsi/base.png and /dev/null differ
diff --git a/Resources/Textures/_CP14/Structures/Specific/Economy/trade_portal.rsi/base_door.png b/Resources/Textures/_CP14/Structures/Specific/Economy/trade_portal.rsi/base_door.png
deleted file mode 100644
index 4552655438..0000000000
Binary files a/Resources/Textures/_CP14/Structures/Specific/Economy/trade_portal.rsi/base_door.png and /dev/null differ
diff --git a/Resources/Textures/_CP14/Structures/Specific/Economy/trade_portal.rsi/base_open.png b/Resources/Textures/_CP14/Structures/Specific/Economy/trade_portal.rsi/base_open.png
deleted file mode 100644
index 6d4a3596e9..0000000000
Binary files a/Resources/Textures/_CP14/Structures/Specific/Economy/trade_portal.rsi/base_open.png and /dev/null differ
diff --git a/Resources/Textures/_CP14/Structures/Specific/Economy/trade_portal.rsi/flag_bard.png b/Resources/Textures/_CP14/Structures/Specific/Economy/trade_portal.rsi/flag_bard.png
deleted file mode 100644
index 067cf69744..0000000000
Binary files a/Resources/Textures/_CP14/Structures/Specific/Economy/trade_portal.rsi/flag_bard.png and /dev/null differ
diff --git a/Resources/Textures/_CP14/Structures/Specific/Economy/trade_portal.rsi/flag_helmir.png b/Resources/Textures/_CP14/Structures/Specific/Economy/trade_portal.rsi/flag_helmir.png
deleted file mode 100644
index 5be8d45d68..0000000000
Binary files a/Resources/Textures/_CP14/Structures/Specific/Economy/trade_portal.rsi/flag_helmir.png and /dev/null differ
diff --git a/Resources/Textures/_CP14/Structures/Specific/Economy/trade_portal.rsi/flag_spice.png b/Resources/Textures/_CP14/Structures/Specific/Economy/trade_portal.rsi/flag_spice.png
deleted file mode 100644
index 879eca4d5c..0000000000
Binary files a/Resources/Textures/_CP14/Structures/Specific/Economy/trade_portal.rsi/flag_spice.png and /dev/null differ
diff --git a/Resources/Textures/_CP14/Structures/Specific/Economy/trade_portal.rsi/flag_sylphoria.png b/Resources/Textures/_CP14/Structures/Specific/Economy/trade_portal.rsi/flag_sylphoria.png
deleted file mode 100644
index c0e9346d7b..0000000000
Binary files a/Resources/Textures/_CP14/Structures/Specific/Economy/trade_portal.rsi/flag_sylphoria.png and /dev/null differ
diff --git a/Resources/Textures/_CP14/Structures/Specific/Economy/trade_portal.rsi/icon.png b/Resources/Textures/_CP14/Structures/Specific/Economy/trade_portal.rsi/icon.png
deleted file mode 100644
index 73451cbf85..0000000000
Binary files a/Resources/Textures/_CP14/Structures/Specific/Economy/trade_portal.rsi/icon.png and /dev/null differ
diff --git a/Resources/Textures/_CP14/Structures/Specific/Economy/trade_portal.rsi/meta.json b/Resources/Textures/_CP14/Structures/Specific/Economy/trade_portal.rsi/meta.json
deleted file mode 100644
index 250f411b3d..0000000000
--- a/Resources/Textures/_CP14/Structures/Specific/Economy/trade_portal.rsi/meta.json
+++ /dev/null
@@ -1,68 +0,0 @@
-{
- "version": 1,
- "license": "All right reserved",
- "copyright": "Created by TheShuEd",
- "size": {
- "x": 32,
- "y": 96
- },
- "states": [
- {
- "name": "icon",
- "directions": 4
- },
- {
- "name": "base",
- "directions": 4
- },
- {
- "name": "base_open",
- "directions": 4,
- "delays": [
- [
- 0.2,
- 0.2,
- 0.2,
- 0.2
- ],
- [
- 0.2,
- 0.2,
- 0.2,
- 0.2
- ],
- [
- 0.2,
- 0.2,
- 0.2,
- 0.2
- ],
- [
- 0.2,
- 0.2,
- 0.2,
- 0.2
- ]
- ]
- },
- {
- "name": "base_door"
- },
- {
- "name": "flag_bard",
- "directions": 4
- },
- {
- "name": "flag_helmir",
- "directions": 4
- },
- {
- "name": "flag_spice",
- "directions": 4
- },
- {
- "name": "flag_sylphoria",
- "directions": 4
- }
- ]
-}
diff --git a/Resources/migration.yml b/Resources/migration.yml
index 17c7b8ee78..3e56c2f3fa 100644
--- a/Resources/migration.yml
+++ b/Resources/migration.yml
@@ -192,7 +192,7 @@ CP14SpellScrollCounterSpell: CP14ActionSpellMagicSplitting
#2025-04-03
CP14TravelingStoreshipAnchor: null
-CP14TravelingShop: CP14TradingBoardBase
+CP14TravelingShop: null
CP14IronCabinetCargo: CP14IronCabinet
CP14BrassChestFilledDemiplanes: null
CP14BrassChestFilledWood: null
@@ -227,17 +227,17 @@ CP14ClothingOuterClothingCuirassLeg: CP14ArmorIronCuirass
#2025-11-03
CP14BrassChest: CP14WoodenChest
-CP14BrassChestFilledEnergyCrystals: CP14WoodenChestFilledEnergyCrystals
-CP14BrassChestFilledAlchemy: CP14WoodenChestFilledAlchemy
-CP14BrassChestFilledCheese: CP14WoodenChestFilledCheese
-CP14BrassChestFilledSmallHealingBrute: CP14WoodenChestFilledSmallHealingBrute
-CP14BrassChestFilledSmallHealingPoison: CP14WoodenChestFilledSmallHealingPoison
-CP14BrassChestFilledSmallHealingAirloss: CP14WoodenChestFilledSmallHealingAirloss
-CP14BrassChestFilledSmallHealingBlood: CP14WoodenChestFilledSmallHealingBlood
-CP14BrassChestFilledSmallHealingMana: CP14WoodenChestFilledSmallHealingMana
-CP14BrassChestFilledSmallSpeedUp: CP14WoodenChestFilledSmallSpeedUp
-CP14BrassChestFilledSmallRainbow: CP14WoodenChestFilledSmallRainbow
-CP14BrassChestFilledFarmSeeds: CP14WoodenChestFilledFarmSeeds
+CP14BrassChestFilledEnergyCrystals: null
+CP14BrassChestFilledAlchemy: null
+CP14BrassChestFilledCheese: null
+CP14BrassChestFilledSmallHealingBrute: null
+CP14BrassChestFilledSmallHealingPoison: null
+CP14BrassChestFilledSmallHealingAirloss: null
+CP14BrassChestFilledSmallHealingBlood: null
+CP14BrassChestFilledSmallHealingMana: null
+CP14BrassChestFilledSmallSpeedUp: null
+CP14BrassChestFilledSmallRainbow: null
+CP14BrassChestFilledFarmSeeds: null
CP14ClothingHeadCaptainCap: null
CP14ClothingHeadBeretBlack: null
@@ -326,7 +326,17 @@ CP14IronDoorWindowedGuardEntrance: CP14IronDoorGuardBarracks
CP14IronDoorWindowedMirroredGuardEntrance: CP14IronDoorGuardBarracks
CP14FenceGateBigIronGuard: CP14FenceGateBigIronGuardBarracks
-
+#2025-25-05
+CP14SpawnUniqueTradepost: null
+CP14TradingBoardBase: null
+CP14TradingPortalSylphoria: null
+CP14TradingPortalHelmirWeapon: null
+CP14TradingPortalBradFamily: null
+CP14TradingPortalSpiceStream: null
+CP14WoodenChestFilledFarmSeeds: CP14SackFarmingSeedFull
+CP14WoodenChestFilledEnergyCrystals: null
+CP14WoodenChestFilledAlchemy: null
+CP14WoodenChestFilledCheese: null
# <---> CrystallEdge migration zone end