Skip to content

Commit 6e6b6c8

Browse files
Merge pull request #35 from Princess-Cheeseballs/new-body
Psycho Body Prototypes
2 parents 43c032a + bd66343 commit 6e6b6c8

File tree

8 files changed

+745
-3
lines changed

8 files changed

+745
-3
lines changed

Content.Server/Cargo/Systems/PricingSystem.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -90,14 +90,16 @@ private void CalculateMobPrice(EntityUid uid, MobPriceComponent component, ref P
9090
if (args.Handled)
9191
return;
9292

93-
if (!TryComp<BodyComponent>(uid, out var body) || !TryComp<MobStateComponent>(uid, out var state))
93+
// ES START
94+
if (!TryComp<MobStateComponent>(uid, out var state))
9495
{
95-
Log.Error($"Tried to get the mob price of {ToPrettyString(uid)}, which has no {nameof(BodyComponent)} and no {nameof(MobStateComponent)}.");
96+
Log.Error($"Tried to get the mob price of {ToPrettyString(uid)}, which has no {nameof(MobStateComponent)}.");
9697
return;
9798
}
9899

99100
// TODO: Better handling of missing.
100-
var partList = _bodySystem.GetBodyChildren(uid, body).ToList();
101+
var partList = _bodySystem.GetBodyChildren(uid).ToList();
102+
// ES END
101103
var totalPartsPresent = partList.Sum(_ => 1);
102104
var totalParts = partList.Count;
103105

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
- type: entity
2+
name: space carp
3+
id: ESPBaseMobCarp
4+
parent: [ ESPSimpleSpaceMobBase, FlyingMobBase ]
5+
description: It's a space carp.
6+
suffix: ESP
7+
components:
8+
- type: InputMover
9+
- type: MobMover
10+
- type: HTN
11+
rootTask:
12+
task: SimpleHostileCompound
13+
blackboard:
14+
NavSmash: !type:Bool
15+
true
16+
- type: NpcFactionMember
17+
factions:
18+
- Dragon
19+
- type: Sprite
20+
drawdepth: Mobs
21+
sprite: Mobs/Aliens/Carps/space.rsi
22+
layers:
23+
- map: [ "enum.DamageStateVisualLayers.Base" ]
24+
state: alive
25+
- type: Fixtures
26+
fixtures:
27+
fix1:
28+
shape:
29+
!type:PhysShapeCircle
30+
radius: 0.40
31+
density: 80
32+
mask:
33+
- FlyingMobMask
34+
layer:
35+
- FlyingMobLayer
36+
- type: MobState
37+
- type: MobThresholds
38+
thresholds:
39+
0: Alive
40+
40: Dead
41+
- type: MovementSpeedModifier
42+
baseWalkSpeed: 2.5
43+
baseSprintSpeed: 3.5
44+
- type: Stamina
45+
critThreshold: 100
46+
- type: DamageStateVisuals
47+
states:
48+
Alive:
49+
Base: alive
50+
BaseUnshaded: mouth
51+
Dead:
52+
Base: dead
53+
BaseUnshaded: dead_mouth
54+
- type: Butcherable
55+
spawned:
56+
- id: FoodMeatFish
57+
amount: 2
58+
- id: MaterialToothSpaceCarp1
59+
amount: 1
60+
maxAmount: 4
61+
- type: MeleeWeapon
62+
altDisarm: false
63+
angle: 0
64+
animation: WeaponArcBite
65+
soundHit:
66+
path: /Audio/Effects/bite.ogg
67+
damage:
68+
types:
69+
Blunt: 5
70+
Slash: 7
71+
- type: TypingIndicator
72+
proto: alien
73+
- type: Tag
74+
tags:
75+
- Carp
76+
- DoorBumpOpener
77+
- type: ReplacementAccent
78+
accent: genericAggressive
79+
- type: Speech
80+
speechVerb: LargeMob
81+
- type: InteractionPopup
82+
interactSuccessString: petting-success-carp
83+
interactFailureString: petting-failure-carp
84+
interactFailureSound:
85+
path: /Audio/Effects/bite.ogg
Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
- type: entity
2+
save: false
3+
parent:
4+
- BaseMob
5+
- ESPMobDamageable
6+
- MobPolymorphable
7+
id: ESPBaseSimpleMob
8+
suffix: AI
9+
abstract: true
10+
components:
11+
- type: Reactive
12+
groups:
13+
Flammable: [Touch]
14+
Extinguish: [Touch]
15+
Acidic: [Touch, Ingestion]
16+
- type: Internals
17+
- type: MovementSpeedModifier
18+
baseWalkSpeed : 4
19+
baseSprintSpeed : 4
20+
- type: StatusEffects
21+
allowed:
22+
- SlowedDown
23+
- Stutter
24+
- Electrocution
25+
- ForcedSleep
26+
- TemporaryBlindness
27+
- Pacified
28+
- Flashed
29+
- RadiationProtection
30+
- Drowsiness
31+
- Adrenaline
32+
- type: Buckle
33+
- type: StandingState
34+
- type: Tag
35+
tags:
36+
- DoorBumpOpener
37+
38+
- type: entity
39+
abstract: true
40+
parent:
41+
- ESPBaseSimpleMob
42+
- MobAtmosExposed
43+
- MobCombat
44+
- MobBloodstream
45+
- MobFlammable
46+
id: ESPSimpleSpaceMobBase # Mob without barotrauma, freezing and asphyxiation (for space carps!?)
47+
suffix: AI
48+
components:
49+
- type: NpcFactionMember
50+
factions:
51+
- SimpleNeutral
52+
- type: HTN
53+
rootTask:
54+
task: IdleCompound
55+
- type: MeleeWeapon
56+
angle: 0
57+
animation: WeaponArcBite
58+
- type: Climbing
59+
- type: NameIdentifier
60+
group: GenericNumber
61+
- type: SlowOnDamage
62+
speedModifierThresholds:
63+
60: 0.7
64+
80: 0.5
65+
- type: MobPrice
66+
price: 1000 # Living critters are valuable in space.
67+
- type: Perishable
68+
69+
- type: entity
70+
parent:
71+
- MobRespirator
72+
- MobAtmosStandard
73+
- ESPSimpleSpaceMobBase
74+
id: ESPSimpleMobBase # for air breathers
75+
suffix: AI
76+
abstract: true
77+
components:
78+
- type: StatusEffects
79+
allowed:
80+
- Stun
81+
- KnockedDown
82+
- SlowedDown
83+
- Stutter
84+
- Electrocution
85+
- ForcedSleep
86+
- TemporaryBlindness
87+
- Pacified
88+
- StaminaModifier
89+
- Flashed
90+
- RadiationProtection
91+
- Drowsiness
92+
- Adrenaline
93+
- type: Bloodstream
94+
bloodMaxVolume: 150
95+
- type: MobPrice
96+
price: 150
97+
- type: FloatingVisuals
Lines changed: 174 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,174 @@
1+
- type: entity
2+
parent: [ ESPSimpleSpaceMobBase, FlyingMobBase ]
3+
id: ESPBaseMobDragon
4+
suffix: ""
5+
name: space dragon
6+
description: A flying leviathan, loosely related to space carps.
7+
abstract: true
8+
components:
9+
- type: Bloodstream
10+
bloodMaxVolume: 650
11+
- type: GhostRole
12+
allowMovement: true
13+
allowSpeech: true
14+
makeSentient: true
15+
name: ghost-role-information-space-dragon-name
16+
description: ghost-role-information-space-dragon-description
17+
rules: ghost-role-information-space-dragon-rules
18+
mindRoles:
19+
- MindRoleGhostRoleTeamAntagonist
20+
raffle:
21+
settings: default
22+
- type: GhostTakeoverAvailable
23+
- type: HTN
24+
rootTask:
25+
task: XenoCompound
26+
blackboard:
27+
NavInteract: !type:Bool
28+
true
29+
NavPry: !type:Bool
30+
true
31+
NavSmash: !type:Bool
32+
true
33+
- type: NpcFactionMember
34+
factions:
35+
- Dragon
36+
- type: Speech
37+
speechVerb: LargeMob
38+
- type: MobMover
39+
- type: InputMover
40+
- type: MovementSpeedModifier
41+
baseWalkSpeed: 3
42+
baseSprintSpeed: 5
43+
baseWeightlessModifier: 1.5
44+
- type: RandomSprite
45+
available:
46+
- enum.DamageStateVisualLayers.Base:
47+
alive: Rainbow
48+
- type: Sprite
49+
sprite: Mobs/Aliens/Carps/dragon.rsi
50+
noRot: true
51+
layers:
52+
- map: [ "enum.DamageStateVisualLayers.Base" ]
53+
state: alive
54+
- map: [ "enum.DamageStateVisualLayers.BaseUnshaded" ]
55+
state: alive-unshaded
56+
shader: unshaded
57+
- type: Appearance
58+
- type: DamageStateVisuals
59+
states:
60+
Alive:
61+
Base: alive
62+
BaseUnshaded: alive-unshaded
63+
Critical:
64+
Base: crit
65+
Dead:
66+
Base: dead
67+
BaseUnshaded: dead-unshaded
68+
- type: Fixtures
69+
fixtures:
70+
fix1:
71+
shape:
72+
!type:PhysShapeCircle
73+
radius: 0.40
74+
density: 100
75+
mask:
76+
- FlyingMobMask
77+
layer:
78+
- FlyingMobLayer
79+
- type: MobState
80+
- type: MobStateActions
81+
actions:
82+
Critical:
83+
- ActionCritSuccumb
84+
- ActionCritLastWords
85+
- type: MobThresholds
86+
thresholds:
87+
0: Alive
88+
450: Critical
89+
500: Dead
90+
- type: SlowOnDamage
91+
speedModifierThresholds:
92+
250: 0.7
93+
400: 0.5
94+
# disable taking damage from fire, since its a fire breathing dragon
95+
- type: Flammable
96+
damage:
97+
types: {}
98+
- type: StatusEffects # Overwriting basesimplemob to remove flash, getting flashed as dragon just feelsbad
99+
allowed:
100+
- SlowedDown
101+
- Stutter
102+
- Electrocution
103+
- ForcedSleep
104+
- TemporaryBlindness
105+
- Pacified
106+
- RadiationProtection
107+
- Drowsiness
108+
- Adrenaline
109+
- type: Temperature
110+
heatDamageThreshold: 800
111+
- type: Butcherable
112+
spawned:
113+
- id: FoodMeatDragon
114+
amount: 2
115+
- type: InteractionPopup
116+
successChance: 0.25 # It's no goose, but you better smell like carp.
117+
interactSuccessString: petting-success-dragon
118+
interactFailureString: petting-failure-dragon
119+
interactFailureSound:
120+
path: /Audio/Animals/space_dragon_roar.ogg
121+
soundPerceivedByOthers: false # A 75% chance for a loud roar would get old fast.
122+
- type: MeleeWeapon
123+
altDisarm: false
124+
soundHit:
125+
path: /Audio/Weapons/Xeno/alien_claw_flesh3.ogg
126+
damage:
127+
types:
128+
Piercing: 15
129+
Slash: 15
130+
- type: Devourer
131+
foodPreference: Humanoid
132+
shouldStoreDevoured: true
133+
chemical: Ichor
134+
healRate: 7.5
135+
whitelist:
136+
components:
137+
- MobState
138+
- Door
139+
tags:
140+
- Wall
141+
- type: Tag
142+
tags:
143+
- CannotSuicide
144+
- DoorBumpOpener
145+
- type: Puller
146+
needsHands: false
147+
- type: RandomMetadata
148+
nameSegments:
149+
- NamesDragon
150+
- NamesDragonTitle
151+
nameFormat: name-format-dragon
152+
- type: Prying
153+
pryPowered: true
154+
force: true
155+
speedModifier: 2.5 # fast because dragon strong
156+
useSound:
157+
path: /Audio/Items/crowbar.ogg
158+
159+
- type: entity
160+
parent: ESPBaseMobDragon
161+
id: ESPMobDragon
162+
suffix: ESP
163+
components:
164+
- type: Dragon
165+
spawnRiftAction: ActionSpawnRift
166+
- type: GhostRole
167+
mindRoles:
168+
- MindRoleDragon
169+
- type: ActionGun
170+
action: ActionDragonsBreath
171+
gunProto: DragonsBreathGun
172+
- type: GuideHelp
173+
guides:
174+
- MinorAntagonists
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
- type: entity
2+
save: false
3+
name: NeoUrist McHands
4+
suffix: ESP
5+
parent: ESPBaseMobHuman
6+
id: MobHumanNeo
7+
8+
# TODO more prototypes

0 commit comments

Comments
 (0)