39 lines
1.4 KiB
Plaintext
39 lines
1.4 KiB
Plaintext
/mob/living/carbon/adjustStaminaLossBuffered(amount, updating_stamina = 1)
|
|
if(status_flags & GODMODE)
|
|
return 0
|
|
if(CONFIG_GET(flag/disable_stambuffer))
|
|
return
|
|
var/directstamloss = (bufferedstam + amount) - stambuffer
|
|
if(directstamloss > 0)
|
|
adjustStaminaLoss(directstamloss)
|
|
bufferedstam = CLAMP(bufferedstam + amount, 0, stambuffer)
|
|
stambufferregentime = world.time + 10
|
|
if(updating_stamina)
|
|
update_health_hud()
|
|
|
|
/mob/living/carbon/adjustStaminaLoss(amount, updating_health = TRUE, forced = FALSE, affected_zone = BODY_ZONE_CHEST)
|
|
if(!forced && (status_flags & GODMODE))
|
|
return FALSE
|
|
apply_damage(amount > 0 ? amount*incomingstammult : amount, STAMINA, affected_zone)
|
|
if(recoveringstam && amount > 20)
|
|
incomingstammult = max(0.01, incomingstammult/(amount*0.05))
|
|
return amount
|
|
|
|
/mob/living/carbon/doSprintLossTiles(tiles)
|
|
doSprintBufferRegen(FALSE) //first regen.
|
|
if(sprint_buffer)
|
|
var/use = min(tiles, sprint_buffer)
|
|
sprint_buffer -= use
|
|
tiles -= use
|
|
update_hud_sprint_bar()
|
|
if(!tiles) //we had enough, we're done!
|
|
return
|
|
adjustStaminaLoss(tiles * sprint_stamina_cost) //use stamina to cover deficit.
|
|
|
|
/mob/living/carbon/proc/doSprintBufferRegen(updating = TRUE)
|
|
var/diff = world.time - sprint_buffer_regen_last
|
|
sprint_buffer_regen_last = world.time
|
|
sprint_buffer = min(sprint_buffer_max, sprint_buffer + sprint_buffer_regen_ds * diff)
|
|
if(updating)
|
|
update_hud_sprint_bar()
|