diff --git a/code/modules/antagonists/revenant/revenant.dm b/code/modules/antagonists/revenant/revenant.dm index ef58e5af39..522d09cd35 100644 --- a/code/modules/antagonists/revenant/revenant.dm +++ b/code/modules/antagonists/revenant/revenant.dm @@ -63,6 +63,7 @@ var/essence_regenerating = TRUE //If the revenant regenerates essence or not var/essence_regen_amount = 5 //How much essence regenerates var/essence_accumulated = 0 //How much essence the revenant has stolen + var/essence_excess = 0 //How much stolen essence available for unlocks var/revealed = FALSE //If the revenant can take damage from normal sources. var/unreveal_time = 0 //How long the revenant is revealed for, is about 2 seconds times this var. var/unstun_time = 0 //How long the revenant is stunned for, is about 2 seconds times this var. @@ -138,6 +139,7 @@ . = ..() . += "Current essence: [essence]/[essence_regen_cap]E" . += "Stolen essence: [essence_accumulated]E" + . += "Unused stolen essence: [essence_excess]E)" . += "Stolen perfect souls: [perfectsouls]" /mob/living/simple_animal/revenant/update_health_hud() @@ -304,16 +306,24 @@ return FALSE return TRUE +/mob/living/simple_animal/revenant/proc/unlock(essence_cost) + if(essence_excess < essence_cost) + return FALSE + essence_excess -= essence_cost + update_action_buttons_icon() + return TRUE + /mob/living/simple_animal/revenant/proc/change_essence_amount(essence_amt, silent = FALSE, source = null) if(!src) return - if(essence + essence_amt <= 0) + if(essence + essence_amt < 0) return essence = max(0, essence+essence_amt) - update_action_buttons_icon() update_health_hud() if(essence_amt > 0) essence_accumulated = max(0, essence_accumulated+essence_amt) + essence_excess = max(0, essence_excess+essence_amt) + update_action_buttons_icon() if(!silent) if(essence_amt > 0) to_chat(src, "Gained [essence_amt]E[source ? " from [source]":""].") diff --git a/code/modules/antagonists/revenant/revenant_abilities.dm b/code/modules/antagonists/revenant/revenant_abilities.dm index e4ce920499..3a173d55c7 100644 --- a/code/modules/antagonists/revenant/revenant_abilities.dm +++ b/code/modules/antagonists/revenant/revenant_abilities.dm @@ -61,6 +61,8 @@ to_chat(src, "You begin siphoning essence from [target]'s soul.") if(target.stat != DEAD) to_chat(target, "You feel a horribly unpleasant draining sensation as your grip on life weakens...") + if(target.stat == SOFT_CRIT) + target.Stun(46) reveal(46) stun(46) target.visible_message("[target] suddenly rises slightly into the air, [target.p_their()] skin turning an ashy gray.") @@ -144,7 +146,7 @@ if(user.inhibited) return FALSE if(locked) - if(user.essence <= unlock_amount) + if(user.essence_excess <= unlock_amount) return FALSE if(user.essence <= cast_amount) return FALSE @@ -158,7 +160,7 @@ locked = FALSE return TRUE if(locked) - if(!user.castcheck(-unlock_amount)) + if(!user.unlock(unlock_amount)) charge_counter = charge_max return FALSE name = "[initial(name)] ([cast_amount]E)" @@ -185,6 +187,7 @@ range = 5 stun = 30 cast_amount = 40 + unlock_amount = 25 var/shock_range = 2 var/shock_damage = 15 action_icon_state = "overload_lights" @@ -197,7 +200,7 @@ /obj/effect/proc_holder/spell/aoe_turf/revenant/overload/proc/overload(turf/T, mob/user) for(var/obj/machinery/light/L in T) if(!L.on) - return + continue L.visible_message("\The [L] suddenly flares brightly and begins to spark!") var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(4, 0, L) @@ -226,7 +229,7 @@ range = 4 stun = 20 reveal = 40 - unlock_amount = 75 + unlock_amount = 10 cast_amount = 30 action_icon_state = "defile" @@ -277,7 +280,7 @@ charge_max = 200 range = 4 cast_amount = 60 - unlock_amount = 200 + unlock_amount = 125 action_icon_state = "malfunction" //A note to future coders: do not replace this with an EMP because it will wreck malf AIs and everyone will hate you. @@ -324,7 +327,7 @@ charge_max = 200 range = 3 cast_amount = 50 - unlock_amount = 200 + unlock_amount = 75 action_icon_state = "blight" /obj/effect/proc_holder/spell/aoe_turf/revenant/blight/cast(list/targets, mob/living/simple_animal/revenant/user = usr)