return null;
// check if sensor is enabled and worn by user
- if (sensor.Mode == SuitSensorMode.SensorOff || sensor.User == null || transform.GridUid == null)
+ if (sensor.Mode == SuitSensorMode.SensorOff || sensor.User == null || !HasComp<MobStateComponent>(sensor.User) || transform.GridUid == null)
return null;
// try to get mobs id from ID slot
--- /dev/null
+- type: entity
+ id: Mannequin
+ parent: BaseStructureDynamic
+ name: mannequin
+ description: It can wear any clothing with style.
+ components:
+ - type: Appearance
+ - type: Sprite
+ sprite: Structures/Decoration/mannequin.rsi
+ state: mannequin
+ noRot: true
+ layers:
+ - map: [ "mannequin" ]
+ sprite: Structures/Decoration/mannequin.rsi
+ state: mannequin
+ - map: [ "jumpsuit" ]
+ - map: [ "outerClothing" ]
+ - map: [ "eyes" ]
+ - map: [ "neck" ]
+ - map: [ "back" ]
+ - map: [ "mask" ]
+ - map: [ "head" ]
+ - type: Rotatable
+ - type: Fixtures
+ fixtures:
+ fix1:
+ shape:
+ !type:PhysShapeCircle
+ radius: 0.2
+ density: 200
+ mask:
+ - MachineMask
+ layer:
+ - MidImpassable
+ - BulletImpassable
+ - type: InteractionOutline
+ - type: Construction
+ graph: Mannequin
+ node: mannequin
+ - type: Damageable
+ damageContainer: Inorganic
+ - type: Destructible
+ thresholds:
+ - trigger:
+ !type:DamageTrigger
+ damage: 200
+ behaviors:
+ - !type:PlaySoundBehavior
+ sound:
+ collection: WoodDestroy
+ - !type:EmptyAllContainersBehaviour
+ - !type:DoActsBehavior
+ acts: [ "Destruction" ]
+ - type: ContainerContainer
+ containers:
+ jumpsuit: !type:ContainerSlot
+ showEnts: False
+ occludes: False
+ ent: null
+ outerClothing: !type:ContainerSlot
+ showEnts: False
+ occludes: False
+ ent: null
+ neck: !type:ContainerSlot
+ showEnts: False
+ occludes: False
+ ent: null
+ mask: !type:ContainerSlot
+ showEnts: False
+ occludes: False
+ ent: null
+ eyes: !type:ContainerSlot
+ showEnts: False
+ occludes: False
+ ent: null
+ head: !type:ContainerSlot
+ showEnts: False
+ occludes: False
+ ent: null
+ suitstorage: !type:ContainerSlot
+ showEnts: False
+ occludes: False
+ ent: null
+ back: !type:ContainerSlot
+ showEnts: False
+ occludes: False
+ ent: null
+ - type: Inventory
+ templateId: mannequin
+ - type: InventorySlots
+ - type: Strippable
+ - type: UserInterface
+ interfaces:
+ enum.StrippingUiKey.Key:
+ type: StrippableBoundUserInterface
\ No newline at end of file
--- /dev/null
+- type: inventoryTemplate
+ id: mannequin
+ slots:
+ - name: jumpsuit
+ slotTexture: uniform
+ slotFlags: INNERCLOTHING
+ stripTime: 3
+ uiWindowPos: 0,1
+ strippingWindowPos: 1,2
+ displayName: Jumpsuit
+ - name: outerClothing
+ slotTexture: suit
+ slotFlags: OUTERCLOTHING
+ stripTime: 3
+ uiWindowPos: 1,1
+ strippingWindowPos: 2,2
+ displayName: Suit
+ - name: neck
+ slotTexture: neck
+ slotFlags: NECK
+ stripTime: 3
+ uiWindowPos: 0,2
+ strippingWindowPos: 0,1
+ displayName: Neck
+ - name: mask
+ stripTime: 3
+ slotTexture: mask
+ slotFlags: MASK
+ uiWindowPos: 1,2
+ strippingWindowPos: 1,1
+ displayName: Mask
+ - name: eyes
+ slotTexture: glasses
+ slotFlags: EYES
+ stripTime: 3
+ uiWindowPos: 0,3
+ strippingWindowPos: 0,0
+ displayName: Eyes
+ - name: head
+ slotTexture: head
+ slotFlags: HEAD
+ stripTime: 3
+ uiWindowPos: 1,3
+ strippingWindowPos: 1,0
+ displayName: Head
+ - name: suitstorage
+ slotTexture: suit_storage
+ slotFlags: SUITSTORAGE
+ slotGroup: MainHotbar
+ stripTime: 3
+ uiWindowPos: 2,0
+ strippingWindowPos: 1,3
+ dependsOn: outerClothing
+ dependsOnComponents:
+ - type: AllowSuitStorage
+ displayName: Suit Storage
+ - name: back
+ slotTexture: back
+ fullTextureName: template_small
+ slotFlags: BACK
+ stripTime: 3
+ uiWindowPos: 3,0
+ strippingWindowPos: 0,2
+ displayName: Back
--- /dev/null
+- type: constructionGraph
+ id: Mannequin
+ start: start
+ graph:
+ - node: start
+ actions:
+ - !type:DestroyEntity {}
+ edges:
+ - to: mannequin
+ completed:
+ - !type:SnapToGrid { }
+ steps:
+ - material: WoodPlank
+ amount: 5
+ - material: MetalRod
+ amount: 2
+ doAfter: 2
+ - node: mannequin
+ entity: Mannequin
+ edges:
+ - to: start
+ completed:
+ - !type:SpawnPrototype
+ prototype: MaterialWoodPlank
+ amount: 5
+ - !type:SpawnPrototype
+ prototype: PartRodMetal
+ amount: 2
+ steps:
+ - tool: Screwing
+ doAfter: 3
canBuildInImpassable: false
conditions:
- !type:TileNotBlocked
+
+- type: construction
+ id: Mannequin
+ name: mannequin
+ description: Wooden mannequin designed for clothing displaying
+ graph: Mannequin
+ startNode: start
+ targetNode: mannequin
+ category: construction-category-furniture
+ icon:
+ sprite: Structures/Decoration/mannequin.rsi
+ state: mannequin
+ objectType: Structure
+ placementMode: SnapgridCenter
+ canRotate: true
+ canBuildInImpassable: false
+ conditions:
+ - !type:TileNotBlocked
\ No newline at end of file
--- /dev/null
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "Made By BombasterDS",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "mannequin",
+ "directions": 4
+ }
+ ]
+}