New Species: Diona (#11497)

* new species: Diona

* more diona stuff

* dey breathing now

* test fixe

* fix a merge

* now actually fix the merge

* foobar

* oversight

* ok now the rest of em
This commit is contained in:
Nemanja
2022-11-08 15:26:59 -05:00
committed by GitHub
parent 2c2ecf8eca
commit fd9bedae9a
44 changed files with 945 additions and 2 deletions

View File

@@ -26,11 +26,16 @@ namespace Content.Shared.Humanoid
switch (speciesProto.Naming)
{
case SpeciesNaming.TheFirstofLast:
return Loc.GetString("namepreset-thefirstoflast",
("first", GetFirstName(speciesProto, gender)), ("last", GetLastName(speciesProto)));
case SpeciesNaming.FirstDashFirst:
return $"{GetFirstName(speciesProto, gender)}-{GetFirstName(speciesProto, gender)}";
return Loc.GetString("namepreset-firstdashfirst",
("first1", GetFirstName(speciesProto, gender)), ("first2", GetFirstName(speciesProto, gender)));
case SpeciesNaming.FirstLast:
default:
return $"{GetFirstName(speciesProto, gender)} {GetLastName(speciesProto)}";
return Loc.GetString("namepreset-firstlast",
("first", GetFirstName(speciesProto, gender)), ("last", GetLastName(speciesProto)));
}
}

View File

@@ -126,4 +126,5 @@ public enum SpeciesNaming : byte
{
FirstLast,
FirstDashFirst,
TheFirstofLast
}

View File

@@ -0,0 +1,14 @@
marking-DionaThornsHead-thorns_head = Diona Head (Thorns)
marking-DionaThornsHead = Diona Head (Thorns)
marking-DionaThornsBody-thorns_body = Diona Chest (Thorns)
marking-DionaThornsBody = Diona Chest (Thorns)
marking-DionaFlowersHead-flowers_head = Diona Head (Flowers)
marking-DionaFlowersHead = Diona Head (Flowers)
marking-DionaFlowersBody-flowers_body = Diona Chest (Flowers)
marking-DionaFlowersBody = Diona Chest (Flowers)
marking-DionaLeafCover-leaf_cover = Diona Chest (Leaf)
marking-DionaLeafCover = Diona Chest (Leaf)

View File

@@ -0,0 +1,3 @@
namepreset-firstlast = {$first} {$last}
namepreset-firstdashfirst = {$first1}-{$first2}
namepreset-thefirstoflast = The {$first} of {$last}

View File

@@ -4,3 +4,4 @@ species-name-human = Human
species-name-dwarf = Dwarf
species-name-reptilian = Reptilian
species-name-slime = Slime Person
species-name-diona = Diona

View File

@@ -0,0 +1,90 @@
- type: entity
id: BaseDionaOrgan
parent: BaseItem
abstract: true
components:
- type: Sprite
netsync: false
sprite: Mobs/Species/Diona/organs.rsi
- type: Organ
- type: Food
- type: Extractable
grindableSolutionName: organ
- type: SolutionContainerManager
solutions:
organ:
reagents:
- ReagentId: Nutriment
Quantity: 10
- type: entity
id: OrganDionaBrain
parent: BaseDionaOrgan
name: brain
description: "The source of incredible, unending intelligence. Honk."
components:
- type: Sprite
state: brain
- type: Organ
- type: Input
context: "ghost"
- type: InputMover
- type: SolutionContainerManager
solutions:
organ:
reagents:
- ReagentId: Nutriment
Quantity: 10
Lung:
canReact: False
- type: MovementSpeedModifier
baseWalkSpeed: 0
baseSprintSpeed: 0
- type: GhostOnMove
- type: Brain
- 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
parent: BaseDionaOrgan
name: eyes
description: "I see you!"
components:
- type: Sprite
layers:
- state: eyeball-l
- state: eyeball-r
- type: Organ
- type: entity
id: OrganDionaStomach
parent: BaseDionaOrgan
name: stomach
description: "Gross. This is hard to stomach."
components:
- type: Sprite
state: stomach
- type: Organ
- type: SolutionContainerManager
solutions:
stomach:
maxVol: 250
- type: Stomach
- type: Metabolizer
maxReagents: 6
metabolizerTypes: [ Plant ]
removeEmpty: true
groups:
- id: Food
- id: Drink
- id: Medicine
- id: Poison
- id: Narcotic

View File

@@ -0,0 +1,159 @@
- type: entity
id: PartDiona
parent: BaseItem
name: "diona body part"
abstract: true
components:
- type: Damageable
damageContainer: Biological
- type: BodyPart
- type: ContainerContainer
containers:
bodypart: !type:Container
ents: []
- type: Sprite
netsync: false
sprite: Mobs/Species/Diona/parts.rsi
- type: Icon
sprite: Mobs/Species/Diona/parts.rsi
- type: StaticPrice
price: 100
- type: entity
id: TorsoDiona
name: "diona torso"
parent: PartDiona
components:
- type: Sprite
state: "torso_m"
- type: Icon
state: "torso_m"
- type: BodyPart
partType: Torso
- type: entity
id: HeadDiona
name: "diona head"
parent: PartDiona
components:
- type: Sprite
state: "head_m"
- type: Icon
state: "head_m"
- type: BodyPart
partType: Head
vital: true
- type: Input
context: "ghost"
- type: MovementSpeedModifier
baseWalkSpeed: 0
baseSprintSpeed: 0
- type: InputMover
- type: GhostOnMove
- type: Tag
tags:
- Head
- type: entity
id: LeftArmDiona
name: "left diona arm"
parent: PartDiona
components:
- type: Sprite
state: "l_arm"
- type: Icon
state: "l_arm"
- type: BodyPart
partType: Arm
symmetry: Left
- type: entity
id: RightArmDiona
name: "right diona arm"
parent: PartDiona
components:
- type: Sprite
state: "r_arm"
- type: Icon
state: "r_arm"
- type: BodyPart
partType: Arm
symmetry: Right
- type: entity
id: LeftHandDiona
name: "left diona hand"
parent: PartDiona
components:
- type: Sprite
state: "l_hand"
- type: Icon
state: "l_hand"
- type: BodyPart
partType: Hand
symmetry: Left
- type: entity
id: RightHandDiona
name: "right diona hand"
parent: PartDiona
components:
- type: Sprite
state: "r_hand"
- type: Icon
state: "r_hand"
- type: BodyPart
partType: Hand
symmetry: Right
- type: entity
id: LeftLegDiona
name: "left diona leg"
parent: PartDiona
components:
- type: Sprite
state: "l_leg"
- type: Icon
state: "l_leg"
- type: BodyPart
partType: Leg
symmetry: Left
- type: entity
id: RightLegDiona
name: "right diona leg"
parent: PartDiona
components:
- type: Sprite
state: "r_leg"
- type: Icon
state: "r_leg"
- type: BodyPart
partType: Leg
symmetry: Right
- type: entity
id: LeftFootDiona
name: "left diona foot"
parent: PartDiona
components:
- type: Sprite
state: "l_foot"
- type: Icon
state: "l_foot"
- type: BodyPart
partType: Foot
symmetry: Left
- type: entity
id: RightFootDiona
name: "right diona foot"
parent: PartDiona
components:
- type: Sprite
state: "r_foot"
- type: Icon
state: "r_foot"
- type: BodyPart
partType: Foot
symmetry: Right

View File

@@ -0,0 +1,45 @@
- type: body
id: Diona
name: diona
root: torso
slots:
head:
part: HeadDiona
connections:
- torso
organs:
brain: OrganDionaBrain
eyes: OrganDionaEyes
torso:
part: TorsoDiona
connections:
- left arm
- right arm
- left leg
- right leg
organs:
stomach: OrganDionaStomach
right arm:
part: RightArmDiona
connections:
- right hand
left arm:
part: LeftArmDiona
connections:
- left hand
right hand:
part: RightHandDiona
left hand:
part: LeftHandDiona
right leg:
part: RightLegDiona
connections:
- right foot
left leg:
part: LeftLegDiona
connections:
- left foot
right foot:
part: RightFootDiona
left foot:
part: LeftFootDiona

View File

@@ -18,3 +18,6 @@
- type: metabolizerType
id: Rat
- type: metabolizerType
id: Plant

View File

@@ -109,6 +109,14 @@
Heat: 0.9
Poison: 0.9
- type: damageModifierSet
id: Diona
coefficients:
Blunt: 0.7
Slash: 0.8
Heat: 1.5
Shock: 1.2
- type: damageModifierSet
id: Zombie #Blunt resistent and immune to biological threats, but can be hacked apart and burned
coefficients:

View File

@@ -0,0 +1,50 @@
- type: dataset
id: DionaFirst
values:
- Moss
- Mushroom
- Herb
- Ivy
- Stalk
- Petal
- Thorn
- Rose
- Dandelion
- Birch
- Willow
- Bay
- Lake
- River
- Creek
- Meadow
- Canyon
- Mountain
- Peak
- Garden
- Soil
- Flower
- type: dataset
id: DionaLast
values:
- Peace
- Harmony
- Relaxation
- Serendipity
- Calmness
- Introspection
- Union
- Comfort
- Dreams
- Quietude
- Balance
- Gentleness
- Placidity
- Repose
- Serenity
- Stillness
- Tranquility
- Ease
- Equilibrium
- Composure
- Control

View File

@@ -0,0 +1,44 @@
- type: marking
id: DionaThornsHead
bodyPart: Head
markingCategory: Head
speciesRestriction: [Diona]
sprites:
- sprite: Mobs/Customization/diona.rsi
state: thorns_head
- type: marking
id: DionaThornsBody
bodyPart: Chest
markingCategory: Chest
speciesRestriction: [Diona]
sprites:
- sprite: Mobs/Customization/diona.rsi
state: thorns_body
- type: marking
id: DionaFlowersHead
bodyPart: Head
markingCategory: Head
speciesRestriction: [Diona]
sprites:
- sprite: Mobs/Customization/diona.rsi
state: flowers_head
- type: marking
id: DionaFlowersBody
bodyPart: Chest
markingCategory: Chest
speciesRestriction: [Diona]
sprites:
- sprite: Mobs/Customization/diona.rsi
state: flowers_body
- type: marking
id: DionaLeafCover
bodyPart: Chest
markingCategory: Chest
speciesRestriction: [Diona]
sprites:
- sprite: Mobs/Customization/diona.rsi
state: leaf_cover

View File

@@ -0,0 +1,34 @@
- type: entity
save: false
name: Urist McPlants
parent: BaseMobDiona
id: MobDiona
components:
- type: CombatMode
canDisarm: true
- type: InteractionPopup
successChance: 1
interactSuccessString: hugging-success-generic
interactSuccessSound: /Audio/Effects/thudswoosh.ogg
messagePerceivedByOthers: hugging-success-generic-others
- type: Mind
showExamineInfo: true
- type: Input
context: "human"
- type: Respirator
damage:
types:
Asphyxiation: 0.5
damageRecovery:
types:
Asphyxiation: -1.0
- type: MobMover
- type: InputMover
- type: Alerts
- type: Eye
- type: CameraRecoil
- type: Examiner
- type: CanHostGuardian
- type: Faction
factions:
- NanoTrasen

View File

@@ -0,0 +1,64 @@
- type: entity
save: false
name: Urist McPlants
parent: BaseMobOrganic
id: BaseMobDiona
abstract: true
components:
- type: Humanoid
species: Diona
- type: Hunger
- type: Thirst
baseDecayRate: 0.3
- type: Icon
sprite: Mobs/Species/Diona/parts.rsi
state: full
- type: Body
prototype: Diona
- type: Damageable
damageContainer: Biological
damageModifierSet: Diona
- type: Butcherable
butcheringType: Spike
spawned:
- id: FoodMeatPlant
amount: 5
- type: Bloodstream
bloodReagent: Water
bloodlossDamage:
types:
Bloodloss:
1
bloodlossHealDamage:
types:
Bloodloss:
-0.25
- type: Fixtures
fixtures:
- shape:
!type:PhysShapeCircle
radius: 0.35
density: 300 #weighs more than humans because wood
restitution: 0.0
mask:
- MobMask
layer:
- MobLayer
- type: Inventory
templateId: diona
- type: MovementSpeedModifier
baseWalkSpeed : 1.5
baseSprintSpeed : 3.5
- type: entity
save: false
name: Urist McHands
parent: MobHumanDummy
id: MobDionaDummy
noSpawn: true
description: A dummy diona meant to be used in character setup.
components:
- type: Inventory
templateId: diona
- type: Humanoid
species: Diona

View File

@@ -0,0 +1,110 @@
#human but no shoes
- type: inventoryTemplate
id: diona
slots:
- name: jumpsuit
slotTexture: uniform
slotFlags: INNERCLOTHING
stripTime: 6
uiWindowPos: 0,2
strippingWindowPos: 0,2
displayName: Jumpsuit
- name: outerClothing
slotTexture: suit
slotFlags: OUTERCLOTHING
slotGroup: MainHotbar
stripTime: 6
uiWindowPos: 1,2
strippingWindowPos: 1,2
displayName: Suit
- name: gloves
slotTexture: gloves
slotFlags: GLOVES
uiWindowPos: 2,2
strippingWindowPos: 2,2
displayName: Gloves
- name: neck
slotTexture: neck
slotFlags: NECK
uiWindowPos: 0,1
strippingWindowPos: 0,1
displayName: Neck
- name: mask
slotTexture: mask
slotFlags: MASK
uiWindowPos: 1,1
strippingWindowPos: 1,1
displayName: Mask
- name: eyes
slotTexture: glasses
slotFlags: EYES
stripTime: 3
uiWindowPos: 0,0
strippingWindowPos: 0,0
displayName: Eyes
- name: ears
slotTexture: ears
slotFlags: EARS
stripTime: 3
uiWindowPos: 2,0
strippingWindowPos: 2,0
displayName: Ears
- name: head
slotTexture: head
slotFlags: HEAD
uiWindowPos: 1,0
strippingWindowPos: 1,0
displayName: Head
- name: pocket1
slotTexture: pocket
slotFlags: POCKET
slotGroup: MainHotbar
stripTime: 3
uiWindowPos: 0,3
strippingWindowPos: 0,4
dependsOn: jumpsuit
displayName: Pocket 1
stripHidden: true
- name: pocket2
slotTexture: pocket
slotFlags: POCKET
slotGroup: MainHotbar
stripTime: 3
uiWindowPos: 2,3
strippingWindowPos: 1,4
dependsOn: jumpsuit
displayName: Pocket 2
stripHidden: true
- name: suitstorage
slotTexture: suit_storage
slotFlags: SUITSTORAGE
stripTime: 3
uiWindowPos: 2,0
strippingWindowPos: 2,5
dependsOn: outerClothing
displayName: Suit Storage
- name: id
slotTexture: id
slotFlags: IDCARD
slotGroup: SecondHotbar
stripTime: 6
uiWindowPos: 2,1
strippingWindowPos: 2,4
dependsOn: jumpsuit
displayName: ID
- name: belt
slotTexture: belt
slotFlags: BELT
slotGroup: SecondHotbar
stripTime: 6
uiWindowPos: 3,1
strippingWindowPos: 1,5
displayName: Belt
- name: back
slotTexture: back
slotFlags: BACK
slotGroup: SecondHotbar
stripTime: 6
uiWindowPos: 3,0
strippingWindowPos: 0,5
displayName: Back

View File

@@ -9,6 +9,13 @@
plantMetabolism:
- !type:PlantAdjustNutrition
amount: 1
metabolisms:
Food:
effects:
- !type:SatiateHunger
conditions:
- !type:OrganType
type: Plant
- type: reagent
id: Left4Zed
@@ -26,6 +33,20 @@
- !type:PlantAdjustMutationMod
prob: 0.3
amount: 0.2
metabolisms:
Medicine:
effects:
- !type:SatiateHunger
conditions:
- !type:OrganType
type: Plant
- !type:HealthChange
damage:
types:
Poison: 1
conditions:
- !type:OrganType
type: Plant
- type: reagent
id: PestKiller
@@ -40,6 +61,16 @@
amount: 4
- !type:PlantAdjustPests
amount: -6
metabolisms:
Medicine:
effects:
- !type:HealthChange
damage:
types:
Poison: 3
conditions:
- !type:OrganType
type: Plant
- type: reagent
id: PlantBGone
@@ -58,6 +89,19 @@
amount: -20
- !type:PlantAdjustMutationMod
amount: 0.1
metabolisms:
Medicine:
effects:
- !type:HealthChange
damage:
types:
Poison: -4
Blunt: 2
Slash: 1
Piercing: 1
conditions:
- !type:OrganType
type: Plant
- type: reagent
id: RobustHarvest
@@ -77,6 +121,19 @@
prob: 0.025
amount: 1
- !type:RobustHarvest {}
metabolisms:
Poison:
effects:
- !type:HealthChange
damage:
types:
Poison: -2
Blunt: -3
Slash: -3
Piercing: -3
conditions:
- !type:OrganType
type: Plant
- type: reagent
id: WeedKiller
@@ -91,6 +148,16 @@
amount: 4
- !type:PlantAdjustWeeds
amount: -6
metabolisms:
Poison:
effects:
- !type:HealthChange
damage:
types:
Poison: 4
conditions:
- !type:OrganType
type: Plant
- type: reagent
id: Ammonia

View File

@@ -22,6 +22,10 @@
conditions:
- !type:OrganType
type: Rat
- !type:Oxygenate
conditions:
- !type:OrganType
type: Plant
# Convert Oxygen into CO2.
- !type:ModifyLungGas
conditions:

View File

@@ -0,0 +1,122 @@
- type: species
id: Diona
name: species-name-diona
roundStart: true
prototype: MobDiona
sprites: MobDionaSprites
markingLimits: MobDionaMarkingLimits
dollPrototype: MobDionaDummy
skinColoration: TintedHues
maleFirstNames: DionaFirst
femaleFirstNames: DionaFirst
lastNames: DionaLast
naming: TheFirstofLast
- type: speciesBaseSprites
id: MobDionaSprites
sprites:
Head: MobDionaHead
Chest: MobDionaTorso
LArm: MobDionaLArm
RArm: MobDionaRArm
LHand: MobDionaLHand
RHand: MobDionaRHand
LLeg: MobDionaLLeg
RLeg: MobDionaRLeg
LFoot: MobDionaLFoot
RFoot: MobDionaRFoot
- type: markingPoints
id: MobDionaMarkingLimits
onlyWhitelisted: true
points:
HeadTop:
points: 1
required: false
Chest:
points: 1
required: false
- type: humanoidBaseSprite
id: MobDionaHead
baseSprite:
sprite: Mobs/Species/Diona/parts.rsi
state: head_m
- type: humanoidBaseSprite
id: MobDionaHeadMale
baseSprite:
sprite: Mobs/Species/Diona/parts.rsi
state: head_m
- type: humanoidBaseSprite
id: MobDionaHeadFemale
baseSprite:
sprite: Mobs/Species/Diona/parts.rsi
state: head_f
- type: humanoidBaseSprite
id: MobDionaTorso
baseSprite:
sprite: Mobs/Species/Diona/parts.rsi
state: torso_m
- type: humanoidBaseSprite
id: MobDionaTorsoMale
baseSprite:
sprite: Mobs/Species/Diona/parts.rsi
state: torso_m
- type: humanoidBaseSprite
id: MobDionaTorsoFemale
baseSprite:
sprite: Mobs/Species/Diona/parts.rsi
state: torso_f
- type: humanoidBaseSprite
id: MobDionaLLeg
baseSprite:
sprite: Mobs/Species/Diona/parts.rsi
state: l_leg
- type: humanoidBaseSprite
id: MobDionaLHand
baseSprite:
sprite: Mobs/Species/Diona/parts.rsi
state: l_hand
- type: humanoidBaseSprite
id: MobDionaLArm
baseSprite:
sprite: Mobs/Species/Diona/parts.rsi
state: l_arm
- type: humanoidBaseSprite
id: MobDionaLFoot
baseSprite:
sprite: Mobs/Species/Diona/parts.rsi
state: l_foot
- type: humanoidBaseSprite
id: MobDionaRLeg
baseSprite:
sprite: Mobs/Species/Diona/parts.rsi
state: r_leg
- type: humanoidBaseSprite
id: MobDionaRHand
baseSprite:
sprite: Mobs/Species/Diona/parts.rsi
state: r_hand
- type: humanoidBaseSprite
id: MobDionaRArm
baseSprite:
sprite: Mobs/Species/Diona/parts.rsi
state: r_arm
- type: humanoidBaseSprite
id: MobDionaRFoot
baseSprite:
sprite: Mobs/Species/Diona/parts.rsi
state: r_foot

Binary file not shown.

After

Width:  |  Height:  |  Size: 580 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 441 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 911 B

View File

@@ -0,0 +1,31 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "https://github.com/Citadel-Station-13/Citadel-Station-13-RP/commit/38051f45d3b26bd31f6e292239f43adb36ff01fe, modified by EmoGarbage",
"size": {
"x": 32,
"y": 32
},
"states": [
{
"name": "flowers_body",
"directions": 4
},
{
"name": "flowers_head",
"directions": 4
},
{
"name": "leaf_cover",
"directions": 4
},
{
"name": "thorns_body",
"directions": 4
},
{
"name": "thorns_head",
"directions": 4
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 543 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 406 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 580 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 661 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 359 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 339 B

View File

@@ -0,0 +1,26 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "https://github.com/Citadel-Station-13/Citadel-Station-13-RP/commit/38051f45d3b26bd31f6e292239f43adb36ff01fe",
"size": {
"x": 32,
"y": 32
},
"states": [
{
"name": "brain"
},
{
"name": "ears"
},
{
"name": "eyeball-l"
},
{
"name": "eyeball-r"
},
{
"name": "stomach"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 425 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 817 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 817 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 579 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 571 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 448 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 799 B

View File

@@ -0,0 +1,62 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "https://github.com/ParadiseSS13/Paradise/commit/924e8cc949a40ea64a978656dbbc0b43b4a8f33a and modified by EmoGarbage",
"size": {
"x": 32,
"y": 32
},
"states": [
{
"name": "full"
},
{
"name": "head_f",
"directions": 4
},
{
"name": "head_m",
"directions": 4
},
{
"name": "l_arm",
"directions": 4
},
{
"name": "l_foot",
"directions": 4
},
{
"name": "l_hand",
"directions": 4
},
{
"name": "l_leg",
"directions": 4
},
{
"name": "r_arm",
"directions": 4
},
{
"name": "r_foot",
"directions": 4
},
{
"name": "r_hand",
"directions": 4
},
{
"name": "r_leg",
"directions": 4
},
{
"name": "torso_f",
"directions": 4
},
{
"name": "torso_m",
"directions": 4
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 511 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 549 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 482 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 711 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB