Bad 2 Da Bone [Skeleton Tweaks] (#11669)
Co-authored-by: Kara <lunarautomaton6@gmail.com>
This commit is contained in:
11
Content.Server/Mind/Components/TransferMindOnGibComponent.cs
Normal file
11
Content.Server/Mind/Components/TransferMindOnGibComponent.cs
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
using Content.Shared.Tag;
|
||||||
|
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
|
||||||
|
|
||||||
|
namespace Content.Server.Mind.Components;
|
||||||
|
|
||||||
|
[RegisterComponent]
|
||||||
|
public sealed class TransferMindOnGibComponent : Component
|
||||||
|
{
|
||||||
|
[DataField("targetTag", customTypeSerializer: typeof(PrototypeIdSerializer<TagPrototype>))]
|
||||||
|
public string TargetTag = "MindTransferTarget";
|
||||||
|
}
|
||||||
37
Content.Server/Mind/TransferMindOnGibSystem.cs
Normal file
37
Content.Server/Mind/TransferMindOnGibSystem.cs
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
using System.Linq;
|
||||||
|
using Content.Server.Body.Components;
|
||||||
|
using Content.Server.Mind.Components;
|
||||||
|
using Content.Shared.Tag;
|
||||||
|
using Robust.Shared.Random;
|
||||||
|
|
||||||
|
namespace Content.Server.Mind;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// This handles transfering a target's mind
|
||||||
|
/// to a different entity when they gib.
|
||||||
|
/// used for skeletons.
|
||||||
|
/// </summary>
|
||||||
|
public sealed class TransferMindOnGibSystem : EntitySystem
|
||||||
|
{
|
||||||
|
[Dependency] private readonly IRobustRandom _random = default!;
|
||||||
|
[Dependency] private readonly TagSystem _tag = default!;
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public override void Initialize()
|
||||||
|
{
|
||||||
|
SubscribeLocalEvent<TransferMindOnGibComponent, BeingGibbedEvent>(OnGib);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnGib(EntityUid uid, TransferMindOnGibComponent component, BeingGibbedEvent args)
|
||||||
|
{
|
||||||
|
if (!TryComp<MindComponent>(uid, out var mindcomp) || mindcomp.Mind == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
var validParts = args.GibbedParts.Where(p => _tag.HasTag(p, component.TargetTag)).ToHashSet();
|
||||||
|
if (!validParts.Any())
|
||||||
|
return;
|
||||||
|
|
||||||
|
var ent = _random.Pick(validParts);
|
||||||
|
mindcomp.Mind.TransferTo(ent);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -31,8 +31,6 @@
|
|||||||
partType: Torso
|
partType: Torso
|
||||||
size: 14
|
size: 14
|
||||||
compatibility: Biological
|
compatibility: Biological
|
||||||
# criticalThreshold: 100
|
|
||||||
# deadThreshold: 150
|
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
id: HeadSkeleton
|
id: HeadSkeleton
|
||||||
@@ -53,25 +51,26 @@
|
|||||||
compatibility: Biological
|
compatibility: Biological
|
||||||
- type: Input
|
- type: Input
|
||||||
context: "human"
|
context: "human"
|
||||||
|
- type: MovementSpeedModifier
|
||||||
|
baseWalkSpeed: 0
|
||||||
|
baseSprintSpeed: 0
|
||||||
- type: Speech
|
- type: Speech
|
||||||
- type: Vocal
|
- type: Vocal
|
||||||
|
maleScream: /Audio/Voice/Skeleton/skeleton_scream.ogg
|
||||||
|
femaleScream: /Audio/Voice/Skeleton/skeleton_scream.ogg
|
||||||
- type: Emoting
|
- type: Emoting
|
||||||
- type: Grammar
|
- type: Grammar
|
||||||
attributes:
|
attributes:
|
||||||
proper: true
|
proper: true
|
||||||
- type: Examiner
|
- type: Examiner
|
||||||
- type: IntrinsicRadio
|
|
||||||
channels:
|
|
||||||
- Common
|
|
||||||
- type: DoAfter
|
- type: DoAfter
|
||||||
- type: Actions
|
- type: Actions
|
||||||
- type: MobState
|
- type: MobState
|
||||||
thresholds:
|
thresholds:
|
||||||
0: Alive
|
0: Alive
|
||||||
# criticalThreshold: 50
|
|
||||||
# deadThreshold: 120
|
|
||||||
- type: Tag
|
- type: Tag
|
||||||
tags:
|
tags:
|
||||||
|
- MindTransferTarget
|
||||||
- Head
|
- Head
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
@@ -91,8 +90,6 @@
|
|||||||
size: 5
|
size: 5
|
||||||
compatibility: Biological
|
compatibility: Biological
|
||||||
symmetry: Left
|
symmetry: Left
|
||||||
# criticalThreshold: 40
|
|
||||||
# deadThreshold: 80
|
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
id: RightArmSkeleton
|
id: RightArmSkeleton
|
||||||
@@ -111,8 +108,6 @@
|
|||||||
size: 5
|
size: 5
|
||||||
compatibility: Biological
|
compatibility: Biological
|
||||||
symmetry: Right
|
symmetry: Right
|
||||||
# criticalThreshold: 40
|
|
||||||
# deadThreshold: 80
|
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
id: LeftHandSkeleton
|
id: LeftHandSkeleton
|
||||||
@@ -131,8 +126,6 @@
|
|||||||
size: 3
|
size: 3
|
||||||
compatibility: Biological
|
compatibility: Biological
|
||||||
symmetry: Left
|
symmetry: Left
|
||||||
# criticalThreshold: 30
|
|
||||||
# deadThreshold: 60
|
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
id: RightHandSkeleton
|
id: RightHandSkeleton
|
||||||
@@ -151,8 +144,6 @@
|
|||||||
size: 3
|
size: 3
|
||||||
compatibility: Biological
|
compatibility: Biological
|
||||||
symmetry: Right
|
symmetry: Right
|
||||||
# criticalThreshold: 30
|
|
||||||
# deadThreshold: 60
|
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
id: LeftLegSkeleton
|
id: LeftLegSkeleton
|
||||||
@@ -169,8 +160,6 @@
|
|||||||
- type: BodyPart
|
- type: BodyPart
|
||||||
partType: Leg
|
partType: Leg
|
||||||
size: 6
|
size: 6
|
||||||
compatibility: Biological
|
|
||||||
symmetry: Left
|
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
id: RightLegSkeleton
|
id: RightLegSkeleton
|
||||||
@@ -189,8 +178,6 @@
|
|||||||
size: 6
|
size: 6
|
||||||
compatibility: Biological
|
compatibility: Biological
|
||||||
symmetry: Right
|
symmetry: Right
|
||||||
# criticalThreshold: 45
|
|
||||||
# deadThreshold: 90
|
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
id: LeftFootSkeleton
|
id: LeftFootSkeleton
|
||||||
@@ -209,8 +196,6 @@
|
|||||||
size: 2
|
size: 2
|
||||||
compatibility: Biological
|
compatibility: Biological
|
||||||
symmetry: Left
|
symmetry: Left
|
||||||
# criticalThreshold: 30
|
|
||||||
# deadThreshold: 60
|
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
id: RightFootSkeleton
|
id: RightFootSkeleton
|
||||||
@@ -228,6 +213,4 @@
|
|||||||
partType: Foot
|
partType: Foot
|
||||||
size: 2
|
size: 2
|
||||||
compatibility: Biological
|
compatibility: Biological
|
||||||
symmetry: Right
|
symmetry: Right
|
||||||
# criticalThreshold: 30
|
|
||||||
# deadThreshold: 60
|
|
||||||
@@ -125,15 +125,17 @@
|
|||||||
- type: damageModifierSet
|
- type: damageModifierSet
|
||||||
id: Skeleton
|
id: Skeleton
|
||||||
coefficients:
|
coefficients:
|
||||||
Blunt: 2.0
|
Blunt: 1.1
|
||||||
Slash: 1.5
|
Slash: 0.8
|
||||||
Piercing: 1.2
|
Piercing: 0.6
|
||||||
Cold: 0.0
|
Cold: 0.0
|
||||||
Poison: 0.0
|
Poison: 0.0
|
||||||
Radiation: 0.0
|
Radiation: 0.0
|
||||||
Asphyxiation: 0.0
|
Asphyxiation: 0.0
|
||||||
Bloodloss: 0.0
|
Bloodloss: 0.0
|
||||||
Cellular: 0.0
|
Cellular: 0.0
|
||||||
|
flatReductions:
|
||||||
|
Blunt: 5
|
||||||
|
|
||||||
# Represents which damage types should be modified
|
# Represents which damage types should be modified
|
||||||
# in relation to how they cause bloodloss damage.
|
# in relation to how they cause bloodloss damage.
|
||||||
|
|||||||
24
Resources/Prototypes/Datasets/Names/skeleton_first.yml
Normal file
24
Resources/Prototypes/Datasets/Names/skeleton_first.yml
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
- type: dataset
|
||||||
|
id: skeletonNamesFirst
|
||||||
|
values:
|
||||||
|
- Sternum
|
||||||
|
- Ribs
|
||||||
|
- Vertebrae
|
||||||
|
- Sacrum
|
||||||
|
- Mandible
|
||||||
|
- Clavicle
|
||||||
|
- Scapula
|
||||||
|
- Humerus
|
||||||
|
- Radius
|
||||||
|
- Ulna
|
||||||
|
- Carpals
|
||||||
|
- Phanages
|
||||||
|
- Pelvis
|
||||||
|
- Femur
|
||||||
|
- Tibia
|
||||||
|
- Fibula
|
||||||
|
- Marrow
|
||||||
|
- Tarsalls
|
||||||
|
- Patella
|
||||||
|
- Tailbone
|
||||||
|
- Boner
|
||||||
@@ -26,3 +26,28 @@
|
|||||||
- type: Faction
|
- type: Faction
|
||||||
factions:
|
factions:
|
||||||
- NanoTrasen
|
- NanoTrasen
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
name: Skeleton Pirate
|
||||||
|
parent: MobSkeletonPerson
|
||||||
|
id: MobSkeletonPirate
|
||||||
|
components:
|
||||||
|
- type: GhostTakeoverAvailable
|
||||||
|
name: Skeleton Pirate
|
||||||
|
description: Cause chaos and loot the station for treasure.
|
||||||
|
- type: Loadout
|
||||||
|
prototypes: [PirateGear]
|
||||||
|
- type: RandomHumanoidAppearance
|
||||||
|
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
name: Skeleton Biker
|
||||||
|
parent: MobSkeletonPerson
|
||||||
|
id: MobSkeletonBiker
|
||||||
|
components:
|
||||||
|
- type: GhostTakeoverAvailable
|
||||||
|
name: Skeleton Biker
|
||||||
|
description: Ride around on your sweet ride.
|
||||||
|
- type: Loadout
|
||||||
|
prototypes: [SkeletonBiker]
|
||||||
|
- type: RandomHumanoidAppearance
|
||||||
|
|||||||
@@ -10,7 +10,6 @@
|
|||||||
- type: Icon
|
- type: Icon
|
||||||
sprite: Mobs/Species/Skeleton/parts.rsi
|
sprite: Mobs/Species/Skeleton/parts.rsi
|
||||||
state: full
|
state: full
|
||||||
# Other
|
|
||||||
- type: Body
|
- type: Body
|
||||||
template: HumanoidTemplate
|
template: HumanoidTemplate
|
||||||
preset: SkeletonPreset
|
preset: SkeletonPreset
|
||||||
@@ -18,15 +17,30 @@
|
|||||||
- type: Damageable
|
- type: Damageable
|
||||||
damageContainer: Biological
|
damageContainer: Biological
|
||||||
damageModifierSet: Skeleton
|
damageModifierSet: Skeleton
|
||||||
|
- type: Barotrauma #no space damage.
|
||||||
|
damage:
|
||||||
|
types:
|
||||||
|
Blunt: 0
|
||||||
|
- type: Bloodstream
|
||||||
|
maxBleedAmount: 0
|
||||||
|
bloodReagent: Milk
|
||||||
|
bloodlossDamage: #no bloodloss damage. overriding base components
|
||||||
|
types:
|
||||||
|
Bloodloss: 0
|
||||||
|
bloodlossHealDamage:
|
||||||
|
types:
|
||||||
|
Bloodloss: 0
|
||||||
- type: MobState
|
- type: MobState
|
||||||
thresholds:
|
thresholds:
|
||||||
0: Alive
|
0: Alive
|
||||||
100: Dead
|
100: Critical
|
||||||
|
150: Dead
|
||||||
|
- type: TransferMindOnGib
|
||||||
- type: Destructible
|
- type: Destructible
|
||||||
thresholds:
|
thresholds:
|
||||||
- trigger:
|
- trigger:
|
||||||
!type:DamageTrigger
|
!type:DamageTrigger
|
||||||
damage: 100
|
damage: 150
|
||||||
behaviors:
|
behaviors:
|
||||||
- !type:GibBehavior { }
|
- !type:GibBehavior { }
|
||||||
- type: SlowOnDamage #modified speeds because they're so weak
|
- type: SlowOnDamage #modified speeds because they're so weak
|
||||||
@@ -34,6 +48,17 @@
|
|||||||
60: 0.9
|
60: 0.9
|
||||||
80: 0.7
|
80: 0.7
|
||||||
- type: Speech
|
- type: Speech
|
||||||
|
- type: Fixtures
|
||||||
|
fixtures:
|
||||||
|
- shape:
|
||||||
|
!type:PhysShapeCircle
|
||||||
|
radius: 0.35
|
||||||
|
density: 130
|
||||||
|
restitution: 0.0
|
||||||
|
mask:
|
||||||
|
- MobMask
|
||||||
|
layer:
|
||||||
|
- MobLayer
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
save: false
|
save: false
|
||||||
|
|||||||
@@ -316,3 +316,54 @@
|
|||||||
path: /Audio/Effects/Vehicle/vehiclestartup.ogg
|
path: /Audio/Effects/Vehicle/vehiclestartup.ogg
|
||||||
params:
|
params:
|
||||||
volume: -3
|
volume: -3
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
parent: BaseVehicle
|
||||||
|
id: VehicleSkeletonMotorcycle
|
||||||
|
name: skeleton motorcycle
|
||||||
|
description: Bad to the Bone.
|
||||||
|
components:
|
||||||
|
- type: Vehicle
|
||||||
|
northOverride: -0.1
|
||||||
|
southOverride: 0.1
|
||||||
|
- type: Sprite
|
||||||
|
sprite: Objects/Vehicles/motorbike.rsi
|
||||||
|
layers:
|
||||||
|
- state: vehicle
|
||||||
|
map: ["enum.VehicleVisualLayers.AutoAnimate"]
|
||||||
|
netsync: false
|
||||||
|
noRot: true
|
||||||
|
- type: Strap
|
||||||
|
buckleOffset: "0.1, -0.05"
|
||||||
|
maxBuckleDistance: 1
|
||||||
|
- type: MovementSpeedModifier
|
||||||
|
acceleration: 2
|
||||||
|
friction: 1.5
|
||||||
|
baseWalkSpeed: 4.5
|
||||||
|
baseSprintSpeed: 7
|
||||||
|
- type: UnpoweredFlashlight
|
||||||
|
toggleAction:
|
||||||
|
name: action-name-toggle-light
|
||||||
|
description: action-description-toggle-light
|
||||||
|
icon: Objects/Tools/flashlight.rsi/flashlight.png
|
||||||
|
iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png
|
||||||
|
event: !type:ToggleActionEvent
|
||||||
|
- type: PointLight
|
||||||
|
enabled: false
|
||||||
|
radius: 3.5
|
||||||
|
softness: 2
|
||||||
|
mask: /Textures/Effects/LightMasks/cone.png
|
||||||
|
autoRot: true
|
||||||
|
- type: ItemSlots
|
||||||
|
slots:
|
||||||
|
key_slot:
|
||||||
|
name: Keys
|
||||||
|
whitelist:
|
||||||
|
requireAll: true
|
||||||
|
tags:
|
||||||
|
- VehicleKey
|
||||||
|
- SkeletonMotorcycleKeys
|
||||||
|
insertSound:
|
||||||
|
path: /Audio/Effects/Vehicle/vehiclestartup.ogg
|
||||||
|
params:
|
||||||
|
volume: -3
|
||||||
@@ -73,3 +73,18 @@
|
|||||||
sprite: Objects/Vehicles/syndicatesegway.rsi
|
sprite: Objects/Vehicles/syndicatesegway.rsi
|
||||||
state: keys
|
state: keys
|
||||||
netsync: false
|
netsync: false
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
parent: VehicleKeyATV
|
||||||
|
id: VehicleKeySkeletonMotorcycle
|
||||||
|
name: skeleton motorcycle keys
|
||||||
|
description: A beautiful set of keys adorned with a skull.
|
||||||
|
components:
|
||||||
|
- type: Tag
|
||||||
|
tags:
|
||||||
|
- VehicleKey
|
||||||
|
- SkeletonMotorcycleKeys
|
||||||
|
- type: Sprite
|
||||||
|
sprite: Objects/Vehicles/motorbike.rsi
|
||||||
|
state: keys
|
||||||
|
netsync: false
|
||||||
|
|||||||
@@ -32,6 +32,25 @@
|
|||||||
satchel: ClothingBackpackSatchelEngineering
|
satchel: ClothingBackpackSatchelEngineering
|
||||||
duffelbag: ClothingBackpackSatchelEngineering
|
duffelbag: ClothingBackpackSatchelEngineering
|
||||||
|
|
||||||
|
#Skeleton Biker
|
||||||
|
- type: startingGear
|
||||||
|
id: SkeletonBiker
|
||||||
|
equipment:
|
||||||
|
jumpsuit: ClothingUniformJumpsuitColorBlack
|
||||||
|
back: ClothingBackpackFilled
|
||||||
|
head: HatBandSkull
|
||||||
|
eyes: ClothingEyesGlassesSunglasses
|
||||||
|
outerClothing: ClothingOuterCoatGentle
|
||||||
|
gloves: ClothingHandsGlovesFingerless
|
||||||
|
shoes: ClothingShoesBootsJack
|
||||||
|
id: PassengerPDA
|
||||||
|
ears: ClothingHeadsetGrey
|
||||||
|
pocket1: VehicleSkeletonMotorcycle
|
||||||
|
pocket2: VehicleKeySkeletonMotorcycle
|
||||||
|
innerclothingskirt: ClothingUniformJumpskirtColorBlack
|
||||||
|
satchel: ClothingBackpackSatchelFilled
|
||||||
|
duffelbag: ClothingBackpackDuffelFilled
|
||||||
|
|
||||||
#Space Ninja Outfit
|
#Space Ninja Outfit
|
||||||
- type: startingGear
|
- type: startingGear
|
||||||
id: SpaceNinjaGear
|
id: SpaceNinjaGear
|
||||||
|
|||||||
@@ -1,10 +1,12 @@
|
|||||||
- type: species
|
- type: species
|
||||||
id: Skeleton
|
id: Skeleton
|
||||||
name: Skeleton
|
name: Skeleton
|
||||||
roundStart: false #unspooky, change it in october
|
roundStart: false
|
||||||
prototype: MobSkeletonPerson
|
prototype: MobSkeletonPerson
|
||||||
sprites: MobSkeletonSprites
|
sprites: MobSkeletonSprites
|
||||||
markingLimits: MobHumanMarkingLimits
|
markingLimits: MobHumanMarkingLimits
|
||||||
|
maleFirstNames: skeletonNamesFirst
|
||||||
|
femaleFirstNames: skeletonNamesFirst
|
||||||
dollPrototype: MobSkeletonPersonDummy
|
dollPrototype: MobSkeletonPersonDummy
|
||||||
skinColoration: TintedHues
|
skinColoration: TintedHues
|
||||||
|
|
||||||
@@ -15,7 +17,6 @@
|
|||||||
Hair: MobHumanoidAnyMarking
|
Hair: MobHumanoidAnyMarking
|
||||||
FacialHair: MobHumanoidAnyMarking
|
FacialHair: MobHumanoidAnyMarking
|
||||||
Chest: MobSkeletonTorso
|
Chest: MobSkeletonTorso
|
||||||
Eyes: MobHumanoidEyes
|
|
||||||
LArm: MobSkeletonLArm
|
LArm: MobSkeletonLArm
|
||||||
RArm: MobSkeletonRArm
|
RArm: MobSkeletonRArm
|
||||||
LHand: MobSkeletonLHand
|
LHand: MobSkeletonLHand
|
||||||
|
|||||||
@@ -365,6 +365,9 @@
|
|||||||
- type: Tag
|
- type: Tag
|
||||||
id: MicrowaveSelfUnsafe
|
id: MicrowaveSelfUnsafe
|
||||||
|
|
||||||
|
- type: Tag
|
||||||
|
id: MindTransferTarget
|
||||||
|
|
||||||
- type: Tag
|
- type: Tag
|
||||||
id: MonkeyCube
|
id: MonkeyCube
|
||||||
|
|
||||||
@@ -465,6 +468,9 @@
|
|||||||
- type: Tag
|
- type: Tag
|
||||||
id: Shovel
|
id: Shovel
|
||||||
|
|
||||||
|
- type: Tag
|
||||||
|
id: SkeletonMotorcycleKeys
|
||||||
|
|
||||||
- type: Tag
|
- type: Tag
|
||||||
id: Smokable
|
id: Smokable
|
||||||
|
|
||||||
|
|||||||
BIN
Resources/Textures/Objects/Vehicles/motorbike.rsi/keys.png
Normal file
BIN
Resources/Textures/Objects/Vehicles/motorbike.rsi/keys.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 291 B |
18
Resources/Textures/Objects/Vehicles/motorbike.rsi/meta.json
Normal file
18
Resources/Textures/Objects/Vehicles/motorbike.rsi/meta.json
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"size": {
|
||||||
|
"x": 32,
|
||||||
|
"y": 32
|
||||||
|
},
|
||||||
|
"license": "CC-BY-SA-3.0",
|
||||||
|
"copyright": "Taken from TerraGov-Marine-Corps at commit https://github.com/tgstation/TerraGov-Marine-Corps/blob/ded67dce88183b6dbca13d324370801d0fd976a0/icons/obj/vehicles.dmi, modified by EmoGarbage404",
|
||||||
|
"states": [
|
||||||
|
{
|
||||||
|
"name": "vehicle",
|
||||||
|
"directions": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "keys"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
BIN
Resources/Textures/Objects/Vehicles/motorbike.rsi/vehicle.png
Normal file
BIN
Resources/Textures/Objects/Vehicles/motorbike.rsi/vehicle.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.2 KiB |
Reference in New Issue
Block a user