Improved RCDs (#22799)

* Initial radial menu prototyping for the RCD

* Radial UI buttons can send messages to the server

* Beginning to update RCDSystem

* RCD building system in progress

* Further updates

* Added extra effects, RCDSystem now reads RCD prototype data

* Replacing tiles is instant, multiple constructions are allowed, deconstruction is broken

* Added extra functionality to RadialContainers plus documentation

* Fixed localization of RCD UI strings

* Menu opens near cursor, added basic RCD

* Avoiding merge conflict

* Implemented atomized construction / deconstruction rules

* Increased RCD ammo base charges

* Moved input context definition to content

* Removed obsoleted code

* Updates to system

* Switch machine and computer frames for electrical cabling

* Added construction ghosts

* Fixed issue with keybind detection code

* Fixed RCD construction ghost mispredications

* Code clean up

* Updated deconstruction effects

* RCDs effects don't rotate

* Code clean up

* Balancing for ammo counts

* Code clean up

* Added missing localized strings

* More clean up

* Made directional window handling more robust

* Added documentation to radial menus and made them no longer dependent on Content

* Made radial containers more robust

* Further robustness to the radial menu

* The RCD submenu buttons are only shown when the destination layer has at least one children

* Expanded upon deconstructing plus construction balance

* Fixed line endings

* Updated list of RCD deconstructable entities. Now needs a component to deconstruct instead of a tag

* Bug fixes

* Revert unnecessary change

* Updated RCD strings

* Fixed bug

* More fixes

* Deconstructed tiles/subflooring convert to lattice instead

* Fixed failed tests (Linux doesn't like invalid spritespecifer paths)

* Fixing merge conflict

* Updated airlock assembly

* Fixing merge conflict

* Fixing merge conflict

* More fixing...

* Removed erroneous project file change

* Fixed string handling issue

* Trying to fix merge conflict

* Still fixing merge conflicts

* Balancing

* Hidden RCD construction ghosts when in 'build' mode

* Fixing merge conflict

* Implemented requested changes (Part 1)

* Added more requested changes

* Fix for failed test. Removed sussy null suppression

* Made requested changes - custom construction ghost system was replaced

* Fixing merge conflict

* Fixed merge conflict

* Fixed bug in RCD construction ghost validation

* Fixing merge conflict

* Merge conflict fixed

* Made required update

* Removed lingering RCD deconstruct tag

* Fixing merge conflict

* Merge conflict fixed

* Made requested changes

* Bug fixes and balancing

* Made string names more consistent

* Can no longer stack catwalks
This commit is contained in:
chromiumboy
2024-03-30 23:29:47 -05:00
committed by GitHub
parent 4d2aa1a70a
commit 02273ca0e7
100 changed files with 2765 additions and 380 deletions

View File

@@ -1,18 +1,66 @@
### UI
# Shown when an RCD is examined in details range
rcd-component-examine-detail = It's currently on {$mode} mode.
rcd-component-examine-mode-details = It's currently set to '{$mode}' mode.
rcd-component-examine-build-details = It's currently set to build {MAKEPLURAL($name)}.
### Interaction Messages
# Shown when changing RCD Mode
rcd-component-change-mode = The RCD is now set to {$mode} mode.
# Mode change
rcd-component-change-mode = The RCD is now set to '{$mode}' mode.
rcd-component-change-build-mode = The RCD is now set to build {MAKEPLURAL($name)}.
rcd-component-no-ammo-message = The RCD is out of ammo!
rcd-component-tile-obstructed-message = That tile is obstructed!
rcd-component-tile-indestructible-message = That tile can't be destroyed!
# Ammo count
rcd-component-no-ammo-message = The RCD has run out of charges!
rcd-component-insufficient-ammo-message = The RCD doesn't have enough charges left!
# Deconstruction
rcd-component-tile-indestructible-message = That tile can't be destructed!
rcd-component-deconstruct-target-not-on-whitelist-message = You can't deconstruct that!
rcd-component-cannot-build-floor-tile-not-empty-message = You can only build a floor on space!
rcd-component-cannot-build-wall-tile-not-empty-message = You cannot build a wall on space!
rcd-component-cannot-build-airlock-tile-not-empty-message = Cannot build an airlock on space!
rcd-component-nothing-to-deconstruct-message = There's nothing to deconstruct!
rcd-component-tile-obstructed-message = You can't deconstruct tiles when there's something on top of them!
# Construction
rcd-component-no-valid-grid = You're too far into open space to build here!
rcd-component-must-build-on-empty-tile-message = A foundation already exists here!
rcd-component-cannot-build-on-empty-tile-message = You can't build that without a foundation!
rcd-component-must-build-on-subfloor-message = You can only build that on exposed subfloor!
rcd-component-cannot-build-on-subfloor-message = You can't build that on exposed subfloor!
rcd-component-cannot-build-on-occupied-tile-message = You can't build here, the space is already occupied!
rcd-component-cannot-build-identical-tile = That tile already exists there!
### Category names
rcd-component-walls-and-flooring = Walls and flooring
rcd-component-windows-and-grilles = Windows and grilles
rcd-component-airlocks = Airlocks
rcd-component-electrical = Electrical
rcd-component-lighting = Lighting
### Prototype names (note: constructable items will be puralized)
rcd-component-deconstruct = deconstruct
rcd-component-wall-solid = solid wall
rcd-component-floor-steel = steel tile
rcd-component-plating = hull plate
rcd-component-catwalk = catwalk
rcd-component-wall-reinforced = reinforced wall
rcd-component-grille = grille
rcd-component-window = window
rcd-component-window-directional = directional window
rcd-component-window-reinforced-directional = directional reinforced window
rcd-component-reinforced-window = reinforced window
rcd-component-airlock = standard airlock
rcd-component-airlock-glass = glass airlock
rcd-component-firelock = firelock
rcd-component-computer-frame = computer frame
rcd-component-machine-frame = machine frame
rcd-component-tube-light = light
rcd-component-window-bulb-light = small light
rcd-component-window-lv-cable = LV cable
rcd-component-window-mv-cable = MV cable
rcd-component-window-hv-cable = HV cable
rcd-component-window-cable-terminal = cable terminal

View File

@@ -0,0 +1,3 @@
### Loc for the various UI-related verbs
ui-verb-toggle-open = Toggle UI
verb-instrument-openui = Play Music

View File

@@ -166,8 +166,8 @@
- type: entity
id: CrateRCDAmmo
parent: CrateEngineering
name: RCD ammo crate
description: 3 RCD ammo, each restoring 5 charges.
name: compressed matter crate
description: Contains three compressed matter cartridges.
components:
- type: StorageFill
contents:
@@ -178,7 +178,7 @@
id: CrateRCD
parent: CrateEngineeringSecure
name: RCD crate
description: A crate containing a single Rapid Construction Device.
description: A crate containing a single rapid construction device.
components:
- type: StorageFill
contents:

View File

@@ -128,9 +128,10 @@
snap:
- Wall
components:
- type: Tag
tags:
- RCDDeconstructWhitelist
- type: RCDDeconstructable
cost: 2
delay: 2
fx: EffectRCDDeconstruct2
- type: Clickable
- type: InteractionOutline
- type: Sprite

View File

@@ -1,16 +1,115 @@
- type: entity
id: EffectRCDConstruction
id: EffectRCDBase
abstract: true
noSpawn: true
components:
- type: Transform
anchored: True
- type: Sprite
snapCardinals: true
noRot: true
drawdepth: Effects
sprite: /Textures/Effects/rcd.rsi
state: construct
- type: TimedDespawn
lifetime: 3.2
state: construct0
- type: Tag
tags:
- HideContextMenu
- type: AnimationPlayer
- type: entity
parent: EffectRCDBase
id: EffectRCDDeconstructPreview
noSpawn: true
components:
- type: Sprite
state: deconstructPreview
- type: entity
parent: EffectRCDBase
id: EffectRCDConstruct0
noSpawn: true
components:
- type: Sprite
state: construct0
- type: TimedDespawn
lifetime: 1.2
- type: entity
parent: EffectRCDBase
id: EffectRCDConstruct1
noSpawn: true
components:
- type: Sprite
state: construct1
- type: TimedDespawn
lifetime: 2.2
- type: entity
parent: EffectRCDBase
id: EffectRCDConstruct2
noSpawn: true
components:
- type: Sprite
state: construct2
- type: TimedDespawn
lifetime: 3.2
- type: entity
parent: EffectRCDBase
id: EffectRCDConstruct3
noSpawn: true
components:
- type: Sprite
state: construct3
- type: TimedDespawn
lifetime: 4.2
- type: entity
parent: EffectRCDBase
id: EffectRCDConstruct4
noSpawn: true
components:
- type: Sprite
state: construct4
- type: TimedDespawn
lifetime: 5.2
- type: entity
parent: EffectRCDBase
id: EffectRCDDeconstruct2
noSpawn: true
components:
- type: Sprite
state: deconstruct2
- type: TimedDespawn
lifetime: 3.2
- type: entity
parent: EffectRCDBase
id: EffectRCDDeconstruct4
noSpawn: true
components:
- type: Sprite
state: deconstruct4
- type: TimedDespawn
lifetime: 5.2
- type: entity
parent: EffectRCDBase
id: EffectRCDDeconstruct6
noSpawn: true
components:
- type: Sprite
state: deconstruct6
- type: TimedDespawn
lifetime: 7.2
- type: entity
parent: EffectRCDBase
id: EffectRCDDeconstruct8
noSpawn: true
components:
- type: Sprite
state: deconstruct8
- type: TimedDespawn
lifetime: 9.2

View File

@@ -7,4 +7,4 @@
color: '#3F38'
- type: ConstructionGhost
- type: Clickable
- type: InteractionOutline
- type: InteractionOutline

View File

@@ -337,15 +337,35 @@
path: "/Audio/Items/drill_hit.ogg"
- type: entity
name: RCD
parent: BaseItem
id: RCD
description: An advanced construction device which can place/remove walls, floors, and airlocks quickly.
parent: BaseItem
name: RCD
description: The rapid construction device can be used to quickly place and remove various station structures and fixtures. Requires compressed matter to function.
components:
- type: RCD
availablePrototypes:
- WallSolid
- FloorSteel
- Plating
- Catwalk
- Grille
- Window
- WindowDirectional
- WindowReinforcedDirectional
- ReinforcedWindow
- Airlock
- AirlockGlass
- Firelock
- TubeLight
- BulbLight
- LVCable
- MVCable
- HVCable
- CableTerminal
- Deconstruct
- type: LimitedCharges
maxCharges: 5
charges: 5
maxCharges: 30
charges: 30
- type: UseDelay
- type: Sprite
sprite: Objects/Tools/rcd.rsi
@@ -363,6 +383,12 @@
Plastic: 100
- type: StaticPrice
price: 100
- type: UserInterface
interfaces:
- key: enum.RcdUiKey.Key
type: RCDMenuBoundUserInterface
- type: ActivatableUI
key: enum.RcdUiKey.Key
- type: entity
id: RCDEmpty
@@ -370,37 +396,50 @@
suffix: Empty
components:
- type: LimitedCharges
maxCharges: 5
charges: 0
- type: RCD
availablePrototypes:
- WallSolid
- FloorSteel
- Plating
- Catwalk
- Grille
- Window
- WindowDirectional
- WindowReinforcedDirectional
- ReinforcedWindow
- Airlock
- AirlockGlass
- Firelock
- type: entity
id: RCDRecharging
parent: RCD
name: experimental rcd
description: A bluespace-enhanced RCD that regenerates charges passively.
name: experimental RCD
description: A bluespace-enhanced rapid construction device that passively generates its own compressed matter.
suffix: AutoRecharge
components:
- type: LimitedCharges
maxCharges: 3
charges: 3
maxCharges: 20
charges: 20
- type: AutoRecharge
rechargeDuration: 30
rechargeDuration: 10
- type: entity
id: RCDExperimental
parent: RCD
suffix: Admeme
name: experimental rcd
description: A bluespace-enhanced RCD that regenerates charges passively.
name: experimental RCD
description: A bluespace-enhanced rapid construction device that passively generates its own compressed matter.
components:
- type: AutoRecharge
rechargeDuration: 5
rechargeDuration: 1
- type: entity
name: RCD Ammo
name: compressed matter
parent: BaseItem
id: RCDAmmo
description: Ammo cartridge for an RCD.
description: A cartridge of raw matter compacted by bluespace technology. Used in rapid construction devices.
components:
- type: RCDAmmo
- type: Sprite

View File

@@ -138,48 +138,6 @@
sprite: Structures/Doors/Airlocks/Standard/hatch_maint.rsi
# Glass
- type: entity
id: AirlockGlass
parent: Airlock
name: glass airlock
components:
- type: MeleeSound
soundGroups:
Brute:
collection: GlassSmack
- type: Door
occludes: false
- type: Occluder
enabled: false
- type: Sprite
sprite: Structures/Doors/Airlocks/Glass/glass.rsi
- type: AnimationPlayer
- type: Fixtures
fixtures:
fix1:
shape:
!type:PhysShapeAabb
bounds: "-0.49,-0.49,0.49,0.49" # don't want this colliding with walls or they won't close
density: 100
mask:
- FullTileMask
layer: #removed opaque from the layer, allowing lasers to pass through glass airlocks
- GlassAirlockLayer
- type: LayerChangeOnWeld
unWeldedLayer: GlassAirlockLayer
weldedLayer: GlassLayer
- type: Construction
graph: Airlock
node: glassAirlock
- type: PaintableAirlock
group: Glass
- type: RadiationBlocker
resistance: 2
- type: Tag
tags:
- GlassAirlock
# This tag is used to nagivate the Airlock construction graph. It's needed because the construction graph is shared between Airlock, AirlockGlass, and HighSecDoor
- type: entity
parent: AirlockGlass
id: AirlockEngineeringGlass
@@ -295,4 +253,4 @@
- type: Sprite
sprite: Structures/Doors/Airlocks/Glass/centcomm.rsi
- type: WiresPanelSecurity
securityLevel: medSecurity
securityLevel: medSecurity

View File

@@ -30,6 +30,10 @@
- type: Damageable
damageContainer: Inorganic
damageModifierSet: Metallic
- type: RCDDeconstructable
cost: 6
delay: 8
fx: EffectRCDDeconstruct8
- type: Destructible
thresholds:
- trigger:

View File

@@ -111,6 +111,10 @@
- type: Damageable
damageContainer: StructuralInorganic
damageModifierSet: StrongMetallic
- type: RCDDeconstructable
cost: 6
delay: 8
fx: EffectRCDDeconstruct8
- type: Destructible
thresholds:
- trigger:
@@ -149,5 +153,53 @@
- type: BlockWeather
placement:
mode: SnapgridCenter
- type: entity
id: AirlockRCDResistant
parent: Airlock
abstract: true
components:
- type: RCDDeconstructable
deconstructable: false
- type: entity
id: AirlockGlass
parent: Airlock
name: glass airlock
components:
- type: MeleeSound
soundGroups:
Brute:
collection: GlassSmack
- type: Door
occludes: false
- type: Occluder
enabled: false
- type: Sprite
sprite: Structures/Doors/Airlocks/Glass/glass.rsi
- type: AnimationPlayer
- type: Fixtures
fixtures:
fix1:
shape:
!type:PhysShapeAabb
bounds: "-0.49,-0.49,0.49,0.49" # don't want this colliding with walls or they won't close
density: 100
mask:
- FullTileMask
layer: #removed opaque from the layer, allowing lasers to pass through glass airlocks
- GlassAirlockLayer
- type: LayerChangeOnWeld
unWeldedLayer: GlassAirlockLayer
weldedLayer: GlassLayer
- type: Construction
graph: Airlock
node: glassAirlock
- type: PaintableAirlock
group: Glass
- type: RadiationBlocker
resistance: 2
- type: Tag
tags:
- GlassAirlock
# This tag is used to nagivate the Airlock construction graph. It's needed because the construction graph is shared between Airlock, AirlockGlass, and HighSecDoor

View File

@@ -1,5 +1,5 @@
- type: entity
parent: Airlock
parent: AirlockRCDResistant
id: AirlockExternal
suffix: External
description: It opens, it closes, it might crush you, and there might be only space behind it.

View File

@@ -1,5 +1,5 @@
- type: entity
parent: Airlock
parent: AirlockRCDResistant
id: AirlockShuttle
suffix: Docking
name: external airlock

View File

@@ -19,6 +19,10 @@
- type: Damageable
damageContainer: Inorganic
damageModifierSet: Metallic
- type: RCDDeconstructable
cost: 4
delay: 6
fx: EffectRCDDeconstruct6
- type: Destructible
thresholds:
- trigger:

View File

@@ -25,6 +25,10 @@
- type: Damageable
damageContainer: Inorganic
damageModifierSet: Metallic
- type: RCDDeconstructable
cost: 4
delay: 6
fx: EffectRCDDeconstruct6
- type: Destructible
thresholds:
- trigger:

View File

@@ -43,6 +43,10 @@
- type: Damageable
damageContainer: Inorganic
damageModifierSet: Metallic
- type: RCDDeconstructable
cost: 6
delay: 6
fx: EffectRCDDeconstruct6
- type: Destructible
thresholds:
- trigger:

View File

@@ -41,6 +41,10 @@
- type: Damageable
damageContainer: Inorganic
damageModifierSet: Metallic
- type: RCDDeconstructable
cost: 6
delay: 8
fx: EffectRCDDeconstruct8
- type: Destructible
thresholds:
- trigger:
@@ -97,6 +101,10 @@
- type: Damageable
damageContainer: Inorganic
damageModifierSet: Metallic
- type: RCDDeconstructable
cost: 6
delay: 8
fx: EffectRCDDeconstruct8
- type: Destructible
thresholds:
- trigger:

View File

@@ -26,6 +26,10 @@
- type: Damageable
damageContainer: Inorganic
damageModifierSet: Metallic
- type: RCDDeconstructable
cost: 6
delay: 8
fx: EffectRCDDeconstruct8
- type: Destructible
thresholds:
- trigger:

View File

@@ -66,7 +66,11 @@
damageContainer: Inorganic
damageModifierSet: Glass
- type: ExaminableDamage
messages: WindowMessages
messages: WindowMessages
- type: RCDDeconstructable
cost: 8
delay: 8
fx: EffectRCDDeconstruct8
- type: Destructible
thresholds:
- trigger:

View File

@@ -40,6 +40,10 @@
- type: Damageable
damageContainer: Inorganic
damageModifierSet: Metallic
- type: RCDDeconstructable
cost: 4
delay: 2
fx: EffectRCDDeconstruct2
- type: Destructible
thresholds:
- trigger:
@@ -70,7 +74,7 @@
mode: SnapgridCenter
snap:
- Wallmount
- type: entity
name: light
description: "A light fixture. Draws power and produces light when equipped with a light tube."

View File

@@ -17,6 +17,10 @@
- type: Damageable
damageContainer: Inorganic
damageModifierSet: Metallic
- type: RCDDeconstructable
cost: 2
delay: 2
fx: EffectRCDDeconstruct2
- type: Destructible
thresholds:
- trigger:

View File

@@ -43,6 +43,10 @@
lowVoltageNode: power
- type: CableVis
node: power
- type: RCDDeconstructable
cost: 2
delay: 2
fx: EffectRCDDeconstruct2
- type: entity
parent: CableBase

View File

@@ -10,9 +10,6 @@
Brute:
path:
"/Audio/Weapons/grille_hit.ogg"
- type: Tag
tags:
- RCDDeconstructWhitelist
- type: Sprite
sprite: Structures/Walls/fence.rsi
drawdepth: WallTops
@@ -78,6 +75,10 @@
True: { visible: True }
False: { visible: False }
- type: AnimationPlayer
- type: RCDDeconstructable
cost: 2
delay: 2
fx: EffectRCDDeconstruct2
- type: entity
parent: BaseFenceMetal

View File

@@ -12,7 +12,6 @@
"/Audio/Weapons/boxingpunch1.ogg"
- type: Tag
tags:
- RCDDeconstructWhitelist
- Wooden
- type: Sprite
sprite: Structures/Walls/wooden_fence.rsi
@@ -24,6 +23,10 @@
- type: Damageable
damageContainer: Inorganic
damageModifierSet: Wood
- type: RCDDeconstructable
cost: 2
delay: 2
fx: EffectRCDDeconstruct2
- type: Destructible
thresholds:
- trigger:

View File

@@ -9,9 +9,10 @@
Brute:
path:
"/Audio/Weapons/grille_hit.ogg"
- type: Tag
tags:
- RCDDeconstructWhitelist
- type: RCDDeconstructable
cost: 6
delay: 4
fx: EffectRCDDeconstruct4
- type: CanBuildWindowOnTop
- type: Sprite
drawdepth: Walls
@@ -120,9 +121,10 @@
- type: Icon
sprite: Structures/Walls/grille.rsi
state: grille_broken
- type: Tag
tags:
- RCDDeconstructWhitelist
- type: RCDDeconstructable
cost: 6
delay: 4
fx: EffectRCDDeconstruct4
- type: Construction
graph: Grille
node: grilleBroken

View File

@@ -57,6 +57,10 @@
- type: Construction
graph: Railing
node: railing
- type: RCDDeconstructable
cost: 2
delay: 2
fx: EffectRCDDeconstruct2
- type: entity
parent: BaseStructure
@@ -126,6 +130,10 @@
- type: Construction
graph: Railing
node: railingCorner
- type: RCDDeconstructable
cost: 2
delay: 2
fx: EffectRCDDeconstruct2
- type: entity
parent: BaseStructure
@@ -186,7 +194,11 @@
- type: Construction
graph: Railing
node: railingCornerSmall
- type: RCDDeconstructable
cost: 2
delay: 2
fx: EffectRCDDeconstruct2
- type: entity
parent: BaseStructure
id: RailingRound
@@ -261,3 +273,7 @@
- type: Construction
graph: Railing
node: railingRound
- type: RCDDeconstructable
cost: 2
delay: 2
fx: EffectRCDDeconstruct2

View File

@@ -59,11 +59,14 @@
- type: Tag
tags:
- Wall
- RCDDeconstructWhitelist
- type: Sprite
sprite: Structures/Walls/brick.rsi
- type: Icon
sprite: Structures/Walls/brick.rsi
- type: RCDDeconstructable
cost: 6
delay: 8
fx: EffectRCDDeconstruct8
- type: Destructible
thresholds:
- trigger:
@@ -90,7 +93,6 @@
- type: Tag
tags:
- Wall
- RCDDeconstructWhitelist
- type: Sprite
sprite: Structures/Walls/clock.rsi
- type: Icon
@@ -123,7 +125,6 @@
- type: Tag
tags:
- Wall
- RCDDeconstructWhitelist
- type: Sprite
sprite: Structures/Walls/clown.rsi
- type: Icon
@@ -131,6 +132,10 @@
- type: Construction
graph: Girder
node: bananiumWall
- type: RCDDeconstructable
cost: 6
delay: 8
fx: EffectRCDDeconstruct8
- type: Destructible
thresholds:
- trigger:
@@ -156,7 +161,6 @@
components:
- type: Tag
tags:
- RCDDeconstructWhitelist
- Wall
- Structure
- type: Sprite
@@ -190,7 +194,6 @@
components:
- type: Tag
tags:
- RCDDeconstructWhitelist
- Wall
- type: Sprite
sprite: Structures/Walls/cult.rsi
@@ -223,7 +226,6 @@
tags:
- Wall
- Debug
- RCDDeconstructWhitelist
- type: Sprite
sprite: Structures/Walls/debug.rsi
- type: Icon
@@ -253,11 +255,14 @@
- type: Tag
tags:
- Wall
- RCDDeconstructWhitelist
- type: Sprite
sprite: Structures/Walls/diamond.rsi
- type: Icon
sprite: Structures/Walls/diamond.rsi
- type: RCDDeconstructable
cost: 6
delay: 8
fx: EffectRCDDeconstruct8
- type: Destructible
thresholds:
- trigger:
@@ -283,7 +288,6 @@
- type: Tag
tags:
- Wall
- RCDDeconstructWhitelist
- type: Sprite
sprite: Structures/Walls/gold.rsi
- type: Icon
@@ -291,6 +295,10 @@
- type: Construction
graph: Girder
node: goldWall
- type: RCDDeconstructable
cost: 6
delay: 8
fx: EffectRCDDeconstruct8
- type: Destructible
thresholds:
- trigger:
@@ -325,7 +333,6 @@
- type: Tag
tags:
- Wall
- RCDDeconstructWhitelist
- type: Sprite
sprite: Structures/Walls/ice.rsi
- type: Icon
@@ -355,7 +362,6 @@
- type: Tag
tags:
- Wall
- RCDDeconstructWhitelist
- type: Sprite
sprite: Structures/Walls/plasma.rsi
- type: Icon
@@ -363,6 +369,10 @@
- type: Construction
graph: Girder
node: plasmaWall
- type: RCDDeconstructable
cost: 6
delay: 8
fx: EffectRCDDeconstruct8
- type: Destructible
thresholds:
- trigger:
@@ -399,7 +409,6 @@
- type: Tag
tags:
- Wall
- RCDDeconstructWhitelist
- type: Sprite
sprite: Structures/Walls/plastic.rsi
- type: Icon
@@ -407,6 +416,10 @@
- type: Construction
graph: Girder
node: plasticWall
- type: RCDDeconstructable
cost: 6
delay: 8
fx: EffectRCDDeconstruct8
- type: Destructible
thresholds:
- trigger:
@@ -459,7 +472,6 @@
- type: Tag
tags:
- Wall
- RCDDeconstructWhitelist
- type: Destructible
thresholds:
- trigger:
@@ -604,7 +616,6 @@
- type: Tag
tags:
- Wall
- RCDDeconstructWhitelist
- type: Sprite
sprite: Structures/Walls/riveted.rsi
- type: Icon
@@ -639,11 +650,14 @@
- type: Tag
tags:
- Wall
- RCDDeconstructWhitelist
- type: Sprite
sprite: Structures/Walls/sandstone.rsi
- type: Icon
sprite: Structures/Walls/sandstone.rsi
- type: RCDDeconstructable
cost: 6
delay: 8
fx: EffectRCDDeconstruct8
- type: Destructible
thresholds:
- trigger:
@@ -669,7 +683,6 @@
- type: Tag
tags:
- Wall
- RCDDeconstructWhitelist
- type: Sprite
sprite: Structures/Walls/silver.rsi
- type: Icon
@@ -677,6 +690,10 @@
- type: Construction
graph: Girder
node: silverWall
- type: RCDDeconstructable
cost: 6
delay: 8
fx: EffectRCDDeconstruct8
- type: Destructible
thresholds:
- trigger:
@@ -842,7 +859,6 @@
- type: Tag
tags:
- Wall
- RCDDeconstructWhitelist
- type: Sprite
sprite: Structures/Walls/solid.rsi
- type: WallReplacementMarker
@@ -851,6 +867,10 @@
node: wall
- type: Icon
sprite: Structures/Walls/solid.rsi
- type: RCDDeconstructable
cost: 6
delay: 8
fx: EffectRCDDeconstruct8
- type: Destructible
thresholds:
- trigger:
@@ -1012,7 +1032,6 @@
- type: Tag
tags:
- Wall
- RCDDeconstructWhitelist
- type: Sprite
sprite: Structures/Walls/web.rsi
- type: Icon
@@ -1224,11 +1243,14 @@
- type: Tag
tags:
- Wall
- RCDDeconstructWhitelist
- type: Sprite
sprite: Structures/Walls/cobblebrick.rsi
- type: Icon
sprite: Structures/Walls/cobblebrick.rsi
- type: RCDDeconstructable
cost: 6
delay: 8
fx: EffectRCDDeconstruct8
- type: Destructible
thresholds:
- trigger:

View File

@@ -1,7 +1,7 @@
- type: entity
id: MiningWindow
name: mining window
parent: Window
parent: WindowRCDResistant
components:
- type: Sprite
drawdepth: WallTops

View File

@@ -1,7 +1,7 @@
- type: entity
id: PlasmaWindow
name: plasma window
parent: Window
parent: WindowRCDResistant
components:
- type: Sprite
drawdepth: WallTops
@@ -55,7 +55,7 @@
- type: entity
id: PlasmaWindowDirectional
parent: WindowDirectional
parent: WindowDirectionalRCDResistant
name: directional plasma window
description: Don't smudge up the glass down there.
placement:

View File

@@ -14,6 +14,10 @@
- type: Damageable
damageContainer: StructuralInorganic
damageModifierSet: RGlass
- type: RCDDeconstructable
cost: 6
delay: 6
fx: EffectRCDDeconstruct6
- type: Destructible
thresholds:
- trigger:
@@ -99,6 +103,10 @@
sprite: Structures/Windows/cracks_directional.rsi
- type: Damageable
damageModifierSet: RGlass
- type: RCDDeconstructable
cost: 4
delay: 4
fx: EffectRCDDeconstruct4
- type: Destructible
thresholds:
- trigger:

View File

@@ -1,7 +1,7 @@
- type: entity
id: ReinforcedPlasmaWindow
name: reinforced plasma window
parent: Window
parent: WindowRCDResistant
components:
- type: Sprite
drawdepth: WallTops
@@ -58,7 +58,7 @@
- type: entity
id: PlasmaReinforcedWindowDirectional
parent: WindowDirectional
parent: WindowDirectionalRCDResistant
name: directional reinforced plasma window
description: Don't smudge up the glass down there.
placement:

View File

@@ -1,7 +1,7 @@
- type: entity
id: ReinforcedUraniumWindow
name: reinforced uranium window
parent: Window
parent: WindowRCDResistant
components:
- type: Sprite
drawdepth: WallTops

View File

@@ -1,7 +1,7 @@
- type: entity
id: ShuttleWindow
name: shuttle window
parent: Window
parent: WindowRCDResistant
components:
- type: Sprite
drawdepth: WallTops

View File

@@ -1,7 +1,7 @@
- type: entity
id: UraniumWindow
name: uranium window
parent: Window
parent: WindowRCDResistant
components:
- type: Sprite
drawdepth: WallTops

View File

@@ -16,7 +16,6 @@
arc: 360 # interact despite grilles
- type: Tag
tags:
- RCDDeconstructWhitelist
- ForceFixRotations
- Window
- type: Sprite
@@ -42,6 +41,10 @@
- type: ExaminableDamage
messages: WindowMessages
- type: Repairable
- type: RCDDeconstructable
cost: 6
delay: 4
fx: EffectRCDDeconstruct4
- type: Destructible
thresholds:
- trigger:
@@ -89,6 +92,14 @@
- type: StaticPrice
price: 100
- type: BlockWeather
- type: entity
id: WindowRCDResistant
parent: Window
abstract: true
components:
- type: RCDDeconstructable
deconstructable: false
- type: entity
id: WindowDirectional
@@ -139,6 +150,10 @@
damageModifierSet: Glass
- type: ExaminableDamage
messages: WindowMessages
- type: RCDDeconstructable
cost: 4
delay: 2
fx: EffectRCDDeconstruct2
- type: Destructible
thresholds:
- trigger:
@@ -181,6 +196,14 @@
- type: StaticPrice
price: 10
- type: entity
id: WindowDirectionalRCDResistant
parent: WindowDirectional
abstract: true
components:
- type: RCDDeconstructable
deconstructable: false
- type: entity
id: WindowFrostedDirectional
parent: WindowDirectional

View File

@@ -51,3 +51,7 @@
max: 1
- !type:DoActsBehavior
acts: [ "Destruction" ]
- type: RCDDeconstructable
cost: 2
delay: 2
fx: EffectRCDDeconstruct2

View File

@@ -0,0 +1,294 @@
# Operations
- type: rcd
id: Invalid # Hidden prototype - do not add to RCDs
mode: Invalid
- type: rcd
id: Deconstruct
name: rcd-component-deconstruct
category: Main
sprite: /Textures/Interface/Radial/RCD/deconstruct.png
mode: Deconstruct
prototype: EffectRCDDeconstructPreview
rotation: Camera
- type: rcd
id: DeconstructLattice # Hidden prototype - do not add to RCDs
mode: Deconstruct
cost: 2
delay: 1
rotation: Camera
fx: EffectRCDDeconstruct2
- type: rcd
id: DeconstructTile # Hidden prototype - do not add to RCDs
mode: Deconstruct
cost: 4
delay: 4
rotation: Camera
fx: EffectRCDDeconstruct4
# Flooring
- type: rcd
id: Plating
name: rcd-component-plating
category: WallsAndFlooring
sprite: /Textures/Interface/Radial/RCD/plating.png
mode: ConstructTile
prototype: Plating
cost: 1
delay: 1
collisionMask: InteractImpassable
rules:
- CanBuildOnEmptyTile
fx: EffectRCDConstruct1
- type: rcd
id: FloorSteel
name: rcd-component-floor-steel
category: WallsAndFlooring
sprite: /Textures/Interface/Radial/RCD/metal_tile.png
mode: ConstructTile
prototype: FloorSteel
cost: 1
delay: 1
collisionMask: InteractImpassable
rules:
- CanBuildOnEmptyTile
fx: EffectRCDConstruct1
- type: rcd
id: Catwalk
name: rcd-component-catwalk
category: WallsAndFlooring
sprite: /Textures/Interface/Radial/RCD/catwalk.png
mode: ConstructObject
prototype: Catwalk
cost: 1
delay: 1
collisionMask: InteractImpassable
rules:
- MustBuildOnSubfloor
- IsCatwalk
rotation: Fixed
fx: EffectRCDConstruct1
# Walls
- type: rcd
id: WallSolid
name: rcd-component-wall-solid
category: WallsAndFlooring
sprite: /Textures/Interface/Radial/RCD/solid_wall.png
mode: ConstructObject
prototype: WallSolid
cost: 4
delay: 2
collisionMask: FullTileMask
rotation: Fixed
fx: EffectRCDConstruct2
- type: rcd
id: Grille
name: rcd-component-grille
category: WindowsAndGrilles
sprite: /Textures/Interface/Radial/RCD/grille.png
mode: ConstructObject
prototype: Grille
cost: 4
delay: 2
collisionMask: FullTileMask
rotation: Fixed
fx: EffectRCDConstruct2
# Windows
- type: rcd
id: Window
name: rcd-component-window
category: WindowsAndGrilles
sprite: /Textures/Interface/Radial/RCD/window.png
mode: ConstructObject
prototype: Window
cost: 3
delay: 2
collisionMask: FullTileMask
rules:
- IsWindow
rotation: Fixed
fx: EffectRCDConstruct2
- type: rcd
id: WindowDirectional
name: rcd-component-window-directional
category: WindowsAndGrilles
sprite: /Textures/Interface/Radial/RCD/directional.png
mode: ConstructObject
prototype: WindowDirectional
cost: 2
delay: 1
collisionMask: FullTileMask
collisionBounds: "-0.23,-0.49,0.23,-0.36"
rules:
- IsWindow
rotation: User
fx: EffectRCDConstruct1
- type: rcd
id: ReinforcedWindow
name: rcd-component-reinforced-window
category: WindowsAndGrilles
sprite: /Textures/Interface/Radial/RCD/window_reinforced.png
mode: ConstructObject
prototype: ReinforcedWindow
cost: 4
delay: 3
collisionMask: FullTileMask
rules:
- IsWindow
rotation: User
fx: EffectRCDConstruct3
- type: rcd
id: WindowReinforcedDirectional
name: rcd-component-window-reinforced-directional
category: WindowsAndGrilles
sprite: /Textures/Interface/Radial/RCD/directional_reinforced.png
mode: ConstructObject
prototype: WindowReinforcedDirectional
cost: 3
delay: 2
collisionMask: FullTileMask
collisionBounds: "-0.23,-0.49,0.23,-0.36"
rules:
- IsWindow
rotation: User
fx: EffectRCDConstruct2
# Airlocks
- type: rcd
id: Airlock
name: rcd-component-airlock
category: Airlocks
sprite: /Textures/Interface/Radial/RCD/airlock.png
mode: ConstructObject
prototype: Airlock
cost: 4
delay: 4
collisionMask: FullTileMask
rotation: Camera
fx: EffectRCDConstruct4
- type: rcd
id: AirlockGlass
name: rcd-component-airlock-glass
category: Airlocks
sprite: /Textures/Interface/Radial/RCD/glass_airlock.png
mode: ConstructObject
prototype: AirlockGlass
cost: 4
delay: 4
collisionMask: FullTileMask
rotation: Camera
fx: EffectRCDConstruct4
- type: rcd
id: Firelock
name: rcd-component-firelock
category: Airlocks
sprite: /Textures/Interface/Radial/RCD/firelock.png
mode: ConstructObject
prototype: Firelock
cost: 4
delay: 3
collisionMask: FullTileMask
rotation: Camera
fx: EffectRCDConstruct3
# Lighting
- type: rcd
id: TubeLight
name: rcd-component-tube-light
category: Lighting
sprite: /Textures/Interface/Radial/RCD/tube_light.png
mode: ConstructObject
prototype: Poweredlight
cost: 2
delay: 1
collisionMask: TabletopMachineMask
collisionBounds: "-0.23,-0.49,0.23,-0.36"
rotation: User
fx: EffectRCDConstruct1
- type: rcd
id: BulbLight
name: rcd-component-window-bulb-light
category: Lighting
sprite: /Textures/Interface/Radial/RCD/bulb_light.png
mode: ConstructObject
prototype: PoweredSmallLight
cost: 2
delay: 1
collisionMask: TabletopMachineMask
collisionBounds: "-0.23,-0.49,0.23,-0.36"
rotation: User
fx: EffectRCDConstruct1
# Electrical
- type: rcd
id: LVCable
name: rcd-component-window-lv-cable
category: Electrical
sprite: /Textures/Interface/Radial/RCD/lv_coil.png
mode: ConstructObject
prototype: CableApcExtension
cost: 1
delay: 0
collisionMask: InteractImpassable
rules:
- MustBuildOnSubfloor
rotation: Fixed
fx: EffectRCDConstruct0
- type: rcd
id: MVCable
name: rcd-component-window-mv-cable
category: Electrical
sprite: /Textures/Interface/Radial/RCD/mv_coil.png
mode: ConstructObject
prototype: CableMV
cost: 1
delay: 0
collisionMask: InteractImpassable
rules:
- MustBuildOnSubfloor
rotation: Fixed
fx: EffectRCDConstruct0
- type: rcd
id: HVCable
name: rcd-component-window-hv-cable
category: Electrical
sprite: /Textures/Interface/Radial/RCD/hv_coil.png
mode: ConstructObject
prototype: CableHV
cost: 1
delay: 0
collisionMask: InteractImpassable
rules:
- MustBuildOnSubfloor
rotation: Fixed
fx: EffectRCDConstruct0
- type: rcd
id: CableTerminal
name: rcd-component-window-cable-terminal
category: Electrical
sprite: /Textures/Interface/Radial/RCD/cable_terminal.png
mode: ConstructObject
prototype: CableTerminal
cost: 1
delay: 0
collisionMask: InteractImpassable
rules:
- MustBuildOnSubfloor
rotation: User
fx: EffectRCDConstruct0

View File

@@ -1034,9 +1034,6 @@
- type: Tag
id: RawMaterial
- type: Tag
id: RCDDeconstructWhitelist
# Give this to something that doesn't need any special recycler behavior and just needs deleting.
- type: Tag
id: Recyclable

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

View File

@@ -8,7 +8,65 @@
"copyright": "Taken from tgStation at commit https://github.com/tgstation/tgstation/commit/d75cbd0a2900fdec4c12cd5ba986b52ccff03713/icons/effects/effects_rcd.dmi",
"states": [
{
"name": "construct",
"name": "construct0",
"delays": [
[
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1
]
]
},
{
"name": "construct1",
"delays": [
[
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1
]
]
},
{
"name": "construct2",
"delays": [
[
0.1,
@@ -45,6 +103,357 @@
0.1
]
]
},
{
"name": "construct3",
"delays": [
[
0.15,
0.15,
0.15,
0.15,
0.15,
0.15,
0.15,
0.15,
0.15,
0.15,
0.15,
0.15,
0.15,
0.15,
0.15,
0.15,
0.15,
0.15,
0.15,
0.15,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1
]
]
},
{
"name": "construct4",
"delays": [
[
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1
]
]
},
{
"name": "deconstruct2",
"delays": [
[
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1
]
]
},
{
"name": "deconstruct4",
"delays": [
[
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1
]
]
},
{
"name": "deconstruct6",
"delays": [
[
0.15,
0.15,
0.15,
0.15,
0.15,
0.15,
0.15,
0.15,
0.15,
0.15,
0.15,
0.15,
0.15,
0.15,
0.15,
0.15,
0.15,
0.15,
0.15,
0.15,
0.15,
0.15,
0.15,
0.15,
0.15,
0.15,
0.15,
0.15,
0.15,
0.15,
0.15,
0.15,
0.15,
0.15,
0.15,
0.15,
0.15,
0.15,
0.15,
0.15,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1
]
]
},
{
"name": "deconstruct8",
"delays": [
[
0.2,
0.2,
0.2,
0.2,
0.2,
0.2,
0.2,
0.2,
0.2,
0.2,
0.2,
0.2,
0.2,
0.2,
0.2,
0.2,
0.2,
0.2,
0.2,
0.2,
0.2,
0.2,
0.2,
0.2,
0.2,
0.2,
0.2,
0.2,
0.2,
0.2,
0.2,
0.2,
0.2,
0.2,
0.2,
0.2,
0.2,
0.2,
0.2,
0.2,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1
]
]
},
{
"name": "deconstructPreview",
"delays": [
[
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.05
]
]
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 710 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 776 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 283 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 646 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 404 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 467 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 775 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 312 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 296 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 637 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 698 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 223 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 856 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 901 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 850 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 655 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 297 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 976 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 833 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 436 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 448 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 266 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 431 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 739 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 495 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 525 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 211 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 186 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 389 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 391 B