mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-23 03:57:13 +01:00
Diona Rework
This commit is contained in:
@@ -105,6 +105,9 @@
|
||||
#define NUTRITION_LEVEL_STARVING 150
|
||||
#define NUTRITION_LEVEL_CURSED 0
|
||||
|
||||
//Used as an upper limit for species that continuously gain nutriment
|
||||
#define NUTRITION_LEVEL_ALMOST_FULL 535
|
||||
|
||||
//Blood levels
|
||||
#define BLOOD_VOLUME_MAXIMUM 2000
|
||||
#define BLOOD_VOLUME_NORMAL 560
|
||||
|
||||
@@ -88,7 +88,7 @@
|
||||
make_podman = 0
|
||||
|
||||
if(make_podman) //all conditions met!
|
||||
var/mob/living/carbon/human/diona/podman = new /mob/living/carbon/human/diona(parent.loc)
|
||||
var/mob/living/carbon/human/pod_diona/podman = new /mob/living/carbon/human/pod_diona(parent.loc)
|
||||
if(realName)
|
||||
podman.real_name = realName
|
||||
mind.transfer_to(podman)
|
||||
|
||||
@@ -106,6 +106,9 @@
|
||||
/mob/living/carbon/human/diona/Initialize(mapload)
|
||||
..(mapload, /datum/species/diona)
|
||||
|
||||
/mob/living/carbon/human/pod_diona/Initialize(mapload)
|
||||
..(mapload, /datum/species/diona/pod)
|
||||
|
||||
/mob/living/carbon/human/machine/Initialize(mapload)
|
||||
..(mapload, /datum/species/machine)
|
||||
|
||||
|
||||
@@ -7,21 +7,11 @@
|
||||
speech_sounds = list('sound/voice/dionatalk1.ogg') //Credit https://www.youtube.com/watch?v=ufnvlRjsOTI [0:13 - 0:16]
|
||||
speech_chance = 20
|
||||
unarmed_type = /datum/unarmed_attack/diona
|
||||
//primitive_form = "Nymph"
|
||||
slowdown = 5
|
||||
remains_type = /obj/effect/decal/cleanable/ash
|
||||
|
||||
|
||||
warning_low_pressure = 50
|
||||
hazard_low_pressure = -1
|
||||
|
||||
cold_level_1 = 50
|
||||
cold_level_2 = -1
|
||||
cold_level_3 = -1
|
||||
|
||||
heat_level_1 = 300
|
||||
heat_level_2 = 340
|
||||
heat_level_3 = 400
|
||||
burn_mod = 1.25
|
||||
heatmod = 1.5
|
||||
var/pod = FALSE //did they come from a pod? If so, they're stronger than normal Diona.
|
||||
|
||||
blurb = "Commonly referred to (erroneously) as 'plant people', the Dionaea are a strange space-dwelling collective \
|
||||
species hailing from Epsilon Ursae Minoris. Each 'diona' is a cluster of numerous cat-sized organisms called nymphs; \
|
||||
@@ -31,16 +21,14 @@
|
||||
even the simplest concepts of other minds. Their alien physiology allows them survive happily off a diet of nothing but light, \
|
||||
water and other radiation."
|
||||
|
||||
species_traits = list(NO_BREATHE, RADIMMUNE, IS_PLANT, NO_BLOOD, NO_PAIN)
|
||||
dies_at_threshold = TRUE
|
||||
species_traits = list(IS_PLANT)
|
||||
clothing_flags = HAS_SOCKS
|
||||
default_hair_colour = "#000000"
|
||||
has_gender = FALSE
|
||||
dietflags = 0 //Diona regenerate nutrition in light and water, no diet necessary
|
||||
taste_sensitivity = TASTE_SENSITIVITY_NO_TASTE
|
||||
dietflags = DIET_HERB //Diona regenerate nutrition in light and water, no diet necessary, but if they must, they eat other plants *scream
|
||||
taste_sensitivity = TASTE_SENSITIVITY_DULL
|
||||
skinned_type = /obj/item/stack/sheet/wood
|
||||
|
||||
body_temperature = T0C + 15 //make the plant people have a bit lower body temperature, why not
|
||||
blood_color = "#004400"
|
||||
flesh_color = "#907E4A"
|
||||
butt_sprite = "diona"
|
||||
@@ -49,6 +37,7 @@
|
||||
|
||||
has_organ = list(
|
||||
"nutrient channel" = /obj/item/organ/internal/liver/diona,
|
||||
"respiratory vacuoles" = /obj/item/organ/internal/lungs/diona,
|
||||
"neural strata" = /obj/item/organ/internal/heart/diona,
|
||||
"receptor node" = /obj/item/organ/internal/eyes/diona, //Default darksight of 2.
|
||||
"gas bladder" = /obj/item/organ/internal/brain/diona,
|
||||
@@ -85,29 +74,43 @@
|
||||
..()
|
||||
H.gender = NEUTER
|
||||
|
||||
/datum/species/diona/handle_life(mob/living/carbon/human/H)
|
||||
H.radiation = Clamp(H.radiation, 0, 100) //We have to clamp this first, then decrease it, or there's a few edge cases of massive heals if we clamp and decrease at the same time.
|
||||
var/rads = H.radiation / 25
|
||||
H.radiation = max(H.radiation-rads, 0)
|
||||
H.nutrition = min(H.nutrition+rads, NUTRITION_LEVEL_WELL_FED+10)
|
||||
H.adjustBruteLoss(-(rads))
|
||||
H.adjustToxLoss(-(rads))
|
||||
/datum/species/diona/handle_reagents(mob/living/carbon/human/H, datum/reagent/R)
|
||||
if(R.id == "glyphosate" || R.id == "atrazine")
|
||||
H.adjustToxLoss(3) //Deal aditional damage
|
||||
return TRUE
|
||||
return ..()
|
||||
|
||||
/datum/species/diona/handle_life(mob/living/carbon/human/H)
|
||||
if(H.stat == DEAD)
|
||||
return
|
||||
var/light_amount = 0 //how much light there is in the place, affects receiving nutrition and healing
|
||||
if(isturf(H.loc)) //else, there's considered to be no light
|
||||
var/turf/T = H.loc
|
||||
light_amount = min(T.get_lumcount() * 10, 5) //hardcapped so it's not abused by having a ton of flashlights
|
||||
H.nutrition = min(H.nutrition+light_amount, NUTRITION_LEVEL_WELL_FED+10)
|
||||
light_amount = min(1, T.get_lumcount()) - 0.5
|
||||
H.nutrition += light_amount * 10
|
||||
if(H.nutrition > NUTRITION_LEVEL_ALMOST_FULL)
|
||||
H.nutrition = NUTRITION_LEVEL_ALMOST_FULL
|
||||
if(light_amount > 0.2) //if there's enough light, heal
|
||||
if(!pod && H.health <= 0)
|
||||
return
|
||||
H.adjustBruteLoss(-1)
|
||||
H.adjustFireLoss(-1)
|
||||
H.adjustToxLoss(-1)
|
||||
H.adjustOxyLoss(-1)
|
||||
|
||||
if(light_amount > 0)
|
||||
H.clear_alert("nolight")
|
||||
else
|
||||
H.throw_alert("nolight", /obj/screen/alert/nolight)
|
||||
|
||||
if((light_amount >= 5) && !H.suiciding) //if there's enough light, heal
|
||||
|
||||
H.adjustBruteLoss(-(light_amount/2))
|
||||
H.adjustFireLoss(-(light_amount/4))
|
||||
if(H.nutrition < NUTRITION_LEVEL_STARVING+50)
|
||||
H.take_overall_damage(10,0)
|
||||
if(H.nutrition < NUTRITION_LEVEL_STARVING + 50)
|
||||
H.adjustBruteLoss(2)
|
||||
..()
|
||||
|
||||
/datum/species/diona/pod //Same name and everything; we want the same limitations on them; we just want their regeneration to kick in at all times and them to have special factions
|
||||
pod = TRUE
|
||||
|
||||
/datum/species/diona/pod/on_species_gain(mob/living/carbon/C, datum/species/old_species)
|
||||
. = ..()
|
||||
C.faction |= "plants"
|
||||
C.faction |= "vines"
|
||||
|
||||
/datum/species/diona/pod/on_species_loss(mob/living/carbon/C)
|
||||
. = ..()
|
||||
C.faction -= "plants"
|
||||
C.faction -= "vines"
|
||||
@@ -141,7 +141,6 @@
|
||||
M.apply_effect((rand(30,80)),IRRADIATE)
|
||||
M.Weaken(5)
|
||||
M.visible_message("<span class='warning'>[M] writhes in pain as [M.p_their()] vacuoles boil.</span>", "<span class='userdanger'>You writhe in pain as your vacuoles boil!</span>", "<span class='italics'>You hear the crunching of leaves.</span>")
|
||||
if(prob(35))
|
||||
if(prob(80))
|
||||
randmutb(M)
|
||||
domutcheck(M,null)
|
||||
|
||||
@@ -988,10 +988,10 @@
|
||||
C.adjustToxLoss(lethality)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(IS_PLANT in H.dna.species.species_traits) //plantmen take a LOT of damage
|
||||
H.adjustToxLoss(50)
|
||||
if(IS_PLANT in H.dna.species.species_traits) //plantmen take extra damage
|
||||
H.adjustToxLoss(3)
|
||||
..()
|
||||
else if(istype(M, /mob/living/simple_animal/diona)) //plantmen monkeys (diona) take EVEN MORE damage
|
||||
else if(istype(M, /mob/living/simple_animal/diona)) //nymphs take EVEN MORE damage
|
||||
var/mob/living/simple_animal/diona/D = M
|
||||
D.adjustHealth(100)
|
||||
..()
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
density = TRUE
|
||||
roundstart = FALSE
|
||||
death = FALSE
|
||||
mob_species = /datum/species/diona
|
||||
mob_species = /datum/species/diona/pod
|
||||
flavour_text = "<span class='big bold'>You are a sentient ecosystem,</span><b> an example of the mastery over life that your creators possessed. Your masters, benevolent as they were, created uncounted \
|
||||
seed vaults and spread them across the universe to every planet they could chart. You are in one such seed vault. Your goal is to cultivate and spread life wherever it will go while waiting \
|
||||
for contact from your creators. Estimated time of last contact: Deployment, 5x10^3 millennia ago.</b>"
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
name = "core trunk"
|
||||
max_damage = 200
|
||||
min_broken_damage = 50
|
||||
cannot_break = 1
|
||||
amputation_point = "trunk"
|
||||
encased = null
|
||||
gendered_icon = 0
|
||||
@@ -10,7 +9,6 @@
|
||||
/obj/item/organ/external/groin/diona
|
||||
name = "fork"
|
||||
min_broken_damage = 50
|
||||
cannot_break = 1
|
||||
amputation_point = "lower trunk"
|
||||
gendered_icon = 0
|
||||
|
||||
@@ -18,58 +16,49 @@
|
||||
name = "left upper tendril"
|
||||
max_damage = 35
|
||||
min_broken_damage = 20
|
||||
cannot_break = 1
|
||||
amputation_point = "upper left trunk"
|
||||
|
||||
/obj/item/organ/external/arm/right/diona
|
||||
name = "right upper tendril"
|
||||
max_damage = 35
|
||||
min_broken_damage = 20
|
||||
cannot_break = 1
|
||||
amputation_point = "upper right trunk"
|
||||
|
||||
/obj/item/organ/external/leg/diona
|
||||
name = "left lower tendril"
|
||||
max_damage = 35
|
||||
min_broken_damage = 20
|
||||
cannot_break = 1
|
||||
amputation_point = "lower left fork"
|
||||
|
||||
/obj/item/organ/external/leg/right/diona
|
||||
name = "right lower tendril"
|
||||
max_damage = 35
|
||||
min_broken_damage = 20
|
||||
cannot_break = 1
|
||||
amputation_point = "lower right fork"
|
||||
|
||||
/obj/item/organ/external/foot/diona
|
||||
name = "left foot"
|
||||
max_damage = 20
|
||||
min_broken_damage = 10
|
||||
cannot_break = 1
|
||||
amputation_point = "branch"
|
||||
|
||||
/obj/item/organ/external/foot/right/diona
|
||||
name = "right foot"
|
||||
max_damage = 20
|
||||
min_broken_damage = 10
|
||||
cannot_break = 1
|
||||
amputation_point = "branch"
|
||||
|
||||
/obj/item/organ/external/hand/diona
|
||||
name = "left grasper"
|
||||
cannot_break = 1
|
||||
amputation_point = "branch"
|
||||
|
||||
/obj/item/organ/external/hand/right/diona
|
||||
name = "right grasper"
|
||||
cannot_break = 1
|
||||
amputation_point = "branch"
|
||||
|
||||
/obj/item/organ/external/head/diona
|
||||
max_damage = 50
|
||||
min_broken_damage = 25
|
||||
cannot_break = 1
|
||||
encased = null
|
||||
amputation_point = "upper trunk"
|
||||
gendered_icon = 0
|
||||
@@ -82,6 +71,11 @@
|
||||
icon = 'icons/obj/objects.dmi'
|
||||
icon_state = "nymph"
|
||||
|
||||
/obj/item/organ/internal/lungs/diona
|
||||
name = "respiratory vacuoles"
|
||||
icon = 'icons/obj/objects.dmi'
|
||||
icon_state = "nymph"
|
||||
|
||||
/obj/item/organ/internal/brain/diona // Turns into a nymph instantly, no transplanting possible.
|
||||
name = "gas bladder"
|
||||
icon = 'icons/obj/objects.dmi'
|
||||
|
||||
Reference in New Issue
Block a user