diff --git a/code/datums/status_effects/buffs.dm b/code/datums/status_effects/buffs.dm index 3c1f22de46..bed1c7aa97 100644 --- a/code/datums/status_effects/buffs.dm +++ b/code/datums/status_effects/buffs.dm @@ -48,20 +48,24 @@ status_type = STATUS_EFFECT_REPLACE alert_type = /obj/screen/alert/status_effect/vanguard var/datum/progressbar/progbar + var/stamhealed = 0 //How much stamina did we regenerate? /obj/screen/alert/status_effect/vanguard name = "Vanguard" - desc = "You're absorbing stuns! Your stamina is greatly increased, but not infinite. 25% of all stuns taken will affect you after this effect ends." + desc = "You're absorbing stuns aswell as quickly regenerating stamina, but be careful: 50% of stamina restored and 25% of stuns absorbed will affect you after this effect ends." icon_state = "vanguard" alerttooltipstyle = "clockcult" /obj/screen/alert/status_effect/vanguard/MouseEntered(location,control,params) var/mob/living/L = usr + var/datum/status_effect/vanguard_shield/E = attached_effect if(istype(L)) //this is probably more safety than actually needed var/vanguard = L.stun_absorption["vanguard"] desc = initial(desc) desc += "
[FLOOR(vanguard["stuns_absorbed"] * 0.1, 1)] seconds of stuns held back.\ - [GLOB.ratvar_awakens ? "":"
[FLOOR(min(vanguard["stuns_absorbed"] * 0.025, 20), 1)] seconds of stun will affect you."]" +
[E.stamhealed] stamina regenerated.\ + [GLOB.ratvar_awakens ? "":"
[FLOOR(min(vanguard["stuns_absorbed"] * 0.025, 20), 1)] seconds of stun will affect you.\ +
You will incur [E.stamhealed * 0.5] staminaloss."]" ..() /datum/status_effect/vanguard_shield/Destroy() @@ -72,9 +76,8 @@ /datum/status_effect/vanguard_shield/on_apply() owner.log_message("gained Vanguard stun immunity", LOG_ATTACK) owner.add_stun_absorption("vanguard", INFINITY, 1, "'s yellow aura momentarily intensifies!", "Your ward absorbs the stun!", " radiating with a soft yellow light!") - owner.visible_message("[owner] begins to faintly glow!", "You will absorb all stuns for the next twenty seconds.") + owner.visible_message("[owner] begins to faintly glow!", "You will absorb all stuns aswell as quickly regenerate stamina for the next twenty seconds .") owner.SetAllImmobility(0, FALSE) - owner.setStaminaLoss(0, FALSE) progbar = new(owner, duration, owner) progbar.bar.color = list("#FAE48C", "#FAE48C", "#FAE48C", rgb(0,0,0)) progbar.update(duration - world.time) @@ -82,7 +85,9 @@ /datum/status_effect/vanguard_shield/tick() progbar.update(duration - world.time) - owner.adjustStaminaLoss(-2) + var/oldstamloss = owner.getStaminaLoss() + owner.adjustStaminaLoss(-6) //up to 30 stam / second for now, lets see... + stamhealed += oldstamloss - owner.getStaminaLoss() /datum/status_effect/vanguard_shield/on_remove() var/vanguard = owner.stun_absorption["vanguard"] @@ -96,8 +101,9 @@ for(var/i in owner.stun_absorption) if(owner.stun_absorption[i]["end_time"] > world.time && owner.stun_absorption[i]["priority"] > vanguard["priority"]) otheractiveabsorptions = TRUE - if(!GLOB.ratvar_awakens && stuns_blocked && !otheractiveabsorptions) + if(!GLOB.ratvar_awakens && (stuns_blocked && !otheractiveabsorptions || stamhealed)) owner.DefaultCombatKnockdown(stuns_blocked) + owner.adjustStaminaLoss(stamhealed * 0.5) message_to_owner = "The weight of the Vanguard's protection crashes down upon you!" if(stuns_blocked >= 300) message_to_owner += "\nYou faint from the exertion!" @@ -106,7 +112,7 @@ else stuns_blocked = 0 //so logging is correct in cases where there were stuns blocked but we didn't stun for other reasons owner.visible_message("[owner]'s glowing aura fades!", message_to_owner) - owner.log_message("lost Vanguard stun immunity[stuns_blocked ? "and was stunned for [stuns_blocked]":""]", LOG_ATTACK) + owner.log_message("lost Vanguard stun immunity[stuns_blocked ? "and was stunned for [stuns_blocked]":""] [stamhealed ? ", incurring [stamhealed * 0.25] staminaloss" : ""]", LOG_ATTACK) /datum/status_effect/inathneqs_endowment diff --git a/code/modules/antagonists/clockcult/clock_scriptures/scripture_drivers.dm b/code/modules/antagonists/clockcult/clock_scriptures/scripture_drivers.dm index 4ab481cfe2..5d7a95222f 100644 --- a/code/modules/antagonists/clockcult/clock_scriptures/scripture_drivers.dm +++ b/code/modules/antagonists/clockcult/clock_scriptures/scripture_drivers.dm @@ -138,11 +138,11 @@ quickbind_desc = "Applies handcuffs to a struck target." -//Vanguard: Provides twenty seconds of greatly increased stamina and stun immunity. At the end of the twenty seconds, 25% of all stuns absorbed are applied to the invoker. +//Vanguard: Provides twenty seconds of greatly increased stamina regeneration and stun immunity. At the end of the twenty seconds, 25% of all stuns absorbed aswell as 50% of healed stamloss are applied to the invoker. /datum/clockwork_scripture/vanguard descname = "Self Stun Immunity" name = "Vanguard" - desc = "Provides twenty seconds of greatly increased stamina and stun immunity. At the end of the twenty seconds, the invoker is knocked down for the equivalent of 25% of all stuns they absorbed. \ + desc = "Provides twenty seconds of greatly increased stamina regeneration and stun immunity. At the end of the twenty seconds, the invoker is knocked down for the equivalent of 25% of all stuns they absorbed aswell as incurring 50% of the stamina regenerated as stamina loss \ Excessive absorption will cause unconsciousness." invocations = list("Shield me...", "...from darkness!") channel_time = 30 @@ -152,7 +152,7 @@ primary_component = VANGUARD_COGWHEEL sort_priority = 7 quickbind = TRUE - quickbind_desc = "Allows you to temporarily have quickly regenerating stamina and absorb stuns. All stuns absorbed will affect you when disabled." + quickbind_desc = "Allows you to temporarily have quickly regenerating stamina and absorb stuns. Part of the stuns absorbed and staminaloss healed will affect you when disabled." /datum/clockwork_scripture/vanguard/check_special_requirements() if(!GLOB.ratvar_awakens && islist(invoker.stun_absorption) && invoker.stun_absorption["vanguard"] && invoker.stun_absorption["vanguard"]["end_time"] > world.time)