This commit is contained in:
silicons
2020-09-20 02:03:18 -07:00
parent 97f373a199
commit 8ebe765d70
9 changed files with 30 additions and 36 deletions

View File

@@ -2,13 +2,13 @@
/// Stamina buffer amount
#define STAMINA_BUFFER_CAPACITY 35
/// Stamina buffer regen per decisecond
#define STAMINA_BUFFER_REGEN_DS 0.1
#define STAMINA_BUFFER_REGEN_PER_SECOND 1
/// Stamina buffer regen multiplier while in combat mode
#define STAMINA_BUFFER_REGEN_COMBAT_MULT 3
/// Linear scaling minimum for stamina buffer regen in percentage at stamcrit
#define STAMINA_BUFFER_STAMCRIT_PENALTY_REGEN 0.75
/// Linear scaling minimum for stamina buffer capacity in percentage at stamcrit
#define STAMINA_BUFFER_STAMCRIT_PENALTY_CAPACITY 0.5
#define STAMINA_BUFFER_REGEN_PER_SECOND_COMBAT 3
/// percent of regen to take away at stamcrit
#define STAMINA_BUFFER_STAMCRIT_REGEN_PENALTY_PERCENT 0.5
/// percent of capacity to take away at stamcrit
#define STAMINA_BUFFER_STAMCRIT_CAPACITY_PENALTY_PERCENT 0.5
// Standard amounts for stamina usage

View File

@@ -251,7 +251,6 @@ GLOBAL_LIST_INIT(bitfields, list(
"COMBAT_FLAG_SPRINT_TOGGLED" = COMBAT_FLAG_SPRINT_TOGGLED,
"COMBAT_FLAG_SPRINT_ACTIVE" = COMBAT_FLAG_SPRINT_ACTIVE,
"COMBAT_FLAG_ATTEMPTING_CRAWL" = COMBAT_FLAG_ATTEMPTING_CRAWL,
"COMBAT_FLAG_HARD_STAMCRIT" = COMBAT_FLAG_HARD_STAMCRIT,
"COMBAT_FLAG_SOFT_STAMCRIT" = COMBAT_FLAG_SOFT_STAMCRIT,
"COMBAT_FLAG_INTENTIONALLY_RESTING" = COMBAT_FLAG_INTENTIONALLY_RESTING,
"COMBAT_FLAG_RESISTING_REST" = COMBAT_FLAG_RESISTING_REST,

View File

@@ -38,24 +38,17 @@
if(!user)
return
if(user.stat == DEAD || (user.combat_flags & COMBAT_FLAG_HARD_STAMCRIT) || (user.hal_screwyhud in 1 to 2))
icon_state = "stambuffer7"
else if(user.hal_screwyhud == 5)
icon_state = "stambuffer0"
else if(user.hal_screwyhud == 5)
icon_state = "stambuffer29"
else
switch(user.bufferedstam / user.stambuffer)
if(0.95 to INFINITY)
icon_state = "stambuffer7"
if(0.9 to 0.95)
icon_state = "stambuffer6"
if(0.8 to 0.9)
icon_state = "stambuffer5"
if(0.6 to 0.8)
icon_state = "stambuffer4"
if(0.4 to 0.6)
icon_state = "stambuffer3"
if(0.2 to 0.4)
icon_state = "stambuffer2"
if(0.05 to 0.2)
icon_state = "stambuffer1"
else
icon_state = "stambuffer0"
icon_state = "stambuffer[FLOOR((stamina_buffer / stamina_buffer_max) * 29, 1)]"
/obj/screen/staminabuffer/update_overlays()
var/level = FLOOR((stamina_buffer / stamina_buffer_max) * 29, 1)
if((user.stat == DEAD) || (user.combat_flags & COMBAT_FLAG_HARD_STAMCRIT) || (user.hal_screwyhud in 1 to 2) || (level <= 5))
. = list("stamina_alert3")
else if(level <= 8)
. = list("stamina_alert2")
else if(level <= 12)
. = list("stamina_alert1")

View File

@@ -171,7 +171,7 @@
"<span class='warning'>[user] has prodded you with [src]. Luckily it was off</span>")
return disarming || (user.a_intent != INTENT_HARM)
/obj/item/melee/baton/proc/baton_stun(mob/living/L, mob/user, disarming = FALSE)
/obj/item/melee/baton/proc/baton_stun(mob/living/L, mob/living/user, disarming = FALSE)
var/list/return_list = list()
if(L.mob_run_block(src, 0, "[user]'s [name]", ATTACK_TYPE_MELEE, 0, user, null, return_list) & BLOCK_SUCCESS) //No message; check_shields() handles that
playsound(L, 'sound/weapons/genhit.ogg', 50, 1)

View File

@@ -191,8 +191,8 @@
if(HAS_TRAIT(src, TRAIT_PACIFISM))
to_chat(src, "<span class='notice'>You gently let go of [throwable_mob].</span>")
return
adjustStaminaLossBuffered(STAM_COST_THROW_MOB * ((throwable_mob.mob_size+1)**2))// throwing an entire person shall be very tiring
if(!UseStaminaBuffer(STAM_COST_THROW_MOB * ((throwable_mob.mob_size+1)**2), TRUE))
return
var/turf/start_T = get_turf(loc) //Get the start and target tile for the descriptors
var/turf/end_T = get_turf(target)
if(start_T && end_T)
@@ -603,7 +603,7 @@
ENABLE_BITFIELD(combat_flags, COMBAT_FLAG_HARD_STAMCRIT)
filters += CIT_FILTER_STAMINACRIT
update_mobility()
if((combat_flags & COMBAT_FLAG_HARD_STAMCRIT) && total_health <= STAMINA_SOFTCRIT)
if((combat_flags & COMBAT_FLAG_HARD_STAMCRIT) && total_health <= STAMINA_CRIT)
to_chat(src, "<span class='notice'>You don't feel nearly as exhausted anymore.</span>")
DISABLE_BITFIELD(combat_flags, COMBAT_FLAG_HARD_STAMCRIT)
filters -= CIT_FILTER_STAMINACRIT

View File

@@ -808,7 +808,7 @@
hud_used.healthdoll.icon_state = "healthdoll_DEAD"
hud_used.staminas?.update_icon_state()
hud_used.staminabuffer?.update_icon_state()
hud_used.staminabuffer?.update_icon()
/mob/living/carbon/human/fully_heal(admin_revive = FALSE)
if(admin_revive)

View File

@@ -20,7 +20,11 @@
*/
/mob/living/proc/UpdateStaminaBuffer(updating_hud = TRUE)
var/time = world.time - stamina_buffer_regen_last
if(time <= 0)
var/missing_stamina_percent = getStaminaLoss() / STAMINA_CRIT
var/stamina_buffer_max = src.stamina_buffer_max * (1 - (missing_stamina_percent * STAMINA_BUFFER_STAMCRIT_CAPACITY_PERCENT_PENALTY))
if(stamina_buffer > stamina_buffer_max)
stamina_buffer = stamina_buffer_max
return
stamina_buffer_regen_last = time
var/penalized
var/combat_mode = !SEND_SIGNAL(src, COMSIG_COMBAT_MODE_CHECK, COMBAT_MODE_INACTIVE)
stamina_buffer += min((stamina_buffer_max - stamina_buffer), (1 - (missing_stamina_percent * STAMINA_BUFFER_STAMCRIT_REGEN_PERCENT_PENALTY)) * (time * 0.1 * ((combat_mode? stamina_buffer_regen_combat : stamina_buffer_regen) * stamina_buffer_regen_mod)))
hud_used?.staminabuffer?.update_icon()