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