diff --git a/Resources/Prototypes/Body/Parts/humanoid_parts.yml b/Resources/Prototypes/Body/Parts/human_parts.yml similarity index 100% rename from Resources/Prototypes/Body/Parts/humanoid_parts.yml rename to Resources/Prototypes/Body/Parts/human_parts.yml diff --git a/Resources/Prototypes/Body/Parts/slime_parts.yml b/Resources/Prototypes/Body/Parts/slime_parts.yml new file mode 100644 index 0000000000..2cb3d15601 --- /dev/null +++ b/Resources/Prototypes/Body/Parts/slime_parts.yml @@ -0,0 +1,270 @@ +# TODO BODY: Part damage +- type: entity + id: PartSlime + parent: BaseItem + name: "slime body part" + abstract: true + +- type: entity + id: TorsoSlime + name: "slime torso" + parent: PartSlime + components: + - type: Sprite + netsync: false + sprite: Mobs/Species/Slime/parts.rsi + state: "torso_m" + - type: Icon + sprite: Mobs/Species/Slime/parts.rsi + state: "torso_m" + - type: BodyPart + partType: Torso + size: 14 + compatibility: Biological + mechanisms: + - HeartHuman + - LungsHuman + - StomachHuman + - LiverHuman + - KidneysHuman + - type: BiologicalSurgeryData + - type: Damageable + # TODO BODY DettachableDamageableComponent? + damageContainer: biologicalDamageContainer + resistances: defaultResistances +# criticalThreshold: 100 +# deadThreshold: 150 + +- type: entity + id: HeadSlime + name: "slime head" + parent: PartSlime + components: + - type: Sprite + netsync: false + sprite: Mobs/Species/Slime/parts.rsi + state: "head_m" + - type: Icon + sprite: Mobs/Species/Slime/parts.rsi + state: "head_m" + - type: BodyPart + partType: Head + size: 7 + compatibility: Biological + isVital: true + mechanisms: + - BrainHuman + - EyesHuman + - type: BiologicalSurgeryData + - type: Damageable + damageContainer: biologicalDamageContainer + resistances: defaultResistances + # criticalThreshold: 50 + # deadThreshold: 120 + - type: Input + +- type: entity + id: LeftArmSlime + name: "left slime arm" + parent: PartSlime + components: + - type: Sprite + netsync: false + sprite: Mobs/Species/Slime/parts.rsi + state: "l_arm" + - type: Icon + sprite: Mobs/Species/Slime/parts.rsi + state: "l_arm" + - type: BodyPart + partType: Arm + size: 5 + compatibility: Biological + symmetry: Left + - type: BiologicalSurgeryData + - type: Damageable + damageContainer: biologicalDamageContainer + resistances: defaultResistances + # criticalThreshold: 40 + # deadThreshold: 80 + - type: Extension + distance: 2.4 + +- type: entity + id: RightArmSlime + name: "right slime arm" + parent: PartSlime + components: + - type: Sprite + netsync: false + sprite: Mobs/Species/Slime/parts.rsi + state: "r_arm" + - type: Icon + sprite: Mobs/Species/Slime/parts.rsi + state: "r_arm" + - type: BodyPart + partType: Arm + size: 5 + compatibility: Biological + symmetry: Right + - type: BiologicalSurgeryData + - type: Damageable + damageContainer: biologicalDamageContainer + resistances: defaultResistances + # criticalThreshold: 40 + # deadThreshold: 80 + - type: Extension + distance: 2.4 + +- type: entity + id: LeftHandSlime + name: "left slime hand" + parent: PartSlime + components: + - type: Sprite + netsync: false + sprite: Mobs/Species/Slime/parts.rsi + state: "l_hand" + - type: Icon + sprite: Mobs/Species/Slime/parts.rsi + state: "l_hand" + - type: BodyPart + partType: Hand + size: 3 + compatibility: Biological + symmetry: Left + - type: BiologicalSurgeryData + - type: Damageable + damageContainer: biologicalDamageContainer + resistances: defaultResistances + # criticalThreshold: 30 + # deadThreshold: 60 + - type: Grasp + +- type: entity + id: RightHandSlime + name: "right slime hand" + parent: PartSlime + components: + - type: Sprite + netsync: false + sprite: Mobs/Species/Slime/parts.rsi + state: "r_hand" + - type: Icon + sprite: Mobs/Species/Slime/parts.rsi + state: "r_hand" + - type: BodyPart + partType: Hand + size: 3 + compatibility: Biological + symmetry: Right + - type: BiologicalSurgeryData + - type: Damageable + damageContainer: biologicalDamageContainer + resistances: defaultResistances + # criticalThreshold: 30 + # deadThreshold: 60 + - type: Grasp + +- type: entity + id: LeftLegSlime + name: "left slime leg" + parent: PartSlime + components: + - type: Sprite + netsync: false + sprite: Mobs/Species/Slime/parts.rsi + state: "l_leg" + - type: Icon + sprite: Mobs/Species/Slime/parts.rsi + state: "l_leg" + - type: BodyPart + partType: Leg + size: 6 + compatibility: Biological + symmetry: Left + - type: BiologicalSurgeryData + - type: Damageable + damageContainer: biologicalDamageContainer + resistances: defaultResistances + # criticalThreshold: 45 + # deadThreshold: 90 + - type: Leg + speed: 2.6 + - type: Extension + distance: 3.0 + +- type: entity + id: RightLegSlime + name: "right slime leg" + parent: PartSlime + components: + - type: Sprite + netsync: false + sprite: Mobs/Species/Slime/parts.rsi + state: "r_leg" + - type: Icon + sprite: Mobs/Species/Slime/parts.rsi + state: "r_leg" + - type: BodyPart + partType: Leg + size: 6 + compatibility: Biological + symmetry: Right + - type: BiologicalSurgeryData + - type: Damageable + damageContainer: biologicalDamageContainer + resistances: defaultResistances + # criticalThreshold: 45 + # deadThreshold: 90 + - type: Leg + speed: 2.6 + - type: Extension + distance: 3.0 + +- type: entity + id: LeftFootSlime + name: "left slime foot" + parent: PartSlime + components: + - type: Sprite + netsync: false + sprite: Mobs/Species/Slime/parts.rsi + state: "l_foot" + - type: Icon + sprite: Mobs/Species/Slime/parts.rsi + state: "l_foot" + - type: BodyPart + partType: Foot + size: 2 + compatibility: Biological + symmetry: Left + - type: BiologicalSurgeryData + - type: Damageable + damageContainer: biologicalDamageContainer + resistances: defaultResistances +# criticalThreshold: 30 +# deadThreshold: 60 + +- type: entity + id: RightFootSlime + name: "right slime foot" + parent: PartSlime + components: + - type: Sprite + netsync: false + sprite: Mobs/Species/Slime/parts.rsi + state: "r_foot" + - type: Icon + sprite: Mobs/Species/Slime/parts.rsi + state: "r_foot" + - type: BodyPart + partType: Foot + size: 2 + compatibility: Biological + symmetry: Right + - type: BiologicalSurgeryData + - type: Damageable + damageContainer: biologicalDamageContainer + resistances: defaultResistances +# criticalThreshold: 30 +# deadThreshold: 60 diff --git a/Resources/Prototypes/Body/Presets/slime.yml b/Resources/Prototypes/Body/Presets/slime.yml new file mode 100644 index 0000000000..c7a4f853ff --- /dev/null +++ b/Resources/Prototypes/Body/Presets/slime.yml @@ -0,0 +1,14 @@ +- type: bodyPreset + name: "slime" + id: SlimePreset + partIDs: + head: HeadSlime + torso: TorsoSlime + right arm: RightArmSlime + left arm: LeftArmSlime + right hand: RightHandSlime + left hand: LeftHandSlime + right leg: RightLegSlime + left leg: LeftLegSlime + right foot: RightFootSlime + left foot: LeftFootSlime diff --git a/Resources/Prototypes/Entities/Mobs/Player/slime.yml b/Resources/Prototypes/Entities/Mobs/Player/slime.yml new file mode 100644 index 0000000000..3b5a2615c1 --- /dev/null +++ b/Resources/Prototypes/Entities/Mobs/Player/slime.yml @@ -0,0 +1,25 @@ +- type: entity + save: false + name: Slime Person + parent: BaseSlimeMob_Content + id: SlimeMob_Content + description: A miserable pile of slime + drawdepth: Mobs + components: + - type: Mind + showExamineInfo: true + - type: Input + context: "human" + - type: Alerts + - type: Actions + innateActions: + - HumanScream + - Disarm + - type: Eye + zoom: 0.5, 0.5 + - type: CameraRecoil + - type: Examiner + - type: HumanInventoryController + - type: AiFactionTag + factions: + - NanoTrasen diff --git a/Resources/Prototypes/Entities/Mobs/Species/slime.yml b/Resources/Prototypes/Entities/Mobs/Species/slime.yml new file mode 100644 index 0000000000..ea18115d0d --- /dev/null +++ b/Resources/Prototypes/Entities/Mobs/Species/slime.yml @@ -0,0 +1,214 @@ +# Both slimes and NPCs inherit from this. +# Anything human specific (e.g. UI, input) goes under HumanMob_Content +- type: entity + save: false + name: Slime Person + id: BaseSlimeMob_Content + description: A miserable pile of slime. + drawdepth: Mobs + abstract: true + components: + - type: Tag + tags: + - Teleportable + - FootstepSound + - type: Flashable + - type: Hands + - type: MovementSpeedModifier + - type: MovedByPressure + - type: Barotrauma + - type: DamageOnHighSpeedImpact + soundHit: /Audio/Effects/hit_kick.ogg + - type: Hunger + - type: Thirst + # Organs + - type: SolutionContainer + maxVol: 250 + caps: Injectable, Drawable + # StatusEffects + - type: Stunnable + # Other + - type: Inventory + - type: Clickable + - type: InteractionOutline + - type: Icon + sprite: Mobs/Species/Slime/parts.rsi + state: full + - type: Sprite + netsync: false + drawdepth: Mobs + layers: + - map: [ "enum.HumanoidVisualLayers.Chest" ] + color: "#e8b59b" + sprite: Mobs/Species/Slime/parts.rsi + state: torso_m + - map: [ "enum.HumanoidVisualLayers.Head" ] + color: "#e8b59b" + sprite: Mobs/Species/Slime/parts.rsi + state: head_m + - map: [ "enum.HumanoidVisualLayers.Eyes" ] + color: "#008800" + sprite: Mobs/Customization/eyes.rsi + state: eyes + - map: [ "enum.HumanoidVisualLayers.RArm" ] + color: "#e8b59b" + sprite: Mobs/Species/Slime/parts.rsi + state: r_arm + - map: [ "enum.HumanoidVisualLayers.LArm" ] + color: "#e8b59b" + sprite: Mobs/Species/Slime/parts.rsi + state: l_arm + - map: [ "enum.HumanoidVisualLayers.RLeg" ] + color: "#e8b59b" + sprite: Mobs/Species/Slime/parts.rsi + state: r_leg + - map: [ "enum.HumanoidVisualLayers.LLeg" ] + color: "#e8b59b" + sprite: Mobs/Species/Slime/parts.rsi + state: l_leg + - shader: StencilClear + sprite: Mobs/Species/Slime/parts.rsi + state: l_leg + - shader: StencilMask + map: [ "enum.HumanoidVisualLayers.StencilMask" ] + sprite: Mobs/Customization/masking_helpers.rsi + state: female_full + visible: false + - map: [ "enum.Slots.INNERCLOTHING" ] + shader: StencilDraw + - map: [ "enum.HumanoidVisualLayers.LHand" ] + color: "#e8b59b" + sprite: Mobs/Species/Slime/parts.rsi + state: l_hand + - map: [ "enum.HumanoidVisualLayers.RHand" ] + color: "#e8b59b" + sprite: Mobs/Species/Slime/parts.rsi + state: r_hand + - map: [ "enum.HumanoidVisualLayers.LFoot" ] + color: "#e8b59b" + sprite: Mobs/Species/Slime/parts.rsi + state: l_foot + - map: [ "enum.HumanoidVisualLayers.RFoot" ] + color: "#e8b59b" + sprite: Mobs/Species/Slime/parts.rsi + state: r_foot + - map: [ "enum.HumanoidVisualLayers.Handcuffs" ] + color: "#ffffff" + sprite: Objects/Misc/handcuffs.rsi + state: body-overlay-2 + visible: false + - map: [ "enum.Slots.IDCARD" ] + - map: [ "enum.Slots.GLOVES" ] + - map: [ "enum.Slots.SHOES" ] + - map: [ "enum.Slots.EARS" ] + - map: [ "enum.Slots.OUTERCLOTHING" ] + - map: [ "enum.Slots.EYES" ] + - map: [ "enum.Slots.BELT" ] + - map: [ "enum.Slots.NECK" ] + - map: [ "enum.Slots.BACKPACK" ] + - map: [ "enum.HumanoidVisualLayers.FacialHair" ] + state: shaved + sprite: Mobs/Customization/human_facial_hair.rsi + - map: [ "enum.HumanoidVisualLayers.Hair" ] + state: bald + sprite: Mobs/Customization/human_hair.rsi + - map: [ "enum.Slots.MASK" ] + - map: [ "enum.Slots.HEAD" ] + - type: Physics + anchored: false + mass: 85 + shapes: + - !type:PhysShapeAabb + bounds: "-0.35,-0.35,0.35,0.35" + mask: + - Impassable + - MobImpassable + - VaultImpassable + layer: + - Opaque + - MobImpassable + - type: PlayerInputMover + - type: AtmosExposed + - type: Flammable + fireSpread: true + canResistFire: true + - type: Temperature + heatDamageThreshold: 360 + coldDamageThreshold: 260 + currentTemperature: 310.15 + specificHeat: 42 + tempDamageCoefficient: 0.1 + - type: HumanoidAppearance + - type: Body + template: HumanoidTemplate + preset: SlimePreset + centerSlot: torso + - type: Damageable + damageContainer: biologicalDamageContainer + - type: Metabolism + metabolismHeat: 5000 + radiatedHeat: 400 + implicitHeatRegulation: 5000 + sweatHeatRegulation: 5000 + shiveringHeatRegulation: 5000 + normalBodyTemperature: 310.15 + thermalRegulationTemperatureThreshold: 25 + needsGases: + Oxygen: 0.00060763888 + producesGases: + Oxygen: 0.00045572916 + CarbonDioxide: 0.00015190972 + - type: Internals + - type: MobState + thresholds: + 0: !type:NormalMobState {} + 100: !type:CriticalMobState {} + 200: !type:DeadMobState {} + - type: Destructible + thresholds: + - trigger: + !type:DamageTypeTrigger + type: Blunt + damage: 400 + behaviors: + - !type:GibBehavior { } + - type: HeatResistance + - type: Appearance + visuals: + - type: RotationVisualizer + - type: BuckleVisualizer + - type: FireVisualizer + sprite: Mobs/Effects/onfire.rsi + normalState: Generic_mob_burning + alternateState: Standing + fireStackAlternateState: 3 + - type: CreamPiedVisualizer + state: creampie_human + - type: CombatMode + - type: Climbing + - type: Cuffable + - type: CharacterInfo + - type: AnimationPlayer + - type: Buckle + - type: UnarmedCombat + range: 0.8 + arcwidth: 30 + arc: fist + - type: Grammar + proper: true + - type: Pullable + - type: DoAfter + - type: CreamPied + - type: Stripping + - type: Strippable + - type: UserInterface + interfaces: + - key: enum.StrippingUiKey.Key + type: StrippableBoundUserInterface + - type: Puller + - type: Butcherable + meat: FoodMeat + - type: Recyclable + safe: false + - type: Speech + - type: Emoting diff --git a/Resources/Textures/Mobs/Species/Slime/parts.rsi/full.png b/Resources/Textures/Mobs/Species/Slime/parts.rsi/full.png new file mode 100644 index 0000000000..36cfd26b04 Binary files /dev/null and b/Resources/Textures/Mobs/Species/Slime/parts.rsi/full.png differ diff --git a/Resources/Textures/Mobs/Species/Slime/parts.rsi/head_f.png b/Resources/Textures/Mobs/Species/Slime/parts.rsi/head_f.png new file mode 100644 index 0000000000..317d91c520 Binary files /dev/null and b/Resources/Textures/Mobs/Species/Slime/parts.rsi/head_f.png differ diff --git a/Resources/Textures/Mobs/Species/Slime/parts.rsi/head_m.png b/Resources/Textures/Mobs/Species/Slime/parts.rsi/head_m.png new file mode 100644 index 0000000000..317d91c520 Binary files /dev/null and b/Resources/Textures/Mobs/Species/Slime/parts.rsi/head_m.png differ diff --git a/Resources/Textures/Mobs/Species/Slime/parts.rsi/l_arm.png b/Resources/Textures/Mobs/Species/Slime/parts.rsi/l_arm.png new file mode 100644 index 0000000000..90fd38dcf5 Binary files /dev/null and b/Resources/Textures/Mobs/Species/Slime/parts.rsi/l_arm.png differ diff --git a/Resources/Textures/Mobs/Species/Slime/parts.rsi/l_foot.png b/Resources/Textures/Mobs/Species/Slime/parts.rsi/l_foot.png new file mode 100644 index 0000000000..daab6bd17c Binary files /dev/null and b/Resources/Textures/Mobs/Species/Slime/parts.rsi/l_foot.png differ diff --git a/Resources/Textures/Mobs/Species/Slime/parts.rsi/l_hand.png b/Resources/Textures/Mobs/Species/Slime/parts.rsi/l_hand.png new file mode 100644 index 0000000000..af8bb22624 Binary files /dev/null and b/Resources/Textures/Mobs/Species/Slime/parts.rsi/l_hand.png differ diff --git a/Resources/Textures/Mobs/Species/Slime/parts.rsi/l_leg.png b/Resources/Textures/Mobs/Species/Slime/parts.rsi/l_leg.png new file mode 100644 index 0000000000..383f3589ca Binary files /dev/null and b/Resources/Textures/Mobs/Species/Slime/parts.rsi/l_leg.png differ diff --git a/Resources/Textures/Mobs/Species/Slime/parts.rsi/meta.json b/Resources/Textures/Mobs/Species/Slime/parts.rsi/meta.json new file mode 100644 index 0000000000..4bf286bb1b --- /dev/null +++ b/Resources/Textures/Mobs/Species/Slime/parts.rsi/meta.json @@ -0,0 +1,231 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "https://github.com/tgstation/tgstation/blob/8024397cc81c5f47f74cf4279e35728487d0a1a7/icons/mob/human_parts_greyscale.dmi and modified by Zumorica", + "states": [ + { + "name": "full", + + }, + { + "name": "head_f", + "directions": 4, + "delays": [ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name": "head_m", + "directions": 4, + "delays": [ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name": "l_arm", + "directions": 4, + "delays": [ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name": "l_foot", + "directions": 4, + "delays": [ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name": "l_hand", + "directions": 4, + "delays": [ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name": "l_leg", + "directions": 4, + "delays": [ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name": "r_arm", + "directions": 4, + "delays": [ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name": "r_foot", + "directions": 4, + "delays": [ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name": "r_hand", + "directions": 4, + "delays": [ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name": "r_leg", + "directions": 4, + "delays": [ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name": "torso_f", + "directions": 4, + "delays": [ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + }, + { + "name": "torso_m", + "directions": 4, + "delays": [ + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ], + [ + 1.0 + ] + ] + } + ] +} diff --git a/Resources/Textures/Mobs/Species/Slime/parts.rsi/r_arm.png b/Resources/Textures/Mobs/Species/Slime/parts.rsi/r_arm.png new file mode 100644 index 0000000000..790fd8a61a Binary files /dev/null and b/Resources/Textures/Mobs/Species/Slime/parts.rsi/r_arm.png differ diff --git a/Resources/Textures/Mobs/Species/Slime/parts.rsi/r_foot.png b/Resources/Textures/Mobs/Species/Slime/parts.rsi/r_foot.png new file mode 100644 index 0000000000..36fec7c3ba Binary files /dev/null and b/Resources/Textures/Mobs/Species/Slime/parts.rsi/r_foot.png differ diff --git a/Resources/Textures/Mobs/Species/Slime/parts.rsi/r_hand.png b/Resources/Textures/Mobs/Species/Slime/parts.rsi/r_hand.png new file mode 100644 index 0000000000..47b3a13617 Binary files /dev/null and b/Resources/Textures/Mobs/Species/Slime/parts.rsi/r_hand.png differ diff --git a/Resources/Textures/Mobs/Species/Slime/parts.rsi/r_leg.png b/Resources/Textures/Mobs/Species/Slime/parts.rsi/r_leg.png new file mode 100644 index 0000000000..eaa5d42317 Binary files /dev/null and b/Resources/Textures/Mobs/Species/Slime/parts.rsi/r_leg.png differ diff --git a/Resources/Textures/Mobs/Species/Slime/parts.rsi/torso_f.png b/Resources/Textures/Mobs/Species/Slime/parts.rsi/torso_f.png new file mode 100644 index 0000000000..bd61739a50 Binary files /dev/null and b/Resources/Textures/Mobs/Species/Slime/parts.rsi/torso_f.png differ diff --git a/Resources/Textures/Mobs/Species/Slime/parts.rsi/torso_m.png b/Resources/Textures/Mobs/Species/Slime/parts.rsi/torso_m.png new file mode 100644 index 0000000000..5ea1a483f4 Binary files /dev/null and b/Resources/Textures/Mobs/Species/Slime/parts.rsi/torso_m.png differ