diff --git a/Content.IntegrationTests/Tests/Interaction/InRangeUnobstructed.cs b/Content.IntegrationTests/Tests/Interaction/InRangeUnobstructed.cs index a2cc176508..817442b4c5 100644 --- a/Content.IntegrationTests/Tests/Interaction/InRangeUnobstructed.cs +++ b/Content.IntegrationTests/Tests/Interaction/InRangeUnobstructed.cs @@ -12,7 +12,7 @@ namespace Content.IntegrationTests.Tests.Interaction [TestOf(typeof(SharedInteractionSystem))] public sealed class InRangeUnobstructed { - private const string HumanId = "MobHumanBase"; + private const string HumanId = "MobHuman"; private const float InteractionRange = SharedInteractionSystem.InteractionRange; diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/dummy_npcs.yml b/Resources/Prototypes/Entities/Mobs/NPCs/dummy_npcs.yml index 9efba23017..9c5ce19a41 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/dummy_npcs.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/dummy_npcs.yml @@ -1,7 +1,7 @@ - type: entity save: false name: Pathfinding Dummy - parent: MobHumanBase + parent: BaseMobHuman id: MobHumanPathDummy description: A miserable pile of secrets. suffix: AI diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/human.yml b/Resources/Prototypes/Entities/Mobs/NPCs/human.yml index 944ebe15c2..db902e3921 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/human.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/human.yml @@ -1,6 +1,6 @@ - type: entity name: Civilian - parent: MobHumanBase + parent: BaseMobHuman id: MobCivilian description: A miserable pile of secrets. components: @@ -20,7 +20,7 @@ - type: entity name: Spirate - parent: MobHumanBase + parent: BaseMobHuman id: MobSpirate description: Yarr! components: @@ -49,7 +49,7 @@ description: A highly trained CentCom agent, capable of dealing with various threats. - type: entity - parent: MobHumanBase + parent: BaseMobHuman suffix: Dead save: true id: SalvageHumanCorpse diff --git a/Resources/Prototypes/Entities/Mobs/Player/dwarf.yml b/Resources/Prototypes/Entities/Mobs/Player/dwarf.yml index d36f74f9ec..d0e71852b2 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/dwarf.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/dwarf.yml @@ -1,7 +1,7 @@ - type: entity save: false name: Urist McHands The Dwarf - parent: MobDwarfBase + parent: BaseMobDwarf id: MobDwarf description: A miserable pile of secrets. components: diff --git a/Resources/Prototypes/Entities/Mobs/Player/human.yml b/Resources/Prototypes/Entities/Mobs/Player/human.yml index 93263d25e4..9e729f54c9 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/human.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/human.yml @@ -1,7 +1,7 @@ - type: entity save: false name: Urist McHands - parent: MobHumanBase + parent: BaseMobHuman id: MobHuman description: A miserable pile of secrets. components: diff --git a/Resources/Prototypes/Entities/Mobs/Player/reptilian.yml b/Resources/Prototypes/Entities/Mobs/Player/reptilian.yml index 8db63cf7bc..99b07edbba 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/reptilian.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/reptilian.yml @@ -1,7 +1,7 @@ - type: entity save: false name: Urisst' Mzhand - parent: MobReptilianBase + parent: BaseMobReptilian id: MobReptilian description: A miserable pile of scales. components: diff --git a/Resources/Prototypes/Entities/Mobs/Player/skeleton.yml b/Resources/Prototypes/Entities/Mobs/Player/skeleton.yml index d58739d9db..750e9b8a1e 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/skeleton.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/skeleton.yml @@ -1,6 +1,6 @@ - type: entity save: false - parent: MobSkeletonPersonBase + parent: BaseMobSkeletonPerson id: MobSkeletonPerson components: - type: InteractionPopup diff --git a/Resources/Prototypes/Entities/Mobs/Player/slime.yml b/Resources/Prototypes/Entities/Mobs/Player/slime.yml index 1b25b812cb..41bebf50d3 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/slime.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/slime.yml @@ -1,6 +1,6 @@ - type: entity save: false - parent: MobSlimePersonBase + parent: BaseMobSlimePerson id: MobSlimePerson components: - type: CombatMode diff --git a/Resources/Prototypes/Entities/Mobs/Player/vox.yml b/Resources/Prototypes/Entities/Mobs/Player/vox.yml index ec100f1275..ddf5bfbc68 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/vox.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/vox.yml @@ -1,7 +1,7 @@ - type: entity save: false name: Vox - parent: MobVoxBase + parent: BaseMobVox id: MobVox components: - type: CombatMode diff --git a/Resources/Prototypes/Entities/Mobs/Species/base.yml b/Resources/Prototypes/Entities/Mobs/Species/base.yml new file mode 100644 index 0000000000..8ec7e20b67 --- /dev/null +++ b/Resources/Prototypes/Entities/Mobs/Species/base.yml @@ -0,0 +1,451 @@ +# Anything human specific (e.g. UI, input) goes under MobHuman +- type: entity + save: false + name: Urist McHands + id: BaseMobOrganic + description: A miserable pile of secrets. + noSpawn: true + components: + - type: RangedDamageSound + soundGroups: + Brute: + collection: + MeatBulletImpact + soundTypes: + Heat: + collection: + MeatLaserImpact + - type: Tag + tags: + - CanPilot + - FootstepSound + - DoorBumpOpener + - type: Reactive + groups: + Flammable: [ Touch ] + Extinguish: [ Touch ] + Acidic: [Touch, Ingestion] + reactions: + - reagents: [Water, SpaceCleaner] + methods: [Touch] + effects: + - !type:WashCreamPieReaction + - type: Flashable + - type: Polymorphable + - type: Hands + - type: MovementSpeedModifier + - type: MovedByPressure + - type: Barotrauma + damage: + types: + Blunt: 0.15 #per second, scales with pressure and other constants. + - type: DamageOnHighSpeedImpact + damage: + types: + Blunt: 5 + soundHit: + path: /Audio/Effects/hit_kick.ogg + # Organs + - type: InjectableSolution + solution: chemicals + - type: IdExaminable + - type: HealthExaminable + examinableTypes: + - Blunt + - Slash + - Piercing + - Heat + - Shock + - type: Bloodstream + bloodlossDamage: + types: + Bloodloss: + 1 + bloodlossHealDamage: + types: + Bloodloss: + -0.25 + - type: Stamina + - type: StatusEffects + allowed: + - Stun + - KnockedDown + - SlowedDown + - Stutter + - SeeingRainbows + - Electrocution + - Drunk + - SlurredSpeech + - PressureImmunity + - Muted + - ForcedSleep + - type: DiseaseCarrier + - type: Blindable + # Other + - type: Inventory + - type: Clickable + - type: InteractionOutline + - type: Icon + sprite: Mobs/Species/Human/parts.rsi + state: full + - type: Sprite + netsync: false + noRot: true + drawdepth: Mobs + layers: + - map: [ "enum.HumanoidVisualLayers.Chest" ] + color: "#e8b59b" + sprite: Mobs/Species/Human/parts.rsi + state: torso_m + - map: [ "enum.HumanoidVisualLayers.Head" ] + color: "#e8b59b" + sprite: Mobs/Species/Human/parts.rsi + state: head_m + - map: [ "enum.HumanoidVisualLayers.Eyes" ] + color: "#008800" + sprite: Mobs/Customization/eyes.rsi + state: eyes + - map: [ "enum.HumanoidVisualLayers.RArm" ] + color: "#e8b59b" + sprite: Mobs/Species/Human/parts.rsi + state: r_arm + - map: [ "enum.HumanoidVisualLayers.LArm" ] + color: "#e8b59b" + sprite: Mobs/Species/Human/parts.rsi + state: l_arm + - map: [ "enum.HumanoidVisualLayers.RLeg" ] + color: "#e8b59b" + sprite: Mobs/Species/Human/parts.rsi + state: r_leg + - map: [ "enum.HumanoidVisualLayers.LLeg" ] + color: "#e8b59b" + sprite: Mobs/Species/Human/parts.rsi + state: l_leg + - shader: StencilClear + sprite: Mobs/Species/Human/parts.rsi + state: l_leg + - shader: StencilMask + map: [ "enum.HumanoidVisualLayers.StencilMask" ] + sprite: Mobs/Customization/masking_helpers.rsi + state: female_full + visible: false + - map: [ "jumpsuit" ] + shader: StencilDraw + - map: [ "enum.HumanoidVisualLayers.LHand" ] + color: "#e8b59b" + sprite: Mobs/Species/Human/parts.rsi + state: l_hand + - map: [ "enum.HumanoidVisualLayers.RHand" ] + color: "#e8b59b" + sprite: Mobs/Species/Human/parts.rsi + state: r_hand + - map: [ "enum.HumanoidVisualLayers.LFoot" ] + color: "#e8b59b" + sprite: Mobs/Species/Human/parts.rsi + state: l_foot + - map: [ "enum.HumanoidVisualLayers.RFoot" ] + color: "#e8b59b" + sprite: Mobs/Species/Human/parts.rsi + state: r_foot + - map: [ "enum.HumanoidVisualLayers.Handcuffs" ] + color: "#ffffff" + sprite: Objects/Misc/handcuffs.rsi + state: body-overlay-2 + visible: false + - map: [ "id" ] + - map: [ "gloves" ] + - map: [ "shoes" ] + - map: [ "ears" ] + - map: [ "outerClothing" ] + - map: [ "eyes" ] + - map: [ "belt" ] + - map: [ "neck" ] + - map: [ "back" ] + - map: [ "enum.HumanoidVisualLayers.FacialHair" ] + state: shaved + sprite: Mobs/Customization/human_facial_hair.rsi + - map: [ "enum.HumanoidVisualLayers.Hair" ] + state: bald + sprite: Mobs/Customization/human_hair.rsi + - map: [ "mask" ] + - map: [ "head" ] + - map: [ "pocket1" ] + - map: [ "pocket2" ] + - type: Markings + layerPoints: + Tail: + points: 0 + required: false + HeadTop: + points: 0 + required: false + Chest: + points: 1 + required: false + Legs: + points: 2 + required: false + Arms: + points: 2 + required: false + - type: Physics + bodyType: KinematicController + - type: Fixtures + fixtures: # TODO: This needs a second fixture just for mob collisions. + - shape: + !type:PhysShapeCircle + radius: 0.35 + mass: 70 + restitution: 0.0 + mask: + - MobMask + layer: + - MobLayer + - type: AtmosExposed + - type: Flammable + fireSpread: true + canResistFire: true + damage: + types: + Heat: 1 #per second, scales with number of fire 'stacks' + - type: Temperature + heatDamageThreshold: 360 + coldDamageThreshold: 260 + currentTemperature: 310.15 + specificHeat: 42 + coldDamage: + types: + Cold: 0.1 #per second, scales with temperature & other constants + heatDamage: + types: + Heat: 0.1 #per second, scales with temperature & other constants + - type: HumanoidAppearance + - type: Body + template: HumanoidTemplate + preset: HumanPreset + - type: Damageable + damageContainer: Biological + - type: ThermalRegulator + metabolismHeat: 800 + radiatedHeat: 100 + implicitHeatRegulation: 500 + sweatHeatRegulation: 2000 + shiveringHeatRegulation: 2000 + normalBodyTemperature: 310.15 + thermalRegulationTemperatureThreshold: 25 + - type: Internals + - type: MobState + thresholds: + 0: Alive + 100: Critical + 200: Dead + - type: Destructible + thresholds: + - trigger: + !type:DamageTypeTrigger + damageType: Blunt + damage: 400 + behaviors: + - !type:GibBehavior { } + - type: SlowOnDamage + speedModifierThresholds: + 60: 0.7 + 80: 0.5 + - type: HeatResistance + - type: Appearance + visuals: + - type: RotationVisualizer + - type: BuckleVisualizer + - type: CreamPiedVisualizer + state: creampie_human + - type: DamageVisualizer + thresholds: [ 20, 40, 100 ] + targetLayers: + - "enum.HumanoidVisualLayers.Chest" + - "enum.HumanoidVisualLayers.Head" + - "enum.HumanoidVisualLayers.LArm" + - "enum.HumanoidVisualLayers.LLeg" + - "enum.HumanoidVisualLayers.RArm" + - "enum.HumanoidVisualLayers.RLeg" + damageOverlayGroups: + Brute: + sprite: Mobs/Effects/brute_damage.rsi + color: "#FF0000" + Burn: + sprite: Mobs/Effects/burn_damage.rsi + - type: FireVisuals + sprite: Mobs/Effects/onfire.rsi + normalState: Generic_mob_burning + alternateState: Standing + fireStackAlternateState: 3 + - type: CombatMode + - type: Climbing + - type: Cuffable + - type: CharacterInfo + - type: AnimationPlayer + - type: Buckle + - type: MeleeWeapon + hitSound: + collection: Punch + range: 0.8 + arcwidth: 30 + arc: fist + damage: + types: + Blunt: 5 + - type: Pullable + - type: DoAfter + - type: CreamPied + - type: Stripping + - type: Strippable + - type: UserInterface + interfaces: + - key: enum.StrippingUiKey.Key + type: StrippableBoundUserInterface + - type: Puller + - type: Butcherable + butcheringType: Spike # TODO human. + spawned: + - id: FoodMeat + amount: 5 + # - type: Recyclable Turns out turning off recycler safeties without considering the instagib is a bad idea + # safe: false + - type: Speech + speechSounds: Alto + - type: Vocal + - type: Emoting + - type: Grammar + attributes: + proper: true + - type: StandingState + - type: Fingerprint + - type: MobPrice + price: 1500 # Kidnapping a living person and selling them for cred is a good move. + deathPenalty: 0.01 # However they really ought to be living and intact, otherwise they're worth 100x less. + - type: Perishable + +- type: entity + save: false + name: Urist McHands + id: BaseMobOrganicDummy + abstract: true + description: A dummy human meant to be used in character setup. + components: + - type: Hands + - type: Inventory + - type: ContainerContainer + - type: Icon + sprite: Mobs/Species/Human/parts.rsi + state: full + - type: Sprite + netsync: false + drawdepth: Mobs + noRot: true + # TODO BODY Turn these into individual body parts? + layers: + - map: ["enum.HumanoidVisualLayers.Chest"] + color: "#e8b59b" + sprite: Mobs/Species/Human/parts.rsi + state: torso_m + - map: ["enum.HumanoidVisualLayers.Head"] + color: "#e8b59b" + sprite: Mobs/Species/Human/parts.rsi + state: head_m + - map: ["enum.HumanoidVisualLayers.Eyes"] + color: "#008800" + sprite: Mobs/Customization/eyes.rsi + state: eyes + - map: ["enum.HumanoidVisualLayers.RArm"] + color: "#e8b59b" + sprite: Mobs/Species/Human/parts.rsi + state: r_arm + - map: ["enum.HumanoidVisualLayers.LArm"] + color: "#e8b59b" + sprite: Mobs/Species/Human/parts.rsi + state: l_arm + - map: ["enum.HumanoidVisualLayers.RLeg"] + color: "#e8b59b" + sprite: Mobs/Species/Human/parts.rsi + state: r_leg + - map: ["enum.HumanoidVisualLayers.LLeg"] + color: "#e8b59b" + sprite: Mobs/Species/Human/parts.rsi + state: l_leg + - map: [ "enum.HumanoidVisualLayers.LFoot" ] + color: "#e8b59b" + sprite: Mobs/Species/Human/parts.rsi + state: l_foot + - map: [ "enum.HumanoidVisualLayers.RFoot" ] + color: "#e8b59b" + sprite: Mobs/Species/Human/parts.rsi + state: r_foot + - shader: StencilClear + - shader: StencilMask + map: ["enum.HumanoidVisualLayers.StencilMask"] + sprite: Mobs/Customization/masking_helpers.rsi + state: female_full + visible: false + - map: ["jumpsuit"] + shader: StencilDraw + - map: ["enum.HumanoidVisualLayers.LHand"] + color: "#e8b59b" + sprite: Mobs/Species/Human/parts.rsi + state: l_hand + - map: ["enum.HumanoidVisualLayers.RHand"] + color: "#e8b59b" + sprite: Mobs/Species/Human/parts.rsi + state: r_hand + - map: ["enum.HumanoidVisualLayers.Handcuffs"] + color: "#ffffff" + sprite: Objects/Misc/handcuffs.rsi + state: body-overlay-2 + visible: false + - map: ["id"] + - map: ["gloves"] + - map: ["shoes"] + - map: ["ears"] + - map: ["outerClothing"] + - map: ["eyes"] + - map: ["belt"] + - map: ["neck"] + - map: ["back"] + - map: ["enum.HumanoidVisualLayers.FacialHair"] + state: shaved + sprite: Mobs/Customization/human_facial_hair.rsi + - map: ["enum.HumanoidVisualLayers.Hair"] + state: bald + sprite: Mobs/Customization/human_hair.rsi + - map: ["mask"] + - map: ["head"] + - map: [ "pocket1" ] + - map: [ "pocket2" ] + - map: ["hand-left"] + - map: ["hand-right"] + - type: Markings + - type: Physics + bodyType: Dynamic + - type: Fixtures + fixtures: + - shape: + !type:PhysShapeAabb + bounds: "-0.35,-0.35,0.35,0.35" + mass: 70 + restitution: 0.0 + mask: + - MobMask + layer: + - MobLayer + - type: HumanoidAppearance + - type: Body + template: HumanoidTemplate + preset: HumanPreset + - type: Damageable + damageContainer: Biological + - type: MobState + thresholds: + 0: Alive + 100: Critical + 200: Dead + - type: Appearance + visuals: + - type: RotationVisualizer diff --git a/Resources/Prototypes/Entities/Mobs/Species/dwarf.yml b/Resources/Prototypes/Entities/Mobs/Species/dwarf.yml index f40e5970bb..f1c47c1a3f 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/dwarf.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/dwarf.yml @@ -1,11 +1,13 @@ - type: entity save: false name: Urist McHands The Dwarf - parent: MobHumanBase - id: MobDwarfBase + parent: BaseMobOrganic + id: BaseMobDwarf abstract: true description: A miserable pile of secrets. components: + - type: Hunger + - type: Thirst - type: Icon sprite: Mobs/Species/Slime/parts.rsi state: full diff --git a/Resources/Prototypes/Entities/Mobs/Species/human.yml b/Resources/Prototypes/Entities/Mobs/Species/human.yml index a6dbeb0324..cd8edb4f8f 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/human.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/human.yml @@ -1,454 +1,16 @@ # Anything human specific (e.g. UI, input) goes under MobHuman - type: entity - save: false name: Urist McHands - id: MobHumanBase + parent: BaseMobOrganic + id: BaseMobHuman + abstract: true description: A miserable pile of secrets. - noSpawn: true components: - - type: RangedDamageSound - soundGroups: - Brute: - collection: - MeatBulletImpact - soundTypes: - Heat: - collection: - MeatLaserImpact - - type: Tag - tags: - - CanPilot - - FootstepSound - - DoorBumpOpener - - type: Reactive - groups: - Flammable: [ Touch ] - Extinguish: [ Touch ] - Acidic: [Touch, Ingestion] - reactions: - - reagents: [Water, SpaceCleaner] - methods: [Touch] - effects: - - !type:WashCreamPieReaction - - type: Flashable - - type: Polymorphable - - type: Identity - - type: Hands - - type: MovementSpeedModifier - - type: MovedByPressure - - type: Barotrauma - damage: - types: - Blunt: 0.15 #per second, scales with pressure and other constants. - - type: DamageOnHighSpeedImpact - damage: - types: - Blunt: 5 - soundHit: - path: /Audio/Effects/hit_kick.ogg - type: Hunger - type: Thirst - # Organs - - type: InjectableSolution - solution: chemicals - - type: IdExaminable - - type: HealthExaminable - examinableTypes: - - Blunt - - Slash - - Piercing - - Heat - - Shock - - type: Bloodstream - bloodlossDamage: - types: - Bloodloss: - 1 - bloodlossHealDamage: - types: - Bloodloss: - -0.25 - - type: Stamina - - type: StatusEffects - allowed: - - Stun - - KnockedDown - - SlowedDown - - Stutter - - SeeingRainbows - - Electrocution - - Drunk - - SlurredSpeech - - PressureImmunity - - Muted - - ForcedSleep - - type: DiseaseCarrier - - type: Blindable - # Other - - type: Inventory - - type: Clickable - - type: InteractionOutline - - type: Icon - sprite: Mobs/Species/Human/parts.rsi - state: full - - type: Sprite - netsync: false - noRot: true - drawdepth: Mobs - layers: - - map: [ "enum.HumanoidVisualLayers.Chest" ] - color: "#e8b59b" - sprite: Mobs/Species/Human/parts.rsi - state: torso_m - - map: [ "enum.HumanoidVisualLayers.Head" ] - color: "#e8b59b" - sprite: Mobs/Species/Human/parts.rsi - state: head_m - - map: [ "enum.HumanoidVisualLayers.Eyes" ] - color: "#008800" - sprite: Mobs/Customization/eyes.rsi - state: eyes - - map: [ "enum.HumanoidVisualLayers.RArm" ] - color: "#e8b59b" - sprite: Mobs/Species/Human/parts.rsi - state: r_arm - - map: [ "enum.HumanoidVisualLayers.LArm" ] - color: "#e8b59b" - sprite: Mobs/Species/Human/parts.rsi - state: l_arm - - map: [ "enum.HumanoidVisualLayers.RLeg" ] - color: "#e8b59b" - sprite: Mobs/Species/Human/parts.rsi - state: r_leg - - map: [ "enum.HumanoidVisualLayers.LLeg" ] - color: "#e8b59b" - sprite: Mobs/Species/Human/parts.rsi - state: l_leg - - shader: StencilClear - sprite: Mobs/Species/Human/parts.rsi - state: l_leg - - shader: StencilMask - map: [ "enum.HumanoidVisualLayers.StencilMask" ] - sprite: Mobs/Customization/masking_helpers.rsi - state: female_full - visible: false - - map: [ "jumpsuit" ] - shader: StencilDraw - - map: [ "enum.HumanoidVisualLayers.LHand" ] - color: "#e8b59b" - sprite: Mobs/Species/Human/parts.rsi - state: l_hand - - map: [ "enum.HumanoidVisualLayers.RHand" ] - color: "#e8b59b" - sprite: Mobs/Species/Human/parts.rsi - state: r_hand - - map: [ "enum.HumanoidVisualLayers.LFoot" ] - color: "#e8b59b" - sprite: Mobs/Species/Human/parts.rsi - state: l_foot - - map: [ "enum.HumanoidVisualLayers.RFoot" ] - color: "#e8b59b" - sprite: Mobs/Species/Human/parts.rsi - state: r_foot - - map: [ "enum.HumanoidVisualLayers.Handcuffs" ] - color: "#ffffff" - sprite: Objects/Misc/handcuffs.rsi - state: body-overlay-2 - visible: false - - map: [ "id" ] - - map: [ "gloves" ] - - map: [ "shoes" ] - - map: [ "ears" ] - - map: [ "outerClothing" ] - - map: [ "eyes" ] - - map: [ "belt" ] - - map: [ "neck" ] - - map: [ "back" ] - - map: [ "enum.HumanoidVisualLayers.FacialHair" ] - state: shaved - sprite: Mobs/Customization/human_facial_hair.rsi - - map: [ "enum.HumanoidVisualLayers.Hair" ] - state: bald - sprite: Mobs/Customization/human_hair.rsi - - map: [ "mask" ] - - map: [ "head" ] - - map: [ "pocket1" ] - - map: [ "pocket2" ] - - type: Markings - layerPoints: - Tail: - points: 0 - required: false - HeadTop: - points: 0 - required: false - Chest: - points: 1 - required: false - Legs: - points: 2 - required: false - Arms: - points: 2 - required: false - - type: Physics - bodyType: KinematicController - - type: Fixtures - fixtures: # TODO: This needs a second fixture just for mob collisions. - - shape: - !type:PhysShapeCircle - radius: 0.35 - mass: 70 - restitution: 0.0 - mask: - - MobMask - layer: - - MobLayer - - type: AtmosExposed - - type: Flammable - fireSpread: true - canResistFire: true - damage: - types: - Heat: 1 #per second, scales with number of fire 'stacks' - - type: Temperature - heatDamageThreshold: 360 - coldDamageThreshold: 260 - currentTemperature: 310.15 - specificHeat: 42 - coldDamage: - types: - Cold: 0.1 #per second, scales with temperature & other constants - heatDamage: - types: - Heat: 0.1 #per second, scales with temperature & other constants - - type: HumanoidAppearance - - type: Body - template: HumanoidTemplate - preset: HumanPreset - - type: Damageable - damageContainer: Biological - - type: ThermalRegulator - metabolismHeat: 800 - radiatedHeat: 100 - implicitHeatRegulation: 500 - sweatHeatRegulation: 2000 - shiveringHeatRegulation: 2000 - normalBodyTemperature: 310.15 - thermalRegulationTemperatureThreshold: 25 - - type: Internals - - type: MobState - thresholds: - 0: Alive - 100: Critical - 200: Dead - - type: Destructible - thresholds: - - trigger: - !type:DamageTypeTrigger - damageType: Blunt - damage: 400 - behaviors: - - !type:GibBehavior { } - - type: SlowOnDamage - speedModifierThresholds: - 60: 0.7 - 80: 0.5 - - type: HeatResistance - - type: Appearance - visuals: - - type: RotationVisualizer - - type: BuckleVisualizer - - type: CreamPiedVisualizer - state: creampie_human - - type: DamageVisualizer - thresholds: [20, 40, 100] - targetLayers: - - "enum.HumanoidVisualLayers.Chest" - - "enum.HumanoidVisualLayers.Head" - - "enum.HumanoidVisualLayers.LArm" - - "enum.HumanoidVisualLayers.LLeg" - - "enum.HumanoidVisualLayers.RArm" - - "enum.HumanoidVisualLayers.RLeg" - damageOverlayGroups: - Brute: - sprite: Mobs/Effects/brute_damage.rsi - color: "#FF0000" - Burn: - sprite: Mobs/Effects/burn_damage.rsi - - type: FireVisuals - sprite: Mobs/Effects/onfire.rsi - normalState: Generic_mob_burning - alternateState: Standing - fireStackAlternateState: 3 - - type: CombatMode - - type: Climbing - - type: Cuffable - - type: CharacterInfo - - type: AnimationPlayer - - type: Buckle - - type: MeleeWeapon - hitSound: - collection: Punch - range: 0.8 - arcwidth: 30 - arc: fist - damage: - types: - Blunt: 5 - - type: Pullable - - type: DoAfter - - type: CreamPied - - type: Stripping - - type: Strippable - - type: UserInterface - interfaces: - - key: enum.StrippingUiKey.Key - type: StrippableBoundUserInterface - - type: Puller - - type: Butcherable - butcheringType: Spike # TODO human. - spawned: - - id: FoodMeat - amount: 5 -# - type: Recyclable Turns out turning off recycler safeties without considering the instagib is a bad idea -# safe: false - - type: Speech - speechSounds: Alto - - type: Vocal - - type: Emoting - - type: Grammar - attributes: - proper: true - - type: StandingState - - type: Fingerprint - - type: MobPrice - price: 1500 # Kidnapping a living person and selling them for cred is a good move. - deathPenalty: 0.01 # However they really ought to be living and intact, otherwise they're worth 100x less. - - type: Perishable - type: entity - save: false name: Urist McHands id: MobHumanDummy + parent: BaseMobOrganicDummy noSpawn: true - description: A dummy human meant to be used in character setup. - components: - - type: Hands - - type: Inventory - - type: ContainerContainer - - type: Icon - sprite: Mobs/Species/Human/parts.rsi - state: full - - type: Sprite - netsync: false - drawdepth: Mobs - noRot: true - # TODO BODY Turn these into individual body parts? - layers: - - map: ["enum.HumanoidVisualLayers.Chest"] - color: "#e8b59b" - sprite: Mobs/Species/Human/parts.rsi - state: torso_m - - map: ["enum.HumanoidVisualLayers.Head"] - color: "#e8b59b" - sprite: Mobs/Species/Human/parts.rsi - state: head_m - - map: ["enum.HumanoidVisualLayers.Eyes"] - color: "#008800" - sprite: Mobs/Customization/eyes.rsi - state: eyes - - map: ["enum.HumanoidVisualLayers.RArm"] - color: "#e8b59b" - sprite: Mobs/Species/Human/parts.rsi - state: r_arm - - map: ["enum.HumanoidVisualLayers.LArm"] - color: "#e8b59b" - sprite: Mobs/Species/Human/parts.rsi - state: l_arm - - map: ["enum.HumanoidVisualLayers.RLeg"] - color: "#e8b59b" - sprite: Mobs/Species/Human/parts.rsi - state: r_leg - - map: ["enum.HumanoidVisualLayers.LLeg"] - color: "#e8b59b" - sprite: Mobs/Species/Human/parts.rsi - state: l_leg - - map: [ "enum.HumanoidVisualLayers.LFoot" ] - color: "#e8b59b" - sprite: Mobs/Species/Human/parts.rsi - state: l_foot - - map: [ "enum.HumanoidVisualLayers.RFoot" ] - color: "#e8b59b" - sprite: Mobs/Species/Human/parts.rsi - state: r_foot - - shader: StencilClear - - shader: StencilMask - map: ["enum.HumanoidVisualLayers.StencilMask"] - sprite: Mobs/Customization/masking_helpers.rsi - state: female_full - visible: false - - map: ["jumpsuit"] - shader: StencilDraw - - map: ["enum.HumanoidVisualLayers.LHand"] - color: "#e8b59b" - sprite: Mobs/Species/Human/parts.rsi - state: l_hand - - map: ["enum.HumanoidVisualLayers.RHand"] - color: "#e8b59b" - sprite: Mobs/Species/Human/parts.rsi - state: r_hand - - map: ["enum.HumanoidVisualLayers.Handcuffs"] - color: "#ffffff" - sprite: Objects/Misc/handcuffs.rsi - state: body-overlay-2 - visible: false - - map: ["id"] - - map: ["gloves"] - - map: ["shoes"] - - map: ["ears"] - - map: ["outerClothing"] - - map: ["eyes"] - - map: ["belt"] - - map: ["neck"] - - map: ["back"] - - map: ["enum.HumanoidVisualLayers.FacialHair"] - state: shaved - sprite: Mobs/Customization/human_facial_hair.rsi - - map: ["enum.HumanoidVisualLayers.Hair"] - state: bald - sprite: Mobs/Customization/human_hair.rsi - - map: ["mask"] - - map: ["head"] - - map: [ "pocket1" ] - - map: [ "pocket2" ] - - map: ["hand-left"] - - map: ["hand-right"] - - type: Markings - - type: Physics - bodyType: Dynamic - - type: Fixtures - fixtures: - - shape: - !type:PhysShapeAabb - bounds: "-0.35,-0.35,0.35,0.35" - mass: 70 - restitution: 0.0 - mask: - - MobMask - layer: - - MobLayer - - type: HumanoidAppearance - - type: Body - template: HumanoidTemplate - preset: HumanPreset - - type: Damageable - damageContainer: Biological - - type: MobState - thresholds: - 0: Alive - 100: Critical - 200: Dead - - type: Appearance - visuals: - - type: RotationVisualizer diff --git a/Resources/Prototypes/Entities/Mobs/Species/reptilian.yml b/Resources/Prototypes/Entities/Mobs/Species/reptilian.yml index 01e711b774..e5219d5759 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/reptilian.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/reptilian.yml @@ -1,11 +1,13 @@ - type: entity save: false name: Urisst' Mzhand - parent: MobHumanBase - id: MobReptilianBase + parent: BaseMobOrganic + id: BaseMobReptilian abstract: true description: A miserable pile of scales. components: + - type: Hunger + - type: Thirst - type: Icon sprite: Mobs/Species/Reptilian/parts.rsi state: full diff --git a/Resources/Prototypes/Entities/Mobs/Species/skeleton.yml b/Resources/Prototypes/Entities/Mobs/Species/skeleton.yml index 256444a92a..02c5c0f3b4 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/skeleton.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/skeleton.yml @@ -1,67 +1,17 @@ - type: entity save: false name: Urist McSkelly - id: MobSkeletonPersonBase + parent: BaseMobOrganic + id: BaseMobSkeletonPerson + abstract: true description: A miserable pile of bones. - noSpawn: true components: - - type: Tag - tags: - - CanPilot - - FootstepSound - - DoorBumpOpener - - type: Reactive - groups: - Flammable: [ Touch ] - Extinguish: [ Touch ] - Acidic: [Touch, Ingestion] - reactions: - - reagents: [Water, SpaceCleaner] - methods: [Touch] - effects: - - !type:WashCreamPieReaction - - type: Flashable - - type: Polymorphable - - type: Hands - - type: MovementSpeedModifier - - type: MovedByPressure - type: Markings - - type: Barotrauma - damage: - types: - Blunt: 0.1 #per second, scales with pressure and other constants. - - type: DamageOnHighSpeedImpact - damage: - types: - Blunt: 5 - soundHit: - path: /Audio/Effects/hit_kick.ogg - # Organs - - type: HealthExaminable - examinableTypes: - - Blunt - - Slash - - Piercing - - Heat - - Shock - - type: StatusEffects - allowed: - - Stun - - KnockedDown - - SlowedDown - - Stutter - - Electrocution - # Other - - type: Inventory - - type: Clickable - - type: InteractionOutline - type: Icon sprite: Mobs/Species/Skeleton/parts.rsi state: full + # Other - type: Sprite - netsync: false - noRot: true - drawdepth: Mobs layers: - map: [ "enum.HumanoidVisualLayers.Chest" ] color: "#ffffff" @@ -135,38 +85,6 @@ - map: [ "head" ] - map: [ "pocket1" ] - map: [ "pocket2" ] - - type: Physics - bodyType: KinematicController - - type: Fixtures - fixtures: # TODO: This needs a second fixture just for mob collisions. - - shape: - !type:PhysShapeCircle - radius: 0.35 - mass: 70 - restitution: 0.0 - mask: - - MobMask - layer: - - MobLayer - - type: AtmosExposed - - type: Flammable - fireSpread: true - canResistFire: true - damage: - types: - Heat: 1 #per second, scales with number of fire 'stacks' - - type: Temperature - heatDamageThreshold: 360 - coldDamageThreshold: 260 - currentTemperature: 310.15 - specificHeat: 42 - coldDamage: - types: - Cold : 1 #per second, scales with temperature & other constants - heatDamage: - types: - Heat : 1 #per second, scales with temperature & other constants - - type: HumanoidAppearance - type: Body template: HumanoidTemplate preset: SkeletonPreset @@ -174,15 +92,6 @@ - type: Damageable damageContainer: Biological damageModifierSet: Skeleton - - type: ThermalRegulator - metabolismHeat: 800 - radiatedHeat: 100 - implicitHeatRegulation: 500 - sweatHeatRegulation: 2000 - shiveringHeatRegulation: 2000 - normalBodyTemperature: 310.15 - thermalRegulationTemperatureThreshold: 25 - - type: Internals - type: MobState thresholds: 0: Alive @@ -198,71 +107,12 @@ speedModifierThresholds: 60: 0.9 80: 0.7 - - type: HeatResistance - - type: Appearance - visuals: - - type: RotationVisualizer - - type: BuckleVisualizer - - type: CreamPiedVisualizer - state: creampie_human - - type: DamageVisualizer - thresholds: [20, 40, 100] - targetLayers: - - "enum.HumanoidVisualLayers.Chest" - - "enum.HumanoidVisualLayers.Head" - - "enum.HumanoidVisualLayers.LArm" - - "enum.HumanoidVisualLayers.LLeg" - - "enum.HumanoidVisualLayers.RArm" - - "enum.HumanoidVisualLayers.RLeg" - damageOverlayGroups: - Brute: - sprite: Mobs/Effects/brute_damage.rsi - color: "#8a8a8a" - Burn: - sprite: Mobs/Effects/burn_damage.rsi - - type: FireVisuals - sprite: Mobs/Effects/onfire.rsi - normalState: Generic_mob_burning - alternateState: Standing - fireStackAlternateState: 3 - - type: CombatMode - canDisarm: true - - type: Climbing - - type: Cuffable - - type: CharacterInfo - - type: AnimationPlayer - - type: Buckle - - type: MeleeWeapon - hitSound: - collection: Punch - range: 0.8 - arcwidth: 30 - arc: fist - damage: - types: - Blunt: 5 - - type: Pullable - - type: DoAfter - - type: CreamPied - - type: Stripping - - type: Strippable - - type: UserInterface - interfaces: - - key: enum.StrippingUiKey.Key - type: StrippableBoundUserInterface - - type: Puller - type: Speech - - type: Vocal - - type: Emoting - - type: Grammar - attributes: - proper: true - - type: StandingState - type: entity save: false name: Urist McSkelly - parent: MobHumanDummy + parent: BaseMobOrganicDummy id: MobSkeletonPersonDummy noSpawn: true description: A dummy skeleton meant to be used in character setup. diff --git a/Resources/Prototypes/Entities/Mobs/Species/slime.yml b/Resources/Prototypes/Entities/Mobs/Species/slime.yml index 6dc814b5d5..b9c7455710 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/slime.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/slime.yml @@ -1,10 +1,12 @@ - type: entity name: Urist McSlime - parent: MobHumanBase - id: MobSlimePersonBase - description: A miserable pile of slime. + parent: BaseMobOrganic + id: BaseMobSlimePerson abstract: true + description: A miserable pile of slime. components: + - type: Hunger + - type: Thirst - type: Icon sprite: Mobs/Species/Slime/parts.rsi state: full diff --git a/Resources/Prototypes/Entities/Mobs/Species/vox.yml b/Resources/Prototypes/Entities/Mobs/Species/vox.yml index d08bd29cd8..1b5ed2d94c 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/vox.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/vox.yml @@ -1,15 +1,14 @@ - type: entity - parent: MobHumanBase - id: MobVoxBase - noSpawn: true + parent: BaseMobOrganic + id: BaseMobVox + abstract: true components: + - type: Hunger + - type: Thirst - type: Icon sprite: Mobs/Species/Vox/parts.rsi state: vox_m - type: Sprite - netsync: false - noRot: true - drawdepth: Mobs layers: - map: [ "enum.HumanoidVisualLayers.Chest" ] sprite: Mobs/Species/Vox/parts.rsi