mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-26 14:31:59 +01:00
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:
committed by
Erki
parent
f201a54732
commit
c8d5d89d79
@@ -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()
|
||||
|
||||
@@ -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."
|
||||
Reference in New Issue
Block a user