Diona Tweaks and Changes (#11412)

This commit is contained in:
Geeves
2021-03-15 21:34:36 +01:00
committed by GitHub
parent f18dff7b8e
commit 224023e55a
11 changed files with 79 additions and 47 deletions
@@ -24,7 +24,6 @@ var/list/diona_banned_languages = list(
/mob/living/carbon/proc/diona_handle_light(var/datum/dionastats/DS) //Carbon is the highest common denominator between gestalts and nymphs. They will share light code
//if light_organ is non null, then we're working with a gestalt. otherwise nymph
var/light_amount = DS.last_lightlevel //If we're not re-fetching the light level then we'll use a recent cached version
if (life_tick % 2 == 0) //Only fetch the lightlevel every other proc to save performance
@@ -32,7 +31,6 @@ var/list/diona_banned_languages = list(
light_amount = get_lightlevel_diona(DS)
DS.last_lightlevel = light_amount
DS.stored_energy += light_amount
if(DS.stored_energy > DS.max_energy)
@@ -50,13 +48,6 @@ var/list/diona_banned_languages = list(
DS.last_location = loc
if(light_amount)
adjustNutritionLoss(-light_amount) // regenerate our nutrition from light.
move_delay_mod = min(initial(move_delay_mod) - light_amount * 1, 0)
sprint_speed_factor = initial(sprint_speed_factor)
sprint_cost_factor = Clamp(initial(sprint_cost_factor) - light_amount * DIONA_LIGHT_COEFICIENT, 0, initial(sprint_cost_factor))
if (total_radiation)
move_delay_mod = max(move_delay_mod * total_radiation * 3, -4.5)
sprint_speed_factor = 0.65
sprint_cost_factor = 0
/mob/living/carbon/alien/diona/death()
if(client && gestalt && switch_to_gestalt())
@@ -62,6 +62,7 @@
/datum/hud_data/diona
has_hydration = FALSE
has_internals = FALSE
has_m_intent = FALSE
gear = list(
"i_clothing" = list("loc" = ui_iclothing, "name" = "uniform", "slot" = slot_w_uniform, "state" = "center", "toggle" = 1),
"o_clothing" = list("loc" = ui_shoes, "name" = "suit", "slot" = slot_wear_suit, "state" = "suit", "toggle" = 1),
@@ -27,7 +27,7 @@
/mob/living/carbon/proc/sample
)
//primitive_form = "Nymph"
slowdown = 7
slowdown = 4
rarity_value = 4
hud_type = /datum/hud_data/diona
siemens_coefficient = 0.3
@@ -113,9 +113,6 @@
reagent_tag = IS_DIONA
stamina = -1 // Diona sprinting uses energy instead of stamina
sprint_speed_factor = 0.5 //Speed gained is minor
sprint_cost_factor = 0.8
climb_coeff = 1.3
vision_organ = BP_HEAD
@@ -129,35 +126,6 @@
alterable_internal_organs = list()
/datum/species/diona/handle_sprint_cost(var/mob/living/carbon/H, var/cost)
var/datum/dionastats/DS = H.get_dionastats()
if (!DS)
return 0 //Something is very wrong
var/remainder = cost * H.sprint_cost_factor
if (H.total_radiation && !DS.regening_organ)
if (H.total_radiation > (cost*0.5))//Radiation counts as double energy
H.apply_radiation(cost*(-0.5))
return 1
else
remainder = cost - (H.total_radiation*2)
H.total_radiation = 0
if (DS.stored_energy > remainder)
DS.stored_energy -= remainder
return 1
else
remainder -= DS.stored_energy
DS.stored_energy = 0
H.adjustHalLoss(remainder*5, 1)
H.updatehealth()
H.m_intent = M_WALK
H.hud_used.move_intent.update_move_icon(H)
to_chat(H, SPAN_DANGER("We have expended our energy reserves, and cannot continue to move at such a pace. We must find light!"))
return 0
/datum/species/diona/can_understand(var/mob/other)
var/mob/living/carbon/alien/diona/D = other
if(istype(D))
@@ -200,6 +168,16 @@
if((!D.client && !D.mind) || D.stat == DEAD)
qdel(D)
/datum/species/diona/equip_later_gear(mob/living/carbon/human/H)
var/obj/item/storage/box/survival/SB = locate() in H
if(!SB)
for(var/obj/item/storage/S in H)
SB = locate() in S
if(SB)
break
if(SB)
SB.handle_item_insertion(new /obj/item/device/flashlight/survival(get_turf(H)), TRUE)
/datum/species/diona/has_psi_potential()
return FALSE