mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-21 11:07:12 +01:00
Adds support for multiple callback checks for the do_after and incapacitated procs (#13057)
* do_after refactor Update slime.dm fix a comment if you read this you get a cookie! * some little tweaks Changes a TRUE to FALSE in a comment, got confused there. Removes the code that checks for non-callbacks in the extra_checks list and removes them. It should be up to the dev to not add non-callbacks to this list. I'd rather have it runtime instead * check_for_true_callbacks * CRLF to LF Co-authored-by: SteelSlayer <SteelSlayer@users.noreply.github.com>
This commit is contained in:
co-authored by
SteelSlayer
parent
bdafa40b40
commit
63ea21b20e
@@ -146,11 +146,13 @@
|
||||
return
|
||||
|
||||
var/limb_select = input(H, "Choose a limb to regrow", "Limb Regrowth") as null|anything in missing_limbs
|
||||
if(!limb_select) // If the user hit cancel on the popup, return
|
||||
return
|
||||
var/chosen_limb = missing_limbs[limb_select]
|
||||
|
||||
H.visible_message("<span class='notice'>[H] begins to hold still and concentrate on [H.p_their()] missing [limb_select]...</span>", "<span class='notice'>You begin to focus on regrowing your missing [limb_select]... (This will take [round(SLIMEPERSON_REGROWTHDELAY/10)] seconds, and you must hold still.)</span>")
|
||||
if(do_after(H, SLIMEPERSON_REGROWTHDELAY, needhand = 0, target = H))
|
||||
if(H.incapacitated())
|
||||
if(do_after(H, SLIMEPERSON_REGROWTHDELAY, FALSE, H, extra_checks = list(CALLBACK(H, /mob.proc/IsStunned)), use_default_checks = FALSE)) // Override the check for weakness, only check for stunned
|
||||
if(H.incapacitated(ignore_lying = TRUE, extra_checks = list(CALLBACK(H, /mob.proc/IsStunned)), use_default_checks = FALSE)) // Override the check for weakness, only check for stunned
|
||||
to_chat(H, "<span class='warning'>You cannot regenerate missing limbs in your current state.</span>")
|
||||
return
|
||||
|
||||
@@ -196,4 +198,4 @@
|
||||
|
||||
#undef SLIMEPERSON_HUNGERCOST
|
||||
#undef SLIMEPERSON_MINHUNGER
|
||||
#undef SLIMEPERSON_REGROWTHDELAY
|
||||
#undef SLIMEPERSON_REGROWTHDELAY
|
||||
@@ -65,8 +65,14 @@
|
||||
return !(IsWeakened() || paralysis || stat || (status_flags & FAKEDEATH))
|
||||
|
||||
// Whether the mob is capable of actions or not
|
||||
/mob/living/incapacitated(ignore_restraints = FALSE, ignore_grab = FALSE, ignore_lying = FALSE)
|
||||
if(stat || paralysis || stunned || IsWeakened() || (!ignore_restraints && restrained()) || (!ignore_lying && lying))
|
||||
/mob/living/incapacitated(ignore_restraints = FALSE, ignore_grab = FALSE, ignore_lying = FALSE, list/extra_checks = list(), use_default_checks = TRUE)
|
||||
// By default, checks for weakness and stunned get added to the extra_checks list.
|
||||
// Setting `use_default_checks` to FALSE means that you don't want it checking for these statuses or you are supplying your own checks.
|
||||
if(use_default_checks)
|
||||
extra_checks += CALLBACK(src, /mob.proc/IsWeakened)
|
||||
extra_checks += CALLBACK(src, /mob.proc/IsStunned)
|
||||
|
||||
if(stat || paralysis || (!ignore_restraints && restrained()) || (!ignore_lying && lying) || check_for_true_callbacks(extra_checks))
|
||||
return TRUE
|
||||
|
||||
// wonderful proc names, I know - used to check whether the blur overlay
|
||||
|
||||
@@ -173,6 +173,9 @@
|
||||
/mob/proc/Stun()
|
||||
return
|
||||
|
||||
/mob/proc/IsStunned()
|
||||
return stunned
|
||||
|
||||
/mob/proc/SetStunned()
|
||||
return
|
||||
|
||||
|
||||
Reference in New Issue
Block a user