From 6570b1b4b6ab650cf66b651da14b25c63a04aa74 Mon Sep 17 00:00:00 2001 From: Red <96445749+TheShuEd@users.noreply.github.com> Date: Sun, 6 Jul 2025 00:09:03 +0300 Subject: [PATCH] Public market + Solutions requests (#1503) * Add platform markup to trading platform prices Introduces a PlatformMarkupProcent field to CP14TradingPlatformComponent and applies it to price calculations in both client and server logic. Adds a new public trading platform entity with a higher markup and updates related sprites and metadata. * Add platform markup percent to selling platforms Introduces a PlatformMarkupProcent field to CP14SellingPlatformComponent, allowing selling platforms to apply a markup or markdown to item prices. Updates server logic to use this value when calculating payouts and UI state. Adds a new public selling platform entity with a lower markup in the trade_platform.yml prototype. * Add Brad Potions trading requests prototype Introduces a new YAML prototype defining multiple cp14TradingRequest entries for the BradPotions faction, each specifying requirements for various potion effects with minimum purity and amount. * Apply platform markup to selling prices and payouts Updated the selling request control and platform window to factor in the platform's markup percentage when displaying prices. Adjusted the server-side payout logic to multiply the payout by the platform markup percentage, ensuring consistency between client display and server rewards. * replace mapping to public platforms * bug + remove eepy potions request * Clarify purity requirement in workbench reagent text Updated the reagent requirement string in both English and Russian locale files to indicate that the required purity is '{$purity}%+' instead of just '{$purity}%'. This clarifies that the purity must be at least the specified percentage. --- .../Trading/CP14SellingRequestControl.xaml.cs | 5 +- .../Trading/CP14TradingPlatformWindow.xaml.cs | 3 +- .../Selling/CP14SellingPlatformWindow.xaml.cs | 8 +- .../Workbench/CP14WorkbenchWindow.xaml.cs | 2 +- .../Trading/CP14TradingPlatformSystem.cs | 10 +- .../CP14SellingPlatformComponent.cs | 6 +- .../CP14TradingPlatformComponent.cs | 4 + .../Requirements/SolutionResource.cs | 9 +- .../en-US/_CP14/workbench/workbench.ftl | 2 +- .../ru-RU/_CP14/workbench/workbench.ftl | 2 +- Resources/Maps/_CP14/comoss.yml | 53 ++++- Resources/Maps/_CP14/venicialis.yml | 46 +++- .../Specific/Economy/trade_platform.yml | 28 +++ .../Trading/SellRequests/brad_potions.yml | 219 ++++++++++++++++++ .../Economy/buy_platform.rsi/base.png | Bin 711 -> 539 bytes .../Specific/Economy/buy_platform.rsi/buy.png | Bin 446 -> 433 bytes .../Economy/buy_platform.rsi/meta.json | 3 + .../Specific/Economy/buy_platform.rsi/old.png | Bin 0 -> 273 bytes .../Economy/buy_platform.rsi/sell.png | Bin 558 -> 523 bytes 19 files changed, 358 insertions(+), 42 deletions(-) create mode 100644 Resources/Prototypes/_CP14/Trading/SellRequests/brad_potions.yml create mode 100644 Resources/Textures/_CP14/Structures/Specific/Economy/buy_platform.rsi/old.png diff --git a/Content.Client/_CP14/Trading/CP14SellingRequestControl.xaml.cs b/Content.Client/_CP14/Trading/CP14SellingRequestControl.xaml.cs index bb0f83b271..0e38c7d25d 100644 --- a/Content.Client/_CP14/Trading/CP14SellingRequestControl.xaml.cs +++ b/Content.Client/_CP14/Trading/CP14SellingRequestControl.xaml.cs @@ -17,7 +17,7 @@ public sealed partial class CP14SellingRequestControl : Control public event Action? OnSellAttempt; - public CP14SellingRequestControl(ProtoId request, bool active) + public CP14SellingRequestControl(ProtoId request, float markupProcent, bool active) { RobustXamlLoader.Load(this); IoCManager.InjectDependencies(this); @@ -36,7 +36,8 @@ public sealed partial class CP14SellingRequestControl : Control PriceHolder.RemoveAllChildren(); var economySystem = _entityManager.System(); - var price = economySystem.GetPrice(indexedRequest); + var originalPrice = economySystem.GetPrice(indexedRequest); + var price = (int?)(originalPrice * markupProcent); PriceHolder.AddChild(new CP14PriceControl(price ?? 10000)); //Rep reward diff --git a/Content.Client/_CP14/Trading/CP14TradingPlatformWindow.xaml.cs b/Content.Client/_CP14/Trading/CP14TradingPlatformWindow.xaml.cs index 62823f3b01..a99d8968f5 100644 --- a/Content.Client/_CP14/Trading/CP14TradingPlatformWindow.xaml.cs +++ b/Content.Client/_CP14/Trading/CP14TradingPlatformWindow.xaml.cs @@ -127,7 +127,8 @@ public sealed partial class CP14TradingPlatformWindow : DefaultWindow UnlockCost.Text = _selectedPosition.ReputationLevel.ToString(); BuyPriceHolder.RemoveAllChildren(); - BuyPriceHolder.AddChild(new CP14PriceControl(_economySystem.GetPrice(_selectedPosition) ?? 0)); + var price = _economySystem.GetPrice(_selectedPosition) * _cachedPlatform.Value.Comp.PlatformMarkupProcent ?? 0; + BuyPriceHolder.AddChild(new CP14PriceControl((int)price)); } private void DeselectNode() diff --git a/Content.Client/_CP14/Trading/Selling/CP14SellingPlatformWindow.xaml.cs b/Content.Client/_CP14/Trading/Selling/CP14SellingPlatformWindow.xaml.cs index 2f6b29f992..4dad85da51 100644 --- a/Content.Client/_CP14/Trading/Selling/CP14SellingPlatformWindow.xaml.cs +++ b/Content.Client/_CP14/Trading/Selling/CP14SellingPlatformWindow.xaml.cs @@ -5,12 +5,9 @@ using Content.Shared._CP14.Trading.Components; using Content.Shared._CP14.Trading.Prototypes; using Robust.Client.AutoGenerated; using Robust.Client.Player; -using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.CustomControls; using Robust.Client.UserInterface.XAML; -using Robust.Shared.Audio.Systems; using Robust.Shared.Prototypes; -using Robust.Shared.Timing; namespace Content.Client._CP14.Trading.Selling; @@ -20,7 +17,6 @@ public sealed partial class CP14SellingPlatformWindow : DefaultWindow [Dependency] private readonly ILogManager _log = default!; [Dependency] private readonly IPrototypeManager _proto = default!; [Dependency] private readonly IEntityManager _e = default!; - [Dependency] private readonly IGameTiming _timing = default!; [Dependency] private readonly IPlayerManager _player = default!; private readonly CP14ClientTradingPlatformSystem _tradingSystem; @@ -47,8 +43,6 @@ public sealed partial class CP14SellingPlatformWindow : DefaultWindow SellButton.OnPressed += _ => OnSell?.Invoke(); } - - public void UpdateState(CP14SellingPlatformUiState state) { if (!_e.TryGetComponent(_player.LocalEntity, out var repComp)) @@ -114,7 +108,7 @@ public sealed partial class CP14SellingPlatformWindow : DefaultWindow foreach (var request in _economySystem.GetRequests(faction)) { var canFullfill = _tradingSystem.CanFulfillRequest(_cachedPlatform.Value, request); - var requestControl = new CP14SellingRequestControl(request, canFullfill); + var requestControl = new CP14SellingRequestControl(request, _cachedPlatform.Value.Comp.PlatformMarkupProcent, canFullfill); requestControl.OnSellAttempt += () => OnRequestSell?.Invoke((request, faction)); Requests.AddChild(requestControl); diff --git a/Content.Client/_CP14/Workbench/CP14WorkbenchWindow.xaml.cs b/Content.Client/_CP14/Workbench/CP14WorkbenchWindow.xaml.cs index 6787850c5b..5c141a9abb 100644 --- a/Content.Client/_CP14/Workbench/CP14WorkbenchWindow.xaml.cs +++ b/Content.Client/_CP14/Workbench/CP14WorkbenchWindow.xaml.cs @@ -87,7 +87,7 @@ public sealed partial class CP14WorkbenchWindow : DefaultWindow if (!skilled) continue; } - + recipes.Add(entry); } diff --git a/Content.Server/_CP14/Trading/CP14TradingPlatformSystem.cs b/Content.Server/_CP14/Trading/CP14TradingPlatformSystem.cs index 7e8a2d13e5..9db5f9812f 100644 --- a/Content.Server/_CP14/Trading/CP14TradingPlatformSystem.cs +++ b/Content.Server/_CP14/Trading/CP14TradingPlatformSystem.cs @@ -65,7 +65,7 @@ public sealed partial class CP14TradingPlatformSystem : CP14SharedTradingPlatfor return; _audio.PlayPvs(ent.Comp.SellSound, Transform(ent).Coordinates); - _cp14Currency.GenerateMoney(balance, Transform(ent).Coordinates); + _cp14Currency.GenerateMoney(balance * ent.Comp.PlatformMarkupProcent, Transform(ent).Coordinates); SpawnAtPosition(ent.Comp.SellVisual, Transform(ent).Coordinates); UpdateSellingUIState(ent); @@ -91,7 +91,7 @@ public sealed partial class CP14TradingPlatformSystem : CP14SharedTradingPlatfor } _audio.PlayPvs(ent.Comp.SellSound, Transform(ent).Coordinates); - var price = _economy.GetPrice(indexedRequest) ?? 0; + var price = _economy.GetPrice(indexedRequest) * ent.Comp.PlatformMarkupProcent ?? 0; _cp14Currency.GenerateMoney(price, Transform(ent).Coordinates); AddReputation(args.Actor, args.Faction, price * indexedRequest.ReputationCashback); SpawnAtPosition(ent.Comp.SellVisual, Transform(ent).Coordinates); @@ -135,7 +135,7 @@ public sealed partial class CP14TradingPlatformSystem : CP14SharedTradingPlatfor balance += _price.GetPrice(placed); } - _userInterface.SetUiState(ent.Owner, CP14TradingUiKey.Sell, new CP14SellingPlatformUiState(GetNetEntity(ent), (int)balance)); + _userInterface.SetUiState(ent.Owner, CP14TradingUiKey.Sell, new CP14SellingPlatformUiState(GetNetEntity(ent), (int)(balance * ent.Comp.PlatformMarkupProcent))); } public bool CanSell(EntityUid uid) @@ -182,7 +182,7 @@ public sealed partial class CP14TradingPlatformSystem : CP14SharedTradingPlatfor balance += _price.GetPrice(placedEntity); } - var price = _economy.GetPrice(position) ?? 10000; + var price = _economy.GetPrice(position) * platform.Comp.PlatformMarkupProcent ?? 10000; if (balance < price) { // Not enough balance to buy the position @@ -205,7 +205,7 @@ public sealed partial class CP14TradingPlatformSystem : CP14SharedTradingPlatfor if (indexedPosition.Service is not null) indexedPosition.Service.Buy(EntityManager, Proto, platform); - AddReputation(user, indexedPosition.Faction, (float)price / 100); + AddReputation(user, indexedPosition.Faction, price / 100); _audio.PlayPvs(platform.Comp.BuySound, Transform(platform).Coordinates); diff --git a/Content.Shared/_CP14/Trading/Components/CP14SellingPlatformComponent.cs b/Content.Shared/_CP14/Trading/Components/CP14SellingPlatformComponent.cs index 24d9ff0daa..ba6fde6d59 100644 --- a/Content.Shared/_CP14/Trading/Components/CP14SellingPlatformComponent.cs +++ b/Content.Shared/_CP14/Trading/Components/CP14SellingPlatformComponent.cs @@ -1,3 +1,4 @@ +using Content.Shared._CP14.Trading.Systems; using Robust.Shared.Audio; using Robust.Shared.Prototypes; @@ -6,7 +7,7 @@ namespace Content.Shared._CP14.Trading.Components; /// /// Allows you to sell items by overloading the platform with energy /// -[RegisterComponent] +[RegisterComponent, Access(typeof(CP14SharedTradingPlatformSystem))] public sealed partial class CP14SellingPlatformComponent : Component { [DataField] @@ -17,4 +18,7 @@ public sealed partial class CP14SellingPlatformComponent : Component [DataField] public EntProtoId SellVisual = "CP14CashImpact"; + + [DataField] + public float PlatformMarkupProcent = 1f; } diff --git a/Content.Shared/_CP14/Trading/Components/CP14TradingPlatformComponent.cs b/Content.Shared/_CP14/Trading/Components/CP14TradingPlatformComponent.cs index 1144d7b12e..c85d4261db 100644 --- a/Content.Shared/_CP14/Trading/Components/CP14TradingPlatformComponent.cs +++ b/Content.Shared/_CP14/Trading/Components/CP14TradingPlatformComponent.cs @@ -23,4 +23,8 @@ public sealed partial class CP14TradingPlatformComponent : Component [DataField] public EntProtoId BuyVisual = "CP14CashImpact"; + + + [DataField] + public float PlatformMarkupProcent = 1f; } diff --git a/Content.Shared/_CP14/Workbench/Requirements/SolutionResource.cs b/Content.Shared/_CP14/Workbench/Requirements/SolutionResource.cs index 0cc25f194b..6ed753d80d 100644 --- a/Content.Shared/_CP14/Workbench/Requirements/SolutionResource.cs +++ b/Content.Shared/_CP14/Workbench/Requirements/SolutionResource.cs @@ -60,21 +60,20 @@ public sealed partial class SolutionResource : CP14WorkbenchCraftRequirement if (!solutionSys.TryGetDrawableSolution(ent, out var soln, out var solution)) continue; - var volume = solution.Volume; + if (volume < Amount) + continue; + foreach (var (id, quantity) in solution.Contents) { if (id.Prototype != Reagent) continue; - if (quantity < Amount) - continue; - //Purity check if (quantity / volume < Purity) continue; - solutionSys.RemoveEachReagent(soln.Value, Amount); + solutionSys.Draw(ent, soln.Value, Amount); return; } } diff --git a/Resources/Locale/en-US/_CP14/workbench/workbench.ftl b/Resources/Locale/en-US/_CP14/workbench/workbench.ftl index 65d9c4b3ab..4591aaa2c5 100644 --- a/Resources/Locale/en-US/_CP14/workbench/workbench.ftl +++ b/Resources/Locale/en-US/_CP14/workbench/workbench.ftl @@ -5,4 +5,4 @@ cp14-workbench-recipe-list = Recipe: cp14-workbench-cant-craft = Craft failed! -cp14-workbench-reagent-req = {$count}u {$reagent} with {$purity}% purity \ No newline at end of file +cp14-workbench-reagent-req = {$count}u {$reagent} with {$purity}%+ purity \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_CP14/workbench/workbench.ftl b/Resources/Locale/ru-RU/_CP14/workbench/workbench.ftl index 07221e59ce..7ef74cded2 100644 --- a/Resources/Locale/ru-RU/_CP14/workbench/workbench.ftl +++ b/Resources/Locale/ru-RU/_CP14/workbench/workbench.ftl @@ -5,4 +5,4 @@ cp14-workbench-recipe-list = Рецепт: cp14-workbench-cant-craft = Крафт не удался! -cp14-workbench-reagent-req = {$count}u {$reagent} с {$purity}% чистоты \ No newline at end of file +cp14-workbench-reagent-req = {$count}u {$reagent} с {$purity}%+ чистоты \ No newline at end of file diff --git a/Resources/Maps/_CP14/comoss.yml b/Resources/Maps/_CP14/comoss.yml index e4b524f33f..b4689ba6b2 100644 --- a/Resources/Maps/_CP14/comoss.yml +++ b/Resources/Maps/_CP14/comoss.yml @@ -4,7 +4,7 @@ meta: engineVersion: 262.0.0 forkId: "" forkVersion: "" - time: 06/29/2025 15:19:52 + time: 07/05/2025 20:36:44 entityCount: 14807 maps: - 1 @@ -45802,16 +45802,22 @@ entities: - type: Transform pos: -13.03956,-23.368904 parent: 1 + - type: CollisionWake + enabled: False - uid: 8749 components: - type: Transform pos: -12.9045105,-23.43637 parent: 1 + - type: CollisionWake + enabled: False - uid: 8750 components: - type: Transform pos: -12.915766,-23.20024 parent: 1 + - type: CollisionWake + enabled: False - proto: CP14FoodMeatLambCooked entities: - uid: 8751 @@ -46251,6 +46257,8 @@ entities: - type: Transform pos: 8.706699,5.6203566 parent: 1 + - type: CollisionWake + enabled: False - proto: CP14KeyTavernHall entities: - uid: 8849 @@ -64362,11 +64370,15 @@ entities: - type: Transform pos: 30.588495,4.7120843 parent: 1 + - type: CollisionWake + enabled: False - uid: 11432 components: - type: Transform pos: 30.442192,4.554663 parent: 1 + - type: CollisionWake + enabled: False - uid: 11433 components: - type: Transform @@ -64397,6 +64409,8 @@ entities: - type: Transform pos: 30.250874,4.667107 parent: 1 + - type: CollisionWake + enabled: False - uid: 11439 components: - type: Transform @@ -64409,6 +64423,8 @@ entities: - type: Transform pos: 30.385923,4.7120843 parent: 1 + - type: CollisionWake + enabled: False - proto: CP14Syringe entities: - uid: 11441 @@ -65193,12 +65209,6 @@ entities: parent: 1 - proto: CP14TradingPlatform entities: - - uid: 7103 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -9.5,13.5 - parent: 1 - uid: 11457 components: - type: Transform @@ -65210,14 +65220,15 @@ entities: rot: 1.5707963267948966 rad pos: -5.5,21.5 parent: 1 -- proto: CP14TradingSellingPlatform +- proto: CP14TradingPlatformPublic entities: - - uid: 7105 + - uid: 7103 components: - type: Transform - rot: -1.5707963267948966 rad pos: -11.5,13.5 parent: 1 +- proto: CP14TradingSellingPlatform + entities: - uid: 11512 components: - type: Transform @@ -65229,6 +65240,13 @@ entities: rot: 1.5707963267948966 rad pos: -3.5,21.5 parent: 1 +- proto: CP14TradingSellingPlatformPublic + entities: + - uid: 7105 + components: + - type: Transform + pos: -9.5,13.5 + parent: 1 - proto: CP14VentCritterMarker entities: - uid: 15324 @@ -84025,6 +84043,9 @@ entities: - type: Transform pos: 8.5,5.5 parent: 1 + - type: ItemPlacer + placedEntities: + - 8848 - uid: 15165 components: - type: Transform @@ -84049,6 +84070,13 @@ entities: rot: -1.5707963267948966 rad pos: 30.5,4.5 parent: 1 + - type: ItemPlacer + placedEntities: + - 11431 + - 11432 + - 11438 + - 11439 + - 11440 - proto: CP14WorkbenchAnvil entities: - uid: 15170 @@ -84080,6 +84108,11 @@ entities: - type: Transform pos: -13.5,-23.5 parent: 1 + - type: ItemPlacer + placedEntities: + - 8748 + - 8749 + - 8750 - proto: CP14WorkbenchFurnace entities: - uid: 15176 diff --git a/Resources/Maps/_CP14/venicialis.yml b/Resources/Maps/_CP14/venicialis.yml index a0e0094073..0af1129794 100644 --- a/Resources/Maps/_CP14/venicialis.yml +++ b/Resources/Maps/_CP14/venicialis.yml @@ -4,7 +4,7 @@ meta: engineVersion: 262.0.0 forkId: "" forkVersion: "" - time: 07/02/2025 10:28:02 + time: 07/05/2025 20:37:15 entityCount: 19196 maps: - 2 @@ -59352,7 +59352,7 @@ entities: pos: 14.5,-24.5 parent: 2 - type: Door - secondsUntilStateChange: -13599.846 + secondsUntilStateChange: -13613.509 state: Closing - uid: 1792 components: @@ -78632,16 +78632,22 @@ entities: - type: Transform pos: 4.5506587,-30.291777 parent: 2 + - type: CollisionWake + enabled: False - uid: 2510 components: - type: Transform pos: 4.3631587,-30.236221 parent: 2 + - type: CollisionWake + enabled: False - uid: 2511 components: - type: Transform pos: 4.4395475,-30.361221 parent: 2 + - type: CollisionWake + enabled: False - proto: CP14FoodMeatLamb entities: - uid: 2508 @@ -78668,6 +78674,8 @@ entities: - type: Transform pos: 5.3909364,-30.305666 parent: 2 + - type: CollisionWake + enabled: False - proto: CP14FoodTomatoes entities: - uid: 1486 @@ -103770,6 +103778,8 @@ entities: - type: Transform pos: 0.42527747,-27.375025 parent: 2 + - type: CollisionWake + enabled: False - proto: CP14SafeMerchant1 entities: - uid: 7835 @@ -104976,18 +104986,15 @@ entities: rot: -1.5707963267948966 rad pos: -20.5,-34.5 parent: 2 - - uid: 15205 - components: - - type: Transform - pos: -29.5,-32.5 - parent: 2 -- proto: CP14TradingSellingPlatform +- proto: CP14TradingPlatformPublic entities: - uid: 3220 components: - type: Transform pos: -33.5,-32.5 parent: 2 +- proto: CP14TradingSellingPlatform + entities: - uid: 7817 components: - type: Transform @@ -104998,6 +105005,13 @@ entities: - type: Transform pos: -20.5,-36.5 parent: 2 +- proto: CP14TradingSellingPlatformPublic + entities: + - uid: 5726 + components: + - type: Transform + pos: -29.5,-32.5 + parent: 2 - proto: CP14VentCritterMarker entities: - uid: 2733 @@ -106643,6 +106657,8 @@ entities: - type: Transform pos: -33.429523,-42.402264 parent: 2 + - type: CollisionWake + enabled: False - proto: CP14WallStonebrick entities: - uid: 1621 @@ -113896,12 +113912,20 @@ entities: rot: 3.141592653589793 rad pos: 4.5,-30.5 parent: 2 + - type: ItemPlacer + placedEntities: + - 2509 + - 2510 + - 2511 - uid: 2309 components: - type: Transform rot: 3.141592653589793 rad pos: 5.5,-30.5 parent: 2 + - type: ItemPlacer + placedEntities: + - 2282 - proto: CP14WorkbenchFurnace entities: - uid: 1797 @@ -113924,11 +113948,17 @@ entities: rot: -1.5707963267948966 rad pos: 0.5,-27.5 parent: 2 + - type: ItemPlacer + placedEntities: + - 2982 - uid: 8056 components: - type: Transform pos: -33.5,-42.5 parent: 2 + - type: ItemPlacer + placedEntities: + - 8197 - proto: SpawnPointLatejoin entities: - uid: 1315 diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Specific/Economy/trade_platform.yml b/Resources/Prototypes/_CP14/Entities/Structures/Specific/Economy/trade_platform.yml index b3eedea3c9..49f5fd51fe 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Specific/Economy/trade_platform.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Specific/Economy/trade_platform.yml @@ -49,6 +49,20 @@ # - CP14_RU_Trading # - CP14_EN_Trading +- type: entity + parent: CP14TradingPlatform + id: CP14TradingPlatformPublic + name: public buying dimensional platform + description: Allows you to trade with the outside world, through retail trade transactions. But since this retail outlet is not bound by contracts with specific merchants, the markup here is terrible. + components: + - type: CP14TradingPlatform + platformMarkupProcent: 1.5 + - type: Sprite + layers: + - state: base + - state: old + - state: buy + - type: entity parent: BaseStructure id: CP14TradingSellingPlatform @@ -93,6 +107,20 @@ - LowImpassable hard: false +- type: entity + parent: CP14TradingSellingPlatform + id: CP14TradingSellingPlatformPublic + name: public 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. But since this retail outlet is not bound by contracts with specific merchants, the markup here is terrible. + components: + - type: CP14SellingPlatform + platformMarkupProcent: 0.5 + - type: Sprite + layers: + - state: base + - state: old + - state: sell + - type: entity id: CP14CashImpact categories: [ HideSpawnMenu ] diff --git a/Resources/Prototypes/_CP14/Trading/SellRequests/brad_potions.yml b/Resources/Prototypes/_CP14/Trading/SellRequests/brad_potions.yml new file mode 100644 index 0000000000..bde71c6b45 --- /dev/null +++ b/Resources/Prototypes/_CP14/Trading/SellRequests/brad_potions.yml @@ -0,0 +1,219 @@ +- type: cp14TradingRequest + id: CP14BasicEffectHealBrute + possibleFactions: + - BradPotions + requirements: + - !type:SolutionResource + reagent: CP14BasicEffectHealBrute + amount: 10 + purity: 0.75 + +- type: cp14TradingRequest + id: CP14BasicEffectDamageBrute + possibleFactions: + - BradPotions + requirements: + - !type:SolutionResource + reagent: CP14BasicEffectDamageBrute + amount: 10 + purity: 0.75 + +- type: cp14TradingRequest + id: CP14BasicEffectHealHeat + possibleFactions: + - BradPotions + requirements: + - !type:SolutionResource + reagent: CP14BasicEffectHealHeat + amount: 10 + purity: 0.75 + +- type: cp14TradingRequest + id: CP14BasicEffectDamageHeat + possibleFactions: + - BradPotions + requirements: + - !type:SolutionResource + reagent: CP14BasicEffectDamageHeat + amount: 10 + purity: 0.75 + +- type: cp14TradingRequest + id: CP14BasicEffectHealCold + possibleFactions: + - BradPotions + requirements: + - !type:SolutionResource + reagent: CP14BasicEffectHealCold + amount: 10 + purity: 0.75 + +- type: cp14TradingRequest + id: CP14BasicEffectDamageCold + possibleFactions: + - BradPotions + requirements: + - !type:SolutionResource + reagent: CP14BasicEffectDamageCold + amount: 10 + purity: 0.75 + +- type: cp14TradingRequest + id: CP14BasicEffectHealPoison + possibleFactions: + - BradPotions + requirements: + - !type:SolutionResource + reagent: CP14BasicEffectHealPoison + amount: 10 + purity: 0.75 + +- type: cp14TradingRequest + id: CP14BasicEffectDamagePoison + possibleFactions: + - BradPotions + requirements: + - !type:SolutionResource + reagent: CP14BasicEffectDamagePoison + amount: 10 + purity: 0.75 + +- type: cp14TradingRequest + id: CP14BasicEffectHealAirloss + possibleFactions: + - BradPotions + requirements: + - !type:SolutionResource + reagent: CP14BasicEffectHealAirloss + amount: 10 + purity: 0.75 + +- type: cp14TradingRequest + id: CP14BasicEffectDamageAirloss + possibleFactions: + - BradPotions + requirements: + - !type:SolutionResource + reagent: CP14BasicEffectDamageAirloss + amount: 10 + purity: 0.75 + +- type: cp14TradingRequest + id: CP14BasicEffectHealManaDepletion + possibleFactions: + - BradPotions + requirements: + - !type:SolutionResource + reagent: CP14BasicEffectHealManaDepletion + amount: 10 + purity: 0.75 + +- type: cp14TradingRequest + id: CP14BasicEffectDamageManaDepletion + possibleFactions: + - BradPotions + requirements: + - !type:SolutionResource + reagent: CP14BasicEffectDamageManaDepletion + amount: 10 + purity: 0.75 + +- type: cp14TradingRequest + id: CP14BasicEffectBloodRestore + possibleFactions: + - BradPotions + requirements: + - !type:SolutionResource + reagent: CP14BasicEffectBloodRestore + amount: 10 + purity: 0.75 + +- type: cp14TradingRequest + id: CP14BasicEffectBloodAbsorption + possibleFactions: + - BradPotions + requirements: + - !type:SolutionResource + reagent: CP14BasicEffectBloodAbsorption + amount: 10 + purity: 0.75 + +- type: cp14TradingRequest + id: CP14BasicEffectSatiateHunger + possibleFactions: + - BradPotions + requirements: + - !type:SolutionResource + reagent: CP14BasicEffectSatiateHunger + amount: 10 + purity: 0.75 + +- type: cp14TradingRequest + id: CP14BasicEffectSatiateThirst + possibleFactions: + - BradPotions + requirements: + - !type:SolutionResource + reagent: CP14BasicEffectSatiateThirst + amount: 10 + purity: 0.75 + +- type: cp14TradingRequest + id: CP14BasicEffectHealMana + possibleFactions: + - BradPotions + requirements: + - !type:SolutionResource + reagent: CP14BasicEffectHealMana + amount: 10 + purity: 0.75 + +- type: cp14TradingRequest + id: CP14BasicEffectDamageMana + possibleFactions: + - BradPotions + requirements: + - !type:SolutionResource + reagent: CP14BasicEffectDamageMana + amount: 10 + purity: 0.75 + +- type: cp14TradingRequest + id: CP14BasicEffectHealStam + possibleFactions: + - BradPotions + requirements: + - !type:SolutionResource + reagent: CP14BasicEffectHealStam + amount: 10 + purity: 0.75 + +- type: cp14TradingRequest + id: CP14BasicEffectDamageStam + possibleFactions: + - BradPotions + requirements: + - !type:SolutionResource + reagent: CP14BasicEffectDamageStam + amount: 10 + purity: 0.75 + +- type: cp14TradingRequest + id: CP14BasicEffectSpeedUp + possibleFactions: + - BradPotions + requirements: + - !type:SolutionResource + reagent: CP14BasicEffectSpeedUp + amount: 10 + purity: 0.75 + +- type: cp14TradingRequest + id: CP14BasicEffectSpeedDown + possibleFactions: + - BradPotions + requirements: + - !type:SolutionResource + reagent: CP14BasicEffectSpeedDown + amount: 10 + purity: 0.75 \ No newline at end of file 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 index 9ef0a6a919cf0d93261451239b235135d9be6c5c..b9a1c1cda205027633e0eb79d12048f12be856f5 100644 GIT binary patch delta 501 zcmV-i za+W?MV2PJRmVkv0a9v~Uk^}**RZqAWQE{m5txfPBVSfjI8AWDW{q z(2w8;p>?WAw5o;GlqsIELiV%8m~?w;0O1EA292cKVS6Dz2oGY&V9yq$UIV*@uaagt zmWz2~V|qT7IDd}8IhUhHG+uLl5J~}>sx-@yX1TRbn&qf!adMlYg3;He9J$}#Og9Mt zNe~`XB(Yq~k!Cp$GvVLp1I$bO7<=>z=idvaQZ5b|dduqCt^IAzSFqwC8L roc!VC&wSv_Ki|C5Q4WX0@&EY-nAh1+s`e5b00000NkvXXu0mjfK_Kx> delta 675 zcmV;U0$lx@1jhxCFnp2L)#@cl&3yDKl$7&H`E^lVq1Fp>C=0X4GbDIXwablrqMZ_me;o@ zdCwS=Y`@=a&l;z9r`39M^4^DQ=Q6cjS$Ztyv*=z`H_>%p*niGOtMw*0WbKDDd0xP| z3}xxneq0h1h+(@x)dwjk01*%$_~G#hKW@H9ZO4;ovV9-O3k{5dP;hHa7{pqGx7QbK zPAxEMFDJH`&rsD(1iM;qP7*M>kYGHhbPzy*lsN@_+3{qGx7U}@CKNmO=S^`;p)Jf); z98hz#kINho0KNh5j#+D9t$}k{_&q#6;qq!36$gpCEPr9O0vS)H;U^_e7mD55N>ZID zDA`UMF#zCrh=6#SP(evh06^V@CD*Du6a=p-xgW`jBT?YHyPx6S^YIX%fc7R%lG_uF z>0E|9FRkhH9t zqa2(A-+$l#N=|@-dGB%f^LrFFVF}1x;(Hp;t<;+d^`!|>9NE4seKc7P28iQ}1Il2j zW9VNZcX*ERG58+H!CG({pav>oQ)e$p#^XRKFcppfwV++FUD9AU6o3|35{|@Q$Gbp3 zEAF}mMe6;UF25T-11s~j3yABi4-Y{9$VsU$%p9OWg9d#y{RO;Im~DP7ez5=m002ov JPDHLkV1k%!GQ$7> 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 index 84a5427d83021051aa8ddfcb55caf6e05bc85570..6d81120c176a120d21ff72bcfb8aa693ac42db2f 100644 GIT binary patch delta 394 zcmV;50d@Yq1F-{;F@I}GL_t(oh3%J5YJ)%&#y?BEKzEidg&e|_Lhuq^AP4XQ+2#OV zAoK{)qe=rT8s5Ano*%NiIFBT z+PY*mg)00qwT3;=LC9I;sMq(X;QjUQxal5JfwehgXc;OeMEQY+{n=BY#} z#f^y^8+=T>t|)DBqDYk}mB_pHb5j+}I9QA+y!>G#OT(OyqZ`!x8g5Lzidl`SqoL{{8vY zKj-5o5eNL5X>++UQ2_1A0F@JbTL_t(oh3%I=YQr!T#$QUaX6Tkux-^grWHSUTD87U)kUhRY z)*e6?2)#iA!H{&xAp)69skdIh!|M>_3R{w`KQ^K0H-%X5>Er3WPc}dx5C}Lk@{xp5 zg7yDa+kqg}z7(aGoOfQb^n`Qi86_xIjdLkV=YOMZRBpXopsa`bgi(U) z<)X1?qvu|pCor3iA>VBf0N{K)!Ry;zS^-tn0IogAC_z>AvNXYY90A`0VA5ElEIZ#= zOdyKP(xh{B>v3XE-SM~fgiNGvbDj9EqB@JKi)<6sCep{CC}EVK$&mtF1@=BiN&tclBIcKZrPhKQm=TiFE;dDp%XXNO%8w$HuR0{n2V5O#RB&o3WOB zw?W(Kvxzn8xsUfxljY8_H~kH9)8YbwK;Xag3(B(44iJ3%`hNfb002ovPDHLkV1gA> B%WePw diff --git a/Resources/Textures/_CP14/Structures/Specific/Economy/buy_platform.rsi/meta.json b/Resources/Textures/_CP14/Structures/Specific/Economy/buy_platform.rsi/meta.json index f5cbcccca2..b2de13b0f1 100644 --- a/Resources/Textures/_CP14/Structures/Specific/Economy/buy_platform.rsi/meta.json +++ b/Resources/Textures/_CP14/Structures/Specific/Economy/buy_platform.rsi/meta.json @@ -13,6 +13,9 @@ { "name": "buy" }, + { + "name": "old" + }, { "name": "sell" }, diff --git a/Resources/Textures/_CP14/Structures/Specific/Economy/buy_platform.rsi/old.png b/Resources/Textures/_CP14/Structures/Specific/Economy/buy_platform.rsi/old.png new file mode 100644 index 0000000000000000000000000000000000000000..42782ca8d94454e8d6e1aabe48610d6be884b24f GIT binary patch literal 273 zcmeAS@N?(olHy`uVBq!ia0vp^>LAR)1|)kH2buyY#^NA%Cx&(BWL^R}r#)R9Ln2z= zPTR}ZY{1jfzfRD`tL==-n#z>0khC^CuhnN>ifj$4?`RebExq3+a$8;f8>4^|hvNGT zmG-rtS7!4*%lsp8onO(mK0aS?`cs`%!L6lsYv)&8;8*~U#_R#x{FE*np-lC=|` zu``^xe4}J-<<25g6QSqX*DidXAMrf2%^~;5+RvKDIFfsAy}B_+rJHGi7S9chy#Bnu zEULlLd!F|_5GY(#w(M>H(w$va)8D!$*S~!w5WQQYQ*{5%{QpJS7s5FeTP7s$WL~>J Vn6Xte@Cwjd44$rjF6*2UngGaua6te7 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_CP14/Structures/Specific/Economy/buy_platform.rsi/sell.png b/Resources/Textures/_CP14/Structures/Specific/Economy/buy_platform.rsi/sell.png index 43ba72e75d8a0b0b1b8cdf29c835f5b5b4cb78f3..bc2b009c2edbafe0daf39b2854d3885d62e8c190 100644 GIT binary patch delta 484 zcmV1LMfA2l#@cc!Q{Cxj1;J=)MvH7ErhXOHIq zfNJIrhN@8o8l`-o`e~)UL({&=0hjG7nEekZCl6>zbZu(5?r;W3GL!-^9#}9`&6!b1 z=dwtqc;9?Huz!F`ovy8FsOErVibqS51GRm3=Hh)Kw5PBsacVOd3E&);Bj)EwrcUohkH= z^OnrM4P?l5BHTLl+~ufn5j>|f;bpI|x=w^!r=GjCBwcysdJs|SIuY)r_Xgkq_%aL& z7IjZpK=<15|AzWk(jCqgrrrZyg4Uy+TlVte`(Uq+4~bvQ?bGwhkJ`KcCuhU-F@NYuL_t(oh3%F-OT$nYg^wRYLFnKZq)Q2g%w0qf0*c_^=4Lzl z1KQQ0xYZxv9=CvqLqHUQLg?Zg8rni>qy-BOg=(Ql9MV*8dv9}74LaOsDsPhaoaSbD z0D<5iasBe<|KXM6^@0VX=c{sx$baE3*EY*O0Mt4kP^1;8 za%wXBDQ&att8xm8w1QgagUFj^m9?bh`A}ux>R}KJ*68=$mG+sX_bRtbw7F9s!l?(R z((-&jp+8S8=UO(*yo7`MLjb^~ask(}sS7r>ZLDudGxOKy4p6zJ?mp9iVZrcskjGh$STcsSATG^zAK6Tr>kl)Jq_~qKKJ@d)r&z}~k0f^s1OfpMNlPYg zUZl?@O)Q^FQZi{-^Q4m~m!xD)!y}zDZ?5G9*RLK1aDVEcff5hPmG%tR#+P zhTN6*{Y`CqX6{-x(}ct8QPN42izAsKTlpjQoMOU6R)lmCiFJ8h>}jWrjLn| z%tbAkM>=P|iMS$I+{yXbOqv?b^X$B=9~7K>@q~