Add space heaters (#25250)

This commit is contained in:
Menshin
2024-02-28 19:27:29 +01:00
committed by GitHub
parent 221719c27d
commit 9884351101
21 changed files with 770 additions and 15 deletions

View File

@@ -0,0 +1,18 @@
comp-space-heater-ui-thermostat = Thermostat:
comp-space-heater-ui-mode = Mode
comp-space-heater-ui-status-disabled = Off
comp-space-heater-ui-status-enabled = On
comp-space-heater-ui-increase-temperature-range = +
comp-space-heater-ui-decrease-temperature-range = -
comp-space-heater-mode-Auto = Auto
comp-space-heater-mode-Heat = Heat
comp-space-heater-mode-Cool = Cool
comp-space-heater-ui-power-consumption = Power level:
comp-space-heater-ui-Low-power-consumption = Low
comp-space-heater-ui-Medium-power-consumption = Medium
comp-space-heater-ui-High-power-consumption = High
comp-space-heater-device-name = space heater
comp-space-heater-unanchored = The {$device} is not anchored.

View File

@@ -38,6 +38,7 @@ wires-board-name-windoor = Windoor Control
wires-board-name-mech = Mech
wires-board-name-fatextractor = FatExtractor
wires-board-name-flatpacker = Flatpacker
wires-board-name-spaceheater = Space Heater
# names that get displayed in the wire hacking hud & admin logs.

View File

@@ -451,7 +451,7 @@
id: PortableScrubberMachineCircuitBoard
parent: BaseMachineCircuitboard
name: portable scrubber machine board
description: A PCB for a portable scrubber.
description: A machine printed circuit board for a portable scrubber.
components:
- type: Sprite
state: engineering
@@ -464,6 +464,22 @@
Cable: 5
Glass: 2
- type: entity
id: SpaceHeaterMachineCircuitBoard
parent: BaseMachineCircuitboard
name: space heater machine board
description: A machine printed circuit board for a space heater.
components:
- type: Sprite
state: engineering
- type: MachineBoard
prototype: SpaceHeater
requirements:
MatterBin: 1
Capacitor: 2
materialRequirements:
Cable: 5
- type: entity
id: CloningPodMachineCircuitboard
parent: BaseMachineCircuitboard

View File

@@ -390,6 +390,7 @@
- ThermomachineFreezerMachineCircuitBoard
- HellfireFreezerMachineCircuitBoard
- PortableScrubberMachineCircuitBoard
- SpaceHeaterMachineCircuitBoard
- CloningPodMachineCircuitboard
- MedicalScannerMachineCircuitboard
- CryoPodMachineCircuitboard

View File

@@ -1,15 +1,15 @@
- type: entity
id: PortableScrubber
parent: BaseStructureDynamic
parent: [BaseMachinePowered, ConstructibleMachine]
name: portable scrubber
description: It scrubs, portably!
components:
- type: Transform
noRot: true
- type: InteractionOutline
anchored: false
- type: Physics
bodyType: Dynamic
canCollide: false
- type: AtmosDevice
joinSystem: true
- type: Fixtures
fixtures:
fix1:
@@ -34,9 +34,6 @@
shader: unshaded
visible: false
map: ["enum.PortableScrubberVisualLayers.IsDraining"]
- type: Pullable
- type: AtmosDevice
joinSystem: true
- type: PortableScrubber
gasMixture:
volume: 1250
@@ -49,7 +46,6 @@
volume: 1
- type: ApcPowerReceiver
powerLoad: 2000
- type: ExtensionCableReceiver
- type: Appearance
- type: GenericVisualizer
visuals:
@@ -94,13 +90,109 @@
min: 1
max: 3
SheetGlass1:
min: 1
max: 2
- !type:DoActsBehavior
acts: [ "Destruction" ]
- type: entity
id: SpaceHeater
parent: [BaseMachinePowered, ConstructibleMachine]
name: space heater
description: A bluespace technology device that alters local temperature. Commonly referred to as a "Space Heater".
suffix: Unanchored
components:
- type: Transform
anchored: false
- type: Physics
bodyType: Dynamic
- type: AtmosDevice
joinSystem: true
- type: Fixtures
fixtures:
fix1:
shape:
!type:PhysShapeAabb
bounds: "-0.15,-0.35,0.15,0.5"
density: 100
mask:
- MachineMask
layer:
- MachineLayer
- type: ApcPowerReceiver
powerDisabled: true #starts off
- type: Sprite
sprite: Structures/Piping/Atmospherics/Portable/portable_sheater.rsi
noRot: true
layers:
- state: sheaterOff
map: ["enum.SpaceHeaterVisualLayers.Main"]
- state: sheaterPanelOpen
map: [ "enum.WiresVisualLayers.MaintenancePanel" ]
- type: Appearance
- type: GenericVisualizer
visuals:
enum.SpaceHeaterVisuals.State:
SpaceHeaterVisualLayers.Main:
Off: { state: sheaterOff }
StandBy: { state: sheaterStandby }
Heating: { state: sheaterHeat }
Cooling: { state: sheaterCool }
- type: Machine
board: SpaceHeaterMachineCircuitBoard
- type: WiresPanel
- type: WiresVisuals
- type: UserInterface
interfaces:
- key: enum.SpaceHeaterUiKey.Key
type: SpaceHeaterBoundUserInterface
- type: ActivatableUI
inHandsOnly: false
key: enum.SpaceHeaterUiKey.Key
- type: SpaceHeater
- type: GasThermoMachine
temperatureTolerance: 0.2
atmospheric: true
- type: Damageable
damageContainer: Inorganic
damageModifierSet: Metallic
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 600
behaviors:
- !type:DoActsBehavior
acts: [ "Destruction" ]
- trigger:
!type:DamageTrigger
damage: 300
behaviors:
- !type:PlaySoundBehavior
sound:
collection: MetalBreak
- !type:SpawnEntitiesBehavior
spawn:
SheetSteel1:
min: 1
max: 3
- !type:DoActsBehavior
acts: [ "Destruction" ]
- type: CollideOnAnchor
enable: true
- type: ContainerContainer
containers:
machine_board: !type:Container
machine_parts: !type:Container
- type: entity
parent: SpaceHeater
id: SpaceHeaterAnchored
suffix: Anchored
components:
- type: Transform
anchored: true
- type: Physics
bodyType: Static
- type: entity
parent: SpaceHeaterAnchored
id: SpaceHeaterEnabled
suffix: Anchored, Enabled
components:
- type: ApcPowerReceiver
powerDisabled: false

View File

@@ -156,6 +156,16 @@
Glass: 900
Gold: 50
- type: latheRecipe
id: SpaceHeaterMachineCircuitBoard
result: SpaceHeaterMachineCircuitBoard
category: Circuitry
completetime: 4
materials:
Steel: 150
Glass: 900
Gold: 50
- type: latheRecipe
id: MedicalScannerMachineCircuitboard
result: MedicalScannerMachineCircuitboard

View File

@@ -160,6 +160,7 @@
recipeUnlocks:
- HellfireFreezerMachineCircuitBoard
- PortableScrubberMachineCircuitBoard
- SpaceHeaterMachineCircuitBoard
- HolofanProjector
- type: technology

View File

@@ -0,0 +1,50 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/commit/ead7e05f990de05b7f5f93d39f9671498cb0aa01",
"size": {
"x": 32,
"y": 32
},
"states": [
{
"name": "sheaterOff"
},
{
"name": "sheaterCool",
"delays": [
[
0.2,
0.2,
0.2,
0.2,
0.2,
0.2,
0.2,
0.2
]
]
},
{
"name": "sheaterHeat",
"delays": [
[
0.2,
0.2,
0.2,
0.2,
0.2,
0.2,
0.2,
0.2
]
]
},
{
"name": "sheaterPanelOpen"
},
{
"name": "sheaterStandby"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 994 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 911 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 338 B