From cc2a76f96757345623dee97a46835e1f4751685c Mon Sep 17 00:00:00 2001 From: Red <96445749+TheShuEd@users.noreply.github.com> Date: Tue, 27 May 2025 21:37:06 +0300 Subject: [PATCH 01/10] Update Dev.toml --- Resources/ConfigPresets/_CP14/Dev.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/Resources/ConfigPresets/_CP14/Dev.toml b/Resources/ConfigPresets/_CP14/Dev.toml index 9646d81363..0a7897ac50 100644 --- a/Resources/ConfigPresets/_CP14/Dev.toml +++ b/Resources/ConfigPresets/_CP14/Dev.toml @@ -15,6 +15,7 @@ tickrate = 30 port = 1212 bindto = "::,0.0.0.0" max_connections = 100 +log_late_msg = false [status] max_connections = 10 From 8dfca40435761ee5864d69ea49c9a152e04ca315 Mon Sep 17 00:00:00 2001 From: Red <96445749+TheShuEd@users.noreply.github.com> Date: Tue, 27 May 2025 21:52:07 +0300 Subject: [PATCH 02/10] Update Dev.toml --- Resources/ConfigPresets/_CP14/Dev.toml | 3 --- 1 file changed, 3 deletions(-) diff --git a/Resources/ConfigPresets/_CP14/Dev.toml b/Resources/ConfigPresets/_CP14/Dev.toml index 0a7897ac50..355c293f11 100644 --- a/Resources/ConfigPresets/_CP14/Dev.toml +++ b/Resources/ConfigPresets/_CP14/Dev.toml @@ -17,9 +17,6 @@ bindto = "::,0.0.0.0" max_connections = 100 log_late_msg = false -[status] -max_connections = 10 - [game] hostname = "⚔️ CrystallEdge ⚔️" desc = "History of the City of Sword and Magic. A social economic sandbox reinventing the Space Station 14 concept in fantasy style" From 2af8553f037495b5d61c00acf173c38a0b60d1fa Mon Sep 17 00:00:00 2001 From: Ed Date: Tue, 27 May 2025 23:15:14 +0300 Subject: [PATCH 03/10] Update ConstructionMenuPresenter.cs --- Content.Client/Construction/UI/ConstructionMenuPresenter.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Content.Client/Construction/UI/ConstructionMenuPresenter.cs b/Content.Client/Construction/UI/ConstructionMenuPresenter.cs index 9f0992ab4a..27ae5ef3c9 100644 --- a/Content.Client/Construction/UI/ConstructionMenuPresenter.cs +++ b/Content.Client/Construction/UI/ConstructionMenuPresenter.cs @@ -206,9 +206,6 @@ namespace Content.Client.Construction.UI { foreach (var recipe in actualRecipes) { - if (!recipe.Prototype.CrystallPunkAllowed) //CrystallEdge clearing recipes - continue; - var protoView = new EntityPrototypeView() { Scale = new Vector2(1.2f), @@ -263,6 +260,9 @@ namespace Content.Client.Construction.UI foreach (var recipe in _prototypeManager.EnumeratePrototypes()) { + if (!recipe.CrystallPunkAllowed) //CrystallEdge filter vanilla recipes + continue; + if (recipe.Hide) continue; From 2607eaeddd0d381f33e893ec3b0b0710d3ad8051 Mon Sep 17 00:00:00 2001 From: Nim <128169402+Nimfar11@users.noreply.github.com> Date: Wed, 28 May 2025 00:08:58 +0300 Subject: [PATCH 04/10] Polymorph return (#1327) * polymorph return * AliveTarget --- .../Actions/Spells/Life/sheep_polymorph.yml | 1 + Resources/Prototypes/_CP14/Skill/healing.yml | 16 +++++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/sheep_polymorph.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/sheep_polymorph.yml index e7b49985c5..a3bf6d31ef 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/sheep_polymorph.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/sheep_polymorph.yml @@ -29,6 +29,7 @@ endSpeech: "pecora tua" - type: CP14MagicEffectCastingVisual proto: CP14RuneSheepPolymorph + - type: CP14MagicEffectAliveTargetRequired - type: EntityTargetAction whitelist: components: diff --git a/Resources/Prototypes/_CP14/Skill/healing.yml b/Resources/Prototypes/_CP14/Skill/healing.yml index 76077fcec5..87cbaec7db 100644 --- a/Resources/Prototypes/_CP14/Skill/healing.yml +++ b/Resources/Prototypes/_CP14/Skill/healing.yml @@ -38,6 +38,20 @@ - !type:NeedPrerequisite prerequisite: HealingT1 +- type: cp14Skill + id: CP14ActionSpellSheepPolymorph + skillUiPosition: 0, 4 + tree: Healing + icon: + sprite: _CP14/Actions/Spells/misc.rsi + state: polymorph + effects: + - !type:AddAction + action: CP14ActionSpellSheepPolymorph + restrictions: + - !type:NeedPrerequisite + prerequisite: HealingT1 + - type: cp14Skill id: CP14ActionSpellSpeedBallade skillUiPosition: 0, 6 @@ -142,4 +156,4 @@ action: CP14ActionSpellResurrection restrictions: - !type:NeedPrerequisite - prerequisite: HealingT3 \ No newline at end of file + prerequisite: HealingT3 From 33bb537f81ca9b633aa93c8fa3d3e8a3031efa47 Mon Sep 17 00:00:00 2001 From: "Ignaz \"Ian\" Kraft" Date: Tue, 27 May 2025 23:24:01 +0200 Subject: [PATCH 05/10] make heat and freeze work on reagents (#1314) * make heat and freeze work on reagents * has to run before AdjustTemperature * implement suggested changes * almost missed this edge case * 0k is the limit * cleanup --- .../CP14AdjustAllSolutionThermalEnergy.cs | 57 +++++++++++++++++++ .../Entities/Actions/Spells/Fire/heat.yml | 2 + .../Entities/Actions/Spells/Water/freeze.yml | 4 +- 3 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 Content.Shared/_CP14/MagicSpell/Spells/CP14AdjustAllSolutionThermalEnergy.cs diff --git a/Content.Shared/_CP14/MagicSpell/Spells/CP14AdjustAllSolutionThermalEnergy.cs b/Content.Shared/_CP14/MagicSpell/Spells/CP14AdjustAllSolutionThermalEnergy.cs new file mode 100644 index 0000000000..a76fd871d4 --- /dev/null +++ b/Content.Shared/_CP14/MagicSpell/Spells/CP14AdjustAllSolutionThermalEnergy.cs @@ -0,0 +1,57 @@ +using Content.Shared.Chemistry.Components.SolutionManager; +using Content.Shared.Chemistry.EntitySystems; + +namespace Content.Shared._CP14.MagicSpell.Spells; + +/// +/// Adjusts the thermal energy of all the solutions inside the container. +/// +public sealed partial class CP14AdjustAllSolutionThermalEnergy : CP14SpellEffect +{ + /// + /// The change in energy. + /// + [DataField(required: true)] + public float Delta; + + /// + /// The minimum temperature this effect can reach. + /// + [DataField] + public float? MinTemp; + + /// + /// The maximum temperature this effect can reach. + /// + [DataField] + public float? MaxTemp; + + public override void Effect(EntityManager entManager, CP14SpellEffectBaseArgs args) + { + var solutionContainer = entManager.System(); + + if (!entManager.TryGetComponent(args.Target, out var solutionComp)) + return; + + var target = new Entity(args.Target.Value, solutionComp); + foreach (var (_, solution) in solutionContainer.EnumerateSolutions(target)) + { + if (solution.Comp.Solution.Volume == 0) + continue; + + var maxTemp = MaxTemp ?? float.PositiveInfinity; + var minTemp = Math.Max(MinTemp ?? 0, 0); + var oldTemp = solution.Comp.Solution.Temperature; + + if (Delta > 0 && oldTemp >= maxTemp) + continue; + if (Delta < 0 && oldTemp <= minTemp) + continue; + + var heatCap = solution.Comp.Solution.GetHeatCapacity(null); + var deltaT = Delta / heatCap; + + solutionContainer.SetTemperature(solution, Math.Clamp(oldTemp + deltaT, minTemp, maxTemp)); + } + } +} diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/heat.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/heat.yml index bf073bb3f6..aed873d34d 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/heat.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/heat.yml @@ -16,6 +16,8 @@ - !type:CP14SpellSpawnEntityOnTarget spawns: - CP14ImpactEffectHeat + - !type:CP14AdjustAllSolutionThermalEnergy + delta: 3600 # One full use heats 100u from ~300k to ~650k - !type:CP14SpellApplyEntityEffect effects: - !type:AdjustTemperature diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/freeze.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/freeze.yml index c0093a92ee..796547311e 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/freeze.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/freeze.yml @@ -16,6 +16,8 @@ - !type:CP14SpellSpawnEntityOnTarget spawns: - CP14ImpactEffectFreeze + - !type:CP14AdjustAllSolutionThermalEnergy + delta: -1200 # One full use cools 100u from ~300k to ~250k - !type:CP14SpellApplyEntityEffect effects: - !type:MovespeedModifier @@ -77,4 +79,4 @@ components: - type: CP14SpellStorage spells: - - CP14ActionSpellFreeze \ No newline at end of file + - CP14ActionSpellFreeze From 995429d041ab3df76a0fdc80ad74a905a6655a4e Mon Sep 17 00:00:00 2001 From: Aisu9 <56479183+Aisu9@users.noreply.github.com> Date: Wed, 28 May 2025 23:21:31 +0200 Subject: [PATCH 06/10] Small healing magic rebalance. (#1323) * Healing small rebalance * Healing spell small rebalance 2 * Healing Spell Rebalance 3 * Update cure_wounds.yml * Update cure_poison.yml * Update cure_wounds.yml * Update cure_poison.yml * Update cure_heat.yml * Update cure_wounds.yml --- .../_CP14/Entities/Actions/Spells/Life/cure_heat.yml | 4 ++-- .../_CP14/Entities/Actions/Spells/Life/cure_poison.yml | 7 +++---- .../_CP14/Entities/Actions/Spells/Life/cure_wounds.yml | 6 ++++-- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/cure_heat.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/cure_heat.yml index d43079d6d6..f3c04336fb 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/cure_heat.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/cure_heat.yml @@ -9,7 +9,7 @@ - type: CP14MagicEffectCastSlowdown speedMultiplier: 0.5 - type: CP14MagicEffectManaCost - manaCost: 10 + manaCost: 12 - type: CP14MagicEffect magicType: Life telegraphyEffects: @@ -87,4 +87,4 @@ components: - type: CP14SpellStorage spells: - - CP14ActionSpellCureBurn \ No newline at end of file + - CP14ActionSpellCureBurn diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/cure_poison.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/cure_poison.yml index 503939eb6f..28cf0966d6 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/cure_poison.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/cure_poison.yml @@ -9,7 +9,7 @@ - type: CP14MagicEffectCastSlowdown speedMultiplier: 0.5 - type: CP14MagicEffectManaCost - manaCost: 10 + manaCost: 12 - type: CP14MagicEffect magicType: Life telegraphyEffects: @@ -29,9 +29,8 @@ Bloodloss: -10 Caustic: -10 - !type:Jitter - - !type:ModifyBleedAmount - !type:ModifyBloodLevel - amount: 10 + amount: 25 - type: CP14MagicEffectVerbalAspect startSpeech: "Nella coda..." endSpeech: "sta il veleno" @@ -90,4 +89,4 @@ components: - type: CP14SpellStorage spells: - - CP14ActionSpellBloodPurification \ No newline at end of file + - CP14ActionSpellBloodPurification diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/cure_wounds.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/cure_wounds.yml index e339b649d3..bf6550a901 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/cure_wounds.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/cure_wounds.yml @@ -9,7 +9,7 @@ - type: CP14MagicEffectCastSlowdown speedMultiplier: 0.5 - type: CP14MagicEffectManaCost - manaCost: 10 + manaCost: 12 - type: CP14MagicEffect magicType: Life telegraphyEffects: @@ -29,6 +29,8 @@ Blunt: -10 Piercing: -10 - !type:Jitter + - !type:ModifyBleedAmount + amount: -5 - type: CP14MagicEffectVerbalAspect startSpeech: "Et curabuntur..." endSpeech: "vulnera tua" @@ -84,4 +86,4 @@ components: - type: CP14SpellStorage spells: - - CP14ActionSpellCureWounds \ No newline at end of file + - CP14ActionSpellCureWounds From 0551caf98f9dc800c06c37c8aee769d8fca6d99d Mon Sep 17 00:00:00 2001 From: Lucson1337 Date: Thu, 29 May 2025 00:22:20 +0300 Subject: [PATCH 07/10] =?UTF-8?q?Eye=20patch/=D0=B3=D0=BB=D0=B0=D0=B7?= =?UTF-8?q?=D0=BD=D0=B0=D1=8F=20=D0=BF=D0=BE=D0=B2=D1=8F=D0=B7=D0=BA=D0=B0?= =?UTF-8?q?=20(#1329)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../_CP14/Entities/Clothing/Eyes/eyes.yml | 18 ++++++++++++++ .../_CP14/Loadouts/Jobs/general.yml | 9 +++++-- .../Eyes/eye_patch.rsi/equipped-EYES.png | Bin 0 -> 294 bytes .../eye_patch.rsi/flipped-equipped-EYES.png | Bin 0 -> 288 bytes .../Clothing/Eyes/eye_patch.rsi/icon.png | Bin 0 -> 227 bytes .../Clothing/Eyes/eye_patch.rsi/meta.json | 22 ++++++++++++++++++ 6 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 Resources/Textures/_CP14/Clothing/Eyes/eye_patch.rsi/equipped-EYES.png create mode 100644 Resources/Textures/_CP14/Clothing/Eyes/eye_patch.rsi/flipped-equipped-EYES.png create mode 100644 Resources/Textures/_CP14/Clothing/Eyes/eye_patch.rsi/icon.png create mode 100644 Resources/Textures/_CP14/Clothing/Eyes/eye_patch.rsi/meta.json diff --git a/Resources/Prototypes/_CP14/Entities/Clothing/Eyes/eyes.yml b/Resources/Prototypes/_CP14/Entities/Clothing/Eyes/eyes.yml index 9e8f84be1b..f69ec4bad1 100644 --- a/Resources/Prototypes/_CP14/Entities/Clothing/Eyes/eyes.yml +++ b/Resources/Prototypes/_CP14/Entities/Clothing/Eyes/eyes.yml @@ -104,3 +104,21 @@ sprite: _CP14/Clothing/Eyes/thaumaturgy_glasses.rsi - type: CP14MagicEssenceScanner - type: VisionCorrection + +- type: entity + parent: CP14ClothingEyesBase + id: CP14ClothingEyesEyePatch + name: eye patch + description: Hides the mutilation of the eyes. + components: + - type: Foldable + canFoldInsideContainer: true + unfoldVerbText: fold-flip-verb + foldVerbText: fold-flip-verb + - type: FoldableClothing + foldedEquippedPrefix: flipped + foldedHeldPrefix: flipped + - type: Sprite + sprite: _CP14/Clothing/Eyes/eye_patch.rsi + - type: Clothing + sprite: _CP14/Clothing/Eyes/eye_patch.rsi diff --git a/Resources/Prototypes/_CP14/Loadouts/Jobs/general.yml b/Resources/Prototypes/_CP14/Loadouts/Jobs/general.yml index 3225e3cdb8..f4c0701744 100644 --- a/Resources/Prototypes/_CP14/Loadouts/Jobs/general.yml +++ b/Resources/Prototypes/_CP14/Loadouts/Jobs/general.yml @@ -155,7 +155,7 @@ loadouts: - CP14ClothingEyesMonocle - CP14ClothingEyesGlasses - + - CP14ClothingEyesEyePatch - type: loadout id: CP14ClothingEyesMonocle equipment: @@ -164,7 +164,12 @@ - type: loadout id: CP14ClothingEyesGlasses equipment: - eyes: CP14ClothingEyesGlasses + eyes: CP14ClothingEyesGlasses + +- type: loadout + id: CP14ClothingEyesEyePatch + equipment: + eyes: CP14ClothingEyesEyePatch # Gloves diff --git a/Resources/Textures/_CP14/Clothing/Eyes/eye_patch.rsi/equipped-EYES.png b/Resources/Textures/_CP14/Clothing/Eyes/eye_patch.rsi/equipped-EYES.png new file mode 100644 index 0000000000000000000000000000000000000000..2a5b9936cd65119ee7466e0960e7406cd06a52c3 GIT binary patch literal 294 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|9(cMqhE&XX zd&`i!DL|y{VX*VXDN`zTHb0z@{P4>E`Lmm@wXJaM5&FxzePuz$it6>6KkRnTJI_Do zoFHS}Cf^|ACqI>xHr-B{BA|UYv%?^wYNmZr<&V&&z9}6YQ%Y5rpT7BW?*59Y1?%Om z8P7euF1$1HO!NNwn#ui2bC^s1dIKE*1-dVeR_)5ZtzsH`pYzM1yvct{4PRAH+g@6< zX3NEilm33Z@T<#;XIh%s+&%AwK1C~DSK2%suPUx+^y=6crKmi-~U4M>cXSjbGKddcd4O+UkJL%X1(c)EG zu4bz$yUXzu-`BUUd&XqN6?foWTLAkk$t3|NZcFYz*wJ8kY(~A2 z?{+h#Vvgbf^Lvv+EsdsrI}<6qs`O>n_v4!x9Zm`|7@XJt{`SnY$!b%AN Date: Thu, 29 May 2025 00:22:47 +0300 Subject: [PATCH 08/10] Another Merchant gameplay attempt (#1308) * setup UI * setup debug data * graph control setup * reputation trade component * unlocking logic * smoe real reputation costing * remove sponsors part, add trading specific UI nodes * port to default pricing system * buy cooldown * fuck off trading cabinets * real good cooldown UI * Cool unlock sound * reputation earning * cool purchare sound * coin & sprite work * delete old guidebooks * cool purcharing VFX * better ui * victoria gardens * Update migration.yml * Update migration.yml * cooldown removed * contracts * Update migration.yml * remove CP14Material * materials appraise * food appraise * auto economy pricing system * alchemy reagents appraise * coins resprite * alchemy appraise 2 * modular weapon appraise * selling platform * Update PricingSystem.cs * Update CP14TradingPlatformSystem.cs * merchants returns + map update * Update CP14StationEconomySystem.Price.cs --- .../Trading/CP14ClientStationEconomySystem.cs | 7 + .../CP14ClientTradingPlatformSystem.cs | 7 + .../CP14TradingFactionButtonControl.xaml | 20 + .../CP14TradingFactionButtonControl.xaml.cs | 23 + .../CP14TradingPlatformBoundUserInterface.cs | 32 + .../Trading/CP14TradingPlatformWindow.xaml | 96 ++ .../Trading/CP14TradingPlatformWindow.xaml.cs | 254 +++ .../CP14StoreBoundUserInterface.cs | 34 - .../CP14StoreProductControl.xaml | 24 - .../CP14StoreProductControl.xaml.cs | 40 - .../TravelingStoreShip/CP14StoreWindow.xaml | 32 - .../CP14StoreWindow.xaml.cs | 60 - .../CP14PriceControl.xaml | 0 .../CP14PriceControl.xaml.cs | 2 +- .../Tests/_CP14/CP14CargoTest.cs | 9 +- Content.Server/Cargo/Systems/PricingSystem.cs | 8 +- .../CP14RerollSpecialPositionsService.cs | 64 - .../_CP14/Cargo/CP14CargoSystem.Portals.cs | 55 - .../_CP14/Cargo/CP14CargoSystem.UI.cs | 112 -- Content.Server/_CP14/Cargo/CP14CargoSystem.cs | 317 ---- .../Currency/CP14CurrencySystem.Converter.cs | 24 +- .../_CP14/Currency/CP14CurrencySystem.cs | 43 +- .../ModularCraft/CP14ModularCraftSystem.cs | 32 + .../CP14TownSendConditionComponent.cs | 42 - .../CP14CurrencyCollectConditionSystem.cs | 9 +- .../Systems/CP14TownSendConditionSystem.cs | 94 -- .../Trading/CP14SellingPlatformComponent.cs | 20 + .../Trading/CP14StationEconomySystem.Price.cs | 30 + .../_CP14/Trading/CP14StationEconomySystem.cs | 54 + .../Trading/CP14TradingPlatformSystem.cs | 125 ++ Content.Shared/Armor/ArmorComponent.cs | 2 +- .../_CP14/Cargo/CP14SharedCargoSystem.cs | 18 - Content.Shared/_CP14/Cargo/CP14StoreUI.cs | 65 - .../Cargo/CP14TradingInfoBoardComponent.cs | 17 - .../_CP14/Cargo/CP14TradingPortalComponent.cs | 63 - .../BuyServices/CP14UnlockPositionsService.cs | 81 - .../CP14StoreBuyPositionPrototype.cs | 64 - .../Prototype/CP14StoreFactionPrototype.cs | 16 - .../CP14StoreSellPositionPrototype.cs | 59 - .../SellServices/CP14SellProrotypeService.cs | 65 - .../SellServices/CP14SellStackService.cs | 74 - .../SellServices/CP14SellWhitelistService.cs | 72 - .../_CP14/Currency/CP14CurrencyComponent.cs | 12 - .../CP14CurrencyConverterComponent.cs | 5 + .../Currency/CP14SharedCurrencySystem.cs | 15 - .../SharedCP14MagicEnergySystem.cs | 18 + .../_CP14/Material/CP14MaterialComponent.cs | 11 - .../_CP14/Material/CP14MaterialSystem.cs | 39 - .../BuyServices/CP14BuyItemsService.cs | 22 +- Content.Shared/_CP14/Trading/CP14TradingUI.cs | 21 + .../Components/CP14StationEconomyComponent.cs | 16 + .../CP14TradingContractComponent.cs | 18 + .../CP14TradingPlatformComponent.cs | 26 + .../CP14TradingReputationComponent.cs | 24 + .../Prototypes/CP14TradingFactionPrototype.cs | 21 + .../CP14TradingPositionPrototype.cs | 66 + .../Systems/CP14SharedStationEconomySystem.cs | 23 + .../CP14SharedTradingPlatformSystem.UI.cs | 47 + .../CP14SharedTradingPlatformSystem.cs | 126 ++ .../Requirements/MaterialResource.cs | 10 +- .../Audio/_CP14/Effects/attributions.yml | 10 + Resources/Audio/_CP14/Effects/cash.ogg | Bin 0 -> 27736 bytes .../Audio/_CP14/Effects/coin_impact1.ogg | Bin 0 -> 21759 bytes .../Audio/_CP14/Effects/coin_impact2.ogg | Bin 0 -> 25241 bytes .../Audio/_CP14/Effects/coin_impact3.ogg | Bin 0 -> 23933 bytes .../Locale/en-US/_CP14/cargo/buyPositions.ftl | 2 - .../en-US/_CP14/statisticTracker/trackers.ftl | 4 - .../Locale/en-US/_CP14/store/factions.ftl | 11 - .../en-US/_CP14/store/positions_buy.ftl | 40 - .../Locale/en-US/_CP14/store/services.ftl | 10 - Resources/Locale/en-US/_CP14/store/ui.ftl | 11 - .../Locale/en-US/_CP14/trading/factions.ftl | 3 + Resources/Locale/en-US/_CP14/trading/ui.ftl | 14 + .../Locale/ru-RU/_CP14/cargo/buyPositions.ftl | 2 - .../ru-RU/_CP14/statisticTracker/trackers.ftl | 4 - .../Locale/ru-RU/_CP14/store/factions.ftl | 11 - .../ru-RU/_CP14/store/positions_buy.ftl | 40 - .../Locale/ru-RU/_CP14/store/services.ftl | 9 - Resources/Locale/ru-RU/_CP14/store/ui.ftl | 11 - .../Locale/ru-RU/_CP14/trading/factions.ftl | 3 + Resources/Locale/ru-RU/_CP14/trading/ui.ftl | 14 + Resources/Maps/_CP14/comoss.yml | 1395 +++++++++++------ Resources/Maps/_CP14/comoss_d.yml | 847 +++++----- .../Reagents/Consumable/Food/food.yml | 6 +- .../Catalog/Cargo/Store/BradFamily/buy.yml | 275 ---- .../Catalog/Cargo/Store/BradFamily/sell.yml | 14 - .../Cargo/Store/BradFamily/sell_special.yml | 89 -- .../_CP14/Catalog/Cargo/Store/General/buy.yml | 21 - .../Cargo/Store/General/sell_special.yml | 0 .../Catalog/Cargo/Store/HelmirWeapon/buy.yml | 99 -- .../Catalog/Cargo/Store/SpiceStream/buy.yml | 169 -- .../Cargo/Store/SpiceStream/buy_special.yml | 45 - .../Catalog/Cargo/Store/SpiceStream/sell.yml | 94 -- .../Cargo/Store/SpiceStream/sell_special.yml | 129 -- .../Catalog/Cargo/Store/Sylphoria/buy.yml | 68 - .../Catalog/Cargo/Store/Sylphoria/sell.yml | 32 - .../Cargo/Store/Sylphoria/sell_special.yml | 139 -- .../_CP14/Catalog/Cargo/Store/factions.yml | 19 - .../Head/ModularArmor/Aventail/chainmail.yml | 16 +- .../Head/ModularArmor/Aventail/plate.yml | 16 +- .../Head/ModularArmor/Helmet/capellina.yml | 16 +- .../Head/ModularArmor/Helmet/palm_helmet.yml | 16 +- .../Head/ModularArmor/Visor/chainmail.yml | 16 +- .../Head/ModularArmor/Visor/plate.yml | 16 +- .../ModularArmor/Breastplate/chainmail.yml | 16 +- .../ModularArmor/Breastplate/cuirass.yml | 16 +- .../Breastplate/infantry_cuirass.yml | 16 +- .../ModularArmor/Cuisses/chainmail.yml | 16 +- .../ModularArmor/Cuisses/plate.yml | 16 +- .../ModularArmor/Greave/chainmail.yml | 16 +- .../ModularArmor/Greave/plate.yml | 16 +- .../_CP14/Entities/Clothing/Rings/amulet.yml | 6 +- .../Entities/Markers/Spawners/unique_loot.yml | 14 - .../_CP14/Entities/Mobs/Species/base.yml | 1 + .../_CP14/Entities/Objects/Economy/coins.yml | 22 +- .../Entities/Objects/Economy/jewelry.yml | 17 +- .../Objects/Economy/trade_contracts.yml | 40 + .../_CP14/Entities/Objects/Economy/wallet.yml | 15 + .../_CP14/Entities/Objects/Keys/key.yml | 14 +- .../_CP14/Entities/Objects/Keys/keyrings.yml | 3 + .../_CP14/Entities/Objects/Keys/locks.yml | 14 +- .../_CP14/Entities/Objects/Keys/tools.yml | 9 + .../_CP14/Entities/Objects/Materials/ash.yml | 50 - .../_CP14/Entities/Objects/Materials/bars.yml | 27 +- .../Entities/Objects/Materials/flora.yml | 3 + .../_CP14/Entities/Objects/Materials/misc.yml | 55 + .../_CP14/Entities/Objects/Materials/ores.yml | 20 +- .../Entities/Objects/Materials/rocks.yml | 12 +- .../Entities/Objects/Materials/scrap.yml | 24 +- .../Entities/Objects/Materials/simple.yml | 7 +- .../_CP14/Entities/Objects/Materials/wood.yml | 13 +- .../Objects/ModularTools/Blade/axe.yml | 16 +- .../Objects/ModularTools/Blade/dagger.yml | 16 +- .../Objects/ModularTools/Blade/hammer.yml | 16 +- .../Objects/ModularTools/Blade/hoe.yml | 16 +- .../Objects/ModularTools/Blade/mace.yml | 16 +- .../Objects/ModularTools/Blade/pickaxe.yml | 16 +- .../Objects/ModularTools/Blade/rapier.yml | 16 +- .../Objects/ModularTools/Blade/shovel.yml | 16 +- .../Objects/ModularTools/Blade/sickle.yml | 16 +- .../Objects/ModularTools/Blade/skimitar.yml | 16 +- .../Objects/ModularTools/Blade/spear.yml | 16 +- .../Objects/ModularTools/Blade/sword.yml | 16 +- .../ModularTools/Garde/guildmaster.yml | 5 +- .../Objects/ModularTools/Garde/sharp.yml | 16 +- .../Objects/ModularTools/Garde/sturdy.yml | 16 +- .../Objects/ModularTools/Inlay/quartz.yml | 4 + .../Objects/ModularTools/Tip/arrows.yml | 16 +- .../Entities/Objects/ModularTools/grips.yml | 42 + .../Objects/Specific/Alchemy/tools.yml | 15 +- .../Objects/Specific/Alchemy/vials.yml | 25 +- .../Ranged/Ammunition/crossbowBolts.yml | 16 +- .../Objects/Weapons/Ranged/lightCrossbow.yml | 4 +- .../_CP14/Entities/Stations/base.yml | 7 + .../Specific/Blacksmith/sharpening_stone.yml | 12 +- .../Specific/Economy/trade_board.yml | 27 - .../Specific/Economy/trade_platform.yml | 121 ++ .../Specific/Economy/trade_portal.yml | 120 -- .../Prototypes/_CP14/Guidebook/Eng/jobs.yml | 10 - .../Prototypes/_CP14/Guidebook/Eng/misc.yml | 19 +- .../Prototypes/_CP14/Guidebook/Ru/jobs.yml | 10 - .../Prototypes/_CP14/Guidebook/Ru/misc.yml | 19 +- .../Prototypes/_CP14/Materials/simple.yml | 44 +- .../_CP14/Objectives/empire_orders.yml | 50 +- .../Reagents/Consumable/Drink/alcohol.yml | 12 + .../_CP14/Reagents/magic_essence.yml | 29 +- .../Prototypes/_CP14/Reagents/precurser.yml | 11 +- .../_CP14/Reagents/target_effects.yml | 24 + .../_CP14/Recipes/Workbench/furnace.yml | 4 +- .../_CP14/Roles/Jobs/Traders/merchant.yml | 4 +- .../_CP14/SoundCollections/misc.yml | 7 + .../Prototypes/_CP14/Trading/brad_potions.yml | 212 +++ .../Prototypes/_CP14/Trading/contracts.yml | 23 + .../Prototypes/_CP14/Trading/factions.yml | 12 + .../_CP14/Trading/victoria_gardens.yml | 87 + .../Prototypes/_CP14/UniqueLoot/tradepost.yml | 26 - .../_CP14/Guidebook_EN/JobsTabs/Merchant.xml | 17 - .../JobsTabs/MerchantTabs/Trading.xml | 41 - .../_CP14/Guidebook_RU/JobsTabs/Merchant.xml | 17 - .../JobsTabs/MerchantTabs/Trading.xml | 41 - .../Textures/_CP14/Interface/Misc/star.png | Bin 0 -> 229 bytes .../Interface/NodeTree/trading.rsi/frame.png | Bin 0 -> 396 bytes .../NodeTree/trading.rsi/hovered.png | Bin 0 -> 281 bytes .../NodeTree/trading.rsi/learned.png | Bin 0 -> 294 bytes .../Interface/NodeTree/trading.rsi/meta.json | 23 + .../NodeTree/trading.rsi/selected.png | Bin 0 -> 289 bytes .../Objects/Economy/cp_coin.rsi/coin1.png | Bin 182 -> 182 bytes .../Objects/Economy/cp_coin.rsi/coin10.png | Bin 334 -> 412 bytes .../Objects/Economy/cp_coin.rsi/coin2.png | Bin 216 -> 231 bytes .../Objects/Economy/cp_coin.rsi/coin3.png | Bin 250 -> 287 bytes .../Objects/Economy/cp_coin.rsi/coin4.png | Bin 265 -> 288 bytes .../Objects/Economy/cp_coin.rsi/coin5.png | Bin 286 -> 313 bytes .../Objects/Economy/cp_coin.rsi/coin6.png | Bin 310 -> 319 bytes .../Objects/Economy/cp_coin.rsi/coin7.png | Bin 318 -> 378 bytes .../Objects/Economy/cp_coin.rsi/coin8.png | Bin 315 -> 412 bytes .../Objects/Economy/cp_coin.rsi/coin9.png | Bin 335 -> 373 bytes .../Objects/Economy/cp_coin.rsi/meta.json | 2 +- .../Objects/Economy/gp_coin.rsi/coin1.png | Bin 221 -> 261 bytes .../Objects/Economy/gp_coin.rsi/coin10.png | Bin 420 -> 557 bytes .../Objects/Economy/gp_coin.rsi/coin2.png | Bin 266 -> 305 bytes .../Objects/Economy/gp_coin.rsi/coin3.png | Bin 301 -> 340 bytes .../Objects/Economy/gp_coin.rsi/coin4.png | Bin 354 -> 453 bytes .../Objects/Economy/gp_coin.rsi/coin5.png | Bin 381 -> 469 bytes .../Objects/Economy/gp_coin.rsi/coin6.png | Bin 393 -> 495 bytes .../Objects/Economy/gp_coin.rsi/coin7.png | Bin 397 -> 496 bytes .../Objects/Economy/gp_coin.rsi/coin8.png | Bin 399 -> 521 bytes .../Objects/Economy/gp_coin.rsi/coin9.png | Bin 401 -> 544 bytes .../Objects/Economy/gp_coin.rsi/meta.json | 2 +- .../Objects/Economy/pp_coin.rsi/coin1.png | Bin 268 -> 243 bytes .../Objects/Economy/pp_coin.rsi/coin10.png | Bin 434 -> 525 bytes .../Objects/Economy/pp_coin.rsi/coin2.png | Bin 335 -> 314 bytes .../Objects/Economy/pp_coin.rsi/coin3.png | Bin 405 -> 376 bytes .../Objects/Economy/pp_coin.rsi/coin4.png | Bin 437 -> 398 bytes .../Objects/Economy/pp_coin.rsi/coin5.png | Bin 447 -> 416 bytes .../Objects/Economy/pp_coin.rsi/coin6.png | Bin 453 -> 468 bytes .../Objects/Economy/pp_coin.rsi/coin7.png | Bin 415 -> 468 bytes .../Objects/Economy/pp_coin.rsi/coin8.png | Bin 431 -> 484 bytes .../Objects/Economy/pp_coin.rsi/coin9.png | Bin 433 -> 499 bytes .../Objects/Economy/pp_coin.rsi/meta.json | 2 +- .../Objects/Economy/sp_coin.rsi/coin1.png | Bin 199 -> 195 bytes .../Objects/Economy/sp_coin.rsi/coin10.png | Bin 357 -> 432 bytes .../Objects/Economy/sp_coin.rsi/coin2.png | Bin 219 -> 229 bytes .../Objects/Economy/sp_coin.rsi/coin3.png | Bin 270 -> 280 bytes .../Objects/Economy/sp_coin.rsi/coin4.png | Bin 309 -> 332 bytes .../Objects/Economy/sp_coin.rsi/coin5.png | Bin 322 -> 324 bytes .../Objects/Economy/sp_coin.rsi/coin6.png | Bin 328 -> 359 bytes .../Objects/Economy/sp_coin.rsi/coin7.png | Bin 348 -> 411 bytes .../Objects/Economy/sp_coin.rsi/coin8.png | Bin 353 -> 439 bytes .../Objects/Economy/sp_coin.rsi/coin9.png | Bin 391 -> 419 bytes .../Objects/Economy/sp_coin.rsi/meta.json | 2 +- .../Economy/trade_contracts.rsi/blank.png | Bin 0 -> 548 bytes .../trade_contracts.rsi/brad_potions.png | Bin 0 -> 650 bytes .../Economy/trade_contracts.rsi/meta.json | 20 + .../trade_contracts.rsi/victoria_garden.png | Bin 0 -> 648 bytes .../Specific/Blacksmith/furnace.rsi.rar | Bin 7087 -> 0 bytes .../Economy/buy_platform.rsi/base.png | Bin 0 -> 711 bytes .../Specific/Economy/buy_platform.rsi/buy.png | Bin 0 -> 446 bytes .../Economy/buy_platform.rsi/impact.png | Bin 0 -> 2399 bytes .../Economy/buy_platform.rsi/meta.json | 34 + .../Economy/buy_platform.rsi/sell.png | Bin 0 -> 558 bytes .../Economy/trade_portal.rsi/base.png | Bin 2578 -> 0 bytes .../Economy/trade_portal.rsi/base_door.png | Bin 104 -> 0 bytes .../Economy/trade_portal.rsi/base_open.png | Bin 1981 -> 0 bytes .../Economy/trade_portal.rsi/flag_bard.png | Bin 1496 -> 0 bytes .../Economy/trade_portal.rsi/flag_helmir.png | Bin 1339 -> 0 bytes .../Economy/trade_portal.rsi/flag_spice.png | Bin 1435 -> 0 bytes .../trade_portal.rsi/flag_sylphoria.png | Bin 1344 -> 0 bytes .../Economy/trade_portal.rsi/icon.png | Bin 3050 -> 0 bytes .../Economy/trade_portal.rsi/meta.json | 68 - Resources/migration.yml | 36 +- 250 files changed, 3715 insertions(+), 4830 deletions(-) create mode 100644 Content.Client/_CP14/Trading/CP14ClientStationEconomySystem.cs create mode 100644 Content.Client/_CP14/Trading/CP14ClientTradingPlatformSystem.cs create mode 100644 Content.Client/_CP14/Trading/CP14TradingFactionButtonControl.xaml create mode 100644 Content.Client/_CP14/Trading/CP14TradingFactionButtonControl.xaml.cs create mode 100644 Content.Client/_CP14/Trading/CP14TradingPlatformBoundUserInterface.cs create mode 100644 Content.Client/_CP14/Trading/CP14TradingPlatformWindow.xaml create mode 100644 Content.Client/_CP14/Trading/CP14TradingPlatformWindow.xaml.cs delete mode 100644 Content.Client/_CP14/TravelingStoreShip/CP14StoreBoundUserInterface.cs delete mode 100644 Content.Client/_CP14/TravelingStoreShip/CP14StoreProductControl.xaml delete mode 100644 Content.Client/_CP14/TravelingStoreShip/CP14StoreProductControl.xaml.cs delete mode 100644 Content.Client/_CP14/TravelingStoreShip/CP14StoreWindow.xaml delete mode 100644 Content.Client/_CP14/TravelingStoreShip/CP14StoreWindow.xaml.cs rename Content.Client/_CP14/{TravelingStoreShip => UserInterface}/CP14PriceControl.xaml (100%) rename Content.Client/_CP14/{TravelingStoreShip => UserInterface}/CP14PriceControl.xaml.cs (96%) delete mode 100644 Content.Server/_CP14/Cargo/BuyServices/CP14RerollSpecialPositionsService.cs delete mode 100644 Content.Server/_CP14/Cargo/CP14CargoSystem.Portals.cs delete mode 100644 Content.Server/_CP14/Cargo/CP14CargoSystem.UI.cs delete mode 100644 Content.Server/_CP14/Cargo/CP14CargoSystem.cs delete mode 100644 Content.Server/_CP14/Objectives/Components/CP14TownSendConditionComponent.cs delete mode 100644 Content.Server/_CP14/Objectives/Systems/CP14TownSendConditionSystem.cs create mode 100644 Content.Server/_CP14/Trading/CP14SellingPlatformComponent.cs create mode 100644 Content.Server/_CP14/Trading/CP14StationEconomySystem.Price.cs create mode 100644 Content.Server/_CP14/Trading/CP14StationEconomySystem.cs create mode 100644 Content.Server/_CP14/Trading/CP14TradingPlatformSystem.cs delete mode 100644 Content.Shared/_CP14/Cargo/CP14SharedCargoSystem.cs delete mode 100644 Content.Shared/_CP14/Cargo/CP14StoreUI.cs delete mode 100644 Content.Shared/_CP14/Cargo/CP14TradingInfoBoardComponent.cs delete mode 100644 Content.Shared/_CP14/Cargo/CP14TradingPortalComponent.cs delete mode 100644 Content.Shared/_CP14/Cargo/Prototype/BuyServices/CP14UnlockPositionsService.cs delete mode 100644 Content.Shared/_CP14/Cargo/Prototype/CP14StoreBuyPositionPrototype.cs delete mode 100644 Content.Shared/_CP14/Cargo/Prototype/CP14StoreFactionPrototype.cs delete mode 100644 Content.Shared/_CP14/Cargo/Prototype/CP14StoreSellPositionPrototype.cs delete mode 100644 Content.Shared/_CP14/Cargo/Prototype/SellServices/CP14SellProrotypeService.cs delete mode 100644 Content.Shared/_CP14/Cargo/Prototype/SellServices/CP14SellStackService.cs delete mode 100644 Content.Shared/_CP14/Cargo/Prototype/SellServices/CP14SellWhitelistService.cs delete mode 100644 Content.Shared/_CP14/Currency/CP14CurrencyComponent.cs delete mode 100644 Content.Shared/_CP14/Material/CP14MaterialComponent.cs delete mode 100644 Content.Shared/_CP14/Material/CP14MaterialSystem.cs rename Content.Shared/_CP14/{Cargo/Prototype => Trading}/BuyServices/CP14BuyItemsService.cs (60%) create mode 100644 Content.Shared/_CP14/Trading/CP14TradingUI.cs create mode 100644 Content.Shared/_CP14/Trading/Components/CP14StationEconomyComponent.cs create mode 100644 Content.Shared/_CP14/Trading/Components/CP14TradingContractComponent.cs create mode 100644 Content.Shared/_CP14/Trading/Components/CP14TradingPlatformComponent.cs create mode 100644 Content.Shared/_CP14/Trading/Components/CP14TradingReputationComponent.cs create mode 100644 Content.Shared/_CP14/Trading/Prototypes/CP14TradingFactionPrototype.cs create mode 100644 Content.Shared/_CP14/Trading/Prototypes/CP14TradingPositionPrototype.cs create mode 100644 Content.Shared/_CP14/Trading/Systems/CP14SharedStationEconomySystem.cs create mode 100644 Content.Shared/_CP14/Trading/Systems/CP14SharedTradingPlatformSystem.UI.cs create mode 100644 Content.Shared/_CP14/Trading/Systems/CP14SharedTradingPlatformSystem.cs create mode 100644 Resources/Audio/_CP14/Effects/cash.ogg create mode 100644 Resources/Audio/_CP14/Effects/coin_impact1.ogg create mode 100644 Resources/Audio/_CP14/Effects/coin_impact2.ogg create mode 100644 Resources/Audio/_CP14/Effects/coin_impact3.ogg delete mode 100644 Resources/Locale/en-US/_CP14/cargo/buyPositions.ftl delete mode 100644 Resources/Locale/en-US/_CP14/statisticTracker/trackers.ftl delete mode 100644 Resources/Locale/en-US/_CP14/store/factions.ftl delete mode 100644 Resources/Locale/en-US/_CP14/store/positions_buy.ftl delete mode 100644 Resources/Locale/en-US/_CP14/store/services.ftl delete mode 100644 Resources/Locale/en-US/_CP14/store/ui.ftl create mode 100644 Resources/Locale/en-US/_CP14/trading/factions.ftl create mode 100644 Resources/Locale/en-US/_CP14/trading/ui.ftl delete mode 100644 Resources/Locale/ru-RU/_CP14/cargo/buyPositions.ftl delete mode 100644 Resources/Locale/ru-RU/_CP14/statisticTracker/trackers.ftl delete mode 100644 Resources/Locale/ru-RU/_CP14/store/factions.ftl delete mode 100644 Resources/Locale/ru-RU/_CP14/store/positions_buy.ftl delete mode 100644 Resources/Locale/ru-RU/_CP14/store/services.ftl delete mode 100644 Resources/Locale/ru-RU/_CP14/store/ui.ftl create mode 100644 Resources/Locale/ru-RU/_CP14/trading/factions.ftl create mode 100644 Resources/Locale/ru-RU/_CP14/trading/ui.ftl delete mode 100644 Resources/Prototypes/_CP14/Catalog/Cargo/Store/BradFamily/buy.yml delete mode 100644 Resources/Prototypes/_CP14/Catalog/Cargo/Store/BradFamily/sell.yml delete mode 100644 Resources/Prototypes/_CP14/Catalog/Cargo/Store/BradFamily/sell_special.yml delete mode 100644 Resources/Prototypes/_CP14/Catalog/Cargo/Store/General/buy.yml delete mode 100644 Resources/Prototypes/_CP14/Catalog/Cargo/Store/General/sell_special.yml delete mode 100644 Resources/Prototypes/_CP14/Catalog/Cargo/Store/HelmirWeapon/buy.yml delete mode 100644 Resources/Prototypes/_CP14/Catalog/Cargo/Store/SpiceStream/buy.yml delete mode 100644 Resources/Prototypes/_CP14/Catalog/Cargo/Store/SpiceStream/buy_special.yml delete mode 100644 Resources/Prototypes/_CP14/Catalog/Cargo/Store/SpiceStream/sell.yml delete mode 100644 Resources/Prototypes/_CP14/Catalog/Cargo/Store/SpiceStream/sell_special.yml delete mode 100644 Resources/Prototypes/_CP14/Catalog/Cargo/Store/Sylphoria/buy.yml delete mode 100644 Resources/Prototypes/_CP14/Catalog/Cargo/Store/Sylphoria/sell.yml delete mode 100644 Resources/Prototypes/_CP14/Catalog/Cargo/Store/Sylphoria/sell_special.yml delete mode 100644 Resources/Prototypes/_CP14/Catalog/Cargo/Store/factions.yml create mode 100644 Resources/Prototypes/_CP14/Entities/Objects/Economy/trade_contracts.yml delete mode 100644 Resources/Prototypes/_CP14/Entities/Objects/Materials/ash.yml delete mode 100644 Resources/Prototypes/_CP14/Entities/Structures/Specific/Economy/trade_board.yml create mode 100644 Resources/Prototypes/_CP14/Entities/Structures/Specific/Economy/trade_platform.yml delete mode 100644 Resources/Prototypes/_CP14/Entities/Structures/Specific/Economy/trade_portal.yml create mode 100644 Resources/Prototypes/_CP14/Trading/brad_potions.yml create mode 100644 Resources/Prototypes/_CP14/Trading/contracts.yml create mode 100644 Resources/Prototypes/_CP14/Trading/factions.yml create mode 100644 Resources/Prototypes/_CP14/Trading/victoria_gardens.yml delete mode 100644 Resources/Prototypes/_CP14/UniqueLoot/tradepost.yml delete mode 100644 Resources/ServerInfo/_CP14/Guidebook_EN/JobsTabs/Merchant.xml delete mode 100644 Resources/ServerInfo/_CP14/Guidebook_EN/JobsTabs/MerchantTabs/Trading.xml delete mode 100644 Resources/ServerInfo/_CP14/Guidebook_RU/JobsTabs/Merchant.xml delete mode 100644 Resources/ServerInfo/_CP14/Guidebook_RU/JobsTabs/MerchantTabs/Trading.xml create mode 100644 Resources/Textures/_CP14/Interface/Misc/star.png create mode 100644 Resources/Textures/_CP14/Interface/NodeTree/trading.rsi/frame.png create mode 100644 Resources/Textures/_CP14/Interface/NodeTree/trading.rsi/hovered.png create mode 100644 Resources/Textures/_CP14/Interface/NodeTree/trading.rsi/learned.png create mode 100644 Resources/Textures/_CP14/Interface/NodeTree/trading.rsi/meta.json create mode 100644 Resources/Textures/_CP14/Interface/NodeTree/trading.rsi/selected.png create mode 100644 Resources/Textures/_CP14/Objects/Specific/Economy/trade_contracts.rsi/blank.png create mode 100644 Resources/Textures/_CP14/Objects/Specific/Economy/trade_contracts.rsi/brad_potions.png create mode 100644 Resources/Textures/_CP14/Objects/Specific/Economy/trade_contracts.rsi/meta.json create mode 100644 Resources/Textures/_CP14/Objects/Specific/Economy/trade_contracts.rsi/victoria_garden.png delete mode 100644 Resources/Textures/_CP14/Structures/Specific/Blacksmith/furnace.rsi.rar create mode 100644 Resources/Textures/_CP14/Structures/Specific/Economy/buy_platform.rsi/base.png create mode 100644 Resources/Textures/_CP14/Structures/Specific/Economy/buy_platform.rsi/buy.png create mode 100644 Resources/Textures/_CP14/Structures/Specific/Economy/buy_platform.rsi/impact.png create mode 100644 Resources/Textures/_CP14/Structures/Specific/Economy/buy_platform.rsi/meta.json create mode 100644 Resources/Textures/_CP14/Structures/Specific/Economy/buy_platform.rsi/sell.png delete mode 100644 Resources/Textures/_CP14/Structures/Specific/Economy/trade_portal.rsi/base.png delete mode 100644 Resources/Textures/_CP14/Structures/Specific/Economy/trade_portal.rsi/base_door.png delete mode 100644 Resources/Textures/_CP14/Structures/Specific/Economy/trade_portal.rsi/base_open.png delete mode 100644 Resources/Textures/_CP14/Structures/Specific/Economy/trade_portal.rsi/flag_bard.png delete mode 100644 Resources/Textures/_CP14/Structures/Specific/Economy/trade_portal.rsi/flag_helmir.png delete mode 100644 Resources/Textures/_CP14/Structures/Specific/Economy/trade_portal.rsi/flag_spice.png delete mode 100644 Resources/Textures/_CP14/Structures/Specific/Economy/trade_portal.rsi/flag_sylphoria.png delete mode 100644 Resources/Textures/_CP14/Structures/Specific/Economy/trade_portal.rsi/icon.png delete mode 100644 Resources/Textures/_CP14/Structures/Specific/Economy/trade_portal.rsi/meta.json 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/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 0000000000000000000000000000000000000000..29324caa98e95307ced2a2658bf06a8ab44266be GIT binary patch literal 27736 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..2bd0e5ae903d44d5ec805fc6cc352fcadbd2fd40 GIT binary patch literal 229 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRM!3HF?&tBaMq!^2X+?^QKos)S9 zeBWB`-0|bmIbF5 z*-Jj%aY=38mQMYkcBS{bJ!DT^Fvxq=&DQW&Z~1AZdDCy_PcDkF%#UN3BjPx$MoC0LRA_pFvhs>_fiUs;|Qe`002lSnXYMKj5|F|)7P;fg!{9Fm}Ubp#-(<8 zp69n?hhcbn4O8?CqK$@l0(V~Pcnyz+RK!)g zsFm}rwnPFD@#Vl;l5++`T-HZE*eoE%xa6Dxz;^cuvMCiIPN5#ox7gk+fc~UMW0L?x zyr<7Ekff0)g?grsb`AAs^eDK1y>S71BN9;8^F5HRu}MHm>B2jy-bkv_|4Jc%zGn$4s;RH5(^EC|1eLqmGqLNn3g=y~aEgm94sSlz q8lS^mE!M1cQr4Hdj^j9vb82q+-m2ShA*!nY0000RP&ZYV7l~Wy@T8_=AnylGvl}|4rY+tjo-N@qmN4 z%bYnMvs~H!PC{xWt~$(699E3ZvX%Q literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..f2c62c3939d2e02fc39b1eb910ade7c3d682f700 GIT binary patch literal 294 zcmV+>0oneEP)Px#;7LS5RA_;X2mk=Uu}*qGUIvb@w`r#1^+MY;6A{tr_7I&@WU#pC?tFhc<~sJTd!@td zlD_d0aTs&F4E#;;!8-PA9z>$>lvxOk;)6XQ4jP3t%i=Su&7rw;QY9hWFQM!JVJCH| z#)gwS=l?9BRv|!b2vD2*0NE_}0vsiNmh0oR#RT{x%cb!Z%ul>h?T{*Mm9&5w&juo` sy^?mJbZb$(H~HzUHqj3S003yk6Q>G!p3mHuRR91007*qoM6N<$f@Y<{9 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..b6812ad5d92dd9d76c5abe2b34db573981a079b7 GIT binary patch literal 289 zcmV++0p9+JP)Px#+et)0RA_65cMbI4;jqg#3)c33e<)IwV^=s@G>XtzhCAEzQ|f&`lFth9;*=3gDqlu nv`AVR?wTL3oBzQ9002cEXk(I>iYnSb_e5cnIPqG)9>t-mSIfXnTmh6L+jHU@@V WWf{-q-sKA!fWXt$&t;ucLK6T>952BD delta 119 zcmdnSxQ%gwTS0~O*|+~UOHKYiWyV35b;tB?ANs%Fs(|^Oz%J_t&zryV{K-n_X($JO^&ua&T`%MS`cklgq@7{sIVEE5O zEmw})fm|oYmTs}A<;u?_=JoxJbxbH3C@R+2*#n@mf57hPnSXA5H3LP(I!_U<8*qGn z!NcvnwgDwV2RUvBa`Jp5Lk9`aZ6ZU@lA&kGZWHYhY^wwb8#=uq^o9r<7(tSP@09`Q z4|K~b8c0$Qc9x%Kruu^qs9L!x9hBa{c(0<=m9cT9#A;XPZ!| z)j4S#5y#O&H*IRdWnMqLi0oneX1I_}FF@Fe2L_t(oh3%9v3c@fLgkD}=FZlylES7)fvKWi=d?Y^Eqh@M$ zTTcbw?sKiw04lTl@d|f9k?|Bxzh&yL7eHl}uowW~`aSR!D}OhD%FOk9$aso`#h??v z+yE-GgvDskW_1n7W|cPJg%Qbk3IJ%(W??9ku_U?+Z|kWzEq8DS6i&CDhX9Z_@Tzxa z8?C*y{{eXt+L_t(oh3(Lx4Z>g$#qoa$0Rg0{K@bM0A!!hxFcnO}5)}m1 z5xNAH1u7Vz>T@(y7O1HrDAcjTeTw9M{@%SjFvb}3&#tG9GR!F1F~%5UepNCnMX=P2M*si-07*qoM6N<$f~&_-tN;K2 delta 175 zcmaFPc!P0*Vf`de7srr@*5m{U*2M`TJxzfIQx4wF%=Wn|jkMO7!nbzGD`}hB9 zqjW+0g}aRQ@_W)BgbOGC`1s10d3Te-&SMkaH}s3k85sb<2k8^Wdu|mp{^NUKJ|P{X z>Oeg>V 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 99119dd30aa4db32e2fcadaa587e422804f4e666..3e9688c8994fd12525040efe6f4fd9afb226f3a6 100644 GIT binary patch delta 246 zcmV#RHX33zIq=sZcP=%@BDR_yB z1y#WV@Dj6o0mL<^qUuIgxn&p>nL-^D335G!EKAN$-+R6Wn|jkMO7!nbzGD`}hB9 zqjW+0g}aRQ@_W)BgbOGC`1s10d3Te-&SMkaH}s3k85sb<2k8^Wdu|mp{^NUKJ|P{X zttr^xPSMz|+;w JWt~$(69CSsR)PQk 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 97e8e5bdc3387601d594e7c1e4c2a880e890703b..acdec5bfbafa63a87180f8cb00cfaf3e35faec04 100644 GIT binary patch delta 247 zcmeBVTEH~Hu>O{(i(^PcYjT1F>*55Fo~A&9DF^Ryeg41w)tvvqNo>NZ)9kJ5Cq2CN zcs9=zi>4g*6PrF7fWU_?Z{vd3l9RJ}elGBs{P6!;tLOjyuTS}_eF}8&3)+>v3=7n~?fAvEmregl|S)=2o2T@SnG;Az;zs tuti7Sb8uh$zac^0y$9+ZvUUvnEa>23?_0le%TiO z|J8vTaEH*{0Y4wSXW&;8WBBpvGXuMVAi2hn?|_dN9x^a6Ffi~N$TPg!aDn~~;5U$G z`0?s9!^aB`8N>n%=;Hw7MECK+Lk12pUX&0ZCs7jZ0Q5wsG+FB=BP;}zX5C~YH&L<> zs}MQS@mVP|FfcGMD9yUbh)RBU a5&!_xR%`8tYwz3u0000KY62tpjpWJ)DyL%2G2!bFaafhZjjBSzh+?4F* z7jKK*X^*f(5>iqEhMENc2k#~ z>P8iniK_%p;%t27RW36(Eh}KCSzHh X8h1>V5Vf_tH7srr@*5m{U*2M`TJxzfQDizje-~Qh$HTnM)v+11@uJPMi|JRp3 zV7sGur9>o<@5j#vw#@ryNgVDEpD%esl;xvUmm1%Xiie8KAh5sD=J0A>@dB%^G`@gY zrISA%UwxiOUf(7K#1Wjn_yl9mldKw`1@>nIlNi}}@@(R?Pa1Wv5OCNgGVO(3T*Zk4 zipRQzn4YM3Es|}R_u|6h);lgIoz^%#aXFs8^vr<+2N?YMcRcB2bZKW;=;FTCrBnQl pckusueP7x14?>gVp`I|%U}R8m>kCh7o^Q?o1fH&bF6*2UngCOdXKw%i 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 f227305d1c5adf08e85f348d3868792a6425ce4b..c017ea4026f08f8b977a48613a8a2d131acc2730 100644 GIT binary patch delta 279 zcmV+y0qFj=0>1)~F@O0e4 z1qa{~ST2C5FKQhL$PzGBoL~`6Ng+_C&4wW6$=%J&WZqwZVHk!;upG;i?@HBmE7ay! zvB%+jgz6zk1K2eK0AM!Ts1HUe`_u3o$dm8N%XT3>2agS?(0`&)9&Kij;${H=hK(5W z9kf)7+3KKg_t0Ghq*||#6o@EkJau%4C^`GN7H?unZ(=>x{YgtvO05leucb^Kl7f_M z=tKle9sNm5nNX6aeiyn_$vTWnhq6i?z^)m%A{)8@>oC^x?v?T_bgDv`Kg7#VD0oG|>P6002ovPDHLkV1fWodY%9P delta 270 zcmV+p0rCF70=5E>F@Nw$L_t(og=1hC1*2dTi~=IT+i7n9pVgTBr?$CF#3=f*E&Tth z12^Cfp}PZqK6uZ-uO`Ou7tqcGhJ>&WXE!WaA+niY^bVs37t!<x1gL`S}|L>)#<4om*+0-OVoFn5d!(8?5p!PNUdc=BLrO`&DOCWdo}O{iZ2c;A5PyNuB*OOtF0QV5ynpyn z>R^n!$gpk6ux-h47YPu$$W=d(?@xC!bSeA-$0|W02Ctq{wQD@jwrgG;M$-jM7kG7G zc|d{T5+gJ%$$GxGyM24z>a^P3SU8GoB0C;AK?fE2PPSvh) z>6|M|C^cb5{%+fe7&>m5j$1~=#hX&81X=P#%=xfutong$3?c(_BVk)2CXu|o2{>uC zc0XmW0#2zyLjHyk!&$m}=AuohT!QarL7uE6o|z(I)l>gSHVcaGYcv{-=3nv&V;zp5 TTh6oM00000NkvXXu0mjfYTB$< delta 276 zcmbQkyqjr)K|RA)PZ!6Kh}Pr;3D(64B0Wq>2XANQ{hxnz#-HWecKRIA__ay*&;QlT z<`4K5E?eADbl^Pud&wVHk4V(*`E};NI)#qwfhL6qj&t)%N&vwR-Y1fAxjPyz2bvT! z>~FL=+#fz)(k`yzgo0QCSP-nz;z&iH&f#Yovn(CzGq3r&%}DjyoM-f?NW`*p(!>;X zXRr$rFEVg99_Q{e{;;~!aDz9eAxHXKrBgYJoEUBf&EUW2+;GRma|`o@&9YTnCd}68 zEMqW}*E+lFB!{=~6E&|zvJNNOZwRSgJ-FB8>;LbUt`sgSa{2`FUsIp~7n>>rgW#KW V_QGE|d0QBOz|+;wWt~$(69B@QdTamy 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 00433551ef1caa41a6a708575cf7aeb3dd8ddb0f..3fa237e75533922c3556279c317ec98c18cf2cc2 100644 GIT binary patch delta 333 zcmV-T0kZzj0`&rrF@G;fL_t(oh3%3*OT$1I#(x#DgO*M~h&H1d2jNgir#fWFCvbFk z&LA#!a1?azo>9Mmg?xZa2OTVSjOfy-pWqxM;rtUlLL(0Mn+~44_a2`20gJ_AF(kbR z)NB~4WzStP{rpvCJU&06n^=Y^BLls)4FEcuTdW@({%EQZ1An8tlpqM%J38j(^19Mg zVU7D&>%9iQHqI4a1oBiG{S(YLf4gjJ%#}xs(zH^lt%{EE^ zzLu^?Ky>HG{6-H-`CaLXVpi!U7_T6SPdYD|@X_(<}?00000NkvXXu0mjflAD&s delta 295 zcmV+?0oeZa0?z`FF@Fh3L_t(oh3%4|j>13`Meh)jVwz?l8G(URfUV#g&^Z2}V!wg! zSW&f~unK{~tsS{FWE&F1B!o0Y6g8{buxw}h(zFTU9s6Ep&fK{G!!Qhy^V`y#HVf1C zxjo9#b-Olt|5b{#DMb>veP7_sByyd>nZEoh)rml=5&(b~On;z1lvS!T0WX*!*BMfk zK&}F-RA&OIN-&V_ugj{WIur1tSmZhb01TvSm1C32!FhjEAKJfHHym z`RH{=I-8UL@V9i22{bJwS>UmB#kZs?fgi=9X(`D9Ri*QzSol#aY;y{I>S7VOGagpH tux{Q8hj4BV;UL`F^13<0FbwmQ`~Wz2t2ZXDdHw(Z002ovPDHLkV1im7ithjb 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 1675246a4abbcf6440d743846a55cec054fd75e6..5bbcb616a680818e5894b1cfe2046705adde8cd3 100644 GIT binary patch delta 220 zcmV<203-k10fhpPF@L{FL_t(oh3(Lx3c_F%hT(TA2EiYZ39<{2C2hmBXj<4sXtrrz zTk!_8*#yC0GA>@KC@#^G6actgEYnGcc3`+&EaRCG-BoEwLbk~8d*H?q#tZR# zV7yRNK>UGrV7Q;o-&smjV3$_R*8|)*`tCN%=9DwHp#J0$XQHHbxZCMlxWCC2& z2oR3uIQxR9uez+K!9{gwI8~rkJD`<6^CAu7ftroU^$xDBy5QPE+Z;4I zaPjp%oxLULEWouzIdE;M(r}f0;N9hX1-Mp#x1UE_uz#Ps8`99(TbAuFfOS>rEjWMq zIQM$y%8$lBKKsp30sjSnPe)FkOtY2KN=xwUjsD}aF0CslRHUIT0V(*BP!8vv02FBm z*S_5uK#>M%{fgTA%jF*dRKB~@j-40lt7N;rsL_9^AKbdw|KIw&OaK4?07*qo IM6N<$g0FA=y#N3J delta 380 zcmV-?0fYXn1f&CyF@Ii3L_t(oh3%BFOT$1I#ovi=wo@tr=~9FY1)-hX>LMLGIrM*M zMxld$f`fbihzd?wx@2;5YC&)alx#w2GHHUt*WsF&)&%ZMy6FA3OONlpyuN&ZM)Tic zRSco8N5Xmu#2#2{QpwChA$orx@@>jK3mlUow?~0v?))ahv44tqI2)l>Z{zdh4dmOz zS`&u#61938-0A`z0B))1%Nr;ZioNs-x4KH=0B|IIvp^_ZOvRa7K(mkV*vF*VnCFUd|RyK?HVpKuaX2*TECC{D&CU!-Iw84&Lg*%#(wbsT%*xw a{yZD1HMEJ;Hz6>q9W8()I_z^gw8}xRrDpw z-e7)xi;)K?R8>UP6wVB43RNReF%u%j2qz}mvdrZHKGBJNKXn{@AAe39D5aG8V|UWQ zYrd=jeBn6nJ>m0Sv`aK}&6l+=94;*ZNEV?uqAdvkIBq@DaeqK3HXOH}(W4RVX-S5B z;fO5s<}*w`A+lili6}t)0-f0KxyhQdlqkTZCCMVBH=i|k*~|KN0r}TGq$PHcQGI*^ zUuBo)5D}5+Mg!q_3a?urIb?YfBOaAia#}WiK*uR P0000TzxDt3TSfl=f0X&3T(eln()I2E11Fa{1G};w1H)Yg1_pLza_whe zB1_lLyKpAEvL4x%lkI>Hmsdk9W>;olkaTAFaHfN72auI`{#rlE{QvXrB{-j5E0BRv zyo4;X$VvkrF0W<~&<%xzfRF;ihg})u7{kE8KtVSAvELe=@;Mxj(l;B9f>AIEM!_f; b1=Iup7D6)ctqdfj00000NkvXXu0mjf%%*5g 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 d8122045d133862bd339988a454716f5b4fda259..7f5c2c4be9e4f6355221268a431af673f7a044cf 100644 GIT binary patch delta 301 zcmV+|0n+}h0@MPKFn<9KNkl?im;F3w{5_HMv)FFSO z_z&FezmUvDaO#k$i*Sq3MJOF4;Ls&x5D7PQ&|)0KOqwPk;NZRK_#WK7J2)^H3P?c*MaDP}OR}0PAsZHM(tQMM+ z3sK88q4%56slt;m2*-$FfG0r=gT1aPl`qiu1uyfsT-SA-1gIz@m^ci=aXE{x@AkUR z0>atannNMouUqDuE#Yi!0VJ;n5M@X=Cf{rUkgnZrz<0z?^XI&WKRUvbfV6qa;r9N$ zRY0r13vhWpDkhHQM;UbU@Ys4UgTY`h{BJ%1xLkA|R%Sg>00000NkvXXu0mjfMBa-J delta 261 zcmV+g0s8*b0<8j&Fn<8&NklkI0nH#VRA1_L^!{8|8Tx99Dp&#*pG=khR}6MIPHNn zfM_|n%*+g;!<;Cz>GdvhbxQm`MXvt#CZnhl9(xwb6%&{94t^BcBwCKZX^(Qngl6=B z0DxwwpVqYnsQj9Ui82cMH=H*;2cvaFf00000 LNkvXXu0mjfMo4yL 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 df0b612fa88e65fc15a497f22271fcc19a4eea23..573f2d9d1a488c8421ee57e7c10dfa78d63c0c8c 100644 GIT binary patch delta 414 zcmV;P0b%~)0>uN6F@JwaL_t(oh3%9vNCHt9$A4-$2pvZlh>JrIPTeL>2Q5M1AT+f! z7Qt2A3GehB-QUv##9*>Xj|Np+n z|AC8(i_0J5Sw@p#D{BLYwn@Js2&Eg+eWeR$i40p=TeM9~!+!!mPle_(u_7z}UBt@A z>`#$qRS?$#_+tvqs$hFpk(~>#Y@umb#I*o=DuiiR_+ujx(Kd;y5KJae!a7kEl&~&s zKxzY`Z8{SI#I?YONDTmgOyT*q;+*F}%0Ry%ob>_|D>e-aJryFDOgMLyvzz4_xU9c& z$oOsh4MCw^0)L>@^?_lbMk@54UI0)d0ciu$Dah|>Ho(dGJ}^#0raa(aXO*Zrs(a|c zb$vkb?p~_*T>rqV$Ysg{Hq|!(9(!JCagcn1uS|r_UeJaZ@B*8B^8$rIS^Ry(3))uU07u3r3xf1)wEFe}IKM_eJy;bm7AB2+skeHo zpwkQVq|eFCo024yEPh^>ySzo6-5bxfGIlxb2!MBWM{d2Ijo4M}PYS?q8SAYcn>SGD zK3dH*moR6Cj5C$){%_x0!km)Umo8A&`fc{Qx?D!E|K|>e!{ONG3+?lGJ=G{92mk;8 M07*qoM6N<$f@dw0umAu6 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 f58bf0513ac1377bee4019ec15459fabbc467805..c49ec1b58470dd7aa3a1520edec7135be0260b2d 100644 GIT binary patch delta 430 zcmV;f0a5<_0@VYMF@KLqL_t(oh3%BFO9D{%sbNiN-z8_q+c(1qG4l~Tz>$}Tr!lzf^7I?h+8zg zAms5{kkJ+5hRWl$U~N;CJr^L{{R3007*qoM6N<$f@F!ycmMzZ delta 341 zcmV-b0jmDh1N{P!F@HBnL_t(oh3%8SYQr!X#80K5B$HbVrAsJi2o&rWNSDyDQwP68 zJQn&89kS;k($z~APuV&-QwKxP7AUc%)~3VP!Ps#V0#g1gt$vF@5_iXU5@4}dEdL#L z3=#T%C9D=ek%D!{N73AAM9UG845_)7MK0xWpR&mPb*96)iGR784$z58<_*ZnfA@5(cKdOfMiH&J}Hg40Iu($-d>CX zXg`=Na>?<6(xg#^;{_WXI!-Sqkkmnq5|~nbHCm3S`hth(8K)%~(jlF1VpIVDsQCnr7wp~nCVM5% n<99cZOsGJJmf0K-5jzmLR%qNq;-AK&QIrh`NcHYkvTsr=uQ;LF9&I1Fz2n z$wU}E9mUKw2x*E(&e+Yn>y3=&$mSiD2@-XaxC-M-DFBiQ17$)7&OLG=P2u`XFuS10 z)|V4#TY`|La9=b4+}(dB7gxPfRqPgeI)B>Vb&u?3f$fqlm0PL&aQ%|IJR(O9JlEBga9Z(<^=~8Wu5Q}tW z(#i`QUS18soRb2~T;s#Q#q8c10CtN~ZA@Cg*JaYYn0MNia0l+bXfVE%Vq^W3Y4sU^ z+lS%4upCkyc;&0p;HTg~0u{T3t|@K@0F2%IcWe6>P(dfd{Q=B-)_zUEx_U&L3lmp+ y&o>WnQhpjp!1uq)EGFE0-tWK#1Ox>9NnQYgE4PLUZKz@Z0000QWp#IpjYy zqu`Hl=gIAWLAN)+%kvW`3(3SCeF0@!UvlApDNL6m-9ovVRZX}6&aNRJ?>`r&iMCagg;b_V z)#&OLY8d5e2FD93VJ8=miwXMUt@gUwg?Z$X;|0~%H!^p;07@7D@XH&p)4QLaf&O^Q ziZ~(8#kO=Cg=|#fX-;iDD&%IO=Vs=kkmqr6qus+0NPAR?G0_#GgjLiM!-Dt zw-`kL;KQkJ!?%eD|`%T~Q@;=YK z@B18tgoOMtk!dvPH%=V@(KP8_Ry?kin5Nu=L6bwty|EPvPl7}=OF6LYfSqat=* zcLpN$JHbX$A*!p??*!{xs_b_$BU?BSF|sktf=yI+MMTpip~2El8g89QN%3R7}=O-4xn^$JzWErl`a{CC)~3HXO$ZO zw7Bwh8$(eou75}ykh;|3{+iQh&jN6Cz6%V~a9Qc1rxr+PZtZgitZJ8Bxi-BNlwarB zUU?^dyvJx7GPou>iyvOSo>HJJ(^=BM#bY%BDJPA)^U=ty)@-!6LPB#Va8-GiQ^)6@ zu>G*<^eo{WT&q}OX(!F$!R;8sa!5^Jz@#+z5e#JDsY3RKp{u`+Twnu1BNy0!Rqdju zlpm4vb8zGEy}SH&(iyy8Ix~Ux9}*H0@-O%VRQkTkf;o`@00000NkvXXu0mjf{>Rms delta 357 zcmV-r0h<2s1C0ZaF@Hx%L_t(oh3%9vYr;SnhTkiNQztEf;v$6`go614b`eLX4*mx- z7WyMPxcejQn#CoPTcu;+(PC4af;}$0&xeJ(!}( z1e8PAne18O`Ci1i_!dSka54cM)L#LB#%RqbwBDEOkJf1^9kOz5WQL;##q@ZKTAfenrNVUWvHW00FYl1v5zcD$v z=ey^e-wEW(_1!fi8~EHi2mwUjVdx4}%w`FvI+7!nPe?)D$XO6ni@W{2*I^^ZOsHEk04-+vM#&Xdr0Y0fX0;02nm|&NBo!xxAi% zT39FQ`CH5BT@S4sRpE93r}mRvcBWXx0RF#~aOjG7;9DNfEEd-5Y;XOU04yh|3XJv9 zKA0w9DuAo*Bc`E#+H$D@CRuK5%`X9Puism4nt_|7se5<0R*nC3cZ1nf{m+#vSFZm; YFW8gKZB05`(f|Me07*qoM6N<$f*Z%*G5`Po delta 359 zcmV-t0hs=Y1djudF@H%(L_t(oh3%EGO2beThW{(VZ9BCRkS-$Jp&&FbP?yrNlSAL3 z83iB0p}P;!u35Td>gJSA4uO)bP?}7d(BU|Q#8j=GYovnQZwkrD{eS+Pa{?F)hCfE= z6w_`-*sg#yfVg~QcKpGU6QrX`c<8s0+jF;0)L@J;?K>T?BwJ|2_s3>$O4g5E; zs~d>(I}y1SHM^tC*x4oG`53L?hJ7x(@Q~0UW4~^oEF`aQk&k1%oZ`3%vC(;;$ZnCrTWnIQeiIv9r$Aipw?dq3hiRq))gG2>^WB^;P(h^Tg{FvDf;G@d_e6tL3(%3}*lU002ovPDHLk FV1joKvOxd< 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 068ab47ec9732e24d94a7f73599e746e27fecc2e..a0547ccc1c8582e1f541abbfa9c94af17aed1586 100644 GIT binary patch delta 505 zcmV>nEi^wD>l!C!S zAkfjBJay~PH8f*}LdW9GOCeB_!4L=q6)g=~f-@CC3to(dAjAy@*-6zwky4u)PPO`H z&~G}#aqr!Ccb}k4nSY$MA{M#!4q^Z~c9^=7+ACLiUFC_(Ab;21K`h4(PR|Fx>eg~e z+*5@wLi|HBP9c|PlAWeT)zrB>lRSE=tL}?+)rl#@>eg_2K2I1(YiAGX!9#Ik<&<1fXi_T%8QEah@m%OkKGY;`Ds1ZY`4o7`#3zR-kW3bdVW% z>Pp_&9{>=BhJVxZ5k?{xjwX0PrC5Rb#tnTtqCQM6p%+xBZ`@=+VQ4hO?PQ@LLg2JO zffOhVEfL~wm%`8pM-$FRcjG@&0WYXP5b^Tu9*|tj&SNv~+Y#pWd<8r^Dpuh1+kILO zX0-R8vDgnfNcN9sJQUyOgbNjT_xWNCw&OO*tzT?9t#YBCl|L0$O|E}I@aaiBb!GPC zu1*GQ?zVaH{P-8bYEh~{nq~bU4{#-c^Wg-`)PK9_tSpc=9XOi%_SXd5i}@$_C4~3( vY$bu*XLs0Y#_9NLxW3Z)mnl=G%zu#|iyGVgpRDb#00000NkvXXu0mjfON{a} delta 361 zcmV-v0ha!t1d#)fF@H-*L_t(oh3%9vYr;SnhTkiNQztEf;v&KgLc#n2yNIJx2mgZ^ z3;hut-2D-D&Ek^Dty7#j1SFdvCR3Zx;p-5RYVE;Yla|unvnBWOy)WqYj>1<)QLe!SN*p!{GW*P>>B zk_laO5ih4`jdzSfhtj}*H+OXdc6q1VSGiCoBr{gIfnSvXzrIC2_wjmxpG}}W!r?eJ z`xBH&KzR&X<6<34JfAohC*#NkjuOy8eGdSr4OfgpyV!L3IA#g>g;6aBy5#GYwlm7t zaG8GEZp*&*55Fo~A$pE;b2+NsC{;J^%lIzx*z~=lg4lrYl-r zoUXIk;~LB6n%9T)cFZWRk-XWLpcu*w1c$G+#`1ic^@|4t76obXg!{csxnNkVeq7^{ zECY8{3U|Ey?!yV0%RS}U_W;d0XuYrJ;i;8#3k-{D{hh@=6czp4pZb04|NQ!Y?g!)i z^!}eT>|Zlww&di7#G7AKxlb5nL!9MyP=kRXcA1M$NTrH60}yz+`njxgN@xNAxe`_0 delta 227 zcmV<90384G0gM8WF@MHML_t(oh3(Tn3qesB$MG*230-vkTMVKM%3w2@*v(#&mtZ$D zOBRDNC^AU-chbE{*KoIM;srbggXgoI;rTtk)9HXxN-6bYA?cv+`@!Y@{G3bKlqf4A zT|QkOFt-QG?U8&s!T#z5k`kf<@0%OfqfsehXX5P6jwFh(WL#)>b{Nmr*j5ZX6BjN1 zssKQ@Rl~R*=Jo)foKJ~zL{G5VoTyg|^xAcD$tVDW(OgtO{0oMYMPOVH+lm3u?=;0( dN-3rO+Y4FxIO<=ND%=17002ovPDHLkV1iK(YpehO 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 8ba64ba0f15031464da4c8f7886f74c98921b3e5..8fd0777bc7b207a2cfab9bfe3b75e1782a658d9b 100644 GIT binary patch delta 486 zcmVyJOR>ePA!o%#Giy%;+?4F zQ;SyzUO>ycnAbD0FfmZdhIuMOUm`CC0}9gBgp1TWYx9yrP=rt4_1~P z!oOuph5bSD`1DRjV>0uE{Xrt~UGC&}xA)|`tHx7kX5y{^k*j8=g_55g9y8pF6q+qt cwrrW{1EpjXXZ+N-4FCWD07*qoM6N<$f_NI|egFUf delta 395 zcmV;60d)S21hNB=F@J1HL_t(oh3%C=OTu6rhaaP3VUdZZT@*q=Xj0H^hwu=2A07J` zeT+Ur_s)gKh%SMF2SM==L255!62lJO)+NWpZSLJPi1ysZe|z`avvt_HiMblDgiFb(xz#wBHcA$xHX0-0l{yABGh*MBo6^Cw~{CF-N6+GU+6}fiV*> zjGe#%dIN*I$F_ZQCsFLI1q}dDS1X9o7@?a09OP2Kyd9;SpRwadU<0jAAElf}t10Yl zZvb$8`vmygSy}+4oJZ&;txliJ&L#j_P2uWiURNu$I(+~#>7;FEX#u7N)M|0gfS;X3 z1pb5?&8{VM6Mr!p+XmEXkwP|=@S81Kcc}*4W{dcH1};tyaTbnqwo(J&UN~A!p*JvC zxdHI5<6kq-Xm%~P!Z|xGC2sDYEvJFY^OHbpO9ue#GMW}nls}@>D~M7!UPv1VyV<-5 pWgyIE^Flg#*v%Fb6BFabHwFO(S(b9Uz5oCK07*qoLAfp}` zosv*Y$y|O?;mkRYsdJjdD=c^ZxxeZ6t^eEY|1VC^R~P4TPi77&RNN;Z1@j*l2P4C6 XkqY@n`&=a+1|aZs^>bP0l+XkKvES=AnX+kGJ(O?Zr62{za14-?5Fget)F=6`XTaj>_8Un$WWBy$0O z+m0$gZ;)_(*PR{y)nD6L(I!1T+9ysk;?V?vTHpcS+X?H{xptOOHSqNOMp&Zog!yMzbxgP9*(d uBF;H+&Pk)$79s6?E-8O%#~5Rb(f9;wB!P@n!)j0f0000QN*_UHfq#}8eH^Itx>%aEMt zOSFE9900R?>%uO$n0I^`RUE-Wtir7eyBOp(^%)o#7#KvQR2Z(D+R30}=8oY=7$DYh zL^%LvFtUZOpWR`ww9`bf96f~Q&fol>kRyn4z{@9h8NB1m7=Nyu+6fm!b_@dp;Si$8 z0c#geWXP(V#E@E2fFd62>B_*sKsbc(0iqL7W=z6=bg}767BDg}Ffh!Wzxltoj50@*U#=S=$N@P__%739n3_R1C%5*syKj{tVmNpNkYR1NQygh i6WS;k1*2dT-~#|w5XV_Fn^W%q0000$suZQ3;Hwq z6CC>!1jpvY!6BkWFlZ1GheuGa_mGp2*Kpf4y@z7j-LtLxz#9(k-S2y!`~ARTu~_~) zDU;1oO7-#i6|eVqaz_9E#JWlG`~EAzXu{Lrjl%XOt}oQ8A%C<3L^lt{A&2EXoP36% zCuRaBv7;Se=n3u~`f>4TRAK{xqSqd+xZQn25PjrDj0`2*)#xGXU8dkc5k4fkWMy@lh05psOvX00atJOAi%1z2e6vYh3R2M(rNsh6V21 zK78G5%`>fR)|bKqr`5|Pff^;&&AG)X?)=?$XJ*TaAD@ege%8+qwd6c}eB-=zJh#8S zO;R)u;cDZ#ko~Q{~9i3r5L820F9%r7)HjF`i*GJ=v+j`4;4UtF(7KcI%>2rnk9F zZ`q>N(^1B7S4c|F!PDt5yGNIGk?<`IaL7GiW?)UeeXe!Zp)Lj>@O1TaS?83{1ONrB Bq16BY delta 398 zcmV;90dfA01GNK?F@JAKL_t(oh3%BFO9D|G$3I46Vxh^EwiJj$!$m=xlS9<*7W8NM zCph*e2#(E(gF{4%VBjDq4o8rBhn$4i@V3_wcO;g)cUM#Qfg6r{cfarZ-uHbWA|m3y z6Vq8NgpiZBcmMuyFQxVVcWmkmf9Sp7Oy@igUdilkW7)0@D}O>+fVXpJw%{~>fRRox z9J^s=1F)gGa5#3kf9zo-;~42g=)oS!4gg#gkLmVD02t{6xlGD`7BnBq0=oSXW+6+t zWU{}r1;FjylRrFYK9mKRg)Gi=PPae8NX7vumrN>z%ZIiD#gn5I2fTcE!*$R)LbXO) zIGV4mh-TD}$Z0 zHvnK23f(Z!}OS-{A^z`)Sa+W-II^@|vKL1$_)Z zf@2>+aBNN-93ol-0|!BIkRa`j<0K9n-tBGa4#m#yy>sh+aKrK5-SdBc_dG8|L`3{| zVk!>{A>_yBmwSJ999Me(H?~!ZKlR@*Oq186hg>aqb>b>&-X8IihGS)z1fkA{ZYLw`P#jbqOoqt(bRGq(dqc>%WPoPO6Pzx zZi~gkq7(qU52K(c^+1?$^FsOGd5vO3L_|bTz5&>k-4Rd%ha@Hd0000YwW zrG+Aub}cO~r4H>{Y1eK|KpHb-DL6~J#Gw!ZB7T6=>-2(AtWTfqVh&`;<=xzK&pY?M z01+Z=J7TO0#}h(6oUh=0=nYUQA28>05unA5b~A|SrTRul?0>K>G}=vwsSE%hE+o<4?CmByj=+R__EYDtyl_vIX+GrGyFHhV*B@rS-*lzp) X(pcqN%(3}M00000NkvXXu0mjfyqUt5 delta 414 zcmV;P0b%~s1H}W7F@JwaL_t(oh3%BFO9D|G$3I46Vxh^Ewj_i?gHq7uy;1JOw7&r)ug9K@J948?*yzMo_9fEni=h@VK;0?!ncfarZ-uL%|kdXgQ zMCY&&LcV`|de6rP39a{kVq2&9WA7Eqp7AnxBelQF$aG{-5r4`8+?!j|IcM1;jAV@A z#0gRxfGyR7!->PgQx78^#Yn~i7j{v00N}cKO1D1-z(~e8NhQ3!b@QPtpxYml&!s7s z@*M8%0C0Ez>=j=(AIbvqxipqNquU>2#G?R|OL-~;%ZIiD#X@Gu0XH9RaUC||0Ql!) zBLe&!@XN<D+VR_Ua-6(CiGPWzSgLD;6>vnUqTiA>_z(yaiCLw`8+3 zkR#KPLI^2@kkxuis(ept4*0cOtADbQ6Dho?Y8&azs15j?aRcK`(NV}~<``@i<#gLGYkQa6N0(0NzBH*aTjsO4v07*qo IM6N<$f@31d@&Et; 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 51b438ff413b3840e18dcec6513033f44237cde1..bae8d66bd44e6bf658ef0e1644f6fe1cb00a41f9 100644 GIT binary patch delta 429 zcmV;e0aE^-1JnbMF@KIpL_t(oh3%C+Yr;Sn$NzysKR}T}2xO>Bpx{<;$>0m6ru_yj zS~|5up^LP1mWqqCLpKrW+({DlY`Sj{At}+TR42j0P~$S#;WUxAuMYn>xa^f2ml4ZXRA%R(x@i zgyq1j-BBu6iQTU?x-^^9(n!S;wC>x!Pr{!>W81OV9RN_Z z2<{*6#3f|>CffVkGxWIO)`4Y5wi3Wgw9}+5sj@-;6=_q^yx?|#9Y%nE(I&j`mHhfVx)(55^ zCDDcU*yHA5fLgDjDz(CcBZM0OIMsJCtq}mKQe&sth|lHqLpXqGjnKL+`i92l+6n-d z*N^e=ynYA=(7G)g*T=L*sP!rUeM94dVtz*GwOaXWgiEwmG)wqcfRv;3HcR0DUh>v2HgJA&D0FY>06;8aBwLaHfz&G~B3l;H4dj(Ai(C!lku3}9mulxW2 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 7c07b8bd788bf8b3db774d357ab6ffc9a33fac2d..6ac2a8ade761979b0b97a1c92ae5c871a45e9e2b 100644 GIT binary patch delta 445 zcmV;u0Yd(-1LOmcF@K&(L_t(oh3%CwO9EjS$A3c52Z#tnaL7d{q$LpIhD@TazCmFT z4mE^m? z@}6gIaTS31g(aTfUdBpD3c%dhEC|qP)d*`r0IT?5LU-v0;RGQC&~DbzW5-n9^On~O z1NI3i1Kek?IXJx`o=o)l+iOw4IU!{LEuwRKafp%e{qS?8f>c6E0Og{A7SWmZ1}v}B zs!=W)fOA610DoFUw~G0_zCJ%!DmW&j3}7Y@PbL@~wch8$60+0CC*g00ky)%a9RPnY z#L3x_`WTuTHfs0TYqW@N`5>QwG=SZxZA1$mzt<-K8r2UPttJ4uQo%7{=}&N%eh@Rh z*&m}8)`Cn;dX#@kj#^({5sy!w;;SqAuJz>=p|Y?GX-=BUBwjb^8j n$oIE)thh&MG*_-%xw6wYRkZM_KG-@C00000NkvXXu0mjf*saoV delta 392 zcmV;30eAl71Fr*+F@I@EL_t(oh3%EGO2a?^hQErVQpH+YTbCB3g@P#xZW*M5*gZJ< z7(RxN;O?w+6mbzMbSSiB5W!ZDkRl-t-Qr?HYMV5dR2TDY;gY*QU+%v^Lc)J1C3Ew5 zJa*nbKHck5J|p$~JXU2Ezw5pr42!4!D~0V1p5IL;ZivtUCVy`(Mm7hPU2@qp`p}#T z7{yNL0Q%76=DzDL?j??$m9PN-nraO(vJr*_z+NE(%-T_^#VI>Mgf`IW4N$5@w1&dY z<{AK(*AGCjouvg(szroh(diAyZLI^KH54ws$D3-6PHzA}E}M4kEG@vqfLbrl7znbn zh|m>kwfl}REPuqvb`7ZYGNpVb6*RVJUTFho$NPBe<{g`7XA#mT;m^8h4F!E@^6Lh` z|1kP91Fd%7nOC=y!%FJv_R;YgI6plKHMevCz^&q>ZgKtxQlB7B-TaU?5OuTp5y?Q5 m&E|)6@~E3FAt52bk1v!0<+a3EB@qAs002ovPDHLkU;%>DT(+$M 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 b1000a6e58370e8b8ed1c8020568fac7906c2f1b..48c5871153d01a0d653098ee63ee1476f662a150 100644 GIT binary patch delta 460 zcmV;-0WrrF@LQ|L_t(oh3%EkOTu6r#-BmZ9}p4@VTZg73h5FEv4cMdUHu1& zMR>?V7>FdDqwo@X=oTTKJ=FwhO00w7Es(tEK@dU2Kfu%5X=7^6SKra4ePEaG-gn<; z&z|o)z~R5c(Jb2AKg9dz2We<+qc-e!aej6}wVzqQctS`+Ykxy2=8T#g&)6bjgLa`( z%s~*n000;7L91EC?!ggDZ+Zc`_2!17K?gob{2Kwoeiw2)gI2R@)XZX7GD7wJBK{yr zW(#v~91Dj~sjD1IMyMQ+0x}-&E}<0NbM;DH1+acbs03&=1yVqUi}x6{(VzpZrT}2e z2(<%RO@YAw?tj3tj4%t(9ROgsV0NHf$|IRAAdyZ@?Tdv&_6X1&05Ii(?f^|jm;~q! zB+@C&j+*)YqKsHUeT-U-n%-tfX7hA9 z_1``|!|Q5Ek-C2#t1`py`Y+gy$J5}I^5#0v@2;O#gs_0%$$#zfg#G$9np$9JxoKtt zup+u~Xt~_n_tA=ZG_{a=aDcD_0H>{8dgcfKO)aofR>HNU`4AS+Ge_u+3T;DYYhw+7 z%j<`5c+z|b3(y-CY{#Q#j?jvE0NRGm1?lo3?Lezp`{6*4k6^eAOK||=^RW~GaSp`g zV-dn1kxqBu+kcLSJ)VRPw3;=lB_$WPw&+}G2hNW6n62CF+B|m_A^k7-UbnWPGqhZO z-2sTM+n+hm=??sPbvr(&=dNxa{aFXjPY#97mKFenRSfEu=8q`#3ewaq3TX$DhAoOj o4kQU%6w=C*hAkr_BO{706^8GJKB8YC00000NkvXXt^-0~f`kaXN&o-= 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 3280379ded4b5d6e4b25f8efef007198b04d6d9a..0a7e8f39fe926a9a8ce586c55240b483482b7e55 100644 GIT binary patch delta 154 zcmV;L0A>Hj0mA{1F@JqYL_t(oh3(R@4M1QN1mI&8i9{<=i$sV8G)jME3WYJWe`5=U z$^c4@J)TzmofUqCIA2c07*qo IM6N<$f)N%zy#N3J delta 158 zcmV;P0Ac^b0mlK5F@J$cL_t(og=1hC1*2dTjDk@x3WhS+ef0SMQ#Wq^r^E~?y;=V@DY7fBsIkBgl3DGI;&;3E6tdb^yPy2*cOUpBcD$c^N*weM7bbSjg3Q=ki4c zeJdM=k8j^FJh*v-YzI&TX3v}df7$9a6eYq@FbYP&C>RB!U>Cpv08lk4^EYTcvH$=8 M07*qoM6N<$fGG!5*LqyOHP6by%kO=x7w^KqC2fZ;vY0j9C|2z5a9|AQsHGh?6tId3u z${-rbW~;3{r=j}be3!~--~({~(4+tQq%`YFRbcu31Arw=)qfG?1d8FJW0#Up!gE|1 zL_;~>rP6a;sXFJZ2C}6C=y_d6VL&wS>3Ln%e6G(4&z3HThH^1Y^5E5Stt@bI1BXjz z36s@w&1$*E66Rhzl?W8WMaL$IXIR3-5+?TZ3(>%5F-al><5nQpfEn`azr=i&mH#IfsT n8n_sqK+5zZ^4mkuE7#JAH&5}er06oZ&LjW0&nk9*L0D6!kJBX4jNp=WCg@!P~97IWi zB)S}cg#b4%FFf0&CM7a5FfcHjx^eqIx*XLVfUn@8q)=icMe*!;^Z#@6@-jq)hM?#} z4gpaqX$DtoOE#j-C8;Qe1vxsPRDXM)=xx4^bx delta 178 zcmaFLc$;y8Vf|E37srr@*5m{U*2M`TJxzfIQx3jceEk3XU4_5xRnrUtlYYKV_m|X@ zvp!Vt|8w~!S;uY66Ar#!?tkK%_crDqt*#RL>i(TMaQ5`+4~834m6X2 e+0Vr$!@%%C-1Jr3mxmDyK;Y@>=d#Wzp$P!Fh*VVo 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 2f6c4217a0a4121acad78f32da393340945fc100..e9f61cccc562f5880e1b94d3a62085622659ccc8 100644 GIT binary patch delta 239 zcmVj@!8iEo8u0eAJqWA(WErCMdQ#AM( z7n<%OG>alsgHzDjcm;ir+Z2dX-djZRf3y7OAm;*v5JG-g)e6aYDs^rcI^leu003qy zAJJy5bZewq;C{IR0H)4F^@Lu5Zn(3UYn4zExSnJ@l~pTb;AncvI~eo_x}&o#6UPHX zvfaV9Ox66?3p_`6JLO7;e-(Kw;qnvRADvr;8Xwr002ovPDHLkV1nAPY$X5y delta 229 zcmV(!$N!(Yar-|dW-w7=`Riv- z87>|>!f^ldcd{KpwgZsC>!(l1)=Rbn_=QCnzJC79z|G6c@bT>%vK_!euEsl;FEZ#` z*)V*3`-b7c%^PGpfTR#WPIM}|`V1G39btI=>?wnSx(4kXfL@;HU?CtXB~8B&fPvRf zpD;v)hA_fHAT=qGkz5B5od)=YMHn93yn&MFD6yDi2T&`~Q3PhsoBw~=>NOOVe4}6# fjDk@x3eW)nEMj6a(x8to00000NkvXXu0mjfAM|Js 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 e6ce27db10f8b48d4d4f9f691b0b05d6ebf89587..fc087c6bb01d87e56c51cba322c37a6def613615 100644 GIT binary patch delta 293 zcmV+=0owkx0?Y!CFn<9CNkl1p=6hvo(%N!t$K*AxQHsIO`7#m%{!K4vL zVDKqY=okyGwh_2qBm_7cDU14URE$&YzMt>%>2xfEQBBk=ED45N) zb1>)v?a+CygWZ-R3D@vkM_0eUfm7(JeFiR4Qgs8*b+8EDpz7xO1};Map&$=(;(Z8;vFo-z4YAqm%=nMoykUqBW)^IV6jeRlqN ro4cr_5t}%oO&%QmkGRERxoQ3Y+nsbvnM=}j00000NkvXXu0mjf5nP2s delta 270 zcmV+p0rCFK0<{8=Fn<8=Nkls!Rx0_$kt1?1NenS7`}e~%)rgd%kc5-8?qh1LaxR;moGBt zTiGyteEWvs!Oa_FJAkARKu&Zjy7~+kj~!un{p=}&g1QFn9e;qH=wKlrDkV+75P*T# zPoFSEg@!P~LLfCMk&)aiNpu?E7Zzc7aPtOAqDxImWMp7KgwBJTHyG}J{{CN)my?m| z4j?wsk(womjso-`N0y@`OOlig(Jh7nYGp}^!0dVR|1Vp;hN6056pVsVFfsuElg5uD UROrzL00000Ne4wvM6N<$f-_Bf%m4rY 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 eea72431f1d2c89a3541b054f974f8a8d74b7067..472a4edca63e25604c70acfbc82f09429a48f28b 100644 GIT binary patch delta 284 zcmV+%0ptF{0>lE4F@OF^L_t(oh3%6)3c^4Tg`eUz0tteUR@V0SxM zPUqhj@MyVZ8rTFJ2skX$P!>>V1^1SVG=pUtaNHh5nkfs&jXM|;4T22F@O9?L_t(og=1hC1*2dTjDk@xl)>(!$N!(Yar-|dW-w7=`Riv- z87>|>!f^ldcd{KpwgZsC>!(l1)=QEDkb|6GScKv0=g$n>yu1t_-@c)}1JHx~&gF{? z`c^g!qEgZf4{qKd+W{=(XnOth34@BRKEuUhM;N$yc^MScHGjx<0MQ|U9^}*t0iqp% zZedht2;;?LM;Kl|d&-cSl*mYKmSiMW;i((9|HFb@R7#q`)!GuS7nVN0e*Vnh5*opv z$jeEzxkRS{SO|Q4`vz~2lbR)ojso-`N0y@`OOlie&@F}mVnc_fVD`NE|Cg;^Ls7jj g3P!;w7?}V7^Ai)3quuE6*45>D_QX_CJY+N{nsvIEY3Z#2XDhUy%kY)+NVPCb)&i^y>8NlQ5c+Qo@a)qk3 zWb%R*%N4uMjQg=_E#)t30Km z)(w;th;?u>ayXZxG}=IU*w1X;U{@Yd9`+|4{)?mJM3yF$rODrjdpw@A<_p^bg?s}7 RO49%U002ovPDHLkV1nPdm9YQ- delta 288 zcmV+*0pI@T0>}c8F@FL{L_t(og=1hC1*2dTjDn#Ib{{?d|J04!|0ywpi4x0SKYPk> z@z@cD`=7s)?Fh0RfDB$geL}WgvK_!LEW+^h^JfNbUS5WeZ{LvZ02XpJ-no2{LEp-T z;p5vk3=eMJAlm^Xg#dD*Q_L`HH8B}QTup1N`SKP<>arKA~Ltu5ht zVd>-R=g$l-p%Dy00005qg4ju9voK7-jDP%4cK|5qBxOPmT`5))vl`0O&1qU(DdgOcG-1oi*H8nLgf0b6d zLz-t=#dF&Vu?X0-<3qJMd2JEEF_L-A(Utz^Oq zzdz6_p6fKvwBH|S+c~9fz=RIKk%A;rgySiW6t?;tmk~FiQ}J9Uk;3zP04x`8zi;4s z=o~5b!j2TAd8Rk3b?G*gTESuHvh5Df@8L+nX!bxn3weKCVpdd?!Z(mais2-n*>wrW zQx-4J4M0P+N^BN3U_wWv_M!VU!Eh32+e#K*LAKrDNP*|~$hNyLXGx?uIX%a{xg{J= zOBpB?7}Iz2=Z5>>P8(B>6g;Y@!gC9+;3r{&2_#gjWF`Fmpwf$2Q&aPQ`2Z<7gH$RX RBU=Cf002ovPDHLkV1kk$tK0wp delta 308 zcmV-40n7fI1Ka|TF@F|GL_t(og=1hC1*2dTjDn#Ib{{?d|J04!|0ywpi4x0SKYPk> z@z@cD`=7s)?Fh0RfDB$geL}WgvK_!LEW+^h^JfNbUS5WeZ{LvZ02XpJ-no2{LEp-T z;p5vk3=eMJAlm^Xg#dD*Q_oD>UEZ9OO#vl-%JU=C>aAywAP=4rpm<`K$E$ zLu8dyB2HAVKQz|qm|n~(sp23609@aA@Ta#%S|_Fk^7RG)aDUakFqN<~a2UKh8d#Yy zg1ciS;zVVYRNNgaQyt?Bc-%o63B*ANk2|I^I5oXk8f8F_9q?WMA}>+o zrBx%=&cNZ=i8xVdB=#9tEkAzW!135IO7?*nCCDnN^7W?iK4?^e!?Baw9X#%UQG#jk zgg6NC`M!cKQGZ=(XCRFPCUYO%(E#CWf#ut42Y>?XmQrm4j1r`g03rcK2>@sln9O}; zx|C{{KyG(nl)&Q-inmbVCAmBWVS9$5wwrOH0fD$kcbNuU*st z08mFsIY3-_x6`(yfhb8wNx21&YB%WjEC6u0C-xgo8YSfb&uXVrNh`_2!_ipSjG^0U z|2gMyPe?oYLNXDpMoszNL_;K%$9dH#X)zp)#m{7_^>1J>82%@}C>gk>m9CU200000 LNkvXXu0mjf28V_S 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 636f7d608cba0b8e6df465decec65cf4e0836742..0fb6a5a83268c81567896e5650820b9b4277156d 100644 GIT binary patch delta 379 zcmV->0fhdC1ET|wF@If2L_t(oh3%EGO2beXMo-1j2XF}_L;@K)ROnVPLTR|Ophy?R zfZ#JYbm%iUMLK0EbPf^0ICK(R3x$$G`yRK`Ej2hKHx?0drY!ltFZUk)Kut}}U!~dV zFkNRdjK;Fr>S)ht=)O2zXEGWL0XRMP3Hp~>vkr6%%-%l$aDQA|cSN-UyW#FxyHW`) zM7JlyXe_7eOp0z#>dq;30!lgnUwBMLA<B49%Ki`sV@O-w|e}TMo zj%#m&tB6?Y3U;MS;uOcVaa@}uPWNA6G7335KB0Ye&G6Mo_i4rI#}mTBM%4|NraydPyK^#f5GPkp%}@5fX4{PPZc7p%zp@hgaKuhKuErl#iq ZvH=k&m(!7bAB6w_002ovPDHLkV1iklsX71v delta 351 zcmV-l0igb)1BU~UF@HfxL_t(oh3%HVY63wR#OFeqa4abj8*LI$Vk6fDVl4FyJP39P z_*8;+Hu?r>jRCtO&540nxYw)}vWVrT2zOkT5cZD=gzT@r@7rN^b~wP{aQtN+pPt1m zUI?2VM>dDEgd&>NAJ;S+-GW`Aug;MjEV^(8`3Z(zGw zV>yqF1!y^t4_&zyAev6V5{iqf>dy<1Lzg;GD3+`oFuDRpSD6DoA;05*9J)g};HiE% z9F0Y}7G$9d>W$2SLa~&IyslQ1cWMck#S4)?kR=qUAOK(q#g20{!#iA(6Xm_iS0G#7 z3EN)!3i9Zdl2~#GzY1OV;obv2+*!_Jqf$~9@LloPl#*6pdi{a$2|*`pf0~o?(Yn1+ x-mBFEspT?Px$-bqA3R9J=WmA^|HVHn3h32E-mAc;t!S_vAZbaAqa!c7G`ckI+9t6M1j2LcYx zlEEP%Tb4Msi%UQqDuS(I%S9n1Mkpo8kmd)Hb5IX+7w+B{6_@)?@4fGr_xarOK0FWj z^5yH96_7FKGig)QTQkl9_`0#>8bcT$pGlkJV`0aBP*ELw#?Mn;&P-b%ZV(|+fKfp; zH3C4p^=~AI&|RX&nsH80Q3)z4ni{c!14N>e40>JbyWj1x_q_x_rCfErS2zQ&7v@~g zBhg7Z-M00;S^O3NJZna(2-j0db4g!u^>jKNPJSGE7T=wOpCF$}n_*QEwF^tC2p1OL z4y73wss#W|)1&}|GXQ|;wA+CWO1r}8mj?(8JS|K53hSw)aKn-V7$N%;$m+oW0L5&9 zccCv7vxTPx81=WsY=PA3K8?y1pA#i%0O?k2hqwv)f{A#DiFk-VJ8Ka5Bz)h4pCEUp zTkA&UirkrwOuul=fPMU4*6X~Qni}#ff6&>k&O;51<1(us-wOx#1OSM}V%ECVY;swz zJICE0e&E|l=*yQcAzcI5Sda>@>eJ)^0000Px%L`g(JR9J=Wl|N_`Q5?rV2{E}eXi`KpDkW)(b*Pgr5i+&J;Fi(JrE9lCvjhSm z5FzL$85}IxT;e1(phE*Hh=YGx8p-uSNW6+j+o77I#W-jl`A6~&6_?t?c-DSfpM!t85k?S-{REyvqH!y z5jI%?!-6^$7XSzQU%7j49RM{JHn*0nW4)|nbtqUJ3Qol(f&;kRCq?i~xmAe#`y*ngtkJGp33#tuD8pJo`+*J1@pG zqeMIrC7H;J`}M`sV~ekY^cLi@skU8l5KlzWj8aeV4#`9w^>#%1gTQ1F&Rx35_r}4{ zxo#n5kj?-AZ7Z2{fu&#szt2y=JKs|e0B?#fq|KE{Cp? zR+pt4mgzpAS9JV7f6w!uU@8M@ER1H9LrUQ*j9qoom5& zh#G#yZuN+pvqjSaOmBfxarIREiS-rW7}GO0re|z?e7*vf8`A5U`wND!x*ZbsZuN-O z?GSdwA^rZy4D=trJBGm-ueZl1crC=^S^(-$-p~j~7o~%b6#(G&c!a&bx5tiQ49vSd z9?Bm!Mewb6rN1ZON9!9_`_zD#e##pfvlo28_!F?3u^lUyO|`$&J^|2bG_flVT8$<^ kkKG;k_enTm!UQRP0@qv84#XQe#Q*>R07*qoM6N<$g8Jhra{vGU literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..907c2770af23190c13328bd952683c29f5ddf174 GIT binary patch literal 648 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 E0g?ZVng9R* 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 0000000000000000000000000000000000000000..9ef0a6a919cf0d93261451239b235135d9be6c5c GIT binary patch literal 711 zcmV;&0yzDNP)Px%fk{L`R9J=Wm$7T(FcikW93=^aWRaFOaP2J?bjXnH3i;~;y)8qA1AA$&kaV#Y z8$;VAHkYGHhbPzy*lsN@_Vm?duBNNEk@nnj(*O$;H6hu`wsPZCO0$F|3N#>XwP;<18%N!5@z5(x! zS!-aefpb~-Jv=_)@@g3s2Z_5ZVYLDoPp07~B~KTM-P%f0ohT^TP8%@*;CP6Dc$!c_ zNl*Yl-Gn9Asyh?}uPV78$%-RU;Jdq@;okG{5TJneCQg#u6OHLyhCDB@-)%<$jz7?L za&2Zb0D*9)H7I(nxk=9{R)AYx-=3(Wa~YnGhbS@mF+`BGteT@7oCDwA|4L4PgL&_9 z`15-dHem_KUE+Hh&#ly(3H7B3Q5@O6EPXUt4hD$hiv!AFsblD0B6oO>@iF)w$iZ50 z8lVO$VN+)>Nyg(qDKHg|0JWf9uwBw%I23>uSQ3uJU&p&ZKP&FK21V-qnl8T^J_9TB twF`*rtPc-B|Hw(HFU+7pg9d#y{RO;Im~DP7ez5=m002ovPDHLkV1myEHopJ> literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..84a5427d83021051aa8ddfcb55caf6e05bc85570 GIT binary patch literal 446 zcmV;v0YUzWP)Px$cu7P-R9J=Wmp^L5FcijLO0#C@mQuPjkPBop1S}}Ngf5UhzChLAg=jKp+qZI5YB*gi(U^|5n?BbMAZB z1f1D)T>ZWjrI(y{Ub6IrbLkl+C{~SgDN5&~ZB%Z(T%fFn`h-z}>*b=cXQSs{o+mJy zjv?P|5CGtOJi+VRURnWF)c~$N$S6To^|CaiN&t zclBIcKZrPhKQm=TiFE;dDp%XXNO%8w$HuR0{n2V5O#RB&o3WOBw?W(Kvxzn8xsUfx oljY8_H~kH9)8YbwK;Xag3(B(44t)Fie*gdg07*qoM6N<$g4R&bY5)KL literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..dfe3a902614525adacb4181886e9894ace21e548 GIT binary patch literal 2399 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 literal 0 HcmV?d00001 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 018e08419065b1303f10754ef4cf86e33d4cda30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2578 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 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 6d4a3596e9dbaae682493e6688445e403548f2eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1981 zcmb7EdpO%^7XBrzlA;FF7PZk)jZ%xMn(0L%Z4_CTE>(4jL|t2k(n=|b%yfpR4%N6# zdWluEQxUfz6}K8iD@svTL>N&*NU{;v2$|UZXZEjs_WR?U_c`D9Jm)=^@6EjA>7u>Y zXfFT&+HS5WZvX(PAn-Z_;+vjuyXPr_*luHHisJDIch{d$A9C8E`k#)*2 za_MzgHpA11qg)Q0$~<8Z^T6eKRy~cVNKTcn+$zg&OOe4%WA%_6%1zr*0~eGQGebJX z?nc+t?fv5Kt$Jb7JIvK<6RVM2L*2Ck!rJT>#x%;3cpy4A)H_m1Ngt<}HVKWPCT|xC zmv`+MZoWhPkC|5GD z=%e5HOY0J?YrS5H(*~tm%R03b$?}3=lsA?&NklwgFUW30BbuBwBesBkTA8-Hs!s{9DR3|s; zdr#PR41=GnNA~6D@Oh8dr2LJFB>885u5(Fu1dP;O?ipSLJ&H|KIE$&MaS7O+37GAo zUa zChs)?iNl8W^d_;YSLC{x{E(5mHdX!8OI(FnJ$;=cp}~{!2>fhU0g_iW@n7vPivWYS2BS2KMPW4$1VC}W(cb`%pU{3kt5+{3uUFU`Vd$c? zv8qqtg(dt@cGoktcZc$WeNCF@7^p(QZxVW3*Y&)VgU^x3o*u#h+-pa=y?&gpIc^}I zAzH5(#HY%SFg0zf`p0J>uNNV z5UxWsb&nRA&v==0X5%ztalyeCpCF%iYbQ#16VT<|i$Q#$2EaOf285%$mnvt?keo?@HWw-497*B1V zzri0}GX?$XXhIvlkpd;smQ6vW?gtNJSO8P?udms&u0}T*)4QT>*Wi;#`Nc yD93NI!Kb^~tw!HpCvTHT-{UPwBK00D>h;Uxr|JUb;DZq8R6K-~R#73%&vX 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 067cf697445c4fc0323ff11163373e336f06de73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1496 zcmah}`8U)H6#rVXg+Yfh+38Itr5-}V%w!up#+pginlO4I5oMWdi9C&`v4w`RB#k9| z*1{|6Fg?o{!;I{VJO-1c-uMUJ`pL6cH_m|JPpPOutMoEZ)#Q*@1u(C9BK2?M_Ka$UPA4}*;(if;{hl!Zd)|mdv zjftJ%kGT_SEl#i-%_BBOdkRKUI@p_;?Qh%5jY=|E|5!;sMf;Nk`C_h1+(ckr@7`J# zl}z$F=h;O%s;Pi*XpJ|GSDkDR2WgLyCh&vn+@dN;dnn#^<>Y05HD|4sTa6#;^F(s; zy?8Dj!vy`^svAD#0%{pmv2|}%?N7ERmy`IV+-bQejdK)UkX^vi|nu1t2V zHR}VCLWOB==Bf=)#yGE^deunPMednJMA!tbd!}58vb88{>T4(tctvgLty6>m?;S?& zMs%AK^hrn4`cI5S_<&F)s`3OnvlEp;SO?O?Zk9T0Jq%(S0Yp!~)KouB*4E>yE0ac{ zZ}WR&M{@}F&xHeI_4zusMZF^O_4?_ikJh3RHf*XURt7d;#puOBl)(!z%;w#Lvf*f| zwz0@w6aOT<(h>eKa7(jUjnU^fe1u3RwjHsqtodt$ie19`AjYiVFYjI`d8bg>k2>wa z2UT=pX&}561xFs`)ES>k3>9WN&z)sDe^HJjQ{P6Jee&cRpvnmp=qMLP>y^Ni3lGGG z@(Dw5;Qglb#56z8s_b&)%1&5+R97{ny=#zeVyMsBiiV72<`AmtOQV6%1@&5lpwB%L zCxwJpGQV_iJO+d*W`rD{&C$DR(d+hJC{cAEdq^L)bM>oZ6TGT-uj zXtJEzf8nJarGGNc{;cnb6o?rtAZ-Y@n&>(ljKFkUZLADb1Z@iRe@u9or#xDJ#X{#s zxMA7i__<~?UG*>&%%=9Y;MtOHxDi~FmoV!cho6>3fd`c?i?ieOxM75hG%r$5(Sajv z8g;thc0XPMk>6Y&5A5*84C#p+s7p&X87*`7Q;&aQKB#R;Y)}2#3({$zq_B%2N$yIA zCvwfBtpsAAqLzjFvt5D3x8_U<@G&Tx+h;)v*kT1 z+52#zI4~By++uZcK0eu=sVikbp0Z}vj*h7SM2Lyx%(N6t_*h|to8$O}l}(UD;vKK+ zuQGhWVDXHs2DD3Yz0j| z1+Ki2X1`j-)$8;b-45GpNwbx?x)Rck&|f{x^*v7y14kNMItBku%--NeQuAuE08hn-@6 i9p2S1JL!KA^AnJ!DV_YniO=P|YQV}IZB}989rrJf=-c%G 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 5be8d45d681e3a97e1683ac1188cf6f52704f95e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1339 zcmah}i#O8?9RICJ<9dXH<^8zI6iOZmtIIB}L>MuzggoYY)M6}4YdX1ZN4Qu;b~O}5 zEuuS*p}Z0;WkoS;*=*S3GE{SS?;mjQ=bX>?^ZB0dIp6a=-|so!f>VAz>Z%5+005{X zk0AmTdQ?FML|GAAKF0qepbLRMoO5Zx@dS9GtP;QRB4$3Y8!gV`{5-s<00F8Ag}^aZ@`e)1AqE*0=quvL*)xX>lLJhCvLT zA0>pT*-w=Kry6nTf5<>)EaUCmk-aj4SEds6t8LN`st~$w zDcQ?RUGP7s@A1@d%$q>)2ubdVq=-8ZZXO%eA$G_5fc@j0+ndeTIj& z4eHG7#RA?+MqQyUzJjP`>jITEHLjQq408OrCM)rCvP z%HzcX|0C9s7K%j+f(>gz#3HdY=xQ9fNCYy2=>x!1?zV({9bl?#N8W7T3-IvV!dwyA zE`)5WkMC|&G-Mj4mTy2F(QgaCw@(h+EE(}r3oK@r$bIitvv=kG%N={r6RI1SX z9#2?N!VgqYG{l`Y+**Q)k)iX^3D5_QQc9^qXR=q^G>{jW%5XL<&IXe?mO#g#58^Ub zqSf!(?WP;RyJxe8BfD_?8&KyNQx&)n!9qcBaJ}R+Q4B5AUm+ zL1zT8i`DIyNIFTo$}S=3D1BOush`WbU}j}@1l8pd`LMV0WmiH;BD}Xi`4kfutyep~ zZB%v7dV+lYEZVNxGaA3;hM!Nl!DXir9*ZA|!5pocKK)T4x&4s|T! zMlkA9!V+o^vY}bU0XJMTT{~GC@^{$_-F;Cn{GccAzMatSJwyORU!_iz_N;-_o+b|1 zHoSdfpWhN{@We3f&&A{D5$DW%Cr{rKTu5-$ z9;BU&)nw_hK4Ma`a+e!PWuG+piy5)HZh1=rpH=jvM}K|*!!Z-+F=leS&*PaRR7s%X q%+62hwGril_4Dd67XO27a`3(#utNRK-S-vW5J3LyhiLLVL;M>@w1}wy 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 879eca4d5ccaa891836b2e4209dfb70c6f538769..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1435 zcmaJ>i#O8?9RIOgGK(S4d9`S9r7S9PV|hj4Ag{EQ=o$06;D{+j~l^ ztwdkT{U$-i=*^!-D#p_Z1<(gzivS>V`GUQj_w6UVF?VOUFHClAHHBM-4}A`Xl=;h> zLZ8>SB%8K)E4_g*j+W_0KOB2J?79L~Qx%{~luD>FX0ExWt+VyI0btAU^-_n!#uZAY zlm_MNw8>6ae~hAlIdc79R=)kj#qC{N{h>bA1WPQOR~OlU?wd1N6uP4a^VZ-RX~X)_ zO#8j1=2&^q>!}5Xh}Tiz?Ed`|WGha1>1~)nPD`CdV97gz{Ag(tiElW*CvfEzs#?Jc z)ixL1a!BqT-D(}gQ-0lQ4ou-bNeGtdR!k!Gr_7HO0ssug4?j##Qpt zH2~X}wO$pBHZXvwT@Av8IuPGPukN3YF?h>C(XAqIp)zdCSa6nt;e(6E%m4(YiAxGh z@L8nvtY3#e>dkmjb`TSYXg5bRg1?+%_lHiVL8u>Sczt)WKDe==z943z?kvG}P{^9C z1nq%IXnCpEebe_e3LfK5BTlHC_}03m9C8RRXxMwdSLoRJUr2|971${O8f;saa*=iBkwh=LQ(9stzni;MW?NW4{vOQgw6#HpQMdh8khxIZfZJ)=ZT4}sPso>F4XT`!lWYiiQh8EK6 zqgkm-dk5&O7>LtH8*d>209FZOK3HzcXyiYrmx$pREbnScR9xwV2NCvL;)1qbkahu( zxU@GgN=&G3HjCijA=8$0ODQMAkJ}7IvJzlE6Qa#`PAO6d8>*ge&}qKqe}&-Z@NPOVZHG0?1R*arRv@vW(xx1VC>4P?ldwNU~*cYNaM-z71SQT{3m?ldYx-y z%j9#?f6v1i=N>E$IQ=E@IdBFcapg{m;Oo<$cwn$FYj9jDaa`huC2DgXX32TW0{xrN zuaUUs0L-M-Q_V&(#g-XcKB4}~2>MGAk4UyW>PlaIwyFHNi`j!%Zc#|yTJP^r9%XDq zK_wyIuvF(6$+(6~o$khE#D`;jx~np)%$avawlL}j-Osj@9`?+2@K*|o)CBEk4Qe~} zGU<*=bwm>*m9+h{8z|o+!O_GM9!T<;$lg~XWKz^zryR}Ob;YW=7x^GdATiAW}mCu#lWxM!I25q)#3LlNVVi+>Xx3t#X zX6N2MimoZ}>fxDdlsXo(O0ioQ|o|4r$~c23^1B%jaxq-zs~GYO~{ENBL# z#|I-qcT5VoMlZtSC#YJiHETNz)`J1Z1GT$N*^9&qo@L%55yALTL3_?NTUJo{<#Z+F a+9}!>(DZGFK3DQ>feQ|9_H@*>r2hd>c(Tm^ 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 c0e9346d7bb0c4a349badd890e884b1ae8db1ebf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1344 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 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 From 3d964cbf04fc58cfac8e0c917412da50cda2e253 Mon Sep 17 00:00:00 2001 From: Fr0goo <153249069+Fr0goo@users.noreply.github.com> Date: Wed, 28 May 2025 17:24:21 -0400 Subject: [PATCH 09/10] Goblin Speech noise (#1304) * Goblin Speech noise added some goblin speech noises using various already existing goblin sounds. just cropped and stuff * Fixed capitalization * Apply suggestions from code review Co-authored-by: Nim <128169402+Nimfar11@users.noreply.github.com> --------- Co-authored-by: Nim <128169402+Nimfar11@users.noreply.github.com> --- .../Audio/_CP14/Voice/Goblin/attributions.yml | 15 +++++++++++++++ .../Audio/_CP14/Voice/Goblin/goblin_talk1.ogg | Bin 0 -> 8541 bytes .../Audio/_CP14/Voice/Goblin/goblin_talk2.ogg | Bin 0 -> 9686 bytes .../Audio/_CP14/Voice/Goblin/goblin_talk3.ogg | Bin 0 -> 7666 bytes .../_CP14/Entities/Mobs/Species/goblin.yml | 4 +++- .../Prototypes/_CP14/Voice/speech_sounds.yml | 11 ++++++++++- 6 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 Resources/Audio/_CP14/Voice/Goblin/goblin_talk1.ogg create mode 100644 Resources/Audio/_CP14/Voice/Goblin/goblin_talk2.ogg create mode 100644 Resources/Audio/_CP14/Voice/Goblin/goblin_talk3.ogg diff --git a/Resources/Audio/_CP14/Voice/Goblin/attributions.yml b/Resources/Audio/_CP14/Voice/Goblin/attributions.yml index 31bb61333d..a7edd00fda 100644 --- a/Resources/Audio/_CP14/Voice/Goblin/attributions.yml +++ b/Resources/Audio/_CP14/Voice/Goblin/attributions.yml @@ -8,6 +8,21 @@ copyright: "Taken from https://freesound.org/" source: "https://freesound.org/people/spookymodem/sounds/202100/" +- files: ["goblin_talk1.ogg"] + license: "CC0-1.0" + copyright: "Taken from https://freesound.org/" + source: "https://freesound.org/people/spookymodem/sounds/249813/" + +- files: ["goblin_talk2.ogg"] + license: "CC0-1.0" + copyright: "Created by 999999990 from https://freesound.org/" + source: "https://freesound.org/people/999999990/sounds/320345/" + +- files: ["goblin_talk3.ogg"] + license: "CC0-1.0" + copyright: "Taken from https://freesound.org/" + source: "https://freesound.org/people/spookymodem/sounds/249813/" + - files: ["goblin_sleep.ogg"] license: "CC0-1.0" copyright: "Taken from https://freesound.org/" diff --git a/Resources/Audio/_CP14/Voice/Goblin/goblin_talk1.ogg b/Resources/Audio/_CP14/Voice/Goblin/goblin_talk1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..9edc4ace818c49bb2c9cfee7d6798c151b317013 GIT binary patch literal 8541 zcmeHNc~sNKx1WR%zHBjpfC&WsCIn0nD$yVjv4#M$3xq{Lu@Dwnq(u-kixWbLY;z-??+| z%x6YDH*N9(Snw&uWiHTBRx|dxt->t8Z2Kxf6rHFfU>zC&n1KoWjG6s=3gf99`Bzeo z#K4wkda_t2RLS}GWUDeK$_jD>M8`*c=9#bw-5f3QpH+ampi3<|Jj-RASg0ZojG*t|KBtrSgxKgYH9o(_(}RsQbwXk0{ibSN6XIdn%v0!DRC0b5}2 zj{yh(Vum}VOFWq82LKU(@&;?!u8ZHly}K)=)``4Js;oU|a2nhxJq>FwzdvHIs~^%5 zQEs>%05~9KBc%xwf@j~qT|j+I@-{H*Ro2ooEsLn>tBP+1P0?$u;v%0Dxp{vF9pv0Ho ztKCWb$?hF0Aqt?7Ka1IUpzvEDF?^P&lsqSIZdxc1LxTX9d~$y??aDRUmDjWZl8LvD z$+e{x!$K>cWvl#r9Y=lr*7*eoZ;u<@7B?!38}py7_{Rmd$KCp8o}D_10p-Rk3XItW z40gc-UI9*$(SQZvN|ThcvL5hqA3EonL>ENvkZsB=tvyisr0%fBEDOLu7G;`9&YDcl z-L#`%wk$moU0U<+W`5K~Gr)(o?A=0}%T5VQwOI>a1aM9HLS}D*xl|x>f_j+$*{s-dvC2eAI4##H%YN4{p9n zeQ+@GD*Mub?(zeJrHNNvv`VYzYCCkw)Q;5+K^k@PAfbmE3i+akO4aIa1i-O@gQbsa zPm^ISv#4xQ+iBl9d9y+juhwlmc=f`H`*1|&&9d0j>cOz~KK$UzE9y!b)cdJWpLHKT zT({71O3$HG^y^%_h)l1c7cSWP4WY1{bCF%OASZW?Yh9X`kh-XPYwGOGQ2->wzk4w~ zgCdgBj~qN5 zlw=)|W=%?SS(&ov%+mVP^39hTr_TJ3`LD=<0Ryw6km>l3$Wd@;_Aq!_%sr;(=D6w_ z+#R+$&j0%Y0HDaza#L<4OmCsZsL*OuXyNC(%I|+lqsq{NhAjqw3P5M;!=Z$MoN{L~ zr?%?_-jA5wG=r@2RR2V6J+9PcKV76jH|59(HZ=!F41CzsMBl{CbYH29woQ$YjkiFc z-y)!b3JARzW-fJ?@@X*bUv$A4K}7?)pLD?)K}G)|UH^&i{eKz%r!4^84nu%H zeL)3%F;>jOfPGB60@P)YD-I7F!N}BTo52S&}i6EiucAjD?4iJ{){0wYS3L*j(AI=v9`k!mVg{u`rjK?41gG;2E;)3692Dn zk_YGmz$*v~g!qD25P<>Wh(I|!?Pb-OjQ?KDzfb)ag%~jlfPGM5Jgpy_8y3hfFxLzT z1Xom|4ESV>k{PS~Izz6Bz8Z@gZUTs^V8V;sKg9KZ$dgq^%P;1eyA3(M`y|FvG90-W>;03eR-6tIl(LHqANg|KyjZZd$dFTWQRPewEof- z^ZscEZ?cDvpI`BVDA{DDoK;#=UvCB#4a^=P8#2q~U@Z=6TE32li zzERVg>J=axv@n1a`a*W7E2mm3Oh=$m z5$Y~*riTlKX6$MWftg9M(9XHKO1RY3qFN?Yr56{t)}d8GAzKxQjd<`EfTU+M;J_P* z_QI5h_9Ro_%6WV+QHNelfykzg9HzuLMFkuPbk@2)ErGN})!~;Rtx#yA1V1k9>aCCk zVr#(@+E$1^4kZ!<7{H&icGl*#mO8$(=GFs>3FUGfUX)c6?NU&)a5d6uSCjIg#rFrW$m7vnsZ!BF2aO>-*I@*7_Nuj)10S`K?^1PIA5H`eI7tt!Bz?q$%_fPl7hc2dq0Cd6~;#IQjZ=jt}f zVhJV9%hmN*TZ!!?O(G16vFLfYViK(y3CiY}j=`B!%S8K|Pw5NH*lpKE4SkeiVT?sP zCH6&kZIP=Rr-u@2+4ES*d_8DC$L6GtTQ;XBNJ8rA)(>lF8)IaXTDpgVjy`lQ~Cm2a->d}y#jt1 zyf{@935B!X1JR(DfL&dc&3QcAp~R=r?1;-NlpPSM77Yof4kp48v%uA)dIZjAu0!bR zY5_&DpeQ9DEI*Ba&ARHMPb1(k*iI)x9kYB@MSo&o*mSXID-yEiI*JN{pqN=vuz-q$ zuAe%Du5M7CQparXZ0Y-{$*vwz4x8%@iiHLin$7XGjs(R*@pF99$DkrtcJZ8exb3E> z0KS-1tS>r3UAG{`Sc7U>KI?no0BBVf30*84QyJBiDw)7UFVRbw#Y!Xy8|nmC(Z|f< zERLio&3CC{l*$00mGk$ftH)J$QT`l>i~Zv{=K6nXOi)xa=%{`|oRvF4dmQ+&h@5fJyQ zuuzQJqT8>!3=hYr>2A$(HJZK8iB$kZc}zpTg9A5_X0%`-N@o}|O-vWf9Xk_vun@vS z4I+tjh32%cSIt>^5pl`vQ+EXbh1)eu2nsNmS%5X$#(a9Y5Gx-eU{bzZC{M60Nl)YG zkkQbFzj_8cL!J3-X8sI)X4#DO3~$C{X4Q=CjNOb91U_dD{2J6zdfVmji#CZ>rU?)a z%nT3D%p8}i>dABVTA=n~8I%d>W?ep#4^(X$-rqGGmwOcr51ZYOs1D)J_*|-FZx|yVO7jC%M0V zkFGR|f}qdDmBp9mzg4uE{1CB*`qkNAPlL*0n|XR@ zb9TO2*IB=ER1}s;NzFmZ71z9Qp(CPrduQuh8~z{h-HV9c#^6jO4ZpIuy6ollm-nc@ zZCFM~J9KHtZ@QcpbA{KzPGmrwS~u z*9I(3wQEWZu=DdHbt{^hmTUQR4GBH094I`q=L$Mz&#tA5j#hUwU#I`rwUWSYnPx;L z{$x~ky7boGnIDcm>6@>imFamc>5(S;-1e|V_0B|RAny7i3v)gCGU_=%Uu~195)y7G zmsJk6=3!NNU+A-tRDO!UiL7me#e!7lO|K&Cb!B^ZPX-K98@u1-g^9=?u5@q2teKWw|hP6f0A6mu*y6Y!fQ2lCgNj|j}WZf51= zXvd5Ojp%d^)#n8HEe^;s;p7O+Z>2~WxB?u-<*Oq_BJKm*f+P-_JX*ZQk6vyuqMGuZx>W)G$=jA$7+`8Lu>@Y_@&1;pDt~-`;E678OXM zX~%8BzH`(K{ngx71Iwv<@;V1p|I+LovB0Ago0k-cXnCuVLH>E}`s-HiyZX3Se_9jkB z0OKBK{d{pvK}K3m!@i3%+KjeQYBI&u(P3esbVf{^v_uw35vQV3#O=)#+HJIiokx}< z{E6wA-G+Ib7CIKI$aO8i?vv590g<6Yv77+!`(NDOum0BTUUi9QgPop(9%rPfNmj{g z%`s6=7$EQk5@0gEoZ^TL?`bV^tXawm1+>oVQ}dU&`;h#!R$4TZ^Ybhn2u2QMlBug0 z;{xI@g|wy|tBj4kKx*3TfHL=yEqlZss1u*FwdJgRtfAO>HwSxzW29q1&I1$TA3@0z zOC%3L$T`t`k4~?K@fMM)YSQIeEKqcW?{u(tVk|9j&X%q>1b_72Mt(?bOL1c@Ico3v z+do?>pjMCV;v!uPY_ocuYHS&!Z;~s*@^H*)P_7P`*BSL@6q24*ccdQ2f>9e?nqjiP zCqr1P!^YL0jyYCafh`FzkjXm#*pGhmg8pXggB_|$O2OF?7pv@b@xS}psOQ}w&lA}> zm2~_KQ+LLM*1gY;keDkeHDZgBKh?%~-`tX}wyDek;mWKKgn1xh# zY|q`a>36LwHFDB0+7~%_tM?Y=Q}1?O``m8^-Vw^BkDg}lK7ZI6fIpn>AU`lN8Xly* z?i>8*ZQXHPN}qZcvU};)y>K@bCt|-oub6tZbI0zhgoVe$5LY@Di~zA0M$Byp@$0f2 zHLK~Cm#kkdK!Bqa?vVd8vfo!BAq+pR{$&+4{^dc+%1B;U7_R{(mJr#ZGMd!xLzctt z-YR+O!IKA$xH;IE5GNE;P*3$i1u$j6l@0zhoQiy!EuVfG2%uFLKBRH<|JqpmA!qBYj;G| zr3Sjo@7!4YPq@8yJyrd&FZ__EV1 zJ43%6K9($gidXFE9R~||&_2eEZ`SU1nYJz*);##76eEik;UuTLBe0cwb3FVP#{8`HD7?wkU0F5Me+7X-eGP3L( z63|;^y1egB&TmOty4KUB;Hl00p)HPm68~V$bpclE)V{aYMlh|z(Z5{((g4K%JP^rW zD|hy-fVkuQA90A5#xohv(Y{1b-*=n%hLbZfX?ABu{ajj71S(>E~$}LRD_jF?a6pk zT!k~&(jOI%1rye~{QeQMT`bigQw%@E^!>UeM5>{#Vu#~rnIRYG6&=KV4(=h@*U!YZ zQf2tg!z>G_tIRQEUvf;^v*2)iT~6`9_DzomJUxQzxZ>x*l^CWC0aPe>I(S4E(ap3e zLSGL2l)dl@rZFM!TGne z#sy8(tU+t*_)yE4yNRcEDk52ed$$$o7e35};^7}3Ol?gL#lJT_aEQ?Tzy*347L)^U z$fRGVLWAvgK6pmWBnYv!;n0 zq9UmGc^CbAn`<^^A4zR_N_vDqHMA>rkY!+uq~{q)Zn?io(81YB1?o=XexW%A!aY*D z;1cW0O7COS6kCII!yPxaPfti=5qED2wMQBQjvB-Sd28w&r65h@9tHBs?Ox1=^5tc`8#9yshP)H}&7UocgM5;P;LW zp%~++wN6$4{cn%e-JPTWA1FzYmJf1_i1{?1j^3UR$pdd6T3tFA`v()F*rp|=rammm z4G^n7IiTi*w~vw{2zFq<_NHBoncDm`u%9%)f!#h8xa-88uja48$n43PyiGTKV2{^1~#PGZTE-uJ;JmlWlpGL?(5(2{K*(XNV-2eKSjD+D| zH!Q|cb=(Fu3%}`|pM0(^@y+Yk$tk^MhZJfcD=1b^Gc~|FjAVsxpx9}vdOxqR$*L?7 zb$6^CZi27zBdsDiqsg)ag_|3(9ZS!vyC^Ai;A^Pop}u*)8(Dr>{o5DR6FaD64055u z$n5TW)6IR2x)|?u$FFHQJt{uF{G;!7KEIVFMn#A_pg3t&AS%MTgz}n59n?C!e;Zmg zm_?~Xk$49gc@2XnN|%%qol?Cd&Mi%odd7fH>F0>dv}&|}vV5$L$J!S~X=M}6Or+nt zbzu4Gn}@UKu}zI9gyqSfKUx;;0R~5B{33Wa+P7a>u+f2R3?HjhjMK!t9=e7_3n``!>OR|%T=WC z3`w>M>SHAtnYKC68N1T9!}>k;8{)=&y~evi2&qyZ_?qjF7*vXgWIfVid97cAbbK@` zy0$uCyn8Lljo%XS+%gqcV{tT9gMl{_o!PH$y{Grd%`O}o>ZqblT3^9lyww?jTY4tQ zAH;;RRxofpFGNSRqxs7AO^UNesdr>~7P{J!rhCtYG-9f}oisG{DEF{WVAJUjYSMY2 z3%otO^!h?i)rt*H52alO9qhUSLPrP^Sf;wSO|^={VGblKY4uX>g}Ii9-i zi)5=aF)eXtlMb$1vps>mZlA$GJLkCM>aWv}xfk1MW|1N52R7)uJ0Ztt(SLetb>DdJ zw?{npr6_97mtnv=hmispntPVh8XKikW#X9piuap&8-ht=)|gR-{j@dUvSo*eI&A)E%w>Le2UgS2zT3+; z-z#65qb_%lk82P$R1=t7##TN~ZFxnu9s@Z29OJ*R^wF&&b(6nLOT%)=_?~SJ#LSoV z)`atjq(yaGNPqL>E+^@uqWqjVNv6(n+`W94(q#W1PIXbwxspSuD@5U|I)MU=-h?+) zI!QI%0Za2qF{knHS@Jxhyg-5TW{cQ-p0nq7&+`6A#kzOmj*3RHNBy5?fqiyFn>Fr% zTDiY_{t$Grj$vtd^vQI{K0@eq~FO7Rvx=2>O=3>8wz_ znEA%qPAt12+iV9cDKvO*znWNu-MHp9Y8&ESIC8SJ)_dN`>{E8hiW1YhucEyx7rfLH zugOS1zHHILg;v$S$x4j`9j%T;Ky0QkHlzTDBQ&cRwnsPmk{QTI~OV ziwN98FFRB6jquFFA(vVd8mYA^{1iQg8sO+H#oSnS*^9ztRK#h@HLwkqKv$v>p=Qdz zMx``WHu)*@b{n8Y9|{@*@E?)@NTl5 zltjmE3)x@mh1mJ>#pagV`~AP1D*SfQJj(quhbGRrf7E{I#Cp5o5luZmT~#dT%b;xI wvu?jAeNobmAxJgYWMEs2aZMgRZ+ literal 0 HcmV?d00001 diff --git a/Resources/Audio/_CP14/Voice/Goblin/goblin_talk2.ogg b/Resources/Audio/_CP14/Voice/Goblin/goblin_talk2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..aa474738aa10f8b73c4974723fc6963e29233af8 GIT binary patch literal 9686 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 literal 0 HcmV?d00001 diff --git a/Resources/Audio/_CP14/Voice/Goblin/goblin_talk3.ogg b/Resources/Audio/_CP14/Voice/Goblin/goblin_talk3.ogg new file mode 100644 index 0000000000000000000000000000000000000000..bdc40f9fd08b6cb4f121535b09a0c8342ddc009b GIT binary patch literal 7666 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 Date: Thu, 29 May 2025 00:45:41 +0300 Subject: [PATCH 10/10] caves fix --- .../Trading/CP14TradingPlatformWindow.xaml | 2 +- .../Prototypes/_CP14/Procedural/caves.yml | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Content.Client/_CP14/Trading/CP14TradingPlatformWindow.xaml b/Content.Client/_CP14/Trading/CP14TradingPlatformWindow.xaml index 02d811e322..37e9a615f7 100644 --- a/Content.Client/_CP14/Trading/CP14TradingPlatformWindow.xaml +++ b/Content.Client/_CP14/Trading/CP14TradingPlatformWindow.xaml @@ -80,7 +80,7 @@ + ParallaxPrototype="KettleStation" Access="Public" SpeedX="10" SpeedY="5" />