From 8ebe765d7041e6c427282d154b77654b529653ce Mon Sep 17 00:00:00 2001
From: silicons <2003111+silicons@users.noreply.github.com>
Date: Sun, 20 Sep 2020 02:03:18 -0700
Subject: [PATCH] fixes
---
code/__DEFINES/combat/stamina_combat.dm | 12 +++----
code/_globalvars/bitfields.dm | 1 -
code/_onclick/hud/screen_objects/stamina.dm | 31 +++++++-----------
code/game/objects/items/stunbaton.dm | 2 +-
code/modules/mob/living/carbon/carbon.dm | 6 ++--
code/modules/mob/living/carbon/human/human.dm | 2 +-
.../mob/living/silicon/stamina_buffer.dm | 2 --
code/modules/mob/living/stamina_buffer.dm | 10 ++++--
modular_citadel/icons/ui/screen_gen.dmi | Bin 6120 -> 6123 bytes
9 files changed, 30 insertions(+), 36 deletions(-)
delete mode 100644 code/modules/mob/living/silicon/stamina_buffer.dm
diff --git a/code/__DEFINES/combat/stamina_combat.dm b/code/__DEFINES/combat/stamina_combat.dm
index b35329d84d..0467b656c5 100644
--- a/code/__DEFINES/combat/stamina_combat.dm
+++ b/code/__DEFINES/combat/stamina_combat.dm
@@ -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
diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm
index 85f5e4fd9b..b2fa88a343 100644
--- a/code/_globalvars/bitfields.dm
+++ b/code/_globalvars/bitfields.dm
@@ -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,
diff --git a/code/_onclick/hud/screen_objects/stamina.dm b/code/_onclick/hud/screen_objects/stamina.dm
index 5484014f8f..57152951db 100644
--- a/code/_onclick/hud/screen_objects/stamina.dm
+++ b/code/_onclick/hud/screen_objects/stamina.dm
@@ -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")
diff --git a/code/game/objects/items/stunbaton.dm b/code/game/objects/items/stunbaton.dm
index 8dbdc5ff20..f71fd4db58 100644
--- a/code/game/objects/items/stunbaton.dm
+++ b/code/game/objects/items/stunbaton.dm
@@ -171,7 +171,7 @@
"[user] has prodded you with [src]. Luckily it was off")
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)
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index a2a3c3af8e..a4b7a9cd8a 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -191,8 +191,8 @@
if(HAS_TRAIT(src, TRAIT_PACIFISM))
to_chat(src, "You gently let go of [throwable_mob].")
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, "You don't feel nearly as exhausted anymore.")
DISABLE_BITFIELD(combat_flags, COMBAT_FLAG_HARD_STAMCRIT)
filters -= CIT_FILTER_STAMINACRIT
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index b0c4e01359..a63b7a8f78 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -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)
diff --git a/code/modules/mob/living/silicon/stamina_buffer.dm b/code/modules/mob/living/silicon/stamina_buffer.dm
deleted file mode 100644
index 139597f9cb..0000000000
--- a/code/modules/mob/living/silicon/stamina_buffer.dm
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/code/modules/mob/living/stamina_buffer.dm b/code/modules/mob/living/stamina_buffer.dm
index 7412c35dad..85c33080d5 100644
--- a/code/modules/mob/living/stamina_buffer.dm
+++ b/code/modules/mob/living/stamina_buffer.dm
@@ -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()
diff --git a/modular_citadel/icons/ui/screen_gen.dmi b/modular_citadel/icons/ui/screen_gen.dmi
index 270f7c9ad90aef4de09aef9b7ec3ae5cb78aba6f..510d312f1c3b792cf4fe0d11f3528b75e7eecf89 100644
GIT binary patch
delta 358
zcmV-s0h#{jFY7OmB!5qOR9JLGWpiV4X>fFDZ*Bkpc$}@1!D_=W5Jb<`S1ifZ6z|$j
z(}OR?q4<#eLQreD7T9T#m6rZ}4=L2Ov?L2#xR^4CVK&{&Q|Mf+%_
z71J`!iE6o?#9Fjm8Dd(FcudP+jcOTyQSH4zyA^03BrHVWB;-(n4kheR0uLqhP=XI7
z{7?cAB?L)AkVOBUgdj->l7t{h2$F;#NeGgJAh873ushUH?;G_Eqj-2^ffFDZ*Bkpc$}@1L2AP=5JlJ4DTZVlif3%6
z=|Y?0P`pU45Y$?Z1$J6wrKPv;B87%ZQ)i%PW%%Sg5RZet!ZDsItzR(N3U&RMy(T
ze1ZmCMTcS04J=}(adx^~m49#1orfV!iNiS)%zxfjMK`Y^472t6nnK?vo@Tz-^%6z2
zL=j;aiBe4YKbR_w*|3$02AiEJ{A0#eB;w0u!q7EhQP$CZ{_E4e^CH_z%
z5G4jlVvt1tp2Q$Y43fkkNeq(2AW008#2~Q-m$2Q}Q12S`1tlYW*Z8V%d9!>0Zx(xH
Br-1+f