diff --git a/Content.Shared/Body/Systems/SharedBodySystem.Organs.cs b/Content.Shared/Body/Systems/SharedBodySystem.Organs.cs index 7065284a1f0..6f68e9f10e0 100644 --- a/Content.Shared/Body/Systems/SharedBodySystem.Organs.cs +++ b/Content.Shared/Body/Systems/SharedBodySystem.Organs.cs @@ -88,6 +88,10 @@ private void RemoveOrgan(Entity organEnt, EntityUid parentPartUi return null; Containers.EnsureContainer(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); parentEnt.Comp.Organs.Add(slotId, slot); return slot; diff --git a/Content.Shared/Body/Systems/SharedBodySystem.Parts.cs b/Content.Shared/Body/Systems/SharedBodySystem.Parts.cs index d0f5b2cd7e2..48b48baf187 100644 --- a/Content.Shared/Body/Systems/SharedBodySystem.Parts.cs +++ b/Content.Shared/Body/Systems/SharedBodySystem.Parts.cs @@ -59,6 +59,11 @@ private void OnMapInit(Entity ent, ref MapInitEvent args) { Containers.EnsureContainer(ent, GetPartSlotContainerId(connection)); } + + foreach (var organ in ent.Comp.Organs.Keys) + { + Containers.EnsureContainer(ent, GetOrganContainerId(organ)); + } } private void OnBodyPartRemove(Entity ent, ref ComponentRemove args) @@ -465,6 +470,10 @@ public bool TryGetParentBodyPart( return null; Containers.EnsureContainer(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); part.Children.Add(slotId, partSlot); Dirty(partUid, part); diff --git a/Content.Shared/_Shitmed/Body/Part/BodyPartAppearanceComponent.cs b/Content.Shared/_Shitmed/Body/Part/BodyPartAppearanceComponent.cs index 2e7da47fa58..a192ead4e1c 100644 --- a/Content.Shared/_Shitmed/Body/Part/BodyPartAppearanceComponent.cs +++ b/Content.Shared/_Shitmed/Body/Part/BodyPartAppearanceComponent.cs @@ -1,8 +1,8 @@ using Content.Shared.Humanoid; using Content.Shared.Humanoid.Prototypes; using Content.Shared.Humanoid.Markings; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; namespace Content.Shared._Shitmed.Body.Part; @@ -23,10 +23,9 @@ public sealed partial class BodyPartAppearanceComponent : Component /// /// ID of this custom base layer. Must be a . - /// I don't actually know if these serializer props are necessary. I just lifted this from MS14 lol. /// - [DataField(customTypeSerializer: typeof(PrototypeIdSerializer)), AutoNetworkedField] - public string? ID { get; set; } + [DataField, AutoNetworkedField] + public ProtoId? ID { get; set; } /// /// Color of this custom base layer. Null implies skin colour if the corresponding is set to match skin. diff --git a/Resources/Prototypes/Body/Parts/animal.yml b/Resources/Prototypes/Body/Parts/animal.yml index 351e2378311..03f765e40fa 100644 --- a/Resources/Prototypes/Body/Parts/animal.yml +++ b/Resources/Prototypes/Body/Parts/animal.yml @@ -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, # only differences for now is that limbs work in pairs, -# they are unextractable and can't be spawned (no surgery on Animals!?). - type: entity - id: PartAnimal - parent: BaseItem - name: "animal body part" abstract: true + parent: BasePart + id: PartAnimalBase components: # yes these sprites dont make sense i dont care its better than them being invisible - type: Sprite sprite: Mobs/Species/Reptilian/parts.rsi - - type: Damageable - damageContainer: OrganicPart # Shitmed - - type: BodyPart - - type: ContainerContainer - containers: - bodypart: !type:Container - ents: [] + - type: Icon + sprite: Mobs/Species/Reptilian/parts.rsi - type: StaticPrice price: 50 - - type: Tag - tags: - - Trash - - type: Gibbable - - type: Extractable - juiceSolution: - reagents: - - ReagentId: Fat - Quantity: 3 - - ReagentId: Blood - Quantity: 10 - type: entity + parent: PartAnimalBase id: HandsAnimal name: animal hands - parent: PartAnimal - categories: [ HideSpawnMenu ] components: - type: Sprite layers: - state: l_hand - state: r_hand + - type: Icon + state: l_hand # cba to make a state for it - type: BodyPart partType: Hand #symmetry: Left slotId: hands # Shitmed - type: entity + parent: PartAnimalBase id: LegsAnimal name: animal legs - parent: PartAnimal - categories: [ HideSpawnMenu ] components: - type: Sprite layers: - state: l_leg - state: r_leg + - type: Icon + state: l_leg # cba to make a state for it - type: BodyPart partType: Leg slotId: legs # Shitmed - type: MovementBodyPart - type: entity + parent: PartAnimalBase id: FeetAnimal name: animal feet - parent: PartAnimal - categories: [ HideSpawnMenu ] components: - type: Sprite layers: - state: r_foot - state: l_foot + - type: Icon + state: l_foot # cba to make a state for it - type: BodyPart partType: Foot slotId: feet # Shitmed - type: entity + parent: [ PartAnimalBase, BaseTorso ] id: TorsoAnimal name: animal torso - parent: PartAnimal - categories: [ HideSpawnMenu ] components: - - type: Sprite - layers: - - state: torso_m - type: BodyPart - partType: Torso - - type: Damageable - damageContainer: Biological - - type: Extractable - juiceSolution: - reagents: - - ReagentId: Fat - Quantity: 10 - - ReagentId: Blood - Quantity: 20 - + # standard organs are good for most animals + children: # most animals have no hands (primate is unused) so just legs by default + legs: + id: legs + type: Leg diff --git a/Resources/Prototypes/Body/Parts/arachnid.yml b/Resources/Prototypes/Body/Parts/arachnid.yml index d275bd91c63..23f76fbfad2 100644 --- a/Resources/Prototypes/Body/Parts/arachnid.yml +++ b/Resources/Prototypes/Body/Parts/arachnid.yml @@ -6,6 +6,8 @@ name: "arachnid body part" abstract: true components: + - type: BodyPart # Shitmed Change + species: Arachnid - type: Extractable juiceSolution: reagents: diff --git a/Resources/Prototypes/Body/Parts/base.yml b/Resources/Prototypes/Body/Parts/base.yml index 81f16b1ede0..e8d1066e3d6 100644 --- a/Resources/Prototypes/Body/Parts/base.yml +++ b/Resources/Prototypes/Body/Parts/base.yml @@ -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 - id: BasePart + abstract: true parent: BaseItem + id: BasePartInorganic name: "body part" - abstract: true components: + - type: Icon + sprite: Mobs/Species/Human/parts.rsi - type: Damageable - damageContainer: OrganicPart # Shitmed Change + damageContainer: Inorganic # Shitmed Change - 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: ContainerContainer containers: @@ -16,99 +28,72 @@ price: 100 - type: Tag tags: - - 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 + - Trash - type: entity - id: BaseTorso - name: "torso" - parent: BasePart abstract: true + id: BaseTorsoInorganic + name: "torso" components: + - type: Sprite + state: "torso_m" + - type: Icon + state: "torso_m" - type: BodyPart partType: Torso # Shitmed Change Start toolName: "a torso" 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 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 + abstract: true id: BaseHead name: "head" - parent: BasePart - abstract: true components: + - type: Sprite + state: "head_m" + - type: Icon + state: "head_m" - type: BodyPart partType: Head toolName: "a head" # Shitmed Change vital: true + organs: # Shitmed Change + brain: + id: brain + eyes: + id: eyes - type: Input context: "ghost" - type: Tag @@ -116,89 +101,130 @@ - Head - type: entity + abstract: true id: BaseLeftArm name: "left arm" - parent: BasePart - abstract: true components: + - type: Sprite + state: "l_arm" + - type: Icon + state: "l_arm" - type: BodyPart partType: Arm symmetry: Left toolName: "a left arm" # Shitmed Change + children: # Shitmed Change + left hand: + id: left hand + type: Hand - type: entity + abstract: true id: BaseRightArm name: "right arm" - parent: BasePart - abstract: true components: + - type: Sprite + state: "r_arm" + - type: Icon + state: "r_arm" - type: BodyPart partType: Arm symmetry: Right toolName: "a right arm" # Shitmed Change + children: # Shitmed Change + right hand: + id: right hand + type: Hand - type: entity + abstract: true id: BaseLeftHand name: "left hand" - parent: BasePart - abstract: true 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 + abstract: true id: BaseRightHand name: "right hand" - parent: BasePart - abstract: true 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 + abstract: true id: BaseLeftLeg name: "left leg" - parent: BasePart - abstract: true components: + - type: Sprite + state: "l_leg" + - type: Icon + state: "l_leg" - 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: entity + abstract: true id: BaseRightLeg name: "right leg" - parent: BasePart - abstract: true components: + - type: Sprite + state: "r_leg" + - type: Icon + state: "r_leg" - 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: entity + abstract: true id: BaseLeftFoot name: "left foot" - parent: BasePart - abstract: true 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 + abstract: true id: BaseRightFoot name: "right foot" - parent: BasePart - abstract: true components: + - type: Sprite + state: "r_foot" + - type: Icon + state: "r_foot" - type: BodyPart partType: Foot symmetry: Right diff --git a/Resources/Prototypes/Body/Parts/diona.yml b/Resources/Prototypes/Body/Parts/diona.yml index 0ef08fa3615..cc1382d0d60 100644 --- a/Resources/Prototypes/Body/Parts/diona.yml +++ b/Resources/Prototypes/Body/Parts/diona.yml @@ -6,6 +6,10 @@ components: - type: Sprite sprite: Mobs/Species/Diona/parts.rsi + - type: Icon # Shitmed Change + sprite: Mobs/Species/Diona/parts.rsi + - type: BodyPart # Shitmed Change + species: Diona - type: entity id: TorsoDiona diff --git a/Resources/Prototypes/Body/Parts/gingerbread.yml b/Resources/Prototypes/Body/Parts/gingerbread.yml index f95e66145be..5f1d1d4eb87 100644 --- a/Resources/Prototypes/Body/Parts/gingerbread.yml +++ b/Resources/Prototypes/Body/Parts/gingerbread.yml @@ -4,6 +4,10 @@ name: "gingerbread body part" abstract: true components: + - type: Icon # Shitmed Change + sprite: Mobs/Species/Gingerbread/parts.rsi + - type: BodyPart # Shitmed Change + species: Gingerbread - type: Extractable juiceSolution: reagents: diff --git a/Resources/Prototypes/Body/Parts/human.yml b/Resources/Prototypes/Body/Parts/human.yml index a1510fcdbb1..e2427106611 100644 --- a/Resources/Prototypes/Body/Parts/human.yml +++ b/Resources/Prototypes/Body/Parts/human.yml @@ -6,6 +6,10 @@ name: "human body part" abstract: true components: + - type: Icon # Shitmed Change + sprite: Mobs/Species/Human/parts.rsi + - type: BodyPart # Shitmed Change + species: Human - type: Extractable juiceSolution: reagents: diff --git a/Resources/Prototypes/Body/Parts/moth.yml b/Resources/Prototypes/Body/Parts/moth.yml index bb96430383a..de11ed27ca2 100644 --- a/Resources/Prototypes/Body/Parts/moth.yml +++ b/Resources/Prototypes/Body/Parts/moth.yml @@ -6,6 +6,10 @@ name: "moth body part" abstract: true components: + - type: Icon # Shitmed Change + sprite: Mobs/Species/Moth/parts.rsi + - type: BodyPart # Shitmed Change + species: Moth - type: Extractable juiceSolution: reagents: diff --git a/Resources/Prototypes/Body/Parts/rat.yml b/Resources/Prototypes/Body/Parts/rat.yml index bd51e006f70..b80adf534ac 100644 --- a/Resources/Prototypes/Body/Parts/rat.yml +++ b/Resources/Prototypes/Body/Parts/rat.yml @@ -3,7 +3,7 @@ - type: entity id: TorsoRat name: "animal torso" - parent: PartAnimal + parent: TorsoAnimal # Shitmed Change categories: [ HideSpawnMenu ] components: - type: BodyPart @@ -18,3 +18,6 @@ - type: Sprite sprite: Mobs/Animals/mouse.rsi state: splat-0 + - type: Icon # Shitmed Change + sprite: Mobs/Animals/mouse.rsi + state: splat-0 diff --git a/Resources/Prototypes/Body/Parts/reptilian.yml b/Resources/Prototypes/Body/Parts/reptilian.yml index a299636352a..644c19ceca9 100644 --- a/Resources/Prototypes/Body/Parts/reptilian.yml +++ b/Resources/Prototypes/Body/Parts/reptilian.yml @@ -6,6 +6,10 @@ name: "reptilian body part" abstract: true components: + - type: Icon # Shitmed Change + sprite: Mobs/Species/Reptilian/parts.rsi + - type: BodyPart # Shitmed Change + species: Reptilian - type: Extractable juiceSolution: reagents: diff --git a/Resources/Prototypes/Body/Parts/silicon.yml b/Resources/Prototypes/Body/Parts/silicon.yml index 2d30fe9fbbd..c23fea484a2 100644 --- a/Resources/Prototypes/Body/Parts/silicon.yml +++ b/Resources/Prototypes/Body/Parts/silicon.yml @@ -1,24 +1,20 @@ +# Shitmed Change: this file is mostly reorganized by shitmed to use composition - type: entity - id: PartSilicon - parent: BaseItem abstract: true + parent: BasePartInorganic + id: PartSiliconBase components: - type: Sprite sprite: Objects/Specific/Robotics/cyborg_parts.rsi - type: Icon sprite: Objects/Specific/Robotics/cyborg_parts.rsi - - type: Damageable - damageContainer: Inorganic - - type: BodyPart - - type: ContainerContainer - containers: - bodypart: !type:Container - ents: [] - type: StaticPrice price: 5 + - type: BodyPart # Shitmed Change + species: Cyborg - type: Tag tags: - - Trash + - Trash - type: PhysicalComposition materialComposition: Steel: 25 @@ -26,28 +22,12 @@ guides: - Cyborgs - 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 + parent: [ PartSiliconBase, BaseLeftArm ] id: LeftArmBorg - parent: PartSilicon name: cyborg left arm 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 state: borg_l_arm - type: Icon @@ -59,18 +39,10 @@ - BorgLArm - type: entity + parent: [ PartSiliconBase, BaseRightArm ] id: RightArmBorg - parent: PartSilicon name: cyborg right arm 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 state: borg_r_arm - type: Icon @@ -82,19 +54,10 @@ - BorgRArm - type: entity + parent: [ PartSiliconBase, BaseLeftLeg ] id: LeftLegBorg - parent: PartSilicon name: cyborg left leg 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 state: borg_l_leg - type: Icon @@ -106,19 +69,10 @@ - BorgLLeg - type: entity + parent: [ PartSiliconBase, BaseRightLeg ] id: RightLegBorg - parent: PartSilicon name: cyborg right leg 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 state: borg_r_leg - type: Icon @@ -130,13 +84,10 @@ - BorgRLeg - type: entity + parent: [ PartSiliconBase, BaseHead ] id: LightHeadBorg - parent: PartSilicon name: cyborg head components: - - type: BodyPart - partType: Head - toolName: "a head" # Shitmed Change - type: Sprite state: borg_head - type: Icon @@ -147,13 +98,10 @@ - BorgHead - type: entity + parent: [ PartSiliconBase, BaseTorsoInorganic ] id: TorsoBorg - parent: PartSilicon name: cyborg torso components: - - type: BodyPart - partType: Torso - toolName: "a torso" # Shitmed Change - type: Sprite state: borg_chest - type: Icon diff --git a/Resources/Prototypes/Body/Parts/skeleton.yml b/Resources/Prototypes/Body/Parts/skeleton.yml index ceb95fcc44e..015dbced18b 100644 --- a/Resources/Prototypes/Body/Parts/skeleton.yml +++ b/Resources/Prototypes/Body/Parts/skeleton.yml @@ -1,196 +1,106 @@ -# TODO BODY: Part damage +# this file is fully reorganized by shitmed - type: entity - id: PartSkeleton - parent: BaseItem - name: "skeleton body part" abstract: true + parent: BasePartInorganic + id: PartSkeletonBase + name: skeleton body part components: - - type: Damageable - damageContainer: OrganicPart # Shitmed Change + - type: Sprite + 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: ContainerContainer - containers: - bodypart: !type:Container - ents: [] + species: Skeleton # Shitmed Change - type: StaticPrice price: 20 - - type: Gibbable - type: Tag tags: - - Trash + - Trash - type: entity + parent: [ PartSkeletonBase, BaseTorsoInorganic ] id: TorsoSkeleton - 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 + name: skeleton torso - type: entity + parent: [ PartSkeletonBase, BaseHead ] id: HeadSkeleton - name: "skull" + name: skull description: Alas poor Yorick... - parent: PartSkeleton components: - - type: Sprite - sprite: Mobs/Species/Skeleton/parts.rsi - state: "skull_icon" - scale: 0.5, 0.5 # DeltaV - Scale down sprite because it looks too big - - type: Icon - sprite: Mobs/Species/Skeleton/parts.rsi - state: "skull_icon" - - type: BodyPart - partType: Head - - type: Input - context: "human" - - type: Speech - speechVerb: Skeleton - - type: SkeletonAccent - - type: Actions - - type: Vocal - sounds: - Male: Skeleton - Female: Skeleton - Unsexed: Skeleton - - type: Emoting - - type: Grammar - attributes: - proper: true - - type: Examiner - - type: DoAfter - - type: MobState - allowedStates: - - Alive - - type: Tag - tags: - - MindTransferTarget - - Head + - type: Sprite + state: "skull_icon" + scale: 0.5, 0.5 # DeltaV - Scale down sprite because it looks too big + - type: Icon + state: "skull_icon" + - type: Input + context: "human" + - type: Speech + speechVerb: Skeleton + - type: SkeletonAccent + - type: Actions + - type: Vocal + sounds: + Male: Skeleton + Female: Skeleton + Unsexed: Skeleton + - type: Emoting + - type: Grammar + attributes: + proper: true + - type: Examiner + - type: DoAfter + - type: MobState + allowedStates: + - Alive + - type: Tag + tags: + - MindTransferTarget + - Head - type: entity + parent: [ PartSkeletonBase, BaseLeftArm ] id: LeftArmSkeleton 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 + parent: [ PartSkeletonBase, BaseRightArm ] id: RightArmSkeleton 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 + parent: [ PartSkeletonBase, BaseLeftHand ] id: LeftHandSkeleton 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 + parent: [ PartSkeletonBase, BaseRightHand ] id: RightHandSkeleton 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 + parent: [ PartSkeletonBase, BaseLeftLeg ] id: LeftLegSkeleton 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 + parent: [ PartSkeletonBase, BaseRightLeg ] id: RightLegSkeleton 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 + parent: [ PartSkeletonBase, BaseLeftFoot ] id: LeftFootSkeleton 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 + parent: [ PartSkeletonBase, BaseRightFoot ] id: RightFootSkeleton 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 diff --git a/Resources/Prototypes/Body/Parts/slime.yml b/Resources/Prototypes/Body/Parts/slime.yml index 4b0e94b008f..3f5932a8949 100644 --- a/Resources/Prototypes/Body/Parts/slime.yml +++ b/Resources/Prototypes/Body/Parts/slime.yml @@ -1,96 +1,63 @@ -# TODO BODY: Part damage +# Shitmed Change: Removed components from each part, instead using composition for sprites - type: entity id: PartSlime parent: [BaseItem, BasePart] name: "slime body part" 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 id: TorsoSlime name: "slime torso" parent: [PartSlime, BaseTorso] - components: - - type: Sprite - sprite: Mobs/Species/Slime/parts.rsi - state: "torso_m" - type: entity id: HeadSlime name: "slime head" parent: [PartSlime, BaseHead] - components: - - type: Sprite - sprite: Mobs/Species/Slime/parts.rsi - state: "head_m" - + - type: entity id: LeftArmSlime name: "left slime arm" parent: [PartSlime, BaseLeftArm] - components: - - type: Sprite - sprite: Mobs/Species/Slime/parts.rsi - state: "l_arm" - type: entity id: RightArmSlime name: "right slime arm" parent: [PartSlime, BaseRightArm] - components: - - type: Sprite - sprite: Mobs/Species/Slime/parts.rsi - state: "r_arm" - type: entity id: LeftHandSlime name: "left slime hand" parent: [PartSlime, BaseLeftHand] - components: - - type: Sprite - sprite: Mobs/Species/Slime/parts.rsi - state: "l_hand" - type: entity id: RightHandSlime name: "right slime hand" parent: [PartSlime, BaseRightHand] - components: - - type: Sprite - sprite: Mobs/Species/Slime/parts.rsi - state: "r_hand" - type: entity id: LeftLegSlime name: "left slime leg" parent: [PartSlime, BaseLeftLeg] - components: - - type: Sprite - sprite: Mobs/Species/Slime/parts.rsi - state: "l_leg" - type: entity id: RightLegSlime name: "right slime leg" parent: [PartSlime, BaseRightLeg] - components: - - type: Sprite - sprite: Mobs/Species/Slime/parts.rsi - state: "r_leg" - type: entity id: LeftFootSlime name: "left slime foot" parent: [PartSlime, BaseLeftFoot] - components: - - type: Sprite - sprite: Mobs/Species/Slime/parts.rsi - state: "l_foot" - type: entity id: RightFootSlime name: "right slime foot" parent: [PartSlime, BaseRightFoot] - components: - - type: Sprite - sprite: Mobs/Species/Slime/parts.rsi - state: "r_foot" diff --git a/Resources/Prototypes/Body/Parts/vox.yml b/Resources/Prototypes/Body/Parts/vox.yml index 1610d67304b..dfbd511fe66 100644 --- a/Resources/Prototypes/Body/Parts/vox.yml +++ b/Resources/Prototypes/Body/Parts/vox.yml @@ -1,279 +1,73 @@ -# TODO: Add descriptions (many) -# TODO BODY: Part damage +# Shitmed Change: This file was fully reorganized to use composition - type: entity - id: PartVox - parent: BaseItem - name: "vox body part" abstract: true + parent: BasePart # Shitmed Change + id: PartVoxBase + name: "vox body part" components: - - type: Damageable - damageContainer: OrganicPart # Shitmed Change - - type: BodyPart - - type: ContainerContainer - containers: - bodypart: !type:Container - 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: Sprite + sprite: Mobs/Species/Vox/parts.rsi + - type: Icon + sprite: Mobs/Species/Vox/parts.rsi + - type: BodyPart # Shitmed Change + species: Vox - type: entity + parent: [ PartVoxBase, BaseTorso ] id: TorsoVox name: "vox torso" - parent: PartVox components: - - type: Sprite - sprite: Mobs/Species/Vox/parts.rsi - state: "torso" - - type: Icon - 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: Sprite + state: "torso" + - type: Icon + state: "torso" - type: entity + parent: [ PartVoxBase, BaseHead ] id: HeadVox name: "vox head" - parent: PartVox components: - - type: Sprite - sprite: Mobs/Species/Vox/parts.rsi - state: "head" - - type: Icon - 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: Sprite + state: "head" + - type: Icon + state: "head" - type: entity + parent: [ PartVoxBase, BaseLeftArm ] id: LeftArmVox 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 + parent: [ PartVoxBase, BaseRightArm ] id: RightArmVox 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 + parent: [ PartVoxBase, BaseLeftHand ] id: LeftHandVox 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 + parent: [ PartVoxBase, BaseRightHand ] id: RightHandVox 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 + parent: [ PartVoxBase, BaseLeftLeg ] id: LeftLegVox 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 + parent: [ PartVoxBase, BaseRightLeg ] id: RightLegVox 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 + parent: [ PartVoxBase, BaseLeftFoot ] id: LeftFootVox 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 + parent: [ PartVoxBase, BaseRightFoot ] id: RightFootVox 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 diff --git a/Resources/Prototypes/_DV/Body/Parts/harpy.yml b/Resources/Prototypes/_DV/Body/Parts/harpy.yml index df4452b904c..28b050b5e5d 100644 --- a/Resources/Prototypes/_DV/Body/Parts/harpy.yml +++ b/Resources/Prototypes/_DV/Body/Parts/harpy.yml @@ -1,257 +1,61 @@ - type: entity - id: PartHarpy - parent: BaseItem - name: "harpy body part" abstract: true - components: - - type: Damageable - damageContainer: OrganicPart # Shitmed Change - - type: BodyPart - - type: ContainerContainer - 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 - id: TorsoHarpy - name: "harpy torso" - parent: PartHarpy + parent: BasePart + id: PartHarpyBase 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 + species: Harpy - type: entity + parent: [ PartHarpyBase, BaseTorso ] + id: TorsoHarpy + name: "harpy torso" + +- type: entity + parent: [ PartHarpyBase, BaseHead ] id: HeadHarpy 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 + parent: [ PartHarpyBase, BaseLeftArm ] id: LeftArmHarpy 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 + parent: [ PartHarpyBase, BaseRightArm ] id: RightArmHarpy 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 + parent: [ PartHarpyBase, BaseLeftHand ] id: LeftHandHarpy 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 + parent: [ PartHarpyBase, BaseRightHand ] id: RightHandHarpy 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 + parent: [ PartHarpyBase, BaseLeftLeg ] id: LeftLegHarpy 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 + parent: [ PartHarpyBase, BaseRightLeg ] id: RightLegHarpy 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 + parent: [ PartHarpyBase, BaseLeftFoot ] id: LeftFootHarpy 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 + parent: [ PartHarpyBase, BaseRightFoot ] id: RightFootHarpy 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 diff --git a/Resources/Prototypes/_DV/Body/Parts/rodentia.yml b/Resources/Prototypes/_DV/Body/Parts/rodentia.yml index b8eec27314d..50aecc12f47 100644 --- a/Resources/Prototypes/_DV/Body/Parts/rodentia.yml +++ b/Resources/Prototypes/_DV/Body/Parts/rodentia.yml @@ -1,242 +1,61 @@ - type: entity - id: PartRodentia - parent: BaseItem - name: "rodentia body part" abstract: true + parent: BasePart + id: PartRodentiaBase components: - type: Sprite sprite: _DV/Mobs/Species/Rodentia/parts.rsi - type: Icon sprite: _DV/Mobs/Species/Rodentia/parts.rsi - - type: Damageable - damageContainer: OrganicPart # Shitmed Change - type: BodyPart - - type: ContainerContainer - 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 + species: Rodentia - type: entity + parent: [ PartRodentiaBase, BaseTorso ] id: TorsoRodentia 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 + parent: [ PartRodentiaBase, BaseHead ] id: HeadRodentia 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 + parent: [ PartRodentiaBase, BaseLeftArm ] id: LeftArmRodentia 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 + parent: [ PartRodentiaBase, BaseRightArm ] id: RightArmRodentia 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 + parent: [ PartRodentiaBase, BaseLeftHand ] id: LeftHandRodentia 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 + parent: [ PartRodentiaBase, BaseRightHand ] id: RightHandRodentia 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 + parent: [ PartRodentiaBase, BaseLeftLeg ] id: LeftLegRodentia 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 + parent: [ PartRodentiaBase, BaseRightLeg ] id: RightLegRodentia 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 + parent: [ PartRodentiaBase, BaseLeftFoot ] id: LeftFootRodentia 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 + parent: [ PartRodentiaBase, BaseRightFoot ] id: RightFootRodentia 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 diff --git a/Resources/Prototypes/_DV/Body/Parts/vulpkanin.yml b/Resources/Prototypes/_DV/Body/Parts/vulpkanin.yml index a2fe99bfbf5..5a4a6e8753a 100644 --- a/Resources/Prototypes/_DV/Body/Parts/vulpkanin.yml +++ b/Resources/Prototypes/_DV/Body/Parts/vulpkanin.yml @@ -1,270 +1,61 @@ -# TODO: Add descriptions (many) -# TODO BODY: Part damage - type: entity - id: PartVulpkanin - parent: BaseItem - name: "vulpkanin body part" abstract: true - components: - - type: Damageable - damageContainer: OrganicPart # Shitmed Change - - type: BodyPart - - type: ContainerContainer - 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 - id: TorsoVulpkanin - name: "vulpkanin torso" - parent: PartVulpkanin + parent: BasePart + id: PartVulpkaninBase 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 + species: Vulpkanin + +- type: entity + parent: [ PartVulpkaninBase, BaseTorso ] + id: TorsoVulpkanin + name: "vulpkanin torso" - type: entity + parent: [ PartVulpkaninBase, BaseHead ] id: HeadVulpkanin 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 + parent: [ PartVulpkaninBase, BaseLeftArm ] id: LeftArmVulpkanin 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 + parent: [ PartVulpkaninBase, BaseRightArm ] id: RightArmVulpkanin 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 + parent: [ PartVulpkaninBase, BaseLeftHand ] id: LeftHandVulpkanin 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 + parent: [ PartVulpkaninBase, BaseRightHand ] id: RightHandVulpkanin 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 + parent: [ PartVulpkaninBase, BaseLeftLeg ] id: LeftLegVulpkanin 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 + parent: [ PartVulpkaninBase, BaseRightLeg ] id: RightLegVulpkanin 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 + parent: [ PartVulpkaninBase, BaseLeftFoot ] id: LeftFootVulpkanin 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 + parent: [ PartVulpkaninBase, BaseRightFoot ] id: RightFootVulpkanin 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 diff --git a/Resources/Prototypes/_Shitmed/Body/Parts/Animal/carp.yml b/Resources/Prototypes/_Shitmed/Body/Parts/Animal/carp.yml new file mode 100644 index 00000000000..221148f33ff --- /dev/null +++ b/Resources/Prototypes/_Shitmed/Body/Parts/Animal/carp.yml @@ -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 diff --git a/Resources/Prototypes/_Shitmed/Body/Organs/Animal/kobold.yml b/Resources/Prototypes/_Shitmed/Body/Parts/Animal/kobold.yml similarity index 84% rename from Resources/Prototypes/_Shitmed/Body/Organs/Animal/kobold.yml rename to Resources/Prototypes/_Shitmed/Body/Parts/Animal/kobold.yml index 5493846e353..7036ebdbab1 100644 --- a/Resources/Prototypes/_Shitmed/Body/Organs/Animal/kobold.yml +++ b/Resources/Prototypes/_Shitmed/Body/Parts/Animal/kobold.yml @@ -1,11 +1,12 @@ # TODO: Add descriptions (many) - type: entity - id: PartKobold - parent: [BaseItem, BasePart] - name: "kobold body part" abstract: true + parent: BasePart + id: PartKobold components: + - type: Sprite + sprite: Mobs/Animals/kobold.rsi - type: Extractable juiceSolution: reagents: @@ -15,12 +16,11 @@ Quantity: 10 - type: entity + parent: [PartKobold, BaseTorso] id: TorsoKobold name: "kobold torso" - parent: [PartKobold, BaseTorso] components: - type: Sprite - sprite: Mobs/Animals/kobold.rsi state: "torso_m" - type: Extractable juiceSolution: @@ -31,12 +31,11 @@ Quantity: 20 - type: entity + parent: [PartKobold, BaseHead] id: HeadKobold name: "kobold head" - parent: [PartKobold, BaseHead] components: - type: Sprite - sprite: Mobs/Animals/kobold.rsi state: "head_m" - type: Extractable juiceSolution: @@ -47,73 +46,65 @@ Quantity: 10 - type: entity + parent: [PartKobold, BaseLeftArm] id: LeftArmKobold name: "left kobold arm" - parent: [PartKobold, BaseLeftArm] components: - type: Sprite - sprite: Mobs/Animals/kobold.rsi state: "l_arm" - type: entity + parent: [PartKobold, BaseRightArm] id: RightArmKobold name: "right kobold arm" - parent: [PartKobold, BaseRightArm] components: - type: Sprite - sprite: Mobs/Animals/kobold.rsi state: "r_arm" - type: entity + parent: [PartKobold, BaseLeftHand] id: LeftHandKobold name: "left kobold hand" - parent: [PartKobold, BaseLeftHand] components: - type: Sprite - sprite: Mobs/Animals/kobold.rsi state: "l_hand" - type: entity + parent: [PartKobold, BaseRightHand] id: RightHandKobold name: "right kobold hand" - parent: [PartKobold, BaseRightHand] components: - type: Sprite - sprite: Mobs/Animals/kobold.rsi state: "r_hand" - type: entity + parent: [PartKobold, BaseLeftLeg] id: LeftLegKobold name: "left kobold leg" - parent: [PartKobold, BaseLeftLeg] components: - type: Sprite - sprite: Mobs/Animals/kobold.rsi state: "l_leg" - type: entity + parent: [PartKobold, BaseRightLeg] id: RightLegKobold name: "right kobold leg" - parent: [PartKobold, BaseRightLeg] components: - type: Sprite - sprite: Mobs/Animals/kobold.rsi state: "r_leg" - type: entity + parent: [PartKobold, BaseLeftFoot] id: LeftFootKobold name: "left kobold foot" - parent: [PartKobold, BaseLeftFoot] components: - type: Sprite - sprite: Mobs/Animals/kobold.rsi state: "l_foot" - type: entity + parent: [PartKobold, BaseRightFoot] id: RightFootKobold name: "right kobold foot" - parent: [PartKobold, BaseRightFoot] components: - type: Sprite - sprite: Mobs/Animals/kobold.rsi state: "r_foot" diff --git a/Resources/Prototypes/_Shitmed/Body/Organs/Animal/monkey.yml b/Resources/Prototypes/_Shitmed/Body/Parts/Animal/monkey.yml similarity index 84% rename from Resources/Prototypes/_Shitmed/Body/Organs/Animal/monkey.yml rename to Resources/Prototypes/_Shitmed/Body/Parts/Animal/monkey.yml index 01b8aa4de8a..dfd8199b381 100644 --- a/Resources/Prototypes/_Shitmed/Body/Organs/Animal/monkey.yml +++ b/Resources/Prototypes/_Shitmed/Body/Parts/Animal/monkey.yml @@ -1,11 +1,12 @@ # TODO: Add descriptions (many) - type: entity - id: PartMonkey - parent: [BaseItem, BasePart] - name: "monkey body part" abstract: true + parent: BasePart + id: PartMonkey components: + - type: Sprite + sprite: Mobs/Animals/monkey.rsi - type: Extractable juiceSolution: reagents: @@ -15,12 +16,11 @@ Quantity: 10 - type: entity + parent: [PartMonkey, BaseTorso] id: TorsoMonkey name: "monkey torso" - parent: [PartMonkey, BaseTorso] components: - type: Sprite - sprite: Mobs/Animals/monkey.rsi state: "torso_m" - type: Extractable juiceSolution: @@ -31,12 +31,11 @@ Quantity: 20 - type: entity + parent: [PartMonkey, BaseHead] id: HeadMonkey name: "monkey head" - parent: [PartMonkey, BaseHead] components: - type: Sprite - sprite: Mobs/Animals/monkey.rsi state: "head_m" - type: Extractable juiceSolution: @@ -47,73 +46,65 @@ Quantity: 10 - type: entity + parent: [PartMonkey, BaseLeftArm] id: LeftArmMonkey name: "left monkey arm" - parent: [PartMonkey, BaseLeftArm] components: - type: Sprite - sprite: Mobs/Animals/monkey.rsi state: "l_arm" - type: entity + parent: [PartMonkey, BaseRightArm] id: RightArmMonkey name: "right monkey arm" - parent: [PartMonkey, BaseRightArm] components: - type: Sprite - sprite: Mobs/Animals/monkey.rsi state: "r_arm" - type: entity + parent: [PartMonkey, BaseLeftHand] id: LeftHandMonkey name: "left monkey hand" - parent: [PartMonkey, BaseLeftHand] components: - type: Sprite - sprite: Mobs/Animals/monkey.rsi state: "l_hand" - type: entity + parent: [PartMonkey, BaseRightHand] id: RightHandMonkey name: "right monkey hand" - parent: [PartMonkey, BaseRightHand] components: - type: Sprite - sprite: Mobs/Animals/monkey.rsi state: "r_hand" - type: entity + parent: [PartMonkey, BaseLeftLeg] id: LeftLegMonkey name: "left monkey leg" - parent: [PartMonkey, BaseLeftLeg] components: - type: Sprite - sprite: Mobs/Animals/monkey.rsi state: "l_leg" - type: entity + parent: [PartMonkey, BaseRightLeg] id: RightLegMonkey name: "right monkey leg" - parent: [PartMonkey, BaseRightLeg] components: - type: Sprite - sprite: Mobs/Animals/monkey.rsi state: "r_leg" - type: entity + parent: [PartMonkey, BaseLeftFoot] id: LeftFootMonkey name: "left monkey foot" - parent: [PartMonkey, BaseLeftFoot] components: - type: Sprite - sprite: Mobs/Animals/monkey.rsi state: "l_foot" - type: entity + parent: [PartMonkey, BaseRightFoot] id: RightFootMonkey name: "right monkey foot" - parent: [PartMonkey, BaseRightFoot] components: - type: Sprite - sprite: Mobs/Animals/monkey.rsi state: "r_foot" diff --git a/Resources/Prototypes/_Shitmed/Body/Parts/animal.yml b/Resources/Prototypes/_Shitmed/Body/Parts/animal.yml index 91c452ee961..2c89f9a8bfa 100644 --- a/Resources/Prototypes/_Shitmed/Body/Parts/animal.yml +++ b/Resources/Prototypes/_Shitmed/Body/Parts/animal.yml @@ -1,48 +1,9 @@ # Monkey head for borging/transplanting pun pun - type: entity - parent: [PartAnimal, BaseHead] + parent: [PartAnimalBase, BaseHead] id: HeadAnimal name: animal head - categories: [ HideSpawnMenu ] components: - type: Sprite layers: - 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 diff --git a/Resources/Prototypes/_Shitmed/Body/Parts/base.yml b/Resources/Prototypes/_Shitmed/Body/Parts/base.yml new file mode 100644 index 00000000000..111a3adbda1 --- /dev/null +++ b/Resources/Prototypes/_Shitmed/Body/Parts/base.yml @@ -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 diff --git a/Resources/Prototypes/_Shitmed/Body/Parts/cybernetic.yml b/Resources/Prototypes/_Shitmed/Body/Parts/cybernetic.yml index c4298ed57c6..e42fd277a52 100644 --- a/Resources/Prototypes/_Shitmed/Body/Parts/cybernetic.yml +++ b/Resources/Prototypes/_Shitmed/Body/Parts/cybernetic.yml @@ -1,125 +1,106 @@ - type: entity - id: LeftArmCybernetic - parent: LeftArmHuman abstract: true + parent: BasePartInorganic + id: CyberneticPartBase 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 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 baseLayerId: MobCyberneticBishopLArm - type: GenerateChildPart id: LeftHandCybernetic - - type: Cybernetics - - type: Sprite - sprite: _Shitmed/Mobs/Species/Cybernetics/bishop/bishop_main.rsi - state: "l_arm-combined" - type: entity - id: RightArmCybernetic - parent: RightArmHuman abstract: true + parent: [ CyberneticPartBase, BaseRightArm ] + id: RightArmCyberneticBase components: - - type: Damageable - damageContainer: Silicon + - type: Sprite + state: "r_arm-combined" + - type: Icon + state: "r_arm-combined" - type: BodyPart baseLayerId: MobCyberneticBishopRArm - type: GenerateChildPart id: RightHandCybernetic - - type: Cybernetics - - type: Sprite - sprite: _Shitmed/Mobs/Species/Cybernetics/bishop/bishop_main.rsi - state: "r_arm-combined" - type: entity - id: LeftLegCybernetic - parent: LeftLegHuman abstract: true + parent: [ CyberneticPartBase, BaseLeftLeg ] + id: LeftLegCyberneticBase components: - - type: Damageable - damageContainer: Silicon + - type: Sprite + state: "l_leg-combined" + - type: Icon + state: "l_leg-combined" - type: BodyPart baseLayerId: MobCyberneticBishopLLeg - type: GenerateChildPart id: LeftFootCybernetic - - type: Cybernetics - - type: Sprite - sprite: _Shitmed/Mobs/Species/Cybernetics/bishop/bishop_main.rsi - state: "l_leg-combined" - type: entity - id: RightLegCybernetic - parent: RightLegHuman abstract: true + parent: [ CyberneticPartBase, BaseRightLeg ] + id: RightLegCyberneticBase components: - - type: Damageable - damageContainer: Silicon + - type: Sprite + state: "r_leg-combined" + - type: Icon + state: "r_leg-combined" - type: BodyPart baseLayerId: MobCyberneticBishopRLeg - type: GenerateChildPart id: RightFootCybernetic - - type: Cybernetics - - type: Sprite - sprite: _Shitmed/Mobs/Species/Cybernetics/bishop/bishop_main.rsi - state: "r_leg-combined" - type: entity + parent: [ CyberneticPartBase, BaseLeftHand ] id: LeftHandCybernetic - parent: LeftHandHuman name: cybernetic left hand components: - - type: Damageable - damageContainer: Silicon - type: BodyPart baseLayerId: MobCyberneticBishopLHand - - type: Cybernetics - - type: Sprite - sprite: _Shitmed/Mobs/Species/Cybernetics/bishop/bishop_main.rsi - state: "l_hand" - type: entity + parent: [ CyberneticPartBase, BaseRightHand ] id: RightHandCybernetic - parent: RightHandHuman name: cybernetic right hand components: - - type: Damageable - damageContainer: Silicon - type: BodyPart baseLayerId: MobCyberneticBishopRHand - - type: Cybernetics - - type: Sprite - sprite: _Shitmed/Mobs/Species/Cybernetics/bishop/bishop_main.rsi - state: "r_hand" - type: entity + parent: [ CyberneticPartBase, BaseLeftFoot ] id: LeftFootCybernetic - parent: LeftFootHuman name: cybernetic left foot components: - - type: Damageable - damageContainer: Silicon - type: BodyPart baseLayerId: MobCyberneticBishopLFoot - - type: Cybernetics - - type: Sprite - sprite: _Shitmed/Mobs/Species/Cybernetics/bishop/bishop_main.rsi - state: "l_foot" - type: entity + parent: [ CyberneticPartBase, BaseRightFoot ] id: RightFootCybernetic - parent: RightFootHuman name: cybernetic right foot components: - - type: Damageable - damageContainer: Silicon - type: BodyPart baseLayerId: MobCyberneticBishopRFoot - - type: Cybernetics - - type: Sprite - sprite: _Shitmed/Mobs/Species/Cybernetics/bishop/bishop_main.rsi - state: "r_foot" - type: entity - parent: LeftArmCybernetic + parent: LeftArmCyberneticBase id: JawsOfLifeLeftArm name: J.W.L left arm description: A cybernetic left arm with the ability to pry doors open. @@ -131,7 +112,7 @@ pryPowered: true - type: entity - parent: RightArmCybernetic + parent: RightArmCyberneticBase id: JawsOfLifeRightArm name: J.W.L right arm description: A cybernetic right arm with the ability to pry doors open. @@ -143,7 +124,7 @@ pryPowered: true - type: entity - parent: LeftLegCybernetic + parent: LeftLegCyberneticBase id: SpeedLeftLeg name: S.P.E.E.D left leg description: A cybernetic left leg that allows its wearer to run faster. @@ -157,7 +138,7 @@ - type: ProtectedFromStepTriggers - type: entity - parent: RightLegCybernetic + parent: RightLegCyberneticBase id: SpeedRightLeg name: S.P.E.E.D right leg description: A cybernetic left leg that allows its wearer to run faster. diff --git a/Resources/Prototypes/_Shitmed/Species/cyborg.yml b/Resources/Prototypes/_Shitmed/Species/cyborg.yml new file mode 100644 index 00000000000..232a67db48b --- /dev/null +++ b/Resources/Prototypes/_Shitmed/Species/cyborg.yml @@ -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