Diona Nymphs & Splitting (#24630)

* Porting & implementation

* Fix two stupid errors

* Human not humans

* fix audio path

* Fix test fails & update cooldown

* Work on reviews & test fail

* Rework nymph organ system.

* Make the nymph organs nospawn.

* IsDeadIC
This commit is contained in:
LankLTE
2024-02-16 18:54:44 -08:00
committed by GitHub
parent 699ee6e0c8
commit 407d4aed58
27 changed files with 743 additions and 17 deletions

View File

@@ -131,4 +131,10 @@
- files: ["dog_bark3.ogg"]
license: "CC0-1.0"
copyright: "Audio is recorded/created by KFerentchak 'FreeSound.org'. The original audio was trimmed and renamed"
source: "https://freesound.org/people/KFerentchak/sounds/235912/"
source: "https://freesound.org/people/KFerentchak/sounds/235912/"
- files: ["nymph_chirp.ogg"]
license: "CC-BY-SA-3.0"
copyright: "Taken from ParadiseSS13"
source: "https://github.com/ParadiseSS13/Paradise/commit/a34f1054cef5a44a67fdac3b67b811137c6071dd"

Binary file not shown.

View File

@@ -0,0 +1,3 @@
diona-gib-action-use = {$name} splits apart in an instant!
diona-reform-attempt = {$name} attempts to reform!

View File

@@ -31,6 +31,7 @@ petting-success-bear = You reluctantly pet {THE($target)} on {POSS-ADJ($target)}
petting-success-slimes = You pet {THE($target)} on {POSS-ADJ($target)} mucous surface.
petting-success-snake = You pet {THE($target)} on {POSS-ADJ($target)} scaly large head.
petting-success-monkey = You pet {THE($target)} on {POSS-ADJ($target)} mischevious little head.
petting-success-nymph = You pet {THE($target)} on {POSS-ADJ($target)} wooden little head.
petting-failure-generic = You reach out to pet {THE($target)}, but {SUBJECT($target)} {CONJUGATE-BE($target)} aloof towards you.
@@ -51,6 +52,7 @@ petting-failure-dragon = You raise your hand, but as {THE($target)} roars, you d
petting-failure-hamster = You reach out to pet {THE($target)}, but {SUBJECT($target)} attempts to bite your finger and only your quick reflexes save you from an almost fatal injury.
petting-failure-bear = You reach out to pet {THE($target)}, but {SUBJECT($target)} growls, making you think twice.
petting-failure-monkey = You reach out to pet {THE($target)}, but {SUBJECT($target)} almost bites your fingers!
petting-failure-nymph = You reach out to pet {THE($target)}, but {POSS-ADJ($target)} moves their branches away.
petting-failure-shadow = You're trying to pet {THE($target)}, but your hand passes through the cold darkness of his body.
## Petting silicons

View File

@@ -0,0 +1,21 @@
- type: entity
id: DionaGibAction
name: Gib Yourself!
description: Split apart into 3 nymphs.
noSpawn: true
components:
- type: InstantAction
icon: Mobs/Species/Diona/organs.rsi/brain.png
event: !type:GibActionEvent {}
checkCanInteract: false
- type: entity
id: DionaReformAction
name: Reform
description: Reform back into a whole Diona.
noSpawn: true
components:
- type: InstantAction
icon: Mobs/Species/Diona/parts.rsi/full.png
event: !type:ReformEvent {}
useDelay: 300 # Once every 10 minutes. Keep them dead for a fair bit before reforming

View File

@@ -48,18 +48,6 @@
reagents:
- ReagentId: UncookedAnimalProteins
Quantity: 5
- type: Brain
- type: InputMover
- type: Examiner
- type: Lung #lungs in they head. why they there tho?
- type: Metabolizer
removeEmpty: true
solutionOnBody: false
solution: "Lung"
metabolizerTypes: [ Plant ]
groups:
- id: Gas
rateModifier: 100.0
- type: entity
id: OrganDionaEyes
@@ -102,3 +90,104 @@
- id: Narcotic
- id: Alcohol
rateModifier: 0.1
- type: entity
id: OrganDionaLungs
parent: BaseDionaOrgan
name: lungs
description: "Filters oxygen from an atmosphere, which is then sent into the bloodstream to be used as an electron carrier."
components:
- type: Sprite
sprite: Mobs/Species/Human/organs.rsi
layers:
- state: lung-l
- state: lung-r
- type: Lung
- type: Metabolizer
removeEmpty: true
solutionOnBody: false
solution: "Lung"
metabolizerTypes: [ Plant ]
groups:
- id: Gas
rateModifier: 100.0
- type: SolutionContainerManager
solutions:
organ:
maxVol: 10
reagents:
- ReagentId: Nutriment
Quantity: 10
Lung:
maxVol: 100
canReact: False
# Organs that turn into nymphs on removal
- type: entity
id: OrganDionaBrainNymph
parent: OrganDionaBrain
noSpawn: true
name: brain
description: "The source of incredible, unending intelligence. Honk."
components:
- type: Brain
- type: Nymph # This will make the organs turn into a nymph when they're removed.
entityPrototype: OrganDionaNymphBrain
transferMind: true
- type: entity
id: OrganDionaStomachNymph
parent: OrganDionaStomach
noSpawn: true
name: stomach
description: "Gross. This is hard to stomach."
components:
- type: Nymph
entityPrototype: OrganDionaNymphStomach
- type: entity
id: OrganDionaLungsNymph
parent: OrganDionaLungs
noSpawn: true
name: lungs
description: "Filters oxygen from an atmosphere, which is then sent into the bloodstream to be used as an electron carrier."
components:
- type: Nymph
entityPrototype: OrganDionaNymphLungs
# Nymphs that the organs will turn into
- type: entity
id: OrganDionaNymphBrain
parent: MobDionaNymph
noSpawn: true
name: diona nymph
suffix: Brain
description: Contains the brain of a formerly fully-formed Diona. Killing this would kill the Diona forever. You monster.
components:
- type: IsDeadIC
- type: Body
prototype: AnimalNymphBrain
- type: entity
id: OrganDionaNymphStomach
parent: MobDionaNymph
noSpawn: true
name: diona nymph
suffix: Stomach
description: Contains the stomach of a formerly fully-formed Diona. It doesn't taste any better for it.
components:
- type: IsDeadIC
- type: Body
prototype: AnimalNymphStomach
- type: entity
id: OrganDionaNymphLungs
parent: MobDionaNymph
noSpawn: true
name: diona nymph
suffix: Lungs
description: Contains the lungs of a formerly fully-formed Diona. Breathtaking.
components:
- type: IsDeadIC
- type: Body
prototype: AnimalNymphLungs

View File

@@ -0,0 +1,66 @@
- type: body
id: AnimalNymphBrain
name: "nymph"
root: torso
slots:
torso:
part: TorsoAnimal
connections:
- legs
organs:
brain: OrganDionaBrain
lungs: OrganAnimalLungs
stomach: OrganAnimalStomach
liver: OrganAnimalLiver
heart: OrganAnimalHeart
kidneys: OrganAnimalKidneys
legs:
part: LegsAnimal
connections:
- feet
feet:
part: FeetAnimal
- type: body
id: AnimalNymphLungs
name: "nymph"
root: torso
slots:
torso:
part: TorsoAnimal
connections:
- legs
organs:
lungs: OrganDionaLungs
stomach: OrganAnimalStomach
liver: OrganAnimalLiver
heart: OrganAnimalHeart
kidneys: OrganAnimalKidneys
legs:
part: LegsAnimal
connections:
- feet
feet:
part: FeetAnimal
- type: body
id: AnimalNymphStomach
name: "nymph"
root: torso
slots:
torso:
part: TorsoAnimal
connections:
- legs
organs:
lungs: OrganAnimalLungs
stomach: OrganDionaStomach
liver: OrganAnimalLiver
heart: OrganAnimalHeart
kidneys: OrganAnimalKidneys
legs:
part: LegsAnimal
connections:
- feet
feet:
part: FeetAnimal

View File

@@ -8,8 +8,7 @@
connections:
- torso
organs:
brain: OrganDionaBrain
eyes: OrganDionaEyes
brain: OrganDionaBrainNymph
torso:
part: TorsoDiona
connections:
@@ -18,7 +17,8 @@
- right leg
- left leg
organs:
stomach: OrganDionaStomach
stomach: OrganDionaStomachNymph
lungs: OrganDionaLungsNymph
right arm:
part: RightArmDiona
connections:

View File

@@ -3099,3 +3099,77 @@
factions:
- Passive
- type: entity
name: diona nymph
parent: SimpleMobBase
id: MobDionaNymph
description: It's like a cat, only.... branch-ier.
components:
- type: Sprite
drawdepth: Mobs
layers:
- map: ["enum.DamageStateVisualLayers.Base"]
state: nymph
sprite: Mobs/Animals/nymph.rsi
- type: Physics
- type: Fixtures
fixtures:
fix1:
shape:
!type:PhysShapeCircle
radius: 0.35
density: 100 # High, because wood is heavy.
mask:
- MobMask
layer:
- MobLayer
- type: Inventory
speciesId: cat
templateId: pet
- type: InventorySlots
- type: Strippable
- type: Bloodstream
bloodReagent: Water
bloodMaxVolume: 60
- type: UserInterface
interfaces:
- key: enum.StrippingUiKey.Key
type: StrippableBoundUserInterface
- type: DamageStateVisuals
states:
Alive:
Base: nymph
Critical:
Base: nymph_sleep
Dead:
Base: nymph_dead
- type: Butcherable
spawned:
- id: MaterialWoodPlank1
amount: 2
- type: InteractionPopup
successChance: 0.7
interactSuccessString: petting-success-nymph
interactFailureString: petting-failure-nymph
interactSuccessSound:
path: /Audio/Animals/nymph_chirp.ogg
- type: MobThresholds
thresholds:
0: Alive
30: Critical
60: Dead
- type: MovementSpeedModifier
baseWalkSpeed : 2.5
baseSprintSpeed : 4.5
- type: Grammar
attributes:
gender: epicene
- type: Speech
- type: Tag
tags:
- VimPilot
- type: Reform
actionPrototype: DionaReformAction
reformTime: 10
popupText: diona-reform-attempt
reformPrototype: MobDionaReformed

View File

@@ -11,3 +11,13 @@
damageRecovery:
types:
Asphyxiation: -1.0
# Reformed Diona
- type: entity
parent: MobDiona
noSpawn: true
id: MobDionaReformed
name: Reformed Diona
components:
- type: IsDeadIC
- type: RandomHumanoidAppearance

View File

@@ -94,6 +94,13 @@
- type: BodyEmotes
soundsId: DionaBodyEmotes
- type: IgnoreKudzu
- type: IgniteOnHeatDamage
fireStacks: 1
threshold: 12
- type: GibAction
actionPrototype: DionaGibAction
allowedStates:
- Dead
- type: entity
parent: BaseSpeciesDummy

Binary file not shown.

After

Width:  |  Height:  |  Size: 611 B

View File

@@ -0,0 +1,63 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "https://github.com/ParadiseSS13/Paradise/commit/f367d7de199969a5fb5054de44faa5618092f487",
"size": {
"x": 32,
"y": 32
},
"states": [
{
"name": "nymph",
"directions": 4,
"delays": [
[
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1
],
[
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1
],
[
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1
],
[
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1
]
]
},
{
"name": "nymph_dead"
},
{
"name": "nymph_sleep",
"directions": 4
},
{
"name": "icon"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 655 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB