-using System.Numerics;
+using System.Numerics;
using Content.Shared.Physics;
using Content.Shared.Whitelist;
using Robust.Shared.Audio;
[DataField, ViewVariables(VVAccess.ReadWrite)]
public float EnteringRange = 0.18f;
+ /// <summary>
+ /// If true, there may be mobs inside the container, even if the container is an Item
+ /// </summary>
+ [DataField]
+ public bool ItemCanStoreMobs = false;
+
/// <summary>
/// Whether or not to show the contents when the storage is closed
/// </summary>
-using System.Diagnostics.CodeAnalysis;
+using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Numerics;
using Content.Shared.Body.Components;
var storeEv = new StoreMobInItemContainerAttemptEvent();
RaiseLocalEvent(container, ref storeEv);
allowedToEat = storeEv is { Handled: true, Cancelled: false };
+
+ if (component.ItemCanStoreMobs)
+ allowedToEat = true;
}
}
--- /dev/null
+- type: entity
+ id: PetCarrier
+ name: big pet carrier
+ description: Allows large animals to be carried comfortably.
+ parent: BaseStructureDynamic
+ components:
+ - type: Sprite
+ noRot: true
+ drawdepth: Objects
+ sprite: Objects/Storage/petcarrier.rsi
+ layers:
+ - state: pet_carrier_base
+ map: ["enum.StorageVisualLayers.Base"]
+ - state: pet_carrier_door
+ map: ["enum.StorageVisualLayers.Door"]
+ - state: welded
+ visible: false
+ map: ["enum.WeldableLayers.BaseWelded"]
+ - type: Icon
+ sprite: Objects/Storage/petcarrier.rsi
+ state: icon
+ - type: InteractionOutline
+ - type: Physics
+ - type: MultiHandedItem
+ - type: Fixtures
+ fixtures:
+ fix1:
+ shape:
+ !type:PhysShapeCircle
+ radius: 0.45
+ density: 25
+ mask:
+ - SmallMobMask
+ layer:
+ - MachineLayer
+ - type: EntityStorage
+ capacity: 1
+ airtight: false
+ itemCanStoreMobs: true
+ - type: Weldable
+ - type: ResistLocker
+ - type: PlaceableSurface
+ isPlaceable: false
+ - type: Damageable
+ damageContainer: Inorganic
+ damageModifierSet: Wood
+ - type: Destructible
+ thresholds:
+ - trigger:
+ !type:DamageTrigger
+ damage: 50
+ behaviors:
+ - !type:DoActsBehavior
+ acts: ["Destruction"]
+ - type: Appearance
+ - type: EntityStorageVisuals
+ stateDoorOpen: pet_carrier_open
+ stateDoorClosed: pet_carrier_door
+ - type: ContainerContainer
+ containers:
+ entity_storage: !type:Container
+ paper_label: !type:ContainerSlot
+ - type: ItemSlots
+ - type: Item
+ size: Ginormous
+ sprite: Objects/Storage/petcarrier.rsi
\ No newline at end of file
--- /dev/null
+{
+ "version": 1,
+ "license": "CC0-1.0",
+ "copyright": "Taken from TGstation at https://github.com/tgstation/tgstation/commit/8b1ffd1e49a2d30a0aab63264106a3ec0e07f415 and edited by TheShuEd",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "inhand-left",
+ "directions": 4
+ },
+ {
+ "name": "inhand-right",
+ "directions": 4
+ },
+ {
+ "name": "pet_carrier_base"
+ },
+ {
+ "name": "pet_carrier_door"
+ },
+ {
+ "name": "pet_carrier_open"
+ },
+ {
+ "name": "icon"
+ },
+ {
+ "name": "welded"
+ }
+ ]
+}