From 03431d5be5c982832375d860dcbce5686d222102 Mon Sep 17 00:00:00 2001 From: Yonnimer <31339047+Yonnimer@users.noreply.github.com> Date: Sun, 5 Jul 2020 06:02:08 -0400 Subject: [PATCH] Dionae changes (#8995) PR is still work in progress. Increases nymph health to 50 Changes Dionae health to 240(currently from 300) When a dionae splits their health is now divided amongst their nymphs. Nymphs will always have at least 20% of their health when split. --- .../living/carbon/alien/diona/diona_nymph.dm | 4 +- code/modules/mob/living/carbon/diona_base.dm | 27 ------------ .../mob/living/carbon/human/diona_gestalt.dm | 25 ++++------- .../human/species/station/diona/diona.dm | 3 +- html/changelogs/Dionahealth.yml | 44 +++++++++++++++++++ 5 files changed, 57 insertions(+), 46 deletions(-) create mode 100644 html/changelogs/Dionahealth.yml diff --git a/code/modules/mob/living/carbon/alien/diona/diona_nymph.dm b/code/modules/mob/living/carbon/alien/diona/diona_nymph.dm index bd9d62c8dc8..2200b774d0e 100644 --- a/code/modules/mob/living/carbon/alien/diona/diona_nymph.dm +++ b/code/modules/mob/living/carbon/alien/diona/diona_nymph.dm @@ -22,8 +22,8 @@ holder_type = /obj/item/holder/diona meat_type = /obj/item/reagent_containers/food/snacks/meat/dionanymph meat_amount = 2 - maxHealth = 33.3 - health = 33.3 + maxHealth = 50 + health = 50 pass_flags = PASSTABLE // Decorative head flower. diff --git a/code/modules/mob/living/carbon/diona_base.dm b/code/modules/mob/living/carbon/diona_base.dm index c2ca41b5319..64f3508debb 100644 --- a/code/modules/mob/living/carbon/diona_base.dm +++ b/code/modules/mob/living/carbon/diona_base.dm @@ -112,11 +112,6 @@ var/list/diona_banned_languages = list( adjustHalLoss(severity*DS.pain_factor, 1) DS.stored_energy = 0 //We reset the energy back to zero after calculating the damage. dont want it to go negative - //If the diona in question is a gestalt, then all the nymphs inside it will suffer damage too - if (DS.dionatype == DIONA_WORKER) - for(var/mob/living/carbon/alien/diona/D in src) - D.adjustBruteLoss(severity*DS.trauma_factor*0.5) - /mob/living/carbon/proc/diona_handle_temperature(var/datum/dionastats/DS) if (bodytemperature < TEMP_REGEN_STOP) DS.healing_factor = 0 @@ -281,19 +276,6 @@ var/list/diona_banned_languages = list( O.damage += value/-3 DS.stored_energy -= value - - //We only regenerate nymphs if the gestalt has plenty of energy to spare. - //Survival of the collective is prioritised over individual members - //And healing nymphs can suck up a lot of energy, which the gestalt may need - if (DS.stored_energy > (0.75 * DS.max_energy)) - for (var/mob/living/carbon/alien/diona/D in bad_internal_organs) - if (!D.stat != DEAD) - D.diona_handle_regeneration(DS) - //IF a nymph inside the gestalt is damaged, we trigger its own regeneration function - //but we pass in the gestalt's Dionastats, so its energy/rads will be used to heal them - - - //Last up, growing brand new limbs and organs to replace those lost or removed. if ((life_tick % (LIFETICK_INTERVAL_LESS*8) == 0) || bypass ) //We will only replace ONE organ or limb each time this procs @@ -386,15 +368,6 @@ var/list/diona_banned_languages = list( if (DS.stored_energy < REGROW_ENERGY_REQ || nutrition < REGROW_FOOD_REQ) return - for (var/mob/living/carbon/alien/diona/D in bad_internal_organs) - if (D.stat == DEAD || D.health <= 0) - D.health = 1 - D.stat = CONSCIOUS - to_chat(src, "You feel a stirring within you as [D.name] returns to life!") - updatehealth() - return - //Only one per proc - //If we have less than six nymphs, we add one each proc if (topup_nymphs()) if (DS.stored_energy < REGROW_ENERGY_REQ) diff --git a/code/modules/mob/living/carbon/human/diona_gestalt.dm b/code/modules/mob/living/carbon/human/diona_gestalt.dm index b685161bf86..52dee6b63cd 100644 --- a/code/modules/mob/living/carbon/human/diona_gestalt.dm +++ b/code/modules/mob/living/carbon/human/diona_gestalt.dm @@ -301,11 +301,10 @@ else nymph.key = key -/mob/living/carbon/human/proc/diona_split_into_nymphs(var/death_split = FALSE) +/mob/living/carbon/human/proc/diona_split_into_nymphs() var/turf/T = get_turf(src) var/mob/living/carbon/alien/diona/bestNymph = null - var/bestHealth = 0 - + var/gestalt_health = (300 - getFireLoss() - getBruteLoss() - getToxLoss()) / 6 var/nymphs_to_kill_off = 0 @@ -336,23 +335,17 @@ bestNymph = D nymphos += D D.forceMove(T) - if(death_split && D.health != 0 && D.stat != DEAD) + if(gestalt_health >= D.maxHealth * 0.20) + D.health = gestalt_health + else D.health = D.maxHealth * 0.20 D.split_languages(src) D.set_dir(pick(NORTH, SOUTH, EAST, WEST)) D.gestalt = null - if (D.stat != DEAD && D.health > (D.maxHealth*0.1))//If a nymph is alive and has enough health, it will emerge from the gestalt - total_nymph += 1 - D.stat = CONSCIOUS - D.stunned = 0 - D.update_verbs() - if ((!D.key) && D.health > bestHealth) - bestHealth = D.health - bestNymph = D - - else //If a nymph is too heavily damaged, it cannot survive and will be born dead - D.visible_message("[D] is too damaged to survive outside a gestalt, and expires with a pitiful chirrup", "You are too damaged to survive outside of your gestalt!", "You hear a pitiful chirrup!") - D.stat = DEAD + total_nymph += 1 + D.stat = CONSCIOUS + D.stunned = 0 + D.update_verbs() for(var/obj/item/W in src) drop_from_inventory(W) diff --git a/code/modules/mob/living/carbon/human/species/station/diona/diona.dm b/code/modules/mob/living/carbon/human/species/station/diona/diona.dm index 9ebc76e3f30..bab60e93d25 100644 --- a/code/modules/mob/living/carbon/human/species/station/diona/diona.dm +++ b/code/modules/mob/living/carbon/human/species/station/diona/diona.dm @@ -3,6 +3,7 @@ short_name = "dio" name_plural = "Dionaea" bodytype = "Diona" + total_health = 140 age_min = 1 age_max = 1000 default_genders = list(NEUTER) @@ -170,7 +171,7 @@ /datum/species/diona/handle_death(var/mob/living/carbon/human/H, var/gibbed = 0) if (!gibbed) // This proc sleeps. Async it. - INVOKE_ASYNC(H, /mob/living/carbon/human/proc/diona_split_into_nymphs, TRUE) + INVOKE_ASYNC(H, /mob/living/carbon/human/proc/diona_split_into_nymphs) /datum/species/diona/handle_speech_problems(mob/living/carbon/human/H, list/current_flags, message, message_verb, message_mode) // Diona without head can live, but they cannot talk as loud anymore. diff --git a/html/changelogs/Dionahealth.yml b/html/changelogs/Dionahealth.yml new file mode 100644 index 00000000000..95824d477e4 --- /dev/null +++ b/html/changelogs/Dionahealth.yml @@ -0,0 +1,44 @@ + +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +# balance +# admin +# backend +# security +# refactor +################################# + +# Your name. +author: Yonnimer + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - tweak: "Changes Dionae health to 240." + - tweak: "Changes nymph health to 50." + - rscadd: " When a dionae splits, their health is now divided among their nymphs"