Merge branch 'master' of https://github.com/crystallpunk-14/crystall-punk-14
This commit is contained in:
@@ -1,15 +1,16 @@
|
||||
<Control xmlns="https://spacestation14.io">
|
||||
<Button Name="ProductButton" Access="Public">
|
||||
<BoxContainer Orientation="Vertical">
|
||||
<BoxContainer Orientation="Horizontal">
|
||||
<TextureRect Name="View"
|
||||
MinSize="48 48"
|
||||
HorizontalAlignment="Left"
|
||||
VerticalAlignment="Top"
|
||||
Stretch="KeepAspectCentered"/>
|
||||
<RichTextLabel Name="ProductName" VerticalAlignment="Center" Access="Public"/>
|
||||
<BoxContainer Name="PriceHolder" VerticalAlignment="Center" HorizontalExpand="True" HorizontalAlignment="Right"/>
|
||||
<BoxContainer Orientation="Horizontal">
|
||||
<TextureRect Name="View"
|
||||
MinSize="48 48"
|
||||
HorizontalAlignment="Left"
|
||||
VerticalAlignment="Top"
|
||||
Stretch="KeepAspectCentered" />
|
||||
<BoxContainer Orientation="Vertical">
|
||||
<RichTextLabel Name="SpecialLabel" Text="{Loc 'cp14-store-ui-tab-special'}" VerticalAlignment="Center" Access="Public" Visible="False" />
|
||||
<RichTextLabel Name="ProductName" VerticalAlignment="Center" Access="Public" />
|
||||
</BoxContainer>
|
||||
<BoxContainer Name="PriceHolder" VerticalAlignment="Center" HorizontalExpand="True" HorizontalAlignment="Right" />
|
||||
</BoxContainer>
|
||||
</Button>
|
||||
</Control>
|
||||
|
||||
@@ -21,24 +21,15 @@ public sealed partial class CP14StoreProductControl : Control
|
||||
|
||||
_sprite = _entity.System<SpriteSystem>();
|
||||
|
||||
UpdateName(entry.Name);
|
||||
UpdateView(entry.Icon);
|
||||
UpdatePrice(entry.Price);
|
||||
}
|
||||
|
||||
private void UpdatePrice(int price)
|
||||
{
|
||||
PriceHolder.RemoveAllChildren();
|
||||
PriceHolder.AddChild(new CP14PriceControl(price));
|
||||
}
|
||||
PriceHolder.AddChild(new CP14PriceControl(entry.Price));
|
||||
ProductName.Text = $"[bold]{entry.Name}[/bold]";
|
||||
|
||||
private void UpdateName(string name)
|
||||
{
|
||||
ProductName.Text = $"[bold]{name}[/bold]";
|
||||
SpecialLabel.Visible = entry.Special;
|
||||
View.Texture = _sprite.Frame0(entry.Icon);
|
||||
}
|
||||
|
||||
private void UpdateView(SpriteSpecifier spriteSpecifier)
|
||||
{
|
||||
View.Texture = _sprite.Frame0(spriteSpecifier);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,32 +53,50 @@ public sealed partial class CP14CargoSystem
|
||||
var prodBuy = new HashSet<CP14StoreUiProductEntry>();
|
||||
var prodSell = new HashSet<CP14StoreUiProductEntry>();
|
||||
|
||||
foreach (var proto in ent.Comp.Station.Value.Comp.CurrentBuyPositions)
|
||||
//Add special buy positions
|
||||
foreach (var (proto, price) in ent.Comp.Station.Value.Comp.CurrentSpecialBuyPositions)
|
||||
{
|
||||
|
||||
var name = Loc.GetString(proto.Key.Name);
|
||||
var name = Loc.GetString(proto.Name);
|
||||
var desc = new StringBuilder();
|
||||
desc.Append(Loc.GetString(proto.Key.Desc) + "\n");
|
||||
foreach (var service in proto.Key.Services)
|
||||
{
|
||||
desc.Append(service.GetDescription(_proto, EntityManager));
|
||||
}
|
||||
desc.Append(Loc.GetString(proto.Desc) + "\n");
|
||||
desc.Append("\n" + Loc.GetString("cp14-store-buy-hint", ("name", Loc.GetString(proto.Name)), ("code", "[color=yellow][bold]#" + proto.Code + "[/bold][/color]")));
|
||||
|
||||
desc.Append("\n" + Loc.GetString("cp14-store-buy-hint", ("name", Loc.GetString(proto.Key.Name)), ("code", "[color=yellow][bold]#" + proto.Key.Code + "[/bold][/color]")));
|
||||
|
||||
prodBuy.Add(new CP14StoreUiProductEntry(proto.Key.ID, proto.Key.Icon, name, desc.ToString(), proto.Value));
|
||||
prodBuy.Add(new CP14StoreUiProductEntry(proto.ID, proto.Icon, name, desc.ToString(), price, true));
|
||||
}
|
||||
|
||||
//Add static buy positions
|
||||
foreach (var (proto, price) in ent.Comp.Station.Value.Comp.CurrentBuyPositions)
|
||||
{
|
||||
var name = Loc.GetString(proto.Name);
|
||||
var desc = new StringBuilder();
|
||||
desc.Append(Loc.GetString(proto.Desc) + "\n");
|
||||
desc.Append("\n" + Loc.GetString("cp14-store-buy-hint", ("name", Loc.GetString(proto.Name)), ("code", "[color=yellow][bold]#" + proto.Code + "[/bold][/color]")));
|
||||
|
||||
prodBuy.Add(new CP14StoreUiProductEntry(proto.ID, proto.Icon, name, desc.ToString(), price, false));
|
||||
}
|
||||
|
||||
//Add special sell positions
|
||||
foreach (var (proto, price) in ent.Comp.Station.Value.Comp.CurrentSpecialSellPositions)
|
||||
{
|
||||
var name = Loc.GetString(proto.Name);
|
||||
|
||||
var desc = new StringBuilder();
|
||||
desc.Append(Loc.GetString(proto.Desc) + "\n");
|
||||
desc.Append("\n" + Loc.GetString("cp14-store-sell-hint", ("name", Loc.GetString(proto.Name))));
|
||||
|
||||
prodSell.Add(new CP14StoreUiProductEntry(proto.ID, proto.Icon, name, desc.ToString(), price, true));
|
||||
}
|
||||
|
||||
//Add static sell positions
|
||||
foreach (var proto in ent.Comp.Station.Value.Comp.CurrentSellPositions)
|
||||
{
|
||||
var name = Loc.GetString(proto.Key.Name);
|
||||
|
||||
var desc = new StringBuilder();
|
||||
desc.Append(Loc.GetString(proto.Key.Desc) + "\n");
|
||||
desc.Append(proto.Key.Service.GetDescription(_proto, EntityManager) + "\n");
|
||||
desc.Append("\n" + Loc.GetString("cp14-store-sell-hint", ("name", Loc.GetString(proto.Key.Name))));
|
||||
|
||||
prodSell.Add(new CP14StoreUiProductEntry(proto.Key.ID, proto.Key.Icon, name, desc.ToString(), proto.Value));
|
||||
prodSell.Add(new CP14StoreUiProductEntry(proto.Key.ID, proto.Key.Icon, name, desc.ToString(), proto.Value, false));
|
||||
}
|
||||
|
||||
var stationComp = ent.Comp.Station.Value.Comp;
|
||||
|
||||
@@ -137,14 +137,47 @@ public sealed partial class CP14CargoSystem : CP14SharedCargoSystem
|
||||
{
|
||||
station.Comp.CurrentBuyPositions.Clear();
|
||||
station.Comp.CurrentSellPositions.Clear();
|
||||
station.Comp.CurrentSpecialBuyPositions.Clear();
|
||||
station.Comp.CurrentSpecialSellPositions.Clear();
|
||||
|
||||
var availableSpecialSellPositions = new List<CP14StoreSellPositionPrototype>();
|
||||
var availableSpecialBuyPositions = new List<CP14StoreBuyPositionPrototype>();
|
||||
|
||||
//Add static positions + cash special ones
|
||||
foreach (var buyPos in station.Comp.AvailableBuyPosition)
|
||||
{
|
||||
station.Comp.CurrentBuyPositions.Add(buyPos, buyPos.Price.Next(_random)/10*10);
|
||||
if (buyPos.Special)
|
||||
availableSpecialBuyPositions.Add(buyPos);
|
||||
else
|
||||
station.Comp.CurrentBuyPositions.Add(buyPos, buyPos.Price.Next(_random)/10*10);
|
||||
}
|
||||
foreach (var sellPos in station.Comp.AvailableSellPosition)
|
||||
{
|
||||
station.Comp.CurrentSellPositions.Add(sellPos, sellPos.Price.Next(_random)/10*10);
|
||||
if (sellPos.Special)
|
||||
availableSpecialSellPositions.Add(sellPos);
|
||||
else
|
||||
station.Comp.CurrentSellPositions.Add(sellPos, sellPos.Price.Next(_random)/10*10);
|
||||
}
|
||||
|
||||
//Random and select special positions
|
||||
_random.Shuffle(availableSpecialSellPositions);
|
||||
_random.Shuffle(availableSpecialBuyPositions);
|
||||
|
||||
var currentSpecialBuyPositions = station.Comp.SpecialBuyPositionCount.Next(_random);
|
||||
var currentSpecialSellPositions = station.Comp.SpecialSellPositionCount.Next(_random);
|
||||
|
||||
foreach (var buyPos in availableSpecialBuyPositions)
|
||||
{
|
||||
if (station.Comp.CurrentSpecialBuyPositions.Count >= currentSpecialBuyPositions)
|
||||
break;
|
||||
station.Comp.CurrentSpecialBuyPositions.Add(buyPos, buyPos.Price.Next(_random)/10*10);
|
||||
}
|
||||
|
||||
foreach (var sellPos in availableSpecialSellPositions)
|
||||
{
|
||||
if (station.Comp.CurrentSpecialSellPositions.Count >= currentSpecialSellPositions)
|
||||
break;
|
||||
station.Comp.CurrentSpecialSellPositions.Add(sellPos, sellPos.Price.Next(_random)/10*10);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
using Content.Server._CP14.Demiplane;
|
||||
using Content.Server.Chat.Systems;
|
||||
using Content.Server.GameTicking;
|
||||
using Content.Server.RoundEnd;
|
||||
using Content.Shared._CP14.MagicEnergy;
|
||||
using Content.Shared.CCVar;
|
||||
using Robust.Shared.Configuration;
|
||||
using Robust.Shared.Audio;
|
||||
using Robust.Shared.Timing;
|
||||
|
||||
@@ -13,10 +16,12 @@ public sealed partial class CP14RoundEndSystem : EntitySystem
|
||||
[Dependency] private readonly ChatSystem _chatSystem = default!;
|
||||
[Dependency] private readonly GameTicker _gameTicker = default!;
|
||||
[Dependency] private readonly CP14DemiplaneSystem _demiplane = default!;
|
||||
[Dependency] private readonly RoundEndSystem _roundEnd = default!;
|
||||
[Dependency] private readonly IConfigurationManager _configManager = default!;
|
||||
|
||||
private readonly TimeSpan _roundEndDelay = TimeSpan.FromMinutes(1);
|
||||
private TimeSpan _roundEndMoment = TimeSpan.Zero;
|
||||
|
||||
//TODO: вообще нет поддержки нескольких кристаллов на карте.
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
@@ -60,18 +65,20 @@ public sealed partial class CP14RoundEndSystem : EntitySystem
|
||||
|
||||
private void StartRoundEndTimer()
|
||||
{
|
||||
_roundEndMoment = _timing.CurTime + _roundEndDelay;
|
||||
var roundEndDelay = TimeSpan.FromMinutes(_configManager.GetCVar(CCVars.CP14RoundEndMinutes));
|
||||
|
||||
var time = _roundEndDelay.Minutes;
|
||||
_roundEndMoment = _timing.CurTime + roundEndDelay;
|
||||
|
||||
var time = roundEndDelay.Minutes;
|
||||
string unitsLocString;
|
||||
if (_roundEndDelay.TotalSeconds < 60)
|
||||
if (roundEndDelay.TotalSeconds < 60)
|
||||
{
|
||||
time = _roundEndDelay.Seconds;
|
||||
time = roundEndDelay.Seconds;
|
||||
unitsLocString = "eta-units-seconds";
|
||||
}
|
||||
else
|
||||
{
|
||||
time = _roundEndDelay.Minutes;
|
||||
time = roundEndDelay.Minutes;
|
||||
unitsLocString = "eta-units-minutes";
|
||||
}
|
||||
|
||||
@@ -99,7 +106,7 @@ public sealed partial class CP14RoundEndSystem : EntitySystem
|
||||
_chatSystem.DispatchGlobalAnnouncement(Loc.GetString("cp14-round-end"),
|
||||
announcementSound: new SoundPathSpecifier("/Audio/_CP14/Ambience/event_boom.ogg"));
|
||||
_roundEndMoment = TimeSpan.Zero;
|
||||
_gameTicker.EndRound();
|
||||
_roundEnd.EndRound();
|
||||
_demiplane.DeleteAllDemiplanes(safe: false);
|
||||
}
|
||||
}
|
||||
|
||||
9
Content.Shared/_CP14/CCvar/CCvars.CP14Demiplanes.cs
Normal file
9
Content.Shared/_CP14/CCvar/CCvars.CP14Demiplanes.cs
Normal file
@@ -0,0 +1,9 @@
|
||||
using Robust.Shared.Configuration;
|
||||
|
||||
namespace Content.Shared.CCVar;
|
||||
|
||||
public sealed partial class CCVars
|
||||
{
|
||||
public static readonly CVarDef<int> CP14RoundEndMinutes =
|
||||
CVarDef.Create("cp14_demiplane.round_end_minutes", 15, CVar.SERVERONLY);
|
||||
}
|
||||
@@ -50,12 +50,18 @@ public sealed partial class CP14StationTravelingStoreShipTargetComponent : Compo
|
||||
[DataField]
|
||||
public Dictionary<CP14StoreBuyPositionPrototype, int> CurrentBuyPositions = new(); //Proto, price
|
||||
|
||||
[DataField]
|
||||
public Dictionary<CP14StoreBuyPositionPrototype, int> CurrentSpecialBuyPositions = new(); //Proto, price
|
||||
|
||||
[DataField]
|
||||
public MinMax SpecialBuyPositionCount = new(1, 2);
|
||||
|
||||
[DataField]
|
||||
public Dictionary<CP14StoreSellPositionPrototype, int> CurrentSellPositions = new(); //Proto, price
|
||||
|
||||
[DataField]
|
||||
public Dictionary<CP14StoreSellPositionPrototype, int> CurrentSpecialSellPositions = new(); //Proto, price
|
||||
|
||||
[DataField]
|
||||
public MinMax SpecialSellPositionCount = new(1, 2);
|
||||
|
||||
|
||||
@@ -37,14 +37,16 @@ public readonly struct CP14StoreUiProductEntry : IEquatable<CP14StoreUiProductEn
|
||||
public readonly string Name;
|
||||
public readonly string Desc;
|
||||
public readonly int Price;
|
||||
public readonly bool Special;
|
||||
|
||||
public CP14StoreUiProductEntry(string protoId, SpriteSpecifier icon, string name, string desc, int price)
|
||||
public CP14StoreUiProductEntry(string protoId, SpriteSpecifier icon, string name, string desc, int price, bool special)
|
||||
{
|
||||
ProtoId = protoId;
|
||||
Icon = icon;
|
||||
Name = name;
|
||||
Desc = desc;
|
||||
Price = price;
|
||||
Special = special;
|
||||
}
|
||||
|
||||
public bool Equals(CP14StoreUiProductEntry other)
|
||||
|
||||
@@ -18,9 +18,4 @@ public sealed partial class CP14BuyItemsService : CP14StoreBuyService
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override string? GetDescription(IPrototypeManager prototype, IEntityManager entSys)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,28 +49,4 @@ public sealed partial class CP14UnlockPositionsService : CP14StoreBuyService
|
||||
station.Comp.AvailableBuyPosition.Remove(indexedBuy);
|
||||
}
|
||||
}
|
||||
|
||||
public override string? GetDescription(IPrototypeManager prototype, IEntityManager entSys)
|
||||
{
|
||||
var sb = new StringBuilder();
|
||||
if (AddBuyPositions.Count > 0)
|
||||
sb.Append(Loc.GetString("cp14-store-service-unlock-buy") + "\n");
|
||||
foreach (var buy in AddBuyPositions)
|
||||
{
|
||||
if (!prototype.TryIndex(buy, out var indexedBuy))
|
||||
continue;
|
||||
|
||||
sb.Append(Loc.GetString(indexedBuy.Name) + "\n");
|
||||
}
|
||||
if (AddSellPositions.Count > 0)
|
||||
sb.Append(Loc.GetString("cp14-store-service-unlock-sell") + "\n");
|
||||
foreach (var sell in AddSellPositions)
|
||||
{
|
||||
if (!prototype.TryIndex(sell, out var indexedSell))
|
||||
continue;
|
||||
|
||||
sb.Append(Loc.GetString("cp14-store-service-unlock-sell") + " " + Loc.GetString(indexedSell.Name) + "\n");
|
||||
}
|
||||
return sb.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,12 +14,6 @@ public sealed partial class CP14StoreBuyPositionPrototype : IPrototype
|
||||
[IdDataField, ViewVariables]
|
||||
public string ID { get; private set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// if true, this item becomes available for purchase only after unlocking by other purchases
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public bool Unlockable = false;
|
||||
|
||||
[DataField(required: true)]
|
||||
public MinMax Price = new();
|
||||
|
||||
@@ -43,6 +37,12 @@ public sealed partial class CP14StoreBuyPositionPrototype : IPrototype
|
||||
|
||||
[DataField]
|
||||
public bool RoundstartAvailable = true;
|
||||
|
||||
/// <summary>
|
||||
/// If true, this item will randomly appear under the ‘Special Offer’ heading. With a chance to show up every time the ship arrives.
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public bool Special = false;
|
||||
}
|
||||
|
||||
[ImplicitDataDefinitionForInheritors]
|
||||
@@ -50,6 +50,4 @@ public sealed partial class CP14StoreBuyPositionPrototype : IPrototype
|
||||
public abstract partial class CP14StoreBuyService
|
||||
{
|
||||
public abstract void Buy(EntityManager entManager, IPrototypeManager prototype, Entity<CP14StationTravelingStoreShipTargetComponent> station);
|
||||
|
||||
public abstract string? GetDescription(IPrototypeManager prototype, IEntityManager entSys);
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ using JetBrains.Annotations;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Utility;
|
||||
|
||||
namespace Content.Shared._CP14.Cargo;
|
||||
namespace Content.Shared._CP14.Cargo.Prototype;
|
||||
|
||||
/// <summary>
|
||||
/// Stores the price and product/service pair that players can buy.
|
||||
@@ -14,12 +14,6 @@ public sealed partial class CP14StoreSellPositionPrototype : IPrototype
|
||||
[IdDataField, ViewVariables]
|
||||
public string ID { get; private set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// if true, this item becomes available for purchase only after unlocking by other purchases
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public bool Unlockable = false;
|
||||
|
||||
[DataField(required: true)]
|
||||
public MinMax Price = new();
|
||||
|
||||
@@ -37,6 +31,12 @@ public sealed partial class CP14StoreSellPositionPrototype : IPrototype
|
||||
|
||||
[DataField]
|
||||
public bool RoundstartAvailable = true;
|
||||
|
||||
/// <summary>
|
||||
/// If true, this item will randomly appear under the ‘Special Offer’ heading. With a chance to show up every time the ship arrives.
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public bool Special = false;
|
||||
}
|
||||
|
||||
[ImplicitDataDefinitionForInheritors]
|
||||
@@ -44,6 +44,4 @@ public sealed partial class CP14StoreSellPositionPrototype : IPrototype
|
||||
public abstract partial class CP14StoreSellService
|
||||
{
|
||||
public abstract bool TrySell(EntityManager entManager, HashSet<EntityUid> entities);
|
||||
|
||||
public abstract string? GetDescription(IPrototypeManager prototype, IEntityManager entSys);
|
||||
}
|
||||
|
||||
@@ -49,9 +49,4 @@ public sealed partial class CP14SellStackService : CP14StoreSellService
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public override string? GetDescription(IPrototypeManager prototype, IEntityManager entSys)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,9 +44,4 @@ public sealed partial class CP14SellWhitelistService : CP14StoreSellService
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public override string? GetDescription(IPrototypeManager prototype, IEntityManager entSys)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,12 +9,6 @@ cp14-store-sell-ironbar-desc = Iron is an indispensable material in the manufact
|
||||
cp14-store-sell-copperbar-name = 10 copper bars
|
||||
cp14-store-sell-copperbar-desc = Although copper is used mainly as a coin material, it is also often enjoyed by blacksmiths in various alloys.
|
||||
|
||||
cp14-store-sell-wheat-name = 10 sheaves of wheat
|
||||
cp14-store-sell-wheat-desc = If there's one thing that's permanent in this world, it's empire and wheat! Please don't use wheat as currency....
|
||||
|
||||
cp14-store-sell-dye-name = 10 dyes
|
||||
cp14-store-sell-dye-desc = Textile workers will gladly buy dyes from you to satisfy the whims of the rich. And the sailors are tired of cleaning the ship of broken vials.
|
||||
|
||||
cp14-store-sell-wood-name = 30 wooden planks
|
||||
cp14-store-sell-wood-desc = Do you really think anyone needs planks from a faraway island? Well, you're right, we hope your settlement has something to keep you warm in the winter.
|
||||
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
cp14-store-sell-special-wheat-name = 10 sheaves of wheat
|
||||
cp14-store-sell-special-wheat-desc = Urgent wheat order! Our lizards have gone berserk and devoured the entire supply! Any supplies of wheat would be appreciated!
|
||||
|
||||
cp14-store-sell-special-dye-name = 10 dyes
|
||||
cp14-store-sell-special-dye-desc = An aristocrat from the capital has suddenly shown an interest in painting, and requires dyes for his experiments. The Empire is buying up all the dyes you can provide her with.
|
||||
|
||||
cp14-store-sell-special-meat-name = 10 pieces of meat
|
||||
cp14-store-sell-special-meat-desc = Any kind of meat will do. Lambs, goats, cows, even giant worms! In fact, send anything you want, Isil Island has no food for carnivores at the moment.
|
||||
|
||||
cp14-store-sell-special-torch-name = 20 torches
|
||||
cp14-store-sell-special-torch-desc = The settlement of Grimstroke is requesting a large shipment of torches from the Empire! We're making a big march on the Great Tomb of Lazaric! And we have nothing to light it with.
|
||||
|
||||
cp14-store-sell-special-flora-name = 15 flora material
|
||||
cp14-store-sell-special-flora-desc = Battle HQ 14 requesting support! Orders have been received to 'Green the area surrounding the HQ'. Unfortunately, the HQ is located in the desert. Requesting grass to spread all over the area.
|
||||
|
||||
cp14-store-sell-special-ash-name = 10 ashes
|
||||
cp14-store-sell-special-ash-desc = The Mermaid Council is requesting a shipment of ash to their oceanic domain for the reason, quote ‘Where do you think we should get ash from underwater?’
|
||||
|
||||
cp14-store-sell-special-lucen-name = 10 lucen planks
|
||||
cp14-store-sell-special-lucen-desc = A shipment of magical wood is needed to build an enchanted country house for an aristocrat. The whims of the rich are mysterious!
|
||||
|
||||
cp14-store-sell-special-spell-scroll-name = 5 spell scrolls
|
||||
cp14-store-sell-special-spell-scroll-desc = We don't really care what spells are in the scrolls, they are only for reporting the magical prosperity of the settlement to the local Commandant.
|
||||
@@ -0,0 +1,23 @@
|
||||
cp14-store-sell-special-wheat-name = 10 снопов пшеницы
|
||||
cp14-store-sell-special-wheat-desc = Срочный заказ пшеницы! Наши ящеры взбесились и сожрали вообще все запасы! Мы будем благодарны любым запасам пшена!
|
||||
|
||||
cp14-store-sell-special-dye-name = 10 красителей
|
||||
cp14-store-sell-special-dye-desc = Аристократ из столицы внезапно проявил интерес с рисованию, и требует красителей для своих экспериментов. Империя скупаем все красители, которые вы сможете ей предоставить.
|
||||
|
||||
cp14-store-sell-special-meat-name = 10 кусков мяса
|
||||
cp14-store-sell-special-meat-desc = Нам подойдет любое мясо. Бараны, козы, коровы, да хоть гигансткие черви! В общем, присылайте любое, острову Изиль сейчас нечем кормить хищнй скот.
|
||||
|
||||
cp14-store-sell-special-torch-name = 20 факелов
|
||||
cp14-store-sell-special-torch-desc = Поселение Гримстроук запрашивает большую партию факелов от Империи! Мы устраиваем большой поход на Великую Гробницу Лазарика! И нам нечем освещать ее.
|
||||
|
||||
cp14-store-sell-special-flora-name = 15 растительного волокна
|
||||
cp14-store-sell-special-flora-desc = Боевой штаб 14 запрашивает поддержку! Поступил приказ 'Озеленить прилегающую к штабу территорию'. К сожалению, штаб расположен в пустыне. Запрашиваем траву, чтобы раскидать ее по всей территории.
|
||||
|
||||
cp14-store-sell-special-ash-name = 10 пепла
|
||||
cp14-store-sell-special-ash-desc = Совет русалок запрашивает партию пепла в свои океанические владения по причине, цитата 'Откуда мы должны под водой получать пепел по вашему?'
|
||||
|
||||
cp14-store-sell-special-lucen-name = 10 люценовых досок
|
||||
cp14-store-sell-special-lucen-desc = Необходима партия магической древесины для строительства зачарованной загородной дачи одного из аристократов. Причуды богатых неисповедимы!
|
||||
|
||||
cp14-store-sell-special-spell-scroll-name = 5 свитков заклинаний
|
||||
cp14-store-sell-special-spell-scroll-desc = Нам на самом деле не важно какие именно заклинания находятся в свитках, они нам только для отчетности магического процветания поселения перед местным Комендантом.
|
||||
@@ -9,12 +9,6 @@ cp14-store-sell-ironbar-desc = Железо - незаменимый матер
|
||||
cp14-store-sell-copperbar-name = 10 медных слитков
|
||||
cp14-store-sell-copperbar-desc = Хоть медь и используется в основном как материал для монет но и в разных сплавах он часто нравится кузнецам.
|
||||
|
||||
cp14-store-sell-wheat-name = 10 снопов пшеницы
|
||||
cp14-store-sell-wheat-desc = Если и есть что то постоянное в этом мире так это империя и пшеница! Пожалуйста не используйте пшеницу как валюту...
|
||||
|
||||
cp14-store-sell-dye-name = 10 красителей
|
||||
cp14-store-sell-dye-desc = Текстильщики с радостью купят у вас красители для ублажения прихотей богатеньких. А ещё моряки устали отмывать корабль от разбитых склянок.
|
||||
|
||||
cp14-store-sell-wood-name = 30 деревянных досок
|
||||
cp14-store-sell-wood-desc = Вы правда думаете что хоть кому то нужны доски с далекого острова? Что ж вы правы, надеемся у вашего поселения есть чем греться зимой.
|
||||
|
||||
|
||||
@@ -6,4 +6,4 @@ cp14-store-ui-next-travel-in = До прибытия:
|
||||
|
||||
cp14-store-ui-tab-buy = Покупка
|
||||
cp14-store-ui-tab-sell = Продажа
|
||||
cp14-store-ui-tab-special = [bold][color=red]Временное предложение![/color][/bold]
|
||||
cp14-store-ui-tab-special = [bold][color=#eba346]Временное предложение![/color][/bold]
|
||||
|
||||
@@ -40,38 +40,6 @@
|
||||
stackId: CP14GoldBar
|
||||
count: 10
|
||||
|
||||
- type: storePositionSell
|
||||
id: Wheat
|
||||
name: cp14-store-sell-wheat-name
|
||||
desc: cp14-store-sell-wheat-desc
|
||||
icon:
|
||||
sprite: _CP14/Objects/Flora/Farm/wheat.rsi
|
||||
state: base1
|
||||
price:
|
||||
min: 10
|
||||
max: 50
|
||||
service: !type:CP14SellWhitelistService
|
||||
whitelist:
|
||||
tags:
|
||||
- CP14Wheat
|
||||
count: 10
|
||||
|
||||
- type: storePositionSell
|
||||
id: Dye
|
||||
name: cp14-store-sell-dye-name
|
||||
desc: cp14-store-sell-dye-desc
|
||||
icon:
|
||||
sprite: _CP14/Objects/Materials/dye.rsi
|
||||
state: preview
|
||||
price:
|
||||
min: 50
|
||||
max: 100
|
||||
service: !type:CP14SellWhitelistService
|
||||
whitelist:
|
||||
tags:
|
||||
- CP14Dye
|
||||
count: 10
|
||||
|
||||
- type: storePositionSell
|
||||
id: Wood
|
||||
name: cp14-store-sell-wood-name
|
||||
|
||||
129
Resources/Prototypes/_CP14/Catalog/Cargo/Store/sell_special.yml
Normal file
129
Resources/Prototypes/_CP14/Catalog/Cargo/Store/sell_special.yml
Normal file
@@ -0,0 +1,129 @@
|
||||
- type: storePositionSell
|
||||
id: BountyWheat
|
||||
special: true
|
||||
name: cp14-store-sell-special-wheat-name
|
||||
desc: cp14-store-sell-special-wheat-desc
|
||||
icon:
|
||||
sprite: _CP14/Objects/Flora/Farm/wheat.rsi
|
||||
state: base1
|
||||
price:
|
||||
min: 100
|
||||
max: 200
|
||||
service: !type:CP14SellWhitelistService
|
||||
whitelist:
|
||||
tags:
|
||||
- CP14Wheat
|
||||
count: 10
|
||||
|
||||
- type: storePositionSell
|
||||
id: BountyDye
|
||||
special: true
|
||||
name: cp14-store-sell-special-dye-name
|
||||
desc: cp14-store-sell-special-dye-desc
|
||||
icon:
|
||||
sprite: _CP14/Objects/Materials/dye.rsi
|
||||
state: preview
|
||||
price:
|
||||
min: 100
|
||||
max: 300
|
||||
service: !type:CP14SellWhitelistService
|
||||
whitelist:
|
||||
tags:
|
||||
- CP14Dye
|
||||
count: 10
|
||||
|
||||
- type: storePositionSell
|
||||
id: BountyMeat
|
||||
special: true
|
||||
name: cp14-store-sell-special-meat-name
|
||||
desc: cp14-store-sell-special-meat-desc
|
||||
icon:
|
||||
sprite: _CP14/Objects/Consumable/Food/meat.rsi
|
||||
state: sheepmeat
|
||||
price:
|
||||
min: 100
|
||||
max: 300
|
||||
service: !type:CP14SellWhitelistService
|
||||
whitelist:
|
||||
tags:
|
||||
- CP14Meat
|
||||
count: 10
|
||||
|
||||
- type: storePositionSell
|
||||
id: BountyTorch
|
||||
special: true
|
||||
name: cp14-store-sell-special-torch-name
|
||||
desc: cp14-store-sell-special-torch-desc
|
||||
icon:
|
||||
sprite: _CP14/Objects/Tools/torch.rsi
|
||||
state: torch-unlit
|
||||
price:
|
||||
min: 100
|
||||
max: 300
|
||||
service: !type:CP14SellWhitelistService
|
||||
whitelist:
|
||||
tags:
|
||||
- CP14Torch
|
||||
count: 20
|
||||
|
||||
- type: storePositionSell
|
||||
id: BountyFloraMaterial
|
||||
special: true
|
||||
name: cp14-store-sell-special-flora-name
|
||||
desc: cp14-store-sell-special-flora-desc
|
||||
icon:
|
||||
sprite: _CP14/Objects/Materials/flora.rsi
|
||||
state: grass_material1
|
||||
price:
|
||||
min: 100
|
||||
max: 300
|
||||
service: !type:CP14SellStackService
|
||||
stackId: CP14FloraMaterial
|
||||
count: 15
|
||||
|
||||
- type: storePositionSell
|
||||
id: BountySpellScroll
|
||||
special: true
|
||||
name: cp14-store-sell-special-spell-scroll-name
|
||||
desc: cp14-store-sell-special-spell-scroll-desc
|
||||
icon:
|
||||
sprite: _CP14/Objects/Bureaucracy/paper.rsi
|
||||
state: magic
|
||||
price:
|
||||
min: 100
|
||||
max: 300
|
||||
service: !type:CP14SellWhitelistService
|
||||
whitelist:
|
||||
tags:
|
||||
- CP14SpellScroll
|
||||
count: 5
|
||||
|
||||
- type: storePositionSell
|
||||
id: BountyAsh
|
||||
special: true
|
||||
name: cp14-store-sell-special-ash-name
|
||||
desc: cp14-store-sell-special-ash-desc
|
||||
icon:
|
||||
sprite: _CP14/Objects/Materials/ash.rsi
|
||||
state: ash_1
|
||||
price:
|
||||
min: 100
|
||||
max: 250
|
||||
service: !type:CP14SellStackService
|
||||
stackId: CP14Ash
|
||||
count: 10
|
||||
|
||||
- type: storePositionSell
|
||||
id: BountyLucenPlanks
|
||||
special: true
|
||||
name: cp14-store-sell-special-lucen-name
|
||||
desc: cp14-store-sell-special-lucen-desc
|
||||
icon:
|
||||
sprite: _CP14/Objects/Materials/lucens_wood.rsi
|
||||
state: planks_2
|
||||
price:
|
||||
min: 300
|
||||
max: 650
|
||||
service: !type:CP14SellStackService
|
||||
stackId: CP14LucensWoodenPlanks
|
||||
count: 10
|
||||
@@ -158,4 +158,4 @@
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- id: CP14FoodCheeseWheel
|
||||
amount: 5
|
||||
amount: 5
|
||||
|
||||
@@ -52,6 +52,7 @@
|
||||
- type: Tag
|
||||
tags:
|
||||
- Document
|
||||
- CP14SpellScroll
|
||||
- type: CP14SpellStorageAccessHolding
|
||||
- type: CP14SpellStorageUseDamage
|
||||
damagePerMana:
|
||||
|
||||
@@ -12,6 +12,11 @@
|
||||
- pants
|
||||
- type: Sprite
|
||||
state: icon
|
||||
- type: Butcherable
|
||||
butcheringType: Knife
|
||||
spawned:
|
||||
- id: CP14Cloth1
|
||||
amount: 1
|
||||
|
||||
- type: entity
|
||||
parent: CP14ClothingPantsBase
|
||||
|
||||
@@ -12,3 +12,8 @@
|
||||
- shirt
|
||||
- type: Sprite
|
||||
state: icon
|
||||
- type: Butcherable
|
||||
butcheringType: Knife
|
||||
spawned:
|
||||
- id: CP14Cloth1
|
||||
amount: 2
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
- type: InternalTemperature
|
||||
thickness: 0.02
|
||||
area: 0.02 # arbitrary number that sounds right for a slab of meat
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Meat
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodMeatSliceBase
|
||||
@@ -48,6 +51,9 @@
|
||||
- type: InternalTemperature
|
||||
thickness: 0.006
|
||||
area: 0.006 # 1\3 of meat value
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14MeatSlice
|
||||
|
||||
# Lamb Meat
|
||||
|
||||
|
||||
@@ -72,4 +72,4 @@
|
||||
- state: bag
|
||||
- state: tomato
|
||||
- type: CP14Seed
|
||||
plantProto: CP14PlantTomatoes
|
||||
plantProto: CP14PlantTomatoes
|
||||
|
||||
@@ -87,6 +87,9 @@
|
||||
params:
|
||||
variation: 0.05
|
||||
volume: 10
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Torch
|
||||
|
||||
- type: entity
|
||||
parent: CP14Torch
|
||||
|
||||
@@ -65,5 +65,5 @@
|
||||
id: CP14GatherCucumber
|
||||
entries:
|
||||
- id: CP14FoodCucumber
|
||||
amount: 2
|
||||
maxAmount: 3
|
||||
amount: 3
|
||||
maxAmount: 5
|
||||
|
||||
@@ -65,5 +65,5 @@
|
||||
id: CP14GatherPotato
|
||||
entries:
|
||||
- id: CP14FoodPotato
|
||||
amount: 2
|
||||
maxAmount: 4
|
||||
amount: 3
|
||||
maxAmount: 5
|
||||
|
||||
@@ -65,5 +65,5 @@
|
||||
id: CP14GatherPumpkin
|
||||
entries:
|
||||
- id: CP14FoodPumpkin
|
||||
amount: 1
|
||||
maxAmount: 2
|
||||
amount: 2
|
||||
maxAmount: 3
|
||||
|
||||
@@ -65,5 +65,5 @@
|
||||
id: CP14GatherTomatoes
|
||||
entries:
|
||||
- id: CP14FoodTomatoes
|
||||
amount: 1
|
||||
maxAmount: 3
|
||||
amount: 3
|
||||
maxAmount: 5
|
||||
|
||||
@@ -69,5 +69,5 @@
|
||||
id: CP14GatherWheat
|
||||
entries:
|
||||
- id: CP14Wheat
|
||||
amount: 2
|
||||
maxAmount: 4
|
||||
amount: 3
|
||||
maxAmount: 5
|
||||
|
||||
@@ -12,21 +12,21 @@
|
||||
id: CP14BasicCalmEventsTable
|
||||
table: !type:AllSelector
|
||||
children:
|
||||
- id: CP14ClosetSkeleton
|
||||
#- id: CP14ClosetSkeleton
|
||||
- id: CP14ZombiesSpawn
|
||||
- id: CP14HydrasSpawn
|
||||
- id: CP14MosquitoSpawn
|
||||
|
||||
- type: entity
|
||||
parent: CP14BaseGameRule
|
||||
id: CP14ClosetSkeleton
|
||||
components:
|
||||
- type: StationEvent
|
||||
weight: 5
|
||||
duration: 1
|
||||
minimumPlayers: 10
|
||||
- type: RandomEntityStorageSpawnRule
|
||||
prototype: CP14MobUndeadSkeletonCloset
|
||||
#- type: entity
|
||||
# parent: CP14BaseGameRule
|
||||
# id: CP14ClosetSkeleton
|
||||
# components:
|
||||
# - type: StationEvent
|
||||
# weight: 5
|
||||
# duration: 1
|
||||
# minimumPlayers: 10
|
||||
# - type: RandomEntityStorageSpawnRule
|
||||
# prototype: CP14MobUndeadSkeletonCloset
|
||||
|
||||
- type: entity
|
||||
parent: CP14BaseStationEventShortDelay
|
||||
|
||||
@@ -20,4 +20,28 @@
|
||||
entity: CP14RoyalPumpkin
|
||||
count: 10
|
||||
minGroupSize: 1
|
||||
maxGroupSize: 1
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: LucenTree
|
||||
tiers:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
generationWeight: 0.1
|
||||
generationProb: 0.1
|
||||
categories:
|
||||
Fun: 1
|
||||
requiredTags:
|
||||
- CP14DemiplaneHerbals
|
||||
- CP14DemiplaneOpenSky
|
||||
layers:
|
||||
- !type:OreDunGen
|
||||
tileMask:
|
||||
- CP14FloorGrass
|
||||
- CP14FloorGrassLight
|
||||
- CP14FloorGrassTall
|
||||
entity: CP14BaseLucensTreeLarge
|
||||
count: 10
|
||||
minGroupSize: 1
|
||||
maxGroupSize: 1
|
||||
@@ -65,4 +65,12 @@
|
||||
craftTime: 1
|
||||
entities:
|
||||
CP14FoodTomatoesSlice: 1
|
||||
result: CP14SeedTomato
|
||||
result: CP14SeedTomato
|
||||
|
||||
- type: CP14Recipe
|
||||
id: CP14SeedCabbage
|
||||
tag: CP14RecipeCooking
|
||||
craftTime: 1
|
||||
entities:
|
||||
CP14FoodCabbageSlice: 1
|
||||
result: CP14SeedCabbage
|
||||
|
||||
@@ -66,3 +66,15 @@
|
||||
|
||||
- type: Tag
|
||||
id: CP14Dye
|
||||
|
||||
- type: Tag
|
||||
id: CP14Meat
|
||||
|
||||
- type: Tag
|
||||
id: CP14MeatSlice
|
||||
|
||||
- type: Tag
|
||||
id: CP14Torch
|
||||
|
||||
- type: Tag
|
||||
id: CP14SpellScroll
|
||||
|
||||
Reference in New Issue
Block a user