bodypart refactor (#2718)

* automatically pick body part appearance from species

* automatically pick body part appearance from species when attaching

* make setting organs and children on parts yml work

* giant body part refactor

* refactor deltav species body parts

* ???

* ???

---------

Co-authored-by: deltanedas <@deltanedas:kde.org>
This commit is contained in:
deltanedas 2025-01-18 12:06:08 +00:00 committed by GitHub
parent e66d9e91b6
commit 71932a3f1c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
26 changed files with 591 additions and 1410 deletions

View File

@ -88,6 +88,10 @@ public partial class SharedBodySystem
return null; return null;
Containers.EnsureContainer<ContainerSlot>(parentEnt, GetOrganContainerId(slotId)); Containers.EnsureContainer<ContainerSlot>(parentEnt, GetOrganContainerId(slotId));
// Shitmed Change: Don't throw when a slot already exists
if (parentEnt.Comp.Organs.TryGetValue(slotId, out var existing))
return existing;
var slot = new OrganSlot(slotId); var slot = new OrganSlot(slotId);
parentEnt.Comp.Organs.Add(slotId, slot); parentEnt.Comp.Organs.Add(slotId, slot);
return slot; return slot;

View File

@ -59,6 +59,11 @@ public partial class SharedBodySystem
{ {
Containers.EnsureContainer<ContainerSlot>(ent, GetPartSlotContainerId(connection)); Containers.EnsureContainer<ContainerSlot>(ent, GetPartSlotContainerId(connection));
} }
foreach (var organ in ent.Comp.Organs.Keys)
{
Containers.EnsureContainer<ContainerSlot>(ent, GetOrganContainerId(organ));
}
} }
private void OnBodyPartRemove(Entity<BodyPartComponent> ent, ref ComponentRemove args) private void OnBodyPartRemove(Entity<BodyPartComponent> ent, ref ComponentRemove args)
@ -465,6 +470,10 @@ public partial class SharedBodySystem
return null; return null;
Containers.EnsureContainer<ContainerSlot>(partUid, GetPartSlotContainerId(slotId)); Containers.EnsureContainer<ContainerSlot>(partUid, GetPartSlotContainerId(slotId));
// Shitmed Change: Don't throw if the slot already exists
if (part.Children.TryGetValue(slotId, out var existing))
return existing;
var partSlot = new BodyPartSlot(slotId, partType); var partSlot = new BodyPartSlot(slotId, partType);
part.Children.Add(slotId, partSlot); part.Children.Add(slotId, partSlot);
Dirty(partUid, part); Dirty(partUid, part);

View File

@ -1,8 +1,8 @@
using Content.Shared.Humanoid; using Content.Shared.Humanoid;
using Content.Shared.Humanoid.Prototypes; using Content.Shared.Humanoid.Prototypes;
using Content.Shared.Humanoid.Markings; using Content.Shared.Humanoid.Markings;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
using Robust.Shared.GameStates; using Robust.Shared.GameStates;
using Robust.Shared.Prototypes;
namespace Content.Shared._Shitmed.Body.Part; namespace Content.Shared._Shitmed.Body.Part;
@ -23,10 +23,9 @@ public sealed partial class BodyPartAppearanceComponent : Component
/// <summary> /// <summary>
/// ID of this custom base layer. Must be a <see cref="HumanoidSpeciesSpriteLayer"/>. /// ID of this custom base layer. Must be a <see cref="HumanoidSpeciesSpriteLayer"/>.
/// I don't actually know if these serializer props are necessary. I just lifted this from MS14 lol.
/// </summary> /// </summary>
[DataField(customTypeSerializer: typeof(PrototypeIdSerializer<HumanoidSpeciesSpriteLayer>)), AutoNetworkedField] [DataField, AutoNetworkedField]
public string? ID { get; set; } public ProtoId<HumanoidSpeciesSpriteLayer>? ID { get; set; }
/// <summary> /// <summary>
/// Color of this custom base layer. Null implies skin colour if the corresponding <see cref="HumanoidSpeciesSpriteLayer"/> is set to match skin. /// Color of this custom base layer. Null implies skin colour if the corresponding <see cref="HumanoidSpeciesSpriteLayer"/> is set to match skin.

View File

@ -1,99 +1,76 @@
# Shitmed Change: This file was mostly reorganized by shitmed to use composition
# Just copypasta of some human basic body parts for interaction, # Just copypasta of some human basic body parts for interaction,
# only differences for now is that limbs work in pairs, # only differences for now is that limbs work in pairs,
# they are unextractable and can't be spawned (no surgery on Animals!?).
- type: entity - type: entity
id: PartAnimal
parent: BaseItem
name: "animal body part"
abstract: true abstract: true
parent: BasePart
id: PartAnimalBase
components: components:
# yes these sprites dont make sense i dont care its better than them being invisible # yes these sprites dont make sense i dont care its better than them being invisible
- type: Sprite - type: Sprite
sprite: Mobs/Species/Reptilian/parts.rsi sprite: Mobs/Species/Reptilian/parts.rsi
- type: Damageable - type: Icon
damageContainer: OrganicPart # Shitmed sprite: Mobs/Species/Reptilian/parts.rsi
- type: BodyPart
- type: ContainerContainer
containers:
bodypart: !type:Container
ents: []
- type: StaticPrice - type: StaticPrice
price: 50 price: 50
- type: Tag
tags:
- Trash
- type: Gibbable
- type: Extractable
juiceSolution:
reagents:
- ReagentId: Fat
Quantity: 3
- ReagentId: Blood
Quantity: 10
- type: entity - type: entity
parent: PartAnimalBase
id: HandsAnimal id: HandsAnimal
name: animal hands name: animal hands
parent: PartAnimal
categories: [ HideSpawnMenu ]
components: components:
- type: Sprite - type: Sprite
layers: layers:
- state: l_hand - state: l_hand
- state: r_hand - state: r_hand
- type: Icon
state: l_hand # cba to make a state for it
- type: BodyPart - type: BodyPart
partType: Hand partType: Hand
#symmetry: Left #symmetry: Left
slotId: hands # Shitmed slotId: hands # Shitmed
- type: entity - type: entity
parent: PartAnimalBase
id: LegsAnimal id: LegsAnimal
name: animal legs name: animal legs
parent: PartAnimal
categories: [ HideSpawnMenu ]
components: components:
- type: Sprite - type: Sprite
layers: layers:
- state: l_leg - state: l_leg
- state: r_leg - state: r_leg
- type: Icon
state: l_leg # cba to make a state for it
- type: BodyPart - type: BodyPart
partType: Leg partType: Leg
slotId: legs # Shitmed slotId: legs # Shitmed
- type: MovementBodyPart - type: MovementBodyPart
- type: entity - type: entity
parent: PartAnimalBase
id: FeetAnimal id: FeetAnimal
name: animal feet name: animal feet
parent: PartAnimal
categories: [ HideSpawnMenu ]
components: components:
- type: Sprite - type: Sprite
layers: layers:
- state: r_foot - state: r_foot
- state: l_foot - state: l_foot
- type: Icon
state: l_foot # cba to make a state for it
- type: BodyPart - type: BodyPart
partType: Foot partType: Foot
slotId: feet # Shitmed slotId: feet # Shitmed
- type: entity - type: entity
parent: [ PartAnimalBase, BaseTorso ]
id: TorsoAnimal id: TorsoAnimal
name: animal torso name: animal torso
parent: PartAnimal
categories: [ HideSpawnMenu ]
components: components:
- type: Sprite
layers:
- state: torso_m
- type: BodyPart - type: BodyPart
partType: Torso # standard organs are good for most animals
- type: Damageable children: # most animals have no hands (primate is unused) so just legs by default
damageContainer: Biological legs:
- type: Extractable id: legs
juiceSolution: type: Leg
reagents:
- ReagentId: Fat
Quantity: 10
- ReagentId: Blood
Quantity: 20

View File

@ -6,6 +6,8 @@
name: "arachnid body part" name: "arachnid body part"
abstract: true abstract: true
components: components:
- type: BodyPart # Shitmed Change
species: Arachnid
- type: Extractable - type: Extractable
juiceSolution: juiceSolution:
reagents: reagents:

View File

@ -1,12 +1,24 @@
# Shitmed Change: this entire file is reorganized for shitmed:
# Instead of random species parts inheriting BaseItem and copy pasting stuff,
# EVERYTHING inherits either BasePart or BasePartInorganic.
# Then individual part LS just inherits from PartSBase and BaseL where S and L are the species and limb.
# All limbs have the usual state, PartSBase just needs to set the rsi for sprite and icon
- type: entity - type: entity
id: BasePart
parent: BaseItem
name: "body part"
abstract: true abstract: true
parent: BaseItem
id: BasePartInorganic
name: "body part"
components: components:
- type: Icon
sprite: Mobs/Species/Human/parts.rsi
- type: Damageable - type: Damageable
damageContainer: OrganicPart # Shitmed Change damageContainer: Inorganic # Shitmed Change
- type: BodyPart - type: BodyPart
- type: SurgeryTool # Shitmed Change
startSound:
path: /Audio/_Shitmed/Medical/Surgery/organ1.ogg
endSound:
path: /Audio/_Shitmed/Medical/Surgery/organ2.ogg
- type: Gibbable - type: Gibbable
- type: ContainerContainer - type: ContainerContainer
containers: containers:
@ -16,99 +28,72 @@
price: 100 price: 100
- type: Tag - type: Tag
tags: tags:
- Trash - Trash
# Shitmed Change Start
- type: SurgeryTool
startSound:
path: /Audio/_Shitmed/Medical/Surgery/organ1.ogg
endSound:
path: /Audio/_Shitmed/Medical/Surgery/organ2.ogg
- type: Destructible
thresholds:
- trigger:
!type:DamageTypeTrigger
damageType: Blunt
damage: 110
behaviors:
- !type:GibPartBehavior { }
- trigger:
!type:DamageTypeTrigger
damageType: Slash
damage: 100 # DeltaV
behaviors:
- !type:GibPartBehavior { }
- trigger:
!type:DamageTypeTrigger
damageType: Heat
damage: 2000 # DeltaV
behaviors:
- !type:SpawnEntitiesBehavior
spawnInContainer: true
spawn:
Ash:
min: 1
max: 1
- !type:BurnBodyBehavior { }
- !type:PlaySoundBehavior
sound:
collection: MeatLaserImpact
# Shitmed Change End
- type: entity - type: entity
id: BaseTorso
name: "torso"
parent: BasePart
abstract: true abstract: true
id: BaseTorsoInorganic
name: "torso"
components: components:
- type: Sprite
state: "torso_m"
- type: Icon
state: "torso_m"
- type: BodyPart - type: BodyPart
partType: Torso partType: Torso
# Shitmed Change Start # Shitmed Change Start
toolName: "a torso" toolName: "a torso"
containerName: "torso_slot" containerName: "torso_slot"
children:
right arm:
id: right arm
type: Arm
left arm:
id: left arm
type: Arm
right leg:
id: right leg
type: Leg
left leg:
id: left leg
type: Leg
head:
id: head
type: Head
organs:
heart:
id: heart
lungs:
id: lungs
stomach:
id: stomach
liver:
id: liver
kidneys:
id: kidneys
- type: ContainerContainer - type: ContainerContainer
containers: containers:
torso_slot: !type:ContainerSlot {} torso_slot: !type:ContainerSlot {}
- type: Destructible
thresholds:
- trigger:
!type:DamageTypeTrigger
damageType: Blunt
damage: 400
behaviors:
- !type:GibPartBehavior { }
- trigger:
!type:DamageTypeTrigger
damageType: Slash
damage: 400
behaviors:
- !type:GibPartBehavior { }
- trigger:
!type:DamageTypeTrigger
damageType: Heat
damage: 4000 # DeltaV
behaviors:
- !type:SpawnEntitiesBehavior
spawnInContainer: true
spawn:
Ash:
min: 1
max: 1
- !type:BurnBodyBehavior { }
- !type:PlaySoundBehavior
sound:
collection: MeatLaserImpact
# Shitmed Change End # Shitmed Change End
- type: entity - type: entity
abstract: true
id: BaseHead id: BaseHead
name: "head" name: "head"
parent: BasePart
abstract: true
components: components:
- type: Sprite
state: "head_m"
- type: Icon
state: "head_m"
- type: BodyPart - type: BodyPart
partType: Head partType: Head
toolName: "a head" # Shitmed Change toolName: "a head" # Shitmed Change
vital: true vital: true
organs: # Shitmed Change
brain:
id: brain
eyes:
id: eyes
- type: Input - type: Input
context: "ghost" context: "ghost"
- type: Tag - type: Tag
@ -116,89 +101,130 @@
- Head - Head
- type: entity - type: entity
abstract: true
id: BaseLeftArm id: BaseLeftArm
name: "left arm" name: "left arm"
parent: BasePart
abstract: true
components: components:
- type: Sprite
state: "l_arm"
- type: Icon
state: "l_arm"
- type: BodyPart - type: BodyPart
partType: Arm partType: Arm
symmetry: Left symmetry: Left
toolName: "a left arm" # Shitmed Change toolName: "a left arm" # Shitmed Change
children: # Shitmed Change
left hand:
id: left hand
type: Hand
- type: entity - type: entity
abstract: true
id: BaseRightArm id: BaseRightArm
name: "right arm" name: "right arm"
parent: BasePart
abstract: true
components: components:
- type: Sprite
state: "r_arm"
- type: Icon
state: "r_arm"
- type: BodyPart - type: BodyPart
partType: Arm partType: Arm
symmetry: Right symmetry: Right
toolName: "a right arm" # Shitmed Change toolName: "a right arm" # Shitmed Change
children: # Shitmed Change
right hand:
id: right hand
type: Hand
- type: entity - type: entity
abstract: true
id: BaseLeftHand id: BaseLeftHand
name: "left hand" name: "left hand"
parent: BasePart
abstract: true
components: components:
- type: Sprite
state: "l_hand"
- type: Icon
state: "l_hand"
- type: BodyPart - type: BodyPart
partType: Hand partType: Hand
symmetry: Left symmetry: Left
toolName: "a left hand" # Shitmed Change toolName: "a left hand" # Shitmed Change
- type: entity - type: entity
abstract: true
id: BaseRightHand id: BaseRightHand
name: "right hand" name: "right hand"
parent: BasePart
abstract: true
components: components:
- type: Sprite
state: "r_hand"
- type: Icon
state: "r_hand"
- type: BodyPart - type: BodyPart
partType: Hand partType: Hand
symmetry: Right symmetry: Right
toolName: "a right hand" # Shitmed Change toolName: "a right hand" # Shitmed Change
- type: entity - type: entity
abstract: true
id: BaseLeftLeg id: BaseLeftLeg
name: "left leg" name: "left leg"
parent: BasePart
abstract: true
components: components:
- type: Sprite
state: "l_leg"
- type: Icon
state: "l_leg"
- type: BodyPart - type: BodyPart
partType: Leg partType: Leg
symmetry: Left symmetry: Left
toolName: "a left leg" # Shitmed Change toolName: "a left leg" # Shitmed Change
children: # Shitmed Change
left foot:
id: left foot
type: Foot
- type: MovementBodyPart - type: MovementBodyPart
- type: entity - type: entity
abstract: true
id: BaseRightLeg id: BaseRightLeg
name: "right leg" name: "right leg"
parent: BasePart
abstract: true
components: components:
- type: Sprite
state: "r_leg"
- type: Icon
state: "r_leg"
- type: BodyPart - type: BodyPart
partType: Leg partType: Leg
symmetry: Right symmetry: Right
toolName: "a right leg" # Shitmed Change toolName: "a right leg" # Shitmed Change
children: # Shitmed Change
right foot:
id: right foot
type: Foot
- type: MovementBodyPart - type: MovementBodyPart
- type: entity - type: entity
abstract: true
id: BaseLeftFoot id: BaseLeftFoot
name: "left foot" name: "left foot"
parent: BasePart
abstract: true
components: components:
- type: Sprite
state: "l_foot"
- type: Icon
state: "l_foot"
- type: BodyPart - type: BodyPart
partType: Foot partType: Foot
symmetry: Left symmetry: Left
toolName: "a left foot" # Shitmed Change toolName: "a left foot" # Shitmed Change
- type: entity - type: entity
abstract: true
id: BaseRightFoot id: BaseRightFoot
name: "right foot" name: "right foot"
parent: BasePart
abstract: true
components: components:
- type: Sprite
state: "r_foot"
- type: Icon
state: "r_foot"
- type: BodyPart - type: BodyPart
partType: Foot partType: Foot
symmetry: Right symmetry: Right

View File

@ -6,6 +6,10 @@
components: components:
- type: Sprite - type: Sprite
sprite: Mobs/Species/Diona/parts.rsi sprite: Mobs/Species/Diona/parts.rsi
- type: Icon # Shitmed Change
sprite: Mobs/Species/Diona/parts.rsi
- type: BodyPart # Shitmed Change
species: Diona
- type: entity - type: entity
id: TorsoDiona id: TorsoDiona

View File

@ -4,6 +4,10 @@
name: "gingerbread body part" name: "gingerbread body part"
abstract: true abstract: true
components: components:
- type: Icon # Shitmed Change
sprite: Mobs/Species/Gingerbread/parts.rsi
- type: BodyPart # Shitmed Change
species: Gingerbread
- type: Extractable - type: Extractable
juiceSolution: juiceSolution:
reagents: reagents:

View File

@ -6,6 +6,10 @@
name: "human body part" name: "human body part"
abstract: true abstract: true
components: components:
- type: Icon # Shitmed Change
sprite: Mobs/Species/Human/parts.rsi
- type: BodyPart # Shitmed Change
species: Human
- type: Extractable - type: Extractable
juiceSolution: juiceSolution:
reagents: reagents:

View File

@ -6,6 +6,10 @@
name: "moth body part" name: "moth body part"
abstract: true abstract: true
components: components:
- type: Icon # Shitmed Change
sprite: Mobs/Species/Moth/parts.rsi
- type: BodyPart # Shitmed Change
species: Moth
- type: Extractable - type: Extractable
juiceSolution: juiceSolution:
reagents: reagents:

View File

@ -3,7 +3,7 @@
- type: entity - type: entity
id: TorsoRat id: TorsoRat
name: "animal torso" name: "animal torso"
parent: PartAnimal parent: TorsoAnimal # Shitmed Change
categories: [ HideSpawnMenu ] categories: [ HideSpawnMenu ]
components: components:
- type: BodyPart - type: BodyPart
@ -18,3 +18,6 @@
- type: Sprite - type: Sprite
sprite: Mobs/Animals/mouse.rsi sprite: Mobs/Animals/mouse.rsi
state: splat-0 state: splat-0
- type: Icon # Shitmed Change
sprite: Mobs/Animals/mouse.rsi
state: splat-0

View File

@ -6,6 +6,10 @@
name: "reptilian body part" name: "reptilian body part"
abstract: true abstract: true
components: components:
- type: Icon # Shitmed Change
sprite: Mobs/Species/Reptilian/parts.rsi
- type: BodyPart # Shitmed Change
species: Reptilian
- type: Extractable - type: Extractable
juiceSolution: juiceSolution:
reagents: reagents:

View File

@ -1,24 +1,20 @@
# Shitmed Change: this file is mostly reorganized by shitmed to use composition
- type: entity - type: entity
id: PartSilicon
parent: BaseItem
abstract: true abstract: true
parent: BasePartInorganic
id: PartSiliconBase
components: components:
- type: Sprite - type: Sprite
sprite: Objects/Specific/Robotics/cyborg_parts.rsi sprite: Objects/Specific/Robotics/cyborg_parts.rsi
- type: Icon - type: Icon
sprite: Objects/Specific/Robotics/cyborg_parts.rsi sprite: Objects/Specific/Robotics/cyborg_parts.rsi
- type: Damageable
damageContainer: Inorganic
- type: BodyPart
- type: ContainerContainer
containers:
bodypart: !type:Container
ents: []
- type: StaticPrice - type: StaticPrice
price: 5 price: 5
- type: BodyPart # Shitmed Change
species: Cyborg
- type: Tag - type: Tag
tags: tags:
- Trash - Trash
- type: PhysicalComposition - type: PhysicalComposition
materialComposition: materialComposition:
Steel: 25 Steel: 25
@ -26,28 +22,12 @@
guides: guides:
- Cyborgs - Cyborgs
- Robotics - Robotics
# Shitmed Change Start
- type: SurgeryTool
startSound:
path: /Audio/_Shitmed/Medical/Surgery/organ1.ogg
endSound:
path: /Audio/_Shitmed/Medical/Surgery/organ2.ogg
- type: Gibbable
# Shitmed Change End
- type: entity - type: entity
parent: [ PartSiliconBase, BaseLeftArm ]
id: LeftArmBorg id: LeftArmBorg
parent: PartSilicon
name: cyborg left arm name: cyborg left arm
components: components:
- type: BodyPart
partType: Arm # Shitmed Change
symmetry: Left
toolName: "a left arm" # Shitmed Change
children: # Shitmed Change
left hand:
id: "left hand"
type: Hand
- type: Sprite - type: Sprite
state: borg_l_arm state: borg_l_arm
- type: Icon - type: Icon
@ -59,18 +39,10 @@
- BorgLArm - BorgLArm
- type: entity - type: entity
parent: [ PartSiliconBase, BaseRightArm ]
id: RightArmBorg id: RightArmBorg
parent: PartSilicon
name: cyborg right arm name: cyborg right arm
components: components:
- type: BodyPart
partType: Arm # Shitmed Change
symmetry: Right
toolName: "a right arm" # Shitmed Change
children: # Shitmed Change
right hand:
id: "right hand"
type: Hand
- type: Sprite - type: Sprite
state: borg_r_arm state: borg_r_arm
- type: Icon - type: Icon
@ -82,19 +54,10 @@
- BorgRArm - BorgRArm
- type: entity - type: entity
parent: [ PartSiliconBase, BaseLeftLeg ]
id: LeftLegBorg id: LeftLegBorg
parent: PartSilicon
name: cyborg left leg name: cyborg left leg
components: components:
- type: BodyPart
partType: Leg
symmetry: Left
toolName: "a left leg" # Shitmed Change
children: # Shitmed Change
left foot:
id: "left foot"
type: Foot
- type: MovementBodyPart
- type: Sprite - type: Sprite
state: borg_l_leg state: borg_l_leg
- type: Icon - type: Icon
@ -106,19 +69,10 @@
- BorgLLeg - BorgLLeg
- type: entity - type: entity
parent: [ PartSiliconBase, BaseRightLeg ]
id: RightLegBorg id: RightLegBorg
parent: PartSilicon
name: cyborg right leg name: cyborg right leg
components: components:
- type: BodyPart
partType: Leg
symmetry: Right
toolName: "a right leg" # Shitmed Change
children: # Shitmed Change
right foot:
id: "right foot"
type: Foot
- type: MovementBodyPart
- type: Sprite - type: Sprite
state: borg_r_leg state: borg_r_leg
- type: Icon - type: Icon
@ -130,13 +84,10 @@
- BorgRLeg - BorgRLeg
- type: entity - type: entity
parent: [ PartSiliconBase, BaseHead ]
id: LightHeadBorg id: LightHeadBorg
parent: PartSilicon
name: cyborg head name: cyborg head
components: components:
- type: BodyPart
partType: Head
toolName: "a head" # Shitmed Change
- type: Sprite - type: Sprite
state: borg_head state: borg_head
- type: Icon - type: Icon
@ -147,13 +98,10 @@
- BorgHead - BorgHead
- type: entity - type: entity
parent: [ PartSiliconBase, BaseTorsoInorganic ]
id: TorsoBorg id: TorsoBorg
parent: PartSilicon
name: cyborg torso name: cyborg torso
components: components:
- type: BodyPart
partType: Torso
toolName: "a torso" # Shitmed Change
- type: Sprite - type: Sprite
state: borg_chest state: borg_chest
- type: Icon - type: Icon

View File

@ -1,196 +1,106 @@
# TODO BODY: Part damage # this file is fully reorganized by shitmed
- type: entity - type: entity
id: PartSkeleton
parent: BaseItem
name: "skeleton body part"
abstract: true abstract: true
parent: BasePartInorganic
id: PartSkeletonBase
name: skeleton body part
components: components:
- type: Damageable - type: Sprite
damageContainer: OrganicPart # Shitmed Change sprite: Mobs/Species/Skeleton/parts.rsi
- type: Icon
sprite: Mobs/Species/Skeleton/parts.rsi
- type: Destructible # Shitmed Change: Let blunt weapons break bones
thresholds:
- trigger: !type:DamageTypeTrigger
damageType: Blunt
damage: 110
behaviors:
- !type:GibPartBehavior
- type: BodyPart - type: BodyPart
- type: ContainerContainer species: Skeleton # Shitmed Change
containers:
bodypart: !type:Container
ents: []
- type: StaticPrice - type: StaticPrice
price: 20 price: 20
- type: Gibbable
- type: Tag - type: Tag
tags: tags:
- Trash - Trash
- type: entity - type: entity
parent: [ PartSkeletonBase, BaseTorsoInorganic ]
id: TorsoSkeleton id: TorsoSkeleton
name: "skeleton torso" name: skeleton torso
parent: PartSkeleton
components:
- type: Sprite
sprite: Mobs/Species/Skeleton/parts.rsi
state: "torso_m"
- type: Icon
sprite: Mobs/Species/Skeleton/parts.rsi
state: "torso_m"
- type: BodyPart
partType: Torso
- type: entity - type: entity
parent: [ PartSkeletonBase, BaseHead ]
id: HeadSkeleton id: HeadSkeleton
name: "skull" name: skull
description: Alas poor Yorick... description: Alas poor Yorick...
parent: PartSkeleton
components: components:
- type: Sprite - type: Sprite
sprite: Mobs/Species/Skeleton/parts.rsi state: "skull_icon"
state: "skull_icon" scale: 0.5, 0.5 # DeltaV - Scale down sprite because it looks too big
scale: 0.5, 0.5 # DeltaV - Scale down sprite because it looks too big - type: Icon
- type: Icon state: "skull_icon"
sprite: Mobs/Species/Skeleton/parts.rsi - type: Input
state: "skull_icon" context: "human"
- type: BodyPart - type: Speech
partType: Head speechVerb: Skeleton
- type: Input - type: SkeletonAccent
context: "human" - type: Actions
- type: Speech - type: Vocal
speechVerb: Skeleton sounds:
- type: SkeletonAccent Male: Skeleton
- type: Actions Female: Skeleton
- type: Vocal Unsexed: Skeleton
sounds: - type: Emoting
Male: Skeleton - type: Grammar
Female: Skeleton attributes:
Unsexed: Skeleton proper: true
- type: Emoting - type: Examiner
- type: Grammar - type: DoAfter
attributes: - type: MobState
proper: true allowedStates:
- type: Examiner - Alive
- type: DoAfter - type: Tag
- type: MobState tags:
allowedStates: - MindTransferTarget
- Alive - Head
- type: Tag
tags:
- MindTransferTarget
- Head
- type: entity - type: entity
parent: [ PartSkeletonBase, BaseLeftArm ]
id: LeftArmSkeleton id: LeftArmSkeleton
name: "left skeleton arm" name: "left skeleton arm"
parent: PartSkeleton
components:
- type: Sprite
sprite: Mobs/Species/Skeleton/parts.rsi
state: "l_arm"
- type: Icon
sprite: Mobs/Species/Skeleton/parts.rsi
state: "l_arm"
- type: BodyPart
partType: Arm
symmetry: Left
- type: entity - type: entity
parent: [ PartSkeletonBase, BaseRightArm ]
id: RightArmSkeleton id: RightArmSkeleton
name: "right skeleton arm" name: "right skeleton arm"
parent: PartSkeleton
components:
- type: Sprite
sprite: Mobs/Species/Skeleton/parts.rsi
state: "r_arm"
- type: Icon
sprite: Mobs/Species/Skeleton/parts.rsi
state: "r_arm"
- type: BodyPart
partType: Arm
symmetry: Right
- type: entity - type: entity
parent: [ PartSkeletonBase, BaseLeftHand ]
id: LeftHandSkeleton id: LeftHandSkeleton
name: "left skeleton hand" name: "left skeleton hand"
parent: PartSkeleton
components:
- type: Sprite
sprite: Mobs/Species/Skeleton/parts.rsi
state: "l_hand"
- type: Icon
sprite: Mobs/Species/Skeleton/parts.rsi
state: "l_hand"
- type: BodyPart
partType: Hand
symmetry: Left
- type: entity - type: entity
parent: [ PartSkeletonBase, BaseRightHand ]
id: RightHandSkeleton id: RightHandSkeleton
name: "right skeleton hand" name: "right skeleton hand"
parent: PartSkeleton
components:
- type: Sprite
sprite: Mobs/Species/Skeleton/parts.rsi
state: "r_hand"
- type: Icon
sprite: Mobs/Species/Skeleton/parts.rsi
state: "r_hand"
- type: BodyPart
partType: Hand
symmetry: Right
- type: entity - type: entity
parent: [ PartSkeletonBase, BaseLeftLeg ]
id: LeftLegSkeleton id: LeftLegSkeleton
name: "left skeleton leg" name: "left skeleton leg"
parent: PartSkeleton
components:
- type: Sprite
sprite: Mobs/Species/Skeleton/parts.rsi
state: "l_leg"
- type: Icon
sprite: Mobs/Species/Skeleton/parts.rsi
state: "l_leg"
- type: BodyPart
partType: Leg
symmetry: Left
- type: MovementBodyPart
- type: entity - type: entity
parent: [ PartSkeletonBase, BaseRightLeg ]
id: RightLegSkeleton id: RightLegSkeleton
name: "right skeleton leg" name: "right skeleton leg"
parent: PartSkeleton
components:
- type: Sprite
sprite: Mobs/Species/Skeleton/parts.rsi
state: "r_leg"
- type: Icon
sprite: Mobs/Species/Skeleton/parts.rsi
state: "r_leg"
- type: BodyPart
partType: Leg
symmetry: Right
- type: MovementBodyPart
- type: entity - type: entity
parent: [ PartSkeletonBase, BaseLeftFoot ]
id: LeftFootSkeleton id: LeftFootSkeleton
name: "left skeleton foot" name: "left skeleton foot"
parent: PartSkeleton
components:
- type: Sprite
sprite: Mobs/Species/Skeleton/parts.rsi
state: "l_foot"
- type: Icon
sprite: Mobs/Species/Skeleton/parts.rsi
state: "l_foot"
- type: BodyPart
partType: Foot
symmetry: Left
- type: entity - type: entity
parent: [ PartSkeletonBase, BaseRightFoot ]
id: RightFootSkeleton id: RightFootSkeleton
name: "right skeleton foot" name: "right skeleton foot"
parent: PartSkeleton
components:
- type: Sprite
sprite: Mobs/Species/Skeleton/parts.rsi
state: "r_foot"
- type: Icon
sprite: Mobs/Species/Skeleton/parts.rsi
state: "r_foot"
- type: BodyPart
partType: Foot
symmetry: Right

View File

@ -1,96 +1,63 @@
# TODO BODY: Part damage # Shitmed Change: Removed components from each part, instead using composition for sprites
- type: entity - type: entity
id: PartSlime id: PartSlime
parent: [BaseItem, BasePart] parent: [BaseItem, BasePart]
name: "slime body part" name: "slime body part"
abstract: true abstract: true
components: # Shitmed Change
- type: Sprite
sprite: Mobs/Species/Slime/parts.rsi
- type: Icon
sprite: Mobs/Species/Slime/parts.rsi
- type: BodyPart
species: SlimePerson
- type: entity - type: entity
id: TorsoSlime id: TorsoSlime
name: "slime torso" name: "slime torso"
parent: [PartSlime, BaseTorso] parent: [PartSlime, BaseTorso]
components:
- type: Sprite
sprite: Mobs/Species/Slime/parts.rsi
state: "torso_m"
- type: entity - type: entity
id: HeadSlime id: HeadSlime
name: "slime head" name: "slime head"
parent: [PartSlime, BaseHead] parent: [PartSlime, BaseHead]
components:
- type: Sprite
sprite: Mobs/Species/Slime/parts.rsi
state: "head_m"
- type: entity - type: entity
id: LeftArmSlime id: LeftArmSlime
name: "left slime arm" name: "left slime arm"
parent: [PartSlime, BaseLeftArm] parent: [PartSlime, BaseLeftArm]
components:
- type: Sprite
sprite: Mobs/Species/Slime/parts.rsi
state: "l_arm"
- type: entity - type: entity
id: RightArmSlime id: RightArmSlime
name: "right slime arm" name: "right slime arm"
parent: [PartSlime, BaseRightArm] parent: [PartSlime, BaseRightArm]
components:
- type: Sprite
sprite: Mobs/Species/Slime/parts.rsi
state: "r_arm"
- type: entity - type: entity
id: LeftHandSlime id: LeftHandSlime
name: "left slime hand" name: "left slime hand"
parent: [PartSlime, BaseLeftHand] parent: [PartSlime, BaseLeftHand]
components:
- type: Sprite
sprite: Mobs/Species/Slime/parts.rsi
state: "l_hand"
- type: entity - type: entity
id: RightHandSlime id: RightHandSlime
name: "right slime hand" name: "right slime hand"
parent: [PartSlime, BaseRightHand] parent: [PartSlime, BaseRightHand]
components:
- type: Sprite
sprite: Mobs/Species/Slime/parts.rsi
state: "r_hand"
- type: entity - type: entity
id: LeftLegSlime id: LeftLegSlime
name: "left slime leg" name: "left slime leg"
parent: [PartSlime, BaseLeftLeg] parent: [PartSlime, BaseLeftLeg]
components:
- type: Sprite
sprite: Mobs/Species/Slime/parts.rsi
state: "l_leg"
- type: entity - type: entity
id: RightLegSlime id: RightLegSlime
name: "right slime leg" name: "right slime leg"
parent: [PartSlime, BaseRightLeg] parent: [PartSlime, BaseRightLeg]
components:
- type: Sprite
sprite: Mobs/Species/Slime/parts.rsi
state: "r_leg"
- type: entity - type: entity
id: LeftFootSlime id: LeftFootSlime
name: "left slime foot" name: "left slime foot"
parent: [PartSlime, BaseLeftFoot] parent: [PartSlime, BaseLeftFoot]
components:
- type: Sprite
sprite: Mobs/Species/Slime/parts.rsi
state: "l_foot"
- type: entity - type: entity
id: RightFootSlime id: RightFootSlime
name: "right slime foot" name: "right slime foot"
parent: [PartSlime, BaseRightFoot] parent: [PartSlime, BaseRightFoot]
components:
- type: Sprite
sprite: Mobs/Species/Slime/parts.rsi
state: "r_foot"

View File

@ -1,279 +1,73 @@
# TODO: Add descriptions (many) # Shitmed Change: This file was fully reorganized to use composition
# TODO BODY: Part damage
- type: entity - type: entity
id: PartVox
parent: BaseItem
name: "vox body part"
abstract: true abstract: true
parent: BasePart # Shitmed Change
id: PartVoxBase
name: "vox body part"
components: components:
- type: Damageable - type: Sprite
damageContainer: OrganicPart # Shitmed Change sprite: Mobs/Species/Vox/parts.rsi
- type: BodyPart - type: Icon
- type: ContainerContainer sprite: Mobs/Species/Vox/parts.rsi
containers: - type: BodyPart # Shitmed Change
bodypart: !type:Container species: Vox
ents: []
- type: StaticPrice
price: 100
- type: Tag
tags:
- Trash
- type: Extractable
juiceSolution:
reagents:
- ReagentId: Fat
Quantity: 3
- ReagentId: Blood
Quantity: 10
# Shitmed Change Start
- type: Gibbable
- type: SurgeryTool
startSound:
path: /Audio/_Shitmed/Medical/Surgery/organ1.ogg
endSound:
path: /Audio/_Shitmed/Medical/Surgery/organ2.ogg
- type: Destructible
thresholds:
- trigger:
!type:DamageTypeTrigger
damageType: Blunt
damage: 110
behaviors:
- !type:GibPartBehavior { }
- trigger:
!type:DamageTypeTrigger
damageType: Slash
damage: 100 # DeltaV
behaviors:
- !type:GibPartBehavior { }
- trigger:
!type:DamageTypeTrigger
damageType: Heat
damage: 2000 # DeltaV
behaviors:
- !type:SpawnEntitiesBehavior
spawnInContainer: true
spawn:
Ash:
min: 1
max: 1
- !type:BurnBodyBehavior { }
- !type:PlaySoundBehavior
sound:
collection: MeatLaserImpact
# Shitmed Change End
- type: entity - type: entity
parent: [ PartVoxBase, BaseTorso ]
id: TorsoVox id: TorsoVox
name: "vox torso" name: "vox torso"
parent: PartVox
components: components:
- type: Sprite - type: Sprite
sprite: Mobs/Species/Vox/parts.rsi state: "torso"
state: "torso" - type: Icon
- type: Icon state: "torso"
sprite: Mobs/Species/Vox/parts.rsi
state: "torso"
- type: Extractable
juiceSolution:
reagents:
- ReagentId: Fat
Quantity: 3
- ReagentId: Blood
Quantity: 10
# Shitmed Change Start
- type: BodyPart
partType: Torso
toolName: "a torso"
containerName: "torso_slot"
- type: ContainerContainer
containers:
torso_slot: !type:ContainerSlot {}
- type: Destructible
thresholds:
- trigger:
!type:DamageTypeTrigger
damageType: Blunt
damage: 400
behaviors:
- !type:GibPartBehavior { }
- trigger:
!type:DamageTypeTrigger
damageType: Slash
damage: 400
behaviors:
- !type:GibPartBehavior { }
- trigger:
!type:DamageTypeTrigger
damageType: Heat
damage: 4000 # DeltaV
behaviors:
- !type:SpawnEntitiesBehavior
spawnInContainer: true
spawn:
Ash:
min: 1
max: 1
- !type:BurnBodyBehavior { }
- !type:PlaySoundBehavior
sound:
collection: MeatLaserImpact
# Shitmed Change End
- type: entity - type: entity
parent: [ PartVoxBase, BaseHead ]
id: HeadVox id: HeadVox
name: "vox head" name: "vox head"
parent: PartVox
components: components:
- type: Sprite - type: Sprite
sprite: Mobs/Species/Vox/parts.rsi state: "head"
state: "head" - type: Icon
- type: Icon state: "head"
sprite: Mobs/Species/Vox/parts.rsi
state: "head"
- type: BodyPart
partType: Head
vital: true
toolName: "a head" # Shitmed Change
- type: Input
context: "ghost"
- type: Tag
tags:
- Head
- type: Extractable
juiceSolution:
reagents:
- ReagentId: Fat
Quantity: 5
- ReagentId: Blood
Quantity: 10
- type: entity - type: entity
parent: [ PartVoxBase, BaseLeftArm ]
id: LeftArmVox id: LeftArmVox
name: "left vox arm" name: "left vox arm"
parent: PartVox
components:
- type: Sprite
sprite: Mobs/Species/Vox/parts.rsi
state: "l_arm"
- type: Icon
sprite: Mobs/Species/Vox/parts.rsi
state: "l_arm"
- type: BodyPart
partType: Arm
symmetry: Left
toolName: "a left arm" # Shitmed Change
- type: entity - type: entity
parent: [ PartVoxBase, BaseRightArm ]
id: RightArmVox id: RightArmVox
name: "right vox arm" name: "right vox arm"
parent: PartVox
components:
- type: Sprite
sprite: Mobs/Species/Vox/parts.rsi
state: "r_arm"
- type: Icon
sprite: Mobs/Species/Vox/parts.rsi
state: "r_arm"
- type: BodyPart
partType: Arm
symmetry: Right
toolName: "a right arm" # Shitmed Change
- type: entity - type: entity
parent: [ PartVoxBase, BaseLeftHand ]
id: LeftHandVox id: LeftHandVox
name: "left vox hand" name: "left vox hand"
parent: PartVox
components:
- type: Sprite
sprite: Mobs/Species/Vox/parts.rsi
state: "l_hand"
- type: Icon
sprite: Mobs/Species/Vox/parts.rsi
state: "l_hand"
- type: BodyPart
partType: Hand
symmetry: Left
toolName: "a left hand" # Shitmed Change
- type: entity - type: entity
parent: [ PartVoxBase, BaseRightHand ]
id: RightHandVox id: RightHandVox
name: "right vox hand" name: "right vox hand"
parent: PartVox
components:
- type: Sprite
sprite: Mobs/Species/Vox/parts.rsi
state: "r_hand"
- type: Icon
sprite: Mobs/Species/Vox/parts.rsi
state: "r_hand"
- type: BodyPart
partType: Hand
symmetry: Right
toolName: "a right hand" # Shitmed Change
- type: entity - type: entity
parent: [ PartVoxBase, BaseLeftLeg ]
id: LeftLegVox id: LeftLegVox
name: "left vox leg" name: "left vox leg"
parent: PartVox
components:
- type: Sprite
sprite: Mobs/Species/Vox/parts.rsi
state: "l_leg"
- type: Icon
sprite: Mobs/Species/Vox/parts.rsi
state: "l_leg"
- type: BodyPart
partType: Leg
symmetry: Left
toolName: "a left leg" # Shitmed Change
- type: MovementBodyPart
- type: entity - type: entity
parent: [ PartVoxBase, BaseRightLeg ]
id: RightLegVox id: RightLegVox
name: "right vox leg" name: "right vox leg"
parent: PartVox
components:
- type: Sprite
sprite: Mobs/Species/Vox/parts.rsi
state: "r_leg"
- type: Icon
sprite: Mobs/Species/Vox/parts.rsi
state: "r_leg"
- type: BodyPart
partType: Leg
symmetry: Right
toolName: "a right leg" # Shitmed Change
- type: MovementBodyPart
- type: entity - type: entity
parent: [ PartVoxBase, BaseLeftFoot ]
id: LeftFootVox id: LeftFootVox
name: "left vox foot" name: "left vox foot"
parent: PartVox
components:
- type: Sprite
sprite: Mobs/Species/Vox/parts.rsi
state: "l_foot"
- type: Icon
sprite: Mobs/Species/Vox/parts.rsi
state: "l_foot"
- type: BodyPart
partType: Foot
symmetry: Left
toolName: "a left foot" # Shitmed Change
- type: entity - type: entity
parent: [ PartVoxBase, BaseRightFoot ]
id: RightFootVox id: RightFootVox
name: "right vox foot" name: "right vox foot"
parent: PartVox
components:
- type: Sprite
sprite: Mobs/Species/Vox/parts.rsi
state: "r_foot"
- type: Icon
sprite: Mobs/Species/Vox/parts.rsi
state: "r_foot"
- type: BodyPart
partType: Foot
symmetry: Right
toolName: "a right foot" # Shitmed Change

View File

@ -1,257 +1,61 @@
- type: entity - type: entity
id: PartHarpy
parent: BaseItem
name: "harpy body part"
abstract: true abstract: true
parent: BasePart
id: PartHarpyBase
components: components:
- type: Damageable - type: Sprite
damageContainer: OrganicPart # Shitmed Change sprite: _DV/Mobs/Species/Harpy/parts.rsi
- type: Icon
sprite: _DV/Mobs/Species/Harpy/parts.rsi
- type: BodyPart - type: BodyPart
- type: ContainerContainer species: Harpy
containers:
bodypart: !type:Container
ents: []
- type: StaticPrice #DynamicPrice
price: 100
- type: Tag
tags:
- Trash
# Shitmed Change Start
- type: Gibbable
- type: SurgeryTool
startSound:
path: /Audio/_Shitmed/Medical/Surgery/organ1.ogg
endSound:
path: /Audio/_Shitmed/Medical/Surgery/organ2.ogg
- type: Destructible
thresholds:
- trigger:
!type:DamageTypeTrigger
damageType: Blunt
damage: 150 # DeltaV
behaviors:
- !type:GibPartBehavior { }
- trigger:
!type:DamageTypeTrigger
damageType: Slash
damage: 100 # DeltaV
behaviors:
- !type:GibPartBehavior { }
- trigger:
!type:DamageTypeTrigger
damageType: Heat
damage: 2000 # DeltaV
behaviors:
- !type:SpawnEntitiesBehavior
spawnInContainer: true
spawn:
Ash:
min: 1
max: 1
- !type:BurnBodyBehavior { }
- !type:PlaySoundBehavior
sound:
collection: MeatLaserImpact
# Shitmed Change End
- type: entity - type: entity
parent: [ PartHarpyBase, BaseTorso ]
id: TorsoHarpy id: TorsoHarpy
name: "harpy torso" name: "harpy torso"
parent: PartHarpy
components:
- type: Sprite
sprite: _DV/Mobs/Species/Harpy/parts.rsi
state: "torso_m"
- type: Icon
sprite: _DV/Mobs/Species/Harpy/parts.rsi
state: "torso_m"
- type: BodyPart
partType: Torso
# Shitmed Change Start
toolName: "a torso"
containerName: "torso_slot"
- type: ContainerContainer
containers:
torso_slot: !type:ContainerSlot {}
- type: Destructible
thresholds:
- trigger:
!type:DamageTypeTrigger
damageType: Blunt
damage: 400
behaviors:
- !type:GibPartBehavior { }
- trigger:
!type:DamageTypeTrigger
damageType: Slash
damage: 400
behaviors:
- !type:GibPartBehavior { }
- trigger:
!type:DamageTypeTrigger
damageType: Heat
damage: 4000 # DeltaV
behaviors:
- !type:SpawnEntitiesBehavior
spawnInContainer: true
spawn:
Ash:
min: 1
max: 1
- !type:BurnBodyBehavior { }
- !type:PlaySoundBehavior
sound:
collection: MeatLaserImpact
# Shitmed Change End
- type: entity - type: entity
parent: [ PartHarpyBase, BaseHead ]
id: HeadHarpy id: HeadHarpy
name: "harpy head" name: "harpy head"
parent: PartHarpy
components:
- type: Sprite
sprite: _DV/Mobs/Species/Harpy/parts.rsi
state: "head_m"
- type: Icon
sprite: _DV/Mobs/Species/Harpy/parts.rsi
state: "head_m"
- type: BodyPart
partType: Head
vital: true
toolName: "a head" # Shitmed Change
- type: Input
context: "ghost"
- type: InputMover
- type: GhostOnMove
- type: Tag
tags:
- Head
- type: entity - type: entity
parent: [ PartHarpyBase, BaseLeftArm ]
id: LeftArmHarpy id: LeftArmHarpy
name: "left harpy arm" name: "left harpy arm"
parent: PartHarpy
components:
- type: Sprite
sprite: _DV/Mobs/Species/Harpy/parts.rsi
state: "l_arm"
- type: Icon
sprite: _DV/Mobs/Species/Harpy/parts.rsi
state: "l_arm"
- type: BodyPart
partType: Arm
symmetry: Left
toolName: "a left arm" # Shitmed Change
- type: entity - type: entity
parent: [ PartHarpyBase, BaseRightArm ]
id: RightArmHarpy id: RightArmHarpy
name: "right harpy arm" name: "right harpy arm"
parent: PartHarpy
components:
- type: Sprite
sprite: _DV/Mobs/Species/Harpy/parts.rsi
state: "r_arm"
- type: Icon
sprite: _DV/Mobs/Species/Harpy/parts.rsi
state: "r_arm"
- type: BodyPart
partType: Arm
symmetry: Right
toolName: "a right arm" # Shitmed Change
- type: entity - type: entity
parent: [ PartHarpyBase, BaseLeftHand ]
id: LeftHandHarpy id: LeftHandHarpy
name: "left harpy hand" name: "left harpy hand"
parent: PartHarpy
components:
- type: Sprite
sprite: _DV/Mobs/Species/Harpy/parts.rsi
state: "l_hand"
- type: Icon
sprite: _DV/Mobs/Species/Harpy/parts.rsi
state: "l_hand"
- type: BodyPart
partType: Hand
symmetry: Left
toolName: "a left hand" # Shitmed Change
- type: entity - type: entity
parent: [ PartHarpyBase, BaseRightHand ]
id: RightHandHarpy id: RightHandHarpy
name: "right harpy hand" name: "right harpy hand"
parent: PartHarpy
components:
- type: Sprite
sprite: _DV/Mobs/Species/Harpy/parts.rsi
state: "r_hand"
- type: Icon
sprite: _DV/Mobs/Species/Harpy/parts.rsi
state: "r_hand"
- type: BodyPart
partType: Hand
symmetry: Right
toolName: "a right hand" # Shitmed Change
- type: entity - type: entity
parent: [ PartHarpyBase, BaseLeftLeg ]
id: LeftLegHarpy id: LeftLegHarpy
name: "left harpy leg" name: "left harpy leg"
parent: PartHarpy
components:
- type: Sprite
sprite: _DV/Mobs/Species/Harpy/parts.rsi
state: "l_leg"
- type: Icon
sprite: _DV/Mobs/Species/Harpy/parts.rsi
state: "l_leg"
- type: BodyPart
partType: Leg
symmetry: Left
toolName: "a left leg" # Shitmed Change
- type: MovementBodyPart
- type: entity - type: entity
parent: [ PartHarpyBase, BaseRightLeg ]
id: RightLegHarpy id: RightLegHarpy
name: "right harpy leg" name: "right harpy leg"
parent: PartHarpy
components:
- type: Sprite
sprite: _DV/Mobs/Species/Harpy/parts.rsi
state: "r_leg"
- type: Icon
sprite: _DV/Mobs/Species/Harpy/parts.rsi
state: "r_leg"
- type: BodyPart
partType: Leg
symmetry: Right
toolName: "a right leg" # Shitmed Change
- type: MovementBodyPart
- type: entity - type: entity
parent: [ PartHarpyBase, BaseLeftFoot ]
id: LeftFootHarpy id: LeftFootHarpy
name: "left harpy foot" name: "left harpy foot"
parent: PartHarpy
components:
- type: Sprite
sprite: _DV/Mobs/Species/Harpy/parts.rsi
state: "l_foot"
- type: Icon
sprite: _DV/Mobs/Species/Harpy/parts.rsi
state: "l_foot"
- type: BodyPart
partType: Foot
symmetry: Left
toolName: "a left foot" # Shitmed Change
- type: entity - type: entity
parent: [ PartHarpyBase, BaseRightFoot ]
id: RightFootHarpy id: RightFootHarpy
name: "right harpy foot" name: "right harpy foot"
parent: PartHarpy
components:
- type: Sprite
sprite: _DV/Mobs/Species/Harpy/parts.rsi
state: "r_foot"
- type: Icon
sprite: _DV/Mobs/Species/Harpy/parts.rsi
state: "r_foot"
- type: BodyPart
partType: Foot
symmetry: Right
toolName: "a right foot" # Shitmed Change

View File

@ -1,242 +1,61 @@
- type: entity - type: entity
id: PartRodentia
parent: BaseItem
name: "rodentia body part"
abstract: true abstract: true
parent: BasePart
id: PartRodentiaBase
components: components:
- type: Sprite - type: Sprite
sprite: _DV/Mobs/Species/Rodentia/parts.rsi sprite: _DV/Mobs/Species/Rodentia/parts.rsi
- type: Icon - type: Icon
sprite: _DV/Mobs/Species/Rodentia/parts.rsi sprite: _DV/Mobs/Species/Rodentia/parts.rsi
- type: Damageable
damageContainer: OrganicPart # Shitmed Change
- type: BodyPart - type: BodyPart
- type: ContainerContainer species: Rodentia
containers:
bodypart: !type:Container
ents: []
- type: StaticPrice #DynamicPrice
price: 100
- type: Tag
tags:
- Trash
# Shitmed Change Start
- type: Gibbable
- type: SurgeryTool
startSound:
path: /Audio/_Shitmed/Medical/Surgery/organ1.ogg
endSound:
path: /Audio/_Shitmed/Medical/Surgery/organ2.ogg
- type: Destructible
thresholds:
- trigger:
!type:DamageTypeTrigger
damageType: Blunt
damage: 110
behaviors:
- !type:GibPartBehavior { }
- trigger:
!type:DamageTypeTrigger
damageType: Slash
damage: 100 # DeltaV
behaviors:
- !type:GibPartBehavior { }
- trigger:
!type:DamageTypeTrigger
damageType: Heat
damage: 2000 # DeltaV
behaviors:
- !type:SpawnEntitiesBehavior
spawnInContainer: true
spawn:
Ash:
min: 1
max: 1
- !type:BurnBodyBehavior { }
- !type:PlaySoundBehavior
sound:
collection: MeatLaserImpact
# Shitmed Change End
- type: entity - type: entity
parent: [ PartRodentiaBase, BaseTorso ]
id: TorsoRodentia id: TorsoRodentia
name: "rodentia torso" name: "rodentia torso"
parent: PartRodentia
components:
- type: Sprite
state: "torso_m"
- type: Icon
state: "torso_m"
- type: BodyPart
partType: Torso
# Shitmed Change Start
toolName: "a torso"
containerName: "torso_slot"
- type: ContainerContainer
containers:
torso_slot: !type:ContainerSlot {}
- type: Destructible
thresholds:
- trigger:
!type:DamageTypeTrigger
damageType: Blunt
damage: 400
behaviors:
- !type:GibPartBehavior { }
- trigger:
!type:DamageTypeTrigger
damageType: Slash
damage: 400
behaviors:
- !type:GibPartBehavior { }
- trigger:
!type:DamageTypeTrigger
damageType: Heat
damage: 4000 # DeltaV
behaviors:
- !type:SpawnEntitiesBehavior
spawnInContainer: true
spawn:
Ash:
min: 1
max: 1
- !type:BurnBodyBehavior { }
- !type:PlaySoundBehavior
sound:
collection: MeatLaserImpact
# Shitmed Change End
- type: entity - type: entity
parent: [ PartRodentiaBase, BaseHead ]
id: HeadRodentia id: HeadRodentia
name: "rodentia head" name: "rodentia head"
parent: PartRodentia
components:
- type: Sprite
state: "head_m"
- type: Icon
state: "head_m"
- type: BodyPart
partType: Head
toolName: "a head" # Shitmed Change
vital: true
- type: Input
context: "ghost"
- type: InputMover
- type: GhostOnMove
- type: Tag
tags:
- Head
- type: entity - type: entity
parent: [ PartRodentiaBase, BaseLeftArm ]
id: LeftArmRodentia id: LeftArmRodentia
name: "left rodentia arm" name: "left rodentia arm"
parent: PartRodentia
components:
- type: Sprite
state: "l_arm"
- type: Icon
state: "l_arm"
- type: BodyPart
partType: Arm
symmetry: Left
toolName: "a left arm" # Shitmed Change
- type: entity - type: entity
parent: [ PartRodentiaBase, BaseRightArm ]
id: RightArmRodentia id: RightArmRodentia
name: "right rodentia arm" name: "right rodentia arm"
parent: PartRodentia
components:
- type: Sprite
state: "r_arm"
- type: Icon
state: "r_arm"
- type: BodyPart
partType: Arm
symmetry: Right
toolName: "a right arm" # Shitmed Change
- type: entity - type: entity
parent: [ PartRodentiaBase, BaseLeftHand ]
id: LeftHandRodentia id: LeftHandRodentia
name: "left rodentia hand" name: "left rodentia hand"
parent: PartRodentia
components:
- type: Sprite
state: "l_hand"
- type: Icon
state: "l_hand"
- type: BodyPart
partType: Hand
symmetry: Left
toolName: "a left hand" # Shitmed Change
- type: entity - type: entity
parent: [ PartRodentiaBase, BaseRightHand ]
id: RightHandRodentia id: RightHandRodentia
name: "right rodentia hand" name: "right rodentia hand"
parent: PartRodentia
components:
- type: Sprite
state: "r_hand"
- type: Icon
state: "r_hand"
- type: BodyPart
partType: Hand
symmetry: Right
toolName: "a right hand" # Shitmed Change
- type: entity - type: entity
parent: [ PartRodentiaBase, BaseLeftLeg ]
id: LeftLegRodentia id: LeftLegRodentia
name: "left rodentia leg" name: "left rodentia leg"
parent: PartRodentia
components:
- type: Sprite
state: "l_leg"
- type: Icon
state: "l_leg"
- type: BodyPart
partType: Leg
symmetry: Left
toolName: "a left leg" # Shitmed Change
- type: MovementBodyPart
- type: entity - type: entity
parent: [ PartRodentiaBase, BaseRightLeg ]
id: RightLegRodentia id: RightLegRodentia
name: "right rodentia leg" name: "right rodentia leg"
parent: PartRodentia
components:
- type: Sprite
state: "r_leg"
- type: Icon
state: "r_leg"
- type: BodyPart
partType: Leg
symmetry: Right
toolName: "a right leg" # Shitmed Change
- type: MovementBodyPart
- type: entity - type: entity
parent: [ PartRodentiaBase, BaseLeftFoot ]
id: LeftFootRodentia id: LeftFootRodentia
name: "left rodentia foot" name: "left rodentia foot"
parent: PartRodentia
components:
- type: Sprite
state: "l_foot"
- type: Icon
state: "l_foot"
- type: BodyPart
partType: Foot
symmetry: Left
toolName: "a left foot" # Shitmed Change
- type: entity - type: entity
parent: [ PartRodentiaBase, BaseRightFoot ]
id: RightFootRodentia id: RightFootRodentia
name: "right rodentia foot" name: "right rodentia foot"
parent: PartRodentia
components:
- type: Sprite
state: "r_foot"
- type: Icon
state: "r_foot"
- type: BodyPart
partType: Foot
symmetry: Right
toolName: "a right foot" # Shitmed Change

View File

@ -1,270 +1,61 @@
# TODO: Add descriptions (many)
# TODO BODY: Part damage
- type: entity - type: entity
id: PartVulpkanin
parent: BaseItem
name: "vulpkanin body part"
abstract: true abstract: true
parent: BasePart
id: PartVulpkaninBase
components: components:
- type: Damageable - type: Sprite
damageContainer: OrganicPart # Shitmed Change sprite: _DV/Mobs/Species/Vulpkanin/parts.rsi
- type: Icon
sprite: _DV/Mobs/Species/Vulpkanin/parts.rsi
- type: BodyPart - type: BodyPart
- type: ContainerContainer species: Vulpkanin
containers:
bodypart: !type:Container
ents: []
- type: StaticPrice #DynamicPrice
price: 100
- type: Tag
tags:
- Trash
# Shitmed Change Start
- type: Gibbable
- type: SurgeryTool
startSound:
path: /Audio/_Shitmed/Medical/Surgery/organ1.ogg
endSound:
path: /Audio/_Shitmed/Medical/Surgery/organ2.ogg
- type: Destructible
thresholds:
- trigger:
!type:DamageTypeTrigger
damageType: Blunt
damage: 110
behaviors:
- !type:GibPartBehavior { }
- trigger:
!type:DamageTypeTrigger
damageType: Slash
damage: 100 # DeltaV
behaviors:
- !type:GibPartBehavior { }
- trigger:
!type:DamageTypeTrigger
damageType: Heat
damage: 2000 # DeltaV
behaviors:
- !type:SpawnEntitiesBehavior
spawnInContainer: true
spawn:
Ash:
min: 1
max: 1
- !type:BurnBodyBehavior { }
- !type:PlaySoundBehavior
sound:
collection: MeatLaserImpact
# Shitmed Change End
- type: entity - type: entity
parent: [ PartVulpkaninBase, BaseTorso ]
id: TorsoVulpkanin id: TorsoVulpkanin
name: "vulpkanin torso" name: "vulpkanin torso"
parent: PartVulpkanin
components:
- type: Sprite
netsync: false
sprite: _DV/Mobs/Species/Vulpkanin/parts.rsi
state: "torso_m"
- type: Icon
sprite: _DV/Mobs/Species/Vulpkanin/parts.rsi
state: "torso_m"
# Shitmed Change Start
- type: BodyPart
partType: Torso
toolName: "a torso"
containerName: "torso_slot"
- type: ContainerContainer
containers:
torso_slot: !type:ContainerSlot {}
- type: Destructible
thresholds:
- trigger:
!type:DamageTypeTrigger
damageType: Blunt
damage: 4000 # DeltaV
behaviors:
- !type:GibPartBehavior { }
- trigger:
!type:DamageTypeTrigger
damageType: Slash
damage: 400
behaviors:
- !type:GibPartBehavior { }
- trigger:
!type:DamageTypeTrigger
damageType: Heat
damage: 400
behaviors:
- !type:SpawnEntitiesBehavior
spawnInContainer: true
spawn:
Ash:
min: 1
max: 1
- !type:BurnBodyBehavior { }
- !type:PlaySoundBehavior
sound:
collection: MeatLaserImpact
# Shitmed Change End
- type: entity - type: entity
parent: [ PartVulpkaninBase, BaseHead ]
id: HeadVulpkanin id: HeadVulpkanin
name: "vulpkanin head" name: "vulpkanin head"
parent: PartVulpkanin
components:
- type: Sprite
netsync: false
sprite: _DV/Mobs/Species/Vulpkanin/parts.rsi
state: "head_m"
- type: Icon
sprite: _DV/Mobs/Species/Vulpkanin/parts.rsi
state: "head_m"
- type: BodyPart
partType: Head
vital: true
toolName: "a head" # Shitmed Change
- type: Input
context: "ghost"
- type: InputMover
- type: GhostOnMove
- type: Tag
tags:
- Head
- type: entity - type: entity
parent: [ PartVulpkaninBase, BaseLeftArm ]
id: LeftArmVulpkanin id: LeftArmVulpkanin
name: "left vulpkanin arm" name: "left vulpkanin arm"
parent: PartVulpkanin
components:
- type: Sprite
netsync: false
sprite: _DV/Mobs/Species/Vulpkanin/parts.rsi
state: "l_arm"
- type: Icon
sprite: _DV/Mobs/Species/Vulpkanin/parts.rsi
state: "l_arm"
- type: BodyPart
partType: Arm
symmetry: Left
toolName: "a left arm" # Shitmed Change
- type: entity - type: entity
parent: [ PartVulpkaninBase, BaseRightArm ]
id: RightArmVulpkanin id: RightArmVulpkanin
name: "right vulpkanin arm" name: "right vulpkanin arm"
parent: PartVulpkanin
components:
- type: Sprite
netsync: false
sprite: _DV/Mobs/Species/Vulpkanin/parts.rsi
state: "r_arm"
- type: Icon
sprite: _DV/Mobs/Species/Vulpkanin/parts.rsi
state: "r_arm"
- type: BodyPart
partType: Arm
symmetry: Right
toolName: "a right arm" # Shitmed Change
- type: entity - type: entity
parent: [ PartVulpkaninBase, BaseLeftHand ]
id: LeftHandVulpkanin id: LeftHandVulpkanin
name: "left vulpkanin hand" name: "left vulpkanin hand"
parent: PartVulpkanin
components:
- type: Sprite
netsync: false
sprite: _DV/Mobs/Species/Vulpkanin/parts.rsi
state: "l_hand"
- type: Icon
sprite: _DV/Mobs/Species/Vulpkanin/parts.rsi
state: "l_hand"
- type: BodyPart
partType: Hand
symmetry: Left
toolName: "a left hand" # Shitmed Change
- type: entity - type: entity
parent: [ PartVulpkaninBase, BaseRightHand ]
id: RightHandVulpkanin id: RightHandVulpkanin
name: "right vulpkanin hand" name: "right vulpkanin hand"
parent: PartVulpkanin
components:
- type: Sprite
netsync: false
sprite: _DV/Mobs/Species/Vulpkanin/parts.rsi
state: "r_hand"
- type: Icon
sprite: _DV/Mobs/Species/Vulpkanin/parts.rsi
state: "r_hand"
- type: BodyPart
partType: Hand
symmetry: Right
toolName: "a right hand" # Shitmed Change
- type: entity - type: entity
parent: [ PartVulpkaninBase, BaseLeftLeg ]
id: LeftLegVulpkanin id: LeftLegVulpkanin
name: "left vulpkanin leg" name: "left vulpkanin leg"
parent: PartVulpkanin
components:
- type: Sprite
netsync: false
sprite: _DV/Mobs/Species/Vulpkanin/parts.rsi
state: "l_leg"
- type: Icon
sprite: _DV/Mobs/Species/Vulpkanin/parts.rsi
state: "l_leg"
- type: BodyPart
partType: Leg
symmetry: Left
toolName: "a left leg" # Shitmed Change
- type: MovementBodyPart
- type: entity - type: entity
parent: [ PartVulpkaninBase, BaseRightLeg ]
id: RightLegVulpkanin id: RightLegVulpkanin
name: "right vulpkanin leg" name: "right vulpkanin leg"
parent: PartVulpkanin
components:
- type: Sprite
netsync: false
sprite: _DV/Mobs/Species/Vulpkanin/parts.rsi
state: "r_leg"
- type: Icon
sprite: _DV/Mobs/Species/Vulpkanin/parts.rsi
state: "r_leg"
- type: BodyPart
partType: Leg
symmetry: Right
toolName: "a right leg" # Shitmed Change
- type: MovementBodyPart
- type: entity - type: entity
parent: [ PartVulpkaninBase, BaseLeftFoot ]
id: LeftFootVulpkanin id: LeftFootVulpkanin
name: "left vulpkanin foot" name: "left vulpkanin foot"
parent: PartVulpkanin
components:
- type: Sprite
netsync: false
sprite: _DV/Mobs/Species/Vulpkanin/parts.rsi
state: "l_foot"
- type: Icon
sprite: _DV/Mobs/Species/Vulpkanin/parts.rsi
state: "l_foot"
- type: BodyPart
partType: Foot
symmetry: Left
toolName: "a left foot" # Shitmed Change
- type: entity - type: entity
parent: [ PartVulpkaninBase, BaseRightFoot ]
id: RightFootVulpkanin id: RightFootVulpkanin
name: "right vulpkanin foot" name: "right vulpkanin foot"
parent: PartVulpkanin
components:
- type: Sprite
netsync: false
sprite: _DV/Mobs/Species/Vulpkanin/parts.rsi
state: "r_foot"
- type: Icon
sprite: _DV/Mobs/Species/Vulpkanin/parts.rsi
state: "r_foot"
- type: BodyPart
partType: Foot
symmetry: Right
toolName: "a right foot" # Shitmed Change

View File

@ -0,0 +1,37 @@
- type: entity
abstract: true
parent: PartBase
id: PartCarpBase
components:
- type: Sprite
sprite: _Shitmed/Mobs/Aliens/Carps/carp_parts.rsi
- type: Icon
sprite: _Shitmed/Mobs/Aliens/Carps/carp_parts.rsi
- type: entity
parent: PartCarpBase
id: TailCarp
name: carp tail
description: Unique glands in this tail let space carp fly in a vacuum.
components:
- type: Sprite
state: tail
- type: Icon
state: tail
- type: BodyPart
partType: Tail
- type: MovementBodyPart
walkSpeed: 2.5
sprintSpeed: 3.5
# TODO: Make it actually needed. Legs are hardcoded to be the only parts that matter for movement.
# TODO: space flight stuff
- type: entity
parent: [ PartCarpBase, BaseTorso ]
id: TorsoCarp
name: carp torso
components:
- type: Sprite
state: torso
- type: Icon
state: torso

View File

@ -1,11 +1,12 @@
# TODO: Add descriptions (many) # TODO: Add descriptions (many)
- type: entity - type: entity
id: PartKobold
parent: [BaseItem, BasePart]
name: "kobold body part"
abstract: true abstract: true
parent: BasePart
id: PartKobold
components: components:
- type: Sprite
sprite: Mobs/Animals/kobold.rsi
- type: Extractable - type: Extractable
juiceSolution: juiceSolution:
reagents: reagents:
@ -15,12 +16,11 @@
Quantity: 10 Quantity: 10
- type: entity - type: entity
parent: [PartKobold, BaseTorso]
id: TorsoKobold id: TorsoKobold
name: "kobold torso" name: "kobold torso"
parent: [PartKobold, BaseTorso]
components: components:
- type: Sprite - type: Sprite
sprite: Mobs/Animals/kobold.rsi
state: "torso_m" state: "torso_m"
- type: Extractable - type: Extractable
juiceSolution: juiceSolution:
@ -31,12 +31,11 @@
Quantity: 20 Quantity: 20
- type: entity - type: entity
parent: [PartKobold, BaseHead]
id: HeadKobold id: HeadKobold
name: "kobold head" name: "kobold head"
parent: [PartKobold, BaseHead]
components: components:
- type: Sprite - type: Sprite
sprite: Mobs/Animals/kobold.rsi
state: "head_m" state: "head_m"
- type: Extractable - type: Extractable
juiceSolution: juiceSolution:
@ -47,73 +46,65 @@
Quantity: 10 Quantity: 10
- type: entity - type: entity
parent: [PartKobold, BaseLeftArm]
id: LeftArmKobold id: LeftArmKobold
name: "left kobold arm" name: "left kobold arm"
parent: [PartKobold, BaseLeftArm]
components: components:
- type: Sprite - type: Sprite
sprite: Mobs/Animals/kobold.rsi
state: "l_arm" state: "l_arm"
- type: entity - type: entity
parent: [PartKobold, BaseRightArm]
id: RightArmKobold id: RightArmKobold
name: "right kobold arm" name: "right kobold arm"
parent: [PartKobold, BaseRightArm]
components: components:
- type: Sprite - type: Sprite
sprite: Mobs/Animals/kobold.rsi
state: "r_arm" state: "r_arm"
- type: entity - type: entity
parent: [PartKobold, BaseLeftHand]
id: LeftHandKobold id: LeftHandKobold
name: "left kobold hand" name: "left kobold hand"
parent: [PartKobold, BaseLeftHand]
components: components:
- type: Sprite - type: Sprite
sprite: Mobs/Animals/kobold.rsi
state: "l_hand" state: "l_hand"
- type: entity - type: entity
parent: [PartKobold, BaseRightHand]
id: RightHandKobold id: RightHandKobold
name: "right kobold hand" name: "right kobold hand"
parent: [PartKobold, BaseRightHand]
components: components:
- type: Sprite - type: Sprite
sprite: Mobs/Animals/kobold.rsi
state: "r_hand" state: "r_hand"
- type: entity - type: entity
parent: [PartKobold, BaseLeftLeg]
id: LeftLegKobold id: LeftLegKobold
name: "left kobold leg" name: "left kobold leg"
parent: [PartKobold, BaseLeftLeg]
components: components:
- type: Sprite - type: Sprite
sprite: Mobs/Animals/kobold.rsi
state: "l_leg" state: "l_leg"
- type: entity - type: entity
parent: [PartKobold, BaseRightLeg]
id: RightLegKobold id: RightLegKobold
name: "right kobold leg" name: "right kobold leg"
parent: [PartKobold, BaseRightLeg]
components: components:
- type: Sprite - type: Sprite
sprite: Mobs/Animals/kobold.rsi
state: "r_leg" state: "r_leg"
- type: entity - type: entity
parent: [PartKobold, BaseLeftFoot]
id: LeftFootKobold id: LeftFootKobold
name: "left kobold foot" name: "left kobold foot"
parent: [PartKobold, BaseLeftFoot]
components: components:
- type: Sprite - type: Sprite
sprite: Mobs/Animals/kobold.rsi
state: "l_foot" state: "l_foot"
- type: entity - type: entity
parent: [PartKobold, BaseRightFoot]
id: RightFootKobold id: RightFootKobold
name: "right kobold foot" name: "right kobold foot"
parent: [PartKobold, BaseRightFoot]
components: components:
- type: Sprite - type: Sprite
sprite: Mobs/Animals/kobold.rsi
state: "r_foot" state: "r_foot"

View File

@ -1,11 +1,12 @@
# TODO: Add descriptions (many) # TODO: Add descriptions (many)
- type: entity - type: entity
id: PartMonkey
parent: [BaseItem, BasePart]
name: "monkey body part"
abstract: true abstract: true
parent: BasePart
id: PartMonkey
components: components:
- type: Sprite
sprite: Mobs/Animals/monkey.rsi
- type: Extractable - type: Extractable
juiceSolution: juiceSolution:
reagents: reagents:
@ -15,12 +16,11 @@
Quantity: 10 Quantity: 10
- type: entity - type: entity
parent: [PartMonkey, BaseTorso]
id: TorsoMonkey id: TorsoMonkey
name: "monkey torso" name: "monkey torso"
parent: [PartMonkey, BaseTorso]
components: components:
- type: Sprite - type: Sprite
sprite: Mobs/Animals/monkey.rsi
state: "torso_m" state: "torso_m"
- type: Extractable - type: Extractable
juiceSolution: juiceSolution:
@ -31,12 +31,11 @@
Quantity: 20 Quantity: 20
- type: entity - type: entity
parent: [PartMonkey, BaseHead]
id: HeadMonkey id: HeadMonkey
name: "monkey head" name: "monkey head"
parent: [PartMonkey, BaseHead]
components: components:
- type: Sprite - type: Sprite
sprite: Mobs/Animals/monkey.rsi
state: "head_m" state: "head_m"
- type: Extractable - type: Extractable
juiceSolution: juiceSolution:
@ -47,73 +46,65 @@
Quantity: 10 Quantity: 10
- type: entity - type: entity
parent: [PartMonkey, BaseLeftArm]
id: LeftArmMonkey id: LeftArmMonkey
name: "left monkey arm" name: "left monkey arm"
parent: [PartMonkey, BaseLeftArm]
components: components:
- type: Sprite - type: Sprite
sprite: Mobs/Animals/monkey.rsi
state: "l_arm" state: "l_arm"
- type: entity - type: entity
parent: [PartMonkey, BaseRightArm]
id: RightArmMonkey id: RightArmMonkey
name: "right monkey arm" name: "right monkey arm"
parent: [PartMonkey, BaseRightArm]
components: components:
- type: Sprite - type: Sprite
sprite: Mobs/Animals/monkey.rsi
state: "r_arm" state: "r_arm"
- type: entity - type: entity
parent: [PartMonkey, BaseLeftHand]
id: LeftHandMonkey id: LeftHandMonkey
name: "left monkey hand" name: "left monkey hand"
parent: [PartMonkey, BaseLeftHand]
components: components:
- type: Sprite - type: Sprite
sprite: Mobs/Animals/monkey.rsi
state: "l_hand" state: "l_hand"
- type: entity - type: entity
parent: [PartMonkey, BaseRightHand]
id: RightHandMonkey id: RightHandMonkey
name: "right monkey hand" name: "right monkey hand"
parent: [PartMonkey, BaseRightHand]
components: components:
- type: Sprite - type: Sprite
sprite: Mobs/Animals/monkey.rsi
state: "r_hand" state: "r_hand"
- type: entity - type: entity
parent: [PartMonkey, BaseLeftLeg]
id: LeftLegMonkey id: LeftLegMonkey
name: "left monkey leg" name: "left monkey leg"
parent: [PartMonkey, BaseLeftLeg]
components: components:
- type: Sprite - type: Sprite
sprite: Mobs/Animals/monkey.rsi
state: "l_leg" state: "l_leg"
- type: entity - type: entity
parent: [PartMonkey, BaseRightLeg]
id: RightLegMonkey id: RightLegMonkey
name: "right monkey leg" name: "right monkey leg"
parent: [PartMonkey, BaseRightLeg]
components: components:
- type: Sprite - type: Sprite
sprite: Mobs/Animals/monkey.rsi
state: "r_leg" state: "r_leg"
- type: entity - type: entity
parent: [PartMonkey, BaseLeftFoot]
id: LeftFootMonkey id: LeftFootMonkey
name: "left monkey foot" name: "left monkey foot"
parent: [PartMonkey, BaseLeftFoot]
components: components:
- type: Sprite - type: Sprite
sprite: Mobs/Animals/monkey.rsi
state: "l_foot" state: "l_foot"
- type: entity - type: entity
parent: [PartMonkey, BaseRightFoot]
id: RightFootMonkey id: RightFootMonkey
name: "right monkey foot" name: "right monkey foot"
parent: [PartMonkey, BaseRightFoot]
components: components:
- type: Sprite - type: Sprite
sprite: Mobs/Animals/monkey.rsi
state: "r_foot" state: "r_foot"

View File

@ -1,48 +1,9 @@
# Monkey head for borging/transplanting pun pun # Monkey head for borging/transplanting pun pun
- type: entity - type: entity
parent: [PartAnimal, BaseHead] parent: [PartAnimalBase, BaseHead]
id: HeadAnimal id: HeadAnimal
name: animal head name: animal head
categories: [ HideSpawnMenu ]
components: components:
- type: Sprite - type: Sprite
layers: layers:
- state: head_m - state: head_m
- type: entity
abstract: true
parent: PartAnimal
id: BaseCarpPart
components:
- type: Sprite
sprite: _Shitmed/Mobs/Aliens/Carps/carp_parts.rsi
- type: entity
categories: [ HideSpawnMenu ]
parent: BaseCarpPart
id: TailCarp
name: carp tail
description: Unique glands in this tail let space carp fly in a vacuum.
components:
- type: Sprite
layers:
- state: tail
- type: BodyPart
partType: Tail
- type: MovementBodyPart
walkSpeed: 2.5
sprintSpeed: 3.5
# TODO: Make it actually needed. Legs are hardcoded to be the only parts that matter for movement.
# TODO: space flight stuff
- type: entity
categories: [ HideSpawnMenu ]
parent: BaseCarpPart
id: TorsoCarp
name: carp torso
components:
- type: Sprite
layers:
- state: torso
- type: BodyPart
partType: Torso

View File

@ -0,0 +1,88 @@
# body part with regular organic destruction
- type: entity
abstract: true
parent: BasePartInorganic
id: BasePart
components:
- type: Damageable
damageContainer: OrganicPart # Shitmed Change
- type: Destructible
thresholds:
- trigger:
!type:DamageTypeTrigger
damageType: Blunt
damage: 110
behaviors:
- !type:GibPartBehavior { }
- trigger:
!type:DamageTypeTrigger
damageType: Slash
damage: 100 # DeltaV - was 150
behaviors:
- !type:GibPartBehavior { }
- trigger:
!type:DamageTypeTrigger
damageType: Heat
damage: 2000 # DeltaV - was 200
behaviors:
- !type:SpawnEntitiesBehavior
spawnInContainer: true
spawn:
Ash:
min: 1
max: 1
- !type:BurnBodyBehavior { }
- !type:PlaySoundBehavior
sound:
collection: MeatLaserImpact
- type: Extractable
juiceSolution:
reagents:
- ReagentId: Fat
Quantity: 3
- ReagentId: Blood
Quantity: 10
# organic torsos have higher health
# this doesn't affect gibbing bodies as there is code to prevent torso gibbing while part of a body
- type: entity
abstract: true
parent: BaseTorsoInorganic
id: BaseTorso
components:
- type: Destructible
thresholds:
- trigger:
!type:DamageTypeTrigger
damageType: Blunt
damage: 400
behaviors:
- !type:GibPartBehavior { }
- trigger:
!type:DamageTypeTrigger
damageType: Slash
damage: 400
behaviors:
- !type:GibPartBehavior { }
- trigger:
!type:DamageTypeTrigger
damageType: Heat
damage: 4000 # DeltaV - was 400
behaviors:
- !type:SpawnEntitiesBehavior
spawnInContainer: true
spawn:
Ash:
min: 1
max: 1
- !type:BurnBodyBehavior { }
- !type:PlaySoundBehavior
sound:
collection: MeatLaserImpact
- type: Extractable # torso is meatier
juiceSolution:
reagents:
- ReagentId: Fat
Quantity: 10
- ReagentId: Blood
Quantity: 20

View File

@ -1,125 +1,106 @@
- type: entity - type: entity
id: LeftArmCybernetic
parent: LeftArmHuman
abstract: true abstract: true
parent: BasePartInorganic
id: CyberneticPartBase
components: components:
- type: Sprite
sprite: _Shitmed/Mobs/Species/Cybernetics/bishop/bishop_main.rsi
- type: Icon
sprite: _Shitmed/Mobs/Species/Cybernetics/bishop/bishop_main.rsi
- type: Damageable - type: Damageable
damageContainer: Silicon damageContainer: Silicon
- type: Cybernetics
- type: entity
abstract: true
parent: [ CyberneticPartBase, BaseLeftArm ]
id: LeftArmCyberneticBase
components:
- type: Sprite
state: "l_arm-combined"
- type: Icon
state: "l_arm-combined"
- type: BodyPart - type: BodyPart
baseLayerId: MobCyberneticBishopLArm baseLayerId: MobCyberneticBishopLArm
- type: GenerateChildPart - type: GenerateChildPart
id: LeftHandCybernetic id: LeftHandCybernetic
- type: Cybernetics
- type: Sprite
sprite: _Shitmed/Mobs/Species/Cybernetics/bishop/bishop_main.rsi
state: "l_arm-combined"
- type: entity - type: entity
id: RightArmCybernetic
parent: RightArmHuman
abstract: true abstract: true
parent: [ CyberneticPartBase, BaseRightArm ]
id: RightArmCyberneticBase
components: components:
- type: Damageable - type: Sprite
damageContainer: Silicon state: "r_arm-combined"
- type: Icon
state: "r_arm-combined"
- type: BodyPart - type: BodyPart
baseLayerId: MobCyberneticBishopRArm baseLayerId: MobCyberneticBishopRArm
- type: GenerateChildPart - type: GenerateChildPart
id: RightHandCybernetic id: RightHandCybernetic
- type: Cybernetics
- type: Sprite
sprite: _Shitmed/Mobs/Species/Cybernetics/bishop/bishop_main.rsi
state: "r_arm-combined"
- type: entity - type: entity
id: LeftLegCybernetic
parent: LeftLegHuman
abstract: true abstract: true
parent: [ CyberneticPartBase, BaseLeftLeg ]
id: LeftLegCyberneticBase
components: components:
- type: Damageable - type: Sprite
damageContainer: Silicon state: "l_leg-combined"
- type: Icon
state: "l_leg-combined"
- type: BodyPart - type: BodyPart
baseLayerId: MobCyberneticBishopLLeg baseLayerId: MobCyberneticBishopLLeg
- type: GenerateChildPart - type: GenerateChildPart
id: LeftFootCybernetic id: LeftFootCybernetic
- type: Cybernetics
- type: Sprite
sprite: _Shitmed/Mobs/Species/Cybernetics/bishop/bishop_main.rsi
state: "l_leg-combined"
- type: entity - type: entity
id: RightLegCybernetic
parent: RightLegHuman
abstract: true abstract: true
parent: [ CyberneticPartBase, BaseRightLeg ]
id: RightLegCyberneticBase
components: components:
- type: Damageable - type: Sprite
damageContainer: Silicon state: "r_leg-combined"
- type: Icon
state: "r_leg-combined"
- type: BodyPart - type: BodyPart
baseLayerId: MobCyberneticBishopRLeg baseLayerId: MobCyberneticBishopRLeg
- type: GenerateChildPart - type: GenerateChildPart
id: RightFootCybernetic id: RightFootCybernetic
- type: Cybernetics
- type: Sprite
sprite: _Shitmed/Mobs/Species/Cybernetics/bishop/bishop_main.rsi
state: "r_leg-combined"
- type: entity - type: entity
parent: [ CyberneticPartBase, BaseLeftHand ]
id: LeftHandCybernetic id: LeftHandCybernetic
parent: LeftHandHuman
name: cybernetic left hand name: cybernetic left hand
components: components:
- type: Damageable
damageContainer: Silicon
- type: BodyPart - type: BodyPart
baseLayerId: MobCyberneticBishopLHand baseLayerId: MobCyberneticBishopLHand
- type: Cybernetics
- type: Sprite
sprite: _Shitmed/Mobs/Species/Cybernetics/bishop/bishop_main.rsi
state: "l_hand"
- type: entity - type: entity
parent: [ CyberneticPartBase, BaseRightHand ]
id: RightHandCybernetic id: RightHandCybernetic
parent: RightHandHuman
name: cybernetic right hand name: cybernetic right hand
components: components:
- type: Damageable
damageContainer: Silicon
- type: BodyPart - type: BodyPart
baseLayerId: MobCyberneticBishopRHand baseLayerId: MobCyberneticBishopRHand
- type: Cybernetics
- type: Sprite
sprite: _Shitmed/Mobs/Species/Cybernetics/bishop/bishop_main.rsi
state: "r_hand"
- type: entity - type: entity
parent: [ CyberneticPartBase, BaseLeftFoot ]
id: LeftFootCybernetic id: LeftFootCybernetic
parent: LeftFootHuman
name: cybernetic left foot name: cybernetic left foot
components: components:
- type: Damageable
damageContainer: Silicon
- type: BodyPart - type: BodyPart
baseLayerId: MobCyberneticBishopLFoot baseLayerId: MobCyberneticBishopLFoot
- type: Cybernetics
- type: Sprite
sprite: _Shitmed/Mobs/Species/Cybernetics/bishop/bishop_main.rsi
state: "l_foot"
- type: entity - type: entity
parent: [ CyberneticPartBase, BaseRightFoot ]
id: RightFootCybernetic id: RightFootCybernetic
parent: RightFootHuman
name: cybernetic right foot name: cybernetic right foot
components: components:
- type: Damageable
damageContainer: Silicon
- type: BodyPart - type: BodyPart
baseLayerId: MobCyberneticBishopRFoot baseLayerId: MobCyberneticBishopRFoot
- type: Cybernetics
- type: Sprite
sprite: _Shitmed/Mobs/Species/Cybernetics/bishop/bishop_main.rsi
state: "r_foot"
- type: entity - type: entity
parent: LeftArmCybernetic parent: LeftArmCyberneticBase
id: JawsOfLifeLeftArm id: JawsOfLifeLeftArm
name: J.W.L left arm name: J.W.L left arm
description: A cybernetic left arm with the ability to pry doors open. description: A cybernetic left arm with the ability to pry doors open.
@ -131,7 +112,7 @@
pryPowered: true pryPowered: true
- type: entity - type: entity
parent: RightArmCybernetic parent: RightArmCyberneticBase
id: JawsOfLifeRightArm id: JawsOfLifeRightArm
name: J.W.L right arm name: J.W.L right arm
description: A cybernetic right arm with the ability to pry doors open. description: A cybernetic right arm with the ability to pry doors open.
@ -143,7 +124,7 @@
pryPowered: true pryPowered: true
- type: entity - type: entity
parent: LeftLegCybernetic parent: LeftLegCyberneticBase
id: SpeedLeftLeg id: SpeedLeftLeg
name: S.P.E.E.D left leg name: S.P.E.E.D left leg
description: A cybernetic left leg that allows its wearer to run faster. description: A cybernetic left leg that allows its wearer to run faster.
@ -157,7 +138,7 @@
- type: ProtectedFromStepTriggers - type: ProtectedFromStepTriggers
- type: entity - type: entity
parent: RightLegCybernetic parent: RightLegCyberneticBase
id: SpeedRightLeg id: SpeedRightLeg
name: S.P.E.E.D right leg name: S.P.E.E.D right leg
description: A cybernetic left leg that allows its wearer to run faster. description: A cybernetic left leg that allows its wearer to run faster.

View File

@ -0,0 +1,59 @@
# DO NOT use this as an actual species, its for borg part appearance to Just Work
- type: species
id: Cyborg
name: species-name-human
roundStart: false
prototype: BorgChassisSelectable
sprites: CyborgSprites
defaultSkinTone: "#fff9e2"
markingLimits: MobHumanMarkingLimits
maleFirstNames: names_borg
femaleFirstNames: names_borg
dollPrototype: BorgChassisSelectable
skinColoration: TintedHues
- type: speciesBaseSprites
id: CyborgSprites
sprites:
Head: CyborgHead
Chest: CyborgTorso
LArm: CyborgLArm
RArm: CyborgRArm
LLeg: CyborgLLeg
RLeg: CyborgRLeg
- type: humanoidBaseSprite
id: CyborgHead
baseSprite:
sprite: Objects/Specific/Robotics/cyborg_parts.rsi
state: borg_head
- type: humanoidBaseSprite
id: CyborgTorso
baseSprite:
sprite: Objects/Specific/Robotics/cyborg_parts.rsi
state: borg_chest
- type: humanoidBaseSprite
id: CyborgLLeg
baseSprite:
sprite: Objects/Specific/Robotics/cyborg_parts.rsi
state: borg_l_leg
- type: humanoidBaseSprite
id: CyborgLArm
baseSprite:
sprite: Objects/Specific/Robotics/cyborg_parts.rsi
state: borg_l_arm
- type: humanoidBaseSprite
id: CyborgRLeg
baseSprite:
sprite: Objects/Specific/Robotics/cyborg_parts.rsi
state: borg_r_leg
- type: humanoidBaseSprite
id: CyborgRArm
baseSprite:
sprite: Objects/Specific/Robotics/cyborg_parts.rsi
state: borg_r_arm