Cleanup species prototypes a bit (#9513)

* Cleanup species prototypes a bit

Skeletons were very stale because they didn't inherit from mobhuman but now they should have similar components as every other species.

I also added a generic abstract base species to make custom species easier (where they may not want to have humans COUGH VILOUS).

* a

* drugs

* gonflicts

* no more conflicts I beg
This commit is contained in:
metalgearsloth
2022-07-27 20:54:23 +10:00
committed by GitHub
parent 258ec0cac1
commit 2f883cad6b
16 changed files with 489 additions and 621 deletions

View File

@@ -12,7 +12,7 @@ namespace Content.IntegrationTests.Tests.Interaction
[TestOf(typeof(SharedInteractionSystem))] [TestOf(typeof(SharedInteractionSystem))]
public sealed class InRangeUnobstructed public sealed class InRangeUnobstructed
{ {
private const string HumanId = "MobHumanBase"; private const string HumanId = "MobHuman";
private const float InteractionRange = SharedInteractionSystem.InteractionRange; private const float InteractionRange = SharedInteractionSystem.InteractionRange;

View File

@@ -1,7 +1,7 @@
- type: entity - type: entity
save: false save: false
name: Pathfinding Dummy name: Pathfinding Dummy
parent: MobHumanBase parent: BaseMobHuman
id: MobHumanPathDummy id: MobHumanPathDummy
description: A miserable pile of secrets. description: A miserable pile of secrets.
suffix: AI suffix: AI

View File

@@ -1,6 +1,6 @@
- type: entity - type: entity
name: Civilian name: Civilian
parent: MobHumanBase parent: BaseMobHuman
id: MobCivilian id: MobCivilian
description: A miserable pile of secrets. description: A miserable pile of secrets.
components: components:
@@ -20,7 +20,7 @@
- type: entity - type: entity
name: Spirate name: Spirate
parent: MobHumanBase parent: BaseMobHuman
id: MobSpirate id: MobSpirate
description: Yarr! description: Yarr!
components: components:
@@ -49,7 +49,7 @@
description: A highly trained CentCom agent, capable of dealing with various threats. description: A highly trained CentCom agent, capable of dealing with various threats.
- type: entity - type: entity
parent: MobHumanBase parent: BaseMobHuman
suffix: Dead suffix: Dead
save: true save: true
id: SalvageHumanCorpse id: SalvageHumanCorpse

View File

@@ -1,7 +1,7 @@
- type: entity - type: entity
save: false save: false
name: Urist McHands The Dwarf name: Urist McHands The Dwarf
parent: MobDwarfBase parent: BaseMobDwarf
id: MobDwarf id: MobDwarf
description: A miserable pile of secrets. description: A miserable pile of secrets.
components: components:

View File

@@ -1,7 +1,7 @@
- type: entity - type: entity
save: false save: false
name: Urist McHands name: Urist McHands
parent: MobHumanBase parent: BaseMobHuman
id: MobHuman id: MobHuman
description: A miserable pile of secrets. description: A miserable pile of secrets.
components: components:

View File

@@ -1,7 +1,7 @@
- type: entity - type: entity
save: false save: false
name: Urisst' Mzhand name: Urisst' Mzhand
parent: MobReptilianBase parent: BaseMobReptilian
id: MobReptilian id: MobReptilian
description: A miserable pile of scales. description: A miserable pile of scales.
components: components:

View File

@@ -1,6 +1,6 @@
- type: entity - type: entity
save: false save: false
parent: MobSkeletonPersonBase parent: BaseMobSkeletonPerson
id: MobSkeletonPerson id: MobSkeletonPerson
components: components:
- type: InteractionPopup - type: InteractionPopup

View File

@@ -1,6 +1,6 @@
- type: entity - type: entity
save: false save: false
parent: MobSlimePersonBase parent: BaseMobSlimePerson
id: MobSlimePerson id: MobSlimePerson
components: components:
- type: CombatMode - type: CombatMode

View File

@@ -1,7 +1,7 @@
- type: entity - type: entity
save: false save: false
name: Vox name: Vox
parent: MobVoxBase parent: BaseMobVox
id: MobVox id: MobVox
components: components:
- type: CombatMode - type: CombatMode

View File

@@ -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

View File

@@ -1,11 +1,13 @@
- type: entity - type: entity
save: false save: false
name: Urist McHands The Dwarf name: Urist McHands The Dwarf
parent: MobHumanBase parent: BaseMobOrganic
id: MobDwarfBase id: BaseMobDwarf
abstract: true abstract: true
description: A miserable pile of secrets. description: A miserable pile of secrets.
components: components:
- type: Hunger
- type: Thirst
- type: Icon - type: Icon
sprite: Mobs/Species/Slime/parts.rsi sprite: Mobs/Species/Slime/parts.rsi
state: full state: full

View File

@@ -1,454 +1,16 @@
# Anything human specific (e.g. UI, input) goes under MobHuman # Anything human specific (e.g. UI, input) goes under MobHuman
- type: entity - type: entity
save: false
name: Urist McHands name: Urist McHands
id: MobHumanBase parent: BaseMobOrganic
id: BaseMobHuman
abstract: true
description: A miserable pile of secrets. description: A miserable pile of secrets.
noSpawn: true
components: 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: Hunger
- type: Thirst - 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 - type: entity
save: false
name: Urist McHands name: Urist McHands
id: MobHumanDummy id: MobHumanDummy
parent: BaseMobOrganicDummy
noSpawn: true 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

View File

@@ -1,11 +1,13 @@
- type: entity - type: entity
save: false save: false
name: Urisst' Mzhand name: Urisst' Mzhand
parent: MobHumanBase parent: BaseMobOrganic
id: MobReptilianBase id: BaseMobReptilian
abstract: true abstract: true
description: A miserable pile of scales. description: A miserable pile of scales.
components: components:
- type: Hunger
- type: Thirst
- type: Icon - type: Icon
sprite: Mobs/Species/Reptilian/parts.rsi sprite: Mobs/Species/Reptilian/parts.rsi
state: full state: full

View File

@@ -1,67 +1,17 @@
- type: entity - type: entity
save: false save: false
name: Urist McSkelly name: Urist McSkelly
id: MobSkeletonPersonBase parent: BaseMobOrganic
id: BaseMobSkeletonPerson
abstract: true
description: A miserable pile of bones. description: A miserable pile of bones.
noSpawn: true
components: 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: 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 - type: Icon
sprite: Mobs/Species/Skeleton/parts.rsi sprite: Mobs/Species/Skeleton/parts.rsi
state: full state: full
# Other
- type: Sprite - type: Sprite
netsync: false
noRot: true
drawdepth: Mobs
layers: layers:
- map: [ "enum.HumanoidVisualLayers.Chest" ] - map: [ "enum.HumanoidVisualLayers.Chest" ]
color: "#ffffff" color: "#ffffff"
@@ -135,38 +85,6 @@
- map: [ "head" ] - map: [ "head" ]
- map: [ "pocket1" ] - map: [ "pocket1" ]
- map: [ "pocket2" ] - 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 - type: Body
template: HumanoidTemplate template: HumanoidTemplate
preset: SkeletonPreset preset: SkeletonPreset
@@ -174,15 +92,6 @@
- type: Damageable - type: Damageable
damageContainer: Biological damageContainer: Biological
damageModifierSet: Skeleton damageModifierSet: Skeleton
- type: ThermalRegulator
metabolismHeat: 800
radiatedHeat: 100
implicitHeatRegulation: 500
sweatHeatRegulation: 2000
shiveringHeatRegulation: 2000
normalBodyTemperature: 310.15
thermalRegulationTemperatureThreshold: 25
- type: Internals
- type: MobState - type: MobState
thresholds: thresholds:
0: Alive 0: Alive
@@ -198,71 +107,12 @@
speedModifierThresholds: speedModifierThresholds:
60: 0.9 60: 0.9
80: 0.7 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: Speech
- type: Vocal
- type: Emoting
- type: Grammar
attributes:
proper: true
- type: StandingState
- type: entity - type: entity
save: false save: false
name: Urist McSkelly name: Urist McSkelly
parent: MobHumanDummy parent: BaseMobOrganicDummy
id: MobSkeletonPersonDummy id: MobSkeletonPersonDummy
noSpawn: true noSpawn: true
description: A dummy skeleton meant to be used in character setup. description: A dummy skeleton meant to be used in character setup.

View File

@@ -1,10 +1,12 @@
- type: entity - type: entity
name: Urist McSlime name: Urist McSlime
parent: MobHumanBase parent: BaseMobOrganic
id: MobSlimePersonBase id: BaseMobSlimePerson
description: A miserable pile of slime.
abstract: true abstract: true
description: A miserable pile of slime.
components: components:
- type: Hunger
- type: Thirst
- type: Icon - type: Icon
sprite: Mobs/Species/Slime/parts.rsi sprite: Mobs/Species/Slime/parts.rsi
state: full state: full

View File

@@ -1,15 +1,14 @@
- type: entity - type: entity
parent: MobHumanBase parent: BaseMobOrganic
id: MobVoxBase id: BaseMobVox
noSpawn: true abstract: true
components: components:
- type: Hunger
- type: Thirst
- type: Icon - type: Icon
sprite: Mobs/Species/Vox/parts.rsi sprite: Mobs/Species/Vox/parts.rsi
state: vox_m state: vox_m
- type: Sprite - type: Sprite
netsync: false
noRot: true
drawdepth: Mobs
layers: layers:
- map: [ "enum.HumanoidVisualLayers.Chest" ] - map: [ "enum.HumanoidVisualLayers.Chest" ]
sprite: Mobs/Species/Vox/parts.rsi sprite: Mobs/Species/Vox/parts.rsi