Revert "Storage TEST MERGE" (#21258)
This commit is contained in:
@@ -1,15 +1,16 @@
|
||||
using System.Numerics;
|
||||
using Content.Client.Message;
|
||||
using Robust.Client.GameObjects;
|
||||
using Robust.Client.Graphics;
|
||||
using Robust.Client.UserInterface.Controls;
|
||||
using Robust.Client.UserInterface.CustomControls;
|
||||
using Content.Client.Stylesheets;
|
||||
using Content.Client.UserInterface.Controls;
|
||||
using Content.Shared.IdentityManagement;
|
||||
using Content.Shared.Item;
|
||||
using Content.Shared.Stacks;
|
||||
using Content.Shared.Storage;
|
||||
using Content.Shared.Storage.EntitySystems;
|
||||
using Robust.Client.UserInterface;
|
||||
using Robust.Shared.Containers;
|
||||
using static Robust.Client.UserInterface.Controls.BoxContainer;
|
||||
using Direction = Robust.Shared.Maths.Direction;
|
||||
|
||||
@@ -22,9 +23,7 @@ namespace Content.Client.Storage.UI
|
||||
{
|
||||
private readonly IEntityManager _entityManager;
|
||||
|
||||
private readonly SharedStorageSystem _storage;
|
||||
|
||||
private readonly RichTextLabel _information;
|
||||
private readonly Label _information;
|
||||
public readonly ContainerButton StorageContainerButton;
|
||||
public readonly ListContainer EntityList;
|
||||
private readonly StyleBoxFlat _hoveredBox = new() { BackgroundColor = Color.Black.WithAlpha(0.35f) };
|
||||
@@ -33,7 +32,6 @@ namespace Content.Client.Storage.UI
|
||||
public StorageWindow(IEntityManager entityManager)
|
||||
{
|
||||
_entityManager = entityManager;
|
||||
_storage = _entityManager.System<SharedStorageSystem>();
|
||||
SetSize = new Vector2(240, 320);
|
||||
Title = Loc.GetString("comp-storage-window-title");
|
||||
RectClipContent = true;
|
||||
@@ -62,14 +60,11 @@ namespace Content.Client.Storage.UI
|
||||
|
||||
StorageContainerButton.AddChild(vBox);
|
||||
|
||||
_information = new RichTextLabel
|
||||
_information = new Label
|
||||
{
|
||||
Text = Loc.GetString("comp-storage-window-volume", ("itemCount", 0), ("usedVolume", 0), ("maxVolume", 0)),
|
||||
VerticalAlignment = VAlignment.Center
|
||||
};
|
||||
_information.SetMessage(Loc.GetString("comp-storage-window-volume",
|
||||
("itemCount", 0),
|
||||
("maxCount", 0),
|
||||
("size", SharedItemSystem.GetItemSizeLocale(ItemSize.Normal))));
|
||||
|
||||
vBox.AddChild(_information);
|
||||
|
||||
@@ -106,23 +101,15 @@ namespace Content.Client.Storage.UI
|
||||
|
||||
EntityList.PopulateList(list);
|
||||
|
||||
SetStorageInformation((entity, component));
|
||||
}
|
||||
|
||||
private void SetStorageInformation(Entity<StorageComponent> uid)
|
||||
// Sets information about entire storage container current capacity
|
||||
if (component.StorageCapacityMax != 0)
|
||||
{
|
||||
if (uid.Comp.MaxSlots != uid.Comp.Container.ContainedEntities.Count
|
||||
&& _storage.GetCumulativeItemSizes(uid, uid.Comp) == _storage.GetMaxTotalWeight((uid, uid.Comp)))
|
||||
{
|
||||
_information.SetMarkup(Loc.GetString("comp-storage-window-volume-full",
|
||||
("size", SharedItemSystem.GetItemSizeLocale(_storage.GetMaxItemSize((uid, uid.Comp))))));
|
||||
_information.Text = Loc.GetString("comp-storage-window-volume", ("itemCount", storedCount),
|
||||
("usedVolume", component.StorageUsed), ("maxVolume", component.StorageCapacityMax));
|
||||
}
|
||||
else
|
||||
{
|
||||
_information.SetMarkup(Loc.GetString("comp-storage-window-volume",
|
||||
("itemCount", uid.Comp.Container.ContainedEntities.Count),
|
||||
("maxCount", uid.Comp.MaxSlots),
|
||||
("size", SharedItemSystem.GetItemSizeLocale(_storage.GetMaxItemSize((uid, uid.Comp))))));
|
||||
_information.Text = Loc.GetString("comp-storage-window-volume-unlimited", ("itemCount", storedCount));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -135,9 +122,10 @@ namespace Content.Client.Storage.UI
|
||||
|| !_entityManager.EntityExists(entity))
|
||||
return;
|
||||
|
||||
_entityManager.TryGetComponent(entity, out StackComponent? stack);
|
||||
_entityManager.TryGetComponent(entity, out ItemComponent? item);
|
||||
_entityManager.TryGetComponent(entity, out StackComponent? stack);
|
||||
var count = stack?.Count ?? 1;
|
||||
var size = item?.Size;
|
||||
|
||||
var spriteView = new SpriteView
|
||||
{
|
||||
@@ -159,14 +147,12 @@ namespace Content.Client.Storage.UI
|
||||
HorizontalExpand = true,
|
||||
ClipText = true,
|
||||
Text = _entityManager.GetComponent<MetaDataComponent>(Identity.Entity(entity, _entityManager)).EntityName +
|
||||
(count > 1 ? $" x {count}" : string.Empty)
|
||||
(count > 1 ? $" x {count}" : string.Empty),
|
||||
},
|
||||
new Label
|
||||
{
|
||||
Align = Label.AlignMode.Right,
|
||||
Text = item?.Size != null
|
||||
? SharedItemSystem.GetItemSizeLocale(item.Size)
|
||||
: Loc.GetString("comp-storage-no-item-size")
|
||||
Text = size.ToString() ?? Loc.GetString("comp-storage-no-item-size"),
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -26,7 +26,7 @@ namespace Content.IntegrationTests.Tests
|
||||
- type: Clothing
|
||||
slots: [innerclothing]
|
||||
- type: Item
|
||||
size: Tiny
|
||||
size: 5
|
||||
|
||||
- type: entity
|
||||
name: IDCardDummy
|
||||
@@ -36,7 +36,7 @@ namespace Content.IntegrationTests.Tests
|
||||
slots:
|
||||
- idcard
|
||||
- type: Item
|
||||
size: Tiny
|
||||
size: 5
|
||||
- type: IdCard
|
||||
|
||||
- type: entity
|
||||
@@ -44,14 +44,14 @@ namespace Content.IntegrationTests.Tests
|
||||
id: FlashlightDummy
|
||||
components:
|
||||
- type: Item
|
||||
size: Tiny
|
||||
size: 5
|
||||
|
||||
- type: entity
|
||||
name: ToolboxDummy
|
||||
id: ToolboxDummy
|
||||
components:
|
||||
- type: Item
|
||||
size: Huge
|
||||
size: 9999
|
||||
";
|
||||
[Test]
|
||||
public async Task Test()
|
||||
|
||||
39
Content.IntegrationTests/Tests/StackTest.cs
Normal file
39
Content.IntegrationTests/Tests/StackTest.cs
Normal file
@@ -0,0 +1,39 @@
|
||||
using Content.Shared.Item;
|
||||
using Content.Shared.Stacks;
|
||||
using Robust.Shared.GameObjects;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.IntegrationTests.Tests;
|
||||
|
||||
[TestFixture]
|
||||
public sealed class StackTest
|
||||
{
|
||||
[Test]
|
||||
public async Task StackCorrectItemSize()
|
||||
{
|
||||
await using var pair = await PoolManager.GetServerClient();
|
||||
var server = pair.Server;
|
||||
|
||||
var protoManager = server.ResolveDependency<IPrototypeManager>();
|
||||
var compFact = server.ResolveDependency<IComponentFactory>();
|
||||
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
foreach (var entity in PoolManager.GetPrototypesWithComponent<StackComponent>(server))
|
||||
{
|
||||
if (!entity.TryGetComponent<StackComponent>(out var stackComponent, compFact) ||
|
||||
!entity.TryGetComponent<ItemComponent>(out var itemComponent, compFact))
|
||||
continue;
|
||||
|
||||
if (!protoManager.TryIndex<StackPrototype>(stackComponent.StackTypeId, out var stackProto) ||
|
||||
stackProto.ItemSize == null)
|
||||
continue;
|
||||
|
||||
var expectedSize = stackProto.ItemSize * stackComponent.Count;
|
||||
Assert.That(itemComponent.Size, Is.EqualTo(expectedSize), $"Prototype id: {entity.ID} has an item size of {itemComponent.Size} but expected size of {expectedSize}.");
|
||||
}
|
||||
});
|
||||
|
||||
await pair.CleanReturnAsync();
|
||||
}
|
||||
}
|
||||
@@ -3,12 +3,11 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Content.Server.Storage.Components;
|
||||
using Content.Shared.Item;
|
||||
using Content.Shared.Prototypes;
|
||||
using Content.Shared.Storage;
|
||||
using Content.Shared.Storage.Components;
|
||||
using Content.Shared.Storage.EntitySystems;
|
||||
using Robust.Shared.GameObjects;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.UnitTesting;
|
||||
|
||||
namespace Content.IntegrationTests.Tests
|
||||
{
|
||||
@@ -33,11 +32,9 @@ namespace Content.IntegrationTests.Tests
|
||||
{
|
||||
if (!proto.TryGetComponent<StorageComponent>("Storage", out var storage) ||
|
||||
storage.Whitelist != null ||
|
||||
storage.MaxItemSize == null ||
|
||||
!proto.TryGetComponent<ItemComponent>("Item", out var item))
|
||||
continue;
|
||||
!proto.TryGetComponent<ItemComponent>("Item", out var item)) continue;
|
||||
|
||||
Assert.That(storage.MaxItemSize.Value, Is.LessThan(item.Size), $"Found storage arbitrage on {proto.ID}");
|
||||
Assert.That(storage.StorageCapacityMax, Is.LessThanOrEqualTo(item.Size), $"Found storage arbitrage on {proto.ID}");
|
||||
}
|
||||
});
|
||||
await pair.CleanReturnAsync();
|
||||
@@ -85,85 +82,31 @@ namespace Content.IntegrationTests.Tests
|
||||
{
|
||||
foreach (var proto in PoolManager.GetPrototypesWithComponent<StorageFillComponent>(server))
|
||||
{
|
||||
if (proto.HasComponent<EntityStorageComponent>(compFact))
|
||||
continue;
|
||||
int capacity;
|
||||
var isEntStorage = false;
|
||||
|
||||
if (!proto.TryGetComponent<StorageComponent>("Storage", out var storage))
|
||||
if (proto.TryGetComponent<StorageComponent>("Storage", out var storage))
|
||||
{
|
||||
capacity = storage.StorageCapacityMax;
|
||||
}
|
||||
else if (proto.TryGetComponent<EntityStorageComponent>("EntityStorage", out var entStorage))
|
||||
{
|
||||
capacity = entStorage.Capacity;
|
||||
isEntStorage = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
Assert.Fail($"Entity {proto.ID} has storage-fill without a storage component!");
|
||||
continue;
|
||||
}
|
||||
|
||||
proto.TryGetComponent<ItemComponent>("Item", out var item);
|
||||
|
||||
var maxSize = storage.MaxItemSize ??
|
||||
(item?.Size == null
|
||||
? SharedStorageSystem.DefaultStorageMaxItemSize
|
||||
: (ItemSize) Math.Max(0, (int) item.Size - 1));
|
||||
|
||||
var capacity = storage.MaxTotalWeight ??
|
||||
storage.MaxSlots * SharedItemSystem.GetItemSizeWeight(storage.MaxItemSize ?? maxSize);
|
||||
|
||||
var fill = (StorageFillComponent) proto.Components[id].Component;
|
||||
var size = GetFillSize(fill, false, protoMan);
|
||||
|
||||
var size = GetFillSize(fill, isEntStorage);
|
||||
Assert.That(size, Is.LessThanOrEqualTo(capacity), $"{proto.ID} storage fill is too large.");
|
||||
Assert.That(GetFillSize(fill, true, protoMan), Is.LessThanOrEqualTo(storage.MaxSlots), $"{proto.ID} storage fill has too many items.");
|
||||
|
||||
foreach (var entry in fill.Contents)
|
||||
{
|
||||
if (entry.PrototypeId == null)
|
||||
continue;
|
||||
|
||||
if (!protoMan.TryIndex<EntityPrototype>(entry.PrototypeId, out var fillItem))
|
||||
continue;
|
||||
|
||||
if (!fillItem.TryGetComponent<ItemComponent>("Item", out var entryItem))
|
||||
continue;
|
||||
|
||||
Assert.That(entryItem.Size, Is.LessThanOrEqualTo(maxSize),
|
||||
$"Entity {proto.ID} has storage-fill item, {entry.PrototypeId}, that is too large");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
await pair.CleanReturnAsync();
|
||||
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task TestSufficientSpaceForEntityStorageFill()
|
||||
{
|
||||
await using var pair = await PoolManager.GetServerClient();
|
||||
var server = pair.Server;
|
||||
|
||||
var protoMan = server.ResolveDependency<IPrototypeManager>();
|
||||
var compFact = server.ResolveDependency<IComponentFactory>();
|
||||
var id = compFact.GetComponentName(typeof(StorageFillComponent));
|
||||
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
foreach (var proto in PoolManager.GetPrototypesWithComponent<StorageFillComponent>(server))
|
||||
{
|
||||
if (proto.HasComponent<StorageComponent>(compFact))
|
||||
continue;
|
||||
|
||||
if (!proto.TryGetComponent<EntityStorageComponent>("EntityStorage", out var entStorage))
|
||||
{
|
||||
Assert.Fail($"Entity {proto.ID} has storage-fill without a storage component!");
|
||||
continue;
|
||||
}
|
||||
|
||||
var fill = (StorageFillComponent) proto.Components[id].Component;
|
||||
var size = GetFillSize(fill, true, protoMan);
|
||||
Assert.That(size, Is.LessThanOrEqualTo(entStorage.Capacity),
|
||||
$"{proto.ID} storage fill is too large.");
|
||||
}
|
||||
});
|
||||
await pair.CleanReturnAsync();
|
||||
}
|
||||
|
||||
private int GetEntrySize(EntitySpawnEntry entry, bool getCount, IPrototypeManager protoMan)
|
||||
int GetEntrySize(EntitySpawnEntry entry, bool isEntStorage)
|
||||
{
|
||||
if (entry.PrototypeId == null)
|
||||
return 0;
|
||||
@@ -174,23 +117,23 @@ namespace Content.IntegrationTests.Tests
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (getCount)
|
||||
if (isEntStorage)
|
||||
return entry.Amount;
|
||||
|
||||
if (proto.TryGetComponent<ItemComponent>("Item", out var item))
|
||||
return SharedItemSystem.GetItemSizeWeight(item.Size) * entry.Amount;
|
||||
return item.Size * entry.Amount;
|
||||
|
||||
Assert.Fail($"Prototype is missing item comp: {entry.PrototypeId}");
|
||||
return 0;
|
||||
}
|
||||
|
||||
private int GetFillSize(StorageFillComponent fill, bool getCount, IPrototypeManager protoMan)
|
||||
int GetFillSize(StorageFillComponent fill, bool isEntStorage)
|
||||
{
|
||||
var totalSize = 0;
|
||||
var groups = new Dictionary<string, int>();
|
||||
foreach (var entry in fill.Contents)
|
||||
{
|
||||
var size = GetEntrySize(entry, getCount, protoMan);
|
||||
var size = GetEntrySize(entry, isEntStorage);
|
||||
|
||||
if (entry.GroupId == null)
|
||||
totalSize += size;
|
||||
@@ -200,5 +143,8 @@ namespace Content.IntegrationTests.Tests
|
||||
|
||||
return totalSize + groups.Values.Sum();
|
||||
}
|
||||
|
||||
await pair.CleanReturnAsync();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -180,13 +180,14 @@ namespace Content.Server.Chemistry.EntitySystems
|
||||
var user = message.Session.AttachedEntity;
|
||||
var maybeContainer = _itemSlotsSystem.GetItemOrNull(chemMaster, SharedChemMaster.OutputSlotName);
|
||||
if (maybeContainer is not { Valid: true } container
|
||||
|| !TryComp(container, out StorageComponent? storage))
|
||||
|| !TryComp(container, out StorageComponent? storage)
|
||||
|| storage.Container is null)
|
||||
{
|
||||
return; // output can't fit pills
|
||||
}
|
||||
|
||||
// Ensure the number is valid.
|
||||
if (message.Number == 0 || !_storageSystem.HasSpace((container, storage)))
|
||||
if (message.Number == 0 || message.Number > storage.StorageCapacityMax - storage.StorageUsed)
|
||||
return;
|
||||
|
||||
// Ensure the amount is valid.
|
||||
@@ -344,7 +345,7 @@ namespace Content.Server.Chemistry.EntitySystems
|
||||
}
|
||||
}
|
||||
|
||||
if (!TryComp(container, out StorageComponent? storage) || storage.Container == null)
|
||||
if (!TryComp(container, out StorageComponent? storage))
|
||||
return null;
|
||||
|
||||
var pills = storage.Container?.ContainedEntities.Select((Func<EntityUid, (string, FixedPoint2 quantity)>) (pill =>
|
||||
@@ -357,7 +358,7 @@ namespace Content.Server.Chemistry.EntitySystems
|
||||
if (pills == null)
|
||||
return null;
|
||||
|
||||
return new ContainerInfo(name, storage.Container!.ContainedEntities.Count, storage.MaxSlots)
|
||||
return new ContainerInfo(name, storage.StorageUsed, storage.StorageCapacityMax)
|
||||
{
|
||||
Entities = pills
|
||||
};
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
using System.Linq;
|
||||
using Content.Server.Body.Components;
|
||||
using Content.Server.Body.Systems;
|
||||
using Content.Server.Inventory;
|
||||
@@ -123,7 +122,7 @@ public sealed class FoodSystem : EntitySystem
|
||||
return (false, false);
|
||||
|
||||
// Check for used storage on the food item
|
||||
if (TryComp<StorageComponent>(food, out var storageState) && storageState.Container.ContainedEntities.Any())
|
||||
if (TryComp<StorageComponent>(food, out var storageState) && storageState.StorageUsed != 0)
|
||||
{
|
||||
_popup.PopupEntity(Loc.GetString("food-has-used-storage", ("food", food)), user, user);
|
||||
return (false, true);
|
||||
|
||||
@@ -19,7 +19,7 @@ namespace Content.Server.Storage.Components
|
||||
/// Max item size that can be fitted into secret stash.
|
||||
/// </summary>
|
||||
[DataField("maxItemSize")]
|
||||
public ItemSize MaxItemSize = ItemSize.Small;
|
||||
public int MaxItemSize = (int) ReferenceSizes.Pocket;
|
||||
|
||||
/// <summary>
|
||||
/// IC secret stash name. For example "the toilet cistern".
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using Content.Shared.Rounding;
|
||||
using Content.Shared.Storage;
|
||||
using Content.Shared.Storage.Components;
|
||||
using Robust.Server.GameObjects;
|
||||
using Robust.Shared.Containers;
|
||||
|
||||
namespace Content.Server.Storage.EntitySystems;
|
||||
@@ -12,12 +13,12 @@ public sealed class StorageFillVisualizerSystem : EntitySystem
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
SubscribeLocalEvent<StorageFillVisualizerComponent, ComponentStartup>(OnStartup);
|
||||
SubscribeLocalEvent<StorageFillVisualizerComponent, ComponentInit>(OnInit);
|
||||
SubscribeLocalEvent<StorageFillVisualizerComponent, EntInsertedIntoContainerMessage>(OnInserted);
|
||||
SubscribeLocalEvent<StorageFillVisualizerComponent, EntRemovedFromContainerMessage>(OnRemoved);
|
||||
}
|
||||
|
||||
private void OnStartup(EntityUid uid, StorageFillVisualizerComponent component, ComponentStartup args)
|
||||
private void OnInit(EntityUid uid, StorageFillVisualizerComponent component, ComponentInit args)
|
||||
{
|
||||
UpdateAppearance(uid, component: component);
|
||||
}
|
||||
@@ -41,7 +42,7 @@ public sealed class StorageFillVisualizerSystem : EntitySystem
|
||||
if (component.MaxFillLevels < 1)
|
||||
return;
|
||||
|
||||
var level = ContentHelpers.RoundToEqualLevels(storage.Container.ContainedEntities.Count, storage.MaxSlots, component.MaxFillLevels);
|
||||
var level = ContentHelpers.RoundToEqualLevels(storage.StorageUsed, storage.StorageCapacityMax, component.MaxFillLevels);
|
||||
_appearance.SetData(uid, StorageFillVisuals.FillLevel, level, appearance);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -98,7 +98,7 @@ public sealed class EnergySwordSystem : EntitySystem
|
||||
{
|
||||
if (TryComp(uid, out ItemComponent? item))
|
||||
{
|
||||
_item.SetSize(uid, ItemSize.Small, item);
|
||||
_item.SetSize(uid, 5, item);
|
||||
}
|
||||
|
||||
if (TryComp<DisarmMalusComponent>(uid, out var malus))
|
||||
@@ -125,7 +125,7 @@ public sealed class EnergySwordSystem : EntitySystem
|
||||
{
|
||||
if (TryComp(uid, out ItemComponent? item))
|
||||
{
|
||||
_item.SetSize(uid, ItemSize.Huge, item);
|
||||
_item.SetSize(uid, 9999, item);
|
||||
}
|
||||
|
||||
if (comp.IsSharp)
|
||||
|
||||
@@ -264,7 +264,7 @@ public abstract partial class InventorySystem
|
||||
if (slotDefinition.DependsOn != null && !TryGetSlotEntity(target, slotDefinition.DependsOn, out _, inventory))
|
||||
return false;
|
||||
|
||||
var fittingInPocket = slotDefinition.SlotFlags.HasFlag(SlotFlags.POCKET) && item is { Size: <= ItemSize.Small };
|
||||
var fittingInPocket = slotDefinition.SlotFlags.HasFlag(SlotFlags.POCKET) && item is { Size: <= (int) ReferenceSizes.Pocket };
|
||||
if (clothing == null && !fittingInPocket
|
||||
|| clothing != null && !clothing.Slots.HasFlag(slotDefinition.SlotFlags) && !fittingInPocket)
|
||||
{
|
||||
|
||||
@@ -13,17 +13,18 @@ namespace Content.Shared.Item;
|
||||
[Access(typeof(SharedItemSystem))]
|
||||
public sealed partial class ItemComponent : Component
|
||||
{
|
||||
[DataField, ViewVariables(VVAccess.ReadWrite)]
|
||||
[Access(typeof(SharedItemSystem))]
|
||||
public ItemSize Size = ItemSize.Small;
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
[DataField("size")]
|
||||
[Access(typeof(SharedItemSystem), Other = AccessPermissions.ReadExecute)]
|
||||
public int Size = 5;
|
||||
|
||||
[Access(typeof(SharedItemSystem))]
|
||||
[DataField]
|
||||
[DataField("inhandVisuals")]
|
||||
public Dictionary<HandLocation, List<PrototypeLayerData>> InhandVisuals = new();
|
||||
|
||||
[Access(typeof(SharedItemSystem))]
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
[DataField]
|
||||
[DataField("heldPrefix")]
|
||||
public string? HeldPrefix;
|
||||
|
||||
/// <summary>
|
||||
@@ -38,10 +39,10 @@ public sealed partial class ItemComponent : Component
|
||||
[Serializable, NetSerializable]
|
||||
public sealed class ItemComponentState : ComponentState
|
||||
{
|
||||
public ItemSize Size { get; }
|
||||
public int Size { get; }
|
||||
public string? HeldPrefix { get; }
|
||||
|
||||
public ItemComponentState(ItemSize size, string? heldPrefix)
|
||||
public ItemComponentState(int size, string? heldPrefix)
|
||||
{
|
||||
Size = size;
|
||||
HeldPrefix = heldPrefix;
|
||||
@@ -65,43 +66,6 @@ public sealed class VisualsChangedEvent : EntityEventArgs
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Abstracted sizes for items.
|
||||
/// Used to determine what can fit into inventories.
|
||||
/// </summary>
|
||||
public enum ItemSize
|
||||
{
|
||||
/// <summary>
|
||||
/// Items that can be held completely in one's hand.
|
||||
/// </summary>
|
||||
Tiny = 1,
|
||||
|
||||
/// <summary>
|
||||
/// Items that can fit inside of a standard pocket.
|
||||
/// </summary>
|
||||
Small = 2,
|
||||
|
||||
/// <summary>
|
||||
/// Items that can fit inside of a standard bag.
|
||||
/// </summary>
|
||||
Normal = 3,
|
||||
|
||||
/// <summary>
|
||||
/// Items that are too large to fit inside of standard bags, but can worn in exterior slots or placed in custom containers.
|
||||
/// </summary>
|
||||
Large = 4,
|
||||
|
||||
/// <summary>
|
||||
/// Items that are too large to place inside of any kind of container.
|
||||
/// </summary>
|
||||
Huge = 5,
|
||||
|
||||
/// <summary>
|
||||
/// Picture furry gf
|
||||
/// </summary>
|
||||
Ginormous = 6
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Reference sizes for common containers and items.
|
||||
/// </summary>
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
using Content.Shared.Item;
|
||||
using Robust.Shared.Audio;
|
||||
using Robust.Shared.GameStates;
|
||||
|
||||
@@ -21,11 +20,11 @@ public sealed partial class ItemToggleComponent : Component
|
||||
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
[DataField("offSize")]
|
||||
public ItemSize OffSize = ItemSize.Small;
|
||||
public int OffSize = 1;
|
||||
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
[DataField("onSize")]
|
||||
public ItemSize OnSize = ItemSize.Huge;
|
||||
public int OnSize = 9999;
|
||||
}
|
||||
|
||||
[ByRefEvent]
|
||||
|
||||
@@ -1,27 +1,23 @@
|
||||
using Content.Shared.CombatMode;
|
||||
using Content.Shared.Hands.EntitySystems;
|
||||
using Content.Shared.Interaction;
|
||||
using Content.Shared.Stacks;
|
||||
using Content.Shared.Verbs;
|
||||
using Content.Shared.Examine;
|
||||
using JetBrains.Annotations;
|
||||
using Robust.Shared.Containers;
|
||||
using Robust.Shared.GameStates;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Utility;
|
||||
|
||||
namespace Content.Shared.Item;
|
||||
|
||||
public abstract class SharedItemSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly IPrototypeManager _prototype = default!;
|
||||
[Dependency] private readonly SharedHandsSystem _handsSystem = default!;
|
||||
[Dependency] private readonly SharedCombatModeSystem _combatMode = default!;
|
||||
[Dependency] protected readonly SharedContainerSystem Container = default!;
|
||||
|
||||
public const int ItemSizeWeightTiny = 1;
|
||||
public const int ItemSizeWeightSmall = 2;
|
||||
public const int ItemSizeWeightNormal = 4;
|
||||
public const int ItemSizeWeightLarge = 8;
|
||||
public const int ItemSizeWeightHuge = 16;
|
||||
public const int ItemSizeWeightGinormous = 32;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
@@ -37,13 +33,13 @@ public abstract class SharedItemSystem : EntitySystem
|
||||
|
||||
#region Public API
|
||||
|
||||
public void SetSize(EntityUid uid, ItemSize size, ItemComponent? component = null)
|
||||
public void SetSize(EntityUid uid, int size, ItemComponent? component = null)
|
||||
{
|
||||
if (!Resolve(uid, ref component, false))
|
||||
return;
|
||||
|
||||
component.Size = size;
|
||||
Dirty(uid, component);
|
||||
Dirty(component);
|
||||
}
|
||||
|
||||
public void SetHeldPrefix(EntityUid uid, string? heldPrefix, ItemComponent? component = null)
|
||||
@@ -55,7 +51,7 @@ public abstract class SharedItemSystem : EntitySystem
|
||||
return;
|
||||
|
||||
component.HeldPrefix = heldPrefix;
|
||||
Dirty(uid, component);
|
||||
Dirty(component);
|
||||
VisualsChanged(uid);
|
||||
}
|
||||
|
||||
@@ -71,7 +67,7 @@ public abstract class SharedItemSystem : EntitySystem
|
||||
item.InhandVisuals = otherItem.InhandVisuals;
|
||||
item.HeldPrefix = otherItem.HeldPrefix;
|
||||
|
||||
Dirty(uid, item);
|
||||
Dirty(item);
|
||||
VisualsChanged(uid);
|
||||
}
|
||||
|
||||
@@ -87,7 +83,14 @@ public abstract class SharedItemSystem : EntitySystem
|
||||
|
||||
protected virtual void OnStackCountChanged(EntityUid uid, ItemComponent component, StackCountChangedEvent args)
|
||||
{
|
||||
if (!TryComp<StackComponent>(uid, out var stack))
|
||||
return;
|
||||
|
||||
if (!_prototype.TryIndex<StackPrototype>(stack.StackTypeId, out var stackProto) ||
|
||||
stackProto.ItemSize is not { } size)
|
||||
return;
|
||||
|
||||
SetSize(uid, args.NewCount * size, component);
|
||||
}
|
||||
|
||||
private void OnHandleState(EntityUid uid, ItemComponent component, ref ComponentHandleState args)
|
||||
@@ -132,7 +135,7 @@ public abstract class SharedItemSystem : EntitySystem
|
||||
private void OnExamine(EntityUid uid, ItemComponent component, ExaminedEvent args)
|
||||
{
|
||||
args.PushMarkup(Loc.GetString("item-component-on-examine-size",
|
||||
("size", GetItemSizeLocale(component.Size))));
|
||||
("size", component.Size)));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -145,32 +148,4 @@ public abstract class SharedItemSystem : EntitySystem
|
||||
public virtual void VisualsChanged(EntityUid owner)
|
||||
{
|
||||
}
|
||||
|
||||
[PublicAPI]
|
||||
public static string GetItemSizeLocale(ItemSize size)
|
||||
{
|
||||
return Robust.Shared.Localization.Loc.GetString($"item-component-size-{size.ToString()}");
|
||||
}
|
||||
|
||||
[PublicAPI]
|
||||
public static int GetItemSizeWeight(ItemSize size)
|
||||
{
|
||||
switch (size)
|
||||
{
|
||||
case ItemSize.Tiny:
|
||||
return ItemSizeWeightTiny;
|
||||
case ItemSize.Small:
|
||||
return ItemSizeWeightSmall;
|
||||
case ItemSize.Normal:
|
||||
return ItemSizeWeightNormal;
|
||||
case ItemSize.Large:
|
||||
return ItemSizeWeightLarge;
|
||||
case ItemSize.Huge:
|
||||
return ItemSizeWeightHuge;
|
||||
case ItemSize.Ginormous:
|
||||
return ItemSizeWeightGinormous;
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException(nameof(size), size, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
using Content.Server.Storage.Components;
|
||||
using Content.Shared.Hands;
|
||||
using Content.Shared.Inventory;
|
||||
using Content.Shared.Stacks;
|
||||
using Robust.Shared.Map;
|
||||
using Robust.Shared.Physics.Components;
|
||||
using Robust.Shared.Player;
|
||||
using Robust.Shared.Timing;
|
||||
|
||||
namespace Content.Shared.Storage.EntitySystems;
|
||||
@@ -53,7 +56,7 @@ public sealed class MagnetPickupSystem : EntitySystem
|
||||
comp.NextScan += ScanDelay;
|
||||
|
||||
// No space
|
||||
if (!_storage.HasSpace((uid, storage)))
|
||||
if (storage.StorageUsed >= storage.StorageCapacityMax)
|
||||
continue;
|
||||
|
||||
if (!_inventory.TryGetContainingSlot(uid, out var slotDef))
|
||||
|
||||
@@ -4,6 +4,7 @@ using Content.Shared.CombatMode;
|
||||
using Content.Shared.Containers.ItemSlots;
|
||||
using Content.Shared.Destructible;
|
||||
using Content.Shared.DoAfter;
|
||||
using Content.Shared.Hands;
|
||||
using Content.Shared.Hands.Components;
|
||||
using Content.Shared.Hands.EntitySystems;
|
||||
using Content.Shared.Implants.Components;
|
||||
@@ -45,8 +46,6 @@ public abstract class SharedStorageSystem : EntitySystem
|
||||
private EntityQuery<StackComponent> _stackQuery;
|
||||
private EntityQuery<TransformComponent> _xformQuery;
|
||||
|
||||
public const ItemSize DefaultStorageMaxItemSize = ItemSize.Normal;
|
||||
|
||||
/// <inheritdoc />
|
||||
public override void Initialize()
|
||||
{
|
||||
@@ -90,7 +89,6 @@ public abstract class SharedStorageSystem : EntitySystem
|
||||
{
|
||||
// TODO: I had this.
|
||||
// We can get states being applied before the container is ready.
|
||||
// ReSharper disable once ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract
|
||||
if (component.Container == default)
|
||||
return;
|
||||
|
||||
@@ -231,7 +229,7 @@ public abstract class SharedStorageSystem : EntitySystem
|
||||
return;
|
||||
}
|
||||
|
||||
if (_xformQuery.TryGetComponent(uid, out var transformOwner) && TryComp<TransformComponent>(target, out var transformEnt))
|
||||
if (TryComp<TransformComponent>(uid, out var transformOwner) && TryComp<TransformComponent>(target, out var transformEnt))
|
||||
{
|
||||
var parent = transformOwner.ParentUid;
|
||||
|
||||
@@ -241,7 +239,7 @@ public abstract class SharedStorageSystem : EntitySystem
|
||||
_transform
|
||||
);
|
||||
|
||||
if (PlayerInsertEntityInWorld((uid, storageComp), args.User, target))
|
||||
if (PlayerInsertEntityInWorld(uid, args.User, target, storageComp))
|
||||
{
|
||||
RaiseNetworkEvent(new AnimateInsertingEntitiesEvent(GetNetEntity(uid),
|
||||
new List<NetEntity> { GetNetEntity(target) },
|
||||
@@ -287,7 +285,7 @@ public abstract class SharedStorageSystem : EntitySystem
|
||||
|
||||
var angle = targetXform.LocalRotation;
|
||||
|
||||
if (PlayerInsertEntityInWorld((uid, component), args.Args.User, entity))
|
||||
if (PlayerInsertEntityInWorld(uid, args.Args.User, entity, component))
|
||||
{
|
||||
successfullyInserted.Add(entity);
|
||||
successfullyInsertedPositions.Add(position);
|
||||
@@ -324,7 +322,7 @@ public abstract class SharedStorageSystem : EntitySystem
|
||||
/// </summary>
|
||||
private void OnInteractWithItem(EntityUid uid, StorageComponent storageComp, StorageInteractWithItemEvent args)
|
||||
{
|
||||
if (args.Session.AttachedEntity is not { } player)
|
||||
if (args.Session.AttachedEntity is not EntityUid player)
|
||||
return;
|
||||
|
||||
var entity = GetEntity(args.InteractedItemUID);
|
||||
@@ -398,10 +396,27 @@ public abstract class SharedStorageSystem : EntitySystem
|
||||
|
||||
public void RecalculateStorageUsed(EntityUid uid, StorageComponent storageComp)
|
||||
{
|
||||
// it might make more sense to use the weights instead of the slots.
|
||||
// I'm not sure.
|
||||
_appearance.SetData(uid, StorageVisuals.StorageUsed, storageComp.Container.ContainedEntities.Count);
|
||||
_appearance.SetData(uid, StorageVisuals.Capacity, storageComp.MaxSlots);
|
||||
storageComp.StorageUsed = 0;
|
||||
|
||||
foreach (var entity in storageComp.Container.ContainedEntities)
|
||||
{
|
||||
if (!_itemQuery.TryGetComponent(entity, out var itemComp))
|
||||
continue;
|
||||
|
||||
var size = itemComp.Size;
|
||||
storageComp.StorageUsed += size;
|
||||
}
|
||||
|
||||
_appearance.SetData(uid, StorageVisuals.StorageUsed, storageComp.StorageUsed);
|
||||
_appearance.SetData(uid, StorageVisuals.Capacity, storageComp.StorageCapacityMax);
|
||||
}
|
||||
|
||||
public int GetAvailableSpace(EntityUid uid, StorageComponent? component = null)
|
||||
{
|
||||
if (!Resolve(uid, ref component))
|
||||
return 0;
|
||||
|
||||
return component.StorageCapacityMax - component.StorageUsed;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -434,20 +449,17 @@ public abstract class SharedStorageSystem : EntitySystem
|
||||
/// Verifies if an entity can be stored and if it fits
|
||||
/// </summary>
|
||||
/// <param name="uid">The entity to check</param>
|
||||
/// <param name="insertEnt"></param>
|
||||
/// <param name="reason">If returning false, the reason displayed to the player</param>
|
||||
/// <param name="storageComp"></param>
|
||||
/// <param name="item"></param>
|
||||
/// <returns>true if it can be inserted, false otherwise</returns>
|
||||
public bool CanInsert(EntityUid uid, EntityUid insertEnt, out string? reason, StorageComponent? storageComp = null, ItemComponent? item = null)
|
||||
public bool CanInsert(EntityUid uid, EntityUid insertEnt, out string? reason, StorageComponent? storageComp = null)
|
||||
{
|
||||
if (!Resolve(uid, ref storageComp) || !Resolve(insertEnt, ref item))
|
||||
if (!Resolve(uid, ref storageComp))
|
||||
{
|
||||
reason = null;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (Transform(insertEnt).Anchored)
|
||||
if (TryComp(insertEnt, out TransformComponent? transformComp) && transformComp.Anchored)
|
||||
{
|
||||
reason = "comp-storage-anchored-failure";
|
||||
return false;
|
||||
@@ -465,19 +477,15 @@ public abstract class SharedStorageSystem : EntitySystem
|
||||
return false;
|
||||
}
|
||||
|
||||
if (item.Size > GetMaxItemSize((uid, storageComp)))
|
||||
{
|
||||
reason = "comp-storage-too-big";
|
||||
return false;
|
||||
}
|
||||
|
||||
if (storageComp.Container.ContainedEntities.Count >= storageComp.MaxSlots)
|
||||
if (TryComp(insertEnt, out StorageComponent? storage) &&
|
||||
storage.StorageCapacityMax >= storageComp.StorageCapacityMax)
|
||||
{
|
||||
reason = "comp-storage-insufficient-capacity";
|
||||
return false;
|
||||
}
|
||||
|
||||
if (SharedItemSystem.GetItemSizeWeight(item.Size) + GetCumulativeItemSizes(uid, storageComp) > GetMaxTotalWeight((uid, storageComp)))
|
||||
if (TryComp(insertEnt, out ItemComponent? itemComp) &&
|
||||
itemComp.Size > storageComp.StorageCapacityMax - storageComp.StorageUsed)
|
||||
{
|
||||
reason = "comp-storage-insufficient-capacity";
|
||||
return false;
|
||||
@@ -534,7 +542,8 @@ public abstract class SharedStorageSystem : EntitySystem
|
||||
if (insertStack.Count > 0)
|
||||
{
|
||||
// Try to insert it as a new stack.
|
||||
if (!CanInsert(uid, insertEnt, out _, storageComp) ||
|
||||
if (TryComp(insertEnt, out ItemComponent? itemComp) &&
|
||||
itemComp.Size > storageComp.StorageCapacityMax - storageComp.StorageUsed ||
|
||||
!storageComp.Container.Insert(insertEnt))
|
||||
{
|
||||
// If we also didn't do any stack fills above then just end
|
||||
@@ -559,9 +568,7 @@ public abstract class SharedStorageSystem : EntitySystem
|
||||
/// <summary>
|
||||
/// Inserts an entity into storage from the player's active hand
|
||||
/// </summary>
|
||||
/// <param name="uid"></param>
|
||||
/// <param name="player">The player to insert an entity from</param>
|
||||
/// <param name="storageComp"></param>
|
||||
/// <returns>true if inserted, false otherwise</returns>
|
||||
public bool PlayerInsertHeldEntity(EntityUid uid, EntityUid player, StorageComponent? storageComp = null)
|
||||
{
|
||||
@@ -582,23 +589,21 @@ public abstract class SharedStorageSystem : EntitySystem
|
||||
return false;
|
||||
}
|
||||
|
||||
return PlayerInsertEntityInWorld((uid, storageComp), player, toInsert.Value);
|
||||
return PlayerInsertEntityInWorld(uid, player, toInsert.Value, storageComp);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Inserts an Entity (<paramref name="toInsert"/>) in the world into storage, informing <paramref name="player"/> if it fails.
|
||||
/// <paramref name="toInsert"/> is *NOT* held, see <see cref="PlayerInsertHeldEntity(EntityUid,EntityUid,StorageComponent)"/>.
|
||||
/// <paramref name="toInsert"/> is *NOT* held, see <see cref="PlayerInsertHeldEntity(Robust.Shared.GameObjects.EntityUid)"/>.
|
||||
/// </summary>
|
||||
/// <param name="uid"></param>
|
||||
/// <param name="player">The player to insert an entity with</param>
|
||||
/// <param name="toInsert"></param>
|
||||
/// <returns>true if inserted, false otherwise</returns>
|
||||
public bool PlayerInsertEntityInWorld(Entity<StorageComponent?> uid, EntityUid player, EntityUid toInsert)
|
||||
public bool PlayerInsertEntityInWorld(EntityUid uid, EntityUid player, EntityUid toInsert, StorageComponent? storageComp = null)
|
||||
{
|
||||
if (!Resolve(uid, ref uid.Comp) || !_sharedInteractionSystem.InRangeUnobstructed(player, uid))
|
||||
if (!Resolve(uid, ref storageComp) || !_sharedInteractionSystem.InRangeUnobstructed(player, uid))
|
||||
return false;
|
||||
|
||||
if (!Insert(uid, toInsert, out _, user: player, uid.Comp))
|
||||
if (!Insert(uid, toInsert, out _, user: player, storageComp))
|
||||
{
|
||||
_popupSystem.PopupClient(Loc.GetString("comp-storage-cant-insert"), uid, player);
|
||||
return false;
|
||||
@@ -606,65 +611,6 @@ public abstract class SharedStorageSystem : EntitySystem
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns true if there is enough space to theoretically fit another item.
|
||||
/// </summary>
|
||||
public bool HasSpace(Entity<StorageComponent?> uid)
|
||||
{
|
||||
if (!Resolve(uid, ref uid.Comp))
|
||||
return false;
|
||||
|
||||
return uid.Comp.Container.ContainedEntities.Count < uid.Comp.MaxSlots &&
|
||||
GetCumulativeItemSizes(uid, uid.Comp) < GetMaxTotalWeight(uid);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the sum of all the ItemSizes of the items inside of a storage.
|
||||
/// </summary>
|
||||
public int GetCumulativeItemSizes(EntityUid uid, StorageComponent? component = null)
|
||||
{
|
||||
if (!Resolve(uid, ref component))
|
||||
return 0;
|
||||
|
||||
var sum = 0;
|
||||
foreach (var item in component.Container.ContainedEntities)
|
||||
{
|
||||
if (!_itemQuery.TryGetComponent(item, out var itemComp))
|
||||
continue;
|
||||
sum += SharedItemSystem.GetItemSizeWeight(itemComp.Size);
|
||||
}
|
||||
|
||||
return sum;
|
||||
}
|
||||
|
||||
public ItemSize GetMaxItemSize(Entity<StorageComponent?> uid)
|
||||
{
|
||||
if (!Resolve(uid, ref uid.Comp))
|
||||
return DefaultStorageMaxItemSize;
|
||||
|
||||
// If we specify a max item size, use that
|
||||
if (uid.Comp.MaxItemSize != null)
|
||||
return uid.Comp.MaxItemSize.Value;
|
||||
|
||||
if (!_itemQuery.TryGetComponent(uid, out var item))
|
||||
return DefaultStorageMaxItemSize;
|
||||
|
||||
// if there is no max item size specified, the value used
|
||||
// is one below the item size of the storage entity, clamped at ItemSize.Tiny
|
||||
return (ItemSize) Math.Max((int) item.Size - 1, 1);
|
||||
}
|
||||
|
||||
public int GetMaxTotalWeight(Entity<StorageComponent?> uid)
|
||||
{
|
||||
if (!Resolve(uid, ref uid.Comp))
|
||||
return 0;
|
||||
|
||||
if (uid.Comp.MaxTotalWeight != null)
|
||||
return uid.Comp.MaxTotalWeight.Value;
|
||||
|
||||
return uid.Comp.MaxSlots * SharedItemSystem.GetItemSizeWeight(GetMaxItemSize(uid));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Plays a clientside pickup animation for the specified uid.
|
||||
/// </summary>
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
using Content.Shared.Item;
|
||||
using Content.Shared.Storage.EntitySystems;
|
||||
using Content.Shared.Whitelist;
|
||||
using Robust.Shared.Audio;
|
||||
using Robust.Shared.Containers;
|
||||
@@ -22,25 +20,6 @@ namespace Content.Shared.Storage
|
||||
[ViewVariables]
|
||||
public Container Container = default!;
|
||||
|
||||
/// <summary>
|
||||
/// The max number of entities that can be inserted into this storage.
|
||||
/// </summary>
|
||||
[DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField]
|
||||
public int MaxSlots = 7;
|
||||
|
||||
/// <summary>
|
||||
/// The maximum size item that can be inserted into this storage,
|
||||
/// </summary>
|
||||
[DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField]
|
||||
[Access(typeof(SharedStorageSystem))]
|
||||
public ItemSize? MaxItemSize;
|
||||
|
||||
/// <summary>
|
||||
/// A limit for the cumulative ItemSizes that can be inserted in this storage.
|
||||
/// </summary>
|
||||
[DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField]
|
||||
public int? MaxTotalWeight;
|
||||
|
||||
// TODO: Make area insert its own component.
|
||||
[DataField("quickInsert")]
|
||||
public bool QuickInsert; // Can insert storables by "attacking" them with the storage entity
|
||||
@@ -66,6 +45,18 @@ namespace Content.Shared.Storage
|
||||
[DataField("blacklist")]
|
||||
public EntityWhitelist? Blacklist;
|
||||
|
||||
/// <summary>
|
||||
/// How much storage is currently being used by contained entities.
|
||||
/// </summary>
|
||||
[ViewVariables, DataField("storageUsed"), AutoNetworkedField]
|
||||
public int StorageUsed;
|
||||
|
||||
/// <summary>
|
||||
/// Maximum capacity for storage.
|
||||
/// </summary>
|
||||
[DataField("capacity"), AutoNetworkedField]
|
||||
public int StorageCapacityMax = 10000;
|
||||
|
||||
/// <summary>
|
||||
/// Sound played whenever an entity is inserted into storage.
|
||||
/// </summary>
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
comp-storage-no-item-size = N/A
|
||||
comp-storage-cant-insert = Can't insert.
|
||||
comp-storage-too-big = Too big!
|
||||
comp-storage-insufficient-capacity = No room!
|
||||
comp-storage-insufficient-capacity = Insufficient capacity.
|
||||
comp-storage-invalid-container = This doesn't go in there!
|
||||
comp-storage-anchored-failure = Can't insert an anchored item.
|
||||
comp-storage-cant-drop = You can't let go of { THE($entity) }!
|
||||
comp-storage-window-title = Storage Item
|
||||
comp-storage-window-volume = Items: { $itemCount }/{ $maxCount }, Max Size: {$size}
|
||||
comp-storage-window-volume-full = [color=orange][bold]FULL[/bold][/color], Max Size: {$size}
|
||||
comp-storage-window-volume = Items: { $itemCount }, Stored: { $usedVolume }/{ $maxVolume }
|
||||
comp-storage-window-volume-unlimited = Items: { $itemCount }
|
||||
|
||||
@@ -7,10 +7,3 @@ pick-up-verb-get-data-text = Pick Up
|
||||
pick-up-verb-get-data-text-inventory = Put in hand
|
||||
|
||||
item-component-on-examine-size = Size: {$size}
|
||||
|
||||
item-component-size-Tiny = tiny
|
||||
item-component-size-Small = small
|
||||
item-component-size-Normal = normal
|
||||
item-component-size-Large = large
|
||||
item-component-size-Huge = huge
|
||||
item-component-size-Ginormous = bulky
|
||||
|
||||
@@ -874,6 +874,36 @@ entities:
|
||||
pos: -0.5,0.5
|
||||
parent: 325
|
||||
type: Transform
|
||||
- proto: ClothingBeltSyndieHolster
|
||||
entities:
|
||||
- uid: 317
|
||||
components:
|
||||
- flags: InContainer
|
||||
type: MetaData
|
||||
- parent: 177
|
||||
type: Transform
|
||||
- canCollide: False
|
||||
type: Physics
|
||||
- proto: ClothingHandsGlovesCombat
|
||||
entities:
|
||||
- uid: 316
|
||||
components:
|
||||
- flags: InContainer
|
||||
type: MetaData
|
||||
- parent: 177
|
||||
type: Transform
|
||||
- canCollide: False
|
||||
type: Physics
|
||||
- proto: ClothingMaskGasSyndicate
|
||||
entities:
|
||||
- uid: 318
|
||||
components:
|
||||
- flags: InContainer
|
||||
type: MetaData
|
||||
- parent: 177
|
||||
type: Transform
|
||||
- canCollide: False
|
||||
type: Physics
|
||||
- proto: ComputerIFFSyndicate
|
||||
entities:
|
||||
- uid: 40
|
||||
@@ -896,6 +926,16 @@ entities:
|
||||
ents:
|
||||
- 245
|
||||
type: ContainerContainer
|
||||
- proto: Crowbar
|
||||
entities:
|
||||
- uid: 313
|
||||
components:
|
||||
- flags: InContainer
|
||||
type: MetaData
|
||||
- parent: 177
|
||||
type: Transform
|
||||
- canCollide: False
|
||||
type: Physics
|
||||
- proto: CyberPen
|
||||
entities:
|
||||
- uid: 77
|
||||
@@ -1632,6 +1672,16 @@ entities:
|
||||
pos: -2.5,-3.5
|
||||
parent: 325
|
||||
type: Transform
|
||||
- proto: Multitool
|
||||
entities:
|
||||
- uid: 314
|
||||
components:
|
||||
- flags: InContainer
|
||||
type: MetaData
|
||||
- parent: 177
|
||||
type: Transform
|
||||
- canCollide: False
|
||||
type: Physics
|
||||
- proto: NitrogenTankFilled
|
||||
entities:
|
||||
- uid: 105
|
||||
@@ -1830,6 +1880,20 @@ entities:
|
||||
type: Transform
|
||||
- canCollide: False
|
||||
type: Physics
|
||||
- proto: Screwdriver
|
||||
entities:
|
||||
- uid: 310
|
||||
components:
|
||||
- flags: InContainer
|
||||
type: MetaData
|
||||
- parent: 177
|
||||
type: Transform
|
||||
- selected:
|
||||
enum.DamageStateVisualLayers.Base:
|
||||
screwdriver: '#1861D5FF'
|
||||
type: RandomSprite
|
||||
- canCollide: False
|
||||
type: Physics
|
||||
- proto: SheetGlass1
|
||||
entities:
|
||||
- uid: 244
|
||||
@@ -2318,6 +2382,21 @@ entities:
|
||||
- pos: 1.5699697,-0.44908836
|
||||
parent: 325
|
||||
type: Transform
|
||||
- containers:
|
||||
storagebase: !type:Container
|
||||
showEnts: False
|
||||
occludes: True
|
||||
ents:
|
||||
- 310
|
||||
- 311
|
||||
- 312
|
||||
- 313
|
||||
- 314
|
||||
- 315
|
||||
- 316
|
||||
- 317
|
||||
- 318
|
||||
type: ContainerContainer
|
||||
- canCollide: False
|
||||
type: Physics
|
||||
- proto: ToyFigurineNukie
|
||||
@@ -2577,6 +2656,16 @@ entities:
|
||||
- pos: -2.5,2.5
|
||||
parent: 325
|
||||
type: Transform
|
||||
- proto: Welder
|
||||
entities:
|
||||
- uid: 312
|
||||
components:
|
||||
- flags: InContainer
|
||||
type: MetaData
|
||||
- parent: 177
|
||||
type: Transform
|
||||
- canCollide: False
|
||||
type: Physics
|
||||
- proto: WindoorSecure
|
||||
entities:
|
||||
- uid: 166
|
||||
@@ -2598,6 +2687,30 @@ entities:
|
||||
ents:
|
||||
- 346
|
||||
type: ContainerContainer
|
||||
- proto: Wirecutter
|
||||
entities:
|
||||
- uid: 315
|
||||
components:
|
||||
- flags: InContainer
|
||||
type: MetaData
|
||||
- parent: 177
|
||||
type: Transform
|
||||
- selected:
|
||||
enum.DamageStateVisualLayers.Base:
|
||||
cutters: '#D58C18FF'
|
||||
type: RandomSprite
|
||||
- canCollide: False
|
||||
type: Physics
|
||||
- proto: Wrench
|
||||
entities:
|
||||
- uid: 311
|
||||
components:
|
||||
- flags: InContainer
|
||||
type: MetaData
|
||||
- parent: 177
|
||||
type: Transform
|
||||
- canCollide: False
|
||||
type: Physics
|
||||
- proto: YellowOxygenTankFilled
|
||||
entities:
|
||||
- uid: 167
|
||||
|
||||
@@ -102471,6 +102471,8 @@ entities:
|
||||
type: Transform
|
||||
- count: 15
|
||||
type: Stack
|
||||
- size: 15
|
||||
type: Item
|
||||
- proto: SheetPlasma
|
||||
entities:
|
||||
- uid: 12944
|
||||
@@ -102562,6 +102564,8 @@ entities:
|
||||
type: Transform
|
||||
- count: 20
|
||||
type: Stack
|
||||
- size: 20
|
||||
type: Item
|
||||
- proto: Shovel
|
||||
entities:
|
||||
- uid: 12955
|
||||
|
||||
@@ -78331,6 +78331,8 @@ entities:
|
||||
type: Transform
|
||||
- count: 15
|
||||
type: Stack
|
||||
- size: 30
|
||||
type: Item
|
||||
- proto: StoolBar
|
||||
entities:
|
||||
- uid: 921
|
||||
|
||||
@@ -291,7 +291,8 @@
|
||||
- id: RegenerativeMesh
|
||||
- id: RCD
|
||||
- id: RCDAmmo
|
||||
amount: 2
|
||||
- id: RCDAmmo
|
||||
- id: RCDAmmo
|
||||
- id: CableMVStack
|
||||
- id: CableHVStack
|
||||
|
||||
|
||||
@@ -198,9 +198,6 @@
|
||||
name: syndicate pyjama duffel bag
|
||||
description: Contains 3 pairs of syndicate pyjamas and 3 plushies for the ultimate sleepover.
|
||||
components:
|
||||
- type: Storage
|
||||
maxSlots: 16
|
||||
maxTotalWeight: 44
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- id: ClothingUniformJumpsuitPyjamaSyndicateRed
|
||||
@@ -234,8 +231,6 @@
|
||||
id: ClothingBackpackChameleonFill
|
||||
suffix: Fill, Chameleon
|
||||
components:
|
||||
- type: Storage
|
||||
maxSlots: 9
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- id: ClothingUniformJumpsuitChameleon
|
||||
@@ -267,11 +262,6 @@
|
||||
name: syndicate hardsuit bundle
|
||||
description: "Contains the Syndicate's signature blood red hardsuit."
|
||||
components:
|
||||
- type: Storage
|
||||
maxItemSize: Huge
|
||||
whitelist: #to snub 'dem metagamers
|
||||
components:
|
||||
- Clothing
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- id: ClothingOuterHardsuitSyndie
|
||||
|
||||
@@ -278,7 +278,7 @@
|
||||
containers:
|
||||
ballistic-ammo: !type:Container
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: 30
|
||||
- type: Sprite
|
||||
sprite: Objects/Storage/boxes.rsi
|
||||
|
||||
|
||||
@@ -37,8 +37,7 @@
|
||||
- state: box
|
||||
- state: light
|
||||
- type: Storage
|
||||
maxSlots: 12
|
||||
maxTotalWeight: 24
|
||||
capacity: 60
|
||||
whitelist:
|
||||
components:
|
||||
- LightBulb
|
||||
@@ -61,8 +60,7 @@
|
||||
- state: box
|
||||
- state: lighttube
|
||||
- type: Storage
|
||||
maxSlots: 12
|
||||
maxTotalWeight: 24
|
||||
capacity: 60
|
||||
whitelist:
|
||||
components:
|
||||
- LightBulb
|
||||
@@ -87,8 +85,7 @@
|
||||
- state: box
|
||||
- state: lightmixed
|
||||
- type: Storage
|
||||
maxSlots: 12
|
||||
maxTotalWeight: 24
|
||||
capacity: 60
|
||||
whitelist:
|
||||
components:
|
||||
- LightBulb
|
||||
@@ -111,6 +108,7 @@
|
||||
- state: box
|
||||
- state: pda
|
||||
- type: Storage
|
||||
capacity: 60
|
||||
whitelist:
|
||||
components:
|
||||
- Pda
|
||||
@@ -130,6 +128,7 @@
|
||||
- state: box
|
||||
- state: pda
|
||||
- type: Storage
|
||||
capacity: 60
|
||||
whitelist:
|
||||
components:
|
||||
- IdCard
|
||||
@@ -149,6 +148,7 @@
|
||||
- state: box
|
||||
- state: headset
|
||||
- type: Storage
|
||||
capacity: 60
|
||||
whitelist:
|
||||
components:
|
||||
- Headset
|
||||
@@ -192,6 +192,7 @@
|
||||
description: A special box for sensitive people.
|
||||
components:
|
||||
- type: Storage
|
||||
capacity: 30
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box_hug
|
||||
@@ -233,12 +234,6 @@
|
||||
id: BoxPerformer
|
||||
description: Happy Hatsune Miku Day!
|
||||
components:
|
||||
- type: Storage
|
||||
maxItemSize: Normal
|
||||
whitelist:
|
||||
components:
|
||||
- Clothing
|
||||
- Food
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- id: ClothingShoesBootsPerformer
|
||||
@@ -272,7 +267,7 @@
|
||||
- id: TrashBag
|
||||
amount: 6
|
||||
- type: Storage
|
||||
maxItemSize: Normal
|
||||
capacity: 800
|
||||
whitelist:
|
||||
tags:
|
||||
- TrashBag
|
||||
@@ -299,6 +294,7 @@
|
||||
- state: box
|
||||
- state: encryptokey
|
||||
- type: Storage
|
||||
capacity: 30
|
||||
whitelist:
|
||||
components:
|
||||
- EncryptionKey
|
||||
@@ -390,12 +386,13 @@
|
||||
description: Two syndicate encryption keys for the price of one. Miniaturized for ease of use.
|
||||
components:
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: 15
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- id: EncryptionKeySyndie
|
||||
amount: 2
|
||||
- type: Storage
|
||||
capacity: 15
|
||||
|
||||
- type: entity
|
||||
name: deathrattle implant box
|
||||
@@ -404,7 +401,7 @@
|
||||
description: Six deathrattle implants and handheld GPS devices for the whole squad.
|
||||
components:
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: 60
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- id: DeathRattleImplanter
|
||||
@@ -412,8 +409,7 @@
|
||||
- id: HandheldGPSBasic
|
||||
amount: 6
|
||||
- type: Storage
|
||||
maxSlots: 12
|
||||
maxTotalWeight: 24
|
||||
capacity: 60
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box
|
||||
@@ -438,20 +434,19 @@
|
||||
description: This box filled with colorful darts.
|
||||
components:
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: 40
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- id: Dart
|
||||
amount: 3
|
||||
amount: 5
|
||||
- id: DartBlue
|
||||
amount: 3
|
||||
amount: 5
|
||||
- id: DartPurple
|
||||
amount: 3
|
||||
amount: 5
|
||||
- id: DartYellow
|
||||
amount: 3
|
||||
amount: 5
|
||||
- type: Storage
|
||||
maxSlots: 12
|
||||
maxTotalWeight: 24
|
||||
capacity: 40
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box
|
||||
|
||||
@@ -93,13 +93,10 @@
|
||||
parent: BoxCardboard
|
||||
id: BoxMouthSwab
|
||||
components:
|
||||
- type: Storage
|
||||
maxSlots: 10
|
||||
maxTotalWeight: 20
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- id: DiseaseSwab
|
||||
amount: 10
|
||||
amount: 30
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: box
|
||||
|
||||
@@ -49,12 +49,6 @@
|
||||
id: BoxZiptie
|
||||
description: A box full of zipties.
|
||||
components:
|
||||
- type: Storage
|
||||
maxSlots: 10
|
||||
maxTotalWeight: 20
|
||||
whitelist:
|
||||
components:
|
||||
- Handcuff
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- id: Zipties
|
||||
@@ -70,9 +64,6 @@
|
||||
id: BoxForensicPad
|
||||
description: A box of forensic pads.
|
||||
components:
|
||||
- type: Storage
|
||||
maxSlots: 10
|
||||
maxTotalWeight: 20
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- id: ForensicPad
|
||||
|
||||
@@ -302,7 +302,7 @@
|
||||
- id: TargetDarts
|
||||
amount: 1
|
||||
- id: BoxDarts
|
||||
amount: 2
|
||||
amount: 1
|
||||
- id: BoxDarts
|
||||
amount: 1
|
||||
prob: 0.05
|
||||
|
||||
@@ -89,11 +89,14 @@
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- id: Brutepack
|
||||
amount: 1
|
||||
- id: Ointment
|
||||
amount: 1
|
||||
- id: Bloodpack
|
||||
amount: 1
|
||||
- id: Gauze
|
||||
- id: EmergencyMedipen #You never know what people are going to latejoin into
|
||||
amount: 3
|
||||
amount: 6
|
||||
|
||||
- type: entity
|
||||
id: ClothingBeltPlantFilled
|
||||
@@ -121,10 +124,6 @@
|
||||
name: grenadier chest rig
|
||||
suffix: Filled
|
||||
components:
|
||||
- type: Item
|
||||
size: Large
|
||||
- type: Storage
|
||||
maxSlots: 8
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- id: ExGrenade
|
||||
|
||||
@@ -15,10 +15,6 @@
|
||||
parent: BriefcaseSyndie
|
||||
suffix: SniperBundle
|
||||
components:
|
||||
- type: Item
|
||||
size: Huge
|
||||
- type: Storage
|
||||
maxItemSize: Large
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- id: WeaponSniperHristov
|
||||
|
||||
@@ -12,7 +12,8 @@
|
||||
- id: Ointment
|
||||
amount: 2
|
||||
- id: Gauze
|
||||
- id: PillCanisterTricordrazine
|
||||
- id: PillTricordrazine
|
||||
amount: 5
|
||||
# see https://github.com/tgstation/blob/master/code/game/objects/items/storage/firstaid.dm for example contents
|
||||
|
||||
- type: entity
|
||||
@@ -27,8 +28,10 @@
|
||||
- id: Ointment
|
||||
amount: 2
|
||||
- id: SyringeSigynate
|
||||
- id: PillCanisterKelotane
|
||||
- id: PillCanisterDermaline
|
||||
- id: PillKelotane
|
||||
amount: 5
|
||||
- id: PillDermaline
|
||||
amount: 5
|
||||
|
||||
- type: entity
|
||||
id: MedkitBruteFilled
|
||||
@@ -42,8 +45,10 @@
|
||||
- id: Gauze
|
||||
- id: Bloodpack
|
||||
- id: SyringeTranexamicAcid
|
||||
- id: PillCanisterIron
|
||||
- id: PillCanisterBicaridine
|
||||
- id: PillIron
|
||||
amount: 5
|
||||
- id: PillBicaridine
|
||||
amount: 5
|
||||
|
||||
- type: entity
|
||||
id: MedkitToxinFilled
|
||||
@@ -55,8 +60,10 @@
|
||||
- id: SyringeIpecac
|
||||
- id: SyringeEthylredoxrazine
|
||||
- id: AntiPoisonMedipen
|
||||
- id: PillCanisterDylovene
|
||||
- id: PillCanisterCharcoal
|
||||
- id: PillDylovene
|
||||
amount: 5
|
||||
- id: PillCharcoal
|
||||
amount: 3
|
||||
|
||||
- type: entity
|
||||
id: MedkitOxygenFilled
|
||||
@@ -69,7 +76,8 @@
|
||||
- id: EmergencyOxygenTankFilled
|
||||
- id: EmergencyMedipen
|
||||
- id: SyringeInaprovaline
|
||||
- id: PillCanisterDexalin
|
||||
- id: PillDexalin
|
||||
amount: 7
|
||||
|
||||
- type: entity
|
||||
id: MedkitRadiationFilled
|
||||
@@ -84,7 +92,8 @@
|
||||
amount: 1
|
||||
- id: EmergencyMedipen
|
||||
amount: 1
|
||||
- id: PillCanisterHyronalin
|
||||
- id: PillHyronalin
|
||||
amount: 5
|
||||
|
||||
- type: entity
|
||||
id: MedkitAdvancedFilled
|
||||
@@ -111,9 +120,11 @@
|
||||
- id: MedicatedSuture
|
||||
- id: RegenerativeMesh
|
||||
- id: SyringeEphedrine
|
||||
- id: SyringeSaline
|
||||
- id: BruteAutoInjector
|
||||
- id: BurnAutoInjector
|
||||
- id: EmergencyMedipen
|
||||
- id: Bloodpack
|
||||
|
||||
- type: entity
|
||||
id: StimkitFilled
|
||||
|
||||
@@ -86,16 +86,9 @@
|
||||
suffix: Filled
|
||||
parent: ToolboxSyndicate
|
||||
components:
|
||||
- type: Storage
|
||||
maxSlots: 8
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- id: Crowbar
|
||||
- id: Wrench
|
||||
- id: Screwdriver
|
||||
- id: Wirecutter
|
||||
- id: Welder
|
||||
- id: Multitool
|
||||
- id: ClothingBeltUtilityEngineering
|
||||
- id: ClothingHandsGlovesCombat
|
||||
- id: ClothingMaskGasSyndicate
|
||||
|
||||
|
||||
@@ -8,14 +8,13 @@
|
||||
sprite: Clothing/Back/Backpacks/backpack.rsi
|
||||
state: icon
|
||||
- type: Item
|
||||
size: Huge
|
||||
size: 9999
|
||||
- type: Clothing
|
||||
quickEquip: false
|
||||
slots:
|
||||
- back
|
||||
- type: Storage
|
||||
maxSlots: 7
|
||||
maxTotalWeight: 28
|
||||
capacity: 100
|
||||
- type: ContainerContainer
|
||||
containers:
|
||||
storagebase: !type:Container
|
||||
@@ -197,8 +196,7 @@
|
||||
- type: Sprite
|
||||
sprite: Clothing/Back/Backpacks/ertleader.rsi
|
||||
- type: Storage
|
||||
maxSlots: 10
|
||||
maxTotalWeight: 40
|
||||
capacity: 250
|
||||
|
||||
- type: entity
|
||||
parent: ClothingBackpackERTLeader
|
||||
@@ -261,12 +259,8 @@
|
||||
shader: unshaded
|
||||
- type: Clothing
|
||||
equippedPrefix: holding
|
||||
- type: Item
|
||||
size: Ginormous
|
||||
- type: Storage
|
||||
maxSlots: 14
|
||||
maxItemSize: Large
|
||||
maxTotalWeight: 56 #14 normal-sized items.
|
||||
capacity: 9999
|
||||
|
||||
- type: entity
|
||||
parent: ClothingBackpackClown
|
||||
|
||||
@@ -7,8 +7,7 @@
|
||||
- type: Sprite
|
||||
sprite: Clothing/Back/Duffels/duffel.rsi
|
||||
- type: Storage
|
||||
maxSlots: 10
|
||||
maxTotalWeight: 40
|
||||
capacity: 120
|
||||
- type: ClothingSpeedModifier
|
||||
walkModifier: 1
|
||||
sprintModifier: 0.9
|
||||
@@ -163,6 +162,8 @@
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: Clothing/Back/Duffels/syndicate.rsi
|
||||
- type: Storage
|
||||
capacity: 131
|
||||
|
||||
- type: entity
|
||||
parent: ClothingBackpackDuffelSyndicate
|
||||
@@ -227,11 +228,7 @@
|
||||
- state: icon
|
||||
- state: icon-unlit
|
||||
shader: unshaded
|
||||
- type: Item
|
||||
size: Ginormous
|
||||
- type: Storage
|
||||
maxSlots: 14
|
||||
maxItemSize: Large
|
||||
maxTotalWeight: 56 #14 normal-sized items.
|
||||
capacity: 9999
|
||||
- type: ClothingSpeedModifier
|
||||
sprintModifier: 1 # makes its stats identical to other variants of bag of holding
|
||||
|
||||
@@ -167,9 +167,5 @@
|
||||
- state: icon
|
||||
- state: icon-unlit
|
||||
shader: unshaded
|
||||
- type: Item
|
||||
size: Ginormous
|
||||
- type: Storage
|
||||
maxSlots: 14
|
||||
maxItemSize: Large
|
||||
maxTotalWeight: 56 #14 normal-sized items.
|
||||
capacity: 9999
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
sprite: Clothing/Back/Backpacks/waterbackpack.rsi
|
||||
state: icon
|
||||
- type: Item
|
||||
size: Huge
|
||||
size: 200
|
||||
- type: Clothing
|
||||
slots: BACK
|
||||
sprite: Clothing/Back/Backpacks/waterbackpack.rsi
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
- type: Sprite
|
||||
state: icon
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: 50
|
||||
- type: Clothing
|
||||
slots: [belt]
|
||||
quickEquip: false
|
||||
@@ -22,10 +22,7 @@
|
||||
id: ClothingBeltStorageBase
|
||||
components:
|
||||
- type: Storage
|
||||
maxSlots: 7
|
||||
maxItemSize: Normal
|
||||
- type: Item
|
||||
size: Huge
|
||||
capacity: 40
|
||||
- type: ContainerContainer
|
||||
containers:
|
||||
storagebase: !type:Container
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
- type: Clothing
|
||||
sprite: Clothing/Belt/utility.rsi
|
||||
- type: Storage
|
||||
maxItemSize: Normal
|
||||
capacity: 45
|
||||
# TODO: Fill this out more.
|
||||
whitelist:
|
||||
tags:
|
||||
@@ -83,6 +83,7 @@
|
||||
- type: Clothing
|
||||
sprite: Clothing/Belt/ce.rsi
|
||||
- type: Storage
|
||||
capacity: 105
|
||||
# TODO: Fill this out more.
|
||||
whitelist:
|
||||
tags:
|
||||
@@ -237,6 +238,7 @@
|
||||
- type: Clothing
|
||||
sprite: Clothing/Belt/medical.rsi
|
||||
- type: Storage
|
||||
capacity: 60
|
||||
whitelist:
|
||||
tags:
|
||||
- Wrench
|
||||
@@ -391,7 +393,7 @@
|
||||
- type: Clothing
|
||||
sprite: Clothing/Belt/sheath.rsi
|
||||
- type: Storage
|
||||
maxSlots: 1
|
||||
capacity: 15
|
||||
whitelist:
|
||||
tags:
|
||||
- CaptainSabre
|
||||
@@ -416,8 +418,9 @@
|
||||
- type: Clothing
|
||||
sprite: Clothing/Belt/bandolier.rsi
|
||||
- type: Item
|
||||
size: Large
|
||||
size: 60
|
||||
- type: Storage
|
||||
capacity: 60
|
||||
whitelist:
|
||||
tags:
|
||||
- ShellShotgun
|
||||
@@ -448,7 +451,7 @@
|
||||
- type: Clothing
|
||||
sprite: Clothing/Belt/holster.rsi
|
||||
- type: Storage
|
||||
maxSlots: 3
|
||||
capacity: 20
|
||||
|
||||
- type: entity
|
||||
parent: ClothingBeltStorageBase
|
||||
@@ -461,8 +464,9 @@
|
||||
- type: Clothing
|
||||
sprite: Clothing/Belt/syndieholster.rsi
|
||||
- type: Item
|
||||
size: Large
|
||||
size: 60
|
||||
- type: Storage
|
||||
capacity: 60
|
||||
whitelist:
|
||||
components:
|
||||
- Gun
|
||||
@@ -524,7 +528,9 @@
|
||||
- type: Clothing
|
||||
sprite: Clothing/Belt/militarywebbingmed.rsi
|
||||
- type: Item
|
||||
size: Large
|
||||
size: 70
|
||||
- type: Storage
|
||||
capacity: 70
|
||||
|
||||
- type: entity
|
||||
parent: ClothingBeltBase
|
||||
@@ -553,7 +559,7 @@
|
||||
- type: Clothing
|
||||
sprite: Clothing/Belt/wand.rsi
|
||||
- type: Storage
|
||||
maxSlots: 8
|
||||
capacity: 120
|
||||
whitelist:
|
||||
tags:
|
||||
- WizardWand
|
||||
|
||||
@@ -12,8 +12,7 @@
|
||||
visible: false
|
||||
- type: Clothing
|
||||
- type: Storage
|
||||
maxSlots: 15
|
||||
maxItemSize: Small
|
||||
capacity: 150
|
||||
whitelist:
|
||||
tags:
|
||||
- Arrow
|
||||
|
||||
@@ -9,8 +9,7 @@
|
||||
- type: Clothing
|
||||
sprite: Clothing/Belt/waistbag_leather.rsi
|
||||
- type: Storage
|
||||
maxSlots: 5
|
||||
maxItemSize: Small
|
||||
capacity: 20
|
||||
|
||||
#Colorization on worn items doesn't work. If this ever gets fixed, you can duplicate this entry and change the color on the sprite to add color variants.
|
||||
#- type: entity
|
||||
|
||||
@@ -17,8 +17,6 @@
|
||||
keySlots: 4
|
||||
- type: Sprite
|
||||
state: icon
|
||||
- type: Item
|
||||
size: Small
|
||||
- type: Clothing
|
||||
slots:
|
||||
- ears
|
||||
|
||||
@@ -7,5 +7,3 @@
|
||||
state: icon
|
||||
- type: Clothing
|
||||
slots: [eyes]
|
||||
- type: Item
|
||||
size: Small
|
||||
|
||||
@@ -9,8 +9,6 @@
|
||||
slots: [gloves]
|
||||
- type: Food
|
||||
requiresSpecialDigestion: true
|
||||
- type: Item
|
||||
size: Small
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
food:
|
||||
|
||||
@@ -8,8 +8,6 @@
|
||||
- HEAD
|
||||
- type: Sprite
|
||||
state: icon
|
||||
- type: Item
|
||||
size: Small
|
||||
- type: Food
|
||||
requiresSpecialDigestion: true
|
||||
- type: SolutionContainerManager
|
||||
@@ -119,7 +117,7 @@
|
||||
name: base space helmet
|
||||
components:
|
||||
- type: Item
|
||||
size: Small
|
||||
size: 10
|
||||
- type: PressureProtection
|
||||
highPressureMultiplier: 0.6
|
||||
lowPressureMultiplier: 1000
|
||||
|
||||
@@ -197,7 +197,7 @@
|
||||
- type: Clothing
|
||||
sprite: Clothing/Head/Hats/chefhat.rsi
|
||||
- type: Storage
|
||||
maxSlots: 1
|
||||
capacity: 5
|
||||
- type: UserInterface
|
||||
interfaces:
|
||||
- key: enum.StorageUiKey.Key
|
||||
@@ -751,10 +751,10 @@
|
||||
offset: "0, 0.12"
|
||||
sprite: Clothing/Head/Hats/magician.rsi
|
||||
- type: Item
|
||||
size: Small
|
||||
size: 10
|
||||
sprite: Clothing/Head/Hats/magician.rsi
|
||||
- type: Storage
|
||||
maxSlots: 1
|
||||
capacity: 10
|
||||
- type: UserInterface
|
||||
interfaces:
|
||||
- key: enum.StorageUiKey.Key
|
||||
|
||||
@@ -5,8 +5,6 @@
|
||||
components:
|
||||
- type: Sprite
|
||||
state: icon
|
||||
- type: Item
|
||||
size: Small
|
||||
- type: Clothing
|
||||
slots: [mask]
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
id: ClothingNeckBase
|
||||
components:
|
||||
- type: Item
|
||||
size: Small
|
||||
size: 10
|
||||
- type: Clothing
|
||||
quickEquip: true
|
||||
slots:
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
description: be nothing do crime
|
||||
components:
|
||||
- type: Item
|
||||
size: Tiny
|
||||
size: 1
|
||||
|
||||
- type: entity
|
||||
parent: ClothingNeckPinBase
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
id: ClothingOuterBaseLarge
|
||||
components:
|
||||
- type: Item
|
||||
size: Large
|
||||
size: 80
|
||||
- type: Clothing
|
||||
slots:
|
||||
- outerClothing
|
||||
@@ -28,8 +28,10 @@
|
||||
parent: ClothingOuterBase
|
||||
id: ClothingOuterStorageBase
|
||||
components:
|
||||
- type: Item
|
||||
size: 10
|
||||
- type: Storage
|
||||
maxSlots: 3
|
||||
capacity: 10
|
||||
- type: ContainerContainer
|
||||
containers:
|
||||
storagebase: !type:Container
|
||||
@@ -70,7 +72,7 @@
|
||||
walkModifier: 0.4
|
||||
sprintModifier: 0.6
|
||||
- type: Item
|
||||
size: Huge
|
||||
size: 121
|
||||
- type: Armor
|
||||
modifiers:
|
||||
coefficients:
|
||||
@@ -105,7 +107,7 @@
|
||||
walkModifier: 0.8
|
||||
sprintModifier: 0.8
|
||||
- type: Item
|
||||
size: Large
|
||||
size: 80
|
||||
|
||||
- type: entity
|
||||
parent: ClothingOuterBase
|
||||
@@ -128,7 +130,7 @@
|
||||
id: ClothingOuterBaseMedium
|
||||
components:
|
||||
- type: Item
|
||||
size: Large
|
||||
size: 30
|
||||
- type: Clothing
|
||||
slots:
|
||||
- outerClothing
|
||||
|
||||
@@ -350,7 +350,7 @@
|
||||
walkModifier: 0.75
|
||||
sprintModifier: 0.75
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: 50
|
||||
- type: Tag
|
||||
tags:
|
||||
- WhitelistChameleon
|
||||
|
||||
@@ -176,7 +176,7 @@
|
||||
- type: Sprite
|
||||
sprite: Clothing/OuterClothing/Suits/iansuit.rsi
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: 30
|
||||
- type: Clothing
|
||||
sprite: Clothing/OuterClothing/Suits/iansuit.rsi
|
||||
- type: ToggleableClothing
|
||||
@@ -197,7 +197,7 @@
|
||||
- type: Sprite
|
||||
sprite: Clothing/OuterClothing/Suits/carpsuit.rsi
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: 30
|
||||
- type: Clothing
|
||||
sprite: Clothing/OuterClothing/Suits/carpsuit.rsi
|
||||
- type: ToggleableClothing
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
- type: TemperatureProtection
|
||||
coefficient: 0.1
|
||||
- type: Item
|
||||
size: Small
|
||||
size: 10
|
||||
- type: Armor
|
||||
modifiers:
|
||||
coefficients:
|
||||
|
||||
@@ -8,8 +8,6 @@
|
||||
- FEET
|
||||
- type: Sprite
|
||||
state: icon
|
||||
- type: Item
|
||||
size: Normal
|
||||
- type: Food
|
||||
requiresSpecialDigestion: true
|
||||
- type: SolutionContainerManager
|
||||
@@ -41,7 +39,7 @@
|
||||
id: ClothingShoesStorageBase
|
||||
components:
|
||||
- type: Storage
|
||||
maxSlots: 1
|
||||
capacity: 10
|
||||
- type: ContainerContainer
|
||||
containers:
|
||||
storagebase: !type:Container
|
||||
|
||||
@@ -181,7 +181,7 @@
|
||||
- state: equipped-FEET
|
||||
offset: "0, -0.02"
|
||||
- type: Item
|
||||
size: Small
|
||||
size: 10
|
||||
sprite: Clothing/Shoes/Specific/large_clown.rsi
|
||||
- type: ClothingSpeedModifier
|
||||
walkModifier: 0.85
|
||||
|
||||
@@ -3,8 +3,6 @@
|
||||
parent: BaseItem
|
||||
id: Clothing
|
||||
components:
|
||||
- type: Item
|
||||
size: Normal
|
||||
- type: Sprite
|
||||
- type: Tag
|
||||
tags:
|
||||
|
||||
@@ -101,7 +101,7 @@
|
||||
types:
|
||||
Blunt: 20000
|
||||
- type: Item
|
||||
size: Tiny
|
||||
size: 1
|
||||
sprite: Objects/Weapons/Melee/debug.rsi
|
||||
|
||||
- type: entity
|
||||
|
||||
@@ -959,7 +959,7 @@
|
||||
- map: ["enum.DamageStateVisualLayers.Base"]
|
||||
state: mouse-0
|
||||
- type: Item
|
||||
size: Tiny
|
||||
size: 5
|
||||
- type: Clothing
|
||||
quickEquip: false
|
||||
sprite: Mobs/Animals/mouse.rsi
|
||||
@@ -1424,7 +1424,7 @@
|
||||
groups:
|
||||
Brute: 5
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: 80
|
||||
- type: OnUseTimerTrigger
|
||||
delay: 10
|
||||
beepSound:
|
||||
@@ -2329,7 +2329,7 @@
|
||||
- map: ["enum.DamageStateVisualLayers.Base"]
|
||||
state: hamster-0
|
||||
- type: Item
|
||||
size: Tiny
|
||||
size: 5
|
||||
- type: Physics
|
||||
- type: Fixtures
|
||||
fixtures:
|
||||
|
||||
@@ -172,9 +172,7 @@
|
||||
graph: SupplyBot
|
||||
node: bot
|
||||
- type: Storage
|
||||
maxSlots: 15
|
||||
maxItemSize: Large
|
||||
maxTotalWeight: 60
|
||||
capacity: 250
|
||||
- type: UserInterface
|
||||
interfaces:
|
||||
- key: enum.StorageUiKey.Key
|
||||
|
||||
@@ -370,9 +370,9 @@
|
||||
map: ["6pack6"]
|
||||
visible: false
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: 6
|
||||
- type: Storage
|
||||
maxSlots: 6
|
||||
capacity: 30
|
||||
whitelist:
|
||||
tags:
|
||||
- Cola
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
abstract: true
|
||||
components:
|
||||
- type: Item
|
||||
size: Tiny
|
||||
size: 1
|
||||
- type: FlavorProfile
|
||||
flavors:
|
||||
- bread
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
- ReagentId: Vitamin
|
||||
Quantity: 5
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: 25
|
||||
|
||||
- type: entity
|
||||
parent: FoodCakeBase
|
||||
@@ -43,7 +43,7 @@
|
||||
- ReagentId: Vitamin
|
||||
Quantity: 1
|
||||
- type: Item
|
||||
size: Tiny
|
||||
size: 5
|
||||
|
||||
# Custom Cake Example
|
||||
|
||||
@@ -574,7 +574,7 @@
|
||||
- type: Food
|
||||
transferAmount: 12
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: 40
|
||||
- type: PointLight
|
||||
color: "#FFFF00"
|
||||
radius: 2
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
- ReagentId: Nutriment
|
||||
Quantity: 3
|
||||
- type: Item
|
||||
size: Tiny
|
||||
size: 1
|
||||
- type: Tag
|
||||
tags:
|
||||
- DonkPocket
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
Quantity: 3
|
||||
- type: Item
|
||||
sprite: Objects/Consumable/Food/Baked/donut.rsi
|
||||
size: Tiny
|
||||
size: 1
|
||||
# Tastes like donut.
|
||||
|
||||
# The sprinkles are now an overlay, so you can put them on any donut! If we really
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
- ReagentId: Nutriment
|
||||
Quantity: 5
|
||||
- type: Item
|
||||
size: Tiny
|
||||
size: 1
|
||||
|
||||
# Muffins/Buns
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
- type: SliceableFood
|
||||
count: 8
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: 8
|
||||
- type: Tag
|
||||
tags:
|
||||
- Pizza
|
||||
@@ -53,7 +53,7 @@
|
||||
- ReagentId: Vitamin
|
||||
Quantity: 0.8
|
||||
- type: Item
|
||||
size: Tiny
|
||||
size: 1
|
||||
- type: Tag
|
||||
tags:
|
||||
- Pizza
|
||||
|
||||
@@ -38,14 +38,13 @@
|
||||
map: ["pink-box6"]
|
||||
visible: false
|
||||
- type: Storage
|
||||
maxSlots: 6
|
||||
maxTotalWeight: 12
|
||||
capacity: 6
|
||||
whitelist:
|
||||
tags:
|
||||
- Donut
|
||||
- type: Item
|
||||
sprite: Objects/Consumable/Food/Baked/donut.rsi
|
||||
size: Small
|
||||
size: 6
|
||||
heldPrefix: box
|
||||
- type: StorageFill
|
||||
contents:
|
||||
@@ -119,13 +118,13 @@
|
||||
map: ["box12"]
|
||||
visible: false
|
||||
- type: Storage
|
||||
maxSlots: 12
|
||||
capacity: 12
|
||||
whitelist:
|
||||
tags:
|
||||
- Egg
|
||||
- type: Item
|
||||
sprite: Objects/Consumable/Food/egg.rsi
|
||||
size: Small
|
||||
size: 12
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- id: FoodEgg
|
||||
@@ -176,9 +175,6 @@
|
||||
id: EggBoxBroken
|
||||
suffix: Broken
|
||||
components:
|
||||
- type: Storage
|
||||
maxSlots: 12
|
||||
maxItemSize: Small
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- id: Eggshells
|
||||
@@ -210,8 +206,7 @@
|
||||
map: ["enum.StorageVisualLayers.Door"]
|
||||
# TODO make these entitystorage again + placeablesurface after entity storage ECS gets merged.
|
||||
- type: Storage
|
||||
maxSlots: 1
|
||||
maxItemSize: Normal
|
||||
capacity: 8
|
||||
whitelist:
|
||||
tags:
|
||||
- Pizza
|
||||
@@ -301,10 +296,10 @@
|
||||
map: ["box6"]
|
||||
visible: false
|
||||
- type: Storage
|
||||
maxSlots: 6
|
||||
capacity: 6
|
||||
- type: Item
|
||||
sprite: Objects/Consumable/Food/Baked/nuggets.rsi
|
||||
size: Small
|
||||
size: 6
|
||||
heldPrefix: box
|
||||
- type: StorageFill
|
||||
contents:
|
||||
@@ -338,10 +333,10 @@
|
||||
whitelist:
|
||||
tags:
|
||||
- DonkPocket
|
||||
maxSlots: 6
|
||||
capacity: 6
|
||||
- type: Item
|
||||
sprite: Objects/Consumable/Food/Baked/donkpocket.rsi
|
||||
size: Small
|
||||
size: 6
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- id: FoodDonkpocket
|
||||
@@ -463,6 +458,8 @@
|
||||
- type: Item
|
||||
sprite: Objects/Storage/Happyhonk/clown.rsi
|
||||
heldPrefix: box
|
||||
- type: Storage
|
||||
capacity: 30
|
||||
- type: Tag
|
||||
tags:
|
||||
- Trash
|
||||
@@ -586,8 +583,10 @@
|
||||
suffix: Toy Unsafe, Snacks
|
||||
name: syndicate snack box
|
||||
components:
|
||||
- type: Item
|
||||
size: 64
|
||||
- type: Storage
|
||||
maxSlots: 9
|
||||
capacity: 64 # need more room for goodies
|
||||
- type: StorageFill
|
||||
contents:
|
||||
# toy
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
- type: Item
|
||||
sprite: Objects/Consumable/Food/snacks.rsi
|
||||
heldPrefix: packet
|
||||
size: Tiny
|
||||
size: 3
|
||||
- type: DamageOnLand
|
||||
damage:
|
||||
types:
|
||||
@@ -63,7 +63,7 @@
|
||||
- type: Item
|
||||
sprite: Objects/Consumable/Food/snacks.rsi
|
||||
heldPrefix: packet
|
||||
size: Tiny
|
||||
size: 3
|
||||
- type: PhysicalComposition
|
||||
materialComposition:
|
||||
Steel: 100
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
sprite: Objects/Consumable/Food/egg.rsi
|
||||
- type: Item
|
||||
sprite: Objects/Consumable/Food/egg.rsi
|
||||
size: Tiny
|
||||
size: 1
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
food:
|
||||
@@ -69,7 +69,7 @@
|
||||
sprite: Objects/Consumable/Food/egg.rsi
|
||||
state: eggshells
|
||||
- type: Item
|
||||
size: Tiny
|
||||
size: 1
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
food:
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
- ReagentId: Fat
|
||||
Quantity: 5
|
||||
- type: Item
|
||||
size: Tiny
|
||||
size: 5
|
||||
- type: Fixtures
|
||||
fixtures:
|
||||
fix1:
|
||||
|
||||
@@ -136,7 +136,7 @@
|
||||
- type: Sprite
|
||||
sprite: Objects/Specific/Hydroponics/nettle.rsi
|
||||
- type: Item
|
||||
size: Small
|
||||
size: 10
|
||||
sprite: Objects/Specific/Hydroponics/nettle.rsi
|
||||
- type: MeleeWeapon
|
||||
damage:
|
||||
@@ -166,7 +166,7 @@
|
||||
- type: Sprite
|
||||
sprite: Objects/Specific/Hydroponics/death_nettle.rsi
|
||||
- type: Item
|
||||
size: Small
|
||||
size: 10
|
||||
sprite: Objects/Specific/Hydroponics/death_nettle.rsi
|
||||
- type: MeleeWeapon
|
||||
damage:
|
||||
@@ -836,7 +836,7 @@
|
||||
sprite: Objects/Specific/Hydroponics/corn.rsi
|
||||
state: cob
|
||||
- type: Item
|
||||
size: Tiny
|
||||
size: 1
|
||||
- type: Tag
|
||||
tags:
|
||||
- Trash
|
||||
@@ -1365,7 +1365,7 @@
|
||||
description: Round green object that you can slice and eat.
|
||||
components:
|
||||
- type: Item
|
||||
size: Small
|
||||
size: 10
|
||||
- type: FlavorProfile
|
||||
flavors:
|
||||
- watermelon
|
||||
@@ -1427,7 +1427,7 @@
|
||||
description: Juicy green and red slice.
|
||||
components:
|
||||
- type: Item
|
||||
size: Tiny
|
||||
size: 2
|
||||
- type: FlavorProfile
|
||||
flavors:
|
||||
- watermelon
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
- ReagentId: Nutriment
|
||||
Quantity: 8
|
||||
- type: Item
|
||||
size: Small
|
||||
size: 5
|
||||
|
||||
# Kebabs
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
- type: Item
|
||||
sprite: Objects/Consumable/Food/snacks.rsi
|
||||
heldPrefix: packet
|
||||
size: Tiny
|
||||
size: 3
|
||||
# Snacks
|
||||
|
||||
# "Snacks" means food in a packet. Down the line this stuff can have multiple
|
||||
@@ -101,7 +101,7 @@
|
||||
state: chocolatebar
|
||||
- type: Item
|
||||
heldPrefix: chocolatebar
|
||||
size: Tiny
|
||||
size: 3
|
||||
- type: Tag
|
||||
tags:
|
||||
- FoodSnack
|
||||
@@ -346,7 +346,7 @@
|
||||
- type: Item
|
||||
sprite: Objects/Consumable/Food/snacks.rsi
|
||||
heldPrefix: packet
|
||||
size: Tiny
|
||||
size: 1
|
||||
- type: Food
|
||||
trash: FoodCookieFortune
|
||||
|
||||
@@ -357,7 +357,7 @@
|
||||
description: A carefully synthesized brick designed to contain the highest ratio of nutriment to volume. Tastes like shit.
|
||||
components:
|
||||
- type: Item
|
||||
size: Small
|
||||
size: 10
|
||||
- type: Tag
|
||||
tags:
|
||||
- FoodSnack
|
||||
@@ -381,7 +381,7 @@
|
||||
flavors:
|
||||
- nutribrick
|
||||
- type: Item
|
||||
size: Small
|
||||
size: 10
|
||||
- type: Sprite
|
||||
state: nutribrick-open
|
||||
- type: Food
|
||||
|
||||
@@ -10,9 +10,11 @@
|
||||
- state: closed
|
||||
- state: open
|
||||
map: ["openLayer"]
|
||||
- type: Storage
|
||||
capacity: 36
|
||||
- type: Item
|
||||
sprite: Objects/Consumable/Smokeables/Cigarettes/Cartons/green.rsi
|
||||
size: Normal
|
||||
size: 36
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- id: CigPackGreen
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
slots: [ mask ]
|
||||
equippedPrefix: unlit
|
||||
- type: Item
|
||||
size: Tiny
|
||||
size: 1
|
||||
- type: Construction
|
||||
graph: smokeableCigarette
|
||||
node: cigarette
|
||||
@@ -41,7 +41,7 @@
|
||||
slots: [ mask ]
|
||||
equippedPrefix: unlit
|
||||
- type: Item
|
||||
size: Tiny
|
||||
size: 1
|
||||
- type: Construction
|
||||
graph: smokeableCigarette
|
||||
node: cigarette
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
slots: [ mask ]
|
||||
equippedPrefix: unlit
|
||||
- type: Item
|
||||
size: Tiny
|
||||
size: 1
|
||||
- type: Construction
|
||||
graph: smokeableJoint
|
||||
node: joint
|
||||
@@ -48,7 +48,7 @@
|
||||
slots: [ mask ]
|
||||
equippedPrefix: unlit
|
||||
- type: Item
|
||||
size: Tiny
|
||||
size: 1
|
||||
- type: Construction
|
||||
graph: smokeableBlunt
|
||||
node: blunt
|
||||
|
||||
@@ -43,9 +43,9 @@
|
||||
Steel: 50
|
||||
- type: SpaceGarbage
|
||||
- type: Storage
|
||||
maxSlots: 5
|
||||
capacity: 5
|
||||
- type: Item
|
||||
size: Small
|
||||
size: 5
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- id: Cigarette
|
||||
@@ -108,10 +108,9 @@
|
||||
Steel: 50
|
||||
- type: SpaceGarbage
|
||||
- type: Storage
|
||||
maxSlots: 10
|
||||
maxTotalWeight: 20
|
||||
capacity: 10
|
||||
- type: Item
|
||||
size: Small
|
||||
size: 10
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- id: CigaretteRandom
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
tags:
|
||||
- RollingPaper
|
||||
- CigFilter
|
||||
maxSlots: 20
|
||||
capacity: 20
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- id: PaperRolling
|
||||
@@ -31,6 +31,7 @@
|
||||
tags:
|
||||
- RollingPaper
|
||||
- CigFilter
|
||||
capacity: 32
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- id: PaperRolling
|
||||
@@ -53,7 +54,7 @@
|
||||
state: cigpaper
|
||||
- type: Item
|
||||
sprite: Objects/Consumable/Smokeables/Cigarettes/paper.rsi
|
||||
size: Tiny
|
||||
size: 5
|
||||
- type: Tag
|
||||
tags:
|
||||
- RollingPaper
|
||||
@@ -67,6 +68,8 @@
|
||||
components:
|
||||
- type: Stack
|
||||
count: 1
|
||||
- type: Item
|
||||
size: 1
|
||||
|
||||
- type: entity
|
||||
id: CigaretteFilter
|
||||
@@ -83,7 +86,7 @@
|
||||
state: cigfilter
|
||||
- type: Item
|
||||
sprite: Objects/Consumable/Smokeables/Cigarettes/paper.rsi
|
||||
size: Tiny
|
||||
size: 10
|
||||
- type: Tag
|
||||
tags:
|
||||
- CigFilter
|
||||
@@ -96,3 +99,5 @@
|
||||
components:
|
||||
- type: Stack
|
||||
count: 1
|
||||
- type: Item
|
||||
size: 2
|
||||
|
||||
@@ -35,10 +35,10 @@
|
||||
map: ["cigar8"]
|
||||
visible: false
|
||||
- type: Storage
|
||||
maxSlots: 8
|
||||
capacity: 8
|
||||
- type: Item
|
||||
sprite: Objects/Consumable/Smokeables/Cigars/case.rsi
|
||||
size: Small
|
||||
size: 8
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- id: Cigar
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
slots: [ mask ]
|
||||
equippedPrefix: unlit
|
||||
- type: Item
|
||||
size: Tiny
|
||||
size: 1
|
||||
|
||||
- type: entity
|
||||
id: CigarSpent
|
||||
@@ -49,7 +49,7 @@
|
||||
slots: [ mask ]
|
||||
equippedPrefix: unlit
|
||||
- type: Item
|
||||
size: Tiny
|
||||
size: 1
|
||||
|
||||
- type: entity
|
||||
id: CigarGoldSpent
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
slots: [ mask ]
|
||||
equippedPrefix: unlit
|
||||
- type: Item
|
||||
size: Tiny
|
||||
size: 3
|
||||
sprite: Objects/Consumable/Smokeables/Pipes/pipe.rsi
|
||||
- type: Appearance
|
||||
- type: BurnStateVisuals
|
||||
|
||||
@@ -9,6 +9,6 @@
|
||||
layers:
|
||||
- state: icon
|
||||
- type: Item
|
||||
size: Huge
|
||||
size: 1001
|
||||
- type: StaticPrice
|
||||
price: 0
|
||||
|
||||
@@ -15,7 +15,9 @@
|
||||
suffix: Empty
|
||||
components:
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: 30
|
||||
- type: Storage
|
||||
capacity: 30
|
||||
|
||||
- type: entity
|
||||
id: PresentRandomUnsafe
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
sprite: Objects/Devices/timer.rsi
|
||||
state: timer
|
||||
- type: Item
|
||||
size: Small
|
||||
size: 5
|
||||
- type: PayloadTrigger
|
||||
components:
|
||||
- type: OnUseTimerTrigger
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
sprite: Objects/Misc/module.rsi
|
||||
state: abductor_mod
|
||||
- type: Item
|
||||
size: Small
|
||||
size: 10
|
||||
- type: Tag
|
||||
tags:
|
||||
- WeaponPistolCHIMPUpgradeKit
|
||||
@@ -8,7 +8,7 @@
|
||||
sprite: Objects/Devices/forensic_scanner.rsi
|
||||
state: forensicnew
|
||||
- type: Item
|
||||
size: Small
|
||||
size: 5
|
||||
- type: Clothing
|
||||
sprite: Objects/Devices/forensic_scanner.rsi
|
||||
quickEquip: false
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
components:
|
||||
- IdCard
|
||||
- type: Item
|
||||
size: Tiny
|
||||
size: 10
|
||||
- type: ContainerContainer
|
||||
containers:
|
||||
PDA-id: !type:ContainerSlot {}
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
- key: enum.InstrumentUiKey.Key
|
||||
type: InstrumentBoundUserInterface
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: 24
|
||||
- type: StaticPrice
|
||||
price: 200
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
sprite: Objects/Fun/Instruments/trumpet.rsi
|
||||
state: icon
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: 24
|
||||
sprite: Objects/Fun/Instruments/trumpet.rsi
|
||||
- type: Tag
|
||||
tags:
|
||||
@@ -32,7 +32,7 @@
|
||||
sprite: Objects/Fun/Instruments/trombone.rsi
|
||||
state: icon
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: 48
|
||||
sprite: Objects/Fun/Instruments/trombone.rsi
|
||||
- type: Tag
|
||||
tags:
|
||||
@@ -50,7 +50,7 @@
|
||||
sprite: Objects/Fun/Instruments/frenchhorn.rsi
|
||||
state: icon
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: 48
|
||||
sprite: Objects/Fun/Instruments/frenchhorn.rsi
|
||||
- type: Tag
|
||||
tags:
|
||||
@@ -69,7 +69,7 @@
|
||||
sprite: Objects/Fun/Instruments/euphonium.rsi
|
||||
state: icon
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: 48
|
||||
sprite: Objects/Fun/Instruments/euphonium.rsi
|
||||
- type: Tag
|
||||
tags:
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
- type: Instrument
|
||||
program: 121
|
||||
- type: Item
|
||||
size: Small
|
||||
size: 10
|
||||
|
||||
- type: entity
|
||||
parent: BaseHandheldInstrument
|
||||
@@ -24,7 +24,7 @@
|
||||
- type: Instrument
|
||||
program: 122
|
||||
- type: Item
|
||||
size: Small
|
||||
size: 10
|
||||
|
||||
- type: entity
|
||||
parent: BaseHandheldInstrument
|
||||
@@ -38,7 +38,7 @@
|
||||
- type: Instrument
|
||||
program: 123
|
||||
- type: Item
|
||||
size: Tiny
|
||||
size: 5
|
||||
|
||||
- type: entity
|
||||
parent: BaseHandheldInstrument
|
||||
@@ -55,7 +55,7 @@
|
||||
- type: Instrument
|
||||
program: 124
|
||||
- type: Item
|
||||
size: Small
|
||||
size: 10
|
||||
- type: Prayable
|
||||
sentMessage: prayer-popup-notify-centcom-sent
|
||||
notifiactionPrefix: prayer-chat-notify-centcom
|
||||
@@ -74,7 +74,7 @@
|
||||
- type: Instrument
|
||||
program: 125
|
||||
- type: Item
|
||||
size: Small
|
||||
size: 10
|
||||
|
||||
- type: entity
|
||||
parent: BaseHandheldInstrument
|
||||
@@ -88,7 +88,7 @@
|
||||
- type: Instrument
|
||||
program: 126
|
||||
- type: Item
|
||||
size: Tiny
|
||||
size: 5
|
||||
|
||||
- type: entity
|
||||
parent: BaseHandheldInstrument
|
||||
@@ -102,7 +102,7 @@
|
||||
sprite: Objects/Fun/Instruments/gunpet.rsi
|
||||
state: icon
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: 15
|
||||
sprite: Objects/Fun/Instruments/gunpet.rsi
|
||||
- type: Tag
|
||||
tags:
|
||||
@@ -125,7 +125,7 @@
|
||||
- BrassInstrument #Go figure.
|
||||
- type: Item
|
||||
sprite: Objects/Fun/Instruments/bike_horn.rsi
|
||||
size: Small
|
||||
size: 10
|
||||
- type: Clothing
|
||||
sprite: Objects/Fun/Instruments/bike_horn.rsi
|
||||
slots: [Belt]
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
sprite: Objects/Fun/Instruments/glockenspiel.rsi
|
||||
state: icon
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: 24
|
||||
sprite: Objects/Fun/Instruments/glockenspiel.rsi
|
||||
- type: Tag
|
||||
tags:
|
||||
@@ -58,7 +58,7 @@
|
||||
sprite: Objects/Fun/Instruments/microphone.rsi
|
||||
state: icon
|
||||
- type: Item
|
||||
size: Small
|
||||
size: 10
|
||||
sprite: Objects/Fun/Instruments/microphone.rsi
|
||||
|
||||
- type: entity
|
||||
@@ -76,7 +76,7 @@
|
||||
sprite: Objects/Fun/Instruments/h_synthesizer.rsi
|
||||
state: icon
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: 24
|
||||
sprite: Objects/Fun/Instruments/h_synthesizer.rsi
|
||||
- type: Tag
|
||||
tags:
|
||||
@@ -135,5 +135,5 @@
|
||||
sprite: Objects/Fun/Instruments/h_synthesizer.rsi
|
||||
state: icon
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: 24
|
||||
sprite: Objects/Fun/Instruments/h_synthesizer.rsi
|
||||
@@ -15,7 +15,7 @@
|
||||
sprite: Objects/Fun/Instruments/eguitar.rsi
|
||||
state: icon
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: 24
|
||||
sprite: Objects/Fun/Instruments/eguitar.rsi
|
||||
- type: Clothing
|
||||
quickEquip: false
|
||||
@@ -44,7 +44,7 @@
|
||||
sprite: Objects/Fun/Instruments/bassguitar.rsi
|
||||
state: icon
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: 24
|
||||
sprite: Objects/Fun/Instruments/bassguitar.rsi
|
||||
- type: Clothing
|
||||
quickEquip: false
|
||||
@@ -72,7 +72,7 @@
|
||||
sprite: Objects/Fun/Instruments/rockguitar.rsi
|
||||
state: icon
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: 24
|
||||
sprite: Objects/Fun/Instruments/rockguitar.rsi
|
||||
- type: Clothing
|
||||
quickEquip: false
|
||||
@@ -115,7 +115,7 @@
|
||||
- StringInstrument
|
||||
- type: Item
|
||||
sprite: Objects/Fun/Instruments/guitar.rsi
|
||||
size: Normal
|
||||
size: 24
|
||||
- type: Clothing
|
||||
quickEquip: false
|
||||
slots:
|
||||
@@ -178,7 +178,7 @@
|
||||
sprite: Objects/Fun/Instruments/banjo.rsi
|
||||
state: icon
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: 24
|
||||
sprite: Objects/Fun/Instruments/banjo.rsi
|
||||
- type: Tag
|
||||
tags:
|
||||
@@ -200,7 +200,7 @@
|
||||
sprite: Objects/Fun/Instruments/violin.rsi
|
||||
state: icon
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: 24
|
||||
sprite: Objects/Fun/Instruments/violin.rsi
|
||||
- type: Tag
|
||||
tags:
|
||||
@@ -218,7 +218,7 @@
|
||||
sprite: Objects/Fun/Instruments/viola.rsi
|
||||
state: icon
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: 24
|
||||
sprite: Objects/Fun/Instruments/viola.rsi
|
||||
- type: Tag
|
||||
tags:
|
||||
@@ -236,7 +236,7 @@
|
||||
sprite: Objects/Fun/Instruments/cello.rsi
|
||||
state: icon
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: 48
|
||||
sprite: Objects/Fun/Instruments/cello.rsi
|
||||
- type: Tag
|
||||
tags:
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
sprite: Objects/Fun/Instruments/saxophone.rsi
|
||||
state: icon
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: 24
|
||||
sprite: Objects/Fun/Instruments/saxophone.rsi
|
||||
- type: Tag
|
||||
tags:
|
||||
@@ -45,7 +45,7 @@
|
||||
sprite: Objects/Fun/Instruments/accordion.rsi
|
||||
state: icon
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: 24
|
||||
sprite: Objects/Fun/Instruments/accordion.rsi
|
||||
- type: Tag
|
||||
tags:
|
||||
@@ -62,7 +62,7 @@
|
||||
sprite: Objects/Fun/Instruments/harmonica.rsi
|
||||
state: icon
|
||||
- type: Item
|
||||
size: Small
|
||||
size: 10
|
||||
sprite: Objects/Fun/Instruments/harmonica.rsi
|
||||
- type: Tag
|
||||
tags:
|
||||
@@ -80,7 +80,7 @@
|
||||
sprite: Objects/Fun/Instruments/clarinet.rsi
|
||||
state: icon
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: 20
|
||||
sprite: Objects/Fun/Instruments/clarinet.rsi
|
||||
- type: Tag
|
||||
tags:
|
||||
@@ -98,7 +98,7 @@
|
||||
sprite: Objects/Fun/Instruments/flute.rsi
|
||||
state: icon
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: 20
|
||||
sprite: Objects/Fun/Instruments/flute.rsi
|
||||
- type: Tag
|
||||
tags:
|
||||
@@ -116,7 +116,7 @@
|
||||
sprite: Objects/Fun/Instruments/recorder.rsi
|
||||
state: icon
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: 24
|
||||
sprite: Objects/Fun/Instruments/recorder.rsi
|
||||
- type: Tag
|
||||
tags:
|
||||
@@ -134,7 +134,7 @@
|
||||
sprite: Objects/Fun/Instruments/panflute.rsi
|
||||
state: icon
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: 15
|
||||
sprite: Objects/Fun/Instruments/panflute.rsi
|
||||
- type: Tag
|
||||
tags:
|
||||
@@ -153,7 +153,7 @@
|
||||
sprite: Objects/Fun/Instruments/ocarina.rsi
|
||||
state: icon
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: 15
|
||||
sprite: Objects/Fun/Instruments/ocarina.rsi
|
||||
- type: Tag
|
||||
tags:
|
||||
@@ -171,7 +171,7 @@
|
||||
sprite: Objects/Fun/Instruments/bagpipes.rsi
|
||||
state: icon
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: 48
|
||||
sprite: Objects/Fun/Instruments/bagpipes.rsi
|
||||
- type: Tag
|
||||
tags:
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
state: icon
|
||||
- type: Item
|
||||
sprite: Objects/Fun/bikehorn.rsi
|
||||
size: Tiny
|
||||
size: 5
|
||||
- type: Clothing
|
||||
sprite: Objects/Fun/bikehorn.rsi
|
||||
slots: [Belt]
|
||||
@@ -58,7 +58,7 @@
|
||||
state: icon
|
||||
- type: Item
|
||||
sprite: Objects/Fun/cluwnehorn.rsi
|
||||
size: Tiny
|
||||
size: 5
|
||||
- type: Clothing
|
||||
sprite: Objects/Fun/cluwnehorn.rsi
|
||||
slots: [Belt]
|
||||
@@ -100,7 +100,7 @@
|
||||
state: icon
|
||||
- type: Item
|
||||
sprite: Objects/Fun/goldbikehorn.rsi
|
||||
size: Tiny
|
||||
size: 5
|
||||
- type: Clothing
|
||||
sprite: Objects/Fun/goldbikehorn.rsi
|
||||
slots: [Belt]
|
||||
@@ -119,7 +119,7 @@
|
||||
state: icon
|
||||
- type: Item
|
||||
sprite: Objects/Fun/bananiumhorn.rsi
|
||||
size: Tiny
|
||||
size: 5
|
||||
- type: Clothing
|
||||
sprite: Objects/Fun/bananiumhorn.rsi
|
||||
slots: [Belt]
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
sprite: Objects/Fun/crayons.rsi
|
||||
- type: Item
|
||||
sprite: Objects/Fun/crayons.rsi
|
||||
size: Tiny
|
||||
size: 1
|
||||
- type: Tag
|
||||
tags:
|
||||
- Write
|
||||
@@ -235,11 +235,10 @@
|
||||
sprite: Objects/Fun/crayons.rsi
|
||||
state: box
|
||||
- type: Storage
|
||||
maxSlots: 7
|
||||
maxTotalWeight: 7
|
||||
capacity: 7
|
||||
- type: Item
|
||||
sprite: Objects/Fun/crayons.rsi
|
||||
size: Small
|
||||
size: 7
|
||||
heldPrefix: box
|
||||
- type: StorageFill
|
||||
contents:
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
types:
|
||||
Piercing: 4
|
||||
- type: Item
|
||||
size: Tiny
|
||||
size: 2
|
||||
sprite: Objects/Fun/Darts/dart_red.rsi
|
||||
- type: ItemCooldown
|
||||
- type: SolutionContainerManager
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
tags:
|
||||
- Dice
|
||||
- type: Item
|
||||
size: Tiny
|
||||
size: 2
|
||||
|
||||
- type: entity
|
||||
parent: BaseDice
|
||||
|
||||
@@ -17,8 +17,8 @@
|
||||
sprite: Objects/Fun/dice.rsi
|
||||
state: dicebag
|
||||
- type: Item
|
||||
size: Small
|
||||
- type: Storage
|
||||
capacity: 18
|
||||
whitelist:
|
||||
tags:
|
||||
- Dice
|
||||
@@ -32,5 +32,4 @@
|
||||
sprite: Objects/Fun/dice.rsi
|
||||
state: magicdicebag
|
||||
- type: Storage
|
||||
maxSlots: 14
|
||||
maxTotalWeight: 28
|
||||
capacity: 30
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
- type: DoAfter
|
||||
- type: VentriloquistPuppet
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: 30
|
||||
- type: Muted
|
||||
- type: TypingIndicator
|
||||
proto: robot
|
||||
|
||||
@@ -554,7 +554,7 @@
|
||||
components:
|
||||
- type: Sprite
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: 24
|
||||
|
||||
- type: entity
|
||||
parent: FoamWeaponBase
|
||||
@@ -566,7 +566,7 @@
|
||||
sprite: Objects/Fun/toys.rsi
|
||||
state: foamcrossbow
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: 24
|
||||
sprite: Objects/Fun/toys.rsi
|
||||
heldPrefix: foamcrossbow
|
||||
- type: Gun
|
||||
@@ -672,7 +672,7 @@
|
||||
types:
|
||||
Blunt: 0
|
||||
- type: Item
|
||||
size: Small
|
||||
size: 20
|
||||
sprite: Objects/Fun/toys.rsi
|
||||
heldPrefix: foamblade
|
||||
- type: ItemCooldown
|
||||
@@ -692,7 +692,7 @@
|
||||
sound:
|
||||
path: /Audio/Effects/Footsteps/bounce.ogg
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: 24
|
||||
sprite: Objects/Fun/toys.rsi
|
||||
heldPrefix: bask
|
||||
- type: TileFrictionModifier
|
||||
@@ -708,7 +708,7 @@
|
||||
sprite: Objects/Fun/toys.rsi
|
||||
state: football
|
||||
- type: Item
|
||||
size: Small
|
||||
size: 12
|
||||
sprite: Objects/Fun/toys.rsi
|
||||
heldPrefix: footb
|
||||
|
||||
@@ -725,7 +725,7 @@
|
||||
sound:
|
||||
path: /Audio/Effects/Footsteps/bounce.ogg
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: 24
|
||||
sprite: Objects/Fun/toys.rsi
|
||||
heldPrefix: beachb
|
||||
- type: TileFrictionModifier
|
||||
@@ -741,7 +741,7 @@
|
||||
sprite: Objects/Fun/toys.rsi
|
||||
state: synb
|
||||
- type: Item
|
||||
size: Small
|
||||
size: 24
|
||||
sprite: Objects/Fun/toys.rsi
|
||||
heldPrefix: synb
|
||||
- type: Damageable
|
||||
@@ -760,7 +760,7 @@
|
||||
sprite: Objects/Fun/toys.rsi
|
||||
state: corgib
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: 24
|
||||
sprite: Objects/Fun/toys.rsi
|
||||
heldPrefix: corgib
|
||||
- type: Damageable
|
||||
@@ -785,7 +785,7 @@
|
||||
intensity: 2000
|
||||
falloffPower: 2.6
|
||||
- type: Item
|
||||
size: Small
|
||||
size: 12
|
||||
sprite: Objects/Fun/toys.rsi
|
||||
heldPrefix: singularitytoy
|
||||
|
||||
@@ -803,7 +803,7 @@
|
||||
radius: 2
|
||||
color: "#00CCFF"
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: 24
|
||||
sprite: Objects/Fun/toys.rsi
|
||||
heldPrefix: orb
|
||||
- type: TileFrictionModifier
|
||||
@@ -828,7 +828,7 @@
|
||||
shader: unshaded
|
||||
map: [ "blade" ]
|
||||
- type: Item
|
||||
size: Small
|
||||
size: 5
|
||||
sprite: Objects/Weapons/Melee/e_sword.rsi
|
||||
- type: UseDelay
|
||||
delay: 1.0
|
||||
@@ -892,7 +892,7 @@
|
||||
types:
|
||||
Blunt: 0
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: 15
|
||||
sprite: Objects/Weapons/Melee/cutlass.rsi
|
||||
|
||||
- type: entity
|
||||
@@ -934,7 +934,7 @@
|
||||
- type: StaminaDamageOnHit
|
||||
damage: 8
|
||||
- type: Item
|
||||
size: Small
|
||||
size: 5
|
||||
sprite: Objects/Fun/rubber_hammer.rsi
|
||||
- type: Appearance
|
||||
- type: DisarmMalus
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
sprite: Objects/Materials/Sheets/glass.rsi
|
||||
- type: Item
|
||||
sprite: Objects/Materials/Sheets/glass.rsi
|
||||
size: Normal
|
||||
size: 30
|
||||
- type: StaticPrice
|
||||
price: 0
|
||||
- type: Tag
|
||||
@@ -83,6 +83,8 @@
|
||||
- type: Stack
|
||||
stackType: Glass
|
||||
count: 10
|
||||
- type: Item
|
||||
size: 10
|
||||
|
||||
- type: entity
|
||||
parent: SheetGlass
|
||||
@@ -94,12 +96,16 @@
|
||||
- type: Stack
|
||||
stackType: Glass
|
||||
count: 1
|
||||
- type: Item
|
||||
size: 1
|
||||
|
||||
- type: entity
|
||||
parent: SheetGlass
|
||||
id: SheetGlassLingering0
|
||||
suffix: Lingering, 0
|
||||
components:
|
||||
- type: Item
|
||||
size: 0
|
||||
- type: Stack
|
||||
lingering: true
|
||||
count: 0
|
||||
@@ -168,6 +174,8 @@
|
||||
- type: Stack
|
||||
stackType: ReinforcedGlass
|
||||
count: 1
|
||||
- type: Item
|
||||
size: 1
|
||||
|
||||
- type: entity
|
||||
parent: SheetGlassBase
|
||||
@@ -193,6 +201,7 @@
|
||||
map: ["base"]
|
||||
- type: Item
|
||||
heldPrefix: pglass
|
||||
size: 30
|
||||
- type: Construction
|
||||
graph: Glass
|
||||
node: SheetPGlass
|
||||
@@ -230,6 +239,8 @@
|
||||
- type: Stack
|
||||
stackType: PlasmaGlass
|
||||
count: 1
|
||||
- type: Item
|
||||
size: 1
|
||||
|
||||
- type: entity
|
||||
parent: SheetPGlass
|
||||
@@ -270,6 +281,8 @@
|
||||
- type: Stack
|
||||
stackType: ReinforcedPlasmaGlass
|
||||
count: 1
|
||||
- type: Item
|
||||
size: 1
|
||||
|
||||
- type: entity
|
||||
parent: SheetGlassBase
|
||||
@@ -332,6 +345,8 @@
|
||||
- type: Stack
|
||||
stackType: UraniumGlass
|
||||
count: 1
|
||||
- type: Item
|
||||
size: 1
|
||||
|
||||
- type: entity
|
||||
parent: SheetUGlass
|
||||
@@ -371,3 +386,5 @@
|
||||
- type: Stack
|
||||
stackType: ReinforcedUraniumGlass
|
||||
count: 1
|
||||
- type: Item
|
||||
size: 1
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user