diff --git a/Content.Server/Destructible/DestructibleComponent.cs b/Content.Server/Destructible/DestructibleComponent.cs
index d991d8b2f9..41f4c9c5c1 100644
--- a/Content.Server/Destructible/DestructibleComponent.cs
+++ b/Content.Server/Destructible/DestructibleComponent.cs
@@ -6,7 +6,7 @@ namespace Content.Server.Destructible;
/// When attached to an , allows it to take damage
/// and triggers thresholds when reached.
///
-[RegisterComponent]
+[RegisterComponent, Access(typeof(DestructibleSystem))]
public sealed partial class DestructibleComponent : Component
{
///
@@ -14,6 +14,7 @@ public sealed partial class DestructibleComponent : Component
/// includes their triggers and resultant behaviors.
///
[DataField(customTypeSerializer: typeof(DamageThresholdsSerializer))]
+ [AlwaysPushInheritance]
public List Thresholds = new();
///
diff --git a/Resources/Prototypes/Body/Species/vox.yml b/Resources/Prototypes/Body/Species/vox.yml
index e94375594e..94a8a7d37a 100644
--- a/Resources/Prototypes/Body/Species/vox.yml
+++ b/Resources/Prototypes/Body/Species/vox.yml
@@ -183,12 +183,6 @@
amount: 5
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTypeTrigger
- damageType: Blunt
- damage: 400
- behaviors:
- - !type:GibBehavior { }
- trigger:
!type:DamageTypeTrigger
damageType: Heat
@@ -200,26 +194,6 @@
FoodMeatChickenFriedVox:
min: 3
max: 5
- - !type:BurnBodyBehavior
- popupMessage: bodyburn-vox-text-others
- - !type:PlaySoundBehavior
- sound:
- collection: MeatLaserImpact
- - trigger:
- !type:DamageTypeTrigger
- damageType: Radiation
- damage: 15
- behaviors:
- - !type:PopupBehavior
- popup: mouth-taste-metal
- popupType: LargeCaution
- targetOnly: true
- - trigger:
- !type:DamageTypeTrigger
- damageType: Radiation
- damage: 40
- behaviors:
- - !type:VomitBehavior
- type: PassiveDamage
# Augment normal health regen to be able to tank some Poison damage
# This allows Vox to take their mask off temporarily to eat something without needing a trip to medbay afterwards.
diff --git a/Resources/Prototypes/Body/species_base.yml b/Resources/Prototypes/Body/species_base.yml
index 69ab8fcc71..ae386d2be2 100644
--- a/Resources/Prototypes/Body/species_base.yml
+++ b/Resources/Prototypes/Body/species_base.yml
@@ -162,6 +162,7 @@
- MobAtmosStandard
- MobFlammable
- BaseSpeciesMob
+ - BaseMobDestructible
id: BaseSpeciesMobOrganic
save: false
components:
diff --git a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml
index c4dc4ade89..568e932b82 100644
--- a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml
+++ b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml
@@ -169,34 +169,6 @@
- type: Damageable
- type: Injurable
damageContainer: Silicon
- - type: Destructible
- generateOverkillThreshold: false
- thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 75
- behaviors:
- - !type:PlaySoundBehavior
- sound:
- path: /Audio/Machines/warning_buzzer.ogg
- params:
- volume: 5
- - trigger:
- !type:DamageTrigger
- damage: 300
- behaviors:
- - !type:PlaySoundBehavior
- sound:
- collection: MetalBreak
- - !type:GibBehavior
- - !type:SpawnEntitiesBehavior
- spawn:
- ScrapGlass:
- min: 1
- max: 1
- SheetSteel:
- min: 10
- max: 20
- type: HandheldLight
toggleOnInteract: false
wattage: 0.2
@@ -263,6 +235,34 @@
id: BaseBorgChassis
components:
- type: IonStormTarget
+ - type: Destructible
+ generateOverkillThreshold: false
+ thresholds:
+ - trigger:
+ !type:DamageTrigger
+ damage: 75
+ behaviors:
+ - !type:PlaySoundBehavior
+ sound:
+ path: /Audio/Machines/warning_buzzer.ogg
+ params:
+ volume: 5
+ - trigger:
+ !type:DamageTrigger
+ damage: 300
+ behaviors:
+ - !type:PlaySoundBehavior
+ sound:
+ collection: MetalBreak
+ - !type:GibBehavior
+ - !type:SpawnEntitiesBehavior
+ spawn:
+ ScrapGlass:
+ min: 1
+ max: 1
+ SheetSteel:
+ min: 10
+ max: 20
- type: entity
abstract: true
@@ -504,6 +504,32 @@
- type: NpcFactionMember
factions:
- Xenoborg
+ - type: PointLight
+ color: "#3010ff"
+ energy: 7
+ - type: GuideHelp
+ guides:
+ - Cyborgs
+ - Robotics
+ - Xenoborgs
+ - type: Access
+ tags:
+ - Xenoborg
+ - type: AccessReader
+ access: [["Xenoborg"]]
+ - type: ShowJobIcons # not sure if it is needed
+ - type: ShowCrewIcons
+ - type: InteractionPopup
+ interactSuccessSound:
+ path: /Audio/Ambience/Objects/periodic_beep.ogg
+ - type: Xenoborg
+ - type: BypassLock
+ bypassDelay: 15 # We don't want people to easily be able to remove xenoborg brains.
+
+- type: entity
+ abstract: true
+ id: BaseXenoborgDestructible
+ components:
- type: Destructible
thresholds:
- trigger:
@@ -534,24 +560,3 @@
- cell_slot
- !type:DoActsBehavior
acts: [ "Destruction" ]
- - type: PointLight
- color: "#3010ff"
- energy: 7
- - type: GuideHelp
- guides:
- - Cyborgs
- - Robotics
- - Xenoborgs
- - type: Access
- tags:
- - Xenoborg
- - type: AccessReader
- access: [["Xenoborg"]]
- - type: ShowJobIcons # not sure if it is needed
- - type: ShowCrewIcons
- - type: InteractionPopup
- interactSuccessSound:
- path: /Audio/Ambience/Objects/periodic_beep.ogg
- - type: Xenoborg
- - type: BypassLock
- bypassDelay: 15 # We don't want people to easily be able to remove xenoborg brains.
diff --git a/Resources/Prototypes/Entities/Mobs/Cyborgs/xenoborgs.yml b/Resources/Prototypes/Entities/Mobs/Cyborgs/xenoborgs.yml
index 77c82f3fbd..4e14e24cf1 100644
--- a/Resources/Prototypes/Entities/Mobs/Cyborgs/xenoborgs.yml
+++ b/Resources/Prototypes/Entities/Mobs/Cyborgs/xenoborgs.yml
@@ -1,5 +1,5 @@
- type: entity
- parent: [ BaseXenoborgChassis, BaseXenoborgTransponder ]
+ parent: [ BaseXenoborgChassis, BaseXenoborgTransponder, BaseXenoborgDestructible ]
id: XenoborgEngi
name: engi xenoborg
suffix: with brain
@@ -148,7 +148,7 @@
startingItem: PowerCellHigh
- type: entity
- parent: [ BaseXenoborgChassis, BaseXenoborgTransponder ]
+ parent: [ BaseXenoborgChassis, BaseXenoborgTransponder, BaseXenoborgDestructible ]
id: XenoborgScout
name: scout xenoborg
suffix: with brain
@@ -203,7 +203,7 @@
startingItem: PowerCellHigh
- type: entity
- parent: [ BaseXenoborgChassis, BaseXenoborgTransponder ]
+ parent: [ BaseXenoborgChassis, BaseXenoborgTransponder, BaseXenoborgDestructible ]
id: XenoborgStealth
name: stealth xenoborg
suffix: with brain
diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml
index c447f1570e..45f6612f1a 100644
--- a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml
+++ b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml
@@ -199,7 +199,7 @@
- type: entity
name: chicken
- parent: [SimpleMobBase, BaseSlicingRefinable]
+ parent: [SimpleMobBase, BaseSlicingRefinable, BaseMobDestructible]
id: MobChicken
description: Comes before an egg, and IS a dinosaur!
components:
@@ -348,17 +348,12 @@
lifetime: 21
- type: entity
- name: cockroach
+ abstract: true
parent: [SolutionFood, SolutionTiny, SimpleMobBase, BaseSlicingRefinable, MobNightVision]
- id: MobCockroach
- description: This station is just crawling with bugs.
+ id: BaseCockroach
components:
- type: Sprite
drawdepth: SmallMobs
- sprite: Mobs/Animals/cockroach.rsi
- layers:
- - map: ["enum.DamageStateVisualLayers.Base"]
- state: cockroach
- type: Item
size: Tiny
- type: HTN
@@ -385,14 +380,6 @@
- type: MovementSpeedModifier
baseWalkSpeed : 2.5
baseSprintSpeed : 5
- - type: DamageStateVisuals
- states:
- Alive:
- Base: cockroach
- Critical:
- Base: cockroach_dead
- Dead:
- Base: cockroach_dead
- type: Bloodstream
bloodReferenceSolution:
reagents:
@@ -422,15 +409,6 @@
tags:
- Trash
- VimPilot
- - type: Destructible
- thresholds:
- - trigger:
- !type:DamageTypeTrigger
- damageType: Blunt
- damage: 10
- behaviors:
- - !type:GibBehavior
- recursive: false
- type: NonSpreaderZombie
- type: StepTrigger
requiredTriggeredSpeed: 1
@@ -448,9 +426,38 @@
types:
Piercing: 0
+- type: entity
+ parent: BaseCockroach
+ id: MobCockroach
+ name: cockroach
+ description: This station is just crawling with bugs.
+ components:
+ - type: Sprite
+ sprite: Mobs/Animals/cockroach.rsi
+ layers:
+ - map: ["enum.DamageStateVisualLayers.Base"]
+ state: cockroach
+ - type: DamageStateVisuals
+ states:
+ Alive:
+ Base: cockroach
+ Critical:
+ Base: cockroach_dead
+ Dead:
+ Base: cockroach_dead
+ - type: Destructible
+ thresholds:
+ - trigger:
+ !type:DamageTypeTrigger
+ damageType: Blunt
+ damage: 10
+ behaviors:
+ - !type:GibBehavior
+ recursive: false
+
- type: entity
name: glockroach
- parent: [MobCockroach, BaseSlicingRefinable]
+ parent: MobCockroach
suffix: Admeme
id: MobGlockroach
description: This station is just crawling with bu- OH GOD THAT COCKROACH HAS A GUN!!!
@@ -476,13 +483,10 @@
- type: NpcFactionMember
factions:
- SimpleHostile
- - type: ToolRefinable
- refineResult:
- - id: FoodMeatSlime
- type: entity
name: mothroach
- parent: [ BaseMobMothroach, MobCockroach, BaseSlicingRefinable ]
+ parent: [ BaseMobMothroach, BaseCockroach, BaseSlicingRefinable ]
id: MobMothroach
description: This is the adorable by-product of multiple attempts at genetically mixing mothpeople with cockroaches.
components:
@@ -656,7 +660,7 @@
- type: entity
name: mallard duck #Quack
- parent: [SimpleMobBase, BaseSlicingRefinable]
+ parent: [SimpleMobBase, BaseSlicingRefinable, BaseMobDestructible]
id: MobDuckMallard
description: An adorable mallard duck, it's fluffy and soft!
components:
@@ -859,7 +863,7 @@
- type: entity
name: cow
- parent: [ BaseMobRuminant, SimpleMobBase, BaseSlicingRefinable ]
+ parent: [ BaseMobRuminant, SimpleMobBase, BaseSlicingRefinable, BaseMobDestructible ]
id: MobCow
description: Moo.
components:
@@ -950,7 +954,7 @@
- type: entity
name: crab
- parent: [ SimpleMobBase, BaseMobHemocyanin, BaseSlicingRefinable ]
+ parent: [ SimpleMobBase, BaseMobHemocyanin, BaseSlicingRefinable, BaseMobDestructible ]
id: MobCrab
description: A folk legend goes around that his claw snaps spacemen out of existence over distasteful remarks. Be polite and tolerant for your own safety.
components:
@@ -1018,7 +1022,7 @@
- type: entity
name: goat
- parent: [ BaseMobRuminant, SimpleMobBase, BaseSlicingRefinable ]
+ parent: [ BaseMobRuminant, SimpleMobBase, BaseSlicingRefinable, BaseMobDestructible ]
id: MobGoat
description: Her spine consists of long sharp segments, no wonder she is so grumpy.
components:
@@ -1286,7 +1290,7 @@
Quantity: 25
- type: entity
- parent: [ MobSheepBase, SimpleMobBase ]
+ parent: [ MobSheepBase, SimpleMobBase, BaseMobDestructible ]
id: MobSheep
name: sheep
description: An adorable genetically engineered chemical factory producing milk and cotton.
@@ -1323,7 +1327,7 @@
# Note that we gotta make this bitch vomit someday when you feed it anthrax or sumthin. Needs to be a small item thief too and aggressive if attacked.
- type: entity
name: goose
- parent: [SimpleMobBase, BaseSlicingRefinable]
+ parent: [SimpleMobBase, BaseSlicingRefinable, BaseMobDestructible]
id: MobGoose
description: Its stomach and mind are an enigma beyond human comprehension.
components:
@@ -1374,7 +1378,7 @@
- type: entity
name: gorilla
- parent: [ SimpleMobBase, MobCombat ]
+ parent: [ SimpleMobBase, MobCombat, BaseMobDestructible ]
id: MobGorilla
description: Smashes, roars, looks cool. Don't stand near one.
components:
@@ -1459,6 +1463,7 @@
- MobCombat
- StripableInventoryBase
- BaseSlicingRefinable
+ - BaseMobDestructible
id: MobKangaroo
description: A large marsupial herbivore. It has powerful hind legs, with nails that resemble long claws.
components:
@@ -1550,7 +1555,7 @@
- type: entity
name: genetic ancestor
id: MobBaseAncestor
- parent: [BaseMobAnimal, SimpleMobBase, StripableInventoryBase]
+ parent: [BaseMobAnimal, SimpleMobBase, StripableInventoryBase, BaseMobDestructible]
description: The genetic bipedal ancestor of... Uh... Something. Yeah, there's definitely something on the station that descended from whatever this is.
abstract: true
components:
@@ -2216,7 +2221,7 @@
- type: entity
name: lizard #Weh
- parent: [SimpleMobBase, BaseSlicingRefinable]
+ parent: [SimpleMobBase, BaseSlicingRefinable, BaseMobDestructible]
id: MobLizard
description: A harmless dragon.
components:
@@ -2273,7 +2278,7 @@
- type: entity
name: slug
- parent: [SimpleMobBase, BaseSlicingRefinable]
+ parent: [SimpleMobBase, BaseSlicingRefinable, BaseMobDestructible]
id: MobSlug
description: And they called this a lizard?
components:
@@ -2394,7 +2399,7 @@
# Would be cool to have some functionality for the parrot to be able to sit on stuff
- type: entity
- parent: [ SimpleMobBase, FlyingMobBase, BaseSlicingRefinable ]
+ parent: [ SimpleMobBase, FlyingMobBase, BaseSlicingRefinable, BaseMobDestructible ]
id: MobParrotBase
name: parrot
abstract: true
@@ -2481,7 +2486,7 @@
- type: entity
name: penguin
- parent: [SimpleMobBase, BaseSlicingRefinable]
+ parent: [SimpleMobBase, BaseSlicingRefinable, BaseMobDestructible]
id: MobPenguin
description: Their lives are constant pain due to their inner-body knees.
components:
@@ -2620,7 +2625,7 @@
# I have included a snake_hiss.ogg sound file so if you want to use that be my guest
- type: entity
name: snake
- parent: [SimpleMobBase, BaseSlicingRefinable]
+ parent: [SimpleMobBase, BaseSlicingRefinable, BaseMobDestructible]
id: MobSnake
description: Hissss! Bites aren't poisonous.
components:
@@ -2670,7 +2675,7 @@
# Code unique spider prototypes or combine them all into one spider and get a
# random sprite state when you spawn it.
- type: entity
- parent: [ SimpleMobBase, BaseMobHemocyanin, MobCombat, BaseSlicingRefinable, MobNightVision ]
+ parent: [ SimpleMobBase, BaseMobHemocyanin, MobCombat, BaseSlicingRefinable, MobNightVision, BaseMobDestructible ]
id: MobSpiderBase
abstract: true
components:
@@ -2878,6 +2883,7 @@
reagents:
- ReagentId: Laughter
Quantity: 150
+
- type: entity
name: wizard spider
parent: MobGiantSpider
@@ -2892,7 +2898,7 @@
- type: entity
name: possum
- parent: [SimpleMobBase, StripableInventoryBase, BaseSlicingRefinable]
+ parent: [SimpleMobBase, StripableInventoryBase, BaseSlicingRefinable, BaseMobDestructible]
id: MobPossum
description: '"O Possum! My Possum!" -- Walt Whitman, 1865'
components:
@@ -2965,7 +2971,7 @@
- type: entity
name: raccoon
- parent: [SimpleMobBase, StripableInventoryBase, BaseSlicingRefinable]
+ parent: [SimpleMobBase, StripableInventoryBase, BaseSlicingRefinable, BaseMobDestructible]
id: MobRaccoon
description: Trash panda!
components:
@@ -3018,7 +3024,7 @@
- type: entity
name: fox
- parent: [SimpleMobBase, StripableInventoryBase, BaseSlicingRefinable]
+ parent: [SimpleMobBase, StripableInventoryBase, BaseSlicingRefinable, BaseMobDestructible]
id: MobFox
description: They're a fox.
components:
@@ -3100,7 +3106,7 @@
- type: entity
abstract: true
- parent: [SimpleMobBase, StripableInventoryBase]
+ parent: [SimpleMobBase, StripableInventoryBase, BaseMobDestructible]
id: MobCorgiBase
name: corgi
description: Finally, a space corgi!
@@ -3264,7 +3270,7 @@
- type: entity
name: cat
- parent: [SimpleMobBase, StripableInventoryBase, BaseSlicingRefinable]
+ parent: [SimpleMobBase, StripableInventoryBase, BaseSlicingRefinable, BaseMobDestructible]
id: MobCat
description: Feline pet, very funny.
components:
@@ -3500,7 +3506,7 @@
- type: entity
name: sloth
- parent: [SimpleMobBase, StripableInventoryBase, BaseSlicingRefinable]
+ parent: [SimpleMobBase, StripableInventoryBase, BaseSlicingRefinable, BaseMobDestructible]
id: MobSloth
description: Very slow animal. For people with low energy.
components:
@@ -3557,7 +3563,7 @@
- type: entity
name: ferret
- parent: [SimpleMobBase, StripableInventoryBase, BaseSlicingRefinable]
+ parent: [SimpleMobBase, StripableInventoryBase, BaseSlicingRefinable, BaseMobDestructible]
id: MobFerret
description: Just a silly little guy!
components:
@@ -3766,7 +3772,7 @@
- type: entity
name: pig
- parent: [SimpleMobBase, StripableInventoryBase, BaseSlicingRefinable]
+ parent: [SimpleMobBase, StripableInventoryBase, BaseSlicingRefinable, BaseMobDestructible]
id: MobPig
description: Oink.
components:
@@ -3837,7 +3843,7 @@
- type: entity
name: diona nymph
- parent: [BaseMobAnimal, SimpleMobBase, StripableInventoryBase, BaseSlicingRefinable]
+ parent: [BaseMobAnimal, SimpleMobBase, StripableInventoryBase, BaseSlicingRefinable, BaseMobDestructible]
id: MobDionaNymph
description: It's like a cat, only.... branch-ier.
components:
@@ -3925,7 +3931,7 @@
- type: entity
name: reindeer buck
- parent: [ SimpleMobBase, MobCombat, BaseSlicingRefinable ]
+ parent: [ SimpleMobBase, MobCombat, BaseSlicingRefinable, BaseMobDestructible ]
id: MobReindeerBuck
description: You think it can pull a sleigh?
components:
diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/argocyte.yml b/Resources/Prototypes/Entities/Mobs/NPCs/argocyte.yml
index 6d4266d252..6768f4599e 100644
--- a/Resources/Prototypes/Entities/Mobs/NPCs/argocyte.yml
+++ b/Resources/Prototypes/Entities/Mobs/NPCs/argocyte.yml
@@ -1,6 +1,6 @@
- type: entity
save: false
- parent: [ BaseSimpleMob, BaseMobAnimal, MobCombat, MobBloodstream ]
+ parent: [ BaseSimpleMob, BaseMobAnimal, MobCombat, MobBloodstream, BaseMobDestructible ]
id: BaseMobArgocyte
suffix: AI
description: A dangerous alien found on the wrong side of planets, known for their propensity for munching on ruins.
diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/asteroid.yml b/Resources/Prototypes/Entities/Mobs/NPCs/asteroid.yml
index 89ef10385a..6ee68e56c2 100644
--- a/Resources/Prototypes/Entities/Mobs/NPCs/asteroid.yml
+++ b/Resources/Prototypes/Entities/Mobs/NPCs/asteroid.yml
@@ -27,7 +27,7 @@
- type: entity
id: MobGoliath
- parent: [ BaseMobAsteroid, MobBloodstream, BaseSlicingRefinable ]
+ parent: [ BaseMobAsteroid, MobBloodstream, BaseSlicingRefinable, BaseMobDestructible ]
name: goliath
description: A massive beast that uses long tentacles to ensnare its prey, threatening them is not advised under any conditions.
components:
@@ -189,7 +189,7 @@
- type: entity
id: MobHivelord
- parent: [ BaseMobAsteroid, FlyingMobBase, BaseSlicingRefinable ]
+ parent: [ BaseMobAsteroid, FlyingMobBase, BaseSlicingRefinable, BaseMobDestructible ]
name: hivelord
description: A truly alien creature, it is a mass of unknown organic material, constantly fluctuating. When attacking, pieces of it split off and attack in tandem with the original.
components:
@@ -354,7 +354,7 @@
- type: entity
id: MobBasilisk
- parent: [ BaseMobAsteroid, MobBloodstream, BaseSlicingRefinable ]
+ parent: [ BaseMobAsteroid, MobBloodstream, BaseSlicingRefinable, BaseMobDestructible ]
name: basilisk
description: A territorial beast, covered in a thick shell that absorbs energy. Its stare causes victims to freeze from the inside.
components:
diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/behonker.yml b/Resources/Prototypes/Entities/Mobs/NPCs/behonker.yml
index 429d4db091..a72c62a925 100644
--- a/Resources/Prototypes/Entities/Mobs/NPCs/behonker.yml
+++ b/Resources/Prototypes/Entities/Mobs/NPCs/behonker.yml
@@ -1,6 +1,6 @@
- type: entity
name: behonker
- parent: [ SimpleSpaceMobBase, FlyingMobBase, MobCombat, BaseSlicingRefinable ]
+ parent: [ SimpleSpaceMobBase, FlyingMobBase, MobCombat, BaseSlicingRefinable, BaseMobDestructible ]
id: BaseMobBehonker
abstract: true
description: A floating demon aspect of the honkmother.
@@ -115,6 +115,7 @@
reagents:
- ReagentId: Laughter
Quantity: 300
+
- type: entity
name: behonker
parent: BaseMobBehonker
diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/carp.yml b/Resources/Prototypes/Entities/Mobs/NPCs/carp.yml
index 23deb0eeab..e6dd5c3cf4 100644
--- a/Resources/Prototypes/Entities/Mobs/NPCs/carp.yml
+++ b/Resources/Prototypes/Entities/Mobs/NPCs/carp.yml
@@ -1,7 +1,7 @@
- type: entity
name: space carp
id: BaseMobCarp
- parent: [ SimpleSpaceMobBase, FlyingMobBase, MobCombat, BaseSlicingRefinable, MobNightVision ]
+ parent: [ SimpleSpaceMobBase, FlyingMobBase, MobCombat, BaseSlicingRefinable, MobNightVision, BaseMobDestructible ]
description: It's a space carp.
abstract: true
components:
diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/flesh.yml b/Resources/Prototypes/Entities/Mobs/NPCs/flesh.yml
index c617eab499..dbcebebdcc 100644
--- a/Resources/Prototypes/Entities/Mobs/NPCs/flesh.yml
+++ b/Resources/Prototypes/Entities/Mobs/NPCs/flesh.yml
@@ -1,5 +1,5 @@
- type: entity
- parent: [ SimpleMobBase, MobCombat, BaseSlicingRefinable ]
+ parent: [ SimpleMobBase, MobCombat, BaseSlicingRefinable, BaseMobDestructible ]
id: BaseMobFlesh
name: aberrant flesh
description: A shambling mass of flesh, animated through anomalous energy.
@@ -204,7 +204,7 @@
Blunt: 10
- type: entity
- parent: [ SimpleSpaceMobBase, MobCombat, BaseSlicingRefinable ]
+ parent: [ SimpleSpaceMobBase, MobCombat, BaseSlicingRefinable, BaseMobDestructible ]
id: BaseMobFleshSalvage #This one is immune to space!
name: aberrant flesh
suffix: "Salvage Ruleset"
diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/hellspawn.yml b/Resources/Prototypes/Entities/Mobs/NPCs/hellspawn.yml
index 9e8732bf1a..621354bc27 100644
--- a/Resources/Prototypes/Entities/Mobs/NPCs/hellspawn.yml
+++ b/Resources/Prototypes/Entities/Mobs/NPCs/hellspawn.yml
@@ -6,6 +6,7 @@
- MobBloodstream
- BaseMobAnimal
- BaseSlicingRefinable
+ - BaseMobDestructible
id: MobHellspawn
description: An unstoppable force of carnage.
components:
diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/hivebot.yml b/Resources/Prototypes/Entities/Mobs/NPCs/hivebot.yml
index 784b5dcc43..448df6ae43 100644
--- a/Resources/Prototypes/Entities/Mobs/NPCs/hivebot.yml
+++ b/Resources/Prototypes/Entities/Mobs/NPCs/hivebot.yml
@@ -1,6 +1,6 @@
# Base hivebot
- type: entity
- parent: [ BaseSimpleMob, MobCombat, MobRobotic ]
+ parent: [ BaseSimpleMob, MobCombat, MobRobotic, BaseMobDestructible ]
id: MobHivebot
name: hivebot
description: Agitating, mechanized pests.
diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/lavaland.yml b/Resources/Prototypes/Entities/Mobs/NPCs/lavaland.yml
index 65bc1c30fe..1b2902ab3c 100644
--- a/Resources/Prototypes/Entities/Mobs/NPCs/lavaland.yml
+++ b/Resources/Prototypes/Entities/Mobs/NPCs/lavaland.yml
@@ -1,7 +1,7 @@
- type: entity
name: watcher
id: MobWatcherBase
- parent: [ SimpleSpaceMobBase, FlyingMobBase, BaseSlicingRefinable ]
+ parent: [ SimpleSpaceMobBase, FlyingMobBase, BaseSlicingRefinable, BaseMobDestructible ]
abstract: true
description: It's like it's staring right through you.
components:
diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/mimic.yml b/Resources/Prototypes/Entities/Mobs/NPCs/mimic.yml
index e8325e026c..12955eae57 100644
--- a/Resources/Prototypes/Entities/Mobs/NPCs/mimic.yml
+++ b/Resources/Prototypes/Entities/Mobs/NPCs/mimic.yml
@@ -1,7 +1,7 @@
- type: entity
name: mimic
id: MobMimic
- parent: [ SimpleMobBase, MobCombat, BaseSlicingRefinable ]
+ parent: [ SimpleMobBase, MobCombat, BaseSlicingRefinable, BaseMobDestructible ]
description: Surprise. # When this gets a proper write this should use the object's actual description >:)
components:
- type: Tag
diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/miscellaneous.yml b/Resources/Prototypes/Entities/Mobs/NPCs/miscellaneous.yml
index 108464284d..321c7078a5 100644
--- a/Resources/Prototypes/Entities/Mobs/NPCs/miscellaneous.yml
+++ b/Resources/Prototypes/Entities/Mobs/NPCs/miscellaneous.yml
@@ -1,7 +1,7 @@
- type: entity
name: laser raptor
id: MobLaserRaptor
- parent: [SimpleMobBase, BaseSlicingRefinable]
+ parent: [SimpleMobBase, BaseSlicingRefinable, BaseMobDestructible]
description: From the Viking age.
components:
- type: NpcFactionMember
diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/pets.yml b/Resources/Prototypes/Entities/Mobs/NPCs/pets.yml
index 00357e73e9..5b6b8d2a2c 100644
--- a/Resources/Prototypes/Entities/Mobs/NPCs/pets.yml
+++ b/Resources/Prototypes/Entities/Mobs/NPCs/pets.yml
@@ -241,7 +241,7 @@
- type: entity
name: Bingus
- parent: [SimpleMobBase, StripableInventoryBase, BaseSlicingRefinable]
+ parent: [SimpleMobBase, StripableInventoryBase, BaseSlicingRefinable, BaseMobDestructible]
id: MobBingus
description: Bingus my beloved...
components:
@@ -298,7 +298,7 @@
- type: entity
name: McGriff
- parent: [SimpleMobBase, StripableInventoryBase, BaseSlicingRefinable]
+ parent: [SimpleMobBase, StripableInventoryBase, BaseSlicingRefinable, BaseMobDestructible]
id: MobMcGriff
description: This dog can tell something smells around here, and that something is CRIME!
components:
@@ -408,7 +408,7 @@
- type: entity
name: Walter
- parent: [SimpleMobBase, StripableInventoryBase, BaseSlicingRefinable]
+ parent: [SimpleMobBase, StripableInventoryBase, BaseSlicingRefinable, BaseMobDestructible]
id: MobWalter
description: He likes chems and treats. Walter.
components:
diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml b/Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml
index 0b1f2d1657..cc08ff8f08 100644
--- a/Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml
+++ b/Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml
@@ -1,7 +1,7 @@
- type: entity
name: rat king
id: MobRatKing
- parent: [ BaseMobRat, SimpleMobBase, MobCombat, BaseSlicingRefinable, MobNightVision ]
+ parent: [ BaseMobRat, SimpleMobBase, MobCombat, BaseSlicingRefinable, MobNightVision, BaseMobDestructible ]
description: He's da rat. He make da roolz.
components:
- type: CombatMode
diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/scurret.yml b/Resources/Prototypes/Entities/Mobs/NPCs/scurret.yml
index 0b0616e88e..f0795a1fd6 100644
--- a/Resources/Prototypes/Entities/Mobs/NPCs/scurret.yml
+++ b/Resources/Prototypes/Entities/Mobs/NPCs/scurret.yml
@@ -182,10 +182,9 @@
# feel free to hook them into random content.
- type: entity
- name: Emotional Support Scurret
- id: MobBaseEmotionalSupportScurret
- parent: MobBaseScurret
abstract: true
+ id: MobBaseEmotionalSupportScurret
+ name: Emotional Support Scurret
components:
- type: Loadout
prototypes: [ EmotionalSupportScurretGear ]
diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/slimes.yml b/Resources/Prototypes/Entities/Mobs/NPCs/slimes.yml
index 09af04aeea..074b1d0ecd 100644
--- a/Resources/Prototypes/Entities/Mobs/NPCs/slimes.yml
+++ b/Resources/Prototypes/Entities/Mobs/NPCs/slimes.yml
@@ -1,7 +1,7 @@
- type: entity
name: basic slime
id: BaseMobAdultSlimes
- parent: [ BaseMobSlimes, SimpleMobBase, MobCombat, BaseSlicingRefinable, MobNightVision ]
+ parent: [ BaseMobSlimes, SimpleMobBase, MobCombat, BaseSlicingRefinable, MobNightVision, BaseMobDestructible ]
abstract: true
description: It looks so much like jelly. I wonder what it tastes like?
components:
diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/space.yml b/Resources/Prototypes/Entities/Mobs/NPCs/space.yml
index 65e861d3de..705bbfe04e 100644
--- a/Resources/Prototypes/Entities/Mobs/NPCs/space.yml
+++ b/Resources/Prototypes/Entities/Mobs/NPCs/space.yml
@@ -74,7 +74,7 @@
- type: entity
name: space bear
id: MobBearSpace
- parent: [MobSpaceBasic, BaseSlicingRefinable]
+ parent: [MobSpaceBasic, BaseSlicingRefinable, BaseMobDestructible]
description: It looks friendly. Why don't you give it a hug?
components:
- type: Sprite
@@ -123,7 +123,7 @@
- type: entity
name: space kangaroo
id: MobKangarooSpace
- parent: [MobSpaceBasic, StripableInventoryBase, BaseSlicingRefinable]
+ parent: [MobSpaceBasic, StripableInventoryBase, BaseSlicingRefinable, BaseMobDestructible]
description: It looks friendly. Why don't you give it a hug?
components:
- type: Sprite
@@ -184,7 +184,7 @@
- type: entity
name: space spider
id: MobSpiderSpace
- parent: [MobSpaceBasic, BaseSlicingRefinable]
+ parent: [MobSpaceBasic, BaseSlicingRefinable, BaseMobDestructible]
description: It's so glowing, it looks dangerous.
components:
- type: Sprite
@@ -289,7 +289,7 @@
- type: entity
name: space cobra
id: MobCobraSpace
- parent: [MobSpaceBasic, BaseSlicingRefinable]
+ parent: [MobSpaceBasic, BaseSlicingRefinable, BaseMobDestructible]
description: Long fangs and a glowing hood, and the alluring look begs to come closer.
components:
- type: Sprite
@@ -394,7 +394,7 @@
- type: SalvageMobRestrictions
- type: entity
- parent: [ SimpleSpaceMobBase, FlyingMobBase, MobSheepBase ]
+ parent: [ SimpleSpaceMobBase, FlyingMobBase, MobSheepBase, BaseMobDestructible ]
id: MobSheepSpace
name: space sheep
description: A sheep... in space!
diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/xeno.yml b/Resources/Prototypes/Entities/Mobs/NPCs/xeno.yml
index 2a4a6a219d..b2427856f7 100644
--- a/Resources/Prototypes/Entities/Mobs/NPCs/xeno.yml
+++ b/Resources/Prototypes/Entities/Mobs/NPCs/xeno.yml
@@ -2,7 +2,7 @@
- type: entity
name: burrower
id: MobXeno
- parent: [ SimpleSpaceMobBase, MobNightVision ]
+ parent: [ SimpleSpaceMobBase, MobNightVision, BaseMobDestructible ]
description: They mostly come at night. Mostly.
components:
- type: Insulated
@@ -360,7 +360,7 @@
- type: entity
name: space adder
- parent: [SimpleSpaceMobBase, BaseSlicingRefinable]
+ parent: [SimpleSpaceMobBase, BaseSlicingRefinable, BaseMobDestructible]
id: MobPurpleSnake
description: A menacing purple snake from Kepler-283c.
components:
@@ -469,7 +469,7 @@
- type: entity
name: '"Dale"'
description: A praetorian left over from the station's initial security sweep. Has a pair of bloodied dog tags engraved with the name "Pvt. Dale" stuck in its maw.
- parent: SimpleSpaceMobBase
+ parent: [SimpleSpaceMobBase, BaseMobDestructible]
id: MobXenoLonePraetorianNoGhost
components:
- type: Insulated
diff --git a/Resources/Prototypes/Entities/Mobs/Player/changeling.yml b/Resources/Prototypes/Entities/Mobs/Player/changeling.yml
index 5709572f3f..9cacdea3db 100644
--- a/Resources/Prototypes/Entities/Mobs/Player/changeling.yml
+++ b/Resources/Prototypes/Entities/Mobs/Player/changeling.yml
@@ -15,7 +15,7 @@
ChangelingDNA: 60
- type: entity
- parent: [ SimpleSpaceMobBase, MobNightVision ]
+ parent: [ SimpleSpaceMobBase, MobNightVision, BaseMobDestructible ]
id: MobHeadSlug
name: headslug
description: A small, slug-like creature with a large, gaping maw. It's covered in a thick, slimy mucus.
diff --git a/Resources/Prototypes/Entities/Mobs/Player/dragon.yml b/Resources/Prototypes/Entities/Mobs/Player/dragon.yml
index 31b89c3c24..9a2c187c4e 100644
--- a/Resources/Prototypes/Entities/Mobs/Player/dragon.yml
+++ b/Resources/Prototypes/Entities/Mobs/Player/dragon.yml
@@ -1,5 +1,5 @@
- type: entity
- parent: [ SimpleSpaceMobBase, FlyingMobBase, BaseSlicingRefinable, MobNightVision ]
+ parent: [ SimpleSpaceMobBase, FlyingMobBase, BaseSlicingRefinable, MobNightVision, BaseMobDestructible ]
id: BaseMobDragon
suffix: ""
name: space dragon
diff --git a/Resources/Prototypes/Entities/Mobs/base.yml b/Resources/Prototypes/Entities/Mobs/base.yml
index e81adfb589..f3447bce3a 100644
--- a/Resources/Prototypes/Entities/Mobs/base.yml
+++ b/Resources/Prototypes/Entities/Mobs/base.yml
@@ -71,44 +71,6 @@
- type: Damageable
- type: Injurable
damageContainer: Biological
- - type: Destructible
- thresholds:
- - trigger:
- !type:DamageTypeTrigger
- damageType: Blunt
- damage: 400
- behaviors:
- - !type:GibBehavior { }
- - trigger:
- !type:DamageTypeTrigger
- damageType: Heat
- damage: 1500
- behaviors:
- - !type:SpawnEntitiesBehavior
- spawnInContainer: true
- spawn:
- Ash:
- min: 1
- max: 1
- - !type:BurnBodyBehavior
- - !type:PlaySoundBehavior
- sound:
- collection: MeatLaserImpact
- - trigger:
- !type:DamageTypeTrigger
- damageType: Radiation
- damage: 15
- behaviors:
- - !type:PopupBehavior
- popup: mouth-taste-metal
- popupType: LargeCaution
- targetOnly: true
- - trigger:
- !type:DamageTypeTrigger
- damageType: Radiation
- damage: 40
- behaviors:
- - !type:VomitBehavior
- type: RadiationReceiver
- type: Stamina
- type: StunVisuals
@@ -150,6 +112,50 @@
- type: GhostOnMove
mustBeDead: true
+# Used as a simple default for mob destruction
+- type: entity
+ abstract: true
+ id: BaseMobDestructible
+ components:
+ - type: Destructible
+ thresholds:
+ - trigger:
+ !type:DamageTypeTrigger
+ damageType: Blunt
+ damage: 400
+ behaviors:
+ - !type:GibBehavior { }
+ - trigger:
+ !type:DamageTypeTrigger
+ damageType: Heat
+ damage: 1500
+ behaviors:
+ - !type:SpawnEntitiesBehavior
+ spawnInContainer: true
+ spawn:
+ Ash:
+ min: 1
+ max: 1
+ - !type:BurnBodyBehavior
+ - !type:PlaySoundBehavior
+ sound:
+ collection: MeatLaserImpact
+ - trigger:
+ !type:DamageTypeTrigger
+ damageType: Radiation
+ damage: 15
+ behaviors:
+ - !type:PopupBehavior
+ popup: mouth-taste-metal
+ popupType: LargeCaution
+ targetOnly: true
+ - trigger:
+ !type:DamageTypeTrigger
+ damageType: Radiation
+ damage: 40
+ behaviors:
+ - !type:VomitBehavior
+
# Used for mobs that can enter combat mode and can attack.
- type: entity
save: false
diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_base_materials.yml b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_base_materials.yml
index a81caef76a..164d3f02ca 100644
--- a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_base_materials.yml
+++ b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_base_materials.yml
@@ -21,12 +21,6 @@
sound:
collection: GlassBreak
- !type:SpillBehavior { }
- - !type:SpawnEntitiesBehavior
- spawn:
- ShardGlass:
- min: 1
- max: 1
- transferForensics: true
- !type:DoActsBehavior
acts: [ "Destruction" ]
- type: DamageOnLand
@@ -48,9 +42,12 @@
# Porcelain (like glass but no shard)
- type: entity
abstract: true
- parent: DrinkBaseMaterialGlass
id: DrinkBaseMaterialPorcelain
components:
+ - type: Damageable
+ damageModifierSet: FlimsyGlass
+ - type: Injurable
+ damageContainer: Inorganic
- type: Destructible
thresholds:
- trigger:
@@ -63,9 +60,15 @@
- !type:SpillBehavior { }
- !type:DoActsBehavior
acts: [ "Destruction" ]
- - type: PhysicalComposition
- materialComposition:
- Glass: 10 # Trace amounts of glass I guess. Important for overriding inheritance
+ - type: DamageOnLand
+ ignoreResistances: true
+ damage:
+ types:
+ Blunt: 5 # so fragile it smashes when thrown
+ - type: DamageOtherOnHit
+ damage:
+ types:
+ Blunt: 5
# Fragile plastic
- type: entity
diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_bottles_glass.yml b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_bottles_glass.yml
index 45fb858a66..06c9932261 100644
--- a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_bottles_glass.yml
+++ b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_bottles_glass.yml
@@ -23,24 +23,18 @@
tags:
- DrinkBottle
- Trash
- - type: Destructible # Same as parent, but spawns BrokenBottle instead of ShardGlass
+ - type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 5
behaviors:
- - !type:PlaySoundBehavior
- sound:
- collection: GlassBreak
- - !type:SpillBehavior { }
- !type:SpawnEntitiesBehavior
spawn:
BrokenBottle:
min: 1
max: 1
transferForensics: true
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- type: entity
abstract: true
diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_cups.yml b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_cups.yml
index e7f4c3b56f..a71cf24e76 100644
--- a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_cups.yml
+++ b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_cups.yml
@@ -67,6 +67,18 @@
sprite: Objects/Consumable/Drinks/glass_coupe_shape.rsi
- type: SolutionContainerVisuals
inHandsMaxFillLevels: 1
+ - type: Destructible
+ thresholds:
+ - trigger:
+ !type:DamageTrigger
+ damage: 5
+ behaviors:
+ - !type:SpawnEntitiesBehavior
+ spawn:
+ ShardGlass:
+ min: 1
+ max: 1
+ transferForensics: true
- type: entity
parent: [DrinkBaseMaterialCardboard, DrinkBaseCup, DrinkBaseEmptyTrash, DrinkVisualsFill]
diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_fun.yml b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_fun.yml
index 0e8e12265d..8652dc348e 100644
--- a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_fun.yml
+++ b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_fun.yml
@@ -78,6 +78,18 @@
sprite: Objects/Consumable/Drinks/jar_what.rsi
- type: FitsInDispenser
solution: drink
+ - type: Destructible
+ thresholds:
+ - trigger:
+ !type:DamageTrigger
+ damage: 5
+ behaviors:
+ - !type:SpawnEntitiesBehavior
+ spawn:
+ ShardGlass:
+ min: 1
+ max: 1
+ transferForensics: true
# Mopwata
- type: weightedRandomFillSolution
diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_metamorphic.yml b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_metamorphic.yml
index 84f4d954a4..c0d1b3a51e 100644
--- a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_metamorphic.yml
+++ b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_metamorphic.yml
@@ -21,6 +21,18 @@
metamorphicDefaultSprite:
sprite: Objects/Consumable/Drinks/glass_clear.rsi
state: icon
+ - type: Destructible
+ thresholds:
+ - trigger:
+ !type:DamageTrigger
+ damage: 5
+ behaviors:
+ - !type:SpawnEntitiesBehavior
+ spawn:
+ ShardGlass:
+ min: 1
+ max: 1
+ transferForensics: true
- type: entity
parent: DrinkGlass
diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_special.yml b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_special.yml
index 9d23f09eb8..1c20831194 100644
--- a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_special.yml
+++ b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_special.yml
@@ -16,6 +16,18 @@
inHandsMaxFillLevels: 1
- type: FitsInDispenser
solution: drink
+ - type: Destructible
+ thresholds:
+ - trigger:
+ !type:DamageTrigger
+ damage: 5
+ behaviors:
+ - !type:SpawnEntitiesBehavior
+ spawn:
+ ShardGlass:
+ min: 0
+ max: 1
+ transferForensics: true
- type: entity
parent: [DrinkBaseMaterialMetal, SolutionLarge, DrinkBase]
@@ -206,6 +218,18 @@
solution: drink
- type: FitsInDispenser
solution: drink
+ - type: Destructible
+ thresholds:
+ - trigger:
+ !type:DamageTrigger
+ damage: 5
+ behaviors:
+ - !type:SpawnEntitiesBehavior
+ spawn:
+ ShardGlass:
+ min: 1
+ max: 1
+ transferForensics: true
- type: entity
parent: DrinkShakeBase
diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/Containers/plate.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/Containers/plate.yml
index 62a09538dc..1ee516e425 100644
--- a/Resources/Prototypes/Entities/Objects/Consumable/Food/Containers/plate.yml
+++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/Containers/plate.yml
@@ -7,23 +7,13 @@
# Large Plate
- type: entity
- name: large plate
+ abstract: true
parent: BaseItem
- id: FoodPlate
- description: A large plate, excellent for bread.
+ id: BaseFoodPlate
components:
- - type: Sprite
- sprite: Objects/Consumable/Food/plates.rsi
- state: plate
- type: Item
shape:
- 0,0,1,0
- storedOffset: 0,-6
- inhandVisuals:
- left:
- - state: plate-inhand-left
- right:
- - state: plate-inhand-right
- type: DamageOnLand
damage:
types:
@@ -46,25 +36,48 @@
collection: GlassBreak
params:
volume: -8
- - !type:SpawnEntitiesBehavior
- spawn:
- FoodPlateTrash:
- min: 1
- max: 1
- !type:DoActsBehavior
acts: [ "Destruction" ]
- type: Tag
tags:
- Trash
- - type: PhysicalComposition
- materialComposition:
- Glass: 50
- type: SpaceGarbage
- type: entity
- name: broken plate
+ parent: BaseFoodPlate
+ id: FoodPlate
+ name: large plate
+ description: A large plate, excellent for bread.
+ components:
+ - type: Sprite
+ sprite: Objects/Consumable/Food/plates.rsi
+ state: plate
+ - type: Item
+ storedOffset: 0,-6
+ inhandVisuals:
+ left:
+ - state: plate-inhand-left
+ right:
+ - state: plate-inhand-right
+ - type: Destructible
+ thresholds:
+ - trigger:
+ !type:DamageTrigger
+ damage: 5
+ behaviors:
+ - !type:SpawnEntitiesBehavior
+ spawn:
+ FoodPlateTrash:
+ min: 1
+ max: 1
+ - type: PhysicalComposition
+ materialComposition:
+ Glass: 50
+
+- type: entity
parent: BaseItem
id: FoodPlateTrash
+ name: broken plate
description: A broken plate. Useless.
components:
- type: Sprite
@@ -82,9 +95,9 @@
# Small Plate
- type: entity
- name: small plate
- parent: FoodPlate
+ parent: BaseFoodPlate
id: FoodPlateSmall
+ name: small plate
description: A small plate. Delicate.
components:
- type: Sprite
@@ -97,25 +110,17 @@
- state: plate-inhand-left
right:
- state: plate-inhand-right
-# Needs the full thing because inherting is dumb sometimes.
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 5
behaviors:
- - !type:PlaySoundBehavior
- sound:
- collection: GlassBreak
- params:
- volume: -8
- !type:SpawnEntitiesBehavior
spawn:
FoodPlateSmallTrash:
min: 1
max: 1
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- type: PhysicalComposition
materialComposition:
Glass: 25
@@ -133,7 +138,7 @@
# Plastic Plate
- type: entity
- parent: BaseItem
+ parent: BaseFoodPlate
id: FoodPlatePlastic
name: large plastic plate
description: A large blue plastic plate, excellent for a birthday cake.
@@ -142,8 +147,6 @@
sprite: Objects/Consumable/Food/plates.rsi
state: plate-plastic
- type: Item
- shape:
- - 0,0,1,0
storedOffset: 0,-6
inhandVisuals:
left:
@@ -155,7 +158,7 @@
- Trash
- type: entity
- parent: BaseItem
+ parent: BaseFoodPlate
id: FoodPlateSmallPlastic
name: small plastic plate
description: A blue plastic plate, excellent for slices of birthday cake.
@@ -164,8 +167,6 @@
sprite: Objects/Consumable/Food/plates.rsi
state: plate-small-plastic
- type: Item
- shape:
- - 0,0,1,0
storedOffset: 0,-3
inhandVisuals:
left:
@@ -179,9 +180,9 @@
# Pie Tin
- type: entity
- name: pie tin
parent: BaseItem
id: FoodPlateTin
+ name: pie tin
description: A cheap foil tin for pies.
components:
- type: Sprite
diff --git a/Resources/Prototypes/Entities/Objects/Decoration/flora.yml b/Resources/Prototypes/Entities/Objects/Decoration/flora.yml
index 266c9eca82..6d399cc644 100644
--- a/Resources/Prototypes/Entities/Objects/Decoration/flora.yml
+++ b/Resources/Prototypes/Entities/Objects/Decoration/flora.yml
@@ -391,21 +391,8 @@
thresholds:
- trigger:
!type:DamageTrigger
- damage: 25
+ damage: 50
behaviors:
- - !type:PlaySoundBehavior
- sound:
- path: /Audio/Effects/tree_fell.ogg
- params:
- volume: 5
- variation: 0.05
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- - !type:SpawnEntitiesBehavior
- spawn:
- Log:
- min: 0
- max: 1
- !type:SpawnEntitiesBehavior
spawn:
MobLuminousObject:
diff --git a/Resources/Prototypes/Entities/Objects/Decoration/mining.yml b/Resources/Prototypes/Entities/Objects/Decoration/mining.yml
index 7a04fc6fcb..01f1c13995 100644
--- a/Resources/Prototypes/Entities/Objects/Decoration/mining.yml
+++ b/Resources/Prototypes/Entities/Objects/Decoration/mining.yml
@@ -50,28 +50,36 @@
state: sign_right
- type: entity
- id: WoodenSupport
+ abstract: true
parent: BaseStructure
- name: wooden support
- description: Increases your confidence that a rock won't fall on your head.
+ id: BaseWoodenSupport
placement:
mode: SnapgridCenter
components:
- type: PlacementReplacement
key: walls
- - type: Tag
- tags:
- - Wooden
- type: Sprite
noRot: true
sprite: Objects/Decoration/mines.rsi
- state: support
- type: Damageable
damageModifierSet: Wood
- type: Injurable
damageContainer: StructuralInorganic
- type: Physics
bodyType: Static
+ - type: MeleeSound
+ soundGroups:
+ Brute:
+ path: /Audio/Effects/chop.ogg
+ params:
+ variation: 0.05
+
+- type: entity
+ parent: BaseWoodenSupport
+ id: WoodenSupport
+ name: wooden support
+ description: Increases your confidence that a rock won't fall on your head.
+ components:
- type: Fixtures
fixtures:
fix1:
@@ -83,12 +91,6 @@
layer:
- WallLayer
density: 1000
- - type: MeleeSound
- soundGroups:
- Brute:
- path: /Audio/Effects/chop.ogg
- params:
- variation: 0.05
- type: Destructible
thresholds:
- trigger:
@@ -104,12 +106,11 @@
max: 3
- type: entity
+ parent: BaseWoodenSupport
id: WoodenSupportBeam
name: wooden support beam
- parent: WoodenSupport
components:
- type: Sprite
- sprite: Objects/Decoration/mines.rsi
state: support_beams
- type: Fixtures
fixtures:
@@ -125,29 +126,16 @@
density: 1000
- type: entity
+ parent: BaseWoodenSupport
id: WoodenSupportWall
- parent: BaseStructure
name: wooden support wall
description: An old, rotten wall.
- placement:
- mode: SnapgridCenter
components:
- - type: PlacementReplacement
- key: walls
- type: Tag
tags:
- Wall
- - Wooden
- type: Sprite
- noRot: true
- sprite: Objects/Decoration/mines.rsi
state: support_wall
- - type: Damageable
- damageModifierSet: Wood
- - type: Injurable
- damageContainer: StructuralInorganic
- - type: Physics
- bodyType: Static
- type: Fixtures
fixtures:
fix1:
@@ -174,11 +162,13 @@
max: 5
- type: entity
+ parent: BaseWoodenSupport
id: WoodenSupportWallBroken
- parent: WoodenSupportWall
components:
+ - type: Tag
+ tags:
+ - Wall
- type: Sprite
- sprite: Objects/Decoration/mines.rsi
state: support_wall_broken
- type: Destructible
thresholds:
diff --git a/Resources/Prototypes/Entities/Objects/Devices/Syndicate_Gadgets/singularity_beacon.yml b/Resources/Prototypes/Entities/Objects/Devices/Syndicate_Gadgets/singularity_beacon.yml
index 5c5dcd8979..4a03e5e3fa 100644
--- a/Resources/Prototypes/Entities/Objects/Devices/Syndicate_Gadgets/singularity_beacon.yml
+++ b/Resources/Prototypes/Entities/Objects/Devices/Syndicate_Gadgets/singularity_beacon.yml
@@ -1,6 +1,6 @@
- type: entity
id: SingularityBeacon
- parent: [BaseMachinePowered, BaseSyndicateContraband]
+ parent: [BaseMachinePowered, BaseSyndicateContraband, BaseMachineDestructible]
name: singularity beacon
description: A syndicate device that attracts the singularity. If it's loose and you're seeing this, run.
components:
@@ -29,15 +29,15 @@
baseRange: 80
- type: SinguloFood
energy: 120
- - type: Destructible
- thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 50
- behaviors:
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- type: ApcPowerReceiver
powerLoad: 5000
- type: StaticPrice
price: 7500
+ - type: Destructible
+ thresholds:
+ - trigger: !type:DamageTrigger
+ damage: 175
+ behaviors:
+ - !type:PlaySoundBehavior
+ sound:
+ collection: MetalBreak
diff --git a/Resources/Prototypes/Entities/Objects/Devices/payload.yml b/Resources/Prototypes/Entities/Objects/Devices/payload.yml
index a18d533fd8..eef0b1668d 100644
--- a/Resources/Prototypes/Entities/Objects/Devices/payload.yml
+++ b/Resources/Prototypes/Entities/Objects/Devices/payload.yml
@@ -35,14 +35,6 @@
intensitySlope: 3
totalIntensity: 120 # about a ~4 tile radius
- type: ExplodeOnTrigger
- - type: Destructible
- thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 50
- behaviors:
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- type: entity
name: chemical payload
diff --git a/Resources/Prototypes/Entities/Objects/Devices/station_map.yml b/Resources/Prototypes/Entities/Objects/Devices/station_map.yml
index acd8ad873e..704e7ffc0f 100644
--- a/Resources/Prototypes/Entities/Objects/Devices/station_map.yml
+++ b/Resources/Prototypes/Entities/Objects/Devices/station_map.yml
@@ -1,5 +1,5 @@
- type: entity
- parent: BaseItem
+ parent: [ BaseItem, BaseItemDestructible ]
id: BaseHandheldStationMap
name: station map
description: Displays a readout of the current station.
@@ -19,14 +19,6 @@
- type: Damageable
- type: Injurable
damageContainer: Inorganic
- - type: Destructible
- thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 100
- behaviors:
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- type: UserInterface
interfaces:
enum.StationMapUiKey.Key:
diff --git a/Resources/Prototypes/Entities/Objects/Devices/wristwatch.yml b/Resources/Prototypes/Entities/Objects/Devices/wristwatch.yml
index 621b086084..173f83f561 100644
--- a/Resources/Prototypes/Entities/Objects/Devices/wristwatch.yml
+++ b/Resources/Prototypes/Entities/Objects/Devices/wristwatch.yml
@@ -1,6 +1,6 @@
- type: entity
id: Wristwatch
- parent: BaseItem
+ parent: [ BaseItem, BaseItemDestructible ]
name: wristwatch
description: A cheap watch for telling time. How much did you waste playing Space Station 14?
components:
@@ -26,16 +26,10 @@
price: 50
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 100
- behaviors:
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- trigger:
!type:DamageGroupTrigger
damageGroup: Brute
- damage: 25
+ damage: 5
behaviors:
- !type:DoActsBehavior
acts: [ "Breakage" ]
diff --git a/Resources/Prototypes/Entities/Objects/Materials/Sheets/glass.yml b/Resources/Prototypes/Entities/Objects/Materials/Sheets/glass.yml
index 1f87047b2d..2e7e186826 100644
--- a/Resources/Prototypes/Entities/Objects/Materials/Sheets/glass.yml
+++ b/Resources/Prototypes/Entities/Objects/Materials/Sheets/glass.yml
@@ -11,24 +11,6 @@
sprite: Objects/Materials/Sheets/glass.rsi
- type: Damageable
damageModifierSet: Glass
- - type: Destructible
- thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 50
- behaviors:
- - !type:PlaySoundBehavior
- sound:
- collection: GlassBreak
- params:
- volume: -4
- - !type:SpawnEntitiesBehavior
- spawn:
- ShardGlass:
- min: 1
- max: 1
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- type: entity
parent: SheetGlassBase
@@ -63,6 +45,22 @@
reagents:
- ReagentId: Silicon
Quantity: 10
+ - type: Destructible
+ thresholds:
+ - trigger:
+ !type:DamageTrigger
+ damage: 50
+ behaviors:
+ - !type:PlaySoundBehavior
+ sound:
+ collection: GlassBreak
+ params:
+ volume: -4
+ - !type:SpawnEntitiesBehavior
+ spawn:
+ ShardGlass:
+ min: 1
+ max: 1
- type: entity
parent: SheetGlass
@@ -132,8 +130,6 @@
ShardGlassReinforced:
min: 1
max: 1
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- type: Solution
solution:
maxVol: 15
@@ -200,8 +196,6 @@
ShardGlassPlasma:
min: 1
max: 1
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- type: Solution
solution:
maxVol: 20
@@ -318,8 +312,6 @@
ShardGlassUranium:
min: 1
max: 1
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- type: Solution
solution:
maxVol: 20
@@ -435,8 +427,6 @@
ShardGlassClockwork:
min: 1
max: 1
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- type: Solution
solution:
maxVol: 20
diff --git a/Resources/Prototypes/Entities/Objects/Materials/base.yml b/Resources/Prototypes/Entities/Objects/Materials/base.yml
index 0d49a037b5..7fd3e93ed8 100644
--- a/Resources/Prototypes/Entities/Objects/Materials/base.yml
+++ b/Resources/Prototypes/Entities/Objects/Materials/base.yml
@@ -1,6 +1,6 @@
- type: entity
abstract: true
- parent: [SolutionCryo, SolutionCompositeNormalStackable, BaseItem]
+ parent: [SolutionCryo, SolutionCompositeNormalStackable, BaseItem, BaseItemDestructible]
id: MaterialBase
description: A raw material.
components:
@@ -14,17 +14,6 @@
- type: Tag
tags:
- RawMaterial
- - type: Damageable
- - type: Injurable
- damageContainer: Inorganic
- - type: Destructible
- thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 100
- behaviors:
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- type: Extractable
grindableSolutionName: composite
diff --git a/Resources/Prototypes/Entities/Objects/Materials/ingots.yml b/Resources/Prototypes/Entities/Objects/Materials/ingots.yml
index feb79ff44b..d64f69686c 100644
--- a/Resources/Prototypes/Entities/Objects/Materials/ingots.yml
+++ b/Resources/Prototypes/Entities/Objects/Materials/ingots.yml
@@ -14,16 +14,6 @@
- ConstructionMaterial
- type: Damageable
damageModifierSet: Metallic
- - type: Injurable
- damageContainer: Inorganic
- - type: Destructible
- thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 500
- behaviors:
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- type: entity
parent: IngotBase
diff --git a/Resources/Prototypes/Entities/Objects/Materials/shards.yml b/Resources/Prototypes/Entities/Objects/Materials/shards.yml
index bab92dbad4..33f2c0ab16 100644
--- a/Resources/Prototypes/Entities/Objects/Materials/shards.yml
+++ b/Resources/Prototypes/Entities/Objects/Materials/shards.yml
@@ -56,16 +56,6 @@
- type: SpaceGarbage
- type: Damageable
damageModifierSet: Glass
- - type: Injurable
- damageContainer: Inorganic
- - type: Destructible
- thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 100
- behaviors:
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- type: StepTrigger
intersectRatio: 0.2
- type: PreventableStepTrigger
diff --git a/Resources/Prototypes/Entities/Objects/Misc/candles.yml b/Resources/Prototypes/Entities/Objects/Misc/candles.yml
index 5710d7f11f..37cd942645 100644
--- a/Resources/Prototypes/Entities/Objects/Misc/candles.yml
+++ b/Resources/Prototypes/Entities/Objects/Misc/candles.yml
@@ -1,6 +1,6 @@
- type: entity
name: candle
- parent: BaseItem
+ parent: [ BaseItem, BaseItemDestructible ]
id: Candle
description: A thin wick threaded through fat.
components:
@@ -52,15 +52,6 @@
shader: unshaded
- type: Damageable
damageModifierSet: Wood
- - type: Injurable
- - type: Destructible
- thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 100
- behaviors:
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- type: entity
name: red candle
@@ -168,15 +159,6 @@
normalState: fire-small
- type: Flammable
firestacksOnIgnite: 2.0
- - type: Destructible
- thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 60
- behaviors:
- - !type:SpawnEntitiesBehavior
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- type: entity
name: small red candle
diff --git a/Resources/Prototypes/Entities/Objects/Misc/desk_bell.yml b/Resources/Prototypes/Entities/Objects/Misc/desk_bell.yml
index 6437b383e2..53c6a5aa64 100644
--- a/Resources/Prototypes/Entities/Objects/Misc/desk_bell.yml
+++ b/Resources/Prototypes/Entities/Objects/Misc/desk_bell.yml
@@ -1,8 +1,7 @@
- type: entity
- parent: BaseItem
- id: EmptyDeskBell
- name: unfinished desk bell
- description: An empty bell missing its noise maker.
+ abstract: true
+ parent: [ BaseItem, BaseItemDestructible ]
+ id: BaseDeskBell
components:
- type: Sprite
sprite: Objects/Misc/desk_bell.rsi
@@ -10,25 +9,15 @@
- type: Construction
graph: &BellGraph BellGraph
node: start
- - type: Damageable
- - type: Injurable
- damageContainer: Inorganic
- type: Destructible
thresholds:
- - trigger: &DamageTrigger20
+ - trigger: &DamageTrigger50
!type:DamageTrigger
- damage: 20
+ damage: 50
behaviors:
- !type:PlaySoundBehavior
sound:
collection: MetalBreak
- - !type:SpawnEntitiesBehavior
- spawn:
- SheetSteel1:
- min: 0
- max: 1
- - !type:DoActsBehavior
- acts: ["Destruction"]
- type: MeleeWeapon
wideAnimationRotation: 180
soundHit: &BellSound
@@ -49,7 +38,23 @@
sound: *BellSound
- type: entity
- parent: EmptyDeskBell
+ parent: BaseDeskBell
+ id: EmptyDeskBell
+ name: unfinished desk bell
+ description: An empty bell missing its noise maker.
+ components:
+ - type: Destructible
+ thresholds:
+ - trigger: *DamageTrigger50
+ behaviors:
+ - !type:SpawnEntitiesBehavior
+ spawn:
+ SheetSteel1:
+ min: 0
+ max: 1
+
+- type: entity
+ parent: BaseDeskBell
id: DeskBell
name: desk bell
description: The cornerstone of any customer service job. You feel an unending urge to ring it.
@@ -64,11 +69,8 @@
node: deskBellNode
- type: Destructible
thresholds:
- - trigger: *DamageTrigger20
+ - trigger: *DamageTrigger50
behaviors:
- - !type:PlaySoundBehavior
- sound:
- collection: MetalBreak
- !type:SpawnEntitiesBehavior
spawn:
PartRodMetal1:
@@ -76,8 +78,6 @@
max: 1
- !type:ChangeConstructionNodeBehavior
node: start
- - !type:DoActsBehavior
- acts: ["Destruction"]
- type: InteractionPopup
successChance: 1
onActivate: true
@@ -91,7 +91,7 @@
sound: *BellSound
- type: entity
- parent: EmptyDeskBell
+ parent: BaseDeskBell
id: DeskBuzzer
name: desk buzzer
description: An advanced customer service tool. You feel an unending urge to buzz it.
@@ -105,11 +105,8 @@
node: deskBuzzerNode
- type: Destructible
thresholds:
- - trigger: *DamageTrigger20
+ - trigger: *DamageTrigger50
behaviors:
- - !type:PlaySoundBehavior
- sound:
- collection: MetalBreak
- !type:SpawnEntitiesBehavior
spawn:
CableApcStack1:
@@ -117,8 +114,6 @@
max: 2
- !type:ChangeConstructionNodeBehavior
node: start
- - !type:DoActsBehavior
- acts: ["Destruction"]
- type: StationAiWhitelist
- type: InteractionPopup
successChance: 1
@@ -144,7 +139,7 @@
sound: *BuzzerSound
- type: entity
- parent: EmptyDeskBell
+ parent: BaseDeskBell
id: DeskHorn
name: desk horn
description: The cornerstone of any clown business. You feel an unending urge to honk it.
@@ -158,11 +153,8 @@
node: deskHornNode
- type: Destructible
thresholds:
- - trigger: *DamageTrigger20
+ - trigger: *DamageTrigger50
behaviors:
- - !type:PlaySoundBehavior
- sound:
- collection: MetalBreak
- !type:SpawnEntitiesBehavior
spawn:
BikeHorn:
@@ -170,8 +162,6 @@
max: 1
- !type:ChangeConstructionNodeBehavior
node: start
- - !type:DoActsBehavior
- acts: ["Destruction"]
- type: InteractionPopup
successChance: 1
onActivate: true
diff --git a/Resources/Prototypes/Entities/Objects/Power/lights.yml b/Resources/Prototypes/Entities/Objects/Power/lights.yml
index 85a7398473..ebe53da8cf 100644
--- a/Resources/Prototypes/Entities/Objects/Power/lights.yml
+++ b/Resources/Prototypes/Entities/Objects/Power/lights.yml
@@ -1,7 +1,7 @@
- type: entity
- parent: BaseItem
- id: BaseLightbulb
abstract: true
+ parent: BaseItem
+ id: BaseReplacementLight
components:
- type: MeleeSound
soundGroups:
@@ -10,8 +10,8 @@
- type: Sprite
sprite: Objects/Power/light_bulb.rsi
layers:
- - map: [ enum.LightBulbVisualLayers.Base ]
- state: normal
+ - map: [ enum.LightBulbVisualLayers.Base ]
+ state: normal
- type: LightBulb
- type: Damageable
- type: Injurable
@@ -34,10 +34,10 @@
sound:
collection: GlassBreak
params:
- volume: -8
+ volume: -4
- !type:DoActsBehavior
acts: [ "Breakage" ]
- - trigger:
+ - trigger: &DamageTrigger10
!type:DamageTrigger
damage: 10
behaviors:
@@ -45,12 +45,7 @@
sound:
collection: GlassBreak
params:
- volume: -8
- - !type:SpawnEntitiesBehavior
- spawn:
- ShardGlass:
- min: 1
- max: 1
+ volume: -4
- !type:DoActsBehavior
acts: [ "Destruction" ]
- type: Appearance
@@ -66,9 +61,24 @@
- id: SheetGlass1
- type: entity
- parent: BaseLightbulb
- id: BaseLightTube
abstract: true
+ parent: BaseReplacementLight
+ id: BaseLightbulb
+ components:
+ - type: Destructible
+ thresholds:
+ - trigger: *DamageTrigger10
+ behaviors:
+ - !type:SpawnEntitiesBehavior
+ spawn:
+ LightBulbBroken:
+ min: 1
+ max: 1
+
+- type: entity
+ abstract: true
+ parent: BaseReplacementLight
+ id: BaseLightTube
components:
- type: Sprite
sprite: Objects/Power/light_tube.rsi
@@ -76,29 +86,13 @@
bulb: Tube
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 5
+ - trigger: *DamageTrigger10
behaviors:
- - !type:PlaySoundBehavior
- sound:
- collection: GlassBreak
- - !type:DoActsBehavior
- acts: [ "Breakage" ]
- - trigger:
- !type:DamageTrigger
- damage: 10
- behaviors:
- - !type:PlaySoundBehavior
- sound:
- collection: GlassBreak
- !type:SpawnEntitiesBehavior
spawn:
- ShardGlass:
+ LightTubeBroken:
min: 1
max: 1
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
# Lighting color values gathered from
# https://andi-siess.de/rgb-to-color-temperature/
diff --git a/Resources/Prototypes/Entities/Objects/Power/powersink.yml b/Resources/Prototypes/Entities/Objects/Power/powersink.yml
index 5b273ce150..f89af1986b 100644
--- a/Resources/Prototypes/Entities/Objects/Power/powersink.yml
+++ b/Resources/Prototypes/Entities/Objects/Power/powersink.yml
@@ -1,6 +1,6 @@
- type: entity
id: PowerSink
- parent: [BaseMachine, BaseSyndicateContraband]
+ parent: [BaseMachine, BaseSyndicateContraband, BaseMachineDestructible]
name: power sink
description: Drains immense amounts of electricity from the grid.
components:
@@ -30,14 +30,6 @@
- MachineMask
layer:
- MachineLayer
- - type: Destructible
- thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 25
- behaviors:
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- type: PowerSink
- type: Battery
# Very important:
@@ -58,3 +50,11 @@
location: location-powersink
- type: StaticPrice
price: 3000
+ - type: Destructible
+ thresholds:
+ - trigger: !type:DamageTrigger
+ damage: 175
+ behaviors:
+ - !type:PlaySoundBehavior
+ sound:
+ collection: MetalBreak
diff --git a/Resources/Prototypes/Entities/Objects/Shields/shields.yml b/Resources/Prototypes/Entities/Objects/Shields/shields.yml
index c4f2182641..0496b67c61 100644
--- a/Resources/Prototypes/Entities/Objects/Shields/shields.yml
+++ b/Resources/Prototypes/Entities/Objects/Shields/shields.yml
@@ -24,28 +24,33 @@
damageContainer: Shield
- type: ExaminableDamage
messages: ShieldMessages
- - type: Destructible
- thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 125 #This is probably enough damage before it breaks
- behaviors:
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- - !type:PlaySoundBehavior
- sound:
- collection: MetalBreak
- - !type:SpawnEntitiesBehavior
- spawn:
- SheetSteel:
- min: 2
- max: 2
- SheetGlass:
- min: 2
- max: 2
- type: StaticPrice
price: 100
+- type: entity
+ abstract: true
+ id: BaseShieldDestructible
+ components:
+ - type: Destructible
+ thresholds:
+ - trigger:
+ !type:DamageTrigger
+ damage: 125 #This is probably enough damage before it breaks
+ behaviors:
+ - !type:DoActsBehavior
+ acts: [ "Destruction" ]
+ - !type:PlaySoundBehavior
+ sound:
+ collection: MetalBreak
+ - !type:SpawnEntitiesBehavior
+ spawn:
+ SheetSteel:
+ min: 2
+ max: 2
+ SheetGlass:
+ min: 2
+ max: 2
+
- type: entity
name: base repairable shield
parent: BaseShield
@@ -68,7 +73,7 @@
- type: entity
name: riot shield
- parent: [ BaseRepairableShield, BaseSecurityContraband ]
+ parent: [ BaseRepairableShield, BaseShieldDestructible, BaseSecurityContraband ]
id: RiotShield
description: A large tower shield. Good for controlling crowds.
components:
@@ -84,7 +89,7 @@
- type: entity
name: laser shield
- parent: [ BaseRepairableShield, BaseSecurityContraband ]
+ parent: [ BaseRepairableShield, BaseShieldDestructible, BaseSecurityContraband ]
id: RiotLaserShield
description: A shield built for withstanding lasers, but not much else.
components:
@@ -102,7 +107,7 @@
- type: entity
name: ballistic shield
- parent: [ BaseRepairableShield, BaseSecurityContraband ]
+ parent: [ BaseRepairableShield, BaseShieldDestructible, BaseSecurityContraband ]
id: RiotBulletShield
description: A shield built for protecting against ballistics, but not much else.
components:
@@ -268,7 +273,7 @@
- type: entity
name: clockwork shield
- parent: BaseRepairableShield
+ parent: [ BaseRepairableShield, BaseShieldDestructible ]
id: ClockworkShield
description: Ratvar oyrffrf lbh jvgu uvf cebgrpgvba.
components:
@@ -425,7 +430,7 @@
- type: entity
name: telescopic shield
- parent: BaseRepairableShield
+ parent: [ BaseRepairableShield, BaseShieldDestructible ]
id: TelescopicShield
description: An advanced riot shield made of lightweight materials that collapses for easy storage.
components:
diff --git a/Resources/Prototypes/Entities/Objects/Specific/Chemistry/chemistry-vials.yml b/Resources/Prototypes/Entities/Objects/Specific/Chemistry/chemistry-vials.yml
index ed58e56aa3..329ff6b0ce 100644
--- a/Resources/Prototypes/Entities/Objects/Specific/Chemistry/chemistry-vials.yml
+++ b/Resources/Prototypes/Entities/Objects/Specific/Chemistry/chemistry-vials.yml
@@ -19,6 +19,11 @@
tags:
- Trash
- CentrifugeCompatible # unique feature of vials
+ - type: DamageOnLand
+ ignoreResistances: true
+ damage:
+ types:
+ Blunt: 3 # can be thrown once without breaking
## Entities
@@ -43,20 +48,14 @@
thresholds:
- trigger:
!type:DamageTrigger
- damage: 15 # stronger than base
+ damage: 5
behaviors:
- - &SoundGlassBreak !type:PlaySoundBehavior
- sound:
- collection: GlassBreak
- - !type:SpillBehavior { }
- !type:SpawnEntitiesBehavior
spawn:
- ShardGlass: # less glass than base
+ ShardGlass:
min: 0
max: 1
transferForensics: true
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- type: entity
parent: [SolutionVeryTiny, BaseChemistryVial]
@@ -78,16 +77,6 @@
- type: PhysicalComposition
materialComposition:
Glass: 10
- - type: Destructible
- thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 5 # smaller so weaker
- behaviors: # remove glass shard spawn
- - *SoundGlassBreak
- - !type:SpillBehavior { }
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
## Reagent filled
diff --git a/Resources/Prototypes/Entities/Objects/Specific/Security/target.yml b/Resources/Prototypes/Entities/Objects/Specific/Security/target.yml
index 15feb76cf5..6ad7c91870 100644
--- a/Resources/Prototypes/Entities/Objects/Specific/Security/target.yml
+++ b/Resources/Prototypes/Entities/Objects/Specific/Security/target.yml
@@ -1,7 +1,7 @@
- type: entity
- id: BaseTarget
- parent: BaseStructureDynamic
abstract: true
+ parent: BaseStructureDynamic
+ id: BaseTargetIndestructible
components:
- type: Sprite
sprite: Objects/Specific/Security/target.rsi
@@ -27,6 +27,12 @@
- type: Damageable
- type: Injurable
damageContainer: Inorganic
+
+- type: entity
+ abstract: true
+ parent: BaseTargetIndestructible
+ id: BaseTarget
+ components:
- type: Destructible
thresholds:
- trigger:
@@ -44,10 +50,11 @@
- !type:DoActsBehavior
acts: [ "Destruction" ]
+
- type: entity
- name: human target
- id: TargetHuman
parent: BaseTarget
+ id: TargetHuman
+ name: human target
description: A shooting target. This one is a human.
components:
- type: Sprite
@@ -55,9 +62,9 @@
state: target_h
- type: entity
- name: syndicate target
- id: TargetSyndicate
parent: BaseTarget
+ id: TargetSyndicate
+ name: syndicate target
description: A shooting target. This one is a syndicate agent.
components:
- type: Sprite
@@ -65,9 +72,9 @@
state: target_s
- type: entity
- name: clown target
- id: TargetClown
parent: BaseTarget
+ id: TargetClown
+ name: clown target
description: A shooting target. This one is a clown.
components:
- type: Sprite
@@ -76,27 +83,11 @@
# put it on a salvage or something
- type: entity
- name: strange target
+ parent: BaseTargetIndestructible
id: TargetStrange
- parent: BaseTarget
+ name: strange target
description: A shooting target. You aren't quite sure what this one is, but it seems to be extra robust.
components:
- type: Sprite
sprite: Objects/Specific/Security/target.rsi
state: target_f
- - type: Destructible
- thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 2000
- behaviors:
- - !type:SpawnEntitiesBehavior
- spawn:
- SheetSteel:
- min: 10
- max: 10
- - !type:PlaySoundBehavior
- sound:
- collection: MetalBreak
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
diff --git a/Resources/Prototypes/Entities/Objects/Specific/Service/vending_machine_restock.yml b/Resources/Prototypes/Entities/Objects/Specific/Service/vending_machine_restock.yml
index 4d54bfb236..4884ae457c 100644
--- a/Resources/Prototypes/Entities/Objects/Specific/Service/vending_machine_restock.yml
+++ b/Resources/Prototypes/Entities/Objects/Specific/Service/vending_machine_restock.yml
@@ -1,7 +1,7 @@
- type: entity
- parent: BaseItem
- id: BaseVendingMachineRestock
abstract: true
+ parent: [ BaseItem, BaseItemDestructible ]
+ id: BaseVendingMachineRestock
name: vending machine restock box
description: A box for restocking vending machines with corporate goodies.
components:
@@ -24,20 +24,16 @@
size: Normal
- type: Damageable
damageModifierSet: Metallic
- - type: Injurable
- damageContainer: Inorganic
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
- damage: 20
+ damage: 50
behaviors:
- !type:PlaySoundBehavior
sound:
collection: MetalBreak
- !type:DumpRestockInventory
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- type: entity
parent: BaseVendingMachineRestock
diff --git a/Resources/Prototypes/Entities/Objects/Tools/cable_coils.yml b/Resources/Prototypes/Entities/Objects/Tools/cable_coils.yml
index 76d48ed4e3..03bd2a5e03 100644
--- a/Resources/Prototypes/Entities/Objects/Tools/cable_coils.yml
+++ b/Resources/Prototypes/Entities/Objects/Tools/cable_coils.yml
@@ -4,7 +4,7 @@
- type: entity
abstract: true
- parent: [SolutionCompositeSmallStackable, BaseItem]
+ parent: [SolutionCompositeSmallStackable, BaseItem, BaseItemDestructible]
id: CableStack
name: cable stack
suffix: Full
@@ -36,18 +36,8 @@
- Power
- type: Damageable
damageModifierSet: Metallic
- - type: Injurable
- damageContainer: Inorganic
- type: Extractable
grindableSolutionName: composite
- - type: Destructible
- thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 50
- behaviors:
- - !type:DoActsBehavior
- acts: ["Destruction"]
- type: entity
id: CableHVStack
diff --git a/Resources/Prototypes/Entities/Objects/Tools/fulton.yml b/Resources/Prototypes/Entities/Objects/Tools/fulton.yml
index 336ee6b8a9..764a82183c 100644
--- a/Resources/Prototypes/Entities/Objects/Tools/fulton.yml
+++ b/Resources/Prototypes/Entities/Objects/Tools/fulton.yml
@@ -50,10 +50,10 @@
map: ["foldedLayer"]
- type: entity
+ parent: [ BaseItem, BaseItemDestructible ]
id: Fulton
- parent: BaseItem
- suffix: Full
name: fulton
+ suffix: Full
description: Used to extract containers, items, or forcibly recruit people into your base of operations.
components:
- type: Fulton
@@ -71,17 +71,6 @@
drawdepth: SmallObjects
sprite: Objects/Tools/fulton.rsi
state: extraction_pack
- - type: Damageable
- - type: Injurable
- damageContainer: Inorganic
- - type: Destructible
- thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 100
- behaviors:
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- type: entity
id: Fulton1
diff --git a/Resources/Prototypes/Entities/Objects/Tools/toolbox.yml b/Resources/Prototypes/Entities/Objects/Tools/toolbox.yml
index 5dd20c9c34..20dcde15a6 100644
--- a/Resources/Prototypes/Entities/Objects/Tools/toolbox.yml
+++ b/Resources/Prototypes/Entities/Objects/Tools/toolbox.yml
@@ -92,6 +92,7 @@
- !type:DoActsBehavior
acts: [ "Destruction" ]
- !type:SpawnEntitiesBehavior # todo this is not a good way to be doing this. Should probably use a construction graph
+ offset: 0
spawn:
WeaponTurretSyndicateDisposable:
min: 1
diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Bombs/cord.yml b/Resources/Prototypes/Entities/Objects/Weapons/Bombs/cord.yml
index 27862d7a4f..dae2f9da1a 100644
--- a/Resources/Prototypes/Entities/Objects/Weapons/Bombs/cord.yml
+++ b/Resources/Prototypes/Entities/Objects/Weapons/Bombs/cord.yml
@@ -35,7 +35,6 @@
Quantity: 3
- ReagentId: Charcoal
Quantity: 2
- - type: Damageable
- type: Injurable
damageContainer: StructuralInorganic
- type: Destructible # should have the same general explosive behavior as in cables.yml & detonator.yml
@@ -48,12 +47,8 @@
- !type:DoActsBehavior
acts: ["Destruction"]
- !type:ExplodeBehavior
- - trigger:
- !type:DamageTrigger # the idea here is to prevent you from just beating it until it explodes.
- damage: 50
- behaviors:
- - !type:DoActsBehavior
- acts: ["Destruction"]
+ # the 50 damage destruction node is inherited from the parent
+ # idea here is to prevent you from just beating it until it explodes.
- type: Explosive
explosionType: DemolitionCharge
totalIntensity: 60
diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Bombs/detonator.yml b/Resources/Prototypes/Entities/Objects/Weapons/Bombs/detonator.yml
index b59459bd10..17ad36f4c4 100644
--- a/Resources/Prototypes/Entities/Objects/Weapons/Bombs/detonator.yml
+++ b/Resources/Prototypes/Entities/Objects/Weapons/Bombs/detonator.yml
@@ -1,5 +1,5 @@
- type: entity
- parent: [ BaseItem, BaseSecurityContraband ]
+ parent: [ BaseItem, BaseItemDestructible, BaseSecurityContraband ]
id: EmptyDetonator
name: detonator cap
description: A detonator cap. Requires a trigger and wire.
@@ -15,7 +15,6 @@
- type: Construction
graph: DetonatorGraph
node: emptyDetonator
- - type: Damageable
- type: Injurable
damageContainer: StructuralInorganic
- type: Destructible
@@ -28,12 +27,8 @@
- !type:TriggerBehavior
- !type:DoActsBehavior
acts: [ "Destruction" ]
- - trigger:
- !type:DamageTrigger # the idea here is to prevent you from just beating it until it explodes.
- damage: 50
- behaviors:
- - !type:DoActsBehavior
- acts: ["Destruction"]
+ # the 50 damage destruction node is inherited from the parent
+ # idea here is to prevent you from just beating it until it explodes.
- type: Appearance
- type: GenericVisualizer
visuals:
diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Bombs/firebomb.yml b/Resources/Prototypes/Entities/Objects/Weapons/Bombs/firebomb.yml
index ce9943c7f6..9d9eb78072 100644
--- a/Resources/Prototypes/Entities/Objects/Weapons/Bombs/firebomb.yml
+++ b/Resources/Prototypes/Entities/Objects/Weapons/Bombs/firebomb.yml
@@ -2,7 +2,7 @@
# ideally it would be dynamic and work by actually sparking the solution but that doesnt exist yet :(
# with that you could make napalm ied instead of welding fuel with no additional complexity
- type: entity
- parent: [ BaseItem, BaseMinorContraband ]
+ parent: [ BaseItem, BaseItemDestructible, BaseMinorContraband ]
id: FireBomb
name: fire bomb
description: A weak, improvised incendiary device.
@@ -41,17 +41,12 @@
- type: AnimationPlayer
- type: TimerTriggerVisuals
unprimedSprite: base
- - type: Damageable
- - type: Injurable
- damageContainer: Inorganic
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 50
behaviors:
- - !type:DoActsBehavior
- acts: ["Destruction"]
- !type:ExplodeBehavior
- type: Construction
graph: FireBomb
diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Bombs/plastic.yml b/Resources/Prototypes/Entities/Objects/Weapons/Bombs/plastic.yml
index 10fc8c3167..c2d13900bb 100644
--- a/Resources/Prototypes/Entities/Objects/Weapons/Bombs/plastic.yml
+++ b/Resources/Prototypes/Entities/Objects/Weapons/Bombs/plastic.yml
@@ -41,22 +41,17 @@
- type: entity
abstract: true
- parent: [ BaseItem, BasePlasticExplosiveTrigger ]
+ parent: [ BaseItem, BaseItemDestructible, BasePlasticExplosiveTrigger ]
id: BasePlasticExplosive
components:
- type: Item
size: Small
- - type: Damageable
- - type: Injurable
- damageContainer: Inorganic
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 50
behaviors:
- - !type:DoActsBehavior
- acts: ["Destruction"]
- !type:ExplodeBehavior
- type: Explosive # Powerful explosion in a very small radius. Doesn't break underplating.
explosionType: DemolitionCharge
diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/base_cartridge.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/base_cartridge.yml
index b5abc8abb9..35becc49b8 100644
--- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/base_cartridge.yml
+++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/base_cartridge.yml
@@ -1,6 +1,6 @@
- type: entity
abstract: true
- parent: BaseItem
+ parent: [ BaseItem, BaseItemDestructible ]
id: BaseCartridge
components:
- type: Sprite
@@ -16,18 +16,6 @@
- ItemMask
restitution: 0.3 # fite me
friction: 0.2
- - type: Damageable
- damageModifierSet: StrongMetallic # We only want explosions breaking them (for the most part)
- - type: Injurable
- damageContainer: StructuralInorganic
- - type: Destructible
- thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 75
- behaviors:
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- type: Tag
tags:
- Cartridge
diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Turrets/turrets_ballistic.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Turrets/turrets_ballistic.yml
index 916e40d65e..f176281890 100644
--- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Turrets/turrets_ballistic.yml
+++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Turrets/turrets_ballistic.yml
@@ -8,7 +8,7 @@
- Syndicate
- type: entity
- parent: BaseWeaponBallisticTurret
+ parent: BaseWeaponBallisticTurretIndestructible
id: WeaponTurretSyndicateDisposable
name: disposable ballistic turret
suffix: Syndicate, Disposable
@@ -16,6 +16,9 @@
- type: NpcFactionMember
factions:
- Syndicate
+ - type: Damageable
+ - type: Injurable
+ damageContainer: StructuralInorganic
- type: Destructible
thresholds:
- trigger:
@@ -78,7 +81,7 @@
- AllHostile
- type: entity
- parent: BaseWeaponBallisticTurret
+ parent: BaseWeaponBallisticTurretIndestructible
id: WeaponTurretXeno
name: xeno turret
suffix: Xeno
diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Turrets/turrets_base.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Turrets/turrets_base.yml
index 1c331c1421..4379ed8c15 100644
--- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Turrets/turrets_base.yml
+++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Turrets/turrets_base.yml
@@ -1,10 +1,9 @@
- type: entity
- parent: BaseStructure
- id: BaseWeaponTurret
- name: turret
abstract: true
+ parent: BaseStructure
+ id: BaseWeaponTurretIndestructible
+ name: turret
components:
- - type: Clickable
- type: InteractionOutline
- type: Actions
- type: Fixtures
@@ -32,26 +31,6 @@
path: /Audio/Effects/double_beep.ogg
- type: CombatMode
toggleMouseRotator: false
- - type: Damageable
- - type: Injurable
- damageContainer: Inorganic
- - type: Destructible
- thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 300
- # TODO: Construction graph
- behaviors:
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- - !type:PlaySoundBehavior
- sound:
- collection: MetalGlassBreak
- - !type:SpawnEntitiesBehavior
- spawn:
- SheetSteel1:
- min: 3
- max: 5
- type: HTN
rootTask:
task: TurretCompound
@@ -70,11 +49,41 @@
context: "human"
- type: entity
- parent: BaseWeaponTurret
- id: BaseWeaponBallisticTurret
- description: A ballistic machine gun auto-turret.
- name: ballistic turret
abstract: true
+ id: BaseTurretDestructible
+ components:
+ - type: Damageable
+ - type: Injurable
+ damageContainer: StructuralInorganic
+ - type: Destructible
+ thresholds:
+ - trigger:
+ !type:DamageTrigger
+ damage: 300
+ # TODO: Construction graph
+ behaviors:
+ - !type:DoActsBehavior
+ acts: [ "Destruction" ]
+ - !type:PlaySoundBehavior
+ sound:
+ collection: MetalGlassBreak
+ - !type:SpawnEntitiesBehavior
+ spawn:
+ SheetSteel1:
+ min: 3
+ max: 5
+
+- type: entity
+ abstract: true
+ parent: [ BaseWeaponTurretIndestructible, BaseTurretDestructible ]
+ id: BaseWeaponTurret
+
+- type: entity
+ abstract: true
+ parent: BaseWeaponTurretIndestructible
+ id: BaseWeaponBallisticTurretIndestructible
+ name: ballistic turret
+ description: A ballistic machine gun auto-turret.
components:
- type: ContainerContainer
containers:
@@ -91,11 +100,16 @@
capacity: 500
- type: entity
- parent: BaseWeaponTurret
- id: BaseWeaponEnergyTurret
+ abstract: true
+ parent: [ BaseWeaponBallisticTurretIndestructible, BaseTurretDestructible ]
+ id: BaseWeaponBallisticTurret
+
+- type: entity
+ abstract: true
+ parent: BaseWeaponTurretIndestructible
+ id: BaseWeaponEnergyTurretIndestructible
name: laser turret
description: An auto-turret armed with a heavy laser. Its weapon will recharge while connected to an active power grid.
- abstract: true
components:
- type: Sprite
sprite: Objects/Weapons/Guns/Turrets/sentry_turret.rsi
@@ -135,3 +149,8 @@
task: EnergyTurretCompound
- type: StaticPrice
price: 200
+
+- type: entity
+ abstract: true
+ parent: [ BaseWeaponEnergyTurretIndestructible, BaseTurretDestructible ]
+ id: BaseWeaponEnergyTurret
diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Turrets/turrets_energy.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Turrets/turrets_energy.yml
index da88cccc8c..0977796d86 100644
--- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Turrets/turrets_energy.yml
+++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Turrets/turrets_energy.yml
@@ -1,6 +1,6 @@
- type: entity
abstract: true
- parent: [BaseWeaponEnergyTurret, ConstructibleMachine]
+ parent: [BaseWeaponEnergyTurretIndestructible, ConstructibleMachine]
id: WeaponEnergyTurretStationBase
name: sentry turret
description: A high-tech autonomous weapons system designed to keep unauthorized personnel out of sensitive areas.
@@ -87,6 +87,8 @@
deployedDamageModifierSetId: FlimsyMetallic
- type: Damageable
damageModifierSet: Metallic
+ - type: Injurable
+ damageContainer: StructuralInorganic
- type: Repairable
doAfterDelay: 10
allowSelfRepair: false
diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/spear.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/spear.yml
index 69375a2e0d..4a28221fd0 100644
--- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/spear.yml
+++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/spear.yml
@@ -189,18 +189,11 @@
!type:DamageTrigger
damage: 20
behaviors:
- - !type:PlaySoundBehavior
- sound:
- collection: GlassBreak
- params:
- volume: -4
- !type:SpawnEntitiesBehavior
spawn:
MaterialBones1:
min: 1
max: 2
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- type: entity
name: sharkminnow tooth spear
diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Throwable/base_grenades.yml b/Resources/Prototypes/Entities/Objects/Weapons/Throwable/base_grenades.yml
index 5ba248eb05..6c84c46495 100644
--- a/Resources/Prototypes/Entities/Objects/Weapons/Throwable/base_grenades.yml
+++ b/Resources/Prototypes/Entities/Objects/Weapons/Throwable/base_grenades.yml
@@ -1,6 +1,6 @@
-- type: entity # Starts fuse after taking 10 damage.
- parent: BaseItem
+- type: entity
abstract: true
+ parent: BaseItem
id: GrenadeBase
components:
- type: Sprite
@@ -34,8 +34,8 @@
friction: 0.2
- type: entity # Starts fuse after taking 10 damage.
- parent: GrenadeBase
abstract: true
+ parent: GrenadeBase
id: TimerGrenadeBase
components:
- type: TriggerOnUse
@@ -55,25 +55,15 @@
Primed: { state: primed }
Unprimed: { state: icon }
-- type: entity # Starts fuse after taking 10 damage.
- parent: GrenadeBase
+- type: entity
abstract: true
+ parent: [ GrenadeBase, VolatileGrenadeBase ]
id: ImpactGrenadeBase
components:
- type: TriggerOnLand
- type: LandAtCursor
- - type: Destructible
- thresholds:
- - trigger: # immediately explode
- !type:DamageTrigger
- damage: 45
- behaviors:
- - !type:TriggerBehavior
- keyOut: timer
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
-- type: entity # Starts fuse after taking 10 damage, instantly detonates/activates after taking 45 damage.
+- type: entity # Instantly detonates/activates after taking 45 damage.
abstract: true
id: VolatileGrenadeBase
components:
@@ -87,13 +77,8 @@
keyOut: timer
- !type:DoActsBehavior
acts: ["Destruction"]
- - trigger:
- !type:DamageTrigger
- damage: 10
- behaviors:
- - !type:TimerStartBehavior
-- type: entity # Starts fuse after taking 10 damage, is destroyed without activating/detonating after taking 45 damage.
+- type: entity # Is destroyed without activating/detonating after taking 45 damage.
abstract: true
id: FragileGrenadeBase
components:
@@ -105,8 +90,3 @@
behaviors:
- !type:DoActsBehavior
acts: ["Destruction"]
- - trigger:
- !type:DamageTrigger
- damage: 10
- behaviors:
- - !type:TimerStartBehavior
diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Throwable/grenades.yml b/Resources/Prototypes/Entities/Objects/Weapons/Throwable/grenades.yml
index 711cc27d21..72c7ed11f3 100644
--- a/Resources/Prototypes/Entities/Objects/Weapons/Throwable/grenades.yml
+++ b/Resources/Prototypes/Entities/Objects/Weapons/Throwable/grenades.yml
@@ -284,9 +284,9 @@
price: 1000
- type: entity
+ parent: [ VolatileGrenadeBase, TimerGrenadeBase ]
name: the nuclear option
description: Please don't throw it, think of the children.
- parent: TimerGrenadeBase
id: NuclearGrenade
components:
- type: Sprite
@@ -301,26 +301,16 @@
totalIntensity: 20000 # ~15 tile radius.
intensitySlope: 5
maxIntensity: 50
- - type: Destructible
- thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 50
- behaviors:
- - !type:TriggerBehavior
- keyOut: timer # immediately explode
- - !type:DoActsBehavior
- acts: ["Destruction"]
- type: Appearance
- type: TimerTriggerVisuals
primingSound:
path: /Audio/Effects/countdown.ogg
- type: entity
+ parent: [ BaseItem, BaseItemDestructible ]
+ id: ModularGrenade
name: modular grenade
description: A grenade casing. Requires a trigger and a payload.
- parent: BaseItem
- id: ModularGrenade
components:
- type: Sprite
sprite: Objects/Weapons/Grenades/modular.rsi
@@ -336,9 +326,6 @@
- type: Construction
graph: ModularGrenadeGraph
node: emptyCase
- - type: Damageable
- - type: Injurable
- damageContainer: Inorganic
- type: Destructible
thresholds:
- trigger:
@@ -346,8 +333,6 @@
damage: 50
behaviors:
- !type:TriggerBehavior
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- type: Appearance
- type: GenericVisualizer
visuals:
diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Throwable/scattering_grenades.yml b/Resources/Prototypes/Entities/Objects/Weapons/Throwable/scattering_grenades.yml
index e0d5a5f23f..435186f2f9 100644
--- a/Resources/Prototypes/Entities/Objects/Weapons/Throwable/scattering_grenades.yml
+++ b/Resources/Prototypes/Entities/Objects/Weapons/Throwable/scattering_grenades.yml
@@ -93,7 +93,7 @@
price: 2500
- type: entity
- parent: [FragileGrenadeBase, ScatteringGrenadeBase, ImpactGrenadeBase, BaseSyndicateContraband]
+ parent: [ScatteringGrenadeBase, ImpactGrenadeBase, BaseSyndicateContraband]
id: ClusterBananaPeel
name: cluster banana peel
description: Splits into 6 explosive banana peels after throwing, guaranteed fun!
diff --git a/Resources/Prototypes/Entities/Objects/Weapons/security.yml b/Resources/Prototypes/Entities/Objects/Weapons/security.yml
index fe8f5655af..c562dd427f 100644
--- a/Resources/Prototypes/Entities/Objects/Weapons/security.yml
+++ b/Resources/Prototypes/Entities/Objects/Weapons/security.yml
@@ -187,7 +187,7 @@
- type: entity
name: portable flasher
- parent: [BaseMachine, BaseSecurityContraband]
+ parent: [BaseMachine, BaseSecurityContraband, BaseMachineDestructible]
id: PortableFlasher
description: An ultrabright flashbulb with a proximity trigger, useful for making an area security-only.
components:
@@ -231,3 +231,11 @@
guides:
- Security
- Antagonists
+ - type: Destructible
+ thresholds:
+ - trigger: !type:DamageTrigger
+ damage: 175
+ behaviors:
+ - !type:PlaySoundBehavior
+ sound:
+ collection: MetalGlassBreak
diff --git a/Resources/Prototypes/Entities/Objects/base_item.yml b/Resources/Prototypes/Entities/Objects/base_item.yml
index a83d50842f..31a5364c4b 100644
--- a/Resources/Prototypes/Entities/Objects/base_item.yml
+++ b/Resources/Prototypes/Entities/Objects/base_item.yml
@@ -1,7 +1,7 @@
- type: entity
- name: "item"
- id: BaseItem
abstract: true
+ id: BaseItem
+ name: "item"
components:
- type: Item
size: Small
@@ -47,6 +47,22 @@
- type: Rotatable
increment: 30
+- type: entity
+ abstract: true
+ id: BaseItemDestructible # Should be replaced by a variety of destruction bases, possibly combined with drink_base_materials.yml
+ components:
+ - type: Damageable
+ - type: Injurable
+ damageContainer: Inorganic
+ - type: Destructible
+ thresholds:
+ - trigger:
+ !type:DamageTrigger
+ damage: 50
+ behaviors:
+ - !type:DoActsBehavior
+ acts: ["Destruction"]
+
- type: entity
name: "storage item"
id: BaseStorageItem
diff --git a/Resources/Prototypes/Entities/Structures/Decoration/crystals.yml b/Resources/Prototypes/Entities/Structures/Decoration/crystals.yml
index b9e2e4a238..c178137d40 100644
--- a/Resources/Prototypes/Entities/Structures/Decoration/crystals.yml
+++ b/Resources/Prototypes/Entities/Structures/Decoration/crystals.yml
@@ -1,14 +1,13 @@
- type: entity
- id: CrystalGreen
+ abstract: true
parent: BaseStructure
- suffix: green
+ id: BaseCrystalStalagmite
name: crystal
description: A crystaline solid.
components:
- type: Sprite
sprite: Structures/Decoration/crystal.rsi
state: crystal_grey
- color: "#52ff39"
noRot: true
- type: Reflect
reflectProb: 0.5
@@ -36,219 +35,156 @@
- type: PointLight
radius: 3
energy: 3
- color: "#52ff39"
- type: Damageable
damageModifierSet: Glass
- type: Injurable
damageContainer: StructuralInorganic
- type: Destructible
thresholds:
- - trigger:
+ - trigger: &DamageTrigger20
!type:DamageTrigger
damage: 20
behaviors:
- !type:PlaySoundBehavior
sound:
collection: GlassBreak
- - !type:SpawnEntitiesBehavior
- spawn:
- ShardCrystalGreen:
- min: 1
- max: 1
- !type:DoActsBehavior
acts: [ "Destruction" ]
- type: entity
+ parent: BaseCrystalStalagmite
+ id: CrystalGreen
+ suffix: green
+ components:
+ - type: Sprite
+ color: "#52ff39"
+ - type: PointLight
+ color: "#52ff39"
+ - type: Destructible
+ thresholds:
+ - trigger: *DamageTrigger20
+ behaviors:
+ - !type:SpawnEntitiesBehavior
+ spawn:
+ ShardCrystalGreen: &Min1Max2
+ min: 1
+ max: 2
+
+- type: entity
+ parent: BaseCrystalStalagmite
id: CrystalPink
- parent: CrystalGreen
suffix: pink
components:
- type: Sprite
color: "#ff66cc"
- type: PointLight
- radius: 3
- energy: 3
color: "#ff66cc"
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 20
+ - trigger: *DamageTrigger20
behaviors:
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- - !type:PlaySoundBehavior
- sound:
- collection: GlassBreak
- !type:SpawnEntitiesBehavior
spawn:
- ShardCrystalPink:
- min: 1
- max: 1
+ ShardCrystalPink: *Min1Max2
- type: entity
+ parent: BaseCrystalStalagmite
id: CrystalGrey
- parent: CrystalGreen
suffix: red
components:
- type: Sprite
- state: crystal_grey
color: "#fb4747"
- type: PointLight
color: "#fb4747"
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 20
+ - trigger: *DamageTrigger20
behaviors:
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- - !type:PlaySoundBehavior
- sound:
- collection: GlassBreak
- !type:SpawnEntitiesBehavior
spawn:
- ShardCrystalRed:
- min: 1
- max: 2
+ ShardCrystalRed: *Min1Max2
- type: entity
+ parent: BaseCrystalStalagmite
id: CrystalOrange
- parent: CrystalGreen
suffix: orange
components:
- type: Sprite
color: "#ff8227"
- type: PointLight
- radius: 3
- energy: 3
color: "#ff8227"
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 20
+ - trigger: *DamageTrigger20
behaviors:
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- - !type:PlaySoundBehavior
- sound:
- collection: GlassBreak
- !type:SpawnEntitiesBehavior
spawn:
- ShardCrystalOrange:
- min: 1
- max: 2
+ ShardCrystalOrange: *Min1Max2
- type: entity
+ parent: BaseCrystalStalagmite
id: CrystalBlack
- parent: CrystalGreen
suffix: black
components:
- type: Sprite
color: "#363636"
- type: PointLight
- radius: 3
- energy: 3
color: "#363636"
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 20
+ - trigger: *DamageTrigger20
behaviors:
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- - !type:PlaySoundBehavior
- sound:
- collection: GlassBreak
- !type:SpawnEntitiesBehavior
spawn:
- ShardCrystalBlack:
- min: 1
- max: 2
+ ShardCrystalBlack: *Min1Max2
- type: entity
+ parent: BaseCrystalStalagmite
id: CrystalBlue
- parent: CrystalGreen
suffix: blue
components:
- type: Sprite
color: "#39a1ff"
- type: PointLight
- radius: 3
- energy: 3
color: "#39a1ff"
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 20
+ - trigger: *DamageTrigger20
behaviors:
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- - !type:PlaySoundBehavior
- sound:
- collection: GlassBreak
- !type:SpawnEntitiesBehavior
spawn:
- ShardCrystalBlue:
- min: 1
- max: 2
+ ShardCrystalBlue: *Min1Max2
- type: entity
+ parent: BaseCrystalStalagmite
id: CrystalYellow
- parent: CrystalGreen
suffix: yellow
components:
- type: Sprite
color: "#ffde46"
- type: PointLight
- radius: 3
- energy: 3
color: "#ffde46"
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 20
+ - trigger: *DamageTrigger20
behaviors:
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- - !type:PlaySoundBehavior
- sound:
- collection: GlassBreak
- !type:SpawnEntitiesBehavior
spawn:
- ShardCrystalYellow:
- min: 1
- max: 2
+ ShardCrystalYellow: *Min1Max2
- type: entity
+ parent: BaseCrystalStalagmite
id: CrystalCyan
- parent: CrystalGreen
suffix: cyan
components:
- type: Sprite
color: "#47f8ff"
- type: PointLight
- radius: 3
- energy: 3
color: "#47f8ff"
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 20
+ - trigger: *DamageTrigger20
behaviors:
- - !type:PlaySoundBehavior
- sound:
- collection: GlassBreak
- !type:SpawnEntitiesBehavior
spawn:
- ShardCrystalCyan:
- min: 1
- max: 2
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
+ ShardCrystalCyan: *Min1Max2
diff --git a/Resources/Prototypes/Entities/Structures/Dispensers/base_structuredispensers.yml b/Resources/Prototypes/Entities/Structures/Dispensers/base_structuredispensers.yml
index 4f8e90646a..3bcf8bfd60 100644
--- a/Resources/Prototypes/Entities/Structures/Dispensers/base_structuredispensers.yml
+++ b/Resources/Prototypes/Entities/Structures/Dispensers/base_structuredispensers.yml
@@ -1,7 +1,7 @@
- type: entity
abstract: true
id: ReagentDispenserBase
- parent: SmallConstructibleMachine
+ parent: [ SmallConstructibleMachine, BaseSmallConstructibleMachineDestructible ]
placement:
mode: SnapgridCenter
components:
@@ -44,10 +44,8 @@
thresholds:
- trigger:
!type:DamageTrigger
- damage: 200
+ damage: 100
behaviors:
- - !type:DoActsBehavior
- acts: ["Destruction"]
- !type:PlaySoundBehavior
sound:
collection: MetalGlassBreak
diff --git a/Resources/Prototypes/Entities/Structures/Dispensers/chem.yml b/Resources/Prototypes/Entities/Structures/Dispensers/chem.yml
index 676b0481ba..7b9d55c01d 100644
--- a/Resources/Prototypes/Entities/Structures/Dispensers/chem.yml
+++ b/Resources/Prototypes/Entities/Structures/Dispensers/chem.yml
@@ -16,19 +16,6 @@
- ChemDispensable
- type: ApcPowerReceiver
- type: ExtensionCableReceiver
- - type: Destructible
- thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 100
- behaviors:
- - !type:PlaySoundBehavior
- sound:
- collection: MetalGlassBreak
- - !type:ChangeConstructionNodeBehavior
- node: machineFrame
- - !type:DoActsBehavior
- acts: ["Destruction"]
- type: Machine
board: ChemDispenserMachineCircuitboard
- type: GuideHelp
diff --git a/Resources/Prototypes/Entities/Structures/Doors/MaterialDoors/material_doors.yml b/Resources/Prototypes/Entities/Structures/Doors/MaterialDoors/material_doors.yml
index 716d6980df..bf9388b05e 100644
--- a/Resources/Prototypes/Entities/Structures/Doors/MaterialDoors/material_doors.yml
+++ b/Resources/Prototypes/Entities/Structures/Doors/MaterialDoors/material_doors.yml
@@ -52,14 +52,6 @@
cost: 6
delay: 6
fx: EffectRCDDeconstruct6
- - type: Destructible
- thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 300
- behaviors:
- - !type:DoActsBehavior
- acts: ["Destruction"]
- type: Occluder
- type: BlockWeather
diff --git a/Resources/Prototypes/Entities/Structures/Doors/Windoors/assembly.yml b/Resources/Prototypes/Entities/Structures/Doors/Windoors/assembly.yml
index 2e820f8056..d74866e329 100644
--- a/Resources/Prototypes/Entities/Structures/Doors/Windoors/assembly.yml
+++ b/Resources/Prototypes/Entities/Structures/Doors/Windoors/assembly.yml
@@ -1,14 +1,13 @@
- type: entity
- id: WindoorAssembly
+ abstract: true
+ parent: BaseStructure
+ id: BaseWindoorAssembly
name: windoor assembly
description: It opens, it closes, and you can see through it!
- parent: BaseStructure
+ placement:
+ mode: SnapgridCenter
components:
- type: InteractionOutline
- - type: Sprite
- sprite: Structures/Doors/Windoors/windoor.rsi
- layers:
- - state: assembly
- type: Physics
- type: Fixtures
fixtures:
@@ -33,28 +32,39 @@
fx: EffectRCDDeconstruct8
- type: Destructible
thresholds:
- - trigger:
+ - trigger: &DamageTrigger300
!type:DamageTrigger
damage: 300
behaviors:
- !type:DoActsBehavior
acts: ["Destruction"]
+
+- type: entity
+ parent: BaseWindoorAssembly
+ id: WindoorAssembly
+ components:
+ - type: Sprite
+ sprite: Structures/Doors/Windoors/windoor.rsi
+ layers:
+ - state: assembly
+ - type: Destructible
+ thresholds:
+ - trigger: *DamageTrigger300
+ behaviors:
- !type:SpawnEntitiesBehavior
spawn:
- SheetSteel1:
+ SheetSteel1: &BaseWindoorDrop
min: 1
max: 3
- type: Construction
graph: Windoor
node: assembly
- placement:
- mode: SnapgridCenter
- type: entity
+ parent: BaseWindoorAssembly
id: WindoorAssemblySecure
name: secure windoor assembly
description: It opens, it closes, and you can see through it! This one looks tough.
- parent: WindoorAssembly
components:
- type: Sprite
sprite: Structures/Doors/Windoors/windoor.rsi
@@ -63,26 +73,20 @@
- state: assembly
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 600
+ - trigger: *DamageTrigger300
behaviors:
- - !type:DoActsBehavior
- acts: ["Destruction"]
- !type:SpawnEntitiesBehavior
spawn:
- SheetPlasteel1:
- min: 1
- max: 2
+ SheetPlasteel1: *BaseWindoorDrop
- type: Construction
graph: Windoor
node: assemblySecure
- type: entity
+ parent: BaseWindoorAssembly
id: WindoorAssemblyClockwork
name: clockwork windoor assembly
description: It opens, it closes, and you can see through it! This one looks tough.
- parent: WindoorAssembly
components:
- type: Sprite
sprite: Structures/Doors/Windoors/clockwork_windoor.rsi
@@ -90,27 +94,21 @@
- state: open
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 450
+ - trigger: *DamageTrigger300
behaviors:
- - !type:DoActsBehavior
- acts: ["Destruction"]
- !type:SpawnEntitiesBehavior
spawn:
- SheetBrass1:
- min: 1
- max: 2
+ SheetBrass1: *BaseWindoorDrop
- type: Construction
graph: Windoor
node: assemblyClockwork
#plasma windoor assemblies
- type: entity
+ parent: BaseWindoorAssembly
id: WindoorAssemblyPlasma
name: plasma windoor assembly
description: It opens, it closes, and you can see through it! This one looks purp-, no, pink. Wait...
- parent: WindoorAssembly
components:
- type: Sprite
sprite: Structures/Doors/Windoors/plasma.rsi
@@ -118,29 +116,21 @@
- state: assembly
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 360
+ - trigger: *DamageTrigger300
behaviors:
- - !type:DoActsBehavior
- acts: ["Destruction"]
- !type:SpawnEntitiesBehavior
spawn:
- SheetSteel1:
- min: 1
- max: 2
- SheetPGlass1:
- min: 1
- max: 3
+ SheetSteel1: *BaseWindoorDrop
+ SheetPGlass1: *BaseWindoorDrop
- type: Construction
graph: Windoor
node: pglass
- type: entity
+ parent: BaseWindoorAssembly
id: WindoorAssemblySecurePlasma
name: secure plasma windoor assembly
description: It opens, it closes, and you can see through it! This one looks strong and pin-, no, purple. Hold on...
- parent: WindoorAssembly
components:
- type: Sprite
sprite: Structures/Doors/Windoors/plasma.rsi
@@ -149,30 +139,24 @@
- state: assembly
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 1200
+ - trigger: *DamageTrigger300
behaviors:
- !type:DoActsBehavior
acts: ["Destruction"]
- !type:SpawnEntitiesBehavior
spawn:
- SheetPlasteel1:
- min: 1
- max: 2
- SheetRPGlass1:
- min: 1
- max: 3
+ SheetPlasteel1: *BaseWindoorDrop
+ SheetRPGlass1: *BaseWindoorDrop
- type: Construction
graph: Windoor
node: pglassSecure
#uranium windoor assemblies
- type: entity
+ parent: BaseWindoorAssembly
id: WindoorAssemblyUranium
name: uranium windoor assembly
description: It opens, it closes, and you can see through it! This one looks sickly green...
- parent: WindoorAssembly
components:
- type: Sprite
sprite: Structures/Doors/Windoors/uranium.rsi
@@ -180,29 +164,21 @@
- state: assembly
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 300
+ - trigger: *DamageTrigger300
behaviors:
- - !type:DoActsBehavior
- acts: ["Destruction"]
- !type:SpawnEntitiesBehavior
spawn:
- SheetSteel1:
- min: 1
- max: 2
- SheetUGlass1:
- min: 1
- max: 3
+ SheetSteel1: *BaseWindoorDrop
+ SheetUGlass1: *BaseWindoorDrop
- type: Construction
graph: Windoor
node: uglass
- type: entity
+ parent: BaseWindoorAssembly
id: WindoorAssemblySecureUranium
name: secure uranium windoor assembly
description: It opens, it closes, and you can see through it! This one looks strong and radioactive-lime-green!
- parent: WindoorAssembly
components:
- type: Sprite
sprite: Structures/Doors/Windoors/uranium.rsi
@@ -211,20 +187,12 @@
- state: assembly
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 1200
+ - trigger: *DamageTrigger300
behaviors:
- - !type:DoActsBehavior
- acts: ["Destruction"]
- !type:SpawnEntitiesBehavior
spawn:
- SheetPlasteel1:
- min: 1
- max: 2
- SheetRUGlass1:
- min: 1
- max: 3
+ SheetPlasteel1: *BaseWindoorDrop
+ SheetRUGlass1: *BaseWindoorDrop
- type: Construction
graph: Windoor
node: uglassSecure
diff --git a/Resources/Prototypes/Entities/Structures/Doors/Windoors/base_structurewindoors.yml b/Resources/Prototypes/Entities/Structures/Doors/Windoors/base_structurewindoors.yml
index e7c81e98b0..eed3cd6f15 100644
--- a/Resources/Prototypes/Entities/Structures/Doors/Windoors/base_structurewindoors.yml
+++ b/Resources/Prototypes/Entities/Structures/Doors/Windoors/base_structurewindoors.yml
@@ -1,8 +1,7 @@
-#Normal windoors
- type: entity
- id: BaseWindoor
- parent: [BaseDeltaPressureGlassQuarter, BaseStructure]
abstract: true
+ parent: BaseStructure
+ id: BaseWindoorGeneric
placement:
mode: SnapgridCenter
components:
@@ -16,7 +15,6 @@
collection: GlassSmash
- type: InteractionOutline
- type: StationAiWhitelist
- - type: Physics
- type: Fixtures
fixtures:
fix1:
@@ -29,7 +27,6 @@
layer:
- GlassAirlockLayer
- type: Sprite
- sprite: Structures/Doors/Windoors/windoor.rsi
layers:
- state: closed
map: ["enum.DoorVisualLayers.Base"]
@@ -72,11 +69,11 @@
range: 200
- type: DeviceLinkSink
ports:
- - Open
- - Close
- - Toggle
- - AutoClose
- - DoorBolt
+ - Open
+ - Close
+ - Toggle
+ - AutoClose
+ - DoorBolt
- type: DeviceLinkSource
ports:
- DoorStatus
@@ -92,22 +89,6 @@
cost: 8
delay: 8
fx: EffectRCDDeconstruct8
- - type: Destructible
- thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 200
- behaviors:
- - !type:SpawnEntitiesBehavior
- spawn:
- ShardGlass:
- min: 1
- max: 2
- SheetSteel1:
- min: 2
- max: 4
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- type: ContainerFill
containers:
board: [ DoorElectronics ]
@@ -161,27 +142,23 @@
- type: Airtight
noAirWhenFullyAirBlocked: false
airBlockedDirection:
- - South
+ - South
- type: Construction
graph: Windoor
- node: windoor
containers:
- board
- - type: StaticPrice
- price: 150
- type: PryUnpowered
- type: Tag
tags:
- - DoorRemoteWhitelist
- # This tag is used by door remotes to allow or not a door remote to normally be able to interact with a door
+ - DoorRemoteWhitelist
+ # This tag is used by door remotes to allow or not a door remote to normally be able to interact with a door
- type: entity
- id: BaseSecureWindoor
- parent: [BaseDeltaPressureReinforcedGlassQuarter, BaseWindoor]
abstract: true
+ parent: BaseWindoorGeneric
+ id: BaseSecureWindoorGeneric
components:
- type: Sprite
- sprite: Structures/Doors/Windoors/windoor.rsi
layers:
- state: secure_underlay
- state: closed
@@ -217,6 +194,43 @@
visible: false
- type: Damageable
damageModifierSet: RGlass
+ - type: StaticPrice
+ price: 150
+
+#Normal windoors
+- type: entity
+ abstract: true
+ parent: [ BaseDeltaPressureGlassQuarter, BaseWindoorGeneric ]
+ id: BaseWindoor
+ components:
+ - type: Sprite
+ sprite: Structures/Doors/Windoors/windoor.rsi
+ - type: Destructible
+ thresholds:
+ - trigger:
+ !type:DamageTrigger
+ damage: 200
+ behaviors:
+ - !type:SpawnEntitiesBehavior
+ spawn:
+ ShardGlass:
+ min: 1
+ max: 2
+ SheetSteel1:
+ min: 2
+ max: 4
+ - !type:DoActsBehavior
+ acts: [ "Destruction" ]
+ - type: Construction
+ node: windoor
+
+- type: entity
+ abstract: true
+ parent: [ BaseDeltaPressureReinforcedGlassQuarter, BaseSecureWindoorGeneric ]
+ id: BaseSecureWindoor
+ components:
+ - type: Sprite
+ sprite: Structures/Doors/Windoors/windoor.rsi
- type: Destructible
thresholds:
- trigger:
@@ -248,44 +262,12 @@
#Plasma Windoors
- type: entity
- id: BasePlasmaWindoor
- parent: [BaseDeltaPressurePlasmaQuarter, BaseWindoor]
abstract: true
+ parent: [BaseDeltaPressurePlasmaQuarter, BaseWindoorGeneric]
+ id: BasePlasmaWindoor
components:
- type: Sprite
sprite: Structures/Doors/Windoors/plasma.rsi
- layers:
- - state: closed
- map: [ "enum.DoorVisualLayers.Base" ]
- - state: closed_unlit
- shader: unshaded
- map: [ "enum.DoorVisualLayers.BaseUnlit" ]
- visible: false
- - state: welded
- map: [ "enum.WeldableLayers.BaseWelded" ]
- - state: bolted_unlit
- shader: unshaded
- map: [ "enum.DoorVisualLayers.BaseBolted" ]
- - state: emergency_unlit
- shader: unshaded
- map: [ "enum.DoorVisualLayers.BaseEmergencyAccess" ]
- - state: panel_open
- map: [ "enum.WiresVisualLayers.MaintenancePanel" ]
- visible: false
- - state: electrified_ai
- sprite: Interface/Misc/ai_hud.rsi
- shader: unshaded
- visible: false
- map: [ "enum.ElectrifiedLayers.HUD" ]
- - state: electrified
- sprite: Effects/electricity.rsi
- shader: unshaded
- visible: false
- map: [ "enum.ElectrifiedLayers.Sparks" ]
- - state: sparks
- map: ["enum.DoorVisualLayers.BaseEmagging"]
- shader: unshaded
- visible: false
- type: Destructible
thresholds:
- trigger:
@@ -311,45 +293,12 @@
resistance: 2
- type: entity
- id: BaseSecurePlasmaWindoor
- parent: [BaseDeltaPressureReinforcedPlasmaQuarter, BaseSecureWindoor]
abstract: true
+ parent: [BaseDeltaPressureReinforcedPlasmaQuarter, BaseSecureWindoorGeneric]
+ id: BaseSecurePlasmaWindoor
components:
- type: Sprite
sprite: Structures/Doors/Windoors/plasma.rsi
- layers:
- - state: secure_underlay
- - state: closed
- map: [ "enum.DoorVisualLayers.Base" ]
- - state: closed_unlit
- shader: unshaded
- map: [ "enum.DoorVisualLayers.BaseUnlit" ]
- visible: false
- - state: welded
- map: [ "enum.WeldableLayers.BaseWelded" ]
- - state: bolted_unlit
- shader: unshaded
- map: [ "enum.DoorVisualLayers.BaseBolted" ]
- - state: emergency_unlit
- shader: unshaded
- map: [ "enum.DoorVisualLayers.BaseEmergencyAccess" ]
- - state: panel_open
- map: [ "enum.WiresVisualLayers.MaintenancePanel" ]
- visible: false
- - state: electrified_ai
- sprite: Interface/Misc/ai_hud.rsi
- shader: unshaded
- visible: false
- map: [ "enum.ElectrifiedLayers.HUD" ]
- - state: electrified
- sprite: Effects/electricity.rsi
- shader: unshaded
- visible: false
- map: [ "enum.ElectrifiedLayers.Sparks" ]
- - state: sparks
- map: ["enum.DoorVisualLayers.BaseEmagging"]
- shader: unshaded
- visible: false
- type: Destructible
thresholds:
- trigger:
@@ -383,44 +332,12 @@
#Uranium Windoors
- type: entity
- id: BaseUraniumWindoor
- parent: [BaseDeltaPressurePlasmaQuarter, BaseWindoor]
abstract: true
+ parent: [BaseDeltaPressurePlasmaQuarter, BaseWindoorGeneric]
+ id: BaseUraniumWindoor
components:
- type: Sprite
sprite: Structures/Doors/Windoors/uranium.rsi
- layers:
- - state: closed
- map: [ "enum.DoorVisualLayers.Base" ]
- - state: closed_unlit
- shader: unshaded
- map: [ "enum.DoorVisualLayers.BaseUnlit" ]
- visible: false
- - state: welded
- map: [ "enum.WeldableLayers.BaseWelded" ]
- - state: bolted_unlit
- shader: unshaded
- map: [ "enum.DoorVisualLayers.BaseBolted" ]
- - state: emergency_unlit
- shader: unshaded
- map: [ "enum.DoorVisualLayers.BaseEmergencyAccess" ]
- - state: panel_open
- map: [ "enum.WiresVisualLayers.MaintenancePanel" ]
- visible: false
- - state: electrified_ai
- sprite: Interface/Misc/ai_hud.rsi
- shader: unshaded
- visible: false
- map: [ "enum.ElectrifiedLayers.HUD" ]
- - state: electrified
- sprite: Effects/electricity.rsi
- shader: unshaded
- visible: false
- map: [ "enum.ElectrifiedLayers.Sparks" ]
- - state: sparks
- map: ["enum.DoorVisualLayers.BaseEmagging"]
- shader: unshaded
- visible: false
- type: Destructible
thresholds:
- trigger:
@@ -446,45 +363,12 @@
resistance: 3
- type: entity
- id: BaseSecureUraniumWindoor
- parent: [BaseDeltaPressureReinforcedPlasmaQuarter, BaseSecureWindoor]
abstract: true
+ parent: [BaseDeltaPressureReinforcedPlasmaQuarter, BaseSecureWindoorGeneric]
+ id: BaseSecureUraniumWindoor
components:
- type: Sprite
sprite: Structures/Doors/Windoors/uranium.rsi
- layers:
- - state: secure_underlay
- - state: closed
- map: [ "enum.DoorVisualLayers.Base" ]
- - state: closed_unlit
- shader: unshaded
- map: [ "enum.DoorVisualLayers.BaseUnlit" ]
- visible: false
- - state: welded
- map: [ "enum.WeldableLayers.BaseWelded" ]
- - state: bolted_unlit
- shader: unshaded
- map: [ "enum.DoorVisualLayers.BaseBolted" ]
- - state: emergency_unlit
- shader: unshaded
- map: [ "enum.DoorVisualLayers.BaseEmergencyAccess" ]
- - state: panel_open
- map: [ "enum.WiresVisualLayers.MaintenancePanel" ]
- visible: false
- - state: electrified_ai
- sprite: Interface/Misc/ai_hud.rsi
- shader: unshaded
- visible: false
- map: [ "enum.ElectrifiedLayers.HUD" ]
- - state: electrified
- sprite: Effects/electricity.rsi
- shader: unshaded
- visible: false
- map: [ "enum.ElectrifiedLayers.Sparks" ]
- - state: sparks
- map: ["enum.DoorVisualLayers.BaseEmagging"]
- shader: unshaded
- visible: false
- type: Destructible
thresholds:
- trigger:
diff --git a/Resources/Prototypes/Entities/Structures/Doors/Windoors/clockwork.yml b/Resources/Prototypes/Entities/Structures/Doors/Windoors/clockwork.yml
index e0a726e9c4..24a42d6ed4 100644
--- a/Resources/Prototypes/Entities/Structures/Doors/Windoors/clockwork.yml
+++ b/Resources/Prototypes/Entities/Structures/Doors/Windoors/clockwork.yml
@@ -1,8 +1,8 @@
- type: entity
+ abstract: true
+ parent: BaseWindoorGeneric
id: BaseClockworkWindoor
name: clockwork windoor
- parent: BaseWindoor
- abstract: true
components:
- type: Sprite
sprite: Structures/Doors/Windoors/clockwork_windoor.rsi
diff --git a/Resources/Prototypes/Entities/Structures/Furniture/Tables/base_structuretables.yml b/Resources/Prototypes/Entities/Structures/Furniture/Tables/base_structuretables.yml
index aa914b544a..f51b0b6a98 100644
--- a/Resources/Prototypes/Entities/Structures/Furniture/Tables/base_structuretables.yml
+++ b/Resources/Prototypes/Entities/Structures/Furniture/Tables/base_structuretables.yml
@@ -1,9 +1,9 @@
- type: entity
- id: TableBase
+ abstract: true
parent: BaseStructure
+ id: TableBase
name: table
description: A square piece of metal standing on four metal legs.
- abstract: true
components:
- type: Animateable
- type: Damageable
@@ -43,10 +43,10 @@
- ForceFixRotations
- type: entity
- id: CounterBase
- parent: TableBase
- name: counter
abstract: true
+ parent: TableBase
+ id: CounterBase
+ name: counter
components:
- type: Fixtures
fixtures:
diff --git a/Resources/Prototypes/Entities/Structures/Furniture/Tables/tables.yml b/Resources/Prototypes/Entities/Structures/Furniture/Tables/tables.yml
index bacad30788..20678a0e5d 100644
--- a/Resources/Prototypes/Entities/Structures/Furniture/Tables/tables.yml
+++ b/Resources/Prototypes/Entities/Structures/Furniture/Tables/tables.yml
@@ -1,7 +1,7 @@
- type: entity
+ parent: BaseStructure
id: TableFrame
# BaseStructure and not BaseTable, since these shouldn't be climbable/placeable.
- parent: BaseStructure
name: table frame
description: Pieces of metal that make the frame of a table.
components:
@@ -51,8 +51,8 @@
node: TableFrame
- type: entity
- id: CounterWoodFrame
parent: BaseStructure
+ id: CounterWoodFrame
name: wooden counter frame
description: Pieces of wood that make the frame of a table.
components:
@@ -101,16 +101,28 @@
node: CounterWoodFrame
- type: entity
+ parent: BaseStructure
id: CounterMetalFrame
- parent: CounterWoodFrame
name: metal counter frame
description: Pieces of metal that make the frame of a table.
components:
+ - type: SpriteFade
- type: Sprite
sprite: Structures/Furniture/Tables/frame.rsi
- type: Icon
sprite: Structures/Furniture/Tables/frame.rsi
state: full
+ - type: Fixtures
+ fixtures:
+ fix1:
+ shape:
+ !type:PhysShapeAabb
+ bounds: "-0.45,-0.45,0.45,0.45"
+ density: 55
+ mask:
+ - TableMask
+ layer:
+ - TableLayer
- type: Damageable
damageModifierSet: Metallic
- type: Injurable
diff --git a/Resources/Prototypes/Entities/Structures/Furniture/beds.yml b/Resources/Prototypes/Entities/Structures/Furniture/beds.yml
index 0855cef8d0..8663834053 100644
--- a/Resources/Prototypes/Entities/Structures/Furniture/beds.yml
+++ b/Resources/Prototypes/Entities/Structures/Furniture/beds.yml
@@ -1,8 +1,7 @@
- type: entity
- name: bed
- id: Bed
+ abstract: true
parent: BaseStructure
- description: This is used to lie in, sleep in or strap on. Resting here provides extremely slow healing.
+ id: BaseBed
components:
- type: HealOnBuckle
damage:
@@ -39,6 +38,18 @@
damageModifierSet: Metallic
- type: Injurable
damageContainer: Inorganic
+ - type: Transform
+ anchored: true
+ noRot: true
+ - type: Anchorable
+ - type: Pullable
+
+- type: entity
+ parent: BaseBed
+ id: Bed
+ name: bed
+ description: This is used to lie in, sleep in or strap on. Resting here provides extremely slow healing.
+ components:
- type: Destructible
thresholds:
- trigger:
@@ -52,12 +63,6 @@
SheetSteel1:
min: 1
max: 2
- - type: Transform
- anchored: true
- noRot: true
- - type: Anchorable
- - type: Pullable
-
- type: entity
parent: Bed
@@ -82,7 +87,7 @@
- type: AmbientMusicMarkerMedical
- type: entity
- parent: Bed
+ parent: BaseBed
id: DogBed
name: dog bed
description: A comfy-looking dog bed. You can even strap your pet in, in case the gravity turns off.
@@ -126,7 +131,7 @@
damageModifierSet: Inflatable
- type: entity
- parent: Bed
+ parent: BaseBed
id: WebBed
name: web bed
description: You got webbed.
@@ -157,7 +162,7 @@
node: bed
- type: entity
- parent: Bed
+ parent: BaseBed
id: PsychBed
name: psychologist bed
description: An upholstered bed for the psychological care of patients.
diff --git a/Resources/Prototypes/Entities/Structures/Furniture/bench.yml b/Resources/Prototypes/Entities/Structures/Furniture/bench.yml
index ce8f8b5686..d43e603e38 100644
--- a/Resources/Prototypes/Entities/Structures/Furniture/bench.yml
+++ b/Resources/Prototypes/Entities/Structures/Furniture/bench.yml
@@ -17,6 +17,17 @@
bodyType: Static
- type: StaticPrice
price: 35
+ - type: Destructible
+ thresholds:
+ - trigger:
+ !type:DamageTrigger
+ damage: 50
+ behaviors:
+ - !type:DoActsBehavior
+ acts: ["Destruction"]
+ - !type:PlaySoundBehavior
+ sound:
+ collection: MetalBreak
- type: entity
id: BenchColorfulComfy
diff --git a/Resources/Prototypes/Entities/Structures/Furniture/carpets.yml b/Resources/Prototypes/Entities/Structures/Furniture/carpets.yml
index 812cf68a31..a302e5c7f7 100644
--- a/Resources/Prototypes/Entities/Structures/Furniture/carpets.yml
+++ b/Resources/Prototypes/Entities/Structures/Furniture/carpets.yml
@@ -1,7 +1,7 @@
# TODO move all of this to tiles once tile smoothing is supported
- type: entity
- id: CarpetBase
parent: BaseStructure
+ id: CarpetBase
name: carpet
description: "Fancy walking surface."
abstract: true
@@ -33,7 +33,7 @@
damageContainer: Inorganic
- type: Destructible
thresholds:
- - trigger:
+ - trigger: &DamageTrigger10
!type:DamageTrigger
damage: 10
behaviors:
@@ -55,15 +55,11 @@
sprite: Structures/Furniture/Carpets/red_carpet.rsi
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 10
+ - trigger: *DamageTrigger10
behaviors:
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- !type:SpawnEntitiesBehavior
spawn:
- FloorCarpetItemRed:
+ FloorCarpetItemRed: &BaseCarpetSpawn
min: 1
max: 1
@@ -79,17 +75,11 @@
sprite: Structures/Furniture/Carpets/black_carpet.rsi
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 10
+ - trigger: *DamageTrigger10
behaviors:
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- !type:SpawnEntitiesBehavior
spawn:
- FloorCarpetItemBlack:
- min: 1
- max: 1
+ FloorCarpetItemBlack: *BaseCarpetSpawn
- type: entity
id: CarpetPink
@@ -103,17 +93,11 @@
sprite: Structures/Furniture/Carpets/pink_carpet.rsi
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 10
+ - trigger: *DamageTrigger10
behaviors:
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- !type:SpawnEntitiesBehavior
spawn:
- FloorCarpetItemPink:
- min: 1
- max: 1
+ FloorCarpetItemPink: *BaseCarpetSpawn
- type: entity
id: CarpetBlue
@@ -127,17 +111,11 @@
sprite: Structures/Furniture/Carpets/blue_carpet.rsi
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 10
+ - trigger: *DamageTrigger10
behaviors:
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- !type:SpawnEntitiesBehavior
spawn:
- FloorCarpetItemBlue:
- min: 1
- max: 1
+ FloorCarpetItemBlue: *BaseCarpetSpawn
- type: entity
id: CarpetGreen
@@ -151,17 +129,11 @@
sprite: Structures/Furniture/Carpets/green_carpet.rsi
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 10
+ - trigger: *DamageTrigger10
behaviors:
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- !type:SpawnEntitiesBehavior
spawn:
- FloorCarpetItemGreen:
- min: 1
- max: 1
+ FloorCarpetItemGreen: *BaseCarpetSpawn
- type: entity
id: CarpetOrange
@@ -175,17 +147,11 @@
sprite: Structures/Furniture/Carpets/orange_carpet.rsi
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 10
+ - trigger: *DamageTrigger10
behaviors:
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- !type:SpawnEntitiesBehavior
spawn:
- FloorCarpetItemOrange:
- min: 1
- max: 1
+ FloorCarpetItemOrange: *BaseCarpetSpawn
- type: entity
id: CarpetSBlue
@@ -199,17 +165,11 @@
sprite: Structures/Furniture/Carpets/skyblue_carpet.rsi
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 10
+ - trigger: *DamageTrigger10
behaviors:
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- !type:SpawnEntitiesBehavior
spawn:
- FloorCarpetItemSkyBlue:
- min: 1
- max: 1
+ FloorCarpetItemSkyBlue: *BaseCarpetSpawn
- type: entity
id: CarpetPurple
@@ -223,17 +183,11 @@
sprite: Structures/Furniture/Carpets/purple_carpet.rsi
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 10
+ - trigger: *DamageTrigger10
behaviors:
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- !type:SpawnEntitiesBehavior
spawn:
- FloorCarpetItemPurple:
- min: 1
- max: 1
+ FloorCarpetItemPurple: *BaseCarpetSpawn
- type: entity
id: CarpetCyan
@@ -247,17 +201,11 @@
sprite: Structures/Furniture/Carpets/cyan_carpet.rsi
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 10
+ - trigger: *DamageTrigger10
behaviors:
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- !type:SpawnEntitiesBehavior
spawn:
- FloorCarpetItemCyan:
- min: 1
- max: 1
+ FloorCarpetItemCyan: *BaseCarpetSpawn
- type: entity
id: CarpetWhite
@@ -271,22 +219,16 @@
sprite: Structures/Furniture/Carpets/white_carpet.rsi
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 10
+ - trigger: *DamageTrigger10
behaviors:
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- !type:SpawnEntitiesBehavior
spawn:
- FloorCarpetItemWhite:
- min: 1
- max: 1
+ FloorCarpetItemWhite: *BaseCarpetSpawn
# TODO nuke this once tiles support rotating sprites
- type: entity
- id: CarpetChapel
parent: BaseStructure
+ id: CarpetChapel
name: "chapel's carpet"
components:
- type: Sprite
@@ -307,9 +249,7 @@
damageContainer: Inorganic
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 10
+ - trigger: *DamageTrigger10
behaviors:
- !type:DoActsBehavior
acts: [ "Destruction" ]
@@ -318,8 +258,8 @@
#cardpet
- type: entity
- id: CarpetCard
parent: BaseStructure
+ id: CarpetCard
name: cardboard "carpet"
description: "Even lino is better."
components:
@@ -348,17 +288,13 @@
damageContainer: Inorganic
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 10
+ - trigger: *DamageTrigger10
behaviors:
- !type:DoActsBehavior
acts: [ "Destruction" ]
- !type:SpawnEntitiesBehavior
spawn:
- MaterialCardboard:
- min: 1
- max: 1
+ MaterialCardboard: *BaseCarpetSpawn
- type: ToolRefinable
refineResult:
- id: MaterialCardboard1
diff --git a/Resources/Prototypes/Entities/Structures/Furniture/chairs.yml b/Resources/Prototypes/Entities/Structures/Furniture/chairs.yml
index 9fe9e91d87..6a127b9958 100644
--- a/Resources/Prototypes/Entities/Structures/Furniture/chairs.yml
+++ b/Resources/Prototypes/Entities/Structures/Furniture/chairs.yml
@@ -1,7 +1,7 @@
- type: entity
- name: chair
- id: SeatBase
abstract: true
+ id: SeatBase
+ name: chair
description: You sit in this. Either by will or force.
placement:
mode: PlaceFree
@@ -31,17 +31,6 @@
damageModifierSet: Metallic
- type: Injurable
damageContainer: Inorganic
- - type: Destructible
- thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 50
- behaviors:
- - !type:DoActsBehavior
- acts: ["Destruction"]
- - !type:PlaySoundBehavior
- sound:
- collection: MetalBreak
- type: StaticPrice
price: 50
@@ -78,6 +67,17 @@
components:
- type: Rotatable
rotateWhileAnchored: true
+ - type: Destructible
+ thresholds:
+ - trigger:
+ !type:DamageTrigger
+ damage: 50
+ behaviors:
+ - !type:DoActsBehavior
+ acts: ["Destruction"]
+ - !type:PlaySoundBehavior
+ sound:
+ collection: MetalBreak
#Starts anchored, can be rotated while anchored
- type: entity
@@ -103,6 +103,17 @@
- type: Construction
graph: Seat
node: chair
+ - type: Destructible
+ thresholds:
+ - trigger:
+ !type:DamageTrigger
+ damage: 50
+ behaviors:
+ - !type:DoActsBehavior
+ acts: ["Destruction"]
+ - !type:PlaySoundBehavior
+ sound:
+ collection: MetalBreak
- type: entity
name: chair
@@ -124,6 +135,17 @@
- type: Construction
graph: Seat
node: stool
+ - type: Destructible
+ thresholds:
+ - trigger:
+ !type:DamageTrigger
+ damage: 50
+ behaviors:
+ - !type:DoActsBehavior
+ acts: ["Destruction"]
+ - !type:PlaySoundBehavior
+ sound:
+ collection: MetalBreak
- type: entity
name: bar stool
@@ -180,6 +202,17 @@
- type: Construction
graph: Seat
node: chairComfy
+ - type: Destructible
+ thresholds:
+ - trigger:
+ !type:DamageTrigger
+ damage: 50
+ behaviors:
+ - !type:DoActsBehavior
+ acts: ["Destruction"]
+ - !type:PlaySoundBehavior
+ sound:
+ collection: MetalBreak
- type: entity
name: pilot seat
@@ -192,6 +225,17 @@
- type: Construction
graph: Seat
node: chairPilotSeat
+ - type: Destructible
+ thresholds:
+ - trigger:
+ !type:DamageTrigger
+ damage: 50
+ behaviors:
+ - !type:DoActsBehavior
+ acts: ["Destruction"]
+ - !type:PlaySoundBehavior
+ sound:
+ collection: MetalBreak
- type: entity
name: wooden chair
@@ -266,18 +310,11 @@
thresholds:
- trigger:
!type:DamageTrigger
- damage: 50
+ damage: 25
behaviors:
- - !type:DoActsBehavior
- acts: ["Destruction"]
- !type:PlaySoundBehavior
sound:
path: /Audio/Voice/Human/womanlaugh.ogg
- - !type:SpawnEntitiesBehavior
- spawn:
- MaterialWoodPlank:
- min: 1
- max: 1
- type: Construction
graph: RitualSeat
node: chairCursed
@@ -345,6 +382,17 @@
graph: Seat
node: chairFolding
- type: DamageExaminable
+ - type: Destructible
+ thresholds:
+ - trigger:
+ !type:DamageTrigger
+ damage: 50
+ behaviors:
+ - !type:DoActsBehavior
+ acts: ["Destruction"]
+ - !type:PlaySoundBehavior
+ sound:
+ collection: MetalBreak
- type: entity
parent: ChairFolding
@@ -367,6 +415,17 @@
- type: Construction
graph: Seat
node: chairSteelBench
+ - type: Destructible
+ thresholds:
+ - trigger:
+ !type:DamageTrigger
+ damage: 50
+ behaviors:
+ - !type:DoActsBehavior
+ acts: ["Destruction"]
+ - !type:PlaySoundBehavior
+ sound:
+ collection: MetalBreak
- type: entity
name: cardboard stool
@@ -381,8 +440,6 @@
node: stoolCard
- type: Damageable
damageModifierSet: Card
- - type: Injurable
- damageContainer: Inorganic
- type: Destructible
thresholds:
- trigger:
diff --git a/Resources/Prototypes/Entities/Structures/Furniture/toilet.yml b/Resources/Prototypes/Entities/Structures/Furniture/toilet.yml
index 8eef044346..dcf5aa88bb 100644
--- a/Resources/Prototypes/Entities/Structures/Furniture/toilet.yml
+++ b/Resources/Prototypes/Entities/Structures/Furniture/toilet.yml
@@ -117,6 +117,17 @@
reagents:
- ReagentId: Water
Quantity: 1
+ - type: Destructible
+ thresholds:
+ - trigger:
+ !type:DamageTrigger
+ damage: 50
+ behaviors:
+ - !type:DoActsBehavior
+ acts: ["Destruction"]
+ - !type:PlaySoundBehavior
+ sound:
+ collection: MetalBreak
# constructed toilets don't come with Rummageable or plungeruse component to avoid infinite item spawning.
- type: entity
@@ -196,15 +207,8 @@
thresholds:
- trigger:
!type:DamageTrigger
- damage: 100
+ damage: 50
behaviors:
- - !type:DoActsBehavior
- acts: ["Destruction"]
- - !type:PlaySoundBehavior
- sound:
- collection: MetalBreak
- params:
- volume: -6
- !type:SpawnEntitiesBehavior
spawn:
IngotGold1:
diff --git a/Resources/Prototypes/Entities/Structures/Holographic/projections.yml b/Resources/Prototypes/Entities/Structures/Holographic/projections.yml
index 3c4238eff9..2d2c0cd789 100644
--- a/Resources/Prototypes/Entities/Structures/Holographic/projections.yml
+++ b/Resources/Prototypes/Entities/Structures/Holographic/projections.yml
@@ -1,7 +1,6 @@
- type: entity
- id: HolosignWetFloor
- name: wet floor sign
- description: The words flicker as if they mean nothing.
+ abstract: true
+ id: BaseHoloSign
placement:
mode: SnapgridCenter
components:
@@ -10,15 +9,22 @@
- type: Physics
bodyType: Static
canCollide: false
- - type: Sprite
- sprite: Structures/Holo/wetfloor.rsi
- state: icon
- type: TimedDespawn
lifetime: 90
- type: Clickable
- type: Damageable
- type: Injurable
damageContainer: Inorganic
+
+- type: entity
+ parent: BaseHoloSign
+ id: HolosignWetFloor
+ name: wet floor sign
+ description: The words flicker as if they mean nothing.
+ components:
+ - type: Sprite
+ sprite: Structures/Holo/wetfloor.rsi
+ state: icon
- type: Destructible
thresholds:
- trigger:
@@ -29,8 +35,8 @@
acts: [ "Destruction" ]
- type: entity
+ parent: BaseHoloSign
id: HoloFan
- parent: HolosignWetFloor
name: holofan
description: A barrier of hard light that blocks air, but nothing else.
components:
@@ -47,10 +53,18 @@
lifetime: 180
- type: Airtight
noAirWhenFullyAirBlocked: false
+ - type: Destructible
+ thresholds:
+ - trigger:
+ !type:DamageTrigger
+ damage: 30
+ behaviors:
+ - !type:DoActsBehavior
+ acts: [ "Destruction" ]
- type: entity
+ parent: BaseHoloSign
id: HoloPeel
- parent: HolosignWetFloor
name: holopeel
description: A banana peel made of slippery hard light, watch your step!
components:
@@ -58,7 +72,6 @@
sprite: Structures/Holo/peel.rsi
state: icon
- type: Physics
- bodyType: Static
canCollide: true
- type: Slippery
- type: StepTrigger
@@ -86,13 +99,12 @@
acts: [ "Destruction" ]
- type: entity
+ parent: BaseHoloSign
id: HolosignSecurity
- parent: HolosignWetFloor
name: holographic barrier
description: A barrier of hard light that blocks movement, but pretty weak.
components:
- type: Physics
- bodyType: Static
canCollide: true
- type: Sprite
sprite: Structures/Holo/security.rsi
@@ -114,15 +126,22 @@
radius: 3
color: red
- type: Climbable
+ - type: Destructible
+ thresholds:
+ - trigger:
+ !type:DamageTrigger
+ damage: 30
+ behaviors:
+ - !type:DoActsBehavior
+ acts: [ "Destruction" ]
- type: entity
+ parent: BaseHoloSign
id: HolosignForcefield
- parent: HolosignWetFloor
name: holographic force field
description: A powerful temporal containment field that doesn't let anything through, not even a tesla or singularity.
components:
- type: Physics
- bodyType: Static
canCollide: true
- type: Sprite
sprite: Structures/Holo/field.rsi
diff --git a/Resources/Prototypes/Entities/Structures/Lighting/base_lighting.yml b/Resources/Prototypes/Entities/Structures/Lighting/base_lighting.yml
index 7b9a89052e..0c0224ebfe 100644
--- a/Resources/Prototypes/Entities/Structures/Lighting/base_lighting.yml
+++ b/Resources/Prototypes/Entities/Structures/Lighting/base_lighting.yml
@@ -5,10 +5,12 @@
#Basic lights
- type: entity
- id: AlwaysPoweredWallLight
- name: light
- description: "An always powered light."
- suffix: Always powered
+ abstract: true
+ id: BaseWallLight
+ placement:
+ mode: SnapgridCenter
+ snap:
+ - Wallmount
components:
- type: MeleeSound
soundGroups:
@@ -18,11 +20,7 @@
anchored: true
- type: Clickable
- type: InteractionOutline
- - type: Construction
- graph: LightFixture
- node: tubeLight
- type: Sprite
- sprite: Structures/Wallmounts/Lighting/light_tube.rsi
drawdepth: WallMountedItems
layers:
- map: ["enum.PoweredLightLayers.Base"]
@@ -30,7 +28,6 @@
- map: ["enum.PoweredLightLayers.Glow"]
state: glow
shader: unshaded
- state: base
- type: PointLight
color: "#FFE4CE" # 5000K color temp
energy: 0.8
@@ -65,22 +62,43 @@
damage: 50
behaviors:
- !type:EmptyAllContainersBehaviour
- - !type:SpawnEntitiesBehavior
- spawn:
- SheetSteel1:
- min: 2
- max: 2
- !type:DoActsBehavior
- acts: ["Destruction"]
+ acts: [ "Destruction" ]
- !type:PlaySoundBehavior
sound:
collection: GlassBreak
- type: PlacementReplacement
key: lights
- placement:
- mode: SnapgridCenter
- snap:
- - Wallmount
+
+- type: entity
+ parent: BaseWallLight
+ id: AlwaysPoweredWallLight
+ name: light
+ suffix: Always powered
+ description: "An always powered light."
+ components:
+ - type: Construction
+ graph: LightFixture
+ node: tubeLight
+ - type: Sprite
+ sprite: Structures/Wallmounts/Lighting/light_tube.rsi
+ layers:
+ - map: ["enum.PoweredLightLayers.Base"]
+ state: base
+ - map: ["enum.PoweredLightLayers.Glow"]
+ state: glow
+ shader: unshaded
+ - type: Destructible
+ thresholds:
+ - trigger:
+ !type:DamageTrigger
+ damage: 50
+ behaviors:
+ - !type:SpawnEntitiesBehavior
+ spawn:
+ SheetSteel1:
+ min: 2
+ max: 2
- type: entity
name: light
@@ -241,11 +259,11 @@
#Small lights
- type: entity
- name: small light
- description: "An always powered light."
+ parent: BaseWallLight
id: SmallLight
+ name: small light
suffix: Always Powered
- parent: AlwaysPoweredWallLight
+ description: "An always powered light."
components:
- type: AmbientSound
volume: -15
@@ -260,8 +278,6 @@
radius: 6
softness: 1.1
enabled: true
- - type: Physics
- bodyType: Static
- type: Fixtures
fixtures:
fix1:
@@ -273,23 +289,17 @@
- None
layer:
- TabletopMachineLayer
- - type: Damageable
- - type: Injurable
- damageContainer: Inorganic
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
- damage: 25
+ damage: 50
behaviors:
- - !type:EmptyAllContainersBehaviour
- !type:SpawnEntitiesBehavior
spawn:
SheetSteel1:
min: 1
max: 1
- - !type:DoActsBehavior
- acts: ["Destruction"]
- type: Construction
graph: LightFixture
node: bulbLight
@@ -422,11 +432,10 @@
#Emergency Lights
- type: entity
+ parent: BaseWallLight
id: EmergencyLight
name: emergency light
description: A small light with an internal battery that turns on as soon as it stops receiving any power. Nanotrasen technology allows it to adapt its color to alert crew to the conditions of the station.
- parent: AlwaysPoweredWallLight
- suffix: ""
components:
- type: PointLight
enabled: false
@@ -461,7 +470,6 @@
color: "#7CFC00"
shader: "unshaded"
visible: false
- - type: Appearance
- type: Construction
graph: LightFixture
node: emergencyLight
@@ -469,7 +477,7 @@
thresholds:
- trigger:
!type:DamageTrigger
- damage: 25
+ damage: 50
behaviors:
- !type:SpawnEntitiesBehavior
spawn:
@@ -479,15 +487,6 @@
ShardGlass:
min: 1
max: 1
- - !type:DoActsBehavior
- acts: ["Destruction"]
- - !type:PlaySoundBehavior
- sound:
- collection: GlassBreak
- placement:
- mode: SnapgridCenter
- snap:
- - Wallmount
#Coloured lights
diff --git a/Resources/Prototypes/Entities/Structures/Machines/Computers/frame.yml b/Resources/Prototypes/Entities/Structures/Machines/Computers/frame.yml
index 6d6b2e4f77..8272b8cd3d 100644
--- a/Resources/Prototypes/Entities/Structures/Machines/Computers/frame.yml
+++ b/Resources/Prototypes/Entities/Structures/Machines/Computers/frame.yml
@@ -1,10 +1,8 @@
- type: entity
- id: BaseStructureComputer
- parent: BaseStructure
abstract: true
+ parent: BaseStructure
+ id: BaseStructureComputerIndestructible
components:
- - type: Physics
- bodyType: Static
- type: Fixtures
fixtures:
fix1:
@@ -21,9 +19,17 @@
- type: Anchorable
- type: Construction
graph: Computer
- node: frameUnsecured
- type: Sprite
drawdepth: Objects
+
+- type: entity
+ abstract: true
+ parent: BaseStructureComputerIndestructible
+ id: BaseStructureComputer
+ components:
+ - type: Construction
+ graph: Computer
+ node: frameUnsecured
- type: Damageable
damageModifierSet: Electronic
- type: Injurable
@@ -65,7 +71,7 @@
monitorUnsecured: { state: 4 }
- type: entity
- parent: BaseStructureComputer
+ parent: BaseStructureComputerIndestructible
id: ComputerBroken
name: broken computer
description: This computer has seen better days.
diff --git a/Resources/Prototypes/Entities/Structures/Machines/Medical/biomass_reclaimer.yml b/Resources/Prototypes/Entities/Structures/Machines/Medical/biomass_reclaimer.yml
index b6e8e791e6..e22f777754 100644
--- a/Resources/Prototypes/Entities/Structures/Machines/Medical/biomass_reclaimer.yml
+++ b/Resources/Prototypes/Entities/Structures/Machines/Medical/biomass_reclaimer.yml
@@ -1,6 +1,6 @@
- type: entity
id: BiomassReclaimer
- parent: [ BaseMachinePowered, ConstructibleMachine ]
+ parent: [ BaseMachinePowered, ConstructibleMachine, BaseConstructibleMachineDestructible ]
name: biomass reclaimer
description: Reclaims biomass from corpses. Gruesome.
placement:
@@ -24,3 +24,11 @@
- type: GuideHelp
guides:
- Cloning
+ - type: Destructible
+ thresholds:
+ - trigger: !type:DamageTrigger
+ damage: 175
+ behaviors:
+ - !type:PlaySoundBehavior
+ sound:
+ collection: MetalBreak
diff --git a/Resources/Prototypes/Entities/Structures/Machines/Medical/chemistry_machines.yml b/Resources/Prototypes/Entities/Structures/Machines/Medical/chemistry_machines.yml
index 718a0ec886..149876d29d 100644
--- a/Resources/Prototypes/Entities/Structures/Machines/Medical/chemistry_machines.yml
+++ b/Resources/Prototypes/Entities/Structures/Machines/Medical/chemistry_machines.yml
@@ -1,6 +1,6 @@
- type: entity
id: BaseTabletopChemicalMachine
- parent: [ BaseMachinePowered, SmallConstructibleMachine ]
+ parent: [ BaseMachinePowered, SmallConstructibleMachine, BaseSmallConstructibleMachineDestructible ]
abstract: true
components:
- type: Transform
@@ -36,6 +36,14 @@
mixer: !type:ContainerSlot
machine_board: !type:Container
machine_parts: !type:Container
+ - type: Destructible
+ thresholds:
+ - trigger: !type:DamageTrigger
+ damage: 100
+ behaviors:
+ - !type:PlaySoundBehavior
+ sound:
+ collection: MetalGlassBreak
- type: entity
id: MachineElectrolysisUnit
diff --git a/Resources/Prototypes/Entities/Structures/Machines/Medical/cryo_pod.yml b/Resources/Prototypes/Entities/Structures/Machines/Medical/cryo_pod.yml
index 530bc36864..ad6c09834d 100644
--- a/Resources/Prototypes/Entities/Structures/Machines/Medical/cryo_pod.yml
+++ b/Resources/Prototypes/Entities/Structures/Machines/Medical/cryo_pod.yml
@@ -1,5 +1,5 @@
- type: entity
- parent: [BaseStructure, ConstructibleMachine] # Not a BaseMachinePowered since we don't want the anchorable component
+ parent: [BaseStructure, ConstructibleMachine, BaseConstructibleMachineDestructible] # Not a BaseMachinePowered since we don't want the anchorable component
id: CryoPod
name: cryo pod
description: A special machine intended to create a safe environment for the use of chemicals that react in cold environments.
@@ -55,22 +55,16 @@
layoutId: CryoPod
- type: Damageable
damageModifierSet: StructuralMetallic
- - type: Injurable
- damageContainer: StructuralInorganic
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
- damage: 100
+ damage: 175
behaviors:
- !type:EmptyAllContainersBehaviour
- !type:PlaySoundBehavior
sound:
collection: WindowShatter
- - !type:ChangeConstructionNodeBehavior
- node: machineFrame
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- type: ApcPowerReceiver
powerLoad: 3000
- type: ExtensionCableReceiver
diff --git a/Resources/Prototypes/Entities/Structures/Machines/Medical/disease_diagnoser.yml b/Resources/Prototypes/Entities/Structures/Machines/Medical/disease_diagnoser.yml
index ad98f47e36..dff44d54f9 100644
--- a/Resources/Prototypes/Entities/Structures/Machines/Medical/disease_diagnoser.yml
+++ b/Resources/Prototypes/Entities/Structures/Machines/Medical/disease_diagnoser.yml
@@ -1,6 +1,6 @@
- type: entity
id: DiseaseDiagnoser
- parent: [ BaseMachinePowered, SmallConstructibleMachine ]
+ parent: [ BaseMachinePowered, SmallConstructibleMachine, BaseSmallConstructibleMachineDestructible ]
name: Disease Diagnoser Delta Extreme
description: A machine that analyzes disease samples.
placement:
@@ -17,6 +17,14 @@
- type: Appearance
- type: Machine
board: DiagnoserMachineCircuitboard
+ - type: Destructible
+ thresholds:
+ - trigger: !type:DamageTrigger
+ damage: 100
+ behaviors:
+ - !type:PlaySoundBehavior
+ sound:
+ collection: MetalBreak
- type: entity
name: disease diagnoser report
diff --git a/Resources/Prototypes/Entities/Structures/Machines/Medical/vaccinator.yml b/Resources/Prototypes/Entities/Structures/Machines/Medical/vaccinator.yml
index 49a77d1d09..5fa16d2abd 100644
--- a/Resources/Prototypes/Entities/Structures/Machines/Medical/vaccinator.yml
+++ b/Resources/Prototypes/Entities/Structures/Machines/Medical/vaccinator.yml
@@ -1,6 +1,6 @@
- type: entity
id: Vaccinator
- parent: BaseMachinePowered
+ parent: [ BaseMachinePowered, BaseMachineDestructible ]
name: vaccinator
description: A machine that creates vaccines.
placement:
@@ -22,3 +22,11 @@
machine_board: !type:Container
machine_parts: !type:Container
- type: RequireProjectileTarget
+ - type: Destructible
+ thresholds:
+ - trigger: !type:DamageTrigger
+ damage: 175
+ behaviors:
+ - !type:PlaySoundBehavior
+ sound:
+ collection: MetalBreak
diff --git a/Resources/Prototypes/Entities/Structures/Machines/anomaly_equipment.yml b/Resources/Prototypes/Entities/Structures/Machines/anomaly_equipment.yml
index f5d8c40545..7bfaabe2cb 100644
--- a/Resources/Prototypes/Entities/Structures/Machines/anomaly_equipment.yml
+++ b/Resources/Prototypes/Entities/Structures/Machines/anomaly_equipment.yml
@@ -1,6 +1,6 @@
- type: entity
id: MachineAnomalyVessel
- parent: [ BaseMachinePowered, ConstructibleMachine ]
+ parent: [ BaseMachinePowered, ConstructibleMachine, BaseConstructibleMachineDestructible ]
name: anomaly vessel
description: A container able to harness a scan of an anomaly and turn it into research data.
components:
@@ -73,10 +73,8 @@
thresholds:
- trigger:
!type:DamageTrigger
- damage: 150
+ damage: 175
behaviors:
- - !type:DoActsBehavior
- acts: ["Destruction"]
- !type:PlaySoundBehavior
sound:
collection: MetalGlassBreak
@@ -113,7 +111,7 @@
- type: entity
id: MachineAPE
- parent: [ BaseMachinePowered, ConstructibleMachine ]
+ parent: [ BaseMachinePowered, ConstructibleMachine, BaseConstructibleMachineDestructible ]
name: A.P.E.
description: An Anomalous Particle Emitter, capable of shooting out unstable particles which can interface with anomalies.
components:
@@ -148,6 +146,14 @@
- MachineMask
layer:
- MachineLayer
+ - type: Destructible
+ thresholds:
+ - trigger: !type:DamageTrigger
+ damage: 175
+ behaviors:
+ - !type:PlaySoundBehavior
+ sound:
+ collection: MetalBreak
- type: Rotatable
rotateWhileAnchored: true
- type: Machine
diff --git a/Resources/Prototypes/Entities/Structures/Machines/anomaly_sync.yml b/Resources/Prototypes/Entities/Structures/Machines/anomaly_sync.yml
index de4ea19350..62f91e1f5c 100644
--- a/Resources/Prototypes/Entities/Structures/Machines/anomaly_sync.yml
+++ b/Resources/Prototypes/Entities/Structures/Machines/anomaly_sync.yml
@@ -1,6 +1,6 @@
- type: entity
id: MachineAnomalySynchronizer
- parent: [ BaseMachinePowered, ConstructibleMachine ]
+ parent: [ BaseMachinePowered, ConstructibleMachine, BaseConstructibleMachineDestructible ]
name: anomaly synchronizer
description: A sophisticated device that reads changes in anomalous waves, and converts them into energy signals.
components:
@@ -43,6 +43,14 @@
mask:
- ItemMask
hard: True
+ - type: Destructible
+ thresholds:
+ - trigger: !type:DamageTrigger
+ damage: 175
+ behaviors:
+ - !type:PlaySoundBehavior
+ sound:
+ collection: MetalGlassBreak
- type: Transform
anchored: true
noRot: false
diff --git a/Resources/Prototypes/Entities/Structures/Machines/artifact_analyzer.yml b/Resources/Prototypes/Entities/Structures/Machines/artifact_analyzer.yml
index 87dc468018..fc21d9e296 100644
--- a/Resources/Prototypes/Entities/Structures/Machines/artifact_analyzer.yml
+++ b/Resources/Prototypes/Entities/Structures/Machines/artifact_analyzer.yml
@@ -1,6 +1,6 @@
- type: entity
id: MachineArtifactAnalyzer
- parent: [ BaseMachinePowered, SmallConstructibleMachine ]
+ parent: [ BaseMachinePowered, SmallConstructibleMachine, BaseSmallConstructibleMachineDestructible ]
name: artifact analyzer
description: A platform capable of performing analysis on various types of artifacts.
components:
@@ -45,6 +45,14 @@
- LowImpassable
- BulletImpassable
hard: False
+ - type: Destructible
+ thresholds:
+ - trigger: !type:DamageTrigger
+ damage: 100
+ behaviors:
+ - !type:PlaySoundBehavior
+ sound:
+ collection: MetalGlassBreak
- type: Transform
anchored: true
- type: ApcPowerReceiver
@@ -81,7 +89,7 @@
- type: entity
id: MachineArtifactCrusher
- parent: [ ConstructibleMachine, BaseMachinePowered ]
+ parent: [ ConstructibleMachine, BaseMachinePowered, BaseConstructibleMachineDestructible ]
name: artifact crusher
description: Best not to let your fingers get stuck...
components:
@@ -121,6 +129,17 @@
- HighImpassable
layer:
- HighImpassable
+ - type: Destructible
+ thresholds:
+ - trigger: !type:DamageTrigger
+ damage: 175
+ behaviors:
+ - !type:PlaySoundBehavior
+ sound:
+ collection: MetalBreak
+ - !type:EmptyContainersBehaviour
+ containers:
+ - entity_storage
- type: EntityStorage
capacity: 1
whitelist:
diff --git a/Resources/Prototypes/Entities/Structures/Machines/base_structuremachines.yml b/Resources/Prototypes/Entities/Structures/Machines/base_structuremachines.yml
index c0c4135702..09ad3e4af0 100644
--- a/Resources/Prototypes/Entities/Structures/Machines/base_structuremachines.yml
+++ b/Resources/Prototypes/Entities/Structures/Machines/base_structuremachines.yml
@@ -22,21 +22,27 @@
- MachineMask
layer:
- MachineLayer
+
+- type: entity
+ abstract: true
+ id: BaseMachineDestructible
+ components:
- type: Damageable
- damageModifierSet: StructuralMetallic
- type: Injurable
damageContainer: StructuralInorganic
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 100
+ - trigger: !type:DamageTrigger
+ damage: 175
behaviors:
- !type:DoActsBehavior
acts: ["Destruction"]
- - !type:PlaySoundBehavior
- sound:
- collection: MetalBreak
+ - !type:SpawnEntitiesBehavior
+ offset: 0
+ spawn:
+ MachineFrameDestroyed:
+ min: 1
+ max: 1
- type: entity
abstract: true
@@ -68,9 +74,43 @@
- type: LightningTarget
priority: 1
+- type: entity
+ abstract: true
+ id: BaseConstructibleMachineDestructible
+ components:
+ - type: Damageable
+ - type: Injurable
+ damageContainer: StructuralInorganic
+ - type: Destructible
+ thresholds:
+ - trigger: !type:DamageTrigger
+ damage: 175
+ behaviors:
+ - !type:DoActsBehavior
+ acts: ["Destruction"]
+ - !type:ChangeConstructionNodeBehavior
+ node: machineFrame
+
- type: entity
abstract: true
parent: ConstructibleMachine
id: SmallConstructibleMachine
components:
- type: RequireProjectileTarget
+
+- type: entity
+ abstract: true
+ id: BaseSmallConstructibleMachineDestructible
+ components:
+ - type: Damageable
+ - type: Injurable
+ damageContainer: StructuralInorganic
+ - type: Destructible
+ thresholds:
+ - trigger: !type:DamageTrigger
+ damage: 100
+ behaviors:
+ - !type:ChangeConstructionNodeBehavior
+ node: machineFrame
+ - !type:DoActsBehavior
+ acts: ["Destruction"]
diff --git a/Resources/Prototypes/Entities/Structures/Machines/chem_master.yml b/Resources/Prototypes/Entities/Structures/Machines/chem_master.yml
index 72df7c9249..649704c0a8 100644
--- a/Resources/Prototypes/Entities/Structures/Machines/chem_master.yml
+++ b/Resources/Prototypes/Entities/Structures/Machines/chem_master.yml
@@ -1,6 +1,6 @@
- type: entity
id: ChemMaster
- parent: [ BaseMachinePowered, ConstructibleMachine ]
+ parent: [ BaseMachinePowered, ConstructibleMachine, BaseConstructibleMachineDestructible ]
name: ChemMaster 4000
description: An industrial grade chemical manipulator with pill and bottle production included.
placement:
@@ -41,17 +41,12 @@
- MachineLayer
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 50
+ - trigger: !type:DamageTrigger
+ damage: 175
behaviors:
- !type:PlaySoundBehavior
sound:
collection: MetalGlassBreak
- - !type:ChangeConstructionNodeBehavior
- node: machineFrame
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- type: ActivatableUI
key: enum.ChemMasterUiKey.Key
- type: ActivatableUIRequiresPower
diff --git a/Resources/Prototypes/Entities/Structures/Machines/cloning_machine.yml b/Resources/Prototypes/Entities/Structures/Machines/cloning_machine.yml
index bfbd05033f..a3ef94c834 100644
--- a/Resources/Prototypes/Entities/Structures/Machines/cloning_machine.yml
+++ b/Resources/Prototypes/Entities/Structures/Machines/cloning_machine.yml
@@ -1,6 +1,6 @@
- type: entity
id: CloningPod
- parent: BaseMachinePowered
+ parent: [ BaseMachinePowered, BaseConstructibleMachineDestructible ]
name: cloning pod
description: A Cloning Pod. 50% reliable.
components:
@@ -32,21 +32,14 @@
- clonepod-bodyContainer
- type: Damageable
damageModifierSet: StrongMetallic
- - type: Injurable
- damageContainer: StructuralInorganic
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 100
+ - trigger: !type:DamageTrigger
+ damage: 175
behaviors:
- !type:PlaySoundBehavior
sound:
collection: MetalGlassBreak
- - !type:ChangeConstructionNodeBehavior
- node: machineFrame
- - !type:DoActsBehavior
- acts: ["Destruction"]
- type: Machine
board: CloningPodMachineCircuitboard
- type: MaterialStorage
diff --git a/Resources/Prototypes/Entities/Structures/Machines/fatextractor.yml b/Resources/Prototypes/Entities/Structures/Machines/fatextractor.yml
index 9da9c5932b..bf2e5a3f62 100644
--- a/Resources/Prototypes/Entities/Structures/Machines/fatextractor.yml
+++ b/Resources/Prototypes/Entities/Structures/Machines/fatextractor.yml
@@ -1,6 +1,6 @@
- type: entity
id: FatExtractor
- parent: BaseMachinePowered
+ parent: [ BaseMachinePowered, BaseMachineDestructible ]
name: lipid extractor
description: Safely and efficiently extracts excess fat from a subject.
components:
@@ -77,21 +77,14 @@
- entity_storage
- type: Damageable
damageModifierSet: StructuralMetallicStrong
- - type: Injurable
- damageContainer: StructuralInorganic
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 100
+ - trigger: !type:DamageTrigger
+ damage: 175
behaviors:
- !type:PlaySoundBehavior
sound:
collection: MetalGlassBreak
- - !type:ChangeConstructionNodeBehavior
- node: machineFrame
- - !type:DoActsBehavior
- acts: ["Destruction"]
- type: Machine
board: FatExtractorMachineCircuitboard
- type: WiresPanel
diff --git a/Resources/Prototypes/Entities/Structures/Machines/fax_machine.yml b/Resources/Prototypes/Entities/Structures/Machines/fax_machine.yml
index 3d1465993d..22c65d0e2d 100644
--- a/Resources/Prototypes/Entities/Structures/Machines/fax_machine.yml
+++ b/Resources/Prototypes/Entities/Structures/Machines/fax_machine.yml
@@ -14,7 +14,7 @@
- state: printing
map: [ "printing" ]
visible: false
- - state:
+ - state:
map: [ "enum.FaxMachineVisuals.VisualState" ]
- type: Icon
sprite: Structures/Machines/fax_machine.rsi
@@ -33,6 +33,16 @@
- TabletopMachineMask
layer:
- TabletopMachineLayer
+ - type: Destructible
+ thresholds:
+ - trigger: !type:DamageTrigger
+ damage: 100
+ behaviors:
+ - !type:PlaySoundBehavior
+ sound:
+ collection: MetalBreak
+ - !type:DoActsBehavior
+ acts: ["Destruction"]
- type: ActivatableUI
key: enum.FaxUiKey.Key
- type: ActivatableUIRequiresPower
@@ -89,7 +99,7 @@
suffix: CentCom
components:
- type: Sprite
- layers:
+ layers:
- state: icon
color: "#bfe3ff"
- state: idle
@@ -97,7 +107,7 @@
- state: printing
map: [ "printing" ]
visible: false
- - state:
+ - state:
map: [ "enum.FaxMachineVisuals.VisualState" ]
- type: FaxMachine
name: "Central Command"
@@ -110,7 +120,7 @@
suffix: Syndicate
components:
- type: Sprite
- layers:
+ layers:
- state: icon
color: "#a3a3a3"
- state: idle
@@ -118,7 +128,7 @@
- state: printing
map: [ "printing" ]
visible: false
- - state:
+ - state:
map: [ "enum.FaxMachineVisuals.VisualState" ]
- type: FaxMachine
name: "ERR*?*%!"
diff --git a/Resources/Prototypes/Entities/Structures/Machines/flatpacker.yml b/Resources/Prototypes/Entities/Structures/Machines/flatpacker.yml
index f7f1bcba1b..cc29264fc0 100644
--- a/Resources/Prototypes/Entities/Structures/Machines/flatpacker.yml
+++ b/Resources/Prototypes/Entities/Structures/Machines/flatpacker.yml
@@ -1,6 +1,6 @@
- type: entity
id: MachineFlatpacker
- parent: [ BaseMachinePowered, ConstructibleMachine ]
+ parent: [ BaseMachinePowered, ConstructibleMachine, BaseConstructibleMachineDestructible ]
name: Flatpacker 1001
description: An industrial machine used for expediting machine construction across the station.
components:
@@ -30,6 +30,14 @@
anim:
True: { visible: true }
False: { visible: false }
+ - type: Destructible
+ thresholds:
+ - trigger: !type:DamageTrigger
+ damage: 175
+ behaviors:
+ - !type:PlaySoundBehavior
+ sound:
+ collection: MetalBreak
- type: FlatpackCreator
baseMachineCost:
Steel: 750
diff --git a/Resources/Prototypes/Entities/Structures/Machines/gravity_generator.yml b/Resources/Prototypes/Entities/Structures/Machines/gravity_generator.yml
index 84948f38fb..d78fb6464f 100644
--- a/Resources/Prototypes/Entities/Structures/Machines/gravity_generator.yml
+++ b/Resources/Prototypes/Entities/Structures/Machines/gravity_generator.yml
@@ -81,7 +81,7 @@
price: 5000
- type: entity
- parent: [ GravityGenerator, ConstructibleMachine ]
+ parent: [ GravityGenerator, ConstructibleMachine, BaseConstructibleMachineDestructible ]
id: GravityGeneratorMini
name: mini gravity generator
suffix: Charged
@@ -115,18 +115,11 @@
thresholds:
- trigger:
!type:DamageTrigger
- damage: 500
+ damage: 175
behaviors:
- - !type:DoActsBehavior
- acts: ["Destruction"]
- !type:PlaySoundBehavior
sound:
collection: MetalGlassBreak
- - !type:SpawnEntitiesBehavior
- spawn:
- MachineFrameDestroyed:
- min: 1
- max: 1
- type: WiresPanel
- type: Machine
board: MiniGravityGeneratorCircuitboard
diff --git a/Resources/Prototypes/Entities/Structures/Machines/holopad.yml b/Resources/Prototypes/Entities/Structures/Machines/holopad.yml
index 5d1d61030d..1348a53418 100644
--- a/Resources/Prototypes/Entities/Structures/Machines/holopad.yml
+++ b/Resources/Prototypes/Entities/Structures/Machines/holopad.yml
@@ -1,5 +1,5 @@
- type: entity
- parent: [ BaseMachinePowered, ConstructibleMachine ]
+ parent: [ BaseMachinePowered, ConstructibleMachine, BaseConstructibleMachineDestructible ]
id: Holopad
name: holopad
description: "A floor-mounted device for projecting holographic images."
@@ -94,15 +94,11 @@
thresholds:
- trigger:
!type:DamageTrigger
- damage: 100
+ damage: 175
behaviors:
- !type:PlaySoundBehavior
sound:
- collection: MetalBreak
- - !type:ChangeConstructionNodeBehavior
- node: machineFrame
- - !type:DoActsBehavior
- acts: ["Destruction"]
+ collection: MetalGlassBreak
- type: entity
name: long-range holopad
diff --git a/Resources/Prototypes/Entities/Structures/Machines/hotplate.yml b/Resources/Prototypes/Entities/Structures/Machines/hotplate.yml
index 5ef0deb154..d1ba017bf5 100644
--- a/Resources/Prototypes/Entities/Structures/Machines/hotplate.yml
+++ b/Resources/Prototypes/Entities/Structures/Machines/hotplate.yml
@@ -1,7 +1,7 @@
# heats an entity or solution placed on it
- type: entity
abstract: true
- parent: [ BaseMachinePowered, SmallConstructibleMachine ]
+ parent: [ BaseMachinePowered, SmallConstructibleMachine, BaseSmallConstructibleMachineDestructible ]
id: BaseHeaterMachine
components:
- type: ItemPlacer
@@ -22,6 +22,14 @@
- TabletopMachineMask
layer:
- TabletopMachineLayer
+ - type: Destructible
+ thresholds:
+ - trigger: !type:DamageTrigger
+ damage: 100
+ behaviors:
+ - !type:PlaySoundBehavior
+ sound:
+ collection: MetalBreak
- type: ApcPowerReceiver
powerLoad: 300
diff --git a/Resources/Prototypes/Entities/Structures/Machines/jukebox.yml b/Resources/Prototypes/Entities/Structures/Machines/jukebox.yml
index e69e8ad4dc..0ab1af87a0 100644
--- a/Resources/Prototypes/Entities/Structures/Machines/jukebox.yml
+++ b/Resources/Prototypes/Entities/Structures/Machines/jukebox.yml
@@ -1,7 +1,7 @@
- type: entity
id: Jukebox
name: jukebox
- parent: [ BaseMachinePowered, ConstructibleMachine ]
+ parent: [ BaseMachinePowered, ConstructibleMachine, BaseConstructibleMachineDestructible ]
description: A machine capable of playing a wide variety of tunes. Enjoyment not guaranteed.
components:
- type: StationAiWhitelist
@@ -37,21 +37,15 @@
layoutId: Jukebox
- type: Damageable
damageModifierSet: Metallic
- - type: Injurable
- damageContainer: StructuralInorganic
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
- damage: 75
+ damage: 175
behaviors:
- - !type:DoActsBehavior
- acts: ["Destruction"]
- - !type:SpawnEntitiesBehavior
- spawn:
- SheetSteel1:
- min: 1
- max: 2
+ - !type:PlaySoundBehavior
+ sound:
+ collection: WoodDestroy
- type: Physics
bodyType: Static
- type: Fixtures
diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml
index 4bf527a977..d54236a4a9 100644
--- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml
+++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml
@@ -1,6 +1,6 @@
- type: entity
id: BaseLathe
- parent: [ BaseMachinePowered, ConstructibleMachine ]
+ parent: [ BaseMachinePowered, ConstructibleMachine, BaseConstructibleMachineDestructible ]
abstract: true
name: lathe
components:
@@ -23,15 +23,11 @@
thresholds:
- trigger:
!type:DamageTrigger
- damage: 100
+ damage: 175
behaviors:
- !type:PlaySoundBehavior
sound:
collection: MetalBreak
- - !type:ChangeConstructionNodeBehavior
- node: machineFrame
- - !type:DoActsBehavior
- acts: ["Destruction"]
- type: WiresPanel
- type: ActivatableUI
key: enum.LatheUiKey.Key
diff --git a/Resources/Prototypes/Entities/Structures/Machines/mail_teleporter.yml b/Resources/Prototypes/Entities/Structures/Machines/mail_teleporter.yml
index e1223ed614..30b8e551bb 100644
--- a/Resources/Prototypes/Entities/Structures/Machines/mail_teleporter.yml
+++ b/Resources/Prototypes/Entities/Structures/Machines/mail_teleporter.yml
@@ -1,6 +1,6 @@
- type: entity
id: CargoMailTeleporter
- parent: [ BaseMachinePowered, ConstructibleMachine ]
+ parent: [ BaseMachinePowered, ConstructibleMachine, BaseConstructibleMachineDestructible ]
name: mail teleporter
description: Periodically teleports in mail to deliver across the station.
components:
@@ -29,8 +29,6 @@
map: [ "enum.PowerDeviceVisualLayers.Powered" ]
- type: Damageable
damageModifierSet: StructuralMetallicStrong
- - type: Injurable
- damageContainer: StructuralInorganic
- type: ApcPowerReceiver
powerLoad: 1000
- type: Appearance
diff --git a/Resources/Prototypes/Entities/Structures/Machines/medical_scanner.yml b/Resources/Prototypes/Entities/Structures/Machines/medical_scanner.yml
index 79aa7c2747..f3dbe73461 100644
--- a/Resources/Prototypes/Entities/Structures/Machines/medical_scanner.yml
+++ b/Resources/Prototypes/Entities/Structures/Machines/medical_scanner.yml
@@ -1,6 +1,6 @@
- type: entity
id: MedicalScanner
- parent: BaseMachinePowered
+ parent: [ BaseMachinePowered, BaseConstructibleMachineDestructible ]
name: medical scanner
description: A bulky medical scanner.
components:
@@ -52,21 +52,15 @@
machine_parts: !type:Container
- type: Damageable
damageModifierSet: StrongMetallic
- - type: Injurable
- damageContainer: StructuralInorganic
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
- damage: 100
+ damage: 175
behaviors:
- !type:PlaySoundBehavior
sound:
collection: MetalGlassBreak
- - !type:ChangeConstructionNodeBehavior
- node: machineFrame
- - !type:DoActsBehavior
- acts: ["Destruction"]
- type: Machine
board: MedicalScannerMachineCircuitboard
- type: WiresPanel
diff --git a/Resources/Prototypes/Entities/Structures/Machines/microwave.yml b/Resources/Prototypes/Entities/Structures/Machines/microwave.yml
index edc367a934..24304b809f 100644
--- a/Resources/Prototypes/Entities/Structures/Machines/microwave.yml
+++ b/Resources/Prototypes/Entities/Structures/Machines/microwave.yml
@@ -1,6 +1,6 @@
- type: entity
id: KitchenMicrowave
- parent: [ BaseMachinePowered, SmallConstructibleMachine ]
+ parent: [ BaseMachinePowered, SmallConstructibleMachine, BaseSmallConstructibleMachineDestructible ]
name: microwave
description: It's magic.
components:
@@ -79,17 +79,12 @@
- type: Destructible
thresholds:
- trigger: # Excess damage, don't spawn entities
- !type:DamageTrigger
- damage: 200
- behaviors:
- - !type:DoActsBehavior
- acts: ["Destruction"]
- - trigger:
!type:DamageTrigger
damage: 100
behaviors:
- - !type:DoActsBehavior
- acts: ["Breakage"]
+ - !type:PlaySoundBehavior
+ sound:
+ collection: MetalGlassBreak
- type: Explosive
explosionType: Default
maxIntensity: 10
diff --git a/Resources/Prototypes/Entities/Structures/Machines/reagent_grinder.yml b/Resources/Prototypes/Entities/Structures/Machines/reagent_grinder.yml
index 213e6df5ea..bbfb2c2d80 100644
--- a/Resources/Prototypes/Entities/Structures/Machines/reagent_grinder.yml
+++ b/Resources/Prototypes/Entities/Structures/Machines/reagent_grinder.yml
@@ -1,6 +1,6 @@
- type: entity
id: KitchenReagentGrinder
- parent: [ BaseMachinePowered, SmallConstructibleMachine ]
+ parent: [ BaseMachinePowered, SmallConstructibleMachine, BaseSmallConstructibleMachineDestructible ]
name: reagent grinder
description: From BlenderTech. Will It Blend? Let's find out!
components:
@@ -39,6 +39,14 @@
- TabletopMachineMask
layer:
- TabletopMachineLayer
+ - type: Destructible
+ thresholds:
+ - trigger: !type:DamageTrigger
+ damage: 100
+ behaviors:
+ - !type:PlaySoundBehavior
+ sound:
+ collection: MetalBreak
- type: Sprite
sprite: Structures/Machines/grinder.rsi
drawdepth: LargeObjects
diff --git a/Resources/Prototypes/Entities/Structures/Machines/salvage.yml b/Resources/Prototypes/Entities/Structures/Machines/salvage.yml
index dad4176617..c095e8fad0 100644
--- a/Resources/Prototypes/Entities/Structures/Machines/salvage.yml
+++ b/Resources/Prototypes/Entities/Structures/Machines/salvage.yml
@@ -1,5 +1,5 @@
- type: entity
- parent: [ BaseMachinePowered, ConstructibleMachine ]
+ parent: [ BaseMachinePowered, ConstructibleMachine, BaseConstructibleMachineDestructible ]
id: SalvageMagnet
name: salvage magnet
description: Pulls in salvage.
diff --git a/Resources/Prototypes/Entities/Structures/Machines/seed_extractor.yml b/Resources/Prototypes/Entities/Structures/Machines/seed_extractor.yml
index ec07294bfb..6572e86da6 100644
--- a/Resources/Prototypes/Entities/Structures/Machines/seed_extractor.yml
+++ b/Resources/Prototypes/Entities/Structures/Machines/seed_extractor.yml
@@ -1,7 +1,7 @@
- type: entity
id: SeedExtractor
name: seed extractor
- parent: [ BaseMachinePowered, ConstructibleMachine ]
+ parent: [ BaseMachinePowered, ConstructibleMachine, BaseConstructibleMachineDestructible ]
description: Extracts seeds from produce.
components:
- type: Sprite
@@ -25,6 +25,14 @@
- MachineMask
layer:
- MachineLayer
+ - type: Destructible
+ thresholds:
+ - trigger: !type:DamageTrigger
+ damage: 175
+ behaviors:
+ - !type:PlaySoundBehavior
+ sound:
+ collection: MetalBreak
- type: Appearance
- type: GenericVisualizer
visuals:
diff --git a/Resources/Prototypes/Entities/Structures/Machines/smartfridge.yml b/Resources/Prototypes/Entities/Structures/Machines/smartfridge.yml
index a99c3fdaf1..0832a62b67 100644
--- a/Resources/Prototypes/Entities/Structures/Machines/smartfridge.yml
+++ b/Resources/Prototypes/Entities/Structures/Machines/smartfridge.yml
@@ -1,5 +1,5 @@
- type: entity
- parent: [BaseStructureDynamic, ConstructibleMachine, BaseMachinePowered]
+ parent: [BaseStructureDynamic, ConstructibleMachine, BaseMachinePowered, BaseConstructibleMachineDestructible]
id: SmartFridge
name: SmartFridge
description: A refrigerated storage unit for keeping items cold and fresh.
@@ -98,21 +98,14 @@
- type: InteractionOutline
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 300
+ - trigger: !type:DamageTrigger
+ damage: 175
behaviors:
- !type:PlaySoundBehavior
sound:
- collection: MetalBreak
- - !type:ChangeConstructionNodeBehavior
- node: machineFrame
- - !type:DoActsBehavior
- acts: ["Destruction"]
+ collection: MetalGlassBreak
- type: Damageable
damageModifierSet: Metallic
- - type: Injurable
- damageContainer: StructuralInorganic
- type: DamageOnHighSpeedImpact
damage:
types:
diff --git a/Resources/Prototypes/Entities/Structures/Machines/stasisbed.yml b/Resources/Prototypes/Entities/Structures/Machines/stasisbed.yml
index 626c42213f..a47b5cacdc 100644
--- a/Resources/Prototypes/Entities/Structures/Machines/stasisbed.yml
+++ b/Resources/Prototypes/Entities/Structures/Machines/stasisbed.yml
@@ -1,7 +1,7 @@
- type: entity
id: StasisBed
name: stasis bed
- parent: [ BaseMachinePowered, ConstructibleMachine ]
+ parent: [ BaseMachinePowered, ConstructibleMachine, BaseConstructibleMachineDestructible ]
description: A bed that massively slows down the patient's metabolism and prevents bodily decay, allowing more time to administer a proper treatment for stabilization.
components:
- type: StasisBed
@@ -31,21 +31,14 @@
- type: ExtensionCableReceiver
- type: Damageable
damageModifierSet: Metallic
- - type: Injurable
- damageContainer: Inorganic
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 75
+ - trigger: !type:DamageTrigger
+ damage: 175
behaviors:
- - !type:DoActsBehavior
- acts: ["Destruction"]
- - !type:SpawnEntitiesBehavior
- spawn:
- SheetSteel1:
- min: 1
- max: 2
+ - !type:PlaySoundBehavior
+ sound:
+ collection: MetalBreak
- type: Strap
position: Down
rotation: -90
diff --git a/Resources/Prototypes/Entities/Structures/Machines/surveillance_camera_routers.yml b/Resources/Prototypes/Entities/Structures/Machines/surveillance_camera_routers.yml
index e94436ef77..f345fa3988 100644
--- a/Resources/Prototypes/Entities/Structures/Machines/surveillance_camera_routers.yml
+++ b/Resources/Prototypes/Entities/Structures/Machines/surveillance_camera_routers.yml
@@ -1,6 +1,6 @@
- type: entity
abstract: true
- parent: [ BaseMachinePowered, ConstructibleMachine ]
+ parent: [ BaseMachinePowered, ConstructibleMachine, BaseConstructibleMachineDestructible ]
id: SurveillanceCameraRouterBase
name: camera router
description: A surveillance camera router. It routes. Perhaps.
@@ -33,6 +33,14 @@
enum.PowerDeviceVisualLayers.Powered:
True: { visible: true }
False: { visible: false }
+ - type: Destructible
+ thresholds:
+ - trigger: !type:DamageTrigger
+ damage: 175
+ behaviors:
+ - !type:PlaySoundBehavior
+ sound:
+ collection: MetalBreak
- type: Appearance
- type: AmbientOnPowered
- type: AmbientSound
@@ -134,7 +142,7 @@
- type: entity
abstract: true
- parent: [ BaseMachinePowered, ConstructibleMachine ]
+ parent: [ BaseMachinePowered, ConstructibleMachine, BaseConstructibleMachineDestructible ]
id: SurveillanceCameraWirelessRouterBase
name: wireless camera router
description: A wireless surveillance camera router. It routes. Perhaps.
@@ -167,6 +175,14 @@
enum.PowerDeviceVisualLayers.Powered:
True: { visible: true }
False: { visible: false }
+ - type: Destructible
+ thresholds:
+ - trigger: !type:DamageTrigger
+ damage: 175
+ behaviors:
+ - !type:PlaySoundBehavior
+ sound:
+ collection: MetalBreak
- type: Appearance
- type: AmbientOnPowered
- type: AmbientSound
diff --git a/Resources/Prototypes/Entities/Structures/Machines/telecomms.yml b/Resources/Prototypes/Entities/Structures/Machines/telecomms.yml
index fcb97f60d9..69e875d945 100644
--- a/Resources/Prototypes/Entities/Structures/Machines/telecomms.yml
+++ b/Resources/Prototypes/Entities/Structures/Machines/telecomms.yml
@@ -1,5 +1,5 @@
- type: entity
- parent: [ BaseMachinePowered, ConstructibleMachine ]
+ parent: [ BaseMachinePowered, ConstructibleMachine, BaseConstructibleMachineDestructible ]
id: TelecomServer
name: telecommunication server
description: When powered and filled with encryption keys it allows radio headset communication.
@@ -158,17 +158,12 @@
- MachineLayer
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 100
+ - trigger: !type:DamageTrigger
+ damage: 175
behaviors:
- !type:PlaySoundBehavior
sound:
collection: MetalBreak
- - !type:ChangeConstructionNodeBehavior
- node: machineFrame
- - !type:DoActsBehavior
- acts: ["Destruction"]
- type: Machine
board: TelecomServerCircuitboard
- type: WiresPanel
diff --git a/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml b/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml
index de155db63d..aac88c7fb0 100644
--- a/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml
+++ b/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml
@@ -2,7 +2,7 @@
- type: entity
id: VendingMachine
- parent: BaseMachinePowered
+ parent: [ BaseMachinePowered, BaseMachineDestructible ]
name: vending machine
description: Just add capitalism!
abstract: true
@@ -38,21 +38,17 @@
density: 200
- type: Destructible
thresholds:
- - trigger: # Excess damage, don't do anything
- !type:DamageTrigger
- damage: 200
+ - trigger: !type:DamageTrigger
+ damage: 175
behaviors:
- !type:PlaySoundBehavior
sound:
collection: MetalGlassBreak
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- - trigger:
- !type:DamageTrigger
- damage: 100
+ - trigger: !type:DamageTrigger
+ damage: 75
behaviors:
- !type:DoActsBehavior
- acts: ["Breakage"]
+ acts: [ "Breakage" ]
- !type:EjectVendorItems
- type: Repairable
doAfterDelay: 8
diff --git a/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/binary.yml b/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/binary.yml
index 5c52d6fb88..83a5ef8c03 100644
--- a/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/binary.yml
+++ b/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/binary.yml
@@ -496,7 +496,7 @@
- AirVent
- type: entity
- parent: [ BaseMachine, ConstructibleMachine ]
+ parent: [ BaseMachine, ConstructibleMachine, BaseConstructibleMachineDestructible ]
id: GasRecycler
name: gas recycler
description: Recycles carbon dioxide and nitrous oxide. Heater and compressor not included.
@@ -553,15 +553,11 @@
thresholds:
- trigger:
!type:DamageTrigger
- damage: 100
+ damage: 175
behaviors:
- !type:PlaySoundBehavior
sound:
collection: MetalGlassBreak
- - !type:ChangeConstructionNodeBehavior
- node: machineFrame
- - !type:DoActsBehavior
- acts: ["Destruction"]
- type: Machine
board: GasRecyclerMachineCircuitboard
- type: AtmosMonitoringConsoleDevice
diff --git a/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/pipes.yml b/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/pipes.yml
index 260c998c5e..7716777560 100644
--- a/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/pipes.yml
+++ b/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/pipes.yml
@@ -1,7 +1,7 @@
- type: entity
abstract: true
parent: BaseItem
- id: GasPipeSansLayers
+ id: GasPipeSansLayersIndestructible
name: gas pipe
description: Holds gas.
placement:
@@ -13,15 +13,41 @@
size: Normal
- type: Transform
anchored: true
- - type: Damageable
- damageModifierSet: Metallic
- - type: Injurable
- damageContainer: StructuralInorganic
- type: SubFloorHide
- type: CollideOnAnchor
- type: Anchorable
- type: Rotatable
increment: 90
+ - type: Sprite
+ sprite: Structures/Piping/Atmospherics/pipe.rsi
+ drawdepth: ThinPipe
+ visible: false
+ - type: Appearance
+ - type: PipeAppearance
+ - type: PipeColorVisuals
+ - type: NodeContainer
+ - type: PipeRestrictOverlap
+ - type: AtmosUnsafeUnanchor
+ - type: AtmosPipeColor
+ - type: AtmosMonitoringConsoleDevice
+ - type: Tag
+ tags:
+ - Pipe
+ - type: Physics
+ canCollide: false
+ bodyType: static
+ - type: StaticPrice
+ price: 30
+
+- type: entity
+ abstract: true
+ parent: GasPipeSansLayersIndestructible
+ id: GasPipeSansLayers
+ components:
+ - type: Damageable
+ damageModifierSet: Metallic
+ - type: Injurable
+ damageContainer: StructuralInorganic
- type: Destructible
thresholds:
- trigger: # for nukes
@@ -47,31 +73,10 @@
offset: 0
- !type:DoActsBehavior
acts: ["Breakage"]
- - type: Sprite
- sprite: Structures/Piping/Atmospherics/pipe.rsi
- drawdepth: ThinPipe
- visible: false
- - type: Appearance
- - type: PipeAppearance
- - type: PipeColorVisuals
- - type: NodeContainer
- - type: PipeRestrictOverlap
- - type: AtmosUnsafeUnanchor
- - type: AtmosPipeColor
- - type: AtmosMonitoringConsoleDevice
- - type: Tag
- tags:
- - Pipe
- - type: Physics
- canCollide: false
- bodyType: static
- - type: StaticPrice
- price: 30
- type: entity
abstract: true
- parent: GasPipeSansLayers
- id: GasPipeBase
+ id: BaseGasPipeLayers
components:
- type: AtmosPipeLayers
spriteLayersRsiPaths:
@@ -80,6 +85,11 @@
Secondary: Structures/Piping/Atmospherics/pipe_alt1.rsi
Tertiary: Structures/Piping/Atmospherics/pipe_alt2.rsi
+- type: entity
+ abstract: true
+ parent: [ GasPipeSansLayers, BaseGasPipeLayers ]
+ id: GasPipeBase
+
#Note: The PipeDirection of the PipeNode should be the south-facing version, because the entity starts at an angle of 0 (south)
- type: entity
@@ -301,7 +311,7 @@
- type: entity
id: GasPipeBroken
- parent: GasPipeBase
+ parent: [ GasPipeSansLayersIndestructible, BaseGasPipeLayers ]
name: broken pipe
description: It used to hold gas.
components:
@@ -319,8 +329,12 @@
node: broken
- type: Item
size: Small
+ - type: Damageable
+ damageModifierSet: Metallic
+ - type: Injurable
+ damageContainer: StructuralInorganic
- type: Destructible
- thresholds: # override parent to avoid recursive destruction
+ thresholds:
- trigger:
!type:DamageTrigger
damage: 100
diff --git a/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/portable.yml b/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/portable.yml
index 8b9bf5e7cc..665e663d61 100644
--- a/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/portable.yml
+++ b/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/portable.yml
@@ -1,6 +1,6 @@
- type: entity
id: PortableScrubber
- parent: [BaseMachinePowered, SmallConstructibleMachine, StructureWheeled]
+ parent: [BaseMachinePowered, SmallConstructibleMachine, StructureWheeled, BaseSmallConstructibleMachineDestructible]
name: portable scrubber
description: It scrubs, portably!
components:
@@ -69,34 +69,22 @@
board: PortableScrubberMachineCircuitBoard
- type: Damageable
damageModifierSet: Metallic
- - type: Injurable
- damageContainer: StructuralInorganic
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
- damage: 300
+ damage: 100
behaviors:
- !type:PlaySoundBehavior
sound:
collection: MetalBreak
- - !type:SpawnEntitiesBehavior
- spawn:
- SheetSteel1:
- min: 1
- max: 3
- SheetGlass1:
- min: 1
- max: 2
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- type: GuideHelp
guides:
- PortableScrubber
- type: entity
id: SpaceHeater
- parent: [BaseMachinePowered, ConstructibleMachine]
+ parent: [BaseMachinePowered, ConstructibleMachine, BaseConstructibleMachineDestructible]
name: space heater
description: A bluespace technology device that alters local temperature. Commonly referred to as a "Space Heater".
suffix: Unanchored
@@ -155,24 +143,15 @@
atmospheric: true
- type: Damageable
damageModifierSet: Metallic
- - type: Injurable
- damageContainer: StructuralInorganic
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
- damage: 300
+ damage: 175
behaviors:
- !type:PlaySoundBehavior
sound:
collection: MetalBreak
- - !type:SpawnEntitiesBehavior
- spawn:
- SheetSteel1:
- min: 1
- max: 3
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- type: GuideHelp
guides:
- Thermomachines
diff --git a/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/unary.yml b/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/unary.yml
index 72936097dc..ea2c874236 100644
--- a/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/unary.yml
+++ b/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/unary.yml
@@ -213,7 +213,7 @@
- AirInjector
- type: entity
- parent: [ BaseMachinePowered, ConstructibleMachine ]
+ parent: [ BaseMachinePowered, ConstructibleMachine, BaseConstructibleMachineDestructible ]
id: BaseGasThermoMachine
name: thermomachine
abstract: true
@@ -388,7 +388,7 @@
board: HellfireHeaterMachineCircuitBoard
- type: entity
- parent: [ SolutionTank, SolutionHuge, BaseMachinePowered, SmallConstructibleMachine ]
+ parent: [ SolutionTank, SolutionHuge, BaseMachinePowered, SmallConstructibleMachine, BaseSmallConstructibleMachineDestructible ]
id: BaseGasCondenser
name: condenser
description: Condenses gases into liquids. Now we just need some plumbing.
@@ -445,8 +445,6 @@
!type:DamageTrigger
damage: 100
behaviors:
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- !type:SpillBehavior
solution: tank
- !type:PlaySoundBehavior
diff --git a/Resources/Prototypes/Entities/Structures/Power/Generation/generators.yml b/Resources/Prototypes/Entities/Structures/Power/Generation/generators.yml
index 4c3c3749eb..fb2f17b657 100644
--- a/Resources/Prototypes/Entities/Structures/Power/Generation/generators.yml
+++ b/Resources/Prototypes/Entities/Structures/Power/Generation/generators.yml
@@ -6,8 +6,6 @@
id: BaseGenerator
description: A high efficiency thermoelectric generator.
name: generator
- placement:
- mode: SnapgridCenter
components:
- type: AmbientSound
range: 5
@@ -226,28 +224,67 @@
# RTG - no fuel requirement
- type: entity
- parent: BaseGenerator
+ abstract: true
+ parent: BaseMachine
+ id: BaseRTG
+ components:
+ - type: Fixtures
+ fixtures:
+ fix1:
+ shape:
+ !type:PhysShapeAabb
+ bounds: "-0.4,-0.5,0.4,0.3"
+ density: 190
+ mask:
+ - MachineMask
+ layer:
+ - MachineLayer
+ - type: PowerSupplier
+ supplyRate: 10000 # supposed to be low power at no fuel cost to power derelicts
+ supplyRampRate: 500
+ supplyRampTolerance: 500
+ - type: AmbientSound
+ range: 5
+ sound:
+ path: /Audio/Ambience/Objects/buzzing.ogg
+ - type: Sprite
+ sprite: Structures/Power/Generation/rtg.rsi
+ snapCardinals: true
+ - type: PowerMonitoringDevice
+ group: Generator
+ loadNode: output
+ sprite: Structures/Power/Generation/rtg.rsi
+ - type: NodeContainer
+ examinable: true
+ nodes:
+ output:
+ !type:CableDeviceNode
+ nodeGroupID: HVPower
+ - type: PacifismDangerousAttack
+ - type: StaticPrice
+ price: 500
+ - type: Electrified
+ onHandInteract: false
+ onInteractUsing: false
+ onBump: false
+ requirePower: true
+ highVoltageNode: output
+ - type: GuideHelp
+ guides:
+ - RTG
+ - Power
+
+- type: entity
+ parent: BaseRTG
id: GeneratorRTG
name: RTG
description: A Radioisotope Thermoelectric Generator for long term power.
suffix: 10kW
components:
- - type: PowerSupplier
- supplyRate: 10000 # supposed to be low power at no fuel cost to power derelicts
- type: Sprite
- sprite: Structures/Power/Generation/rtg.rsi
state: rtg
- type: PowerMonitoringDevice
- sprite: Structures/Power/Generation/rtg.rsi
state: rtg
- - type: AmbientSound
- range: 5
- sound:
- path: /Audio/Ambience/Objects/buzzing.ogg
- - type: GuideHelp
- guides:
- - RTG
- - Power
- type: Destructible
thresholds:
- trigger:
@@ -258,6 +295,7 @@
sound:
collection: MetalBreak
- !type:SpawnEntitiesBehavior
+ offset: 0
spawn:
GeneratorRTGDamaged:
min: 1
@@ -268,21 +306,17 @@
# TODO: need radioactive fallout when destroyed
- type: entity
- parent: GeneratorRTG
+ parent: BaseRTG
id: GeneratorRTGDamaged
name: damaged RTG
description: A Radioisotope Thermoelectric Generator for long term power. This one has damaged shielding.
suffix: 10kW
components:
- - type: PowerSupplier
- supplyRate: 10000
- type: Sprite
- sprite: Structures/Power/Generation/rtg.rsi
layers:
- state: rtg_damaged
- state: rtg_glow
- type: PowerMonitoringDevice
- sprite: Structures/Power/Generation/rtg.rsi
state: rtg_damaged
- type: RadiationSource # ideally only when opened.
intensity: 2
diff --git a/Resources/Prototypes/Entities/Structures/Power/Generation/portable_generator.yml b/Resources/Prototypes/Entities/Structures/Power/Generation/portable_generator.yml
index a685a5e779..8a1f90677f 100644
--- a/Resources/Prototypes/Entities/Structures/Power/Generation/portable_generator.yml
+++ b/Resources/Prototypes/Entities/Structures/Power/Generation/portable_generator.yml
@@ -6,7 +6,7 @@
- type: entity
abstract: true
id: PortableGeneratorBase
- parent: [ BaseMachine, SmallConstructibleMachine, StructureWheeled]
+ parent: [ BaseMachine, SmallConstructibleMachine, StructureWheeled, BaseSmallConstructibleMachineDestructible]
components:
# Basic properties
- type: Transform
@@ -64,10 +64,6 @@
- !type:PlaySoundBehavior
sound:
collection: MetalBreak
- - !type:ChangeConstructionNodeBehavior
- node: machineFrame
- - !type:DoActsBehavior
- acts: ["Destruction"]
- type: GuideHelp
guides:
- PortableGenerator
@@ -332,13 +328,6 @@
behaviors:
- !type:SpillBehavior
solution: tank
- - !type:PlaySoundBehavior
- sound:
- collection: MetalBreak
- - !type:ChangeConstructionNodeBehavior
- node: machineFrame
- - !type:DoActsBehavior
- acts: ["Destruction"]
- trigger:
!type:DamageTypeTrigger
damageType: Piercing
diff --git a/Resources/Prototypes/Entities/Structures/Power/Generation/teg.yml b/Resources/Prototypes/Entities/Structures/Power/Generation/teg.yml
index dc537c35c2..1a2218788c 100644
--- a/Resources/Prototypes/Entities/Structures/Power/Generation/teg.yml
+++ b/Resources/Prototypes/Entities/Structures/Power/Generation/teg.yml
@@ -2,7 +2,7 @@
id: TegCenter
name: thermo-electric generator
description: A high efficiency generator that uses energy transfer between hot and cold gases to produce electricity.
- parent: BaseMachinePowered
+ parent: [ BaseMachinePowered, BaseMachineDestructible ]
placement:
mode: SnapgridCenter
components:
@@ -109,7 +109,7 @@
id: TegCirculator
name: circulator
description: Passes gas through the thermo-electric generator to exchange heat. Has an inlet and outlet port.
- parent: BaseMachine
+ parent: [ BaseMachine, BaseMachineDestructible ]
placement:
mode: SnapgridCenter
components:
diff --git a/Resources/Prototypes/Entities/Structures/Power/cables.yml b/Resources/Prototypes/Entities/Structures/Power/cables.yml
index 94a51cc0dc..6812163c09 100644
--- a/Resources/Prototypes/Entities/Structures/Power/cables.yml
+++ b/Resources/Prototypes/Entities/Structures/Power/cables.yml
@@ -91,8 +91,6 @@
CableHVStack1:
min: 1
max: 1
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- type: CableVisualizer
statePrefix: hvcable_
# TODO make this change on power
@@ -145,8 +143,6 @@
CableMVStack1:
min: 1
max: 1
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- type: CableVisualizer
statePrefix: mvcable_
extraLayerPrefix: mvstripes_
@@ -194,8 +190,6 @@
CableApcStack1:
min: 1
max: 1
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- type: CableVisualizer
statePrefix: lvcable_
diff --git a/Resources/Prototypes/Entities/Structures/Power/chargers.yml b/Resources/Prototypes/Entities/Structures/Power/chargers.yml
index 77e4d69ee8..43b9d1975e 100644
--- a/Resources/Prototypes/Entities/Structures/Power/chargers.yml
+++ b/Resources/Prototypes/Entities/Structures/Power/chargers.yml
@@ -1,6 +1,6 @@
- type: entity
abstract: true
- parent: [BaseMachinePowered, ConstructibleMachine]
+ parent: [BaseMachinePowered, ConstructibleMachine, BaseConstructibleMachineDestructible]
id: BaseRecharger
placement:
mode: SnapgridCenter
@@ -21,11 +21,9 @@
thresholds:
- trigger:
!type:DamageTrigger
- damage: 40
+ damage: 175
behaviors:
- !type:EmptyAllContainersBehaviour
- - !type:DoActsBehavior
- acts: ["Destruction"]
- !type:PlaySoundBehavior
sound:
collection: MetalBreak
diff --git a/Resources/Prototypes/Entities/Structures/Power/smes.yml b/Resources/Prototypes/Entities/Structures/Power/smes.yml
index 612947af07..d8e6f5a305 100644
--- a/Resources/Prototypes/Entities/Structures/Power/smes.yml
+++ b/Resources/Prototypes/Entities/Structures/Power/smes.yml
@@ -2,7 +2,7 @@
- type: entity
abstract: true
id: BaseSMES
- parent: [ BaseMachine, ConstructibleMachine ]
+ parent: [ BaseMachine, ConstructibleMachine, BaseConstructibleMachineDestructible ]
name: SMES
description: A high-capacity superconducting magnetic energy storage (SMES) unit.
placement:
@@ -87,8 +87,14 @@
mediumVoltageNode: output
- type: Damageable
damageModifierSet: StructuralMetallicStrong
- - type: Injurable
- damageContainer: StructuralInorganic
+ - type: Destructible
+ thresholds:
+ - trigger: !type:DamageTrigger
+ damage: 175
+ behaviors:
+ - !type:PlaySoundBehavior
+ sound:
+ collection: MetalBreak
- type: BatterySensor
- type: DeviceNetwork
deviceNetId: AtmosDevices
diff --git a/Resources/Prototypes/Entities/Structures/Power/substation.yml b/Resources/Prototypes/Entities/Structures/Power/substation.yml
index 786621ee5d..d868e1bc9d 100644
--- a/Resources/Prototypes/Entities/Structures/Power/substation.yml
+++ b/Resources/Prototypes/Entities/Structures/Power/substation.yml
@@ -74,7 +74,7 @@
- type: entity
abstract: true
id: BaseSubstation
- parent: [ CoreSubstation, BaseMachine, ConstructibleMachine ]
+ parent: [ CoreSubstation, BaseMachine, ConstructibleMachine, BaseConstructibleMachineDestructible ]
name: substation
description: Reduces the voltage of electricity put into it.
placement:
@@ -104,19 +104,12 @@
thresholds:
- trigger:
!type:DamageTrigger
- damage: 100
+ damage: 175
behaviors:
- - !type:DoActsBehavior
- acts: ["Destruction"]
- !type:PlaySoundBehavior
sound:
collection: MetalGlassBreak
- !type:ExplodeBehavior
- - !type:SpawnEntitiesBehavior
- spawn:
- MachineFrameDestroyed:
- min: 1
- max: 1
- !type:SpawnGasBehavior
gasMixture:
volume: 1000
diff --git a/Resources/Prototypes/Entities/Structures/Shuttles/cannons.yml b/Resources/Prototypes/Entities/Structures/Shuttles/cannons.yml
index df0c803ea1..0a613da695 100644
--- a/Resources/Prototypes/Entities/Structures/Shuttles/cannons.yml
+++ b/Resources/Prototypes/Entities/Structures/Shuttles/cannons.yml
@@ -41,7 +41,7 @@
- type: entity
id: ShuttleGunSvalinnMachineGun
- parent: [ ShuttleGunBase, ConstructibleMachine]
+ parent: [ ShuttleGunBase, ConstructibleMachine, BaseConstructibleMachineDestructible]
name: LSE-400c "Svalinn machine gun"
description: Basic stationary laser unit. Effective against live targets and electronics. Uses regular power cells to fire, and has an extremely high rate of fire.
categories: [ DoNotMap ]
@@ -58,16 +58,6 @@
machine_board: !type:Container
machine_parts: !type:Container
cell_slot: !type:ContainerSlot
- - type: Destructible
- thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 150
- behaviors:
- - !type:ChangeConstructionNodeBehavior
- node: machineFrame
- - !type:DoActsBehavior
- acts: ["Destruction"]
- type: Gun
fireRate: 5
useKey: false
@@ -99,7 +89,7 @@
- type: entity
id: ShuttleGunPerforator
- parent: [ ShuttleGunBase, ConstructibleMachine]
+ parent: [ ShuttleGunBase, ConstructibleMachine, BaseConstructibleMachineDestructible]
name: LSE-1200c "Perforator"
description: Advanced stationary laser unit. Annihilates electronics and is extremely dangerous to health! Uses the power cage to fire.
categories: [ DoNotMap ]
@@ -116,16 +106,6 @@
machine_board: !type:Container
machine_parts: !type:Container
cell_slot: !type:ContainerSlot
- - type: Destructible
- thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 300
- behaviors:
- - !type:ChangeConstructionNodeBehavior
- node: machineFrame
- - !type:DoActsBehavior
- acts: ["Destruction"]
- type: Gun
fireRate: 1
soundGunshot:
@@ -159,7 +139,7 @@
- type: entity
id: ShuttleGunFriendship
- parent: [ShuttleGunBase, ConstructibleMachine]
+ parent: [ShuttleGunBase, ConstructibleMachine, BaseConstructibleMachineDestructible]
name: EXP-320g "Friendship"
description: A small stationary grenade launcher that holds 2 grenades.
categories: [ DoNotMap ]
@@ -175,16 +155,6 @@
machine_board: !type:Container
machine_parts: !type:Container
ballistic-ammo: !type:Container
- - type: Destructible
- thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 200
- behaviors:
- - !type:ChangeConstructionNodeBehavior
- node: machineFrame
- - !type:DoActsBehavior
- acts: ["Destruction"]
- type: Gun
projectileSpeed: 80
fireRate: 1
@@ -213,7 +183,7 @@
- type: entity
id: ShuttleGunDuster
- parent: [ShuttleGunBase, ConstructibleMachine]
+ parent: [ShuttleGunBase, ConstructibleMachine, BaseConstructibleMachineDestructible]
name: EXP-2100g "Duster"
description: A powerful stationary grenade launcher. A cartridge is required for use.
categories: [ DoNotMap ]
@@ -229,16 +199,6 @@
machine_board: !type:Container
machine_parts: !type:Container
gun_magazine: !type:ContainerSlot
- - type: Destructible
- thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 350
- behaviors:
- - !type:ChangeConstructionNodeBehavior
- node: machineFrame
- - !type:DoActsBehavior
- acts: ["Destruction"]
- type: Gun
projectileSpeed: 40
fireRate: 0.3
@@ -312,7 +272,7 @@
- type: entity
id: ShuttleGunKinetic
- parent: [ ShuttleGunBase, ConstructibleMachine]
+ parent: [ ShuttleGunBase, ConstructibleMachine, BaseConstructibleMachineDestructible]
name: PTK-800 "Matter Dematerializer"
description: Salvage stationary mining turret. Gradually accumulates charges on its own, extremely effective for asteroid excavation.
categories: [ DoNotMap ]
@@ -326,16 +286,6 @@
containers:
machine_board: !type:Container
machine_parts: !type:Container
- - type: Destructible
- thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 100
- behaviors:
- - !type:ChangeConstructionNodeBehavior
- node: machineFrame
- - !type:DoActsBehavior
- acts: ["Destruction"]
- type: Gun
projectileSpeed: 20
fireRate: 2
diff --git a/Resources/Prototypes/Entities/Structures/Shuttles/thrusters.yml b/Resources/Prototypes/Entities/Structures/Shuttles/thrusters.yml
index 2b2418816a..d42f2f2887 100644
--- a/Resources/Prototypes/Entities/Structures/Shuttles/thrusters.yml
+++ b/Resources/Prototypes/Entities/Structures/Shuttles/thrusters.yml
@@ -40,21 +40,6 @@
- type: ApcPowerReceiver
powerLoad: 1500
- type: ExtensionCableReceiver
- - type: Damageable
- damageModifierSet: Electronic
- - type: Injurable
- damageContainer: StructuralInorganic
- - type: Destructible
- thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 300 # Changed 100->300 because impact damage is real
- behaviors:
- - !type:DoActsBehavior
- acts: ["Destruction"]
- - !type:PlaySoundBehavior
- sound:
- collection: MetalBreak
- type: StaticPrice
price: 300
- type: GuideHelp
@@ -68,11 +53,15 @@
components:
- type: Machine
board: ThrusterMachineCircuitboard
+ - type: Damageable
+ damageModifierSet: Electronic
+ - type: Injurable
+ damageContainer: StructuralInorganic
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
- damage: 300
+ damage: 300 # Changed 100->300 because impact damage is real
behaviors:
- !type:DoActsBehavior
acts: ["Destruction"]
@@ -114,7 +103,7 @@
- type: entity
id: ThrusterLarge
name: large thruster
- parent: [ BaseThruster]
+ parent: BaseThruster
placement:
mode: AlignTileAny
components:
@@ -206,7 +195,7 @@
- type: entity
id: Gyroscope
- parent: [ BaseThruster, ConstructibleMachine ]
+ parent: [ BaseThruster, ConstructibleMachine, BaseConstructibleMachineDestructible ]
name: gyroscope
description: Increases the shuttle's potential angular rotation.
components:
@@ -247,15 +236,11 @@
thresholds:
- trigger:
!type:DamageTrigger
- damage: 100
+ damage: 175
behaviors:
- - !type:DoActsBehavior
- acts: ["Destruction"]
- !type:PlaySoundBehavior
sound:
collection: MetalBreak
- - !type:ChangeConstructionNodeBehavior
- node: machineFrame
- type: Damageable
damageModifierSet: Electronic
- type: Injurable
diff --git a/Resources/Prototypes/Entities/Structures/Storage/Canisters/gas_canisters.yml b/Resources/Prototypes/Entities/Structures/Storage/Canisters/gas_canisters.yml
index f1439caedf..d31e94ede5 100644
--- a/Resources/Prototypes/Entities/Structures/Storage/Canisters/gas_canisters.yml
+++ b/Resources/Prototypes/Entities/Structures/Storage/Canisters/gas_canisters.yml
@@ -69,18 +69,13 @@
type: GasCanisterBoundUserInterface
- type: Destructible
thresholds:
- - trigger:
+ - trigger: &DamageTrigger300
!type:DamageTrigger
damage: 300
behaviors:
- !type:PlaySoundBehavior
sound:
collection: MetalBreak
- - !type:SpawnEntitiesBehavior
- spawn:
- GasCanisterBrokenBase:
- min: 1
- max: 1
- !type:DoActsBehavior
acts: [ "Destruction" ]
- !type:DumpCanisterBehavior
@@ -221,21 +216,13 @@
temperature: 293.15
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 300
+ - trigger: *DamageTrigger300
behaviors:
- - !type:PlaySoundBehavior
- sound:
- collection: MetalBreak
- !type:SpawnEntitiesBehavior
spawn:
AirCanisterBroken:
min: 1
max: 1
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- - !type:DumpCanisterBehavior
- type: entity
parent: GasCanister
@@ -266,21 +253,13 @@
temperature: 293.15
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 300
+ - trigger: *DamageTrigger300
behaviors:
- - !type:PlaySoundBehavior
- sound:
- collection: MetalBreak
- !type:SpawnEntitiesBehavior
spawn:
OxygenCanisterBroken:
min: 1
max: 1
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- - !type:DumpCanisterBehavior
- type: entity
id: LiquidOxygenCanister
@@ -326,21 +305,13 @@
temperature: 293.15
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 300
+ - trigger: *DamageTrigger300
behaviors:
- - !type:PlaySoundBehavior
- sound:
- collection: MetalBreak
- !type:SpawnEntitiesBehavior
spawn:
NitrogenCanisterBroken:
min: 1
max: 1
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- - !type:DumpCanisterBehavior
- type: entity
id: LiquidNitrogenCanister
@@ -386,21 +357,13 @@
temperature: 293.15
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 300
+ - trigger: *DamageTrigger300
behaviors:
- - !type:PlaySoundBehavior
- sound:
- collection: MetalBreak
- !type:SpawnEntitiesBehavior
spawn:
CarbonDioxideCanisterBroken:
min: 1
max: 1
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- - !type:DumpCanisterBehavior
- type: Lock
locked: true
@@ -448,21 +411,13 @@
temperature: 293.15
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 300
+ - trigger: *DamageTrigger300
behaviors:
- - !type:PlaySoundBehavior
- sound:
- collection: MetalBreak
- !type:SpawnEntitiesBehavior
spawn:
PlasmaCanisterBroken:
min: 1
max: 1
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- - !type:DumpCanisterBehavior
- type: Lock
locked: true
@@ -495,21 +450,13 @@
temperature: 293.15
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 300
+ - trigger: *DamageTrigger300
behaviors:
- - !type:PlaySoundBehavior
- sound:
- collection: MetalBreak
- !type:SpawnEntitiesBehavior
spawn:
TritiumCanisterBroken:
min: 1
max: 1
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- - !type:DumpCanisterBehavior
- type: Lock
locked: true
@@ -542,21 +489,13 @@
temperature: 293.15
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 300
+ - trigger: *DamageTrigger300
behaviors:
- - !type:PlaySoundBehavior
- sound:
- collection: MetalBreak
- !type:SpawnEntitiesBehavior
spawn:
WaterVaporCanisterBroken:
min: 1
max: 1
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- - !type:DumpCanisterBehavior
- type: entity
parent: GasCanister
@@ -587,21 +526,13 @@
temperature: 293.15
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 300
+ - trigger: *DamageTrigger300
behaviors:
- - !type:PlaySoundBehavior
- sound:
- collection: MetalBreak
- !type:SpawnEntitiesBehavior
spawn:
AmmoniaCanisterBroken:
min: 1
max: 1
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- - !type:DumpCanisterBehavior
- type: Lock
locked: true
@@ -634,21 +565,13 @@
temperature: 293.15
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 300
+ - trigger: *DamageTrigger300
behaviors:
- - !type:PlaySoundBehavior
- sound:
- collection: MetalBreak
- !type:SpawnEntitiesBehavior
spawn:
NitrousOxideCanisterBroken:
min: 1
max: 1
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- - !type:DumpCanisterBehavior
- type: Lock
locked: true
@@ -681,21 +604,13 @@
temperature: 293.15
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 300
+ - trigger: *DamageTrigger300
behaviors:
- - !type:PlaySoundBehavior
- sound:
- collection: MetalBreak
- !type:SpawnEntitiesBehavior
spawn:
FrezonCanisterBroken:
min: 1
max: 1
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- - !type:DumpCanisterBehavior
- type: Lock
locked: true
diff --git a/Resources/Prototypes/Entities/Structures/Storage/Closets/Lockers/base_structurelockers.yml b/Resources/Prototypes/Entities/Structures/Storage/Closets/Lockers/base_structurelockers.yml
index 51a7f6058e..9f6de3bc2a 100644
--- a/Resources/Prototypes/Entities/Structures/Storage/Closets/Lockers/base_structurelockers.yml
+++ b/Resources/Prototypes/Entities/Structures/Storage/Closets/Lockers/base_structurelockers.yml
@@ -25,24 +25,6 @@
sprite: Structures/Storage/closet_labels.rsi
offset: "-0.065,0"
map: ["enum.PaperLabelVisuals.Layer"]
- - type: Destructible
- thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 50
- behaviors:
- - !type:DoActsBehavior
- acts: ["Destruction"]
- - !type:PlaySoundBehavior
- sound:
- collection: MetalBreak
- params:
- volume: -6
- - !type:SpawnEntitiesBehavior
- spawn:
- SheetSteel1:
- min: 1
- max: 2
- type: Construction
graph: ClosetSteelSecure
node: done
@@ -50,12 +32,6 @@
- entity_storage
- type: Paintable
group: Locker
-
-- type: entity
- id: LockerBaseSecure
- parent: LockerBase
- abstract: true
- components:
- type: Damageable
damageModifierSet: StructuralMetallic
- type: Injurable
diff --git a/Resources/Prototypes/Entities/Structures/Storage/Closets/Lockers/lockers.yml b/Resources/Prototypes/Entities/Structures/Storage/Closets/Lockers/lockers.yml
index 93244037cd..755928f6b9 100644
--- a/Resources/Prototypes/Entities/Structures/Storage/Closets/Lockers/lockers.yml
+++ b/Resources/Prototypes/Entities/Structures/Storage/Closets/Lockers/lockers.yml
@@ -23,7 +23,7 @@
# Basic
- type: entity
id: LockerSteel
- parent: LockerBaseSecure
+ parent: LockerBase
name: secure closet
components:
- type: Appearance
@@ -35,7 +35,7 @@
# Cargo
- type: entity
id: LockerQuarterMaster
- parent: LockerBaseSecure
+ parent: LockerBase
name: quartermaster's locker
components:
- type: Appearance
@@ -63,7 +63,7 @@
# Command
- type: entity
id: LockerCaptain
- parent: LockerBaseSecure
+ parent: LockerBase
name: captain's locker
components:
- type: Appearance
@@ -76,7 +76,7 @@
- type: entity
id: LockerHeadOfPersonnel
- parent: LockerBaseSecure
+ parent: LockerBase
name: head of personnel's locker
components:
- type: Appearance
@@ -90,7 +90,7 @@
# CE
- type: entity
id: LockerChiefEngineer
- parent: LockerBaseSecure
+ parent: LockerBase
name: chief engineer's locker
components:
- type: Appearance
@@ -279,7 +279,7 @@
# CMO
- type: entity
id: LockerChiefMedicalOfficer
- parent: LockerBaseSecure
+ parent: LockerBase
name: chief medical officer's locker
components:
- type: Appearance
@@ -320,7 +320,7 @@
# HoS
- type: entity
id: LockerHeadOfSecurity
- parent: LockerBaseSecure
+ parent: LockerBase
name: head of security's locker
components:
- type: Appearance
@@ -334,7 +334,7 @@
# Warden
- type: entity
id: LockerWarden
- parent: LockerBaseSecure
+ parent: LockerBase
name: warden's locker
components:
- type: Appearance
@@ -348,7 +348,7 @@
# Brigmedic
- type: entity
id: LockerBrigmedic
- parent: LockerBaseSecure
+ parent: LockerBase
name: brigmedic locker
components:
- type: Appearance
@@ -362,7 +362,7 @@
# Security Officer
- type: entity
id: LockerSecurity
- parent: LockerBaseSecure
+ parent: LockerBase
name: security officer's locker
components:
- type: Appearance
@@ -375,7 +375,7 @@
- type: entity
id: GunSafe
- parent: LockerBaseSecure
+ parent: LockerBase
name: gun safe
components:
- type: Appearance
@@ -427,7 +427,7 @@
isPlaceable: True
- type: entity
- parent: [ GenpopBase , LockerBaseSecure ]
+ parent: [ GenpopBase , LockerBase ]
id: LockerPrisoner
name: prisoner closet
description: It's a secure locker for an inmate's personal belongings during their time in prison.
@@ -535,7 +535,7 @@
- type: entity
id: LockerSyndicatePersonal
name: blood-red locker
- parent: LockerBaseSecure
+ parent: LockerBase
description: It's a personal storage unit with a blood-red design.
suffix: "Locked"
components:
@@ -549,7 +549,7 @@
# Bluespace
- type: entity
- parent: LockerBaseSecure
+ parent: LockerBase
id: LockerBluespaceStation
name: bluespace locker
description: Advanced locker technology.
@@ -583,7 +583,7 @@
- type: entity
id: LockerClown
name: clown locker
- parent: LockerBaseSecure
+ parent: LockerBase
components:
- type: Appearance
- type: AccessReader
@@ -597,7 +597,7 @@
- type: entity
id: LockerMime
name: mime locker
- parent: LockerBaseSecure
+ parent: LockerBase
components:
- type: Appearance
- type: AccessReader
@@ -611,7 +611,7 @@
- type: entity
id: LockerRepresentative
name: representative locker
- parent: LockerBaseSecure
+ parent: LockerBase
components:
- type: Appearance
- type: AccessReader
diff --git a/Resources/Prototypes/Entities/Structures/Storage/Closets/base_structureclosets.yml b/Resources/Prototypes/Entities/Structures/Storage/Closets/base_structureclosets.yml
index 4a84b69a09..42e45502ca 100644
--- a/Resources/Prototypes/Entities/Structures/Storage/Closets/base_structureclosets.yml
+++ b/Resources/Prototypes/Entities/Structures/Storage/Closets/base_structureclosets.yml
@@ -53,28 +53,6 @@
- type: PlaceableSurface
placeCentered: true
isPlaceable: false
- - type: Damageable
- damageModifierSet: StructuralMetallic
- - type: Injurable
- damageContainer: StructuralInorganic
- - type: Destructible
- thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 50
- behaviors:
- - !type:DoActsBehavior
- acts: ["Destruction"]
- - !type:PlaySoundBehavior
- sound:
- collection: MetalBreak
- params:
- volume: -6
- - !type:SpawnEntitiesBehavior
- spawn:
- SheetSteel1:
- min: 1
- max: 1
- type: GenericVisualizer
visuals:
enum.PaperLabelVisuals.HasLabel:
@@ -110,6 +88,28 @@
- entity_storage
- type: Paintable
group: Closet
+ - type: Damageable
+ damageModifierSet: StructuralMetallic
+ - type: Injurable
+ damageContainer: StructuralInorganic
+ - type: Destructible
+ thresholds:
+ - trigger:
+ !type:DamageTrigger
+ damage: 50
+ behaviors:
+ - !type:DoActsBehavior
+ acts: ["Destruction"]
+ - !type:PlaySoundBehavior
+ sound:
+ collection: MetalBreak
+ params:
+ volume: -6
+ - !type:SpawnEntitiesBehavior
+ spawn:
+ SheetSteel1:
+ min: 1
+ max: 1
#Wall Closet
- type: entity
diff --git a/Resources/Prototypes/Entities/Structures/Storage/Crates/base_structurecrates.yml b/Resources/Prototypes/Entities/Structures/Storage/Crates/base_structurecrates.yml
index b571b7b287..e9a9220d3b 100644
--- a/Resources/Prototypes/Entities/Structures/Storage/Crates/base_structurecrates.yml
+++ b/Resources/Prototypes/Entities/Structures/Storage/Crates/base_structurecrates.yml
@@ -1,30 +1,15 @@
- type: entity
+ abstract: true
parent: [ BaseStructureDynamic, BasePaperLabelableVisualized ]
- id: CrateGeneric
- categories: [ HideSpawnMenu ]
+ id: BaseCrate
name: crate
description: A large container for items.
components:
- type: Animateable
- type: Transform
noRot: true
- - type: Icon
- sprite: Structures/Storage/Crates/generic.rsi
- state: icon
- type: Sprite
noRot: true
- sprite: Structures/Storage/Crates/generic.rsi
- layers:
- - state: base
- map: ["enum.StorageVisualLayers.Base"]
- - state: closed
- map: ["enum.StorageVisualLayers.Door"]
- - state: welded
- visible: false
- map: ["enum.WeldableLayers.BaseWelded"]
- - state: paper
- sprite: Structures/Storage/Crates/labels.rsi
- map: ["enum.PaperLabelVisuals.Layer"]
- type: InteractionOutline
- type: Physics
- type: Fixtures
@@ -41,6 +26,38 @@
- type: EntityStorage
- type: PlaceableSurface
isPlaceable: false # defaults to closed.
+ - type: EntityStorageVisuals
+ stateDoorOpen: open
+ stateDoorClosed: closed
+ - type: ContainerContainer
+ containers:
+ entity_storage: !type:Container
+ paper_label: !type:ContainerSlot
+ - type: StaticPrice
+ price: 75
+ - type: RequireProjectileTarget
+
+- type: entity
+ parent: BaseCrate
+ id: CrateGeneric
+ categories: [ HideSpawnMenu ]
+ components:
+ - type: Icon
+ sprite: Structures/Storage/Crates/generic.rsi
+ state: icon
+ - type: Sprite
+ sprite: Structures/Storage/Crates/generic.rsi
+ layers:
+ - state: base
+ map: ["enum.StorageVisualLayers.Base"]
+ - state: closed
+ map: ["enum.StorageVisualLayers.Door"]
+ - state: welded
+ visible: false
+ map: ["enum.WeldableLayers.BaseWelded"]
+ - state: paper
+ sprite: Structures/Storage/Crates/labels.rsi
+ map: ["enum.PaperLabelVisuals.Layer"]
- type: Damageable
damageModifierSet: Metallic
- type: Injurable
@@ -56,21 +73,11 @@
- !type:PlaySoundBehavior
sound:
collection: MetalBreak
- - type: EntityStorageVisuals
- stateDoorOpen: open
- stateDoorClosed: closed
- - type: ContainerContainer
- containers:
- entity_storage: !type:Container
- paper_label: !type:ContainerSlot
- - type: StaticPrice
- price: 75
- type: Construction
graph: CrateGenericSteel
node: crategenericsteel
containers:
- - entity_storage
- - type: RequireProjectileTarget
+ - entity_storage
- type: entity
parent: CrateGeneric
@@ -109,19 +116,6 @@
map: ["enum.PaperLabelVisuals.Layer"]
- type: Damageable
damageModifierSet: StructuralMetallic
- - type: Injurable
- damageContainer: StructuralInorganic
- - type: Destructible
- thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 75
- behaviors:
- - !type:DoActsBehavior
- acts: ["Destruction"]
- - !type:PlaySoundBehavior
- sound:
- collection: MetalBreak
- type: Construction
graph: CrateSecure
node: cratesecure
diff --git a/Resources/Prototypes/Entities/Structures/Storage/Crates/crates.yml b/Resources/Prototypes/Entities/Structures/Storage/Crates/crates.yml
index d7eb050100..728dedec89 100644
--- a/Resources/Prototypes/Entities/Structures/Storage/Crates/crates.yml
+++ b/Resources/Prototypes/Entities/Structures/Storage/Crates/crates.yml
@@ -138,12 +138,13 @@
sprite: Structures/Storage/Crates/surgery.rsi
- type: entity
- parent: CrateGeneric
+ parent: BaseCrate
id: CrateWeb
name: web crate
components:
- type: Icon
sprite: Structures/Storage/Crates/web.rsi
+ state: icon
- type: Sprite
sprite: Structures/Storage/Crates/web.rsi
layers:
@@ -157,8 +158,12 @@
- type: Construction
graph: WebStructures
node: crate
+ containers:
+ - entity_storage
- type: Damageable
damageModifierSet: Web
+ - type: Injurable
+ damageContainer: StructuralInorganic
- type: Destructible
thresholds:
- trigger:
@@ -190,6 +195,7 @@
components:
- type: Icon
sprite: Structures/Storage/Crates/sec_gear.rsi
+ state: icon
- type: Sprite
sprite: Structures/Storage/Crates/sec_gear.rsi
- type: AccessReader
@@ -337,7 +343,7 @@
access: [["SyndicateAgent", "NuclearOperative"]]
- type: entity
- parent: CrateGeneric
+ parent: BaseCrate
id: CrateLivestock
name: livestock crate
components:
@@ -356,6 +362,9 @@
- type: Icon
sprite: Structures/Storage/Crates/livestock.rsi
state: base
+ - type: Damageable
+ - type: Injurable
+ damageContainer: StructuralInorganic
- type: Destructible
thresholds:
- trigger:
@@ -394,7 +403,7 @@
price: 125
- type: entity
- parent: CrateGeneric
+ parent: BaseCrate
id: CrateRodentCage
name: hamster cage
components:
@@ -412,6 +421,10 @@
map: ["enum.PaperLabelVisuals.Layer"]
- type: Icon
sprite: Structures/Storage/Crates/cage.rsi
+ state: icon
+ - type: Damageable
+ - type: Injurable
+ damageContainer: StructuralInorganic
- type: Destructible
thresholds:
- trigger:
@@ -689,7 +702,7 @@
state: crate_icon
- type: entity
- parent: CrateGeneric
+ parent: BaseCrate
id: CrateCoffin
name: coffin
description: A comfy coffin, excellent place for the vampires and corpses.
@@ -705,6 +718,9 @@
- type: Icon
sprite: Structures/Storage/Crates/coffin.rsi
state: base
+ - type: Damageable
+ - type: Injurable
+ damageContainer: StructuralInorganic
- type: Destructible
thresholds:
- trigger:
@@ -728,7 +744,7 @@
- entity_storage
- type: entity
- parent: CrateGeneric
+ parent: BaseCrate
id: CrateWoodenGrave
name: grave
suffix: wooden
@@ -747,6 +763,9 @@
- type: Icon
sprite: Structures/Storage/Crates/wooden_grave.rsi
state: base
+ - type: Damageable
+ - type: Injurable
+ damageContainer: StructuralInorganic
- type: Destructible
thresholds:
- trigger:
diff --git a/Resources/Prototypes/Entities/Structures/Storage/Tanks/base_structuretanks.yml b/Resources/Prototypes/Entities/Structures/Storage/Tanks/base_structuretanks.yml
index d9d025a86f..9e781e3948 100644
--- a/Resources/Prototypes/Entities/Structures/Storage/Tanks/base_structuretanks.yml
+++ b/Resources/Prototypes/Entities/Structures/Storage/Tanks/base_structuretanks.yml
@@ -1,9 +1,9 @@
- type: entity
- id: StorageTank
+ abstract: true
parent: [SolutionTank, SolutionGinormous, BaseStructureDynamic]
+ id: StorageTankIndestructible
name: storage tank
description: A liquids storage tank.
- abstract: true
components:
- type: Animateable
- type: Sprite
@@ -22,6 +22,19 @@
layer:
- MachineLayer
- InteractImpassable
+ - type: DrainableSolution
+ solution: tank
+ - type: ReagentTank
+ - type: Transform
+ noRot: true
+
+- type: entity
+ abstract: true
+ parent: StorageTankIndestructible
+ id: StorageTank
+ name: storage tank
+ description: A liquids storage tank.
+ components:
- type: Damageable
damageModifierSet: Metallic
- type: Injurable
@@ -53,11 +66,6 @@
collection: MetalBreak
- !type:DoActsBehavior
acts: ["Destruction"]
- - type: DrainableSolution
- solution: tank
- - type: ReagentTank
- - type: Transform
- noRot: true
# For highcap tanks
- type: entity
diff --git a/Resources/Prototypes/Entities/Structures/Storage/barrels.yml b/Resources/Prototypes/Entities/Structures/Storage/barrels.yml
index 195e502ae3..84c350a4ee 100644
--- a/Resources/Prototypes/Entities/Structures/Storage/barrels.yml
+++ b/Resources/Prototypes/Entities/Structures/Storage/barrels.yml
@@ -1,5 +1,5 @@
- type: entity
- parent: StorageTank
+ parent: StorageTankIndestructible
id: BaseBarrelChem
abstract: true
name: chemical barrel
diff --git a/Resources/Prototypes/Entities/Structures/Storage/glass_box.yml b/Resources/Prototypes/Entities/Structures/Storage/glass_box.yml
index ca7de0e1bb..6e1582c26d 100644
--- a/Resources/Prototypes/Entities/Structures/Storage/glass_box.yml
+++ b/Resources/Prototypes/Entities/Structures/Storage/glass_box.yml
@@ -201,16 +201,8 @@
!type:DamageTrigger
damage: 100
behaviors:
- - !type:PlaySoundBehavior
- sound:
- collection: WoodDestroy
- !type:SpawnEntitiesBehavior
spawn:
ShardGlassReinforced:
min: 1
max: 1
- MaterialWoodPlank1:
- min: 2
- max: 5
- - !type:DoActsBehavior
- acts: ["Destruction"]
diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/posters.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/posters.yml
index 2a55a4ee04..36aa4dd643 100644
--- a/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/posters.yml
+++ b/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/posters.yml
@@ -7,19 +7,15 @@
sprite: Structures/Wallmounts/posters.rsi
- type: Damageable
damageModifierSet: Card
- - type: Injurable
- damageContainer: StructuralInorganic
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
- damage: 15
+ damage: 5
behaviors:
- !type:PlaySoundBehavior
sound:
path: /Audio/Effects/poster_broken.ogg
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- !type:SpawnEntitiesBehavior
spawn:
PosterBroken:
@@ -51,8 +47,6 @@
- !type:PlaySoundBehavior
sound:
path: /Audio/Effects/poster_broken.ogg
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- type: Construction
graph: PosterGraph
node: tornPoster
diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/Storage/shelfs.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/Storage/shelfs.yml
index a0ec0e8218..3ffa500b92 100644
--- a/Resources/Prototypes/Entities/Structures/Wallmounts/Storage/shelfs.yml
+++ b/Resources/Prototypes/Entities/Structures/Wallmounts/Storage/shelfs.yml
@@ -1,8 +1,8 @@
# 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.
components:
@@ -11,18 +11,14 @@
sprite: Structures/Storage/Shelfs/wood.rsi
state: base
- type: Damageable
- damageModifierSet: Wood
- type: Injurable
damageContainer: StructuralInorganic
- type: Destructible
thresholds:
- - trigger:
+ - trigger: &DamageTrigger50
!type:DamageTrigger
- damage: 60
+ damage: 50
behaviors:
- - !type:PlaySoundBehavior
- sound:
- collection: WoodDestroyHeavy
- !type:DoActsBehavior
acts: ["Destruction"]
- type: Storage
@@ -40,8 +36,8 @@
- type: entity
abstract: true
- id: ShelfBaseReinforced
parent: ShelfBase
+ id: ShelfBaseReinforced
name: reinforced shelf
description: It looks as strong as reality itself.
components:
@@ -70,16 +66,14 @@
# Normal
- type: entity
- id: ShelfWood
parent: ShelfBase
+ id: ShelfWood
name: wooden shelf
description: A convenient place to place, well, anything really.
components:
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 60
+ - trigger: *DamageTrigger50
behaviors:
- !type:PlaySoundBehavior
sound:
@@ -89,8 +83,6 @@
MaterialWoodPlank1:
min: 1
max: 3
- - !type:DoActsBehavior
- acts: ["Destruction"]
- type: Tag
tags:
- Structure
@@ -100,8 +92,8 @@
node: ShelfWood
- type: entity
- id: ShelfMetal
parent: ShelfBase
+ id: ShelfMetal
name: metal shelf
description: A sturdy place to place, well, anything really.
components:
@@ -110,13 +102,9 @@
state: base
- type: Damageable
damageModifierSet: Metallic
- - type: Injurable
- damageContainer: StructuralInorganic
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 120
+ - trigger: *DamageTrigger50
behaviors:
- !type:PlaySoundBehavior
sound:
@@ -126,15 +114,13 @@
SheetSteel1:
min: 2
max: 4
- - !type:DoActsBehavior
- acts: ["Destruction"]
- type: Construction
graph: Shelf
node: ShelfMetal
- type: entity
- id: ShelfGlass
parent: ShelfBase
+ id: ShelfGlass
name: glass shelf
description: A fragile place to place, well, anything really.
components:
@@ -143,13 +129,9 @@
state: base
- type: Damageable
damageModifierSet: Glass
- - type: Injurable
- damageContainer: StructuralInorganic
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 50
+ - trigger: *DamageTrigger50
behaviors:
- !type:PlaySoundBehavior
sound:
@@ -159,16 +141,14 @@
ShardGlass:
min: 0
max: 2
- - !type:DoActsBehavior
- acts: ["Destruction"]
- type: Construction
graph: Shelf
node: ShelfGlass
# Reinforced
- type: entity
- id: ShelfRWood
parent: ShelfBaseReinforced
+ id: ShelfRWood
name: sturdy wood shelf
description: A safe place to put your favorite bottle of whiskey.
components:
@@ -185,9 +165,7 @@
shader: unshaded
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 215
+ - trigger: *DamageTrigger50
behaviors:
- !type:PlaySoundBehavior
sound:
@@ -197,15 +175,13 @@
MaterialWoodPlank:
min: 2
max: 5
- - !type:DoActsBehavior
- acts: ["Destruction"]
- type: Construction
graph: Shelf
node: ShelfRWood
- type: entity
- id: ShelfRMetal
parent: ShelfBaseReinforced
+ id: ShelfRMetal
name: sturdy metal shelf
description: A strong & shiny place to keep all your vials safe.
components:
@@ -213,9 +189,7 @@
sprite: Structures/Storage/Shelfs/metal.rsi
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 450
+ - trigger: *DamageTrigger50
behaviors:
- !type:PlaySoundBehavior
sound:
@@ -231,15 +205,13 @@
PartRodMetal1:
min: 1
max: 2
- - !type:DoActsBehavior
- acts: ["Destruction"]
- type: Construction
graph: Shelf
node: ShelfRMetal
- type: entity
- id: ShelfRGlass
parent: ShelfBaseReinforced
+ id: ShelfRGlass
name: sturdy glass shelf
description: Crystal clear reinforced glass doors to show off all your fancy bottles you definitely didn't sell a co-worker's favorite mothroach for.
components:
@@ -247,9 +219,7 @@
sprite: Structures/Storage/Shelfs/glass.rsi
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 250
+ - trigger: *DamageTrigger50
behaviors:
- !type:PlaySoundBehavior
sound:
@@ -265,16 +235,14 @@
PartRodMetal1:
min: 0
max: 1
- - !type:DoActsBehavior
- acts: ["Destruction"]
- type: Construction
graph: Shelf
node: ShelfRGlass
# Departmental
- type: entity
- id: ShelfBar
parent: ShelfBase
+ id: ShelfBar
name: bar shelf
description: Made out of the finest synthetic wood for all alcohol holding needs.
components:
@@ -291,9 +259,7 @@
fillBaseName: bar
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 100
+ - trigger: *DamageTrigger50
behaviors:
- !type:PlaySoundBehavior
sound:
@@ -303,8 +269,6 @@
MaterialWoodPlank1:
min: 1
max: 4
- - !type:DoActsBehavior
- acts: ["Destruction"]
- type: Storage
grid:
- 0,0,5,1
@@ -314,8 +278,8 @@
node: ShelfBar
- type: entity
- id: ShelfKitchen
parent: ShelfBase
+ id: ShelfKitchen
name: kitchen shelf
description: Holds knifes, spice, and everything nice!
components:
@@ -332,9 +296,7 @@
fillBaseName: kitchen
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 150
+ - trigger: *DamageTrigger50
behaviors:
- !type:PlaySoundBehavior
sound:
@@ -350,8 +312,6 @@
PartRodMetal1:
min: 0
max: 2
- - !type:DoActsBehavior
- acts: ["Destruction"]
- type: Storage
grid:
- 0,0,5,1
@@ -361,8 +321,8 @@
node: ShelfKitchen
- type: entity
- id: ShelfChemistry
parent: ShelfBaseReinforced
+ id: ShelfChemistry
name: chemical shelf
description: Keeps all your chemicals safe and out of the clow- er, public hands!
components:
@@ -385,9 +345,7 @@
fillBaseName: chem
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 330
+ - trigger: *DamageTrigger50
behaviors:
- !type:PlaySoundBehavior
sound:
diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/station_map.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/station_map.yml
index 1b16c3361c..f6df92a552 100644
--- a/Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/station_map.yml
+++ b/Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/station_map.yml
@@ -77,6 +77,7 @@
sound:
collection: GlassBreak
- !type:SpawnEntitiesBehavior
+ offset: 0
spawn:
StationMapBroken:
min: 1
diff --git a/Resources/Prototypes/Entities/Structures/Walls/asteroid.yml b/Resources/Prototypes/Entities/Structures/Walls/asteroid.yml
index f2c7570589..7865aae4e3 100644
--- a/Resources/Prototypes/Entities/Structures/Walls/asteroid.yml
+++ b/Resources/Prototypes/Entities/Structures/Walls/asteroid.yml
@@ -3,12 +3,9 @@
# Anyway
# See WallRock variants for the remappings.
-#Asteroid rock
- type: entity
- id: AsteroidRock
parent: BaseWall
- name: asteroid rock
- description: A rocky asteroid.
+ id: BaseAsteroidRock
components:
- type: Transform
noRot: true
@@ -36,6 +33,25 @@
damageModifierSet: Rock
- type: Injurable
damageContainer: StructuralInorganic
+ - type: Fixtures
+ fixtures:
+ fix1:
+ shape:
+ !type:PhysShapeAabb
+ bounds: "-0.5,-0.5,0.5,0.5"
+ mask:
+ - FullTileMask
+ layer:
+ - WallLayer
+ density: 2000
+
+#Asteroid rock
+- type: entity
+ parent: BaseAsteroidRock
+ id: AsteroidRock
+ name: asteroid rock
+ description: A rocky asteroid.
+ components:
- type: Destructible
thresholds:
- trigger:
@@ -49,17 +65,6 @@
path: /Audio/Effects/break_stone.ogg
params:
volume: -6
- - type: Fixtures
- fixtures:
- fix1:
- shape:
- !type:PhysShapeAabb
- bounds: "-0.5,-0.5,0.5,0.5"
- mask:
- - FullTileMask
- layer:
- - WallLayer
- density: 2000
- type: entity
abstract: true
diff --git a/Resources/Prototypes/Entities/Structures/Walls/fence_metal.yml b/Resources/Prototypes/Entities/Structures/Walls/fence_metal.yml
index 2eb003555c..c418a97c9f 100644
--- a/Resources/Prototypes/Entities/Structures/Walls/fence_metal.yml
+++ b/Resources/Prototypes/Entities/Structures/Walls/fence_metal.yml
@@ -33,8 +33,8 @@
- !type:SpawnEntitiesBehavior
spawn:
PartRodMetal1:
- min: 3
- max: 5
+ min: 1
+ max: 2
- !type:DoActsBehavior
acts: [ "Destruction" ]
- type: Climbable
@@ -108,22 +108,6 @@
messagePerceivedByOthers: fence-rattle-success
interactSuccessSound:
collection: FenceRattle
- - type: Destructible
- thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 50
- behaviors:
- - !type:PlaySoundBehavior
- sound:
- collection: MetalBreak
- - !type:SpawnEntitiesBehavior
- spawn:
- PartRodMetal1:
- min: 1
- max: 1
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- type: Construction
graph: FenceMetal
node: broken
@@ -165,20 +149,10 @@
thresholds:
- trigger:
!type:DamageTrigger
- damage: 100
+ damage: 150
behaviors:
- - !type:PlaySoundBehavior
- sound:
- path: /Audio/Items/wirecutter.ogg
- - !type:SpawnEntitiesBehavior
- spawn:
- PartRodMetal1:
- min: 2
- max: 4
- !type:ChangeConstructionNodeBehavior
node: broken
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- type: Construction
graph: FenceMetal
node: straight
diff --git a/Resources/Prototypes/Entities/Structures/Walls/fence_wood.yml b/Resources/Prototypes/Entities/Structures/Walls/fence_wood.yml
index e5dbfe5b24..30848256eb 100644
--- a/Resources/Prototypes/Entities/Structures/Walls/fence_wood.yml
+++ b/Resources/Prototypes/Entities/Structures/Walls/fence_wood.yml
@@ -1,9 +1,9 @@
- type: entity
+ abstract: true
parent: BaseStructure
id: BaseFenceWood
name: wooden fence
description: Wooden piece of fencing. I hope there is babushka's garden behind it.
- abstract: true
components:
- type: MeleeSound
soundGroups:
@@ -28,6 +28,15 @@
cost: 2
delay: 2
fx: EffectRCDDeconstruct2
+ - type: Climbable
+ delay: 5.0
+ - type: Appearance
+
+- type: entity
+ abstract: true
+ parent: BaseFenceWood
+ id: BaseFenceWoodHigh
+ components:
- type: Destructible
thresholds:
- trigger:
@@ -44,16 +53,13 @@
max: 2
- !type:DoActsBehavior
acts: [ "Destruction" ]
- - type: Climbable
- delay: 5.0
- - type: Appearance
- type: entity
+ abstract: true
parent: BaseFenceWood
id: BaseFenceWoodSmall
name: small wooden fence
description: Wooden piece of small fence. The best protection for the fencing of a private territory!
- abstract: true
components:
- type: Destructible
thresholds:
@@ -75,9 +81,9 @@
delay: 2.5
- type: RequireProjectileTarget
-#High
+#region High
- type: entity
- parent: BaseFenceWood
+ parent: BaseFenceWoodHigh
id: FenceWoodHighStraight
suffix: Straight
components:
@@ -106,7 +112,7 @@
node: straight
- type: entity
- parent: BaseFenceWood
+ parent: BaseFenceWoodHigh
id: FenceWoodHighEnd
suffix: End
components:
@@ -135,7 +141,7 @@
node: end
- type: entity
- parent: BaseFenceWood
+ parent: BaseFenceWoodHigh
id: FenceWoodHighCorner
suffix: Corner
components:
@@ -173,7 +179,7 @@
node: corner
- type: entity
- parent: BaseFenceWood
+ parent: BaseFenceWoodHigh
id: FenceWoodHighTJunction
suffix: T-Junction
components:
@@ -211,7 +217,7 @@
node: tjunction
- type: entity
- parent: BaseFenceWood
+ parent: BaseFenceWoodHigh
id: FenceWoodHighGate
name: wooden fence gate
description: Do you have any idea what awaits you behind these gates? It can be either a toilet or a luxurious mansion. But you continue to love your emo boys.
@@ -258,7 +264,9 @@
graph: FenceWood
node: gate
-#Small
+#endregion
+#region Small
+
- type: entity
parent: BaseFenceWoodSmall
id: FenceWoodSmallStraight
@@ -435,3 +443,5 @@
- type: Construction
graph: FenceWood
node: gate_small
+
+#endregion
diff --git a/Resources/Prototypes/Entities/Structures/Walls/girders.yml b/Resources/Prototypes/Entities/Structures/Walls/girders.yml
index 7acadb48be..2fb1f97fda 100644
--- a/Resources/Prototypes/Entities/Structures/Walls/girders.yml
+++ b/Resources/Prototypes/Entities/Structures/Walls/girders.yml
@@ -51,8 +51,8 @@
price: 30
- type: entity
- id: ReinforcedGirder
parent: Girder
+ id: ReinforcedGirder
name: reinforced girder
description: A large structural assembly made out of metal and plasteel; It requires a layer of plasteel before it can be considered a reinforced wall.
components:
@@ -70,23 +70,15 @@
behaviors:
- !type:SpawnEntitiesBehavior
spawn:
- SheetSteel1:
- min: 1
- max: 1
SheetPlasteel1:
min: 1
max: 1
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- - !type:PlaySoundBehavior
- sound:
- collection: MetalBreak
- type: StaticPrice
price: 130
- type: entity
+ parent: Girder
id: ClockworkGirder
- parent: ReinforcedGirder
name: wall gear
description: A large gear with mounting brackets for additional plating; This could be made into a wall with more brass plating.
components:
@@ -109,11 +101,3 @@
SheetBrass1:
min: 1
max: 2
- PartRodMetal1:
- min: 1
- max: 2
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- - !type:PlaySoundBehavior
- sound:
- collection: MetalBreak
diff --git a/Resources/Prototypes/Entities/Structures/Walls/inflatable_wall.yml b/Resources/Prototypes/Entities/Structures/Walls/inflatable_wall.yml
index a771291bda..a8abdf8131 100644
--- a/Resources/Prototypes/Entities/Structures/Walls/inflatable_wall.yml
+++ b/Resources/Prototypes/Entities/Structures/Walls/inflatable_wall.yml
@@ -43,16 +43,18 @@
mode: SnapgridCenter
- type: entity
+ parent: [ BaseStructure, BaseDeltaPressureGlass ]
id: InflatableDoor
name: inflatable door
- parent: [BaseMaterialDoor, BaseDeltaPressureGlass]
description: An inflated membrane. Activate to deflate. Now with a door. Do not puncture.
components:
- type: Clickable
- type: InteractionOutline
- type: Sprite
sprite: Objects/Misc/inflatable_door.rsi
- state: closed
+ layers:
+ - state: closed
+ map: ["enum.DoorVisualLayers.Base"]
- type: Physics
bodyType: Static
- type: Fixtures
@@ -65,11 +67,22 @@
layer:
- WallLayer
- type: Door
+ bumpOpen: false
+ clickOpen: true
+ canCrush: false
+ closeTimeOne: 0.2
+ closeTimeTwo: 0.6
+ openTimeOne: 0.6
+ openTimeTwo: 0.2
+ openingAnimationTime: 1.2
+ closingAnimationTime: 1.2
occludes: false
openSound:
path: /Audio/Misc/zip.ogg
closeSound:
path: /Audio/Misc/zip.ogg
+ - type: Appearance
+ - type: Airtight
- type: Damageable
damageModifierSet: Inflatable
- type: Injurable
diff --git a/Resources/Prototypes/Entities/Structures/Walls/meteor.yml b/Resources/Prototypes/Entities/Structures/Walls/meteor.yml
index 6f310e3b74..5da5e42230 100644
--- a/Resources/Prototypes/Entities/Structures/Walls/meteor.yml
+++ b/Resources/Prototypes/Entities/Structures/Walls/meteor.yml
@@ -1,7 +1,7 @@
# These define Meteor Walls separate from Asteroid walls so they have different properties
- type: entity
+ parent: BaseAsteroidRock
id: MeteorRock
- parent: AsteroidRock
name: meteorite rock
description: What remains of a meteorite.
components:
diff --git a/Resources/Prototypes/Entities/Structures/Walls/walls.yml b/Resources/Prototypes/Entities/Structures/Walls/walls.yml
index 709796c49c..12cc546cba 100644
--- a/Resources/Prototypes/Entities/Structures/Walls/walls.yml
+++ b/Resources/Prototypes/Entities/Structures/Walls/walls.yml
@@ -88,10 +88,10 @@
fix1:
shape:
!type:PolygonShape
- vertices:
- - "-0.5,-0.5"
- - "0.5,0.5"
- - "0.5,-0.5"
+ vertices:
+ - "-0.5,-0.5"
+ - "0.5,0.5"
+ - "0.5,-0.5"
mask:
- FullTileMask
layer:
@@ -208,8 +208,8 @@
components:
- type: Tag
tags:
- - Wall
- - Structure
+ - Wall
+ - Structure
- type: Sprite
sprite: Structures/Walls/meat.rsi
- type: Icon
@@ -268,7 +268,7 @@
components:
- type: Tag
tags:
- - Wall
+ - Wall
- type: Sprite
sprite: Structures/Walls/debug.rsi
- type: Icon
@@ -464,30 +464,30 @@
name: plastitanium wall
suffix: indestructible
components:
- - type: Sprite
- sprite: Structures/Walls/plastitanium.rsi
- - type: Icon
- sprite: Structures/Walls/plastitanium.rsi
- - type: IconSmooth
- key: walls
- base: plastitanium
- - type: Fixtures
- fixtures:
- fix1:
- shape:
- !type:PhysShapeAabb
- bounds: "-0.5,-0.5,0.5,0.5"
- mask:
- - FullTileMask
- layer:
- - WallLayer
- density: 4000
- - type: Damageable
- damageModifierSet: StructuralMetallicStrong
- - type: Injurable
- damageContainer: StructuralInorganic
- - type: RadiationBlocker
- resistance: 5
+ - type: Sprite
+ sprite: Structures/Walls/plastitanium.rsi
+ - type: Icon
+ sprite: Structures/Walls/plastitanium.rsi
+ - type: IconSmooth
+ key: walls
+ base: plastitanium
+ - type: Fixtures
+ fixtures:
+ fix1:
+ shape:
+ !type:PhysShapeAabb
+ bounds: "-0.5,-0.5,0.5,0.5"
+ mask:
+ - FullTileMask
+ layer:
+ - WallLayer
+ density: 4000
+ - type: Damageable
+ damageModifierSet: StructuralMetallicStrong
+ - type: Injurable
+ damageContainer: StructuralInorganic
+ - type: RadiationBlocker
+ resistance: 5
- type: entity
parent: WallPlastitaniumIndestructible
@@ -548,16 +548,16 @@
!type:DamageTrigger
damage: 1000
behaviors:
- - !type:SpawnEntitiesBehavior
- spawn:
- Girder:
- min: 1
- max: 1
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- - !type:PlaySoundBehavior
- sound:
- collection: MetalSlam
+ - !type:SpawnEntitiesBehavior
+ spawn:
+ Girder:
+ min: 1
+ max: 1
+ - !type:DoActsBehavior
+ acts: [ "Destruction" ]
+ - !type:PlaySoundBehavior
+ sound:
+ collection: MetalSlam
- type: entity
parent: BaseWall
@@ -637,19 +637,8 @@
- type: IconSmooth
key: walls
base: reinf_over
- - type: Destructible
- thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 350
- behaviors:
- - !type:PlaySoundBehavior
- sound:
- collection: MetalSlam
- - !type:ChangeConstructionNodeBehavior
- node: girder
- - !type:DoActsBehavior
- acts: ["Destruction"]
+ - type: Damageable
+ damageModifierSet: StructuralMetallic # weaker because rust
- type: entity
parent: WallDiagonalBase
@@ -805,10 +794,10 @@
fix1:
shape:
!type:PolygonShape
- vertices:
- - "-0.5,-0.5"
- - "0.5,0.5"
- - "0.5,-0.5"
+ vertices:
+ - "-0.5,-0.5"
+ - "0.5,0.5"
+ - "0.5,-0.5"
mask:
- FullTileMask
layer:
@@ -978,19 +967,8 @@
- type: IconSmooth
key: walls
base: solid
- - type: Destructible
- thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 150
- behaviors:
- - !type:PlaySoundBehavior
- sound:
- collection: MetalSlam
- - !type:ChangeConstructionNodeBehavior
- node: girder
- - !type:DoActsBehavior
- acts: ["Destruction"]
+ - type: Damageable
+ damageModifierSet: Metallic # weaker because rust
- type: entity
parent: BaseWall
@@ -999,7 +977,7 @@
components:
- type: Tag
tags:
- - Wall
+ - Wall
- type: Destructible
thresholds:
- trigger:
@@ -1358,7 +1336,7 @@
lifetime: 15
- type: Tag
tags:
- - Wall
+ - Wall
- type: Physics
bodyType: Static
- type: Fixtures
@@ -1366,7 +1344,7 @@
fix1:
shape:
!type:PhysShapeAabb
- bounds: "-0.5,-0.5,0.5,0.5"
+ bounds: "-0.5,-0.5,0.5,0.5"
mask:
- FullTileMask
layer:
@@ -1528,8 +1506,6 @@
!type:DamageTrigger
damage: 100
behaviors:
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- !type:PlaySoundBehavior
sound:
path: /Audio/Effects/break_stone.ogg
diff --git a/Resources/Prototypes/Entities/Structures/Windows/clockwork.yml b/Resources/Prototypes/Entities/Structures/Windows/clockwork.yml
index 0922122ff7..87e599cdce 100644
--- a/Resources/Prototypes/Entities/Structures/Windows/clockwork.yml
+++ b/Resources/Prototypes/Entities/Structures/Windows/clockwork.yml
@@ -1,14 +1,14 @@
- type: entity
+ parent: BaseWindowStructure
id: ClockworkWindow
name: clockwork window
description: Don't smudge up the brass down there.
- parent: Window
components:
- type: Sprite
- drawdepth: WallTops
sprite: Structures/Windows/clockwork_window.rsi
- type: Icon
sprite: Structures/Windows/clockwork_window.rsi
+ state: full
- type: Repairable
fuelCost: 10
doAfterDelay: 2
@@ -37,23 +37,14 @@
- type: Construction
graph: Window
node: clockworkWindow
- - type: Appearance
- type: DamageVisuals
- thresholds: [5, 10, 20]
damageDivisor: 3
- trackAllDamage: true
- damageOverlay:
- sprite: Structures/Windows/cracks.rsi
- type: entity
+ parent: BaseWindowStructureDirectional
id: WindowClockworkDirectional
- parent: WindowDirectional
name: directional clockwork window
description: Don't smudge up the brass down there.
- placement:
- mode: SnapgridCenter
- snap:
- - Window
components:
- type: Sprite
sprite: Structures/Windows/directional.rsi
@@ -64,13 +55,10 @@
- type: Construction
graph: WindowDirectional
node: windowClockworkDirectional
- - type: Appearance
- type: DamageVisuals
- thresholds: [5, 10, 20]
damageDivisor: 1.5
- trackAllDamage: true
- damageOverlay:
- sprite: Structures/Windows/cracks_directional.rsi
+ - type: Injurable
+ damageContainer: StructuralInorganic
- type: Damageable
damageModifierSet: RGlass
- type: Destructible
diff --git a/Resources/Prototypes/Entities/Structures/Windows/mining.yml b/Resources/Prototypes/Entities/Structures/Windows/mining.yml
index fa20edb6e0..90379bb277 100644
--- a/Resources/Prototypes/Entities/Structures/Windows/mining.yml
+++ b/Resources/Prototypes/Entities/Structures/Windows/mining.yml
@@ -1,13 +1,13 @@
- type: entity
+ parent: [BaseWindowStructure, BaseRCDResistant]
id: MiningWindow
name: mining window
- parent: WindowRCDResistant
components:
- type: Sprite
- drawdepth: WallTops
sprite: Structures/Windows/mining.rsi
- type: Icon
sprite: Structures/Windows/mining.rsi
+ state: full
- type: Repairable
fuelCost: 15
doAfterDelay: 3
@@ -36,13 +36,8 @@
acts: [ "Destruction" ]
- type: IconSmooth
base: mwindow
- - type: Appearance
- type: DamageVisuals
- thresholds: [5, 10, 20]
damageDivisor: 4
- trackAllDamage: true
- damageOverlay:
- sprite: Structures/Windows/cracks.rsi
- type: StaticPrice
price: 100
diff --git a/Resources/Prototypes/Entities/Structures/Windows/plasma.yml b/Resources/Prototypes/Entities/Structures/Windows/plasma.yml
index b71f93db2a..dc0d754f9a 100644
--- a/Resources/Prototypes/Entities/Structures/Windows/plasma.yml
+++ b/Resources/Prototypes/Entities/Structures/Windows/plasma.yml
@@ -1,13 +1,13 @@
- type: entity
id: PlasmaWindow
name: plasma window
- parent: [BaseDeltaPressurePlasma, WindowRCDResistant]
+ parent: [BaseDeltaPressurePlasma, BaseWindowStructure, BaseRCDResistant]
components:
- type: Sprite
- drawdepth: WallTops
sprite: Structures/Windows/plasma_window.rsi
- type: Icon
sprite: Structures/Windows/plasma_window.rsi
+ state: full
- type: Damageable
damageModifierSet: Glass
- type: Injurable
@@ -47,13 +47,9 @@
- type: entity
id: PlasmaWindowDirectional
- parent: [BaseDeltaPressurePlasmaQuarter, WindowDirectionalRCDResistant]
+ parent: [BaseDeltaPressurePlasmaQuarter, BaseWindowStructureDirectional, BaseRCDResistant]
name: directional plasma window
description: Don't smudge up the glass down there.
- placement:
- mode: SnapgridCenter
- snap:
- - Window
components:
- type: Sprite
sprite: Structures/Windows/directional.rsi
@@ -71,6 +67,10 @@
trackAllDamage: true
damageOverlay:
sprite: Structures/Windows/cracks_directional.rsi
+ - type: Damageable
+ damageModifierSet: Glass
+ - type: Injurable
+ damageContainer: StructuralInorganic
- type: Destructible
thresholds:
- trigger:
diff --git a/Resources/Prototypes/Entities/Structures/Windows/reinforced.yml b/Resources/Prototypes/Entities/Structures/Windows/reinforced.yml
index fbd098a146..5adf28b80d 100644
--- a/Resources/Prototypes/Entities/Structures/Windows/reinforced.yml
+++ b/Resources/Prototypes/Entities/Structures/Windows/reinforced.yml
@@ -1,13 +1,13 @@
- type: entity
+ parent: [BaseDeltaPressureReinforcedGlass, BaseWindowStructure]
id: ReinforcedWindow
name: reinforced window
- parent: [BaseDeltaPressureReinforcedGlass, Window]
components:
- type: Sprite
- drawdepth: WallTops
sprite: Structures/Windows/reinforced_window.rsi
- type: Icon
sprite: Structures/Windows/reinforced_window.rsi
+ state: full
- type: Repairable
fuelCost: 10
doAfterDelay: 2
@@ -49,14 +49,9 @@
sprite: Structures/Windows/cracks.rsi
- type: entity
+ parent: [BaseDeltaPressureReinforcedGlassQuarter, BaseWindowStructureDirectional]
id: WindowReinforcedDirectional
- parent: [BaseDeltaPressureReinforcedGlassQuarter, WindowDirectional]
name: directional reinforced window
- description: Don't smudge up the glass down there.
- placement:
- mode: SnapgridCenter
- snap:
- - Window
components:
- type: Sprite
sprite: Structures/Windows/directional.rsi
@@ -76,6 +71,8 @@
sprite: Structures/Windows/cracks_directional.rsi
- type: Damageable
damageModifierSet: RGlass
+ - type: Injurable
+ damageContainer: StructuralInorganic
- type: RCDDeconstructable
cost: 4
delay: 4
diff --git a/Resources/Prototypes/Entities/Structures/Windows/rplasma.yml b/Resources/Prototypes/Entities/Structures/Windows/rplasma.yml
index a8f9d8e385..7399b71430 100644
--- a/Resources/Prototypes/Entities/Structures/Windows/rplasma.yml
+++ b/Resources/Prototypes/Entities/Structures/Windows/rplasma.yml
@@ -1,13 +1,13 @@
- type: entity
+ parent: [BaseDeltaPressureReinforcedPlasma, BaseWindowStructure, BaseRCDResistant]
id: ReinforcedPlasmaWindow
name: reinforced plasma window
- parent: [BaseDeltaPressureReinforcedPlasma, WindowRCDResistant]
components:
- type: Sprite
- drawdepth: WallTops
sprite: Structures/Windows/reinforced_plasma_window.rsi
- type: Icon
sprite: Structures/Windows/reinforced_plasma_window.rsi
+ state: full
- type: Damageable
damageModifierSet: RGlass
- type: Injurable
@@ -49,14 +49,9 @@
price: 132
- type: entity
+ parent: [BaseDeltaPressureReinforcedPlasmaQuarter, BaseWindowStructureDirectional, BaseRCDResistant]
id: PlasmaReinforcedWindowDirectional
- parent: [BaseDeltaPressureReinforcedPlasmaQuarter, WindowDirectionalRCDResistant]
name: directional reinforced plasma window
- description: Don't smudge up the glass down there.
- placement:
- mode: SnapgridCenter
- snap:
- - Window
components:
- type: Sprite
sprite: Structures/Windows/directional.rsi
@@ -76,6 +71,8 @@
sprite: Structures/Windows/cracks_directional.rsi
- type: Damageable
damageModifierSet: RGlass
+ - type: Injurable
+ damageContainer: StructuralInorganic
- type: RadiationBlocker
resistance: 2
- type: Destructible
diff --git a/Resources/Prototypes/Entities/Structures/Windows/ruranium.yml b/Resources/Prototypes/Entities/Structures/Windows/ruranium.yml
index 96381de72e..db233d30e5 100644
--- a/Resources/Prototypes/Entities/Structures/Windows/ruranium.yml
+++ b/Resources/Prototypes/Entities/Structures/Windows/ruranium.yml
@@ -1,13 +1,13 @@
- type: entity
+ parent: [BaseDeltaPressureReinforcedPlasma, BaseWindowStructure, BaseRCDResistant]
id: ReinforcedUraniumWindow
name: reinforced uranium window
- parent: [BaseDeltaPressureReinforcedPlasma, WindowRCDResistant]
components:
- type: Sprite
- drawdepth: WallTops
sprite: Structures/Windows/reinforced_uranium_window.rsi
- type: Icon
sprite: Structures/Windows/reinforced_uranium_window.rsi
+ state: full
- type: Damageable
damageModifierSet: RGlass
- type: Injurable
@@ -49,14 +49,9 @@
resistance: 5
- type: entity
+ parent: [BaseDeltaPressureReinforcedPlasmaQuarter, BaseWindowStructureDirectional, BaseRCDResistant]
id: UraniumReinforcedWindowDirectional
- parent: [BaseDeltaPressureReinforcedPlasmaQuarter, WindowDirectionalRCDResistant]
name: directional reinforced uranium window
- description: Don't smudge up the glass down there.
- placement:
- mode: SnapgridCenter
- snap:
- - Window
components:
- type: Sprite
sprite: Structures/Windows/directional.rsi
@@ -76,6 +71,8 @@
sprite: Structures/Windows/cracks_directional.rsi
- type: Damageable
damageModifierSet: RGlass
+ - type: Injurable
+ damageContainer: StructuralInorganic
- type: Destructible
thresholds:
- trigger:
diff --git a/Resources/Prototypes/Entities/Structures/Windows/shuttle.yml b/Resources/Prototypes/Entities/Structures/Windows/shuttle.yml
index b3ead67f1b..a76ffc5f19 100644
--- a/Resources/Prototypes/Entities/Structures/Windows/shuttle.yml
+++ b/Resources/Prototypes/Entities/Structures/Windows/shuttle.yml
@@ -1,13 +1,13 @@
- type: entity
+ parent: [BaseDeltaPressureReinforcedGlass, BaseWindowStructure, BaseRCDResistant]
id: ShuttleWindow
name: shuttle window
- parent: [BaseDeltaPressureReinforcedGlass, WindowRCDResistant]
components:
- type: Sprite
- drawdepth: WallTops
sprite: Structures/Windows/shuttle_window.rsi
- type: Icon
sprite: Structures/Windows/shuttle_window.rsi
+ state: full
- type: Repairable
fuelCost: 15
doAfterDelay: 3
diff --git a/Resources/Prototypes/Entities/Structures/Windows/uranium.yml b/Resources/Prototypes/Entities/Structures/Windows/uranium.yml
index 73adc37fae..76527c619b 100644
--- a/Resources/Prototypes/Entities/Structures/Windows/uranium.yml
+++ b/Resources/Prototypes/Entities/Structures/Windows/uranium.yml
@@ -1,10 +1,9 @@
- type: entity
+ parent: [BaseDeltaPressurePlasma, BaseWindowStructure, BaseRCDResistant]
id: UraniumWindow
name: uranium window
- parent: [BaseDeltaPressurePlasma, WindowRCDResistant]
components:
- type: Sprite
- drawdepth: WallTops
sprite: Structures/Windows/uranium_window.rsi
- type: Icon
sprite: Structures/Windows/uranium_window.rsi
@@ -47,14 +46,9 @@
resistance: 3
- type: entity
+ parent: [BaseDeltaPressurePlasmaQuarter, BaseWindowStructureDirectional, BaseRCDResistant]
id: UraniumWindowDirectional
- parent: [BaseDeltaPressurePlasmaQuarter, WindowDirectionalRCDResistant]
name: directional uranium window
- description: Don't smudge up the glass down there.
- placement:
- mode: SnapgridCenter
- snap:
- - Window
components:
- type: Sprite
sprite: Structures/Windows/directional.rsi
@@ -72,6 +66,10 @@
trackAllDamage: true
damageOverlay:
sprite: Structures/Windows/cracks_directional.rsi
+ - type: Damageable
+ damageModifierSet: Glass
+ - type: Injurable
+ damageContainer: StructuralInorganic
- type: Destructible
thresholds:
- trigger:
diff --git a/Resources/Prototypes/Entities/Structures/Windows/window.yml b/Resources/Prototypes/Entities/Structures/Windows/window.yml
index 5ecd83aece..7dad29c496 100644
--- a/Resources/Prototypes/Entities/Structures/Windows/window.yml
+++ b/Resources/Prototypes/Entities/Structures/Windows/window.yml
@@ -1,6 +1,7 @@
- type: entity
- id: Window
+ abstract: true
parent: [BaseDeltaPressureGlass, BaseStructure]
+ id: BaseWindowStructure
name: window
description: Don't smudge up the glass down there.
placement:
@@ -20,14 +21,10 @@
arc: 360 # interact despite grilles
- type: Tag
tags:
- - ForceFixRotations
- - Window
+ - ForceFixRotations
+ - Window
- type: Sprite
drawdepth: WallTops
- sprite: Structures/Windows/window.rsi
- - type: Icon
- sprite: Structures/Windows/window.rsi
- state: full
- type: Physics
bodyType: Static
- type: Fixtures
@@ -39,10 +36,6 @@
- FullTileMask
layer:
- GlassLayer
- - type: Damageable
- damageModifierSet: Glass
- - type: Injurable
- damageContainer: StructuralInorganic
- type: ExaminableDamage
messages: WindowMessages
- type: Repairable
@@ -50,22 +43,6 @@
cost: 6
delay: 4
fx: EffectRCDDeconstruct4
- - type: Destructible
- thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 50
- behaviors:
- - !type:PlaySoundBehavior
- sound:
- collection: WindowShatter
- - !type:SpawnEntitiesBehavior
- spawn:
- ShardGlass:
- min: 1
- max: 2
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- type: Airtight
- type: IconSmooth
key: windows
@@ -89,6 +66,36 @@
price: 100
- type: BlockWeather
+- type: entity
+ parent: BaseWindowStructure
+ id: Window
+ components:
+ - type: Sprite
+ sprite: Structures/Windows/window.rsi
+ - type: Icon
+ sprite: Structures/Windows/window.rsi
+ state: full
+ - type: Damageable
+ damageModifierSet: Glass
+ - type: Injurable
+ damageContainer: StructuralInorganic
+ - type: Destructible
+ thresholds:
+ - trigger:
+ !type:DamageTrigger
+ damage: 50
+ behaviors:
+ - !type:PlaySoundBehavior
+ sound:
+ collection: WindowShatter
+ - !type:SpawnEntitiesBehavior
+ spawn:
+ ShardGlass:
+ min: 1
+ max: 2
+ - !type:DoActsBehavior
+ acts: [ "Destruction" ]
+
- type: entity
parent: Window
id: TintedWindow
@@ -109,16 +116,21 @@
price: 70
- type: entity
- id: WindowRCDResistant
- parent: Window
abstract: true
+ id: BaseRCDResistant
components:
- type: RCDDeconstructable
deconstructable: false
- type: entity
- id: WindowDirectional
+ abstract: true
+ parent: [Window, BaseRCDResistant]
+ id: WindowRCDResistant
+
+- type: entity
+ abstract: true
parent: [BaseDeltaPressureGlassQuarter, BaseStructure]
+ id: BaseWindowStructureDirectional
name: directional window
description: Don't smudge up the glass down there.
placement:
@@ -130,18 +142,13 @@
arc: 360 # interact despite grilles
- type: Tag
tags:
- - Window
+ - Window
- type: MeleeSound
soundGroups:
Brute:
collection: GlassSmack
- type: Sprite
drawdepth: Mobs
- sprite: Structures/Windows/directional.rsi
- state: window
- - type: Icon
- sprite: Structures/Windows/directional.rsi
- state: window
- type: InteractionPopup
interactSuccessString: comp-window-knock
messagePerceivedByOthers: comp-window-knock
@@ -160,16 +167,42 @@
layer:
- GlassLayer
- type: Repairable
- - type: Damageable
- damageModifierSet: Glass
- - type: Injurable
- damageContainer: StructuralInorganic
- type: ExaminableDamage
messages: WindowMessages
- type: RCDDeconstructable
cost: 4
delay: 2
fx: EffectRCDDeconstruct2
+ - type: Airtight
+ noAirWhenFullyAirBlocked: false
+ airBlockedDirection:
+ - South
+ - type: Appearance
+ - type: DamageVisuals
+ thresholds: [5, 10, 20]
+ trackAllDamage: true
+ damageOverlay:
+ sprite: Structures/Windows/cracks_directional.rsi
+ - type: StaticPrice
+ price: 15
+ - type: Construction
+ graph: WindowDirectional
+ node: windowDirectional
+
+- type: entity
+ parent: BaseWindowStructureDirectional
+ id: WindowDirectional
+ components:
+ - type: Sprite
+ sprite: Structures/Windows/directional.rsi
+ state: window
+ - type: Icon
+ sprite: Structures/Windows/directional.rsi
+ state: window
+ - type: Damageable
+ damageModifierSet: Glass
+ - type: Injurable
+ damageContainer: StructuralInorganic
- type: Destructible
thresholds:
- trigger:
@@ -186,29 +219,11 @@
max: 1
- !type:DoActsBehavior
acts: [ "Destruction" ]
- - type: Airtight
- noAirWhenFullyAirBlocked: false
- airBlockedDirection:
- - South
- - type: Construction
- graph: WindowDirectional
- node: windowDirectional
- - type: Appearance
- - type: DamageVisuals
- thresholds: [5, 10, 20]
- trackAllDamage: true
- damageOverlay:
- sprite: Structures/Windows/cracks_directional.rsi
- - type: StaticPrice
- price: 15
- type: entity
- id: WindowDirectionalRCDResistant
- parent: WindowDirectional
abstract: true
- components:
- - type: RCDDeconstructable
- deconstructable: false
+ parent: [WindowDirectional, BaseRCDResistant]
+ id: WindowDirectionalRCDResistant
- type: entity
id: WindowFrostedDirectional
diff --git a/Resources/Prototypes/Entities/Structures/Windows/xenoresin.yml b/Resources/Prototypes/Entities/Structures/Windows/xenoresin.yml
index 989ffcca9b..71eafe0569 100644
--- a/Resources/Prototypes/Entities/Structures/Windows/xenoresin.yml
+++ b/Resources/Prototypes/Entities/Structures/Windows/xenoresin.yml
@@ -2,34 +2,11 @@
parent: ReinforcedWindow
id: XenoResinWindow
name: resin window
- description: Transparent and hardened, yet slightly sticky to the touch. Slightly stronger than a normal reinforced window.
+ description: Transparent and hardened, yet slightly sticky to the touch.
components:
- type: Sprite
- drawdepth: WallTops
sprite: Structures/Windows/xeno_resin.rsi
- type: Icon
sprite: Structures/Windows/xeno_resin.rsi
- - type: Destructible
- thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 100
- behaviors:
- - !type:PlaySoundBehavior
- sound:
- collection: WindowShatter
- - !type:SpawnEntitiesBehavior
- spawn:
- ShardGlassReinforced:
- min: 1
- max: 2
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- type: IconSmooth
base: xwindow
- - type: DamageVisuals
- thresholds: [5, 10, 20]
- damageDivisor: 4
- trackAllDamage: true
- damageOverlay:
- sprite: Structures/Windows/cracks.rsi
diff --git a/Resources/Prototypes/Entities/Structures/cargo_telepad.yml b/Resources/Prototypes/Entities/Structures/cargo_telepad.yml
index eb96ebf609..f2935a6117 100644
--- a/Resources/Prototypes/Entities/Structures/cargo_telepad.yml
+++ b/Resources/Prototypes/Entities/Structures/cargo_telepad.yml
@@ -1,6 +1,6 @@
- type: entity
id: CargoTelepad
- parent: [ BaseMachinePowered, ConstructibleMachine ]
+ parent: [ BaseMachinePowered, ConstructibleMachine, BaseConstructibleMachineDestructible ]
name: cargo telepad
description: Beam in the pizzas and dig in.
components:
@@ -31,8 +31,14 @@
shader: unshaded
- type: Damageable
damageModifierSet: StructuralMetallicStrong
- - type: Injurable
- damageContainer: StructuralInorganic
+ - type: Destructible
+ thresholds:
+ - trigger: !type:DamageTrigger
+ damage: 175
+ behaviors:
+ - !type:PlaySoundBehavior
+ sound:
+ collection: MetalBreak
- type: DeviceNetwork
deviceNetId: Wireless
receiveFrequencyId: BasicDevice
diff --git a/Resources/Prototypes/Entities/Structures/hydro_tray.yml b/Resources/Prototypes/Entities/Structures/hydro_tray.yml
index b1cbcc8b86..dff2d7481c 100644
--- a/Resources/Prototypes/Entities/Structures/hydro_tray.yml
+++ b/Resources/Prototypes/Entities/Structures/hydro_tray.yml
@@ -1,6 +1,6 @@
- type: entity
name: hydroponics tray
- parent: [ hydroponicsSoil, SmallConstructibleMachine]
+ parent: [ BaseHydroponicsSoil, SmallConstructibleMachine, BaseSmallConstructibleMachineDestructible]
id: hydroponicsTray
description: An interstellar-grade space farmplot allowing for rapid growth and selective breeding of crops. Just... keep in mind the space weeds.
components:
@@ -78,13 +78,9 @@
!type:DamageTrigger
damage: 100
behaviors:
- - !type:ChangeConstructionNodeBehavior
- node: machineFrame
- !type:PlaySoundBehavior
sound:
collection: MetalGlassBreak
- - !type:DoActsBehavior
- acts: ["Destruction"]
- type: Machine
board: HydroponicsTrayMachineCircuitboard
- type: WiresPanel
diff --git a/Resources/Prototypes/Entities/Structures/plastic_flaps.yml b/Resources/Prototypes/Entities/Structures/plastic_flaps.yml
index fa9079b632..e6fe0fab44 100644
--- a/Resources/Prototypes/Entities/Structures/plastic_flaps.yml
+++ b/Resources/Prototypes/Entities/Structures/plastic_flaps.yml
@@ -85,14 +85,6 @@
suffix: Airtight, Clear
description: Heavy duty, slightly stronger, airtight plastic flaps. Definitely can't get past those. No way.
components:
- - type: Destructible
- thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 150
- behaviors:
- - !type:DoActsBehavior
- acts: ["Destruction"]
- type: Airtight
- type: StaticPrice
price: 100
@@ -104,14 +96,6 @@
suffix: Airtight, Opaque
description: Heavy duty, slightly stronger, airtight plastic flaps. Definitely can't get past those. No way.
components:
- - type: Destructible
- thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 150
- behaviors:
- - !type:DoActsBehavior
- acts: ["Destruction"]
- type: Airtight
- type: StaticPrice
price: 100
diff --git a/Resources/Prototypes/Entities/Structures/soil.yml b/Resources/Prototypes/Entities/Structures/soil.yml
index a999781300..4c7297ca63 100644
--- a/Resources/Prototypes/Entities/Structures/soil.yml
+++ b/Resources/Prototypes/Entities/Structures/soil.yml
@@ -1,8 +1,7 @@
- type: entity
parent: SolutionLarge
- id: hydroponicsSoil
- name: soil
- description: A mix of organic matter and minerals creating a soil to grow your plant in space. Seems to be dry.
+ abstract: true
+ id: BaseHydroponicsSoil
placement:
mode: SnapgridCenter
components:
@@ -22,21 +21,7 @@
- FullTileMask
layer:
- FullTileMask
- - type: Damageable
- damageModifierSet: Metallic
- - type: Injurable
- damageContainer: Inorganic
- - type: Destructible
- thresholds:
- - trigger:
- !type:DamageTrigger
- damage: 50
- behaviors:
- - !type:DoActsBehavior
- acts: ["Destruction"]
- type: Sprite
- sprite: Structures/Hydroponics/misc.rsi
- state: soil
noRot: true
- type: PlantHolder
drawWarnings: false
@@ -58,6 +43,28 @@
- type: Appearance
- type: PlantHolderVisuals
+- type: entity
+ parent: BaseHydroponicsSoil
+ id: hydroponicsSoil
+ name: soil
+ description: A mix of organic matter and minerals creating a soil to grow your plant in space. Seems to be dry.
+ components:
+ - type: Damageable
+ damageModifierSet: Metallic
+ - type: Injurable
+ damageContainer: Inorganic
+ - type: Destructible
+ thresholds:
+ - trigger:
+ !type:DamageTrigger
+ damage: 50
+ behaviors:
+ - !type:DoActsBehavior
+ acts: ["Destruction"]
+ - type: Sprite
+ sprite: Structures/Hydroponics/misc.rsi
+ state: soil
+
- type: entity
parent: hydroponicsSoil
id: FungalSoil