Storagefill component refactor (#2093)
* refactored storagefill component to allow for random items, amount, and conditional exclusion * i fudged it * yaml for the already deleted filler components * ignoredcomponents & janifill * remainder of toolboxes done * emergencyclosetfill * really makes you think * it DOES really make you think * orGroup * exp111 suggestions * last touches * isNullOrEmpty
This commit is contained in:
@@ -15,11 +15,7 @@
|
||||
"AtmosExposed",
|
||||
"Explosive",
|
||||
"OnUseTimerTrigger",
|
||||
"ToolboxElectricalFill",
|
||||
"ToolboxEmergencyFill",
|
||||
"WarpPoint",
|
||||
"ToolboxGoldFill",
|
||||
"ToolLockerFill",
|
||||
"EmitSoundOnUse",
|
||||
"FootstepModifier",
|
||||
"HeatResistance",
|
||||
@@ -67,10 +63,8 @@
|
||||
"Stomach",
|
||||
"Rotatable",
|
||||
"MagicMirror",
|
||||
"MedkitFill",
|
||||
"FloorTile",
|
||||
"FootstepSound",
|
||||
"UtilityBeltClothingFill",
|
||||
"ShuttleController",
|
||||
"HumanInventoryController",
|
||||
"UseDelay",
|
||||
@@ -97,7 +91,6 @@
|
||||
"SolarPanel",
|
||||
"BodyScanner",
|
||||
"Stunbaton",
|
||||
"EmergencyClosetFill",
|
||||
"Tool",
|
||||
"TilePrying",
|
||||
"RandomSpriteColor",
|
||||
@@ -127,7 +120,6 @@
|
||||
"EmitSoundOnThrow",
|
||||
"Flash",
|
||||
"DamageOnToolInteract",
|
||||
"CustodialClosetFill",
|
||||
"NoSlip",
|
||||
"TrashSpawner",
|
||||
"Pill",
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
using Robust.Server.Interfaces.GameObjects;
|
||||
using Robust.Shared.GameObjects;
|
||||
|
||||
namespace Content.Server.GameObjects.Components.Items.Storage.Fill
|
||||
{
|
||||
[RegisterComponent]
|
||||
internal sealed class CustodialClosetFillComponent : Component, IMapInit
|
||||
{
|
||||
public override string Name => "CustodialClosetFill";
|
||||
|
||||
void IMapInit.MapInit()
|
||||
{
|
||||
var storage = Owner.GetComponent<IStorageComponent>();
|
||||
|
||||
void Spawn(string prototype)
|
||||
{
|
||||
storage.Insert(Owner.EntityManager.SpawnEntity(prototype, Owner.Transform.Coordinates));
|
||||
}
|
||||
|
||||
Spawn("MopItem");
|
||||
Spawn("MopBucket");
|
||||
Spawn("WetFloorSign");
|
||||
Spawn("WetFloorSign");
|
||||
Spawn("WetFloorSign");
|
||||
Spawn("TrashBag");
|
||||
Spawn("TrashBag");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,65 +0,0 @@
|
||||
using Robust.Server.Interfaces.GameObjects;
|
||||
using Robust.Shared.GameObjects;
|
||||
using Robust.Shared.Interfaces.Random;
|
||||
using Robust.Shared.IoC;
|
||||
using Robust.Shared.Random;
|
||||
|
||||
namespace Content.Server.GameObjects.Components.Items.Storage.Fill
|
||||
{
|
||||
[RegisterComponent]
|
||||
internal sealed class EmergencyClosetFillComponent : Component, IMapInit
|
||||
{
|
||||
public override string Name => "EmergencyClosetFill";
|
||||
|
||||
void IMapInit.MapInit()
|
||||
{
|
||||
var storage = Owner.GetComponent<IStorageComponent>();
|
||||
var random = IoCManager.Resolve<IRobustRandom>();
|
||||
|
||||
void Spawn(string prototype)
|
||||
{
|
||||
storage.Insert(Owner.EntityManager.SpawnEntity(prototype, Owner.Transform.Coordinates));
|
||||
}
|
||||
|
||||
if (random.Prob(0.4f))
|
||||
{
|
||||
Spawn("ToolboxEmergencyFilled");
|
||||
}
|
||||
|
||||
var pick = random.Next(0, 100);
|
||||
if (pick < 40) // 40%
|
||||
{
|
||||
// TODO: uncomment when we actually have these items.
|
||||
// Spawn("TankOxygenSmallFilled");
|
||||
// Spawn("TankOxygenSmallFilled");
|
||||
Spawn("BreathMaskClothing");
|
||||
Spawn("BreathMaskClothing");
|
||||
}
|
||||
else if (pick < 65) // 25%
|
||||
{
|
||||
// Spawn("TankOxygenSmallFilled");
|
||||
// Spawn("MedkitOxygenFilled");
|
||||
Spawn("BreathMaskClothing");
|
||||
}
|
||||
else if (pick < 85) // 20%
|
||||
{
|
||||
// Spawn("TankOxygenFilled");
|
||||
Spawn("BreathMaskClothing");
|
||||
}
|
||||
else if (pick < 95) // 10%
|
||||
{
|
||||
// Spawn("TankOxygenSmallFilled");
|
||||
Spawn("BreathMaskClothing");
|
||||
}
|
||||
else if (pick < 99) // 4%
|
||||
{
|
||||
// nothing, doot
|
||||
}
|
||||
else // 1%
|
||||
{
|
||||
// teehee
|
||||
Owner.Delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,32 +0,0 @@
|
||||
using Robust.Server.Interfaces.GameObjects;
|
||||
using Robust.Shared.GameObjects;
|
||||
using Robust.Shared.Interfaces.GameObjects;
|
||||
using Robust.Shared.IoC;
|
||||
|
||||
namespace Content.Server.GameObjects.Components.Items.Storage.Fill
|
||||
{
|
||||
[RegisterComponent]
|
||||
internal sealed class MedkitFillComponent : Component, IMapInit
|
||||
{
|
||||
[Dependency] private readonly IEntityManager _entityManager = default!;
|
||||
|
||||
public override string Name => "MedkitFill";
|
||||
|
||||
void IMapInit.MapInit()
|
||||
{
|
||||
var storage = Owner.GetComponent<IStorageComponent>();
|
||||
|
||||
void Spawn(string prototype)
|
||||
{
|
||||
storage.Insert(_entityManager.SpawnEntity(prototype, Owner.Transform.Coordinates));
|
||||
}
|
||||
|
||||
Spawn("Brutepack");
|
||||
Spawn("Brutepack");
|
||||
Spawn("Brutepack");
|
||||
Spawn("Ointment");
|
||||
Spawn("Ointment");
|
||||
Spawn("Ointment");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,48 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
using Robust.Server.Interfaces.GameObjects;
|
||||
using Robust.Shared.GameObjects;
|
||||
using Robust.Shared.Interfaces.GameObjects;
|
||||
using Robust.Shared.IoC;
|
||||
using Robust.Shared.Serialization;
|
||||
using Robust.Shared.ViewVariables;
|
||||
|
||||
namespace Content.Server.GameObjects.Components.Items.Storage.Fill
|
||||
{
|
||||
[RegisterComponent]
|
||||
internal sealed class StorageFillComponent : Component, IMapInit
|
||||
{
|
||||
[Dependency] private readonly IEntityManager _entityManager = default!;
|
||||
|
||||
public override string Name => "StorageFill";
|
||||
|
||||
[ViewVariables]
|
||||
private List<string> _contents = new List<string>();
|
||||
|
||||
public override void ExposeData(ObjectSerializer serializer)
|
||||
{
|
||||
base.ExposeData(serializer);
|
||||
|
||||
serializer.DataField(ref _contents, "contents", new List<string>());
|
||||
}
|
||||
|
||||
void IMapInit.MapInit()
|
||||
{
|
||||
if (_contents.Count == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var storage = Owner.GetComponent<IStorageComponent>();
|
||||
|
||||
void Spawn(string prototype)
|
||||
{
|
||||
storage.Insert(_entityManager.SpawnEntity(prototype, Owner.Transform.Coordinates));
|
||||
}
|
||||
|
||||
foreach (var prototype in _contents)
|
||||
{
|
||||
Spawn(prototype);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,88 +0,0 @@
|
||||
using Robust.Server.Interfaces.GameObjects;
|
||||
using Robust.Shared.GameObjects;
|
||||
using Robust.Shared.Interfaces.Random;
|
||||
using Robust.Shared.IoC;
|
||||
using Robust.Shared.Random;
|
||||
|
||||
namespace Content.Server.GameObjects.Components.Items.Storage.Fill
|
||||
{
|
||||
[RegisterComponent]
|
||||
internal sealed class ToolLockerFillComponent : Component, IMapInit
|
||||
{
|
||||
public override string Name => "ToolLockerFill";
|
||||
|
||||
void IMapInit.MapInit()
|
||||
{
|
||||
var storage = Owner.GetComponent<IStorageComponent>();
|
||||
var random = IoCManager.Resolve<IRobustRandom>();
|
||||
|
||||
void Spawn(string prototype)
|
||||
{
|
||||
storage.Insert(Owner.EntityManager.SpawnEntity(prototype, Owner.Transform.Coordinates));
|
||||
}
|
||||
|
||||
if (random.Prob(0.4f))
|
||||
{
|
||||
Spawn("OuterclothingHazard");
|
||||
}
|
||||
|
||||
if (random.Prob(0.7f))
|
||||
{
|
||||
Spawn("FlashlightLantern");
|
||||
}
|
||||
|
||||
if (random.Prob(0.7f))
|
||||
{
|
||||
Spawn("Screwdriver");
|
||||
}
|
||||
|
||||
if (random.Prob(0.7f))
|
||||
{
|
||||
Spawn("Wrench");
|
||||
}
|
||||
|
||||
if (random.Prob(0.7f))
|
||||
{
|
||||
Spawn("Welder");
|
||||
}
|
||||
|
||||
if (random.Prob(0.7f))
|
||||
{
|
||||
Spawn("Crowbar");
|
||||
}
|
||||
|
||||
if (random.Prob(0.7f))
|
||||
{
|
||||
Spawn("Wirecutter");
|
||||
}
|
||||
|
||||
if (random.Prob(0.2f))
|
||||
{
|
||||
Spawn("Multitool");
|
||||
}
|
||||
|
||||
if (random.Prob(0.2f))
|
||||
{
|
||||
Spawn("UtilityBeltClothing");
|
||||
}
|
||||
|
||||
if (random.Prob(0.05f))
|
||||
{
|
||||
Spawn("GlovesYellow");
|
||||
}
|
||||
|
||||
if (random.Prob(0.4f))
|
||||
{
|
||||
Spawn("HatHardhatRed");
|
||||
}
|
||||
|
||||
for (var i = 0; i < 3; i++)
|
||||
{
|
||||
if (random.Prob(0.3f))
|
||||
{
|
||||
Spawn("ApcExtensionCableStack");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
using Robust.Server.Interfaces.GameObjects;
|
||||
using Robust.Shared.GameObjects;
|
||||
using Robust.Shared.Interfaces.GameObjects;
|
||||
using Robust.Shared.Interfaces.Random;
|
||||
using Robust.Shared.IoC;
|
||||
using Robust.Shared.Random;
|
||||
|
||||
namespace Content.Server.GameObjects.Components.Items.Storage.Fill
|
||||
{
|
||||
[RegisterComponent]
|
||||
internal sealed class ToolboxElectricalFillComponent : Component, IMapInit
|
||||
{
|
||||
[Dependency] private readonly IEntityManager _entityManager = default!;
|
||||
|
||||
public override string Name => "ToolboxElectricalFill";
|
||||
|
||||
void IMapInit.MapInit()
|
||||
{
|
||||
var storage = Owner.GetComponent<IStorageComponent>();
|
||||
var random = IoCManager.Resolve<IRobustRandom>();
|
||||
|
||||
void Spawn(string prototype)
|
||||
{
|
||||
storage.Insert(_entityManager.SpawnEntity(prototype, Owner.Transform.Coordinates));
|
||||
}
|
||||
|
||||
Spawn("Screwdriver");
|
||||
Spawn("Crowbar");
|
||||
Spawn("Wirecutter");
|
||||
Spawn("ApcExtensionCableStack");
|
||||
Spawn("MVWireStack");
|
||||
Spawn(random.Prob(0.05f) ? "GlovesYellow" : "HVWireStack");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
using Robust.Server.Interfaces.GameObjects;
|
||||
using Robust.Shared.GameObjects;
|
||||
using Robust.Shared.Interfaces.GameObjects;
|
||||
using Robust.Shared.Interfaces.Random;
|
||||
using Robust.Shared.IoC;
|
||||
using Robust.Shared.Random;
|
||||
|
||||
namespace Content.Server.GameObjects.Components.Items.Storage.Fill
|
||||
{
|
||||
[RegisterComponent]
|
||||
internal sealed class ToolboxEmergencyFillComponent : Component, IMapInit
|
||||
{
|
||||
[Dependency] private readonly IEntityManager _entityManager = default!;
|
||||
|
||||
public override string Name => "ToolboxEmergencyFill";
|
||||
|
||||
void IMapInit.MapInit()
|
||||
{
|
||||
var storage = Owner.GetComponent<IStorageComponent>();
|
||||
var random = IoCManager.Resolve<IRobustRandom>();
|
||||
|
||||
void Spawn(string prototype)
|
||||
{
|
||||
storage.Insert(_entityManager.SpawnEntity(prototype, Owner.Transform.Coordinates));
|
||||
}
|
||||
|
||||
Spawn("BreathMaskClothing");
|
||||
Spawn("BreathMaskClothing");
|
||||
Spawn("FoodChocolateBar");
|
||||
Spawn("FlashlightLantern");
|
||||
Spawn("FlashlightLantern");
|
||||
|
||||
Spawn(random.Prob(0.15f) ? "HarmonicaInstrument" : "FoodChocolateBar");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
using Robust.Server.Interfaces.GameObjects;
|
||||
using Robust.Shared.GameObjects;
|
||||
using Robust.Shared.Interfaces.GameObjects;
|
||||
using Robust.Shared.Interfaces.Random;
|
||||
using Robust.Shared.IoC;
|
||||
using Robust.Shared.Random;
|
||||
|
||||
namespace Content.Server.GameObjects.Components.Items.Storage.Fill
|
||||
{
|
||||
[RegisterComponent]
|
||||
internal sealed class ToolboxGoldFillComponent : Component, IMapInit
|
||||
{
|
||||
[Dependency] private readonly IEntityManager _entityManager = default!;
|
||||
|
||||
public override string Name => "ToolboxGoldFill";
|
||||
|
||||
void IMapInit.MapInit()
|
||||
{
|
||||
var storage = Owner.GetComponent<IStorageComponent>();
|
||||
var random = IoCManager.Resolve<IRobustRandom>();
|
||||
|
||||
void Spawn(string prototype)
|
||||
{
|
||||
storage.Insert(_entityManager.SpawnEntity(prototype, Owner.Transform.Coordinates));
|
||||
}
|
||||
|
||||
Spawn("GoldStack");
|
||||
Spawn("GoldStack");
|
||||
Spawn("GoldStack");
|
||||
Spawn("GoldStack");
|
||||
Spawn("GoldStack");
|
||||
|
||||
Spawn(random.Prob(0.05f) ? "DrinkGoldenCup" : "GoldStack");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,33 +0,0 @@
|
||||
using Robust.Server.Interfaces.GameObjects;
|
||||
using Robust.Shared.GameObjects;
|
||||
using Robust.Shared.Interfaces.GameObjects;
|
||||
using Robust.Shared.IoC;
|
||||
|
||||
namespace Content.Server.GameObjects.Components.Items.Storage.Fill
|
||||
{
|
||||
[RegisterComponent]
|
||||
internal sealed class UtilityBeltClothingFillComponent : Component, IMapInit
|
||||
{
|
||||
[Dependency] private readonly IEntityManager _entityManager = default!;
|
||||
|
||||
public override string Name => "UtilityBeltClothingFill";
|
||||
|
||||
void IMapInit.MapInit()
|
||||
{
|
||||
var storage = Owner.GetComponent<IStorageComponent>();
|
||||
|
||||
void Spawn(string prototype)
|
||||
{
|
||||
storage.Insert(_entityManager.SpawnEntity(prototype, Owner.Transform.Coordinates));
|
||||
}
|
||||
|
||||
Spawn("Crowbar");
|
||||
Spawn("Wrench");
|
||||
Spawn("Screwdriver");
|
||||
Spawn("Wirecutter");
|
||||
Spawn("Welder");
|
||||
Spawn("Multitool");
|
||||
Spawn("ApcExtensionCableStack");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Robust.Server.Interfaces.GameObjects;
|
||||
using Robust.Shared.GameObjects;
|
||||
using Robust.Shared.Interfaces.GameObjects;
|
||||
using Robust.Shared.Interfaces.Random;
|
||||
using Robust.Shared.Interfaces.Serialization;
|
||||
using Robust.Shared.IoC;
|
||||
using Robust.Shared.Random;
|
||||
using Robust.Shared.Serialization;
|
||||
using Logger = Robust.Shared.Log.Logger;
|
||||
|
||||
namespace Content.Server.GameObjects.Components.Items.Storage
|
||||
{
|
||||
[RegisterComponent]
|
||||
internal sealed class StorageFillComponent : Component, IMapInit
|
||||
{
|
||||
[Dependency] private readonly IEntityManager _entityManager;
|
||||
|
||||
public override string Name => "StorageFill";
|
||||
|
||||
private List<PrototypeItemData> _contents;
|
||||
|
||||
public override void ExposeData(ObjectSerializer serializer)
|
||||
{
|
||||
base.ExposeData(serializer);
|
||||
|
||||
serializer.DataField(ref _contents, "contents", new List<PrototypeItemData>());
|
||||
}
|
||||
|
||||
void IMapInit.MapInit()
|
||||
{
|
||||
if (_contents.Count == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!Owner.TryGetComponent(out IStorageComponent storage))
|
||||
{
|
||||
Logger.Error($"StorageFillComponent couldn't find any StorageComponent ({Owner})");
|
||||
return;
|
||||
}
|
||||
var random = IoCManager.Resolve<IRobustRandom>();
|
||||
|
||||
var alreadySpawnedGroups = new List<string>();
|
||||
foreach (var storageItem in _contents)
|
||||
{
|
||||
if (string.IsNullOrEmpty(storageItem.PrototypeName)) continue;
|
||||
if (string.IsNullOrEmpty(storageItem.GroupId) && alreadySpawnedGroups.Contains(storageItem.GroupId)) continue;
|
||||
|
||||
if (storageItem.SpawnProbability != 1f &&
|
||||
!random.Prob(storageItem.SpawnProbability))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
storage.Insert(_entityManager.SpawnEntity(storageItem.PrototypeName, Owner.Transform.Coordinates));
|
||||
if(string.IsNullOrEmpty(storageItem.GroupId)) alreadySpawnedGroups.Add(storageItem.GroupId);
|
||||
}
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
private struct PrototypeItemData : IExposeData
|
||||
{
|
||||
public string PrototypeName;
|
||||
public float SpawnProbability;
|
||||
public string GroupId;
|
||||
public int Amount;
|
||||
|
||||
public void ExposeData(ObjectSerializer serializer)
|
||||
{
|
||||
serializer.DataField(ref PrototypeName, "name", null);
|
||||
serializer.DataField(ref Amount, "amount", 1);
|
||||
serializer.DataField(ref SpawnProbability, "prob", 1f);
|
||||
serializer.DataField(ref GroupId, "orGroup", null);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5,7 +5,7 @@
|
||||
components:
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- BoxSurvival
|
||||
- name: BoxSurvival
|
||||
|
||||
- type: entity
|
||||
abstract: true
|
||||
@@ -14,7 +14,7 @@
|
||||
components:
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- BoxSurvival
|
||||
- name: BoxSurvival
|
||||
|
||||
- type: entity
|
||||
abstract: true
|
||||
@@ -23,9 +23,9 @@
|
||||
components:
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- BoxSurvival
|
||||
- Stunbaton
|
||||
- Flash
|
||||
- name: BoxSurvival
|
||||
- name: Stunbaton
|
||||
- name: Flash
|
||||
|
||||
- type: entity
|
||||
abstract: true
|
||||
@@ -34,7 +34,7 @@
|
||||
components:
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- BoxSurvival
|
||||
- name: BoxSurvival
|
||||
|
||||
- type: entity
|
||||
abstract: true
|
||||
@@ -43,9 +43,9 @@
|
||||
components:
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- BoxSurvival
|
||||
#- StationCharter
|
||||
#- TelescopicBaton
|
||||
- name: BoxSurvival
|
||||
#- name: StationCharter
|
||||
#- name: TelescopicBaton
|
||||
|
||||
- type: entity
|
||||
abstract: true
|
||||
@@ -54,4 +54,4 @@
|
||||
components:
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- BoxSurvival
|
||||
- name: BoxSurvival
|
||||
|
||||
@@ -3,4 +3,12 @@
|
||||
parent: UtilityBeltClothing
|
||||
suffix: Filled
|
||||
components:
|
||||
- type: UtilityBeltClothingFill
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- name: Crowbar
|
||||
- name: Wrench
|
||||
- name: Screwdriver
|
||||
- name: Wirecutter
|
||||
- name: Welder
|
||||
- name: Multitool
|
||||
- name: ApcExtensionCableStack
|
||||
|
||||
@@ -5,11 +5,8 @@
|
||||
components:
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- FlashlightLantern
|
||||
- FlashlightLantern
|
||||
- FlashlightLantern
|
||||
- FlashlightLantern
|
||||
- FlashlightLantern
|
||||
- name: FlashlightLantern
|
||||
amount: 5
|
||||
|
||||
- type: entity
|
||||
id: CrateLightBulb
|
||||
@@ -18,16 +15,8 @@
|
||||
components:
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- LightBulb
|
||||
- LightBulb
|
||||
- LightBulb
|
||||
- LightBulb
|
||||
- LightBulb
|
||||
- LightBulb
|
||||
- LightBulb
|
||||
- LightBulb
|
||||
- LightBulb
|
||||
- LightBulb
|
||||
- name: LightBulb
|
||||
amount: 10
|
||||
|
||||
- type: entity
|
||||
id: CrateFireExtinguisher
|
||||
@@ -36,9 +25,8 @@
|
||||
components:
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- FireExtinguisher
|
||||
- FireExtinguisher
|
||||
- FireExtinguisher
|
||||
- name: FireExtinguisher
|
||||
amount: 3
|
||||
|
||||
- type: entity
|
||||
id: CratePen
|
||||
@@ -47,16 +35,8 @@
|
||||
components:
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- Pen
|
||||
- Pen
|
||||
- Pen
|
||||
- Pen
|
||||
- Pen
|
||||
- Pen
|
||||
- Pen
|
||||
- Pen
|
||||
- Pen
|
||||
- Pen
|
||||
- name: Pen
|
||||
amount: 10
|
||||
|
||||
- type: entity
|
||||
id: CrateBikeHorn
|
||||
@@ -65,11 +45,8 @@
|
||||
components:
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- BikeHorn
|
||||
- BikeHorn
|
||||
- BikeHorn
|
||||
- BikeHorn
|
||||
- BikeHorn
|
||||
- name: BikeHorn
|
||||
amount: 5
|
||||
|
||||
- type: entity
|
||||
id: CrateCleaver
|
||||
@@ -78,11 +55,8 @@
|
||||
components:
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- ButchCleaver
|
||||
- ButchCleaver
|
||||
- ButchCleaver
|
||||
- ButchCleaver
|
||||
- ButchCleaver
|
||||
- name: ButchCleaver
|
||||
amount: 5
|
||||
|
||||
- type: entity
|
||||
id: CrateFuelTank
|
||||
@@ -91,7 +65,7 @@
|
||||
components:
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- WeldingFuelTank
|
||||
- name: WeldingFuelTank
|
||||
|
||||
- type: entity
|
||||
id: CrateMedicalScanner
|
||||
@@ -100,7 +74,7 @@
|
||||
components:
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- MedicalScanner
|
||||
- name: MedicalScanner
|
||||
|
||||
- type: entity
|
||||
id: CrateGlass
|
||||
@@ -109,7 +83,7 @@
|
||||
components:
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- GlassStack
|
||||
- name: GlassStack
|
||||
|
||||
- type: entity
|
||||
id: CrateCable
|
||||
@@ -118,4 +92,4 @@
|
||||
components:
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- CableStack1
|
||||
- name: CableStack1
|
||||
|
||||
@@ -4,21 +4,73 @@
|
||||
name: "custodial closet"
|
||||
description: "It's a storage unit for janitorial clothes and gear."
|
||||
components:
|
||||
- type: CustodialClosetFill
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- name: MopItem
|
||||
- name: MopBucket
|
||||
- name: WetFloorSign
|
||||
amount: 3
|
||||
- name: TrashBag
|
||||
amount: 2
|
||||
|
||||
- type: entity
|
||||
id: LockerToolFilled
|
||||
parent: LockerTool
|
||||
suffix: Filled
|
||||
components:
|
||||
- type: ToolLockerFill
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- name: OuterclothingHazard
|
||||
prob: 0.4
|
||||
- name: FlashlightLantern
|
||||
prob: 0.7
|
||||
- name: Screwdriver
|
||||
prob: 0.7
|
||||
- name: Wrench
|
||||
prob: 0.7
|
||||
- name: Welder
|
||||
prob: 0.7
|
||||
- name: Crowbar
|
||||
prob: 0.7
|
||||
- name: Wirecutter
|
||||
prob: 0.7
|
||||
- name: Multitool
|
||||
prob: 0.2
|
||||
- name: UtilityBeltClothing
|
||||
prob: 0.2
|
||||
- name: GlovesYellow
|
||||
prob: 0.05
|
||||
- name: HatHardhatRed
|
||||
prob: 0.4
|
||||
- name: ApcExtensionCableStack
|
||||
prob: 0.3
|
||||
- name: ApcExtensionCableStack
|
||||
prob: 0.3
|
||||
- name: ApcExtensionCableStack
|
||||
prob: 0.3
|
||||
|
||||
- type: entity
|
||||
id: LockerEmergencyFilledRandom
|
||||
parent: LockerEmergency
|
||||
suffix: Filled, Random
|
||||
components:
|
||||
- type: EmergencyClosetFill
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- name: ToolboxEmergencyFilled
|
||||
prob: 0.4
|
||||
- name: BreathMaskClothing
|
||||
prob: 0.4
|
||||
- name: BreathMaskClothing
|
||||
prob: 0.25
|
||||
# TODO: uncomment when we actually have these items.
|
||||
#- name: TankOxygenSmallFilled
|
||||
# prob: 0.4s
|
||||
#- name: TankOxygenSmallFilled
|
||||
# prob: 0.25
|
||||
#- name: MedkitOxygenFilled
|
||||
# prob: 0.25
|
||||
#- name: TankOxygenFilled
|
||||
# prob: 0.2
|
||||
|
||||
- type: entity
|
||||
id: LockerBoozeFilled
|
||||
|
||||
@@ -127,11 +127,11 @@
|
||||
sprite: Clothing/Back/Duffels/duffel_med.rsi
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- Hemostat
|
||||
- BoneSaw
|
||||
- Drill
|
||||
- Cautery
|
||||
- Retractor
|
||||
- Scalpel
|
||||
- name: Hemostat
|
||||
- name: BoneSaw
|
||||
- name: Drill
|
||||
- name: Cautery
|
||||
- name: Retractor
|
||||
- name: Scalpel
|
||||
- type: Storage
|
||||
capacity: 30
|
||||
|
||||
@@ -6,12 +6,8 @@
|
||||
components:
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- FoodDonkPocket
|
||||
- FoodDonkPocket
|
||||
- FoodDonkPocket
|
||||
- FoodDonkPocket
|
||||
- FoodDonkPocket
|
||||
- FoodDonkPocket
|
||||
- name: FoodDonkPocket
|
||||
amount: 6
|
||||
- type: Sprite
|
||||
sprite: Objects/Storage/donkpocket.rsi
|
||||
state: icon
|
||||
|
||||
@@ -6,18 +6,8 @@
|
||||
components:
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- LightBulb
|
||||
- LightBulb
|
||||
- LightBulb
|
||||
- LightBulb
|
||||
- LightBulb
|
||||
- LightBulb
|
||||
- LightBulb
|
||||
- LightBulb
|
||||
- LightBulb
|
||||
- LightBulb
|
||||
- LightBulb
|
||||
- LightBulb
|
||||
- name: LightBulb
|
||||
amount: 12
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box
|
||||
@@ -34,18 +24,8 @@
|
||||
components:
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- LightTube
|
||||
- LightTube
|
||||
- LightTube
|
||||
- LightTube
|
||||
- LightTube
|
||||
- LightTube
|
||||
- LightTube
|
||||
- LightTube
|
||||
- LightTube
|
||||
- LightTube
|
||||
- LightTube
|
||||
- LightTube
|
||||
- name: LightTube
|
||||
amount: 12
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box
|
||||
@@ -62,18 +42,8 @@
|
||||
components:
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- LightTube
|
||||
- LightTube
|
||||
- LightTube
|
||||
- LightTube
|
||||
- LightTube
|
||||
- LightTube
|
||||
- LightBulb
|
||||
- LightBulb
|
||||
- LightBulb
|
||||
- LightBulb
|
||||
- LightBulb
|
||||
- LightBulb
|
||||
- name: LightTube
|
||||
amount: 12
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box
|
||||
@@ -90,9 +60,8 @@
|
||||
components:
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- AssistantPDA
|
||||
- AssistantPDA
|
||||
- AssistantPDA
|
||||
- name: AssistantPDA
|
||||
amount: 3
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box
|
||||
@@ -111,10 +80,8 @@
|
||||
components:
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- MesonGlasses
|
||||
- MesonGlasses
|
||||
- MesonGlasses
|
||||
- MesonGlasses
|
||||
- name: MesonGlasses
|
||||
amount: 4
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box
|
||||
@@ -133,9 +100,9 @@
|
||||
components:
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- BreathMaskClothing
|
||||
#- O2 Canister
|
||||
#- Injector
|
||||
- name: BreathMaskClothing
|
||||
#- name: O2 Canister
|
||||
#- name: Injector
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box
|
||||
|
||||
@@ -6,12 +6,8 @@
|
||||
components:
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- Syringe
|
||||
- Syringe
|
||||
- Syringe
|
||||
- Syringe
|
||||
- Syringe
|
||||
- Syringe
|
||||
- name: Syringe
|
||||
amount: 6
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box
|
||||
@@ -30,10 +26,8 @@
|
||||
components:
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- MaskSterile
|
||||
- MaskSterile
|
||||
- MaskSterile
|
||||
- MaskSterile
|
||||
- name: MaskSterile
|
||||
amount: 4
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box
|
||||
@@ -52,10 +46,8 @@
|
||||
components:
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- GlovesLatex
|
||||
- GlovesLatex
|
||||
- GlovesLatex
|
||||
- GlovesLatex
|
||||
- name: GlovesLatex
|
||||
amount: 4
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box
|
||||
|
||||
@@ -6,12 +6,10 @@
|
||||
components:
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- Beaker
|
||||
- Beaker
|
||||
- Beaker
|
||||
- LargeBeaker
|
||||
- LargeBeaker
|
||||
- LargeBeaker
|
||||
- name: Beaker
|
||||
amount: 3
|
||||
- name: LargeBeaker
|
||||
amount: 3
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box
|
||||
|
||||
@@ -6,12 +6,8 @@
|
||||
components:
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- Handcuffs
|
||||
- Handcuffs
|
||||
- Handcuffs
|
||||
- Handcuffs
|
||||
- Handcuffs
|
||||
- Handcuffs
|
||||
- name: Handcuffs
|
||||
amount: 6
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box_security
|
||||
@@ -30,10 +26,8 @@
|
||||
components:
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- GrenadeFlashBang
|
||||
- GrenadeFlashBang
|
||||
- GrenadeFlashBang
|
||||
- GrenadeFlashBang
|
||||
- name: GrenadeFlashBang
|
||||
amount: 4
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box_security
|
||||
@@ -52,10 +46,8 @@
|
||||
components:
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- SecGlasses
|
||||
- SecGlasses
|
||||
- SecGlasses
|
||||
- SecGlasses
|
||||
- name: SecGlasses
|
||||
amount: 4
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box_security
|
||||
|
||||
@@ -15,9 +15,16 @@
|
||||
|
||||
- type: entity
|
||||
id: MedkitFilled
|
||||
suffix: Filled
|
||||
parent: Medkit
|
||||
components:
|
||||
- type: MedkitFill # 3 Ointment, 3 Roll of Gauze. TODO 1 Health Analyzer once it exists
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- name: Brutepack
|
||||
amount: 3
|
||||
- name: Ointment
|
||||
amount: 3
|
||||
# todo 1 Health Analyzer once it exists
|
||||
|
||||
- type: entity
|
||||
name: medical stack
|
||||
|
||||
@@ -32,7 +32,18 @@
|
||||
parent: ToolboxEmergency
|
||||
suffix: Filled
|
||||
components:
|
||||
- type: ToolboxEmergencyFill
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- name: BreathMaskClothing
|
||||
amount: 2
|
||||
- name: FoodChocolateBar
|
||||
- name: FlashlightLantern
|
||||
amount: 2
|
||||
- name: HarmonicaInstrument
|
||||
prob: 0.15
|
||||
orGroup: HarmonicaOrChocolate
|
||||
- name: FoodChocolateBar
|
||||
orGroup: HarmonicaOrChocolate
|
||||
|
||||
- type: entity
|
||||
name: mechanical toolbox
|
||||
@@ -70,7 +81,18 @@
|
||||
suffix: Filled
|
||||
parent: ToolboxElectrical
|
||||
components:
|
||||
- type: ToolboxElectricalFill
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- name: Screwdriver
|
||||
- name: Crowbar
|
||||
- name: Wirecutter
|
||||
- name: ApcExtensionCableStack
|
||||
- name: MVWireStack
|
||||
- name: GlovesYellow
|
||||
prob: 0.05
|
||||
orGroup: GlovesOrWires
|
||||
- name: HVWireStack
|
||||
orGroup: GlovesOrWires
|
||||
|
||||
- type: entity
|
||||
name: artistic toolbox
|
||||
@@ -123,4 +145,12 @@
|
||||
parent: ToolboxGolden
|
||||
suffix: Filled
|
||||
components:
|
||||
- type: ToolboxGoldFill
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- name: GoldStack
|
||||
amount: 5
|
||||
- name: DrinkGoldenCup
|
||||
prob: 0.05
|
||||
orGroup: CupOrGold
|
||||
- name: GoldStack
|
||||
orGroup: CupOrGold
|
||||
|
||||
Reference in New Issue
Block a user