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