Add the trash man (#1367)

* Add disposal.rsi

* Rename disposal resource to disposal.rsi and create basic components

* Add disposal nets

* Add pushing entities along the disposal network

* Add disposal unit

* Unregister disposable component

* Add flush and selfinsert verbs to disposal unit

* Add gradual disposals movement

* Fix being able to walk through space for a while after exiting disposals

* Multiply disposals speed by 10

And fix early returns when moving an entity

* Rename Disposable component to InDisposals

* Remove DisposalNet and add on anchor events

* Remove anchored events, moved to interfaces

* Code cleanup

* Fix adjacent tubes' connections when a tube connects

* Fix jittery movement in disposals

* Remove Logger.Debug call

* Move disposals updates to InDisposalsComponent

* Fix adjacent connection valid directions check

* Disposal tubes now throw you out where they are facing

* Add disposal unit exit cooldown

* Set different disposal pipe sprite state depending on anchored value

* Add recycler

* Add recycler animation

* Add bloody texture to the recycler when grinding a living being

* Add PowerDevice component to the disposal unit

* Made the Recycler center on the grid

* Add disposal junction

* Add picking a random direction if junction is entered from the output side

* Add disposal flush and clang sounds

Taken from VGStation

* Move disposal flush and clang sound file names to exposedata

* Add disposalsmap.yml to test with

* Add summaries to DisposalUnit fields

* Add sideDegrees yaml property to disposal junctions

* Fix outdated usings

* Add conveyor resources

* Update RobustToolbox

* More merge fixes

Add conveyor collision masks

* Add ConveyorComponent

* Fix crash when reentering a body

* Merge branch 'master' into disposals-1147

* Reduce recycler bounds, set hard to false, add summary and expose "safe" to yaml

* Move IAnchored and IUnAnchored to AnchorableComponent

* Update power components and remove old disposals map

* Remove redundant sprite layers

* Add tile pry command

* Fix tilepry command

* Fix DisposalJunctionComponent missing a component reference

* Add anchor by radius command

* Add Y-Junctions

* Add disposal bend

* Add unanchor command

* Change DisposalJunction prototypes to specify their angles

* Fix disposal units being hidden below the floor

* Removed IAnhored and IUnAnchored interfaces

* Replace CanBeNull annotation with nullable reference types

* Update showwires command

* Add recycler recycling items

* Added angle and speed properties to ConveyorComponent

* Fix conveyort textures

* Add animation to the disposal unit

* Fix anchor and unanchor commands sometimes not finding any entities

* Fix not reading flush_time from disposal unit prototype

* Fix merge conflict wrong using

* Fix disposal, recycling and conveyor texture paths

Delete diverters

* Update visualizer names

* Add DisposableComponent, change drag and drop to work with multiple components

Ignoreinsideblocker client side for drag and drops, like on the server
Add more comments

* Add conveyor belts properly moving entities on top

* Anchorr wires

* Change conveyor bounds to 0.49

* Anchor catwalks, airlocks, gravity generators, low walls, wires and windows

* Add starting/stopping conveyors

* Add reversed conveyors

* Add conveyor switches

* Move InDisposalsComponent code to DisposableComponent

* Add ExitVector method to tubes

* Fix not updating tube references when disconnecting one

* Replace IoCManager call with dependency

* Add tubes disconnecting if they move too far apart from one another

* Move disposals action blocking to shared

* Add rotating and flipping pipes

* Make conveyor intersection calculations approximate

* Fix 1% chance of the server crashing when initializing the map

Happens when emergency lockers remove themselves

* Add disposal unit interface

* Make disposal units refuse items if not powered

* Make disposal tubes hide only when anchored

* Make disposal junction arrows visible to mere mortals

* Add disposal tubes breaking

* Add tubeconnections command

* Add missing verb attribute

* Add flipped disposal junction

* Add ids and linking to conveyors and switches

* Add conveyor switch prying and placing

* Add anchoring conveyor switches and refactor placing them

* Add missing serializable attributes from DisposableComponentState

* Make conveyor speed VV ReadWrite

* Change drawdepth of conveyors to FloorObjects

* Make conveyor anchored check consistent

* Remove anchoring interaction from switches

* Add conveyor switch id syncing and move switches slightly when pried

* Make entities in containers not able to be moved by conveyors

* Add conveyor and switches loose textures

* Merge conflict fixes

* Add disposal unit test

* Add flushing test to disposal unit test

* Add disposal unit flush fail test

* Add disposals to the saltern map

* Fix saltern disposal junctions

* Add power checks to the recycler

* Fix disposal unit placement in maintenance closet

* Remove disposal junctions from saltern

* Readd junctions to saltern

* Add the chemmaster to saltern at the request of Ike

* Move the chemistry disposal unit

* Fix casing of disposal flush sound

* More merge conflict fixes

* Fix a compiler warning.

* Remove popup invocation from buckle

* Remove showPopup parameter from InteractionChecks

* Remove unnecessary physics components

Fixes the physics system dying

* Replace PhysicsComponent usages with CollidableComponent

* Update existing code for the new controller system

* Change conveyors to use a VirtualController instead of teleporting the entity

* Remove visualizer 2d suffix and update physics code

* Transition code to new controller system

* Fix shuttles not moving

* Fix throwing

* Fix guns

* Change hands to use physics.Stop() and remove item fumble method

* Add syncing conveyor switches states

* Fix the recycler wanting to be a conveyor too hard

* Fix showwires > showsubfloor rename in mapping command

* Fix wifi air conveyors

* Fix test error

* Add showsubfloorforever command

Changes drawdepth of the relevant entities

* Disable opening the disposal unit interface while inside

* Add closing the disposal unit interface when getting inside

* Add closing the interface when the disposal unit component is removed

* Add removing entities on disposal unit component removal

* Delay disposal unit flush and fix serialization

* Implement pressure in disposal units

* Fix chain engaging a disposal unit

* Implement states to the disposal unit

* Fix missing imports from merge conflict

* Update Content.Server/GameObjects/Components/Conveyor/ConveyorComponent.cs

Co-authored-by: Pieter-Jan Briers <pieterjan.briers@gmail.com>

* Address some reviews

* Fix za buildo

* Use container helper to detach disposables

* Make conveyors use the construction system

* Make conveyor groups and syncing sane

* Make flip flip

brave

* Add activate interface to conveyor switches

* Fix not removing the switch from its group when it's deleted

* Fix not registering conveyors and switches on initialize

* Stop using 0 as null

* Disconnect conveyors and switches when disposing of a group

* Make disposal units not able to be exited when flushing

* Make disposal units flush after a configurable 30 seconds

* Add handle and light layers to the disposal unit

* Merge engaging and flushing

* Update saltern.yml

* I love using 0 as null

* Make disposal unit visual layers make sense

* Remove duplicate remove method in disposal units and update light

* Replace DisposableComponent with disposal holders

* Fix disposal holders deleting their contents on deletion

* Account for disposal unit pressure in tests and make a failed flush autoengage

* Rename disposable to holder

* Fix junction connections

* Disable self insert and flush verbs when inside a disposal unit

* Fix spamming the engage button making the animation reset

* Make the recycler take materials into account properly

Fix cablestack1 not existing

* Merge conflict fixes

* Fix pipes not being saved anchored

* Change conveyors and groups to not use an id

Co-authored-by: Pieter-Jan Briers <pieterjan.briers+git@gmail.com>
Co-authored-by: Pieter-Jan Briers <pieterjan.briers@gmail.com>
This commit is contained in:
DrSmugleaf
2020-07-30 23:45:28 +02:00
committed by GitHub
parent 2ba86c6476
commit bda5ce655f
140 changed files with 19810 additions and 12029 deletions

View File

@@ -3,38 +3,38 @@
name: gravity generator
description: It's what keeps you to the floor.
components:
- type: Sprite
sprite: Constructible/Power/gravity_generator.rsi
layers:
- state: on
- sprite: Constructible/Power/gravity_generator_core.rsi
state: activated
shader: unshaded
- type: Icon
sprite: Constructible/Power/gravity_generator.rsi
state: on
- type: SnapGrid
offset: Center
- type: PowerReceiver
powerLoad: 500
- type: Collidable
shapes:
- !type:PhysShapeAabb
bounds: "-1.5,-1.5,1.5,1.5"
layer:
- Opaque
- Impassable
- MobImpassable
- VaultImpassable
- type: Clickable
- type: InteractionOutline
- type: Damageable
- type: Breakable
threshold: 150
- type: GravityGenerator
- type: UserInterface
interfaces:
- key: enum.GravityGeneratorUiKey.Key
type: GravityGeneratorBoundUserInterface
- type: Sprite
sprite: Constructible/Power/gravity_generator.rsi
layers:
- state: on
- sprite: Constructible/Power/gravity_generator_core.rsi
state: activated
shader: unshaded
- type: Icon
sprite: Constructible/Power/gravity_generator.rsi
state: on
- type: SnapGrid
offset: Center
- type: PowerReceiver
powerLoad: 500
- type: Collidable
shapes:
- !type:PhysShapeAabb
bounds: "-1.5,-1.5,1.5,1.5"
layer:
- Opaque
- Impassable
- MobImpassable
- VaultImpassable
- type: Clickable
- type: InteractionOutline
- type: Damageable
- type: Breakable
threshold: 150
- type: GravityGenerator
- type: UserInterface
interfaces:
- key: enum.GravityGeneratorUiKey.Key
type: GravityGeneratorBoundUserInterface
placement:
mode: AlignTileAny

View File

@@ -14,11 +14,9 @@
color: "#889192"
drawdepth: Walls
sprite: Constructible/Structures/Walls/low_wall.rsi
- type: Icon
sprite: Constructible/Structures/Walls/low_wall.rsi
state: metal
- type: Collidable
shapes:
- !type:PhysShapeAabb
@@ -26,10 +24,8 @@
- type: Damageable
- type: Destructible
thresholdvalue: 100
- type: SnapGrid
offset: Center
- type: LowWall
key: walls
base: metal_

View File

@@ -13,10 +13,8 @@
- type: Sprite
netsync: false
drawdepth: Walls
- type: Icon
state: full
- type: Collidable
shapes:
- !type:PhysShapeAabb
@@ -33,10 +31,8 @@
- type: Occluder
sizeX: 32
sizeY: 32
- type: SnapGrid
offset: Center
- type: IconSmooth
key: walls
base: solid

View File

@@ -0,0 +1,61 @@
- type: entity
id: ConveyorBelt
name: conveyor belt
description: A conveyor belt, commonly used to transport large numbers of items elsewhere quite quickly.
placement:
mode: SnapgridCenter
components:
- type: Clickable
- type: InteractionOutline
- type: Collidable
hard: false
shapes:
- !type:PhysShapeAabb
bounds: "-0.49,-0.49,0.49,0.49"
mask:
- Impassable
- MobImpassable
- VaultImpassable
- SmallImpassable
- type: SnapGrid
offset: Center
- type: Sprite
netsync: false
sprite: Constructible/Power/conveyor.rsi
state: conveyor_started_cw
drawdepth: FloorObjects
- type: Icon
sprite: Constructible/Power/conveyor.rsi
state: conveyor_started_cw
- type: Conveyor
- type: Appearance
visuals:
- type: ConveyorVisualizer
state_running: conveyor_started_cw
state_stopped: conveyor_stopped_cw
state_reversed: conveyor_started_cw_r
state_loose: conveyor_loose
- type: PowerReceiver
- type: entity
id: ConveyorSwitch
name: conveyor switch
description: A conveyor control switch.
components:
- type: Clickable
- type: InteractionOutline
- type: Sprite
netsync: false
sprite: Constructible/Power/conveyor.rsi
state: switch-off
- type: Icon
sprite: Constructible/Power/conveyor.rsi
state: switch-off
- type: ConveyorSwitch
- type: Appearance
visuals:
- type: ConveyorSwitchVisualizer
state_forward: switch-fwd
state_off: switch-off
state_reversed: switch-rev
state_loose: switch

View File

@@ -0,0 +1,222 @@
- type: entity
id: DisposalPipeBase
abstract: true
placement:
mode: SnapgridCenter
snap:
- Disposal
components:
- type: Clickable
- type: InteractionOutline
- type: Physics
anchored: true
- type: SnapGrid
offset: Center
- type: Anchorable
- type: Damageable
- type: Breakable
- type: Rotatable
- type: entity
id: DisposalHolder
name: disposal holder
components:
- type: DisposalHolder
- type: entity
id: DisposalPipe
parent: DisposalPipeBase
name: disposal pipe segment
description: A huge pipe segment used for constructing disposal systems
components:
- type: Sprite
drawdepth: BelowFloor
sprite: Constructible/Power/disposal.rsi
state: conpipe-s
- type: Icon
sprite: Constructible/Power/disposal.rsi
state: conpipe-s
- type: DisposalTransit
- type: Appearance
visuals:
- type: DisposalVisualizer
state_free: conpipe-s
state_anchored: pipe-s
state_broken: pipe-b
- type: entity
id: DisposalTrunk
parent: DisposalPipeBase
name: disposal trunk
description: A pipe trunk used as an entry point for disposal systems
components:
- type: Sprite
drawdepth: BelowFloor
sprite: Constructible/Power/disposal.rsi
state: conpipe-t
- type: Icon
sprite: Constructible/Power/disposal.rsi
state: conpipe-t
- type: DisposalEntry
- type: Appearance
visuals:
- type: DisposalVisualizer
state_free: conpipe-t
state_anchored: pipe-t
state_broken: pipe-b
- type: entity
id: DisposalUnit
name: disposal unit
description: A pneumatic waste disposal unit
placement:
mode: SnapgridCenter
snap:
- Disposal
components:
- type: Sprite
netsync: false
sprite: Constructible/Power/disposal.rsi
layers:
- state: condisposal
map: ["enum.DisposalUnitVisualLayers.Base"]
- state: dispover-handle
map: ["enum.DisposalUnitVisualLayers.Handle"]
- state: dispover-ready
map: ["enum.DisposalUnitVisualLayers.Light"]
- type: Icon
sprite: Constructible/Power/disposal.rsi
state: disposal
- type: PowerReceiver
- type: DisposalUnit
flushTime: 2
- type: Clickable
- type: InteractionOutline
- type: Physics
anchored: true
shapes:
- !type:PhysShapeAabb
bounds: "-0.3,-0.3,0.3,0.3"
layer:
- Impassable
- MobImpassable
- type: SnapGrid
offset: Center
- type: Anchorable
- type: Destructible
thresholdvalue: 100
- type: Appearance
visuals:
- type: DisposalUnitVisualizer
state_unanchored: condisposal
state_anchored: disposal
overlay_charging: dispover-charge
overlay_ready: dispover-ready
overlay_full: dispover-full
overlay_engaged: dispover-handle
state_flush: disposal-flush
flush_sound: /Audio/Machines/disposalflush.ogg
flush_time: 2
- type: UserInterface
interfaces:
- key: enum.DisposalUnitUiKey.Key
type: DisposalUnitBoundUserInterface
- type: entity
id: DisposalJunction
parent: DisposalPipeBase
name: disposal junction
description: A three-way junction. The arrow indicates where items exit
components:
- type: Sprite
drawdepth: BelowFloor
sprite: Constructible/Power/disposal.rsi
state: conpipe-j1
- type: Icon
sprite: Constructible/Power/disposal.rsi
state: conpipe-j1
- type: DisposalJunction
degrees:
- 0
- -90
- 180
- type: Appearance
visuals:
- type: DisposalVisualizer
state_free: conpipe-j1
state_anchored: pipe-j1
state_broken: pipe-b
- type: Flippable
entity: DisposalJunctionFlipped
- type: entity
id: DisposalJunctionFlipped
parent: DisposalJunction
name: flipped disposal junction
components:
- type: Sprite
drawdepth: BelowFloor
sprite: Constructible/Power/disposal.rsi
state: conpipe-j2
- type: Icon
sprite: Constructible/Power/disposal.rsi
state: conpipe-j2
- type: DisposalJunction
degrees:
- 0
- 90
- 180
- type: Appearance
visuals:
- type: DisposalVisualizer
state_free: conpipe-j2
state_anchored: pipe-j2
state_broken: pipe-b
- type: Flippable
entity: DisposalJunction
- type: entity
id: DisposalYJunction
parent: DisposalPipeBase
name: disposal y-junction
description: A three-way junction with another exit point.
components:
- type: Sprite
drawdepth: BelowFloor
sprite: Constructible/Power/disposal.rsi
state: conpipe-y
- type: Icon
sprite: Constructible/Power/disposal.rsi
state: conpipe-y
- type: DisposalJunction
degrees:
- 0
- 90
- -90
- type: Appearance
visuals:
- type: DisposalVisualizer
state_free: conpipe-y
state_anchored: pipe-y
state_broken: pipe-b
- type: entity
id: DisposalBend
parent: DisposalPipeBase
name: disposal bend
description: A tube bent at a 90 degree angle.
components:
- type: Sprite
drawdepth: BelowFloor
sprite: Constructible/Power/disposal.rsi
state: conpipe-c
- type: Icon
sprite: Constructible/Power/disposal.rsi
state: conpipe-c
- type: DisposalBend
- type: Appearance
visuals:
- type: DisposalVisualizer
state_free: conpipe-c
state_anchored: pipe-c
state_broken: pipe-b

View File

@@ -0,0 +1,37 @@
- type: entity
id: Recycler
name: recycler
description: A large crushing machine used to recycle small items inefficiently. There are lights on the side.
placement:
mode: SnapgridCenter
components:
- type: Clickable
- type: InteractionOutline
- type: Collidable
hard: false
shapes:
- !type:PhysShapeAabb
bounds: "-0.49,-0.49,0.49,0.49"
layer:
- Opaque
- Impassable
- MobImpassable
- VaultImpassable
- type: SnapGrid
offset: Center
- type: Sprite
netsync: false
sprite: Constructible/Power/recycling.rsi
layers:
- state: grinder-o1
map: ["enum.RecyclerVisualLayers.Bloody"]
- type: Icon
sprite: Constructible/Power/recycling.rsi
state: grinder-o0
- type: Appearance
visuals:
- type: RecyclerVisualizer
state_clean: grinder-o1
state_bloody: grinder-o1bld
- type: Recycler
- type: PowerReceiver

View File

@@ -69,7 +69,8 @@
- type: entity
abstract: true
parent: BaseItem
id: CableStack
id: CableStack1
name: cable stack 1
suffix: Full
components:
- type: Stack
@@ -84,7 +85,7 @@
all: -0.15,-0.15,0.15,0.15
- type: entity
parent: CableStack
parent: CableStack1
id: HVWireStack
name: HV Wire Coil
components:
@@ -95,7 +96,7 @@
blockingWireType: HighVoltage
- type: entity
parent: CableStack
parent: CableStack1
id: MVWireStack
name: MV Wire Coil
components:
@@ -106,7 +107,7 @@
blockingWireType: MediumVoltage
- type: entity
parent: CableStack
parent: CableStack1
id: ApcExtensionCableStack
name: Apc Extension Cable Coil
components:
@@ -115,7 +116,7 @@
- type: WirePlacer
wirePrototypeID: ApcExtensionCable
blockingWireType: Apc
- type: entity
parent: HVWireStack
id: HVWireStack1
@@ -123,7 +124,7 @@
components:
- type: Stack
count: 1
- type: entity
parent: MVWireStack
id: MVWireStack1
@@ -131,7 +132,7 @@
components:
- type: Stack
count: 1
- type: entity
parent: ApcExtensionCableStack
id: ApcExtensionCableStack1
@@ -139,7 +140,7 @@
components:
- type: Stack
count: 1
- type: entity
name: gold bar
id: GoldStack

View File

@@ -13,7 +13,6 @@
bounds: "-0.25,-0.25,0.25,0.25"
layer:
- Clickable
IsScrapingFloor: true
- type: Physics
mass: 5

View File

@@ -0,0 +1,19 @@
- type: construction
name: conveyor belt
id: ConveyorBelt
category: Machines/Conveyor
keywords: [conveyor, belt]
placementMode: SnapgridCenter
description: A conveyor belt, commonly used to transport large numbers of items elsewhere quite quickly.
icon:
sprite: Constructible/Power/conveyor.rsi
state: conveyor_stopped_cw
result: ConveyorBelt
steps:
- material: Metal
amount: 1
icon:
sprite: Constructible/Power/conveyor.rsi
state: conveyor_stopped_cw
- material: Cable
amount: 1

View File

@@ -9,7 +9,6 @@
icon:
sprite: Constructible/Lighting/lighting.rsi
state: on
result: Poweredlight
steps:
- material: Metal
@@ -17,13 +16,10 @@
icon:
sprite: Constructible/Lighting/lighting.rsi
state: construct
- material: Cable
amount: 1
icon:
sprite: Constructible/Lighting/lighting.rsi
state: empty
- material: Glass
amount: 1

View File

@@ -15,7 +15,6 @@
icon: Constructible/Structures/Walls/wall_girder.png
reverse:
tool: Anchoring
- material: Metal
amount: 2
reverse:
@@ -90,7 +89,6 @@
amount: 2
reverse:
tool: Anchoring
# Should be replaced with Metal Rods when someone puts them in.
- material: Metal
amount: 2