Fixing Diona limbs (#6724)

Diona now regenerates full limbs arm + hand, leg + foot. Because it is a single nymph.

    Fixes #6716
This commit is contained in:
Mykhailo Bykhovtsev
2019-07-15 21:39:06 +03:00
committed by Erki
parent f201a54732
commit c8d5d89d79
3 changed files with 73 additions and 21 deletions
+24 -15
View File
@@ -244,7 +244,7 @@ var/list/diona_banned_languages = list(
// We cancel with regening organ, as it's meant to stop all other regenerative
// processes. Just pray to shit the timers don't implode.
if ((!total_radiation && !DS.healing_factor && !DS.stored_energy) || DS.regening_organ)
if (((!total_radiation && !DS.healing_factor && !DS.stored_energy) || DS.regening_organ) && !bypass)
return FALSE
//Next up, healing any damage to internal organs.
@@ -300,23 +300,30 @@ var/list/diona_banned_languages = list(
if (path)
if (DS.stored_energy < REGROW_ENERGY_REQ)
if ((DS.stored_energy < REGROW_ENERGY_REQ) && !bypass)
to_chat(src, "<span class='danger'>You try to regrow a lost limb, but you lack the energy. Find more light!</span>")
return
if (nutrition < REGROW_FOOD_REQ)
if ((nutrition < REGROW_FOOD_REQ) && !bypass)
to_chat(src, "<span class='danger'>You try to regrow a lost limb, but you lack the biomass. Find some food!</span>")
return
DS.stored_energy -= REGROW_ENERGY_REQ
DS.stored_energy -= !bypass ? REGROW_ENERGY_REQ : 0
adjustNutritionLoss(REGROW_FOOD_REQ)
visible_message("<span class='warning'>[src] begins to shift and quiver.</span>",
"<span class='warning'>You begin to shift and quiver, feeling a stirring within your trunk</span>")
DS.regening_organ = TRUE
to_chat(src, "<span class='notice'>You are trying to regrow a lost limb, this is a long and complicated process that will take 10 minutes!</span>")
if(!bypass)
DS.regen_limb = addtimer(CALLBACK(src, .proc/diona_regen_callback, path), 10 MINUTES, TIMER_STOPPABLE)
else
diona_regen_callback(path, DS)
var/list/special_case = list(
/obj/item/organ/external/arm/diona = /obj/item/organ/external/hand/diona,
/obj/item/organ/external/arm/right/diona = /obj/item/organ/external/hand/right/diona,
/obj/item/organ/external/leg/diona = /obj/item/organ/external/foot/diona,
/obj/item/organ/external/leg/right/diona = /obj/item/organ/external/foot/right/diona
)
DS.regen_limb = addtimer(CALLBACK(src, .proc/diona_regen_callback, path, DS), 10 MINUTES, TIMER_STOPPABLE)
sleep(5)
if(path in special_case)
DS.regen_extra = addtimer(CALLBACK(src, .proc/diona_regen_callback, special_case[path], DS), 10 MINUTES, TIMER_STOPPABLE)
return
@@ -543,12 +550,15 @@ var/list/diona_banned_languages = list(
continue
var/mob/living/carbon/human/diona/C = H
if(C == gestalt)
C.nutrition += REGROW_FOOD_REQ
C.DS.stored_energy += REGROW_ENERGY_REQ
total_radiation += 5
C.nutrition += REGROW_FOOD_REQ * 0.75
C.DS.stored_energy += REGROW_ENERGY_REQ * 0.75
C.key = src.key
if(DS.regen_limb)
execute_and_deltimer(DS.regen_limb)
if(C.DS.regen_limb)
execute_and_deltimer(C.DS.regen_limb)
C.DS.regen_limb = null
if(C.DS.regen_extra)
execute_and_deltimer(C.DS.regen_extra)
C.DS.regen_extra = null
else
C.diona_handle_regeneration(C.DS, TRUE)
to_chat(C, span("notice", "Your lost nymph merged back."))
@@ -587,6 +597,7 @@ var/list/diona_banned_languages = list(
var/dionatype //1 = nymph, 2 = worker gestalt
var/datum/weakref/nym
var/regen_limb
var/regen_extra
/datum/dionastats/Destroy()
light_organ = null //Nulling out these references to prevent GC errors
@@ -601,8 +612,6 @@ var/list/diona_banned_languages = list(
#undef TEMP_REGEN_NORMAL
#undef TEMP_INCREASE_REGEN_DOUBLE
#undef LIFETICK_INTERVAL_LESS
#undef REGROW_FOOD_REQ
#undef REGROW_ENERGY_REQ
#undef diona_max_pressure
#undef diona_nutrition_factor
#undef DIONA_LIGHT_COEFICIENT
@@ -48,7 +48,8 @@
if(thing in exclude)
continue
add_nymph()
if(!add_nymph())
return added
added += 1
return added
@@ -58,13 +59,13 @@
for(var/mob/living/carbon/alien/nymph in contents)
count += 1
if(count >= 6)
return
return FALSE
var/mob/living/carbon/alien/diona/M = new /mob/living/carbon/alien/diona(src)
M.gestalt = src
M.stat = CONSCIOUS
M.update_verbs()
M.sync_languages(src)
return
return TRUE
//Environmental Functions
//================================
@@ -264,9 +265,9 @@
verbs += /mob/living/carbon/human/proc/switch_to_nymph
update_dionastats() //Re-find the organs in case they were lost or regained
nutrition -= 150
DS.stored_energy -= 60
diona_handle_regeneration(DS)
nutrition -= REGROW_FOOD_REQ
DS.stored_energy -= REGROW_ENERGY_REQ
diona_handle_regeneration(DS, TRUE)
playsound(src, 'sound/species/diona/gestalt_grow.ogg', 30, 1)
/mob/living/carbon/human/proc/switch_to_nymph()
+42
View File
@@ -0,0 +1,42 @@
################################
# 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: PoZe
# 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:
- bugfix: "Diona no longer keeps growing nymphs inside past the defined limit."
- tweak: "Diona now regenerates full limb like arm + hand, leg + foot. Since they are of one nymph."