Gives all wheeled objects low friction (#26601)

* gives all wheeled objects friction

* adjustments to sum stuff
This commit is contained in:
Flareguy
2024-03-31 22:23:59 -05:00
committed by GitHub
parent 5bb0179c25
commit 29d7b73da7
10 changed files with 433 additions and 418 deletions

View File

@@ -87,123 +87,6 @@
- Mop
- MopAdv
- type: entity
name: mop bucket
id: MopBucket
description: Holds water and the tears of the janitor.
components:
- type: Clickable
- type: Sprite
sprite: Objects/Specific/Janitorial/janitorial.rsi
noRot: true
layers:
- state: mopbucket
- state: mopbucket_water-1
map: ["enum.SolutionContainerLayers.Fill"]
visible: false
drawdepth: Objects
- type: InteractionOutline
- type: SolutionContainerManager
solutions:
bucket:
maxVol: 600
- type: Spillable
solution: bucket
spillDelay: 3.0
- type: DrainableSolution
solution: bucket
- type: RefillableSolution
solution: bucket
- type: ExaminableSolution
solution: bucket
- type: Tag
tags:
- Wringer
- type: ItemMapper
mapLayers:
mopbucket_shark_blue:
whitelist:
tags:
- PlushieSharkBlue
mopbucket_shark_pink:
whitelist:
tags:
- PlushieSharkPink
mopbucket_shark_grey:
whitelist:
tags:
- PlushieSharkGrey
sprite: Objects/Fun/sharkplush.rsi
- type: Physics
bodyType: Dynamic
- type: Transform
noRot: true
- type: ItemSlots
slots:
shark_slot:
name: mop-bucket-slot-component-slot-name-shark
whitelist:
tags:
- PlushieSharkBlue
- PlushieSharkPink
- PlushieSharkGrey
priority: 3 # Higher than drinking priority
- type: Fixtures
fixtures:
fix1:
shape:
!type:PhysShapeAabb
bounds: "-0.25,-0.40,0.25,0.25"
density: 60
mask:
- MobMask
layer:
- MobLayer
- type: Pullable
- type: Drink
solution: bucket
- type: Appearance
- type: SolutionContainerVisuals
maxFillLevels: 3
fillBaseName: mopbucket_water-
- type: ContainerContainer
containers:
storagebase: !type:Container
ents: []
shark_slot: !type:ContainerSlot {}
- type: GuideHelp
guides:
- Janitorial
- type: Damageable
damageContainer: Inorganic
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 70
behaviors:
- !type:DoActsBehavior
acts: ["Destruction"]
- type: entity
name: mop bucket
id: MopBucketFull
parent: MopBucket
suffix: full
components:
- type: Sprite
layers:
- state: mopbucket
- state: mopbucket_water-3
map: [ "enum.SolutionContainerLayers.Fill" ]
- type: SolutionContainerManager
solutions:
bucket:
maxVol: 600
reagents:
- ReagentId: Water
Quantity: 600
- type: entity
name: wet floor sign
id: WetFloorSign
@@ -279,291 +162,6 @@
tags: # ignore "WhitelistChameleon" tag
- WetFloorSign
- type: entity
name: janitorial trolley
id: JanitorialTrolley
parent: BaseStructureDynamic
description: This is the alpha and omega of sanitation.
components:
- type: Sprite
noRot: true
sprite: Objects/Specific/Janitorial/janitorial_cart.rsi
layers:
- state: cart
- state: cart_water-1
map: ["enum.SolutionContainerLayers.Fill"]
visible: false
- type: Rotatable
- type: InteractionOutline
# Removing storage until OnInteractUsing logic resolved
#- type: Storage
# popup: false
# capacity: 80
# blacklist: # there is exclusive item slots for that
# tags:
# - Mop
# - TrashBag
# - Bucket
- type: ItemSlots
slots:
mop_slot:
name: janitorial-trolley-slot-component-slot-name-mop
whitelist:
tags:
- Mop
insertOnInteract: false # or it conflicts with bucket logic
priority: 9 # Higher than bucket slot
plunger_slot:
name: janitorial-trolley-slot-component-slot-name-plunger
whitelist:
tags:
- Plunger
priority: 8
wetfloorsign_slot4:
name: janitorial-trolley-slot-component-slot-name-sign
whitelist:
tags:
- WetFloorSign
priority: 7
wetfloorsign_slot3:
name: janitorial-trolley-slot-component-slot-name-sign
whitelist:
tags:
- WetFloorSign
priority: 7
wetfloorsign_slot2:
name: janitorial-trolley-slot-component-slot-name-sign
whitelist:
tags:
- WetFloorSign
priority: 7
wetfloorsign_slot1:
name: janitorial-trolley-slot-component-slot-name-sign
whitelist:
tags:
- WetFloorSign
priority: 7
lightreplacer_slot:
name: janitorial-trolley-slot-component-slot-name-lightreplacer
whitelist:
components:
- LightReplacer
priority: 6
spraybottle_slot:
name: janitorial-trolley-slot-component-slot-name-spray
whitelist:
tags:
- Spray
insertOnInteract: false # or it conflicts with bucket logic
priority: 5 # Higher than bucket slot
bucket_slot:
name: janitorial-trolley-slot-component-slot-name-bucket
whitelist:
tags:
- Bucket
insertOnInteract: false # or it also conflicts with bucket logic
priority: 4 # Higher than trash bag slot
trashbag_slot:
name: janitorial-trolley-slot-component-slot-name-trashbag
whitelist:
tags:
- TrashBag
priority: 3 # Higher than drinking priority
- type: Fixtures
fixtures:
fix1:
shape:
!type:PhysShapeCircle
radius: 0.3
density: 250
layer:
- MobLayer
mask:
- MobMask
- type: Spillable
solution: bucket
spillDelay: 3.0
- type: SolutionContainerManager
solutions:
bucket:
maxVol: 800
reagents:
- ReagentId: Water
Quantity: 600 # 3 quarters full at roundstart to make it more appealing
- type: DrainableSolution
solution: bucket
- type: RefillableSolution
solution: bucket
- type: ExaminableSolution
solution: bucket
- type: Tag
tags:
- Wringer
- type: Damageable
damageContainer: Inorganic
damageModifierSet: Metallic
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 400
behaviors:
- !type:DoActsBehavior
acts: [ "Destruction" ]
- trigger:
!type:DamageTrigger
damage: 200
behaviors:
- !type:EmptyAllContainersBehaviour
- !type:DoActsBehavior
acts: ["Destruction"]
- !type:PlaySoundBehavior
sound:
collection: MetalBreak
- type: ItemMapper
mapLayers:
cart_plunger:
whitelist:
tags:
- Plunger
cart_mop:
whitelist:
tags:
- MopBasic
cart_advmop:
whitelist:
tags:
- MopAdv
cart_garbage:
whitelist:
tags:
- TrashBag
cart_replacer:
whitelist:
components:
- LightReplacer
cart_spray:
whitelist:
tags:
- Spray
cart_sign1: # this is like stack of floor signs
minCount: 1
whitelist:
tags:
- WetFloorSign
cart_sign2:
minCount: 2
whitelist:
tags:
- WetFloorSign
cart_sign3:
minCount: 3
whitelist:
tags:
- WetFloorSign
cart_sign4:
minCount: 4
whitelist:
tags:
- WetFloorSign
cart_bucket:
whitelist:
tags:
- Bucket
sprite: Objects/Specific/Janitorial/janitorial_cart.rsi
- type: Appearance
- type: SolutionContainerVisuals
maxFillLevels: 3
fillBaseName: cart_water-
- type: UserInterface
interfaces:
- key: enum.StorageUiKey.Key
type: StorageBoundUserInterface
- type: Drink
solution: bucket
- type: ContainerContainer
containers:
storagebase: !type:Container
ents: []
mop_slot: !type:ContainerSlot {}
trashbag_slot: !type:ContainerSlot {}
bucket_slot: !type:ContainerSlot {}
plunger_slot: !type:ContainerSlot {}
wetfloorsign_slot4: !type:ContainerSlot {}
wetfloorsign_slot3: !type:ContainerSlot {}
wetfloorsign_slot2: !type:ContainerSlot {}
wetfloorsign_slot1: !type:ContainerSlot {}
lightreplacer_slot: !type:ContainerSlot {}
spraybottle_slot: !type:ContainerSlot {}
- type: GuideHelp
guides:
- Janitorial
- type: TileFrictionModifier
modifier: 0.4 # makes it slide
- type: entity
id: FloorDrain
name: drain
description: Drains puddles around it. Useful for dumping mop buckets or keeping certain rooms clean.
placement:
mode: SnapgridCenter
components:
- type: Sprite
drawdepth: FloorObjects
sprite: Objects/Specific/Janitorial/drain.rsi
layers:
- state: icon
- map: [ "enum.SolutionContainerLayers.Fill" ]
state: fill-1
visible: false
- type: InteractionOutline
- type: Clickable
- type: Transform
anchored: true
- type: Physics
bodyType: Static
canCollide: false
- type: AmbientSound
enabled: false
volume: -8
range: 8
sound:
path: /Audio/Ambience/Objects/drain.ogg
- type: Drain
- type: DumpableSolution
solution: drainBuffer
- type: Appearance
- type: SolutionContainerVisuals
maxFillLevels: 1
fillBaseName: fill-
solutionName: drainBuffer
- type: SolutionContainerManager
solutions:
drainBuffer:
maxVol: 1000
- type: DrainableSolution
solution: drainBuffer
- type: Damageable
damageContainer: Inorganic
damageModifierSet: Metallic
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 200
behaviors:
- !type:DoActsBehavior
acts: [ "Destruction" ]
- trigger:
!type:DamageTrigger
damage: 100
behaviors:
- !type:DoActsBehavior
acts: [ "Destruction" ]
- !type:PlaySoundBehavior
sound:
collection: MetalBreak
- type: entity
name: plunger
id: Plunger

View File

@@ -1,5 +1,5 @@
- type: entity
parent: BaseStructure
parent: [BaseStructure, StructureWheeled]
id: NuclearBomb
name: nuclear fission explosive
description: You probably shouldn't stick around to see if this is armed.
@@ -49,7 +49,7 @@
shape:
!type:PhysShapeCircle
radius: 0.45
density: 80 #It has wheels and bluespace tech to make it lighter.
density: 255 # Has "bluespace technology" to make it lighter, whatever that means. Don't mind the fact that this is lighter then a high capacity fuel tank.
mask:
- MachineMask
layer:

View File

@@ -1,6 +1,6 @@
- type: entity
id: PortableScrubber
parent: [BaseMachinePowered, ConstructibleMachine]
parent: [BaseMachinePowered, ConstructibleMachine, StructureWheeled]
name: portable scrubber
description: It scrubs, portably!
components:

View File

@@ -6,7 +6,7 @@
- type: entity
abstract: true
id: PortableGeneratorBase
parent: [ BaseMachine, ConstructibleMachine ]
parent: [ BaseMachine, ConstructibleMachine, StructureWheeled]
components:
# Basic properties
- type: Transform
@@ -27,8 +27,8 @@
shape:
!type:PhysShapeAabb
bounds: "-0.40,-0.40,0.40,0.40"
# It has wheels
density: 45
# Despite the heavy weight, it has wheels, so it's still fairly portable.
density: 155
mask:
- MachineMask
layer:
@@ -259,8 +259,7 @@
shape:
!type:PhysShapeAabb
bounds: "-0.30,-0.30,0.30,0.30"
# It has wheels
density: 30
density: 80
mask:
- MachineMask
layer:
@@ -357,4 +356,4 @@
damage: 75
behaviors:
- !type:SolutionExplosionBehavior
solution: tank
solution: tank

View File

@@ -0,0 +1,62 @@
- type: entity
id: FloorDrain
name: drain
description: Drains puddles around it. Useful for dumping mop buckets or keeping certain rooms clean.
placement:
mode: SnapgridCenter
components:
- type: Sprite
drawdepth: FloorObjects
sprite: Objects/Specific/Janitorial/drain.rsi
layers:
- state: icon
- map: [ "enum.SolutionContainerLayers.Fill" ]
state: fill-1
visible: false
- type: InteractionOutline
- type: Clickable
- type: Transform
anchored: true
- type: Physics
bodyType: Static
canCollide: false
- type: AmbientSound
enabled: false
volume: -8
range: 8
sound:
path: /Audio/Ambience/Objects/drain.ogg
- type: Drain
- type: DumpableSolution
solution: drainBuffer
- type: Appearance
- type: SolutionContainerVisuals
maxFillLevels: 1
fillBaseName: fill-
solutionName: drainBuffer
- type: SolutionContainerManager
solutions:
drainBuffer:
maxVol: 1000
- type: DrainableSolution
solution: drainBuffer
- type: Damageable
damageContainer: Inorganic
damageModifierSet: Metallic
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 200
behaviors:
- !type:DoActsBehavior
acts: [ "Destruction" ]
- trigger:
!type:DamageTrigger
damage: 100
behaviors:
- !type:DoActsBehavior
acts: [ "Destruction" ]
- !type:PlaySoundBehavior
sound:
collection: MetalBreak

View File

@@ -0,0 +1,324 @@
# Mop Bucket
- type: entity
name: mop bucket
id: MopBucket
parent: [BaseStructureDynamic, StructureWheeled]
description: Holds water and the tears of the janitor.
components:
- type: Clickable
- type: Sprite
sprite: Objects/Specific/Janitorial/janitorial.rsi
noRot: true
layers:
- state: mopbucket
- state: mopbucket_water-1
map: ["enum.SolutionContainerLayers.Fill"]
visible: false
drawdepth: Objects
- type: InteractionOutline
- type: SolutionContainerManager
solutions:
bucket:
maxVol: 600
- type: Spillable
solution: bucket
spillDelay: 3.0
- type: DrainableSolution
solution: bucket
- type: RefillableSolution
solution: bucket
- type: ExaminableSolution
solution: bucket
- type: Tag
tags:
- Wringer
- type: ItemMapper
mapLayers:
mopbucket_shark_blue:
whitelist:
tags:
- PlushieSharkBlue
mopbucket_shark_pink:
whitelist:
tags:
- PlushieSharkPink
mopbucket_shark_grey:
whitelist:
tags:
- PlushieSharkGrey
sprite: Objects/Fun/sharkplush.rsi
- type: Transform
noRot: true
- type: ItemSlots
slots:
shark_slot:
name: mop-bucket-slot-component-slot-name-shark
whitelist:
tags:
- PlushieSharkBlue
- PlushieSharkPink
- PlushieSharkGrey
priority: 3 # Higher than drinking priority
- type: Drink
solution: bucket
- type: SolutionContainerVisuals
maxFillLevels: 3
fillBaseName: mopbucket_water-
- type: ContainerContainer
containers:
storagebase: !type:Container
ents: []
shark_slot: !type:ContainerSlot {}
- type: GuideHelp
guides:
- Janitorial
- type: Damageable
damageContainer: Inorganic
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 70
behaviors:
- !type:DoActsBehavior
acts: ["Destruction"]
- type: entity
name: mop bucket
id: MopBucketFull
parent: MopBucket
suffix: full
components:
- type: Sprite
layers:
- state: mopbucket
- state: mopbucket_water-3
map: [ "enum.SolutionContainerLayers.Fill" ]
- type: SolutionContainerManager
solutions:
bucket:
maxVol: 600
reagents:
- ReagentId: Water
Quantity: 600
# Janicart
- type: entity
name: janitorial trolley
id: JanitorialTrolley
parent: [BaseStructureDynamic, StructureWheeled]
description: This is the alpha and omega of sanitation.
components:
- type: Sprite
noRot: true
sprite: Objects/Specific/Janitorial/janitorial_cart.rsi
layers:
- state: cart
- state: cart_water-1
map: ["enum.SolutionContainerLayers.Fill"]
visible: false
- type: Rotatable
- type: InteractionOutline
# Removing storage until OnInteractUsing logic resolved
#- type: Storage
# popup: false
# capacity: 80
# blacklist: # there is exclusive item slots for that
# tags:
# - Mop
# - TrashBag
# - Bucket
- type: ItemSlots
slots:
mop_slot:
name: janitorial-trolley-slot-component-slot-name-mop
whitelist:
tags:
- Mop
insertOnInteract: false # or it conflicts with bucket logic
priority: 9 # Higher than bucket slot
plunger_slot:
name: janitorial-trolley-slot-component-slot-name-plunger
whitelist:
tags:
- Plunger
priority: 8
wetfloorsign_slot4:
name: janitorial-trolley-slot-component-slot-name-sign
whitelist:
tags:
- WetFloorSign
priority: 7
wetfloorsign_slot3:
name: janitorial-trolley-slot-component-slot-name-sign
whitelist:
tags:
- WetFloorSign
priority: 7
wetfloorsign_slot2:
name: janitorial-trolley-slot-component-slot-name-sign
whitelist:
tags:
- WetFloorSign
priority: 7
wetfloorsign_slot1:
name: janitorial-trolley-slot-component-slot-name-sign
whitelist:
tags:
- WetFloorSign
priority: 7
lightreplacer_slot:
name: janitorial-trolley-slot-component-slot-name-lightreplacer
whitelist:
components:
- LightReplacer
priority: 6
spraybottle_slot:
name: janitorial-trolley-slot-component-slot-name-spray
whitelist:
tags:
- Spray
insertOnInteract: false # or it conflicts with bucket logic
priority: 5 # Higher than bucket slot
bucket_slot:
name: janitorial-trolley-slot-component-slot-name-bucket
whitelist:
tags:
- Bucket
insertOnInteract: false # or it also conflicts with bucket logic
priority: 4 # Higher than trash bag slot
trashbag_slot:
name: janitorial-trolley-slot-component-slot-name-trashbag
whitelist:
tags:
- TrashBag
priority: 3 # Higher than drinking priority
- type: Fixtures
fixtures:
fix1:
shape:
!type:PhysShapeCircle
radius: 0.3
density: 250
layer:
- MobLayer
mask:
- MobMask
- type: Spillable
solution: bucket
spillDelay: 3.0
- type: SolutionContainerManager
solutions:
bucket:
maxVol: 800
reagents:
- ReagentId: Water
Quantity: 600 # 3 quarters full at roundstart to make it more appealing
- type: DrainableSolution
solution: bucket
- type: RefillableSolution
solution: bucket
- type: ExaminableSolution
solution: bucket
- type: Tag
tags:
- Wringer
- type: Damageable
damageContainer: Inorganic
damageModifierSet: Metallic
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 400
behaviors:
- !type:DoActsBehavior
acts: [ "Destruction" ]
- trigger:
!type:DamageTrigger
damage: 200
behaviors:
- !type:EmptyAllContainersBehaviour
- !type:DoActsBehavior
acts: ["Destruction"]
- !type:PlaySoundBehavior
sound:
collection: MetalBreak
- type: ItemMapper
mapLayers:
cart_plunger:
whitelist:
tags:
- Plunger
cart_mop:
whitelist:
tags:
- MopBasic
cart_advmop:
whitelist:
tags:
- MopAdv
cart_garbage:
whitelist:
tags:
- TrashBag
cart_replacer:
whitelist:
components:
- LightReplacer
cart_spray:
whitelist:
tags:
- Spray
cart_sign1: # this is like stack of floor signs
minCount: 1
whitelist:
tags:
- WetFloorSign
cart_sign2:
minCount: 2
whitelist:
tags:
- WetFloorSign
cart_sign3:
minCount: 3
whitelist:
tags:
- WetFloorSign
cart_sign4:
minCount: 4
whitelist:
tags:
- WetFloorSign
cart_bucket:
whitelist:
tags:
- Bucket
sprite: Objects/Specific/Janitorial/janitorial_cart.rsi
- type: Appearance
- type: SolutionContainerVisuals
maxFillLevels: 3
fillBaseName: cart_water-
- type: UserInterface
interfaces:
- key: enum.StorageUiKey.Key
type: StorageBoundUserInterface
- type: Drink
solution: bucket
- type: ContainerContainer
containers:
storagebase: !type:Container
ents: []
mop_slot: !type:ContainerSlot {}
trashbag_slot: !type:ContainerSlot {}
bucket_slot: !type:ContainerSlot {}
plunger_slot: !type:ContainerSlot {}
wetfloorsign_slot4: !type:ContainerSlot {}
wetfloorsign_slot3: !type:ContainerSlot {}
wetfloorsign_slot2: !type:ContainerSlot {}
wetfloorsign_slot1: !type:ContainerSlot {}
lightreplacer_slot: !type:ContainerSlot {}
spraybottle_slot: !type:ContainerSlot {}
- type: GuideHelp
guides:
- Janitorial

View File

@@ -563,7 +563,7 @@
sprite: Structures/Storage/Crates/syndicate.rsi
- type: entity
parent: CrateBaseWeldable
parent: [StructureWheeled, CrateBaseWeldable]
id: CrateTrashCart
name: trash cart
components:

View File

@@ -65,3 +65,21 @@
- type: ReagentTank
- type: Transform
noRot: true
# For highcap tanks
- type: entity
id: StorageTankBig
parent: StorageTank
abstract: true
components:
- type: Fixtures
fixtures:
fix1:
shape:
!type:PhysShapeAabb
bounds: "-0.4,-0.4,0.4,0.4"
density: 455 #very heavy, they store 10k units of reagents after all.
mask:
- MachineMask
layer:
- WallLayer

View File

@@ -2,7 +2,7 @@
- type: entity
id: WeldingFuelTank
parent: StorageTank
parent: [StorageTank, StructureWheeled]
name: fuel tank
description: A fuel tank. It's used to store high amounts of fuel.
suffix: Empty
@@ -48,7 +48,7 @@
Quantity: 1500
- type: entity
parent: WeldingFuelTank
parent: [StorageTankBig, WeldingFuelTank] # StorageTankBig must come first, or else the desnity won't get inherited.
id: WeldingFuelTankHighCapacity
name: high-capacity fuel tank
description: A highly pressurized fuel tank made to hold gargantuan amounts of welding fuel.
@@ -81,7 +81,7 @@
- type: entity
id: WaterTank
parent: StorageTank
parent: [StorageTank, StructureWheeled]
name: water tank
description: A water tank. It's used to store high amounts of water.
suffix: Empty
@@ -115,7 +115,7 @@
Quantity: 1500
- type: entity
parent: WaterTankFull
parent: StorageTank
id: WaterCooler
name: water cooler
description: Seems like a good place to stand and waste time. It has a stock of paper cups on the side.
@@ -157,14 +157,20 @@
- FitsInDispenser
tags:
- Trash
- type: ExaminableSolution
solution: tank
- type: StaticPrice
price: 500
- type: entity
parent: StorageTank
parent: [StorageTankBig, WaterTank]
id: WaterTankHighCapacity
name: high-capacity water tank
description: A highly pressurized water tank made to hold gargantuan amounts of water.
suffix: Full
components:
- type: StaticPrice
price: 2500
- type: Sprite
sprite: Structures/Storage/tanks.rsi
layers:
@@ -192,7 +198,7 @@
- type: entity
id: GenericTank
parent: StorageTank
parent: [StorageTank, StructureWheeled]
suffix: Empty
components:
- type: StaticPrice

View File

@@ -56,5 +56,13 @@
- LowImpassable
- type: Anchorable
# For use with yaml composition, so that all wheeled structures can easily be changed.
- type: entity
id: StructureWheeled
abstract: true
components:
- type: TileFrictionModifier
modifier: 0.4
- type: Tag
id: Structure