[Tweak] Смешное с экономикой. (#451)

* tweak: цены продажи некоторых предметов понижены

* tweak: сервера РнД теперь не работают между гридами

* tweak: подняты цены в раздатчиках в среднем в два раза. А может больше

* tweak: тебя забыли

* add: добавим буквы
This commit is contained in:
Remuchi
2024-07-17 17:57:09 +07:00
committed by GitHub
parent a7d741c9ec
commit eeed240df0
42 changed files with 228 additions and 167 deletions

View File

@@ -1,12 +1,10 @@
using Content.Shared.Research.Components;
using Robust.Client.GameObjects;
namespace Content.Client.Research.UI
{
public sealed class ResearchClientBoundUserInterface : BoundUserInterface
{
[ViewVariables]
private ResearchClientServerSelectionMenu? _menu;
[ViewVariables] private ResearchClientServerSelectionMenu? _menu;
public ResearchClientBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey)
{
@@ -36,7 +34,7 @@ namespace Content.Client.Research.UI
{
base.UpdateState(state);
if (state is not ResearchClientBoundInterfaceState rState) return;
_menu?.Populate(rState.ServerCount, rState.ServerNames, rState.ServerIds, rState.SelectedServerId);
_menu?.Populate(rState.ServerNames, rState.ServerIds, rState.SelectedServerId);
}
protected override void Dispose(bool disposing)

View File

@@ -8,9 +8,7 @@ namespace Content.Client.Research.UI
[GenerateTypedNameReferences]
public sealed partial class ResearchClientServerSelectionMenu : DefaultWindow
{
private int _serverCount;
private string[] _serverNames = Array.Empty<string>();
private int[] _serverIds = Array.Empty<int>();
private List<int> _serverIds = [];
private int _selectedServerId = -1;
private ResearchClientBoundUserInterface Owner { get; }
@@ -26,20 +24,18 @@ namespace Content.Client.Research.UI
Servers.OnItemDeselected += OnItemDeselected;
}
public void OnItemSelected(ItemList.ItemListSelectedEventArgs itemListSelectedEventArgs)
private void OnItemSelected(ItemList.ItemListSelectedEventArgs itemListSelectedEventArgs)
{
Owner.SelectServer(_serverIds[itemListSelectedEventArgs.ItemIndex]);
}
public void OnItemDeselected(ItemList.ItemListDeselectedEventArgs itemListDeselectedEventArgs)
private void OnItemDeselected(ItemList.ItemListDeselectedEventArgs itemListDeselectedEventArgs)
{
Owner.DeselectServer();
}
public void Populate(int serverCount, string[] serverNames, int[] serverIds, int selectedServerId)
public void Populate(List<string> serverNames, List<int> serverIds, int selectedServerId)
{
_serverCount = serverCount;
_serverNames = serverNames;
_serverIds = serverIds;
_selectedServerId = selectedServerId;
@@ -48,10 +44,12 @@ namespace Content.Client.Research.UI
Servers.OnItemDeselected -= OnItemDeselected;
Servers.Clear();
for (var i = 0; i < _serverCount; i++)
for (var i = 0; i < serverIds.Count; i++)
{
var id = _serverIds[i];
Servers.AddItem(Loc.GetString("research-client-server-selection-menu-server-entry-text", ("id", id), ("serverName", _serverNames[i])));
var id = serverIds[i];
var name = serverNames[i];
Servers.AddItem(Loc.GetString("research-client-server-selection-menu-server-entry-text", ("id", id),
("serverName", name)));
if (id == _selectedServerId)
{
Servers[i].Selected = true;

View File

@@ -38,6 +38,7 @@ public sealed partial class VendingMenu : DefaultWindow
return;
OnWithdraw?.Invoke(new VendingMachineWithdrawMessage());
};
VendingContents.RemoveAllChildren();
if (inventory.Count == 0)
{
@@ -45,6 +46,7 @@ public sealed partial class VendingMenu : DefaultWindow
SetSizeAfterUpdate(OutOfStockLabel.Text?.Length ?? 0);
return;
}
OutOfStockLabel.Visible = false;
var longestEntry = string.Empty;
@@ -65,14 +67,11 @@ public sealed partial class VendingMenu : DefaultWindow
if (itemName.Length > longestEntry.Length)
longestEntry = itemName;
var price = (int) (entry.Price * priceMultiplier);
var vendingItem = new VendingItem($"{itemName} [{entry.Amount}]", $"{price} ¢", icon);
var price = (int)(entry.Price * priceMultiplier);
var vendingItem = new VendingItem($"{itemName} [{entry.Amount}]", price > 0 ? $"{price} \u00a2" : "выдать", icon);
var j = i;
vendingItem.VendingItemBuyButton.OnPressed += _ =>
{
OnItemSelected?.Invoke(j);
};
vendingItem.VendingItemBuyButton.OnPressed += _ => { OnItemSelected?.Invoke(j); };
VendingContents.AddChild(vendingItem);
}

View File

@@ -84,9 +84,8 @@ public sealed partial class ResearchSystem
TryGetClientServer(uid, out _, out var serverComponent, component);
var names = GetServerNames();
var state = new ResearchClientBoundInterfaceState(names.Length, names,
GetServerIds(), serverComponent?.Id ?? -1);
var servers = GetAllServers(uid);
var state = new ResearchClientBoundInterfaceState(servers, serverComponent?.Id ?? -1);
_uiSystem.TrySetUiState(uid, ResearchClientUiKey.Key, state);
}

View File

@@ -1,5 +1,4 @@
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using Content.Server.Administration.Logs;
using Content.Server.Radio.EntitySystems;
using Content.Shared.Access.Systems;
@@ -58,34 +57,70 @@ namespace Content.Server.Research.Systems
}
/// <summary>
/// Gets the names of all the servers.
/// Gets all the servers on the grid.
/// </summary>
/// <returns></returns>
public string[] GetServerNames()
public List<ResearchServerComponent> GetAllServers(EntityUid client)
{
var allServers = EntityQuery<ResearchServerComponent>(true).ToArray();
var list = new string[allServers.Length];
var query = EntityQueryEnumerator<ResearchServerComponent>();
var clientTransform = Transform(client);
var list = new List<ResearchServerComponent>(3);
for (var i = 0; i < allServers.Length; i++)
while (query.MoveNext(out var uid, out var server))
{
list[i] = allServers[i].ServerName;
var serverTransform = Transform(uid);
if (clientTransform.GridUid != serverTransform.GridUid)
{
continue;
}
list.Add(server);
}
return list;
}
/// <summary>
/// Gets the ids of all the servers
/// Gets the names of all the servers on the grid.
/// </summary>
/// <returns></returns>
public int[] GetServerIds()
public List<string> GetServerNames(EntityUid client)
{
var allServers = EntityQuery<ResearchServerComponent>(true).ToArray();
var list = new int[allServers.Length];
var query = EntityQueryEnumerator<ResearchServerComponent>();
var clientTransform = Transform(client);
var list = new List<string>(3);
for (var i = 0; i < allServers.Length; i++)
while (query.MoveNext(out var uid, out var server))
{
list[i] = allServers[i].Id;
var serverTransform = Transform(uid);
if (clientTransform.GridUid != serverTransform.GridUid)
{
continue;
}
list.Add(server.ServerName);
}
return list;
}
/// <summary>
/// Gets the ids of all the servers on the grid.
/// </summary>
/// <returns></returns>
public List<int> GetServerIds(EntityUid client)
{
var query = EntityQueryEnumerator<ResearchServerComponent>();
var clientTransform = Transform(client);
var list = new List<int>(3);
while (query.MoveNext(out var uid, out var server))
{
var serverTransform = Transform(uid);
if (clientTransform.GridUid != serverTransform.GridUid)
{
continue;
}
list.Add(server.Id);
}
return list;

View File

@@ -52,7 +52,7 @@ namespace Content.Server.VendingMachines
[Dependency] private readonly StackSystem _stackSystem = default!;
// WD END
private double _priceMultiplier = 1.0; // WD
private const double GlobalPriceMultiplier = 2.0; // WD
public override void Initialize()
{
@@ -241,7 +241,8 @@ namespace Content.Server.VendingMachines
protected override int GetEntryPrice(EntityPrototype proto)
{
return (int) _pricing.GetEstimatedPrice(proto);
var price = (int) _pricing.GetEstimatedPrice(proto);
return price > 0 ? price : 25;
}
private int GetPrice(VendingMachineInventoryEntry entry, VendingMachineComponent comp)
@@ -251,13 +252,13 @@ namespace Content.Server.VendingMachines
private double GetPriceMultiplier(VendingMachineComponent comp)
{
return comp.PriceMultiplier * _priceMultiplier;
return comp.PriceMultiplier * GlobalPriceMultiplier;
}
private void OnWithdrawMessage(EntityUid uid, VendingMachineComponent component, VendingMachineWithdrawMessage args)
{
_stackSystem.Spawn(component.Credits,
PrototypeManager.Index<StackPrototype>(component.CreditStackPrototype), Transform(uid).Coordinates);
_stackSystem.Spawn(component.Credits, PrototypeManager.Index(component.CreditStackPrototype),
Transform(uid).Coordinates);
component.Credits = 0;
Audio.PlayPvs(component.SoundWithdrawCurrency, uid);

View File

@@ -63,16 +63,20 @@ namespace Content.Shared.Research.Components
[Serializable, NetSerializable]
public sealed class ResearchClientBoundInterfaceState : BoundUserInterfaceState
{
public int ServerCount;
public string[] ServerNames;
public int[] ServerIds;
public List<string> ServerNames;
public List<int> ServerIds;
public int SelectedServerId;
public ResearchClientBoundInterfaceState(int serverCount, string[] serverNames, int[] serverIds, int selectedServerId = -1)
public ResearchClientBoundInterfaceState(List<ResearchServerComponent> servers, int selectedServerId = -1)
{
ServerCount = serverCount;
ServerNames = serverNames;
ServerIds = serverIds;
ServerNames = new List<string>(servers.Count);
ServerIds = new List<int>(servers.Count);
foreach (var server in servers)
{
ServerNames.Add(server.ServerName);
ServerIds.Add(server.Id);
}
SelectedServerId = selectedServerId;
}
}

View File

@@ -126,6 +126,6 @@ public abstract partial class SharedVendingMachineSystem : EntitySystem
protected virtual int GetEntryPrice(EntityPrototype proto)
{
return 0;
return 25;
} // WD
}

View File

@@ -1,6 +1,5 @@
using Content.Shared.Actions;
using Content.Shared.Stacks;
using Content.Shared.Whitelist;
using Robust.Shared.Audio;
using Robust.Shared.GameStates;
using Robust.Shared.Prototypes;
@@ -16,8 +15,9 @@ namespace Content.Shared.VendingMachines
/// <summary>
/// PrototypeID for the vending machine's inventory, see <see cref="VendingMachineInventoryPrototype"/>
/// </summary>
[DataField("pack", customTypeSerializer: typeof(PrototypeIdSerializer<VendingMachineInventoryPrototype>), required: true)]
public string PackPrototypeId = string.Empty;
[DataField("pack", required: true)]
public ProtoId<VendingMachineInventoryPrototype> PackPrototypeId
= string.Empty;
/// <summary>
/// Used by the server to determine how long the vending machine stays in the "Deny" state.
@@ -130,6 +130,7 @@ namespace Content.Shared.VendingMachines
public TimeSpan NextEmpEject = TimeSpan.Zero;
#region Client Visuals
/// <summary>
/// RSI state for when the vending machine is unpowered.
/// Will be displayed on the layer <see cref="VendingMachineVisualLayers.Base"/>
@@ -180,24 +181,26 @@ namespace Content.Shared.VendingMachines
/// </summary>
[DataField("loopDeny")]
public bool LoopDenyAnimation = true;
#endregion
//WD EDIT
[DataField("priceMultiplier")]
public double PriceMultiplier;
[DataField]
public double PriceMultiplier = 1.0;
[ValidatePrototypeId<StackPrototype>]
public string CreditStackPrototype = "Credit";
public ProtoId<StackPrototype> CreditStackPrototype = "Credit";
[DataField("currencyType")]
[DataField]
public string CurrencyType = "SpaceCash";
[DataField("soundInsertCurrency")]
public SoundSpecifier SoundInsertCurrency = new SoundPathSpecifier("/Audio/White/Machines/polaroid2.ogg");
[DataField]
public SoundSpecifier SoundInsertCurrency =
new SoundPathSpecifier("/Audio/White/Machines/polaroid2.ogg");
[DataField("soundWithdrawCurrency")]
public SoundSpecifier SoundWithdrawCurrency = new SoundPathSpecifier("/Audio/White/Machines/polaroid1.ogg");
[DataField]
public SoundSpecifier SoundWithdrawCurrency =
new SoundPathSpecifier("/Audio/White/Machines/polaroid1.ogg");
[ViewVariables]
public int Credits;
@@ -209,12 +212,16 @@ namespace Content.Shared.VendingMachines
{
[ViewVariables(VVAccess.ReadWrite)]
public InventoryType Type;
[ViewVariables(VVAccess.ReadWrite)]
public string ID;
[ViewVariables(VVAccess.ReadWrite)]
public uint Amount;
[ViewVariables(VVAccess.ReadWrite)]
public int Price; // WD
public VendingMachineInventoryEntry(InventoryType type, string id, uint amount, int price)
{
Type = type;
@@ -254,10 +261,12 @@ namespace Content.Shared.VendingMachines
/// Off / Broken. The other layers will overlay this if the machine is on.
/// </summary>
Base,
/// <summary>
/// Normal / Deny / Eject
/// </summary>
BaseUnshaded,
/// <summary>
/// Screens that are persistent (where the machine is not off or broken)
/// </summary>
@@ -279,6 +288,5 @@ namespace Content.Shared.VendingMachines
public sealed partial class VendingMachineSelfDispenseEvent : InstantActionEvent
{
};
}

View File

@@ -18,8 +18,8 @@ ent-SeniorOfficerIDCard = ID карта ветерана СБ
.desc = { ent-IDCardStandard.desc }
ent-SeniorSalvageSpecialistIDCard = ID карта охотника карго
.desc = { ent-IDCardStandard.desc }
ent-ModularReceiver = модульный приемник
.desc = Жизненно важная часть, используемая в создании огнестрельного оружия.
ent-ModularReceiver = ствольная коробка
.desc = Важнейшая деталь, используемая для создании огнестрельного оружия.
ent-RifleStock = приклад
.desc = Прочный деревянный приклад, используемый при создании огнестрельного оружия.
ent-MedalCase = футляр для медали

View File

@@ -18,7 +18,7 @@ ent-JugPhosphorus = кувшин (фосфор)
.desc = { ent-Jug.desc }
ent-JugSulfur = кувшин (сера)
.desc = { ent-Jug.desc }
ent-JugSilicon = кувшин (силикон)
ent-JugSilicon = кувшин (кремний)
.desc = { ent-Jug.desc }
ent-JugHydrogen = кувшин (водород)
.desc = { ent-Jug.desc }
@@ -36,3 +36,7 @@ ent-JugCopper = кувшин (медь)
.desc = { ent-Jug.desc }
ent-JugGold = кувшин (золото)
.desc = { ent-Jug.desc }
ent-JugSugar = кувшин (сахар)
.desc = { ent-Jug.desc }
ent-JugWeldingFuel = кувшин (сварочное топливо)
.desc = { ent-Jug.desc }

View File

@@ -20,7 +20,7 @@ ent-VendingMachineWinter = ЗимКомод
.desc = Лучшее место, чтобы насладиться холодом!
ent-VendingMachineSustenance = Продовольственный вендомат
.desc = Торговый автомат, который продает еду, как того требует раздел 47-C Соглашения об этическом обращении с заключенными NT.
ent-VendingMachineSyndieDrobe = СиндиКомод
ent-VendingMachineSyndieDrobe = СиндиШкаф
.desc = Гардеробная машина, закодированная синдикатом, содержит элитное снаряжение для различных операций.
ent-VendingMachineChemicals = ХимВенд
.desc = Вероятно, это не кофемашина.

View File

@@ -1,23 +1,23 @@
- type: vendingMachineInventory
id: BoozeOMatInventory
startingInventory:
DrinkGlass: 20 #Kept glasses at top for ease to differentiate from booze.
DrinkShotGlass: 10
DrinkGlassCoupeShaped: 10
DrinkVacuumFlask: 5
DrinkFlaskBar: 5
DrinkShaker: 5
DrinkGlass: 10 #Kept glasses at top for ease to differentiate from booze.
DrinkShotGlass: 5
DrinkGlassCoupeShaped: 5
DrinkVacuumFlask: 3
DrinkFlaskBar: 3
DrinkShaker: 3
CustomDrinkJug: 2 #to allow for custom drinks in the soda/booze dispensers
DrinkAbsintheBottleFull: 2
DrinkAleBottleFull: 5
DrinkBeerBottleFull: 5
DrinkAleBottleFull: 3
DrinkBeerBottleFull: 3
DrinkBlueCuracaoBottleFull: 2
DrinkCognacBottleFull: 4
DrinkCognacBottleFull: 3
DrinkCoconutWaterCarton: 3
DrinkColaBottleFull: 4
DrinkColaBottleFull: 3
DrinkMilkCarton: 2
DrinkCreamCarton: 5
DrinkGinBottleFull: 3
DrinkCreamCarton: 3
DrinkGinBottleFull: 2
DrinkGildlagerBottleFull: 2 #if champagne gets less because its premium, then gildlager should match this and have two
DrinkGrenadineBottleFull: 2
DrinkJuiceLimeCarton: 3
@@ -27,20 +27,20 @@
DrinkMelonLiquorBottleFull: 3
DrinkPatronBottleFull: 2
DrinkRumBottleFull: 4
DrinkSodaWaterCan: 8
DrinkSolDryCan: 8
DrinkSodaWaterCan: 5
DrinkSolDryCan: 5
DrinkSpaceMountainWindBottleFull: 3
DrinkSpaceUpBottleFull: 3
DrinkTequilaBottleFull: 3
DrinkTonicWaterCan: 8
DrinkTonicWaterCan: 5
DrinkVermouthBottleFull: 5
DrinkVodkaBottleFull: 5
DrinkWhiskeyBottleFull: 5
DrinkWineBottleFull: 5
DrinkVodkaBottleFull: 3
DrinkWhiskeyBottleFull: 3
DrinkWineBottleFull: 3
DrinkChampagneBottleFull: 2 #because the premium drink
DrinkSakeBottleFull: 3
Eftpos: 4
DrinkBeerCan: 5
DrinkWineCan: 5
DrinkBeerCan: 4
DrinkWineCan: 4
emaggedInventory:
DrinkPoisonWinebottleFull: 2

View File

@@ -1,10 +1,10 @@
- type: vendingMachineInventory
id: HotDrinksMachineInventory
startingInventory:
DrinkHotCoffee: 5
DrinkCafeLatte: 5
DrinkTeacup: 5
DrinkGreenTea: 5
DrinkHotCoco: 5
DrinkHotCoffee: 3
DrinkCafeLatte: 3
DrinkTeacup: 3
DrinkGreenTea: 3
DrinkHotCoco: 3
emaggedInventory:
DrinkNothing: 2

View File

@@ -1,7 +1,7 @@
- type: vendingMachineInventory
id: GoodCleanFunInventory
startingInventory:
PlayerCardBag: 20
PlayerCardBag: 10
CardBag36: 4
CardBag52: 4
UnoCardBag: 1

View File

@@ -4,8 +4,8 @@
ClothingBackpackDuffelMedical: 4
ClothingBackpackMedical: 4
ClothingBackpackSatchelMedical: 4
ClothingHeadHelmetVoidParamed: 2
ClothingOuterHardsuitVoidParamed: 2
ClothingHeadHelmetVoidParamed: 1
ClothingOuterHardsuitVoidParamed: 1
ClothingHeadHatBeretBrigmedic: 4
ClothingHeadNurseHat: 4
ClothingHeadHatParamedicsoft: 4

View File

@@ -2,21 +2,19 @@
id: SalvageEquipmentInventory
startingInventory:
WeaponProtoKineticAccelerator: 2
WeaponCrusher: 2
WeaponCrusherDagger: 4
WeaponGrapplingGun: 3
HandheldGPSBasic: 10
Crowbar: 6
BoxMRE: 6
Pickaxe: 6
SurvivalKnife: 3
OreBag: 6
Flare: 20
FlashlightLantern: 6
WeaponCrusher: 1
WeaponCrusherDagger: 2
HandheldGPSBasic: 4
Crowbar: 2
BoxMRE: 3
Pickaxe: 4
SurvivalKnife: 2
OreBag: 4
Flare: 10
FlashlightLantern: 3
Floodlight: 2
RadioHandheld: 10
Brutepack: 2
InflatableWallStack1: 40
RadioHandheld: 4
InflatableWallStack1: 20
InflatableDoorStack1: 10
SeismicCharge: 3
FultonBeacon: 2

View File

@@ -10,7 +10,6 @@
ClothingHeadsetSecurity: 4
ClothingEyesGlassesSecurity: 4
ClothingOuterWinterSec: 4
ClothingOuterArmorBasic: 4
ClothingUniformJumpsuitSec: 4
ClothingUniformJumpskirtSec: 4
ClothingUniformJumpsuitSecGrey: 4

View File

@@ -26,6 +26,8 @@
- type: GuideHelp
guides:
- Radio
- type: StaticPrice
price: 20
- type: entity
parent: ClothingHeadset

View File

@@ -181,6 +181,8 @@
- type: ShowSecurityIcons
- type: IdentityBlocker
coverage: EYES
- type: StaticPrice
price: 25
- type: entity
parent: ClothingEyesBase

View File

@@ -315,6 +315,8 @@
- type: Fiber
fiberMaterial: fibers-insulative
fiberColor: fibers-yellow
- type: StaticPrice
price: 50
# Budget Insulated Gloves
- type: entity

View File

@@ -113,6 +113,8 @@
sprite: Objects/Consumable/Drinks/glass_clear.rsi
state: icon
- type: TransformableContainer
- type: StaticPrice
price: 10
- type: entity
name: coupe glass

View File

@@ -68,7 +68,7 @@
types:
Blunt: 0
- type: StaticPrice
price: 20
price: 10
- type: EmitSoundOnPickup
sound:
path: /Audio/White/Items/Cup/pickup.ogg

View File

@@ -57,6 +57,8 @@
- type: Tag
tags:
- Trash
- type: StaticPrice
price: 10
- type: entity
name: broken bowl

View File

@@ -54,6 +54,8 @@
materialComposition:
Glass: 60
- type: SpaceGarbage
- type: StaticPrice
price: 10
- type: entity
name: broken plate
@@ -108,6 +110,8 @@
- type: PhysicalComposition
materialComposition:
Glass: 30
- type: StaticPrice
price: 5
- type: entity
parent: FoodPlateTrash
@@ -137,6 +141,8 @@
- type: Tag
tags:
- Trash
- type: StaticPrice
price: 15
- type: entity
name: plastic plate
@@ -154,6 +160,8 @@
- type: Tag
tags:
- Trash
- type: StaticPrice
price: 7
# Pie Tin
@@ -178,3 +186,5 @@
materialComposition:
Steel: 60
- type: SpaceGarbage
- type: StaticPrice
price: 10

View File

@@ -47,6 +47,8 @@
tags:
- Trash
- Skewer
- type: StaticPrice
price: 10
# Custom Kebab Example

View File

@@ -135,6 +135,8 @@
- cig5
- cig6
- type: Appearance
- type: StaticPrice
price: 10
- type: entity
id: CigPackGreen

View File

@@ -675,7 +675,7 @@
Steel: 30
Plastic: 30
- type: StaticPrice
price: 15
price: 10
- type: entity
id: PowerCageRechargerCircuitboard
@@ -720,7 +720,7 @@
Steel: 30
Plastic: 30
- type: StaticPrice
price: 15
price: 10
- type: entity
id: WeaponCapacitorRechargerCircuitboard
@@ -742,7 +742,7 @@
Steel: 30
Plastic: 30
- type: StaticPrice
price: 15
price: 10
- type: entity
id: TurboItemRechargerCircuitboard
@@ -784,7 +784,7 @@
chemicalComposition:
Silicon: 20
- type: StaticPrice
price: 58
price: 50
- type: entity
parent: BaseMachineCircuitboard

View File

@@ -14,4 +14,4 @@
- DroneUsable
- StationMapElectronics
- type: StaticPrice
price: 15
price: 10

View File

@@ -12,7 +12,7 @@
- DroneUsable
- AirAlarmElectronics
- type: StaticPrice
price: 61
price: 50
- type: entity
id: FireAlarmElectronics
@@ -30,4 +30,4 @@
- DroneUsable
- FireAlarmElectronics
- type: StaticPrice
price: 61
price: 50

View File

@@ -12,4 +12,4 @@
- DroneUsable
- MailingUnitElectronics
- type: StaticPrice
price: 55
price: 50

View File

@@ -13,7 +13,7 @@
- DroneUsable
- type: DoorElectronics
- type: StaticPrice
price: 55
price: 50
- type: AccessReader
- type: ActivatableUI
key: enum.DoorElectronicsConfigurationUiKey.Key

View File

@@ -14,4 +14,4 @@
- DroneUsable
- FirelockElectronics
- type: StaticPrice
price: 61
price: 55

View File

@@ -12,4 +12,4 @@
- DroneUsable
- IntercomElectronics
- type: StaticPrice
price: 55
price: 50

View File

@@ -15,7 +15,7 @@
chemicalComposition:
Silicon: 20
- type: StaticPrice
price: 34
price: 20
# Wallmount Substation
- type: entity

View File

@@ -15,7 +15,7 @@
tags:
- TimerSignalElectronics
- type: StaticPrice
price: 15
price: 10
- type: entity
id: ScreenTimerElectronics

View File

@@ -50,6 +50,8 @@
damage:
types:
Piercing: 5
- type: StaticPrice
price: 10
- type: entity
parent: UtensilBasePlastic
@@ -62,6 +64,8 @@
- type: Utensil
types:
- Fork
- type: StaticPrice
price: 10
- type: entity
parent: UtensilBase
@@ -87,6 +91,8 @@
Blunt: 1
- type: Shovel
speedModifier: 0.1 # you can try
- type: StaticPrice
price: 10
- type: entity
parent: UtensilBasePlastic
@@ -103,6 +109,8 @@
- Spoon
- type: Shovel
speedModifier: 0.1 # you can try
- type: StaticPrice
price: 10
- type: entity
parent: UtensilBasePlastic
@@ -120,3 +128,5 @@
- Plastic
- Trash
- Knife
- type: StaticPrice
price: 10

View File

@@ -19,7 +19,7 @@
tags:
- DroneUsable
- type: StaticPrice
price: 100
price: 60
- type: ContainerContainer
containers:
light_replacer_storage: !type:Container

View File

@@ -213,6 +213,8 @@
- type: UseDelay
- type: IgnitionSource
ignited: false
- type: StaticPrice
price: 20
- type: entity
name: flippo engraved lighter

View File

@@ -640,3 +640,5 @@
- type: Tag
tags:
- RollingPin
- type: StaticPrice
price: 15

View File

@@ -70,7 +70,7 @@
True: {visible: false}
False: {visible: true}
- type: StaticPrice
price: 120
price: 100
- type: entity
parent: RollerBed

View File

@@ -110,7 +110,6 @@
- type: VendingMachine
pack: CondimentInventory
offState: off
priceMultiplier: 1.0
- type: Sprite
sprite: Structures/Machines/VendingMachines/condiments.rsi
drawdepth: SmallObjects
@@ -176,6 +175,7 @@
normalState: normal-unshaded
denyState: deny-unshaded
loopDeny: false
priceMultiplier: 0.0
- type: Advertise
pack: BoozeOMatAds
- type: SpeakOnUIClosed
@@ -210,6 +210,7 @@
normalState: normal-unshaded
ejectState: eject-unshaded
denyState: deny-unshaded
priceMultiplier: 0.0
- type: Sprite
sprite: Structures/Machines/VendingMachines/cart.rsi
layers:
@@ -239,6 +240,7 @@
brokenState: broken
normalState: normal-unshaded
ejectState: eject-unshaded
priceMultiplier: 0.0
- type: Advertise
pack: ChefvendAds
- type: SpeakOnUIClosed
@@ -275,7 +277,6 @@
normalState: normal-unshaded
ejectState: eject-unshaded
denyState: deny-unshaded
priceMultiplier: 1.0
- type: Advertise
pack: CigaretteMachineAds
- type: SpeakOnUIClosed
@@ -304,7 +305,6 @@
brokenState: broken
normalState: normal-unshaded
denyState: deny-unshaded
priceMultiplier: 1.0
- type: Advertise
pack: ClothesMateAds
- type: SpeakOnUIClosed
@@ -341,7 +341,6 @@
brokenState: broken
normalState: normal-unshaded
denyState: deny-unshaded
priceMultiplier: 1.0
- type: Advertise
pack: ClothesMateAds
- type: SpeakOnUIClosed
@@ -383,7 +382,6 @@
screenState: screen
ejectDelay: 5
soundVend: /Audio/Machines/machine_vend_hot_drink.ogg
priceMultiplier: 1.0
- type: Advertise
pack: HotDrinksMachineAds
- type: SpeakOnUIClosed
@@ -423,7 +421,6 @@
ejectState: eject-unshaded
denyState: deny-unshaded
ejectDelay: 1.9
priceMultiplier: 1.0
- type: Advertise
pack: RobustSoftdrinksAds
- type: SpeakOnUIClosed
@@ -493,7 +490,6 @@
components:
- type: VendingMachine
pack: SpaceUpInventory
priceMultiplier: 1.0
- type: Sprite
sprite: Structures/Machines/VendingMachines/spaceup.rsi
layers:
@@ -516,7 +512,6 @@
components:
- type: VendingMachine
pack: SodaInventory
priceMultiplier: 1.0
- type: Sprite
sprite: Structures/Machines/VendingMachines/soda.rsi
layers:
@@ -540,7 +535,6 @@
components:
- type: VendingMachine
pack: StarkistInventory
priceMultiplier: 1.0
- type: Sprite
sprite: Structures/Machines/VendingMachines/starkist.rsi
layers:
@@ -572,7 +566,6 @@
ejectState: eject-unshaded
denyState: deny-unshaded
ejectDelay: 1.9
priceMultiplier: 1.0
- type: Advertise
pack: RobustSoftdrinksAds
- type: Speech
@@ -607,7 +600,6 @@
ejectState: eject-unshaded
denyState: deny-unshaded
ejectDelay: 1.9
priceMultiplier: 1.0
- type: Advertise
pack: RobustSoftdrinksAds
- type: SpeakOnUIClosed
@@ -708,6 +700,7 @@
offState: off
brokenState: broken
normalState: normal-unshaded
priceMultiplier: 0.0
- type: Advertise
pack: MagiVendAds
- type: SpeakOnUIClosed
@@ -740,7 +733,6 @@
offState: off
brokenState: broken
normalState: normal-unshaded
priceMultiplier: 1.0
- type: Advertise
pack: DiscountDansAds
- type: SpeakOnUIClosed
@@ -805,6 +797,7 @@
ejectState: eject-unshaded
denyState: deny-unshaded
ejectDelay: 0.6
priceMultiplier: 0.0
- type: Advertise
pack: NanoMedAds
- type: SpeakOnUIClosed
@@ -842,6 +835,7 @@
normalState: normal-unshaded
ejectState: eject-unshaded
denyState: deny-unshaded
priceMultiplier: 0.5
- type: Advertise
pack: NutriMaxAds
- type: SpeakOnUIClosed
@@ -876,6 +870,7 @@
normalState: normal-unshaded
ejectState: eject-unshaded
denyState: deny-unshaded
priceMultiplier: 0.0
- type: Advertise
pack: SecTechAds
- type: SpeakOnUIClosed
@@ -914,6 +909,7 @@
normalState: normal-unshaded
ejectState: eject-unshaded
denyState: deny-unshaded
priceMultiplier: 0.0
- type: Advertise
pack: MegaSeedAds
- type: SpeakOnUIClosed
@@ -956,7 +952,6 @@
normalState: normal-unshaded
ejectState: eject-unshaded
denyState: deny-unshaded
priceMultiplier: 1.0
- type: Advertise
pack: GetmoreChocolateCorpAds
- type: SpeakOnUIClosed
@@ -1103,7 +1098,6 @@
normalState: normal-unshaded
ejectState: eject-unshaded
denyState: deny-unshaded
priceMultiplier: 1.0
- type: Advertise
pack: BodaAds
- type: SpeakOnUIClosed
@@ -1138,7 +1132,6 @@
ejectState: eject-unshaded
denyState: deny-unshaded
screenState: screen
priceMultiplier: 1.0
- type: Advertise
pack: AutoDrobeAds
- type: SpeakOnUIClosed
@@ -1280,6 +1273,7 @@
normalState: normal-unshaded
ejectState: eject-unshaded
ejectDelay: 1.8
priceMultiplier: 0.2
- type: Advertise
pack: GoodCleanFunAds
- type: SpeakOnUIClosed
@@ -1312,7 +1306,6 @@
offState: off
brokenState: broken
normalState: normal-unshaded
priceMultiplier: 1.0
- type: Advertise
pack: ChangAds
- type: SpeakOnUIClosed
@@ -1378,7 +1371,6 @@
offState: off
brokenState: broken
normalState: normal-unshaded
priceMultiplier: 1.0
- type: Advertise
pack: DonutAds
- type: SpeakOnUIClosed
@@ -1432,6 +1424,7 @@
brokenState: broken
normalState: normal-unshaded
denyState: deny-unshaded
priceMultiplier: 0.0
- type: Sprite
sprite: Structures/Machines/VendingMachines/wallmed.rsi
layers:
@@ -1461,7 +1454,6 @@
offState: off
brokenState: broken
normalState: normal-unshaded
priceMultiplier: 1.0
- type: Advertise
pack: HyDrobeAds
- type: SpeakOnUIClosed
@@ -1490,7 +1482,6 @@
offState: off
brokenState: broken
normalState: normal-unshaded
priceMultiplier: 1.0
- type: Advertise
pack: LawDrobeAds
- type: SpeakOnUIClosed
@@ -1519,7 +1510,6 @@
offState: off
brokenState: broken
normalState: normal-unshaded
priceMultiplier: 1.0
- type: Advertise
pack: SecDrobeAds
- type: SpeakOnUIClosed
@@ -1548,7 +1538,6 @@
offState: off
brokenState: broken
normalState: normal-unshaded
priceMultiplier: 1.0
- type: Advertise
pack: BarDrobeAds
- type: SpeakOnUIClosed
@@ -1577,7 +1566,6 @@
brokenState: broken
normalState: normal-unshaded
denyState: deny-unshaded
priceMultiplier: 1.0
- type: Sprite
sprite: Structures/Machines/VendingMachines/chapdrobe.rsi
layers:
@@ -1606,7 +1594,6 @@
offState: off
brokenState: broken
normalState: normal-unshaded
priceMultiplier: 1.0
- type: Advertise
pack: CargoDrobeAds
- type: SpeakOnUIClosed
@@ -1635,7 +1622,6 @@
offState: off
brokenState: broken
normalState: normal-unshaded
priceMultiplier: 1.0
- type: Advertise
pack: MediDrobeAds
- type: SpeakOnUIClosed
@@ -1664,7 +1650,6 @@
offState: off
brokenState: broken
normalState: normal-unshaded
priceMultiplier: 1.0
- type: Advertise
pack: ChemDrobeAds
- type: SpeakOnUIClosed
@@ -1721,7 +1706,6 @@
offState: off
brokenState: broken
normalState: normal-unshaded
priceMultiplier: 1.0
- type: Advertise
pack: AtmosDrobeAds
- type: SpeakOnUIClosed
@@ -1750,7 +1734,6 @@
offState: off
brokenState: broken
normalState: normal-unshaded
priceMultiplier: 1.0
- type: Advertise
pack: EngiDrobeAds
- type: SpeakOnUIClosed
@@ -1779,7 +1762,6 @@
offState: off
brokenState: broken
normalState: normal-unshaded
priceMultiplier: 1.0
- type: Advertise
pack: ChefDrobeAds
- type: SpeakOnUIClosed
@@ -1808,7 +1790,6 @@
offState: off
brokenState: broken
normalState: normal-unshaded
priceMultiplier: 1.0
- type: Advertise
pack: DetDrobeAds
- type: SpeakOnUIClosed
@@ -1837,7 +1818,6 @@
offState: off
brokenState: broken
normalState: normal-unshaded
priceMultiplier: 1.0
- type: Advertise
pack: JaniDrobeAds
- type: SpeakOnUIClosed
@@ -1866,7 +1846,6 @@
offState: off
brokenState: broken
normalState: normal-unshaded
priceMultiplier: 1.0
- type: Advertise
pack: SciDrobeAds
- type: SpeakOnUIClosed
@@ -1895,6 +1874,7 @@
offState: off
brokenState: broken
normalState: normal-unshaded
priceMultiplier: 0.0
- type: Advertise
pack: SyndieDrobeAds
- type: SpeakOnUIClosed
@@ -1923,7 +1903,6 @@
offState: off
brokenState: broken
normalState: normal-unshaded
priceMultiplier: 1.0
- type: Advertise
pack: RoboDrobeAds
- type: SpeakOnUIClosed
@@ -1952,7 +1931,6 @@
offState: off
brokenState: broken
normalState: normal-unshaded
priceMultiplier: 1.0
- type: Advertise
pack: GeneDrobeAds
- type: SpeakOnUIClosed
@@ -1981,7 +1959,6 @@
offState: off
brokenState: broken
normalState: normal-unshaded
priceMultiplier: 1.0
- type: Advertise
pack: ViroDrobeAds
- type: SpeakOnUIClosed
@@ -2010,7 +1987,6 @@
offState: off
brokenState: broken
normalState: normal-unshaded
priceMultiplier: 1.0
- type: Sprite
sprite: Structures/Machines/VendingMachines/centdrobe.rsi
layers:
@@ -2044,7 +2020,7 @@
denyState: deny-unshaded
ejectDelay: 1.9
soundVend: /Audio/Items/bikehorn.ogg
priceMultiplier: 1.0
priceMultiplier: 0.2
- type: Sprite
sprite: Structures/Machines/VendingMachines/happyhonk.rsi
layers:
@@ -2077,6 +2053,7 @@
components:
- type: VendingMachine
pack: TankDispenserEVAInventory
priceMultiplier: 0.0
- type: Sprite
sprite: Structures/Machines/VendingMachines/tankdispenser.rsi #TODO add visualiser for remaining tanks as layers
state: dispenser
@@ -2090,6 +2067,7 @@
components:
- type: VendingMachine
pack: TankDispenserEngineeringInventory
priceMultiplier: 0.0
- type: Sprite
sprite: Structures/Machines/VendingMachines/tankdispenser.rsi #TODO add visualiser for remaining tanks as layers
layers:
@@ -2109,6 +2087,7 @@
normalState: normal
denyState: deny
ejectDelay: 2
priceMultiplier: 0.0
- type: Sprite
sprite: Structures/Machines/VendingMachines/chemvend.rsi
layers:
@@ -2137,6 +2116,7 @@
normalState: normal
denyState: deny
ejectDelay: 2
priceMultiplier: 0.0
- type: AccessReader
access: [["SyndicateAgent"]]