From ff79798c2a461a4a63f65e968e60fb0bf284bde0 Mon Sep 17 00:00:00 2001 From: Swept Date: Thu, 7 Jan 2021 00:25:06 +0000 Subject: [PATCH] Adds SimpleMobBase for NPCs. (#2932) * Initial * Initial2 * Abstraction --- .../Prototypes/Entities/Mobs/NPCs/animals.yml | 58 ++++-------- .../Prototypes/Entities/Mobs/NPCs/pets.yml | 77 ++-------------- .../Entities/Mobs/NPCs/simplemob.yml | 90 +++++++++++++++++++ 3 files changed, 110 insertions(+), 115 deletions(-) create mode 100644 Resources/Prototypes/Entities/Mobs/NPCs/simplemob.yml diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml index 3b8bc5a20a..5eddf07663 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml @@ -9,11 +9,6 @@ drawdepth: Mobs suffix: AI components: - - type: AiController - logic: Civilian - - type: AiFactionTag - factions: - - SimpleNeutral - type: MovementSpeedModifier baseWalkSpeed : 4 baseSprintSpeed : 4 @@ -33,12 +28,10 @@ bounds: "-0.30,-0.25,0.40,0.25" mask: - Impassable - - MobImpassable - VaultImpassable - SmallImpassable layer: - Opaque - - MobImpassable - type: Damageable - type: MobState thresholds: @@ -60,6 +53,9 @@ - type: DamageStateVisualizer normal: monkey dead: dead + - type: FireVisualizer + sprite: Mobs/Effects/onfire.rsi + normalState: Monkey_burning - type: Pullable - type: Butcherable meat: FoodMeat @@ -67,7 +63,7 @@ - type: entity save: false name: gorilla - parent: MonkeyMob_Content + parent: SimpleMobBase id: GorillaMob_Content description: Smashes, roars, looks cool. Don't stand near one. drawdepth: Mobs @@ -87,12 +83,10 @@ bounds: "-0.90,-0.50,0.05,0.50" mask: - Impassable - - MobImpassable - VaultImpassable - SmallImpassable layer: - Opaque - - MobImpassable - type: Appearance visuals: - type: DamageStateVisualizer @@ -102,7 +96,7 @@ - type: entity save: false name: chicken - parent: MonkeyMob_Content + parent: SimpleMobBase id: ChickenMob_Content description: Comes before an egg, and IS a dinosaur! drawdepth: Mobs @@ -122,12 +116,10 @@ bounds: "-0.45,-0.20,0.10,0.20" mask: - Impassable - - MobImpassable - VaultImpassable - SmallImpassable layer: - Opaque - - MobImpassable - type: Appearance visuals: - type: DamageStateVisualizer @@ -137,7 +129,7 @@ - type: entity save: false name: butterfly - parent: MonkeyMob_Content + parent: SimpleMobBase id: ButterflyMob_Content description: Despite popular misconceptions, it's not actually made of butter. drawdepth: Mobs @@ -160,12 +152,10 @@ bounds: "-0.20,-0.20,0.20,0.20" mask: - Impassable - - MobImpassable - VaultImpassable - SmallImpassable layer: - Opaque - - MobImpassable - type: RandomSpriteColor state: butterfly colors: @@ -185,7 +175,7 @@ - type: entity save: false name: bat - parent: MonkeyMob_Content + parent: SimpleMobBase id: BatMob_Content description: Some cultures find them terrifying, others crunchy on the teeth. drawdepth: Mobs @@ -208,12 +198,10 @@ bounds: "-0.20,-0.20,0.20,0.20" mask: - Impassable - - MobImpassable - VaultImpassable - SmallImpassable layer: - Opaque - - MobImpassable - type: Appearance visuals: - type: DamageStateVisualizer @@ -223,7 +211,7 @@ - type: entity save: false name: bee - parent: MonkeyMob_Content + parent: SimpleMobBase id: BeeMob_Content description: Nice to have, but you can't build a civilization on a foundation of honey alone. drawdepth: Mobs @@ -247,12 +235,10 @@ bounds: "-0.10,-0.10,0.10,0.10" mask: - Impassable - - MobImpassable - VaultImpassable - SmallImpassable layer: - Opaque - - MobImpassable - type: Appearance visuals: - type: DamageStateVisualizer @@ -262,7 +248,7 @@ - type: entity save: false name: goat - parent: MonkeyMob_Content + parent: SimpleMobBase id: GoatMob_Content description: His spine consists of long sharp segments, no wonder he is so grumpy. drawdepth: Mobs @@ -282,12 +268,10 @@ bounds: "-0.60,-0.50,0.05,0.50" mask: - Impassable - - MobImpassable - VaultImpassable - SmallImpassable layer: - Opaque - - MobImpassable - type: Appearance visuals: - type: DamageStateVisualizer @@ -298,7 +282,7 @@ - type: entity save: false name: goose - parent: MonkeyMob_Content + parent: SimpleMobBase id: GooseMob_Content description: Its stomach and mind are an enigma beyond human comprehension. drawdepth: Mobs @@ -318,12 +302,10 @@ bounds: "-0.45,-0.35,0.45,0.35" mask: - Impassable - - MobImpassable - VaultImpassable - SmallImpassable layer: - Opaque - - MobImpassable - type: Appearance visuals: - type: DamageStateVisualizer @@ -334,7 +316,7 @@ - type: entity save: false name: parrot - parent: MonkeyMob_Content + parent: SimpleMobBase id: ParrotMob_Content description: Infiltrates your domain, spies on you, and somehow still a cool pet. drawdepth: Mobs @@ -357,12 +339,10 @@ bounds: "-0.30,-0.35,0.35,0.35" mask: - Impassable - - MobImpassable - VaultImpassable - SmallImpassable layer: - Opaque - - MobImpassable - type: Appearance visuals: - type: DamageStateVisualizer @@ -372,7 +352,7 @@ - type: entity save: false name: snake - parent: MonkeyMob_Content + parent: SimpleMobBase id: SnakeMob_Content description: Hissss! Bites aren't poisonous. drawdepth: Mobs @@ -392,12 +372,10 @@ bounds: "-0.30,-0.30,0.25,0.30" mask: - Impassable - - MobImpassable - VaultImpassable - SmallImpassable layer: - Opaque - - MobImpassable - type: Appearance visuals: - type: DamageStateVisualizer @@ -410,7 +388,7 @@ - type: entity save: false name: tarantula - parent: MonkeyMob_Content + parent: SimpleMobBase id: GiantSpiderMob_Content description: Widely recognized to be the literal worst thing in existence. drawdepth: Mobs @@ -430,12 +408,10 @@ bounds: "-0.30,-0.40,0.45,0.40" mask: - Impassable - - MobImpassable - VaultImpassable - SmallImpassable layer: - Opaque - - MobImpassable - type: Appearance visuals: - type: DamageStateVisualizer @@ -445,7 +421,7 @@ - type: entity save: false name: crab - parent: MonkeyMob_Content + parent: SimpleMobBase id: CrabMob_Content description: A folk legend goes around that his claw snaps spacemen out of existance over distasteful remarks. Be polite and tolerant for your own safety. drawdepth: Mobs @@ -465,12 +441,10 @@ bounds: "-0.40,-0.35,0.20,0.35" mask: - Impassable - - MobImpassable - VaultImpassable - SmallImpassable layer: - Opaque - - MobImpassable - type: Appearance visuals: - type: DamageStateVisualizer @@ -480,7 +454,7 @@ - type: entity save: false name: penguin - parent: MonkeyMob_Content + parent: SimpleMobBase id: PenguinMob_Content description: Their lives are constant pain due to their inner-body knees. drawdepth: Mobs @@ -500,12 +474,10 @@ bounds: "-0.50,-0.30,0.35,0.30" mask: - Impassable - - MobImpassable - VaultImpassable - SmallImpassable layer: - Opaque - - MobImpassable - type: Appearance visuals: - type: DamageStateVisualizer diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/pets.yml b/Resources/Prototypes/Entities/Mobs/NPCs/pets.yml index 20545cb1ba..0069a58a51 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/pets.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/pets.yml @@ -1,66 +1,10 @@ # Bounds Guide #1D2L3U4R -- type: entity - save: false - name: based on what? - abstract: true - id: PetBaseMob_Content - description: - drawdepth: Mobs - suffix: AI - components: - - type: AiController - logic: Civilian - - type: AiFactionTag - factions: - - SimpleNeutral - - type: MovementSpeedModifier - baseWalkSpeed : 5 - baseSprintSpeed : 5 - - type: InteractionOutline - - type: Clickable - - type: Physics - anchored: false - mass: 50 - shapes: - - !type:PhysShapeAabb - bounds: "-0.30,-0.35,0.45,0.35" - mask: - - Impassable - - MobImpassable - - VaultImpassable - - SmallImpassable - layer: - - Opaque - - MobImpassable - - type: Damageable - - type: MobState - thresholds: - 0: !type:NormalMobState {} - 50: !type:CriticalMobState {} - 100: !type:DeadMobState {} - - type: HeatResistance - - type: CombatMode - - type: Teleportable - - type: Stunnable - - type: UnarmedCombat - range: 1.5 - arcwidth: 0 - arc: bite - damage: 50 - - type: MovementIgnoreGravity - - type: Appearance - visuals: - - type: DamageStateVisualizer - normal: monkey - dead: dead - - type: Pullable - - type: entity save: false name: corgi - parent: PetBaseMob_Content + parent: SimpleMobBase id: CorgiMob_Content description: Finally, a space corgi! drawdepth: Mobs @@ -79,12 +23,10 @@ bounds: "-0.50,-0.25,0.30,0.25" mask: - Impassable - - MobImpassable - VaultImpassable - SmallImpassable layer: - Opaque - - MobImpassable - type: Appearance visuals: - type: DamageStateVisualizer @@ -94,7 +36,7 @@ - type: entity save: false name: ian - parent: PetBaseMob_Content + parent: SimpleMobBase id: IanMob_Content description: Favorite pet corgi. drawdepth: Mobs @@ -113,12 +55,10 @@ bounds: "-0.50,-0.25,0.30,0.25" mask: - Impassable - - MobImpassable - VaultImpassable - SmallImpassable layer: - Opaque - - MobImpassable - type: Appearance visuals: - type: DamageStateVisualizer @@ -128,7 +68,7 @@ - type: entity save: false name: cat - parent: PetBaseMob_Content + parent: SimpleMobBase id: CatMob_Content description: Feline pet, very funny. drawdepth: Mobs @@ -147,12 +87,10 @@ bounds: "-0.45,-0.20,0.30,0.20" mask: - Impassable - - MobImpassable - VaultImpassable - SmallImpassable layer: - Opaque - - MobImpassable - type: Appearance visuals: - type: DamageStateVisualizer @@ -162,7 +100,7 @@ - type: entity save: false name: calico cat - parent: PetBaseMob_Content + parent: SimpleMobBase id: CatCalicoMob_Content description: Feline pet, very funny. drawdepth: Mobs @@ -174,19 +112,16 @@ layers: - map: ["enum.DamageStateVisualLayers.Base"] state: cat2 - - type: Physics shapes: - !type:PhysShapeAabb bounds: "-0.50,-0.25,0.30,0.25" mask: - Impassable - - MobImpassable - VaultImpassable - SmallImpassable layer: - Opaque - - MobImpassable - type: Appearance visuals: - type: DamageStateVisualizer @@ -196,7 +131,7 @@ - type: entity save: false name: sloth - parent: PetBaseMob_Content + parent: SimpleMobBase id: SlothMob_Content description: Very slow animal. For people with low energy. drawdepth: Mobs @@ -218,12 +153,10 @@ bounds: "-0.45,-0.35,0.15,0.35" mask: - Impassable - - MobImpassable - VaultImpassable - SmallImpassable layer: - Opaque - - MobImpassable - type: Appearance visuals: - type: DamageStateVisualizer diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/simplemob.yml b/Resources/Prototypes/Entities/Mobs/NPCs/simplemob.yml new file mode 100644 index 0000000000..69e591833f --- /dev/null +++ b/Resources/Prototypes/Entities/Mobs/NPCs/simplemob.yml @@ -0,0 +1,90 @@ +- type: entity + save: false + abstract: true + id: SimpleMobBase + drawdepth: Mobs + suffix: AI + components: + - type: AiController + logic: Civilian + - type: AiFactionTag + factions: + - SimpleNeutral + - type: MovementSpeedModifier + baseWalkSpeed : 4 + baseSprintSpeed : 4 + - type: MovedByPressure + - type: Barotrauma + - type: DamageOnHighSpeedImpact + soundHit: /Audio/Effects/hit_kick.ogg + - type: InteractionOutline + - type: Sprite + drawdepth: Mobs + - type: Clickable + - type: Physics + anchored: false + mass: 50 + shapes: + - !type:PhysShapeAabb + mask: + - Impassable +# - MobImpassable Turns these off for now since humans don't have collisions either. + - VaultImpassable + - SmallImpassable + layer: + - Opaque +# - MobImpassable + - type: Bloodstream + max_volume: 100 + - type: Damageable + damageContainer: biologicalDamageContainer + - type: AtmosExposed + - type: Flammable + fireSpread: true + canResistFire: true + - type: Temperature + heatDamageThreshold: 360 + coldDamageThreshold: 260 + currentTemperature: 310.15 + specificHeat: 42 + tempDamageCoefficient: 0.1 + - type: Metabolism + metabolismHeat: 5000 + radiatedHeat: 400 + implicitHeatRegulation: 5000 + sweatHeatRegulation: 5000 + shiveringHeatRegulation: 5000 + normalBodyTemperature: 310.15 + thermalRegulationTemperatureThreshold: 25 + needsGases: + Oxygen: 0.00060763888 + producesGases: + Oxygen: 0.00045572916 + CarbonDioxide: 0.00015190972 + - type: MobState + thresholds: + 0: !type:NormalMobState {} + 50: !type:CriticalMobState {} + 100: !type:DeadMobState {} + - type: HeatResistance + - type: CombatMode + - type: Teleportable + - type: Internals + - type: Stunnable + - type: UnarmedCombat + range: 1.5 + arcwidth: 0 + arc: bite + damage: 50 + - type: Appearance + visuals: + - type: BuckleVisualizer + - type: FireVisualizer + sprite: Mobs/Effects/onfire.rsi + normalState: Generic_mob_burning + - type: Pullable + - type: Buckle + - type: Butcherable + meat: FoodMeat + - type: Recyclable + safe: false