Merge pull request #1613 from crystallpunk-14/ed-04-08-2025-upstream-sync

Crawling upstream sync
This commit is contained in:
Red
2025-08-06 12:52:51 +03:00
committed by GitHub
510 changed files with 12045 additions and 3125 deletions

View File

@@ -147,6 +147,15 @@
name: alerts-stunned-name
description: alerts-stunned-desc
- type: alert
id: Knockdown
clickEvent: !type:KnockedDownAlertEvent
icons:
- sprite: /Textures/Interface/Alerts/stunnable.rsi
state: knocked-down
name: alerts-knockdown-name
description: alerts-knockdown-desc
- type: alert
id: Handcuffed
clickEvent: !type:RemoveCuffsAlertEvent

View File

@@ -128,7 +128,7 @@
parent: ClothingBackpackDuffelSyndicateAmmo
id: ClothingBackpackDuffelSyndicateAmmoFilled
name: ammo bundle
description: "Reloading! Contains 4 magazines for the C-20r, 5 drums for the Bulldog, and 2 ammo boxes for the L6 SAW."
description: "Reloading! Contains 4 magazines for the C-20r, 5 drums for the Bulldog, 3 magazines for the Estoc DMR, and 2 ammo boxes for the L6 SAW."
components:
- type: StorageFill
contents:
@@ -136,6 +136,8 @@
amount: 4
- id: MagazineShotgun
amount: 4
- id: MagazineRifle
amount: 3
- id: MagazineShotgunSlug
amount: 1
- id: MagazineLightRifleBox
@@ -337,6 +339,19 @@
- id: SyndieTrickyBomb
amount: 2
- type: entity
parent: [ ClothingBackpackDuffelBundle, BaseMajorContraband ]
id: ClothingBackpackDuffelAcolyteBundle
name: acolyte armor bundle
description: "Contains the Acolyte Armor, the must have of any cult leader."
components:
- type: StorageFill
contents:
- id: ClothingOuterArmorCult
- id: ClothingHeadHelmetCult
- id: ClothingShoesCult
- id: BedsheetCult
- type: entity
parent: ClothingBackpackDuffelSyndicateBundle
id: ClothingBackpackDuffelSyndicateFilledStarterKit

View File

@@ -43,6 +43,7 @@
amount: 2
- id: RemoteSignaller
amount: 2
- id: NetworkConfigurator
- id: Binoculars
- type: entityTable

View File

@@ -50,5 +50,4 @@
contrabandInventory:
ChemistryBottleEthanol: 3
DrinkBottleOfNothingFull: 1
emaggedInventory:
DrinkPoisonWinebottleFull: 2

View File

@@ -25,11 +25,9 @@
FoodBakedBunHotX: 2
DrinkWineBottleFull: 1
ToyFigurineChaplain: 1
ClothingNeckScarfStripedBlack: 3
emaggedInventory:
ClothingOuterArmorCult: 1
ClothingHeadHelmetCult: 1
ClothingOuterRobesCult: 3
ClothingHeadHatHoodCulthood: 3
ClothingShoesCult: 4
BedsheetCult: 4
ClothingNeckScarfStripedBlack: 3

View File

@@ -25,7 +25,6 @@
contrabandInventory:
DrinkLithiumFlask: 1
StrangePill: 3
emaggedInventory:
ChemistryBottleToxin: 1
- type: vendingMachineInventory
@@ -57,7 +56,6 @@
contrabandInventory:
DrinkLithiumFlask: 1
StrangePill: 3
emaggedInventory:
ChemistryBottlePax: 3
ChemistryBottleMuteToxin: 3
ChemistryBottleLead: 2

View File

@@ -18,5 +18,3 @@
GroundTobacco: 3
CigarGold: 2
Igniter: 1
emaggedInventory:
CigPackSyndicate: 1

View File

@@ -8,5 +8,4 @@
DrinkHotCoco: 5
contrabandInventory:
DrinkTeapot: 2
emaggedInventory:
DrinkNothing: 2

View File

@@ -11,6 +11,6 @@
DrinkFourteenLokoCan: 2
contrabandInventory:
DrinkColaBottleFull: 2
DrinkChangelingStingCan: 2
emaggedInventory:
DrinkNukieCan: 2
DrinkChangelingStingCan: 2

View File

@@ -8,5 +8,4 @@
contrabandInventory:
FoodBagel: 2
FoodBagelPoppy: 2
emaggedInventory:
FoodDonutPoison: 1

View File

@@ -13,6 +13,6 @@
ClothingNeckStethoscope: 2
Saw: 2
Tourniquet: 3
DrinkChangelingStingCan: 2
emaggedInventory:
DrinkNukieCan: 2
DrinkChangelingStingCan: 2

View File

@@ -7,6 +7,6 @@
ToyFigurineClown: 1
ToyFigurineMime: 1
ToyFigurineNukie: 1
emaggedInventory:
HappyHonkCluwne: 1
emaggedInventory:
HappyHonkNukie: 1

View File

@@ -24,5 +24,3 @@
# "Legally" obtained currency
SpaceCash100: 2
ToyFigurineLawyer: 1
emaggedInventory:
CyberPen: 1

View File

@@ -22,5 +22,4 @@
contrabandInventory:
ChemistryBottleUnstableMutagen: 1
Joint: 1
emaggedInventory:
ChemistryBottleLeft4Zed: 1

View File

@@ -12,6 +12,6 @@
DrinkFourteenLokoCan: 2
contrabandInventory:
DrinkDrGibbCan: 3
DrinkChangelingStingCan: 2
emaggedInventory:
DrinkNukieCan: 2
DrinkChangelingStingCan: 2

View File

@@ -41,5 +41,4 @@
contrabandInventory:
TobaccoSeeds: 2
FoodSnackSemki: 2
emaggedInventory:
FlyAmanitaSeeds: 1

View File

@@ -8,6 +8,6 @@
contrabandInventory:
DrinkStarkistCan: 2
ToyHammer: 1
DrinkChangelingStingCan: 2
emaggedInventory:
DrinkNukieCan: 2
DrinkChangelingStingCan: 2

View File

@@ -11,6 +11,6 @@
DrinkFourteenLokoCan: 3
contrabandInventory:
DrinkColaBottleFull: 2
DrinkChangelingStingCan: 3
emaggedInventory:
DrinkNukieCan: 3
DrinkChangelingStingCan: 3

View File

@@ -11,6 +11,6 @@
contrabandInventory:
DrinkSpaceMountainWindBottleFull: 2
DrinkSpaceUpBottleFull: 2
DrinkChangelingStingCan: 2
emaggedInventory:
DrinkNukieCan: 2
DrinkChangelingStingCan: 2

View File

@@ -11,6 +11,6 @@
DrinkFourteenLokoCan: 2
contrabandInventory:
FoodBurgerCarp: 2
DrinkChangelingStingCan: 2
emaggedInventory:
DrinkNukieCan: 2
DrinkChangelingStingCan: 2

View File

@@ -10,8 +10,8 @@
FoodTinBeans: 3
FoodTinPeaches: 3
DrinkBeerCan: 6
emaggedInventory:
KitchenKnife: 2
emaggedInventory:
ClothingMaskBreath: 3
EmergencyOxygenTankFilled: 3
DrinkNukieCan: 2

View File

@@ -19,9 +19,9 @@
ToyFigurineFootsoldier: 1
ToyFigurineNukieElite: 1
ToyFigurineNukieCommander: 1
ClothingUniformJumpskirtTacticalMaid: 5
ClothingHandsTacticalMaidGloves: 5
emaggedInventory:
ClothingOuterCoatSyndieCapArmored: 1
ClothingOuterWinterSyndieCapArmored: 1
ClothingHeadHatTacticalMaidHeadband: 5
ClothingUniformJumpskirtTacticalMaid: 5
ClothingHandsTacticalMaidGloves: 5

View File

@@ -59,7 +59,6 @@
ClothingHeadHatRichard: 1
ToyFigurineBoxer: 1
ToyFigurineMusician: 1
emaggedInventory:
ClothingShoesBling: 1
ClothingShoesBootsCowboyFancy: 1
ClothingOuterDogi: 1

View File

@@ -19,8 +19,6 @@
ClothingHeadHatCanadaBeanie: 4
ClothingHeadHatSantahat: 2
ClothingHeadHatXmasCrown: 2
emaggedInventory:
ClothingNeckScarfStripedSyndieGreen: 3
ClothingNeckScarfStripedSyndieRed: 3
ClothingNeckScarfStripedCentcom: 3

View File

@@ -17,5 +17,4 @@
# Some engineer forgot to take the multitool out the youtool when working on it, happens.
contrabandInventory:
Multitool: 1
emaggedInventory:
ClothingHandsGlovesColorYellow: 1

View File

@@ -2257,6 +2257,24 @@
categories:
- UplinkDeception
- type: listing
id: UplinkAcolyteArmor
name: uplink-acolyte-armor-name
description: uplink-acolyte-armor-desc
icon: { sprite: Clothing/OuterClothing/Armor/cult_armour.rsi, state: icon}
productEntity: ClothingBackpackDuffelAcolyteBundle
discountCategory: veryRareDiscounts
discountDownTo:
Telecrystal: 3
cost:
Telecrystal: 4
categories:
- UplinkJob
conditions:
- !type:BuyerJobCondition
whitelist:
- Chaplain
- type: listing
id: UplinkSawAdvanced
name: uplink-saw-advanced-name

View File

@@ -173,13 +173,21 @@
- 0,0,8,4
- type: entity
parent: ClothingBackpackDuffelSyndicate
parent: [ ClothingBackpackDuffelSyndicate, BaseSyndicateContraband ]
id: ClothingBackpackDuffelSyndicateBundle
abstract: true
components:
- type: Tag
tags: [] # ignore "WhitelistChameleon" tag
- type: entity
parent: ClothingBackpackDuffel
id: ClothingBackpackDuffelBundle
abstract: true
components:
- type: Tag
tags: [] # ignore "WhitelistChameleon" tag
- type: entity
parent: ClothingBackpackDuffelSyndicate
id: ClothingBackpackDuffelSyndicateAmmo

View File

@@ -234,6 +234,7 @@
- WetFloorSign
- HolosignProjector
- Plunger
- GoldenPlunger
- WireBrush
components:
- LightReplacer

View File

@@ -74,8 +74,42 @@
components:
- type: Sprite
sprite: Clothing/Head/Hardsuits/engineering.rsi
layers:
- state: icon
- state: icon-unshaded
shader: unshaded
- state: light-overlay
visible: false
shader: unshaded
map: [ "light" ]
- type: HandheldLight
addPrefix: false
- type: ToggleableVisuals
spriteLayer: light
clothingVisuals:
head:
- state: equipped-head-light
shader: unshaded
head-vox:
- state: equipped-head-light-vox
shader: unshaded
head-dog:
- state: equipped-head-light-dog
shader: unshaded
- type: Clothing
sprite: Clothing/Head/Hardsuits/engineering.rsi
clothingVisuals:
head:
- state: equipped-head
- state: equipped-head-unshaded
shader: unshaded
head-vox:
- state: equipped-head-vox
- state: equipped-head-unshaded-vox
shader: unshaded
head-dog:
- state: equipped-head-dog
- state: equipped-head-unshaded-dog
shader: unshaded
- type: PointLight
color: "#ffdbad"
- type: PressureProtection
@@ -343,8 +377,42 @@
components:
- type: Sprite
sprite: Clothing/Head/Hardsuits/engineering-white.rsi
layers:
- state: icon
- state: icon-unshaded
shader: unshaded
- state: light-overlay
visible: false
shader: unshaded
map: [ "light" ]
- type: HandheldLight
addPrefix: false
- type: ToggleableVisuals
spriteLayer: light
clothingVisuals:
head:
- state: equipped-head-light
shader: unshaded
head-vox:
- state: equipped-head-light-vox
shader: unshaded
head-dog:
- state: equipped-head-light-dog
shader: unshaded
- type: Clothing
sprite: Clothing/Head/Hardsuits/engineering-white.rsi
clothingVisuals:
head:
- state: equipped-head
- state: equipped-head-unshaded
shader: unshaded
head-vox:
- state: equipped-head-vox
- state: equipped-head-unshaded-vox
shader: unshaded
head-dog:
- state: equipped-head-dog
- state: equipped-head-unshaded-dog
shader: unshaded
- type: PointLight
color: "#daffad"
- type: PressureProtection

View File

@@ -306,6 +306,8 @@
- type: PhysicalComposition
materialComposition:
Plastic: 25
- type: StaticPrice
price: 5
- type: entity
parent: ClothingMaskBase

View File

@@ -342,7 +342,7 @@
coefficients:
Blunt: 0.5
Slash: 0.5
Piercing: 0.6
Piercing: 0.5
Heat: 0.5
- type: GroupExamine

View File

@@ -159,6 +159,8 @@
components:
- type: Clickable
- type: Slippery
staminaDamage: 0
frictionStatusTime: 0 # Don't apply friction twice
- type: Transform
noRot: true
anchored: true

View File

@@ -0,0 +1,14 @@
# dummy entity for the admin camera EUI
# this gets parented to the person being observed
- type: entity
id: AdminCamera
categories: [ HideSpawnMenu ]
name: admin camera
description: We are watching you.
components:
- type: Visibility
layer: 8 # Don't network this to anyone so cheat clients can't see it. We are adding a PVS override to the user.
- type: Eye # for the camera itself
drawFov: false
pvsScale: 0.8 # we don't need the full range

View File

@@ -42,6 +42,7 @@
- FoodCakeChristmasSlice
- FoodCakeVanillaSlice
- FoodCakeBirthdaySlice
- FoodCakeCottonSlice
- FoodBakedMuffin
- FoodBakedMuffinBerry
- FoodBakedMuffinCherry

View File

@@ -37,6 +37,7 @@
- FoodCakeChristmas
- FoodCakeBirthday
- FoodCakeVanilla
- FoodCakeCotton
- FoodPieApple
- FoodPieBaklava
- FoodPieBananaCream

View File

@@ -143,9 +143,6 @@
- type: Body
- type: StatusEffects
allowed:
- Stun
- KnockedDown
- SlowedDown
- Flashed
- type: TypingIndicator
proto: robot

View File

@@ -113,6 +113,7 @@
10: Dead
- type: Stamina
critThreshold: 10
animationThreshold: 1
- type: DamageStateVisuals
states:
Alive:
@@ -2176,6 +2177,7 @@
- type: entity
parent: [ SimpleMobBase, FlyingMobBase ]
id: MobParrotBase
name: parrot
abstract: true
description: Infiltrates your domain, spies on you, and somehow still a cool pet.
components:
@@ -2251,7 +2253,6 @@
bloodMaxVolume: 50
- type: entity
name: parrot
parent: MobParrotBase
id: MobParrot
components:
@@ -3143,7 +3144,7 @@
factions:
- Syndicate
- type: Access
tags:
tags:
- NuclearOperative
- SyndicateAgent
- type: MeleeWeapon

View File

@@ -19,9 +19,7 @@
group: GenericNumber
- type: StatusEffects
allowed:
- SlowedDown
- Stutter
- Stun
- Electrocution
- TemporaryBlindness
- RadiationProtection

View File

@@ -35,9 +35,6 @@
bodyType: KinematicController # Same for all inheritors
- type: StatusEffects
allowed:
- Stun
- KnockedDown
- SlowedDown
- Stutter
- Electrocution
- type: Pullable
@@ -386,7 +383,6 @@
chemicalMaxVolume: 100
- type: StatusEffects
allowed:
- SlowedDown
- Electrocution
- type: MeleeWeapon
soundHit:
@@ -409,6 +405,7 @@
- FootstepSound
- CannotSuicide
- DoorBumpOpener
- StunImmune
- type: NoSlip
- type: ZombieImmune
- type: ExaminableSolution

View File

@@ -42,6 +42,7 @@
75: Dead
- type: Stamina
critThreshold: 50
animationThreshold: 25
- type: Butcherable
spawned:
- id: FoodMeat
@@ -240,6 +241,7 @@
75: Dead
- type: Stamina
critThreshold: 50
animationThreshold: 25
- type: Butcherable
spawned:
- id: FoodMeat
@@ -359,4 +361,4 @@
30: Dead
- type: MovementSpeedModifier
baseWalkSpeed: 2
baseSprintSpeed: 2.5
baseSprintSpeed: 2.5

View File

@@ -48,7 +48,6 @@
BaseUnshaded: dead_glow
- type: StatusEffects
allowed:
- Stun
- Corporeal
- Electrocution
- StaminaModifier
@@ -91,6 +90,7 @@
- type: Tag
tags:
- FootstepSound
- SlowImmune
- type: Destructible
thresholds:
- trigger:

View File

@@ -20,7 +20,6 @@
- state: active
- type: StatusEffects
allowed:
- Stun
- Corporeal
- type: Damageable
damageContainer: ManifestedSpirit
@@ -83,3 +82,7 @@
- type: Reactive
groups:
Acidic: [Touch]
- type: Tag
tags:
- SlowImmune
- KnockdownImmune

View File

@@ -15,9 +15,6 @@
bodyType: KinematicController # Same for all inheritors
- type: StatusEffects
allowed:
- Stun
- KnockedDown
- SlowedDown
- Stutter
- Electrocution
- type: Repairable

View File

@@ -19,7 +19,6 @@
baseSprintSpeed : 4
- type: StatusEffects
allowed:
- SlowedDown
- Stutter
- Electrocution
- TemporaryBlindness
@@ -32,6 +31,7 @@
- type: Tag
tags:
- DoorBumpOpener
- StunImmune
- type: entity
abstract: true
@@ -93,9 +93,6 @@
baseDecayRate: 0.04
- type: StatusEffects
allowed:
- Stun
- KnockedDown
- SlowedDown
- Stutter
- Electrocution
- TemporaryBlindness

View File

@@ -53,6 +53,7 @@
recursive: false
- type: Stamina
critThreshold: 15
animationThreshold: 5
- type: MovementAlwaysTouching
- type: DamageStateVisuals
states:

View File

@@ -100,7 +100,6 @@
types: {}
- type: StatusEffects # Overwriting basesimplemob to remove flash, getting flashed as dragon just feelsbad
allowed:
- SlowedDown
- Stutter
- Electrocution
- TemporaryBlindness
@@ -154,6 +153,7 @@
tags:
- CannotSuicide
- DoorBumpOpener
- StunImmune
- type: Puller
needsHands: false
- type: RandomMetadata

View File

@@ -119,9 +119,6 @@
- !type:WashCreamPieReaction
- type: StatusEffects
allowed:
- Stun
- KnockedDown
- SlowedDown
- Stutter
- Electrocution
- Drunk
@@ -252,9 +249,9 @@
Heat: 1.5 #per second, scales with temperature & other constants
- type: TemperatureSpeed
thresholds:
293: 0.8
280: 0.6
260: 0.4
293: 0.9
280: 0.8
260: 0.7
- type: ThermalRegulator
metabolismHeat: 800
radiatedHeat: 100

View File

@@ -68,9 +68,9 @@
Heat : 3 #per second, scales with temperature & other constants
- type: TemperatureSpeed
thresholds:
289: 0.8
275: 0.6
250: 0.4
289: 0.9
275: 0.8
250: 0.7
- type: Sprite # sprite again because we want different layer ordering
noRot: true
drawdepth: Mobs

View File

@@ -65,9 +65,9 @@
Heat : 1.5 #per second, scales with temperature & other constants
- type: TemperatureSpeed
thresholds:
301: 0.8
295: 0.6
285: 0.4
301: 0.9
295: 0.8
285: 0.7
- type: Wagging
- type: Inventory
speciesId: reptilian

View File

@@ -85,11 +85,11 @@
- map: [ "outerClothing" ]
- map: [ "back" ]
- map: [ "neck" ]
- map: [ "suitstorage" ] # This is not in the default order
- map: [ "enum.HumanoidVisualLayers.FacialHair" ]
- map: [ "enum.HumanoidVisualLayers.Hair" ]
- map: [ "enum.HumanoidVisualLayers.HeadSide" ]
- map: [ "enum.HumanoidVisualLayers.HeadTop" ]
- map: [ "suitstorage" ] # This is not in the default order
- map: [ "enum.HumanoidVisualLayers.Tail" ]
- map: [ "mask" ]
- map: [ "head" ]
@@ -137,6 +137,11 @@
32:
sprite: Mobs/Species/Vox/displacement.rsi
state: head
neck:
sizeMaps:
32:
sprite: Mobs/Species/Vox/displacement.rsi
state: neck
back:
sizeMaps:
32:

View File

@@ -81,6 +81,26 @@
- type: TrashOnSolutionEmpty
solution: drink
- type: entity
parent: BluespaceBeaker
id: BottomlessLube
name: bottomless lube beaker
suffix: DEBUG
description: This anomalous beaker infinitely produces space lube and as such is to be closely guarded such that it doesn't fall in the wrong hands.
components:
- type: SolutionContainerManager
solutions:
beaker:
maxVol: 1000
reagents:
- ReagentId: SpaceLube
Quantity: 1000
- type: SolutionRegeneration
solution: beaker
generated:
reagents:
- ReagentId: SpaceLube
Quantity: 200
# Mopwata
- type: weightedRandomFillSolution

View File

@@ -1190,3 +1190,58 @@
Burger: SuppermatterBurger
- type: Item
heldPrefix: suppermatter-shard
- type: entity
name: cotton cake
parent: FoodCakeBase
id: FoodCakeCotton
description: A cake with a fiber frosting and a wad of cotton on top.
components:
- type: Sprite
state: cotton
- type: SliceableFood
slice: FoodCakeCottonSlice
- type: Tag
tags:
- Cake
- ClothMade
- type: SolutionContainerManager
solutions:
food:
maxVol: 55
reagents:
- ReagentId: Nutriment
Quantity: 30
- ReagentId: Vitamin
Quantity: 5
- ReagentId: Fiber
Quantity: 10
- type: Item
heldPrefix: cotton
- type: entity
name: slice of cotton cake
parent: FoodCakeSliceBase
id: FoodCakeCottonSlice
description: A slice of cotton cake. You can just lick the frosting, it's fine.
components:
- type: Sprite
state: cotton-slice
- type: Tag
tags:
- Cake
- ClothMade
- Slice
- type: SolutionContainerManager
solutions:
food:
maxVol: 15
reagents:
- ReagentId: Nutriment
Quantity: 8
- ReagentId: Vitamin
Quantity: 1
- ReagentId: Fiber
Quantity: 2
- type: Item
heldPrefix: cotton-slice

View File

@@ -228,8 +228,8 @@
reagents:
- ReagentId: Nutriment
Quantity: 5
- ReagentId: Omnizine
Quantity: 2
- ReagentId: Honk
Quantity: 0.50
- type: Sprite
state: banana
@@ -249,6 +249,8 @@
reagents:
- ReagentId: Nutriment
Quantity: 10
- ReagentId: Honk
Quantity: 1
- ReagentId: Omnizine
Quantity: 2

View File

@@ -2694,6 +2694,7 @@
- type: Item
sprite: Objects/Specific/Hydroponics/cherry.rsi
heldPrefix: pit
size: Tiny
- type: Tag
tags:
- Recyclable

View File

@@ -68,7 +68,7 @@
tags:
- HolofanProjector
- type: StaticPrice
price: 80
price: 50
- type: GuideHelp
guides:
- AtmosTools

View File

@@ -17,7 +17,7 @@
Quantity: 5
- type: Slippery
slipData:
paralyzeTime: 3
knockdownTime: 3
launchForwardsMultiplier: 3
- type: StepTrigger
intersectRatio: 0.2

View File

@@ -6,26 +6,24 @@
id: BasePlushie
components:
- type: EmitSoundOnUse
sound:
sound: &BasePlushieSound
collection: ToySqueak
params:
volume: -4
- type: EmitSoundOnActivate
sound:
collection: ToySqueak
sound: *BasePlushieSound
- type: EmitSoundOnCollide
sound:
collection: ToySqueak
sound: *BasePlushieSound
- type: EmitSoundOnLand
sound:
collection: ToyFall
sound: *BasePlushieSound
- type: EmitSoundOnTrigger
sound:
collection: ToySqueak
sound: *BasePlushieSound
- type: UseDelay
delay: 1.0
delay: 3.0
- type: MeleeWeapon
attackRate: 0.333
wideAnimationRotation: 180
soundHit:
collection: ToySqueak
soundHit: *BasePlushieSound
damage:
types:
Blunt: 0
@@ -37,8 +35,7 @@
price: 5
- type: Food
requiresSpecialDigestion: true
useSound:
collection: ToySqueak
useSound: *BasePlushieSound
delay: 2
- type: SolutionContainerManager
solutions:
@@ -356,28 +353,24 @@
- type: Item
sprite: Objects/Fun/Plushies/lizard.rsi
- type: EmitSoundOnUse
sound:
sound: &PlushieLizardSound
path: /Audio/Items/Toys/weh.ogg
params:
volume: -5
- type: EmitSoundOnLand
sound:
path: /Audio/Items/Toys/weh.ogg
sound: *PlushieLizardSound
- type: EmitSoundOnActivate
sound:
path: /Audio/Items/Toys/weh.ogg
sound: *PlushieLizardSound
- type: EmitSoundOnTrigger
sound:
path: /Audio/Items/Toys/weh.ogg
sound: *PlushieLizardSound
- type: EmitSoundOnCollide
sound:
path: /Audio/Items/Toys/weh.ogg
sound: *PlushieLizardSound
- type: Food
requiresSpecialDigestion: true
useSound:
path: /Audio/Items/Toys/weh.ogg
useSound: *PlushieLizardSound
- type: MeleeWeapon
wideAnimationRotation: 180
soundHit:
path: /Audio/Items/Toys/weh.ogg
soundHit: *PlushieLizardSound
- type: Extractable
juiceSolution:
reagents:
@@ -427,28 +420,24 @@
- state: inhand-right
shader: shaded
- type: EmitSoundOnUse
sound:
sound: &PlushieExperimentSound
path: /Audio/Items/Toys/arf.ogg
params:
volume: -5
- type: EmitSoundOnLand
sound:
path: /Audio/Items/Toys/arf.ogg
sound: *PlushieExperimentSound
- type: EmitSoundOnActivate
sound:
path: /Audio/Items/Toys/arf.ogg
sound: *PlushieExperimentSound
- type: EmitSoundOnTrigger
sound:
path: /Audio/Items/Toys/arf.ogg
sound: *PlushieExperimentSound
- type: EmitSoundOnCollide
sound:
path: /Audio/Items/Toys/arf.ogg
sound: *PlushieExperimentSound
- type: Food
requiresSpecialDigestion: true
useSound:
path: /Audio/Items/Toys/arf.ogg
useSound: *PlushieExperimentSound
- type: MeleeWeapon
wideAnimationRotation: 180
soundHit:
path: /Audio/Items/Toys/arf.ogg
soundHit: *PlushieExperimentSound
- type: Clothing
clothingVisuals:
head:
@@ -515,28 +504,24 @@
sprite: Objects/Fun/Plushies/lizard.rsi
heldPrefix: spacelizard
- type: EmitSoundOnUse
sound:
sound: &PlushieSpaceLizardSound
path: /Audio/Items/Toys/muffled_weh.ogg
params:
volume: -5
- type: EmitSoundOnLand
sound:
path: /Audio/Items/Toys/muffled_weh.ogg
sound: *PlushieSpaceLizardSound
- type: EmitSoundOnActivate
sound:
path: /Audio/Items/Toys/muffled_weh.ogg
sound: *PlushieSpaceLizardSound
- type: EmitSoundOnTrigger
sound:
path: /Audio/Items/Toys/muffled_weh.ogg
sound: *PlushieSpaceLizardSound
- type: EmitSoundOnCollide
sound:
path: /Audio/Items/Toys/muffled_weh.ogg
sound: *PlushieSpaceLizardSound
- type: Food
requiresSpecialDigestion: true
useSound:
path: /Audio/Items/Toys/muffled_weh.ogg
useSound: *PlushieSpaceLizardSound
- type: MeleeWeapon
wideAnimationRotation: 180
soundHit:
path: /Audio/Items/Toys/muffled_weh.ogg
soundHit: *PlushieSpaceLizardSound
- type: Clothing
sprite: Objects/Fun/Plushies/lizard.rsi
slots:
@@ -561,25 +546,22 @@
- type: Item
heldPrefix: plushielizardinversed
- type: EmitSoundOnUse
sound:
sound: &PlushieLizardInversedSound
path: /Audio/Items/Toys/hew.ogg
params:
volume: -5
- type: EmitSoundOnLand
sound:
path: /Audio/Items/Toys/hew.ogg
sound: *PlushieLizardInversedSound
- type: EmitSoundOnActivate
sound:
path: /Audio/Items/Toys/hew.ogg
sound: *PlushieLizardInversedSound
- type: EmitSoundOnTrigger
sound:
path: /Audio/Items/Toys/hew.ogg
sound: *PlushieLizardInversedSound
- type: Food
requiresSpecialDigestion: true
useSound:
path: /Audio/Items/Toys/hew.ogg
useSound: *PlushieLizardInversedSound
- type: MeleeWeapon
wideAnimationRotation: 180
soundHit:
path: /Audio/Items/Toys/hew.ogg
soundHit: *PlushieLizardInversedSound
- type: Extractable
juiceSolution:
reagents:
@@ -619,28 +601,24 @@
map: [ "enum.SolutionContainerLayers.Fill" ]
visible: false
- type: EmitSoundOnUse
sound:
sound: &PlushieDionaSound
path: /Audio/Items/Toys/toy_rustle.ogg
params:
volume: -5
- type: EmitSoundOnLand
sound:
path: /Audio/Items/Toys/toy_rustle.ogg
sound: *PlushieDionaSound
- type: EmitSoundOnActivate
sound:
path: /Audio/Items/Toys/toy_rustle.ogg
sound: *PlushieDionaSound
- type: EmitSoundOnTrigger
sound:
path: /Audio/Items/Toys/toy_rustle.ogg
sound: *PlushieDionaSound
- type: EmitSoundOnCollide
sound:
path: /Audio/Items/Toys/toy_rustle.ogg
sound: *PlushieDionaSound
- type: MeleeWeapon
wideAnimationRotation: 180
soundHit:
path: /Audio/Items/Toys/toy_rustle.ogg
soundHit: *PlushieDionaSound
- type: Food
requiresSpecialDigestion: true
useSound:
path: /Audio/Items/Toys/toy_rustle.ogg
useSound: *PlushieDionaSound
- type: SolutionContainerManager
solutions:
plushie:
@@ -876,9 +854,20 @@
components:
- type: Sprite
state: magicplush
- type: Item
inhandVisuals:
left:
- state: magicarpplush-inhand-left
right:
- state: magicarpplush-inhand-right
- type: FoodSequenceElement
entries:
CottonBurger: MagicarpPlushie
- type: Tag
tags:
- Payload
- ClothMade
- PlushieCarpMagi
- type: entity
parent: PlushieCarp
@@ -910,9 +899,20 @@
components:
- type: Sprite
state: holoplush
- type: Item
inhandVisuals:
left:
- state: holocarpplush-inhand-left
right:
- state: holocarpplush-inhand-right
- type: FoodSequenceElement
entries:
CottonBurger: HolocarpPlushie
- type: Tag
tags:
- Payload
- ClothMade
- PlushieCarpHolo
- type: entity
parent: BasePlushie
@@ -1044,28 +1044,24 @@
sprite: Objects/Fun/Plushies/vox.rsi
state: icon
- type: EmitSoundOnUse
sound:
sound: &PlushieVoxSound
path: /Audio/Voice/Vox/shriek1.ogg
params:
volume: -5
- type: EmitSoundOnLand
sound:
path: /Audio/Voice/Vox/shriek1.ogg
sound: *PlushieVoxSound
- type: EmitSoundOnActivate
sound:
path: /Audio/Voice/Vox/shriek1.ogg
sound: *PlushieVoxSound
- type: EmitSoundOnTrigger
sound:
path: /Audio/Voice/Vox/shriek1.ogg
sound: *PlushieVoxSound
- type: EmitSoundOnCollide
sound:
path: /Audio/Voice/Vox/shriek1.ogg
sound: *PlushieVoxSound
- type: Food
requiresSpecialDigestion: true
useSound:
path: /Audio/Voice/Vox/shriek1.ogg
useSound: *PlushieVoxSound
- type: MeleeWeapon
wideAnimationRotation: 180
soundHit:
path: /Audio/Voice/Vox/shriek1.ogg
soundHit: *PlushieVoxSound
- type: Clothing
quickEquip: false
sprite: Objects/Fun/Plushies/vox.rsi
@@ -1113,28 +1109,24 @@
- type: Item
size: Normal
- type: EmitSoundOnUse
sound:
sound: &PlushieXenoSound
path: /Audio/Weapons/Xeno/alien_spitacid.ogg
params:
volume: -8
- type: EmitSoundOnLand
sound:
path: /Audio/Weapons/Xeno/alien_spitacid.ogg
sound: *PlushieXenoSound
- type: EmitSoundOnActivate
sound:
path: /Audio/Weapons/Xeno/alien_spitacid.ogg
sound: *PlushieXenoSound
- type: EmitSoundOnTrigger
sound:
path: /Audio/Weapons/Xeno/alien_spitacid.ogg
sound: *PlushieXenoSound
- type: EmitSoundOnCollide
sound:
path: /Audio/Weapons/Xeno/alien_spitacid.ogg
sound: *PlushieXenoSound
- type: Food
requiresSpecialDigestion: true
useSound:
path: /Audio/Items/Toys/mousesqueek.ogg
useSound: *PlushieXenoSound
- type: MeleeWeapon
wideAnimationRotation: 180
soundHit:
path: /Audio/Weapons/Xeno/alien_spitacid.ogg
soundHit: *PlushieXenoSound
- type: Clothing
quickEquip: false
sprite: Objects/Fun/Plushies/xeno.rsi
@@ -1176,27 +1168,41 @@
sprite: Objects/Fun/Plushies/human.rsi
state: icon
- type: EmitSoundOnUse
sound:
sound: &PlushieHuman
path: /Audio/Voice/Human/malescream_1.ogg
params:
volume: -8
- type: EmitSoundOnLand
sound:
path: /Audio/Voice/Human/malescream_2.ogg
params:
volume: -8
- type: EmitSoundOnActivate
sound:
path: /Audio/Voice/Human/malescream_3.ogg
params:
volume: -8
- type: EmitSoundOnCollide
sound:
path: /Audio/Voice/Human/malescream_4.ogg
params:
volume: -8
- type: Food
requiresSpecialDigestion: true
useSound:
path: /Audio/Voice/Human/malescream_1.ogg
params:
volume: -8
- type: MeleeWeapon
soundHit:
path: /Audio/Voice/Human/malescream_4.ogg
params:
volume: -8
- type: EmitSoundOnTrigger
sound:
path: /Audio/Voice/Human/malescream_5.ogg
params:
volume: -8
- type: Clothing
quickEquip: false
sprite: Objects/Fun/Plushies/human.rsi

View File

@@ -872,8 +872,10 @@
- type: UseDelay
delay: 0.8
- type: Slippery
staminaDamage: 0
slipData:
paralyzeTime: 0
stunTime: 0
knockdownTime: 0
launchForwardsMultiplier: 0
slipSound:
collection: Parp

View File

@@ -1620,6 +1620,90 @@
graph: TileWoodLarge
node: woodtilelarge
# Marble
- type: entity
name: white marble tile
description: A chiseled, polished square of the finest Space Marble. Best not to lose it.
parent: FloorTileItemBase
id: FloorTileItemWhiteMarble
components:
- type: Sprite
state: white-marble
- type: Item
heldPrefix: white-marble
- type: FloorTile
outputs:
- Plating
- FloorWhiteMarble
- type: Stack
stackType: FloorTileWhiteMarble
- type: entity
name: dark marble tile
description: A chiseled, polished square of the finest Space Marble. Best not to lose it.
parent: FloorTileItemWhiteMarble
id: FloorTileItemDarkMarble
components:
- type: Sprite
state: dark-marble
- type: Item
heldPrefix: dark-marble
- type: FloorTile
outputs:
- Plating
- FloorDarkMarble
- type: Stack
stackType: FloorTileDarkMarble
- type: entity
name: plasmarble tile
description: A chiseled, polished square of the finest Space Marble. Plasma-infused for extra... something.
parent: FloorTileItemWhiteMarble
id: FloorTileItemPlasmaMarble
components:
- type: Sprite
state: plasmarble
- type: Item
heldPrefix: plasmarble
- type: FloorTile
outputs:
- Plating
- FloorPlasmaMarble
- type: Stack
stackType: FloorTilePlasmaMarble
- type: DamageOtherOnHit
damage:
types:
Blunt: 6
- type: entity
name: uranium marble tile
description: A chiseled, polished square of the finest Space Marble. Uranium-infused to make it extra rad! Pun intended!
parent: FloorTileItemWhiteMarble
id: FloorTileItemUraniumMarble
components:
- type: Sprite
state: uranium-marble
- type: Item
heldPrefix: uranium-marble
- type: FloorTile
outputs:
- Plating
- FloorUraniumMarble
- type: Stack
stackType: FloorTileUraniumMarble
- type: DamageOtherOnHit
damage:
types:
Blunt: 5
Radiation: 1
- type: PointLight
radius: 1.2
energy: 0.8
castShadows: false
color: "#9be792"
- type: entity
id: FloorTileItemXeno
parent: FloorTileItemBase

View File

@@ -547,4 +547,4 @@
min: 2
max: 2
- type: StaticPrice
price: 250
price: 150

View File

@@ -271,6 +271,9 @@
parent: Plunger
description: A plunger with a plastic suction cup coated in a thin layer of gold given as a token of appreciation for years of service. Still used to unclog drains.
components:
- type: Tag
tags:
- GoldenPlunger
- type: Sprite
sprite: Objects/Specific/Janitorial/golden_plunger.rsi
state: plunger

View File

@@ -127,8 +127,9 @@
- type: SolutionContainerVisuals
fillBaseName: syndie-
- type: Slippery
staminaDamage: 50
slipData:
paralyzeTime: 3
knockdownTime: 3
launchForwardsMultiplier: 3
- type: Item
heldPrefix: syndie
@@ -155,9 +156,6 @@
layers:
- state: syndie-soaplet
- type: Slippery
slipData:
paralyzeTime: 1.5 # these things are tiny
launchForwardsMultiplier: 1.5
- type: StepTrigger
intersectRatio: 0.04
- type: Item
@@ -222,8 +220,9 @@
- type: SolutionContainerVisuals
fillBaseName: omega-
- type: Slippery
staminaDamage: 50
slipData:
paralyzeTime: 5.0
knockdownTime: 5.0
launchForwardsMultiplier: 3.0
- type: Item
heldPrefix: omega

View File

@@ -48,6 +48,8 @@
- Security
- Service
- Theatre
- GenpopEnter
- GenpopLeave
privilegedIdSlot:
name: id-card-console-privileged-id
ejectSound: /Audio/Machines/id_swipe.ogg

View File

@@ -54,3 +54,20 @@
count: 10
- type: TimedDespawn
lifetime: 0.25
- type: entity
id: PelletClusterLessLethal
name: pellet (ball, less lethal)
categories: [ HideSpawnMenu ]
parent: BaseBullet
components:
- type: Sprite
sprite: Objects/Weapons/Guns/Projectiles/projectiles2.rsi
state: buckshot
- type: Projectile
deleteOnCollide: false
damage:
types:
Piercing: 5
- type: TimedDespawn
lifetime: 0.25

View File

@@ -547,7 +547,7 @@
name: taser
parent: [BaseWeaponBatterySmall, BaseSecurityContraband]
id: WeaponTaser
description: A low-capacity, energy-based stun gun used by security teams to subdue targets at range.
description: A low-capacity, energy-based stun gun used by security teams to subdue targets at close range.
components:
- type: Tag
tags:
@@ -579,6 +579,23 @@
zeroVisible: true
- type: Appearance
- type: entity
name: elite taser
parent: [ BaseCentcommContraband, WeaponTaser ]
id: WeaponTaserSuper
suffix: ADMEME
description: A low-capacity, energy-based stun gun used by elite security teams to disable even the toughest of targets.
components:
- type: Gun
fireRate: 0.5
soundGunshot:
path: /Audio/Effects/tesla_collapse.ogg # The wrath of god...
params:
volume: -6
- type: ProjectileBatteryAmmoProvider
proto: BulletTaserSuper
fireCost: 200
- type: entity
name: antique laser pistol
parent: [BaseWeaponBatterySmall, BaseGrandTheftContraband]

View File

@@ -216,13 +216,46 @@
- type: Projectile
damage:
types:
Heat: 5
Shock: 1
soundHit:
path: "/Audio/Weapons/Guns/Hits/taser_hit.ogg"
forceSound: true
- type: TimedDespawn
lifetime: 0.170 # Very short range
- type: StunOnCollide
stunAmount: 0
knockdownAmount: 2.5 # Enough to subdue and follow up with a stun batong
slowdownAmount: 2.5
walkSpeedModifier: 0.5
sprintSpeedModifier: 0.5
- type: entity
parent: BulletTaser
id: BulletTaserSuper
categories: [ HideSpawnMenu ]
name: taser bolt
description: If you can see this, you've probably been stun-meta'd
components:
- type: Sprite
noRot: true
sprite: Structures/Power/Generation/Tesla/energy_miniball.rsi
color: "#ffff33"
layers:
- state: tesla_projectile
shader: unshaded
- type: PointLight
enabled: true
color: "#ffff33"
radius: 2.0
energy: 7.01
- type: TimedDespawn
lifetime: 1.0 # Not so short range
- type: StunOnCollide
stunAmount: 5
knockdownAmount: 5
knockdownAmount: 10
slowdownAmount: 10
walkSpeedModifier: 0.5
sprintSpeedModifier: 0.5
- type: entity
name : disabler bolt
@@ -830,6 +863,7 @@
totalIntensity: 150 # a ~2 tile radius
intensitySlope: 5
maxIntensity: 10
canCreateVacuum: false
- type: entity
id: BulletGrenadeFlash
@@ -849,7 +883,6 @@
timeRemaining: 0.3
- type: DeleteOnTrigger
# This is supposed to spawn shrapnel and stuff so uhh... TODO?
- type: entity
id: BulletGrenadeFrag
name: frag grenade
@@ -863,9 +896,16 @@
- type: ExplodeOnTrigger
- type: Explosive
explosionType: Default
totalIntensity: 175 # about a ~6 tile radius
totalIntensity: 50
intensitySlope: 1
maxIntensity: 10
maxIntensity: 5
canCreateVacuum: false
- type: ContainerContainer
containers:
cluster-payload: !type:Container
- type: ProjectileGrenade
fillPrototype: PelletClusterLessLethal
capacity: 30
- type: entity
parent: BaseBulletTrigger

View File

@@ -117,6 +117,8 @@
- type: GunRequiresWield #remove when inaccuracy on spreads is fixed
- type: Gun
fireRate: 3
- type: GunSpreadModifier
spread: 0.6
- type: BallisticAmmoProvider
capacity: 2
- type: Construction
@@ -196,6 +198,8 @@
sprite: Objects/Weapons/Guns/Shotguns/sawn_inhands_64x.rsi
- type: Gun
fireRate: 3
- type: GunSpreadModifier
spread: 1.4
- type: BallisticAmmoProvider
capacity: 2
- type: Construction

View File

@@ -19,25 +19,53 @@
components:
- MobState
# The creature sleeps so heavily that nothing can wake him up. Not even its own death.
# Things that should be removed by rejuvenation should parent to this
# Also blocks the status effect being added to godmode-ed entities.
- type: entity
parent: MobStatusEffectBase
id: MobStatusEffectDebuff
abstract: true
components:
- type: RejuvenateRemovedStatusEffect
- type: entity
parent: MobStatusEffectDebuff
id: MobStandStatusEffectBase
abstract: true
components:
- type: StatusEffect
whitelist:
components:
- MobState
- StandingState
requireAll: true
blacklist: # This blacklist exists because mob prototypes are smelly and everything needs a standing state component.
tags:
- KnockdownImmune
# The creature sleeps so heavily that nothing can wake him up. Not even its own death.
- type: entity
parent: MobStatusEffectDebuff
id: StatusEffectForcedSleeping
name: forced sleep
components:
- type: ForcedSleepingStatusEffect
- type: StunnedStatusEffect
- type: KnockdownStatusEffect
# This creature is asleep because it's disconnected from the game.
- type: entity
parent: MobStatusEffectBase
parent: MobStatusEffectBase # Not even rejuvenate can cure SSD...
id: StatusEffectSSDSleeping
name: forced sleep
components:
- type: ForcedSleepingStatusEffect
- type: StunnedStatusEffect
- type: KnockdownStatusEffect
# Blurs your vision and makes you randomly fall asleep
- type: entity
parent: MobStatusEffectBase
parent: MobStatusEffectDebuff
id: StatusEffectDrowsiness
name: drowsiness
components:
@@ -45,8 +73,8 @@
# Adds drugs overlay
- type: entity
parent: MobStatusEffectBase
parent: MobStatusEffectDebuff
id: StatusEffectSeeingRainbow
name: hallucinations
components:
- type: SeeingRainbowsStatusEffect
- type: SeeingRainbowsStatusEffect

View File

@@ -0,0 +1,67 @@
- type: entity
parent: MobStatusEffectDebuff
id: StatusEffectSlowdown
abstract: true
name: slowdown
components:
- type: StatusEffect
whitelist:
components:
- MobState
blacklist:
tags:
- SlowImmune
- type: MovementModStatusEffect
- type: entity
parent: StatusEffectSlowdown
id: VomitingSlowdownStatusEffect
name: vomiting slowdown
- type: entity
parent: StatusEffectSlowdown
id: TaserSlowdownStatusEffect
name: shot by taser slowdown
- type: entity
parent: StatusEffectSlowdown
id: FlashSlowdownStatusEffect
name: affected by flash slowdown
- type: entity
parent: StatusEffectSlowdown
id: StatusEffectStaminaLow
name: stamina low
# Makes you more slippery, or perhaps less slippery.
- type: entity
parent: MobStatusEffectDebuff # Debatable if this should be MobStatusEffectBase or not
id: StatusEffectFriction
name: friction
components:
- type: FrictionStatusEffect
# Stunnable Status Effect
- type: entity
parent: MobStatusEffectDebuff
id: StatusEffectStunned
name: stunned
components:
- type: StatusEffect
whitelist:
components:
- MobState
blacklist:
tags:
- StunImmune
- type: StatusEffectAlert
alert: Stun
- type: StunnedStatusEffect
- type: entity
parent: MobStandStatusEffectBase
id: StatusEffectKnockdown
name: knocked down
components:
- type: KnockdownStatusEffect

View File

@@ -1,7 +1,7 @@
- type: entity
id: BoozeDispenser
id: BoozeDispenserEmpty
name: booze dispenser
suffix: Filled
suffix: Empty
description: A booze dispenser with a single slot for a container to be filled.
parent: ReagentDispenserBase
components:
@@ -15,6 +15,22 @@
whitelist:
tags:
- DrinkBottle
- type: Transform
noRot: false
- type: Machine
board: BoozeDispenserMachineCircuitboard
- type: GuideHelp
guides:
- Bartender
- Drinks
- type: StealTarget
stealGroup: BoozeDispenser
- type: entity
id: BoozeDispenser
suffix: Filled
parent: BoozeDispenserEmpty
components:
- type: StorageFill
contents:
- id: DrinkAleBottleFullGrowler
@@ -29,23 +45,3 @@
- id: DrinkVodkaBottleFull
- id: DrinkWhiskeyBottleFull
- id: DrinkWineBottleFull
- type: Transform
noRot: false
- type: Machine
board: BoozeDispenserMachineCircuitboard
- type: GuideHelp
guides:
- Bartender
- Drinks
- type: StealTarget
stealGroup: BoozeDispenser
- type: entity
id: BoozeDispenserEmpty
suffix: Empty
parent: BoozeDispenser
components:
- type: Storage
whitelist:
tags:
- DrinkBottle

View File

@@ -1,9 +1,9 @@
- type: entity
parent: ReagentDispenserBase
id: SodaDispenser
id: SodaDispenserEmpty
name: soda dispenser
description: A beverage dispenser with a selection of soda and several other common beverages. Has a single fill slot for containers.
suffix: Filled
suffix: Empty
components:
- type: Rotatable
- type: Sprite
@@ -15,6 +15,20 @@
whitelist:
tags:
- DrinkBottle
- type: Transform
noRot: false
- type: Machine
board: SodaDispenserMachineCircuitboard
- type: GuideHelp
guides:
- Bartender
- Drinks
- type: entity
parent: SodaDispenserEmpty
id: SodaDispenser
suffix: Filled
components:
- type: StorageFill
contents:
- id: DrinkCoconutWaterJug
@@ -36,16 +50,3 @@
- id: DrinkTeaJug
- id: DrinkTonicWaterBottleFull
- id: DrinkWaterMelonJuiceJug
- type: Transform
noRot: false
- type: Machine
board: SodaDispenserMachineCircuitboard
- type: GuideHelp
guides:
- Bartender
- Drinks
- type: entity
parent: SodaDispenser
id: SodaDispenserEmpty
suffix: Empty

View File

@@ -0,0 +1,31 @@
- type: entity
parent: ComputerSurveillanceWirelessCameraMonitor
id: ComputerTelevision
name: wooden television
description: Finally, some decent reception around here...
components:
- type: Sprite
noRot: true
drawdepth: SmallObjects
layers:
- map: ["computerLayerBody"]
state: television
- map: ["computerLayerScreen"]
state: detective_television
- type: Computer
board: ComputerTelevisionCircuitboard
- type: PointLight
radius: 1.5
energy: 1.6
color: "#b89f25"
- type: Fixtures
fixtures:
fix1:
shape:
!type:PhysShapeAabb
bounds: "-0.25,-0.25,0.25,0.25"
density: 200
mask:
- TabletopMachineMask
layer:
- TabletopMachineLayer

View File

@@ -21,27 +21,37 @@
- state: smartfridge_door
map: ["enum.StorageVisualLayers.Door"]
shader: unshaded
- type: EntityStorageVisuals
stateBaseClosed: smartfridge
stateDoorOpen: smartfridge_open
stateDoorClosed: smartfridge_door
- type: PointLight
radius: 1.5
energy: 1.6
color: "#9dc5c9"
- type: EntityStorage
isCollidableWhenOpen: true
closeSound:
path: /Audio/Machines/windoor_open.ogg
params:
volume: -3
openSound:
path: /Audio/Machines/windoor_open.ogg
params:
volume: -3
- type: ContainerContainer
containers:
entity_storage: !type:Container
smart_fridge_inventory: !type:Container
- type: LitOnPowered
- type: ApcPowerReceiver
powerLoad: 200
- type: ExtensionCableReceiver
- type: SmartFridge
whitelist:
components:
- FitsInDispenser
- Pill
- Produce
- Seed
tags:
- PillCanister
- Bottle
- Syringe
- ChemDispensable
- type: ActivatableUI
key: enum.SmartFridgeUiKey.Key
- type: ActivatableUIRequiresPower
- type: UserInterface
interfaces:
enum.SmartFridgeUiKey.Key:
type: SmartFridgeBoundUserInterface
- type: AccessReader
- type: UseDelay
delay: 1
- type: AntiRottingContainer
@@ -105,3 +115,15 @@
Blunt: 5
soundHit:
collection: MetalThud
- type: ExplosionResistance
damageCoefficient: 0.1
- type: entity
parent: SmartFridge
id: SmartFridgeMedical
suffix: Medical
components:
- type: SmartFridge
flavorText: smart-fridge-request-chemistry
- type: AccessReader
access: [["Medical"]]

View File

@@ -1,3 +1,5 @@
# base
- type: entity
id: VendingMachine
parent: BaseMachinePowered
@@ -105,6 +107,72 @@
- type: Appearance
- type: WiresVisuals
- type: entity
id: VendingMachineWallmount
parent: BaseWallmountMachine
name: vending machine
abstract: true
components:
- type: StationAiWhitelist
- type: AmbientOnPowered
- type: AmbientSound
volume: -9
range: 3
enabled: false
sound:
path: /Audio/Ambience/Objects/vending_machine_hum.ogg
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 100
behaviors:
- !type:DoActsBehavior
acts: ["Breakage"]
- !type:EjectVendorItems
- trigger:
!type:DamageTrigger
damage: 200
behaviors:
- !type:SpawnEntitiesBehavior
spawn:
SheetSteel1:
min: 1
max: 1
- !type:DoActsBehavior
acts: [ "Destruction" ]
- !type:PlaySoundBehavior
sound:
collection: MetalGlassBreak
- type: Repairable
doAfterDelay: 8
- type: ActivatableUI
key: enum.VendingMachineUiKey.Key
- type: ActivatableUIRequiresPower
- type: UserInterface
interfaces:
enum.VendingMachineUiKey.Key:
type: VendingMachineBoundUserInterface
enum.WiresUiKey.Key:
type: WiresBoundUserInterface
- type: WiresPanel
- type: Wires
boardName: wires-board-name-vendingmachine
layoutId: Vending
- type: PointLight
enabled: false
castShadows: false
radius: 1.5
- type: LitOnPowered
- type: Appearance
- type: WiresVisuals
- type: Electrified
enabled: false
usesApcPower: true
- type: Rotatable
# Vending machines
- type: entity
parent: VendingMachine
id: VendingMachineCondiments
@@ -1436,59 +1504,6 @@
energy: 1.6
color: "#d4ab33"
# wallmounted machines
- type: entity
id: VendingMachineWallmount
parent: VendingMachine
name: vending machine
abstract: true
placement:
mode: SnapgridCenter
snap:
- Wallmount
components:
- type: Sprite
drawdepth: WallMountedItems
snapCardinals: false
- type: Rotatable
- type: WallMount
arc: 175
- type: Transform
noRot: false
- type: entity
parent: VendingMachineWallmount
id: VendingMachineWallMedical
name: NanoMed
description: "It's a wall-mounted medical equipment dispenser. Natural chemicals only!"
components:
- type: VendingMachine
pack: NanoMedInventory
offState: off
brokenState: broken
normalState: normal-unshaded
denyState: deny-unshaded
- type: Sprite
sprite: Structures/Machines/VendingMachines/wallmed.rsi
layers:
- state: "off"
map: ["enum.VendingMachineVisualLayers.Base"]
- state: "off"
map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
shader: unshaded
- texture: Structures/Machines/VendingMachines/maintenance_panel.png
map: ["enum.WiresVisualLayers.MaintenancePanel"]
- type: PointLight
radius: 1.3
energy: 1.6
color: "#43ccb5"
- type: AccessReader
access: [["Medical"]]
- type: GuideHelp
guides:
- Medical
# job clothing
- type: entity
@@ -2225,3 +2240,35 @@
- type: AccessReader
access: [["SyndicateAgent"]]
# wallmount
- type: entity
parent: VendingMachineWallmount
id: VendingMachineWallMedical
name: NanoMed
description: "It's a wall-mounted medical equipment dispenser. Natural chemicals only!"
components:
- type: VendingMachine
pack: NanoMedInventory
offState: off
brokenState: broken
normalState: normal-unshaded
denyState: deny-unshaded
- type: Sprite
sprite: Structures/Machines/VendingMachines/wallmed.rsi
layers:
- state: "off"
map: ["enum.VendingMachineVisualLayers.Base"]
- state: "off"
map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
shader: unshaded
- texture: Structures/Machines/VendingMachines/maintenance_panel.png
map: ["enum.WiresVisualLayers.MaintenancePanel"]
- type: PointLight
radius: 1.3
energy: 1.6
color: "#43ccb5"
- type: AccessReader
access: [["Medical"]]
- type: GuideHelp
guides:
- Medical

View File

@@ -131,3 +131,427 @@
sprite: Structures/Piping/Atmospherics/pipe_alt2.rsi
- type: Construction
node: fourwayAlt2
# GasPressurePump
- type: entity
parent: [GasPipeLayerAlt1, GasPressurePump]
id: GasPressurePumpAlt1
categories: [ HideSpawnMenu ]
components:
- type: Sprite
sprite: Structures/Piping/Atmospherics/pump_alt1.rsi
layers:
- sprite: Structures/Piping/Atmospherics/pipe_alt1.rsi
state: pipeStraight
map: [ "enum.PipeVisualLayers.Pipe" ]
- state: pumpPressure
map: [ "enum.SubfloorLayers.FirstLayer", "enabled" ]
- type: Construction
node: pressurepumpAlt1
- type: entity
parent: [GasPipeLayerAlt2, GasPressurePump]
id: GasPressurePumpAlt2
categories: [ HideSpawnMenu ]
components:
- type: Sprite
sprite: Structures/Piping/Atmospherics/pump_alt2.rsi
layers:
- sprite: Structures/Piping/Atmospherics/pipe_alt2.rsi
state: pipeStraight
map: [ "enum.PipeVisualLayers.Pipe" ]
- state: pumpPressure
map: [ "enum.SubfloorLayers.FirstLayer", "enabled" ]
- type: Construction
node: pressurepumpAlt2
# GasVolumePump
- type: entity
parent: [GasPipeLayerAlt1, GasVolumePump]
id: GasVolumePumpAlt1
categories: [ HideSpawnMenu ]
components:
- type: Sprite
sprite: Structures/Piping/Atmospherics/pump_alt1.rsi
layers:
- sprite: Structures/Piping/Atmospherics/pipe_alt1.rsi
state: pipeStraight
map: [ "enum.PipeVisualLayers.Pipe" ]
- state: pumpVolume
map: [ "enum.SubfloorLayers.FirstLayer", "enabled" ]
- type: Construction
node: volumepumpAlt1
- type: entity
parent: [GasPipeLayerAlt2, GasVolumePump]
id: GasVolumePumpAlt2
categories: [ HideSpawnMenu ]
components:
- type: Sprite
sprite: Structures/Piping/Atmospherics/pump_alt2.rsi
layers:
- sprite: Structures/Piping/Atmospherics/pipe_alt2.rsi
state: pipeStraight
map: [ "enum.PipeVisualLayers.Pipe" ]
- state: pumpVolume
map: [ "enum.SubfloorLayers.FirstLayer", "enabled" ]
- type: Construction
node: volumepumpAlt2
# GasPassiveGate
- type: entity
parent: [GasPipeLayerAlt1, GasPassiveGate]
id: GasPassiveGateAlt1
categories: [ HideSpawnMenu ]
components:
- type: Sprite
sprite: Structures/Piping/Atmospherics/pump_alt1.rsi
layers:
- sprite: Structures/Piping/Atmospherics/pipe_alt1.rsi
state: pipeStraight
map: [ "enum.PipeVisualLayers.Pipe" ]
- state: pumpPassiveGate
map: [ "enum.SubfloorLayers.FirstLayer" ]
- type: Construction
node: passivegateAlt1
- type: entity
parent: [GasPipeLayerAlt2, GasPassiveGate]
id: GasPassiveGateAlt2
categories: [ HideSpawnMenu ]
components:
- type: Sprite
sprite: Structures/Piping/Atmospherics/pump_alt2.rsi
layers:
- sprite: Structures/Piping/Atmospherics/pipe_alt2.rsi
state: pipeStraight
map: [ "enum.PipeVisualLayers.Pipe" ]
- state: pumpPassiveGate
map: [ "enum.SubfloorLayers.FirstLayer" ]
- type: Construction
node: passivegateAlt2
# GasValve
- type: entity
parent: [GasPipeLayerAlt1, GasValve]
id: GasValveAlt1
categories: [ HideSpawnMenu ]
components:
- type: Sprite
sprite: Structures/Piping/Atmospherics/pump_alt1.rsi
layers:
- sprite: Structures/Piping/Atmospherics/pipe_alt1.rsi
state: pipeStraight
map: [ "enum.PipeVisualLayers.Pipe" ]
- state: pumpManualValve
map: [ "enum.SubfloorLayers.FirstLayer", "enabled" ]
- type: Construction
node: valveAlt1
- type: entity
parent: [GasPipeLayerAlt2, GasValve]
id: GasValveAlt2
categories: [ HideSpawnMenu ]
components:
- type: Sprite
sprite: Structures/Piping/Atmospherics/pump_alt2.rsi
layers:
- sprite: Structures/Piping/Atmospherics/pipe_alt2.rsi
state: pipeStraight
map: [ "enum.PipeVisualLayers.Pipe" ]
- state: pumpManualValve
map: [ "enum.SubfloorLayers.FirstLayer", "enabled" ]
- type: Construction
node: valveAlt2
# SignalControlledValve
- type: entity
parent: [GasPipeLayerAlt1, SignalControlledValve]
id: SignalControlledValveAlt1
categories: [ HideSpawnMenu ]
components:
- type: Sprite
sprite: Structures/Piping/Atmospherics/pump_alt1.rsi
layers:
- sprite: Structures/Piping/Atmospherics/pipe_alt1.rsi
state: pipeStraight
map: [ "enum.PipeVisualLayers.Pipe" ]
- state: pumpSignalValve
map: [ "enum.SubfloorLayers.FirstLayer", "enabled" ]
- type: Construction
node: signalvalveAlt1
- type: entity
parent: [GasPipeLayerAlt2, SignalControlledValve]
id: SignalControlledValveAlt2
categories: [ HideSpawnMenu ]
components:
- type: Sprite
sprite: Structures/Piping/Atmospherics/pump_alt2.rsi
layers:
- sprite: Structures/Piping/Atmospherics/pipe_alt2.rsi
state: pipeStraight
map: [ "enum.PipeVisualLayers.Pipe" ]
- state: pumpSignalValve
map: [ "enum.SubfloorLayers.FirstLayer", "enabled" ]
- type: Construction
node: signalvalveAlt2
# GasPipeSensor
- type: entity
parent: [GasPipeLayerAlt1, GasPipeSensor]
id: GasPipeSensorAlt1
categories: [ HideSpawnMenu ]
components:
- type: Sprite
sprite: Structures/Piping/Atmospherics/gas_pipe_sensor_alt1.rsi
layers:
- sprite: Structures/Piping/Atmospherics/pipe_alt1.rsi
map: [ "enum.PipeVisualLayers.Pipe" ]
state: pipeStraight
- map: ["base"]
state: base
- map: [ "enum.PowerDeviceVisualLayers.Powered" ]
state: lights
shader: unshaded
- type: Construction
node: sensorAlt1
- type: entity
parent: [GasPipeLayerAlt2, GasPipeSensor]
id: GasPipeSensorAlt2
categories: [ HideSpawnMenu ]
components:
- type: Sprite
sprite: Structures/Piping/Atmospherics/gas_pipe_sensor_alt2.rsi
layers:
- sprite: Structures/Piping/Atmospherics/pipe_alt2.rsi
map: [ "enum.PipeVisualLayers.Pipe" ]
state: pipeStraight
- map: ["base"]
state: base
- map: [ "enum.PowerDeviceVisualLayers.Powered" ]
state: lights
shader: unshaded
- type: Construction
node: sensorAlt2
# GasPipeSensorDistribution
- type: entity
parent: [GasPipeLayerAlt1, GasPipeSensorDistribution]
id: GasPipeSensorDistributionAlt1
categories: [ HideSpawnMenu ]
components:
- type: Sprite
sprite: Structures/Piping/Atmospherics/gas_pipe_sensor_alt1.rsi
layers:
- sprite: Structures/Piping/Atmospherics/pipe_alt1.rsi
map: [ "enum.PipeVisualLayers.Pipe" ]
state: pipeStraight
- map: ["base"]
state: base
- map: [ "enum.PowerDeviceVisualLayers.Powered" ]
state: lights
shader: unshaded
- type: entity
parent: [GasPipeLayerAlt2, GasPipeSensorDistribution]
id: GasPipeSensorDistributionAlt2
categories: [ HideSpawnMenu ]
components:
- type: Sprite
sprite: Structures/Piping/Atmospherics/gas_pipe_sensor_alt2.rsi
layers:
- sprite: Structures/Piping/Atmospherics/pipe_alt2.rsi
map: [ "enum.PipeVisualLayers.Pipe" ]
state: pipeStraight
- map: ["base"]
state: base
- map: [ "enum.PowerDeviceVisualLayers.Powered" ]
state: lights
shader: unshaded
# GasPipeSensorWaste
- type: entity
parent: [GasPipeLayerAlt1, GasPipeSensorWaste]
id: GasPipeSensorWasteAlt1
categories: [ HideSpawnMenu ]
components:
- type: Sprite
sprite: Structures/Piping/Atmospherics/gas_pipe_sensor_alt1.rsi
layers:
- sprite: Structures/Piping/Atmospherics/pipe_alt1.rsi
map: [ "enum.PipeVisualLayers.Pipe" ]
state: pipeStraight
- map: ["base"]
state: base
- map: [ "enum.PowerDeviceVisualLayers.Powered" ]
state: lights
shader: unshaded
- type: entity
parent: [GasPipeLayerAlt2, GasPipeSensorWaste]
id: GasPipeSensorWasteAlt2
categories: [ HideSpawnMenu ]
components:
- type: Sprite
sprite: Structures/Piping/Atmospherics/gas_pipe_sensor_alt2.rsi
layers:
- sprite: Structures/Piping/Atmospherics/pipe_alt2.rsi
map: [ "enum.PipeVisualLayers.Pipe" ]
state: pipeStraight
- map: ["base"]
state: base
- map: [ "enum.PowerDeviceVisualLayers.Powered" ]
state: lights
shader: unshaded
# GasPipeSensorMixedAir
- type: entity
parent: [GasPipeLayerAlt1, GasPipeSensorMixedAir]
id: GasPipeSensorMixedAirAlt1
categories: [ HideSpawnMenu ]
components:
- type: Sprite
sprite: Structures/Piping/Atmospherics/gas_pipe_sensor_alt1.rsi
layers:
- sprite: Structures/Piping/Atmospherics/pipe_alt1.rsi
map: [ "enum.PipeVisualLayers.Pipe" ]
state: pipeStraight
- map: ["base"]
state: base
- map: [ "enum.PowerDeviceVisualLayers.Powered" ]
state: lights
shader: unshaded
- type: entity
parent: [GasPipeLayerAlt2, GasPipeSensorMixedAir]
id: GasPipeSensorMixedAirAlt2
categories: [ HideSpawnMenu ]
components:
- type: Sprite
sprite: Structures/Piping/Atmospherics/gas_pipe_sensor_alt2.rsi
layers:
- sprite: Structures/Piping/Atmospherics/pipe_alt2.rsi
map: [ "enum.PipeVisualLayers.Pipe" ]
state: pipeStraight
- map: ["base"]
state: base
- map: [ "enum.PowerDeviceVisualLayers.Powered" ]
state: lights
shader: unshaded
# GasPipeSensorTEGHot
- type: entity
parent: [GasPipeLayerAlt1, GasPipeSensorTEGHot]
id: GasPipeSensorTEGHotAlt1
categories: [ HideSpawnMenu ]
components:
- type: Sprite
sprite: Structures/Piping/Atmospherics/gas_pipe_sensor_alt1.rsi
layers:
- sprite: Structures/Piping/Atmospherics/pipe_alt1.rsi
map: [ "enum.PipeVisualLayers.Pipe" ]
state: pipeStraight
- map: ["base"]
state: base
- map: [ "enum.PowerDeviceVisualLayers.Powered" ]
state: lights
shader: unshaded
- type: entity
parent: [GasPipeLayerAlt2, GasPipeSensorTEGHot]
id: GasPipeSensorTEGHotAlt2
categories: [ HideSpawnMenu ]
components:
- type: Sprite
sprite: Structures/Piping/Atmospherics/gas_pipe_sensor_alt2.rsi
layers:
- sprite: Structures/Piping/Atmospherics/pipe_alt2.rsi
map: [ "enum.PipeVisualLayers.Pipe" ]
state: pipeStraight
- map: ["base"]
state: base
- map: [ "enum.PowerDeviceVisualLayers.Powered" ]
state: lights
shader: unshaded
# GasPipeTEGCold
- type: entity
parent: [GasPipeLayerAlt1, GasPipeSensorTEGCold]
id: GasPipeSensorTEGColdAlt1
categories: [ HideSpawnMenu ]
components:
- type: Sprite
sprite: Structures/Piping/Atmospherics/gas_pipe_sensor_alt1.rsi
layers:
- sprite: Structures/Piping/Atmospherics/pipe_alt1.rsi
map: [ "enum.PipeVisualLayers.Pipe" ]
state: pipeStraight
- map: ["base"]
state: base
- map: [ "enum.PowerDeviceVisualLayers.Powered" ]
state: lights
shader: unshaded
- type: entity
parent: [GasPipeLayerAlt2, GasPipeSensorTEGCold]
id: GasPipeSensorTEGColdAlt2
categories: [ HideSpawnMenu ]
components:
- type: Sprite
sprite: Structures/Piping/Atmospherics/gas_pipe_sensor_alt2.rsi
layers:
- sprite: Structures/Piping/Atmospherics/pipe_alt2.rsi
map: [ "enum.PipeVisualLayers.Pipe" ]
state: pipeStraight
- map: ["base"]
state: base
- map: [ "enum.PowerDeviceVisualLayers.Powered" ]
state: lights
shader: unshaded
# GasPressureRegulator
- type: entity
parent: [GasPipeLayerAlt1, GasPressureRegulator]
id: GasPressureRegulatorAlt1
categories: [ HideSpawnMenu ]
components:
- type: Sprite
sprite: Structures/Piping/Atmospherics/pump_alt1.rsi
layers:
- sprite: Structures/Piping/Atmospherics/pipe_alt1.rsi
state: pipeStraight
map: [ "enum.PipeVisualLayers.Pipe" ]
- state: pumpPressureRegulator
map: [ "enum.SubfloorLayers.FirstLayer", "enabled" ]
- type: Construction
node: pressureregulatorAlt1
- type: entity
parent: [GasPipeLayerAlt2, GasPressureRegulator]
id: GasPressureRegulatorAlt2
categories: [ HideSpawnMenu ]
components:
- type: Sprite
sprite: Structures/Piping/Atmospherics/pump_alt2.rsi
layers:
- sprite: Structures/Piping/Atmospherics/pipe_alt2.rsi
state: pipeStraight
map: [ "enum.PipeVisualLayers.Pipe" ]
- state: pumpPressureRegulator
map: [ "enum.SubfloorLayers.FirstLayer", "enabled" ]
- type: Construction
node: pressureregulatorAlt2

View File

@@ -34,7 +34,7 @@
name: gas pump
description: A pump that moves gas by pressure.
placement:
mode: SnapgridCenter
mode: AlignAtmosPipeLayers
components:
- type: ExtensionCableReceiver
- type: LightningTarget
@@ -55,6 +55,11 @@
map: [ "enum.PipeVisualLayers.Pipe" ]
- state: pumpPressure
map: [ "enum.SubfloorLayers.FirstLayer", "enabled" ]
- type: AtmosPipeLayers
alternativePrototypes:
Primary: GasPressurePump
Secondary: GasPressurePumpAlt1
Tertiary: GasPressurePumpAlt2
- type: Appearance
- type: GenericVisualizer
visuals:
@@ -93,7 +98,7 @@
name: volumetric gas pump
description: A pump that moves gas by volume.
placement:
mode: SnapgridCenter
mode: AlignAtmosPipeLayers
components:
- type: ExtensionCableReceiver
- type: LightningTarget
@@ -114,6 +119,11 @@
map: [ "enum.PipeVisualLayers.Pipe" ]
- state: pumpVolume
map: [ "enum.SubfloorLayers.FirstLayer", "enabled" ]
- type: AtmosPipeLayers
alternativePrototypes:
Primary: GasVolumePump
Secondary: GasVolumePumpAlt1
Tertiary: GasVolumePumpAlt2
- type: Appearance
- type: GenericVisualizer
visuals:
@@ -161,7 +171,7 @@
name: inlet pressure regulator
description: A valve that releases gas when the inlet pressure exceeds a certain threshold.
placement:
mode: SnapgridCenter
mode: AlignAtmosPipeLayers
components:
- type: Rotatable
- type: Transform
@@ -177,6 +187,11 @@
map: [ "enum.PipeVisualLayers.Pipe" ]
- state: pumpPressureRegulator
map: [ "enum.SubfloorLayers.FirstLayer", "enabled" ]
- type: AtmosPipeLayers
alternativePrototypes:
Primary: GasPressureRegulator
Secondary: GasPressureRegulatorAlt1
Tertiary: GasPressureRegulatorAlt2
- type: Appearance
- type: GenericVisualizer
visuals:
@@ -217,7 +232,7 @@
name: passive gate
description: A one-way air valve that does not require power.
placement:
mode: SnapgridCenter
mode: AlignAtmosPipeLayers
components:
- type: SubFloorHide
visibleLayers:
@@ -230,6 +245,11 @@
map: [ "enum.PipeVisualLayers.Pipe" ]
- state: pumpPassiveGate
map: [ "enum.SubfloorLayers.FirstLayer" ]
- type: AtmosPipeLayers
alternativePrototypes:
Primary: GasPassiveGate
Secondary: GasPassiveGateAlt1
Tertiary: GasPassiveGateAlt2
- type: Appearance
- type: PipeColorVisuals
- type: GasPassiveGate
@@ -254,7 +274,7 @@
name: manual valve
description: A pipe with a valve that can be used to disable the flow of gas through it.
placement:
mode: SnapgridCenter
mode: AlignAtmosPipeLayers
components:
# TODO ATMOS: Give unique sprite.
- type: SubFloorHide
@@ -268,6 +288,11 @@
map: [ "enum.PipeVisualLayers.Pipe" ]
- state: pumpManualValve
map: [ "enum.SubfloorLayers.FirstLayer", "enabled" ]
- type: AtmosPipeLayers
alternativePrototypes:
Primary: GasValve
Secondary: GasValveAlt1
Tertiary: GasValveAlt2
- type: Appearance
- type: GenericVisualizer
visuals:
@@ -310,7 +335,7 @@
name: signal valve
description: A pipe with a valve that can be controlled with signals.
placement:
mode: SnapgridCenter
mode: AlignAtmosPipeLayers
components:
- type: StationAiWhitelist
- type: SubFloorHide
@@ -324,6 +349,11 @@
map: [ "enum.PipeVisualLayers.Pipe" ]
- state: pumpSignalValve
map: [ "enum.SubfloorLayers.FirstLayer", "enabled" ]
- type: AtmosPipeLayers
alternativePrototypes:
Primary: SignalControlledValve
Secondary: SignalControlledValveAlt1
Tertiary: SignalControlledValveAlt2
- type: Appearance
- type: GenericVisualizer
visuals:

View File

@@ -4,7 +4,7 @@
name: gas pipe sensor
description: Reports on the status of the gas in the attached pipe network.
placement:
mode: SnapgridCenter
mode: AlignAtmosPipeLayers
components:
- type: Sprite
sprite: Structures/Piping/Atmospherics/gas_pipe_sensor.rsi
@@ -23,6 +23,10 @@
Primary: Structures/Piping/Atmospherics/gas_pipe_sensor.rsi
Secondary: Structures/Piping/Atmospherics/gas_pipe_sensor_alt1.rsi
Tertiary: Structures/Piping/Atmospherics/gas_pipe_sensor_alt2.rsi
alternativePrototypes:
Primary: GasPipeSensor
Secondary: GasPipeSensorAlt1
Tertiary: GasPipeSensorAlt2
- type: Appearance
- type: GenericVisualizer
visuals:
@@ -62,6 +66,11 @@
components:
- type: Label
currentLabel: gas-pipe-sensor-distribution-loop
- type: AtmosPipeLayers
alternativePrototypes:
Primary: GasPipeSensorDistribution
Secondary: GasPipeSensorDistributionAlt1
Tertiary: GasPipeSensorDistributionAlt2
- type: entity
parent: GasPipeSensor
@@ -70,6 +79,11 @@
components:
- type: Label
currentLabel: gas-pipe-sensor-waste-loop
- type: AtmosPipeLayers
alternativePrototypes:
Primary: GasPipeSensorWaste
Secondary: GasPipeSensorWasteAlt1
Tertiary: GasPipeSensorWasteAlt2
- type: entity
parent: GasPipeSensor
@@ -78,6 +92,11 @@
components:
- type: Label
currentLabel: gas-pipe-sensor-mixed-air
- type: AtmosPipeLayers
alternativePrototypes:
Primary: GasPipeSensorMixedAir
Secondary: GasPipeSensorMixedAirAlt1
Tertiary: GasPipeSensorMixedAirAlt2
- type: entity
parent: GasPipeSensor
@@ -86,6 +105,11 @@
components:
- type: Label
currentLabel: gas-pipe-sensor-teg-hot-loop
- type: AtmosPipeLayers
alternativePrototypes:
Primary: GasPipeSensorTEGHot
Secondary: GasPipeSensorTEGHotAlt1
Tertiary: GasPipeSensorTEGHotAlt2
- type: entity
parent: GasPipeSensor
@@ -94,3 +118,8 @@
components:
- type: Label
currentLabel: gas-pipe-sensor-teg-cold-loop
- type: AtmosPipeLayers
alternativePrototypes:
Primary: GasPipeSensorTEGCold
Secondary: GasPipeSensorTEGColdAlt1
Tertiary: GasPipeSensorTEGColdAlt2

View File

@@ -96,11 +96,9 @@
- type: entity
abstract: true
id: BaseGeneratorWallmount
parent: BaseGenerator
parent: [ BaseGenerator, BaseWallmount ]
name: wallmount generator
description: A high efficiency thermoelectric generator stuffed in a wall cabinet.
placement:
mode: SnapgridCenter
components:
- type: AmbientOnPowered
- type: AmbientSound
@@ -114,12 +112,6 @@
color: "#3db83b"
castShadows: false
netsync: false
- type: Fixtures
- type: Transform
anchored: true
- type: Physics
bodyType: Static
canCollide: false
- type: Sprite
drawdepth: WallMountedItems
sprite: Structures/Power/Generation/wallmount_generator.rsi
@@ -142,7 +134,6 @@
supplyRate: 3000
supplyRampRate: 500
supplyRampTolerance: 500
- type: WallMount
- type: GuideHelp
guides:
- ShuttleCraft
@@ -150,20 +141,12 @@
# Construction Frames
- type: entity
parent: BaseWallmountMetallic
categories: [ HideSpawnMenu ]
id: BaseGeneratorWallmountFrame
name: wallmount generator frame
description: A construction frame for a wallmount generator.
placement:
mode: SnapgridCenter
components:
- type: Clickable
- type: InteractionOutline
- type: Physics
canCollide: false
- type: Fixtures
- type: Transform
anchored: true
- type: Sprite
drawdepth: WallMountedItems
sprite: Structures/Power/Generation/wallmount_generator.rsi
@@ -172,7 +155,6 @@
- type: Construction
graph: WallmountGenerator
node: frame
- type: WallMount
# Generators in use

View File

@@ -1,4 +1,5 @@
- type: entity
parent: BaseWallmount
categories: [ HideSpawnMenu ]
id: BaseAPC
name: APC
@@ -19,12 +20,8 @@
color: "#3db83b"
castShadows: false
netsync: false
- type: Clickable
- type: AccessReader
access: [["Engineering"]]
- type: InteractionOutline
- type: Transform
anchored: true
- type: Sprite
drawdepth: WallMountedItems
sprite: Structures/Power/apc.rsi
@@ -156,6 +153,7 @@
# APC under construction
- type: entity
parent: BaseWallmountMetallic
categories: [ HideSpawnMenu ]
id: APCFrame
name: APC frame
@@ -163,21 +161,12 @@
placement:
mode: SnapgridCenter
components:
- type: Clickable
- type: InteractionOutline
- type: Transform
anchored: true
- type: Sprite
drawdepth: WallMountedItems
sprite: Structures/Power/apc.rsi
state: frame
- type: Construction
graph: APC
node: apcFrame
- type: WallMount
- type: Damageable
damageContainer: StructuralInorganic
damageModifierSet: StructuralMetallic
- type: Destructible
thresholds:
- trigger:

View File

@@ -193,7 +193,7 @@
- PotatoBattery
- type: entity
parent: BaseItemRecharger
parent: [ BaseItemRecharger, BaseWallmount ]
id: WallWeaponCapacitorRecharger
name: wall recharger
components:
@@ -205,7 +205,6 @@
- map: ["enum.PowerChargerVisualLayers.Light"]
state: "light-off"
shader: "unshaded"
- type: WallMount
- type: Charger
chargeRate: 25
- type: ItemSlots

View File

@@ -51,6 +51,14 @@
whitelist:
tags:
- PlushieCarp
mopbucket_magicarpplush:
whitelist:
tags:
- PlushieCarpMagi
mopbucket_holocarpplush:
whitelist:
tags:
- PlushieCarpHolo
sprite: Objects/Specific/Janitorial/janitorial.rsi
- type: Transform
noRot: true
@@ -65,6 +73,8 @@
- PlushieSharkPink
- PlushieSharkGrey
- PlushieCarp
- PlushieCarpHolo
- PlushieCarpMagi
components:
- Rehydratable
priority: 3 # Higher than drinking priority
@@ -177,6 +187,11 @@
whitelist:
tags:
- Plunger
goldenplunger_slot:
name: janitorial-trolley-slot-component-slot-name-goldenplunger
whitelist:
tags:
- GoldenPlunger
priority: 8
wetfloorsign_slot4:
name: janitorial-trolley-slot-component-slot-name-sign
@@ -286,6 +301,10 @@
whitelist:
tags:
- Plunger
cart_goldenplunger:
whitelist:
tags:
- GoldenPlunger
cart_mop:
whitelist:
tags:
@@ -349,6 +368,7 @@
trashbag_slot: !type:ContainerSlot {}
bucket_slot: !type:ContainerSlot {}
plunger_slot: !type:ContainerSlot {}
goldenplunger_slot: !type:ContainerSlot {}
wetfloorsign_slot4: !type:ContainerSlot {}
wetfloorsign_slot3: !type:ContainerSlot {}
wetfloorsign_slot2: !type:ContainerSlot {}

View File

@@ -129,23 +129,16 @@
#Wall Closet
- type: entity
parent: BaseWallmountMetallic
id: BaseWallCloset
placement:
mode: SnapgridCenter
abstract: true
name: wall closet
description: A standard-issue Nanotrasen storage unit, now on walls.
components:
- type: InteractionOutline
- type: Clickable
- type: ResistLocker
- type: Weldable
- type: WallMount
arc: 175
- type: StaticPrice
price: 75
- type: Transform
noRot: false
- type: Sprite
drawdepth: WallMountedItems
noRot: false
@@ -170,9 +163,6 @@
containers:
entity_storage: !type:Container
ents: []
- type: Damageable
damageContainer: StructuralInorganic
damageModifierSet: Metallic
- type: Destructible
thresholds:
- trigger:

View File

@@ -1,15 +1,9 @@
- type: entity
parent: BaseWallmountMetallic
id: BoxingBell
name: boxing bell
description: Ding ding!
placement:
mode: SnapgridCenter
snap:
- Wallmount
components:
- type: Transform
anchored: true
- type: WallMount
- type: Sprite
sprite: Structures/Wallmounts/bell.rsi
layers:
@@ -18,22 +12,12 @@
successChance: 1
interactSuccessSound:
path: /Audio/Weapons/boxingbell.ogg
- type: Clickable
- type: MeleeSound
soundGroups:
Brute:
path:
"/Audio/Weapons/boxingbell.ogg"
- type: Appearance
- type: Rotatable
- type: CollisionWake
enabled: false
- type: Physics
canCollide: false
bodyType: Static
- type: Fixtures
- type: Damageable
damageContainer: Inorganic
- type: Destructible
thresholds:
- trigger:

View File

@@ -1,18 +1,14 @@
- type: entity
parent: BaseWallmountGlass
id: Mirror
name: mirror
description: 'Mirror mirror on the wall , who''s the most robust of them all?'
placement:
mode: SnapgridCenter
components:
- type: WallMount
- type: Sprite
sprite: Structures/Wallmounts/mirror.rsi
state: mirror
- type: InteractionOutline
- type: Clickable
- type: Transform
anchored: true
- type: MagicMirror #instant and silent
changeHairSound: null
addSlotTime: 0
@@ -26,6 +22,17 @@
interfaces:
enum.MagicMirrorUiKey.Key:
type: MagicMirrorBoundUserInterface
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 200
behaviors:
- !type:DoActsBehavior
acts: ["Destruction"]
- !type:PlaySoundBehavior
sound:
collection: MetalGlassBreak
- type: entity
parent: Mirror

View File

@@ -1,11 +1,9 @@
- type: entity
parent: BaseWallmount
id: NoticeBoard
name: notice board
description: Is there a job for a witcher?
placement:
mode: SnapgridCenter
components:
- type: WallMount
- type: Sprite
drawdepth: WallMountedItems
sprite: Structures/Wallmounts/noticeboard.rsi
@@ -17,10 +15,6 @@
maxFillLevels: 6
fillBaseName: notice
- type: Appearance
- type: InteractionOutline
- type: Clickable
- type: Transform
anchored: true
- type: Damageable
damageModifierSet: Wood
damageContainer: StructuralInorganic

View File

@@ -1,23 +1,15 @@
- type: entity
id: BaseBarSign
parent: BaseStructure
parent: [ BaseWallmountGlass, BaseWallmountMetallic ]
name: bar sign
abstract: true
components:
- type: MeleeSound
soundGroups:
Brute:
collection: GlassSmash
- type: WallMount
arc: 360
- type: Sprite
drawdepth: WallMountedItems
sprite: Structures/Wallmounts/barsign.rsi
state: empty
- type: ApcPowerReceiver
- type: ExtensionCableReceiver
- type: BarSign
- type: InteractionOutline
- type: AccessReader
access: [["Bar"]]
- type: ActivatableUIRequiresPower
@@ -31,8 +23,6 @@
enum.WiresUiKey.Key:
type: WiresBoundUserInterface
- type: Appearance
- type: Damageable
damageContainer: StructuralInorganic
- type: Destructible
thresholds:
- trigger:

View File

@@ -1,26 +1,12 @@
- type: entity
parent: BaseWallmountMetallic
id: BaseSign
name: base sign
abstract: true
placement:
mode: SnapgridCenter
components:
- type: WallMount
arc: 360
- type: Clickable
- type: InteractionOutline
- type: Rotatable
- type: Physics
bodyType: Static
canCollide: false
- type: Fixtures
fixtures:
fix1:
shape:
!type:PhysShapeAabb {}
- type: Damageable
damageContainer: Inorganic
damageModifierSet: Metallic
- type: Destructible
thresholds:
- trigger:
@@ -30,7 +16,6 @@
- !type:DoActsBehavior
acts: ["Destruction"]
- type: Sprite
drawdepth: WallMountedItems
sprite: Structures/Wallmounts/signs.rsi
snapCardinals: true
- type: StaticPrice

View File

@@ -3,10 +3,7 @@
id: BaseFlag
abstract: true
components:
- type: WallMount
arc: 360
- type: Sprite
drawdepth: WallMountedItems
sprite: Structures/Wallmounts/flags.rsi
- type: entity
@@ -35,7 +32,7 @@
components:
- type: Sprite
state: syndie_flag
- type: entity
parent: BaseFlag
id: LGBTQFlag
@@ -44,7 +41,7 @@
components:
- type: Sprite
state: lgbtq_flag
- type: entity
parent: BaseFlag
id: PirateFlag
@@ -52,4 +49,4 @@
description: Raise the jolly roger, scallywags!
components:
- type: Sprite
state: pirate_flag
state: pirate_flag

View File

@@ -3,10 +3,7 @@
id: PaintingBase
abstract: true
components:
- type: WallMount
arc: 360
- type: Sprite
drawdepth: WallMountedItems
sprite: Structures/Wallmounts/paintings.rsi
- type: entity
@@ -187,4 +184,4 @@
description: This painting is a sad clown! It sparks joy.
components:
- type: Sprite
state: painting19
state: painting19

View File

@@ -3,12 +3,8 @@
id: PosterBase
abstract: true
components:
- type: WallMount
arc: 360
- type: Sprite
drawdepth: WallMountedItems
sprite: Structures/Wallmounts/posters.rsi
snapCardinals: true
- type: Destructible
thresholds:
- trigger: # Excess damage, don't spawn entities

View File

@@ -0,0 +1,9 @@
- type: entity
parent: [BaseWallmountMetallic, BaseItemCabinet]
id: BaseWallmountCabinet
abstract: true
- type: entity
parent: [BaseWallmountGlass, BaseItemCabinetGlass]
id: BaseWallmountCabinetGlass
abstract: true

View File

@@ -1,18 +1,12 @@
# TODO: same as other wallmount cabinets they should use a base structure prototype
- type: entity
parent: BaseItemCabinet
parent: BaseWallmountCabinet
id: DefibrillatorCabinet
name: defibrillator cabinet
description: A small wall mounted cabinet designed to hold a defibrillator.
placement:
mode: SnapgridCenter
components:
- type: WallMount
arc: 175
- type: Transform
anchored: true
- type: Clickable
- type: InteractionOutline
- type: Sprite
sprite: Structures/Wallmounts/defib_cabinet.rsi
noRot: false
@@ -30,9 +24,6 @@
whitelist:
components:
- Defibrillator
- type: Damageable
damageContainer: StructuralInorganic
damageModifierSet: Metallic
- type: Destructible
thresholds:
- trigger: !type:DamageTrigger

View File

@@ -1,19 +1,9 @@
# TODO: this could probably use some kind of base structure prototype
# every wallmount cabinet copypastes placement and like 8 components
- type: entity
parent: BaseItemCabinet
parent: BaseWallmountCabinet
id: ExtinguisherCabinet
name: extinguisher cabinet
description: A small wall mounted cabinet designed to hold a fire extinguisher.
placement:
mode: SnapgridCenter
components:
- type: WallMount
arc: 360
- type: Transform
anchored: true
- type: Clickable
- type: InteractionOutline
- type: Sprite
sprite: Structures/Wallmounts/extinguisher_cabinet.rsi
snapCardinals: true
@@ -31,9 +21,6 @@
whitelist:
components:
- SpraySafety
- type: Damageable
damageContainer: StructuralInorganic
damageModifierSet: Metallic
- type: Destructible
thresholds:
- trigger:

View File

@@ -1,15 +1,11 @@
# TODO: same as fire extinguisher make it use a base structure theres lots of copy paste
- type: entity
parent: BaseItemCabinetGlass
parent: BaseWallmountCabinetGlass
id: FireAxeCabinet
name: fire axe cabinet
description: There is a small label that reads "For Emergency use only" along with details for safe use of the axe. As if.
placement:
mode: SnapgridCenter
components:
- type: Damageable
damageContainer: StructuralInorganic
damageModifierSet: Glass
- type: Destructible
thresholds:
- trigger:
@@ -28,13 +24,6 @@
- !type:PlaySoundBehavior
sound:
collection: MetalGlassBreak
- type: MeleeSound
soundGroups:
Brute:
collection: GlassSmash
- type: WallMount
- type: Clickable
- type: InteractionOutline
- type: Sprite
sprite: Structures/Wallmounts/fireaxe_cabinet.rsi
layers:

View File

@@ -1,23 +1,15 @@
# Parents
- type: entity
abstract: true
parent: BaseWallmount
id: ShelfBase
abstract: true
name: shelf
description: A strange place to place, well, anything really. You feel like you shouldn't be seeing this.
placement:
mode: SnapgridCenter
snap:
- Wallmount
components:
- type: Clickable
- type: Tag
tags:
- Structure
- type: Sprite
drawdepth: WallMountedItems
sprite: Structures/Storage/Shelfs/wood.rsi
state: base
- type: Transform
- type: Damageable
damageModifierSet: Wood
damageContainer: StructuralInorganic
@@ -32,7 +24,6 @@
collection: WoodDestroyHeavy
- !type:DoActsBehavior
acts: ["Destruction"]
- type: WallMount
- type: Storage
grid:
- 0,0,3,1
@@ -42,7 +33,6 @@
interfaces:
enum.StorageUiKey.Key:
type: StorageBoundUserInterface
- type: InteractionOutline
- type: ContainerContainer
containers:
storagebase: !type:Container

View File

@@ -1,25 +1,12 @@
- type: entity
id: CleanerDispenser
name: space cleaner dispenser
description: Wallmount reagent dispenser.
placement:
mode: SnapgridCenter
snap:
- Wallmount
parent: BaseWallmountMetallic
id: BaseDispenser
abstract: true
components:
- type: WallMount
arc: 175
- type: Sprite
sprite: Structures/Storage/tanks.rsi
state: cleanerdispenser
- type: Appearance
- type: InteractionOutline
- type: Clickable
- type: Transform
anchored: true
- type: Damageable
damageContainer: StructuralInorganic
damageModifierSet: Metallic
- type: Destructible
thresholds:
- trigger:
@@ -53,12 +40,6 @@
collection: MetalBreak
- !type:DoActsBehavior
acts: ["Destruction"]
- type: SolutionContainerManager
solutions:
tank:
reagents:
- ReagentId: SpaceCleaner
Quantity: 5000
- type: DrainableSolution
solution: tank
- type: ReagentTank
@@ -66,7 +47,7 @@
solution: tank
- type: entity
parent: CleanerDispenser
parent: BaseDispenser
id: FuelDispenser
name: fuel dispenser
components:
@@ -86,3 +67,16 @@
weldingDamage:
types:
Heat: 20
- type: entity
parent: BaseDispenser
id: CleanerDispenser
name: space cleaner dispenser
components:
- type: SolutionContainerManager
solutions:
tank:
reagents:
- ReagentId: SpaceCleaner
Quantity: 5000
- type: ReagentTank

View File

@@ -1,19 +1,12 @@
- type: entity
parent: BaseWallmountMetallic
id: SignalSwitch
name: signal switch
description: It's a switch for toggling power to things.
placement:
mode: SnapgridCenter
snap:
- Wallmount
components:
- type: StationAiWhitelist
- type: WallMount
arc: 360
- type: Clickable
- type: InteractionOutline
- type: Physics
canCollide: false
- type: StationAiWhitelist
- type: Sprite
drawdepth: SmallObjects
sprite: Structures/Wallmounts/switch.rsi
@@ -25,7 +18,6 @@
- type: Construction
graph: SignalSwitchGraph
node: SignalSwitchNode
- type: Fixtures
- type: DeviceNetwork
deviceNetId: Wireless
- type: WirelessNetworkConnection
@@ -37,51 +29,6 @@
- Status
lastSignals:
Status: false
- type: Tag
tags:
- Structure
- type: entity
id: SignalButton
name: signal button
description: It's a button for activating something.
placement:
mode: SnapgridCenter
snap:
- Wallmount
components:
- type: StationAiWhitelist
- type: WallMount
arc: 360
- type: Clickable
- type: InteractionOutline
- type: Physics
canCollide: false
- type: Sprite
drawdepth: SmallObjects
sprite: Structures/Wallmounts/switch.rsi
state: dead
- type: UseDelay
delay: 0.5 # prevent light-toggling auto-clickers.
- type: SignalSwitch
onPort: Pressed
offPort: Pressed
statusPort: Pressed
- type: Rotatable
- type: Construction
graph: SignalButtonGraph
node: SignalButtonNode
- type: Fixtures
- type: DeviceNetwork
deviceNetId: Wireless
- type: WirelessNetworkConnection
range: 200
- type: DeviceLinkSource
ports:
- Pressed
- type: Damageable
damageContainer: Inorganic
damageModifierSet: Metallic
- type: Destructible
thresholds:
- trigger:
@@ -101,100 +48,79 @@
collection: MetalBreak
params:
volume: -8
- type: Tag
tags:
- Structure
- type: entity
parent: BaseWallmountMetallic
id: SignalButton
name: signal button
description: It's a button for activating something.
components:
- type: WallMount
arc: 360
- type: StationAiWhitelist
- type: Sprite
drawdepth: SmallObjects
sprite: Structures/Wallmounts/switch.rsi
state: dead
- type: UseDelay
delay: 0.5 # prevent light-toggling auto-clickers.
- type: SignalSwitch
onPort: Pressed
offPort: Pressed
statusPort: Pressed
- type: Rotatable
- type: Construction
graph: SignalButtonGraph
node: SignalButtonNode
- type: DeviceNetwork
deviceNetId: Wireless
- type: WirelessNetworkConnection
range: 200
- type: DeviceLinkSource
ports:
- Pressed
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 80
behaviors:
- !type:DoActsBehavior
acts: [ "Destruction" ]
- trigger:
!type:DamageTrigger
damage: 40
behaviors:
- !type:DoActsBehavior
acts: [ "Destruction" ]
- !type:PlaySoundBehavior
sound:
collection: MetalBreak
params:
volume: -8
- type: entity
parent: BaseWallmountMetallic
id: ApcNetSwitch
name: apc net switch
description: It's a switch for toggling lights that are connected to the same apc.
placement:
mode: SnapgridCenter
snap:
- Wallmount
components:
- type: WallMount
arc: 360
- type: Clickable
- type: InteractionOutline
- type: Physics
canCollide: false
- type: Transform
anchored: true
- type: Sprite
drawdepth: SmallObjects
sprite: Structures/Wallmounts/switch.rsi
state: on
- type: Rotatable
- type: ExtensionCableReceiver
- type: DeviceNetwork
deviceNetId: Apc
transmitFrequencyId: SmartLight # assuming people want to use it for light switches.
- type: ApcNetworkConnection
- type: ApcNetSwitch
- type: Construction
graph: LightSwitchGraph
node: LightSwitchNode
- type: Fixtures
- type: Tag
tags:
- Structure
- type: entity
id: TwoWayLever
name: two way lever
description: A two way lever.
placement:
mode: SnapgridCenter
components:
- type: StationAiWhitelist
- type: Clickable
- type: InteractionOutline
- type: Sprite
drawdepth: HighFloorObjects
sprite: Structures/conveyor.rsi
noRot: true
layers:
- state: switch-off
map: ["enabled", "enum.TwoWayLeverState.Middle"]
- type: TwoWayLever
- type: UseDelay
delay: 0.2 # prevent light-toggling auto-clickers.
- type: Appearance
- type: GenericVisualizer
visuals:
enum.TwoWayLeverVisuals.State:
enabled:
Right: { state: switch-fwd }
Middle: { state: switch-off }
Left: { state: switch-rev }
- type: Damageable
damageContainer: Inorganic
damageModifierSet: Metallic
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 100
behaviors:
- !type:DoActsBehavior
acts: [ "Destruction" ]
- type: Construction
graph: LeverGraph
node: LeverNode
- type: DeviceNetwork
deviceNetId: Wireless
- type: WirelessNetworkConnection
range: 200
- type: DeviceLinkSource
ports:
- Left
- Right
- Middle
- type: Tag
tags:
- Structure
- type: WallMount
arc: 360
- type: Sprite
drawdepth: SmallObjects
sprite: Structures/Wallmounts/switch.rsi
state: on
- type: Rotatable
- type: ExtensionCableReceiver
- type: DeviceNetwork
deviceNetId: Apc
transmitFrequencyId: SmartLight # assuming people want to use it for light switches.
- type: ApcNetworkConnection
- type: ApcNetSwitch
- type: Construction
graph: LightSwitchGraph
node: LightSwitchNode
#directional

Some files were not shown because too many files have changed in this diff Show More