Refactors do_after w/ TG's do_after (#18282)

* part1

* keeps range ability

* no cog vore
This commit is contained in:
Cameron Lennox
2025-08-22 00:21:14 +02:00
committed by GitHub
parent 877d3cf713
commit b3fb00d70d
81 changed files with 542 additions and 294 deletions
@@ -135,7 +135,11 @@
// It is in a seperate place to avoid an infinite loop situation with dragging mobs dragging each other.
// Also its nice to have these things seperated.
/mob/living/carbon/human/proc/calculate_item_encumbrance()
//Return FALSE for no encumberance
/mob/proc/calculate_item_encumbrance()
return FALSE
/mob/living/carbon/human/calculate_item_encumbrance()
/// We check for all the items the wearer has that cause slowdown (positive or negative)
/// We then multiply the postive ones by our species.item_slowdown_mod to slow us down more, while we leave negative ones untouched.
/// Heavy things in your hands are affected by this change, UNLESS the thing in your hand speeds you up, in which case it doesn't.
@@ -176,7 +176,7 @@
var/score2 = (scale2 * strength2)
var/competition = pick(score1;player1, score2;player2)
if(!do_after(player1, 50, player2, exclusive = TASK_USER_EXCLUSIVE))
if(!do_after(player1, 50, player2))
player2.visible_message(span_notice("The players cancelled their competition!"))
return 0
if(!hand_games_check(player1,player2))
@@ -223,7 +223,7 @@
var/score2 = (scale2 * strength2)
var/competition = pick(score1;player1, score2;player2)
if(!do_after(player1, 10, player2, exclusive = TASK_USER_EXCLUSIVE))
if(!do_after(player1, 10, player2))
player2.visible_message(span_notice("The players cancelled their competition!"))
return 0
if(!hand_games_check(player1,player2))
@@ -248,7 +248,7 @@
if(!hand_games_check(player1,player2))
return
player1.visible_message(span_notice("[player1] challenges [player2] to a thumb war!"))
if(!do_after(player1, 50, player2, exclusive = TASK_USER_EXCLUSIVE))
if(!do_after(player1, 50, player2))
player2.visible_message(span_notice("The players cancelled their thumb war!"))
return 0
if(!hand_games_check(player1,player2))
@@ -51,7 +51,7 @@
span_warning("You gnaw on \the [SJ]. (This will take around [round(breakouttime / 600)] minutes and you need to stand still.)")
)
if(do_after(src, breakouttime, incapacitation_flags = INCAPACITATION_DISABLED & INCAPACITATION_KNOCKDOWN))
if(do_after(src, breakouttime, timed_action_flags = IGNORE_INCAPACITATED))
if(!wear_suit)
return
visible_message(
@@ -74,7 +74,7 @@
span_warning("You attempt to rip your [wear_suit.name] apart. (This will take around 5 seconds and you need to stand still)")
)
if(do_after(src, 20 SECONDS, incapacitation_flags = INCAPACITATION_DEFAULT & ~INCAPACITATION_RESTRAINED)) // Same scaling as breaking cuffs, 5 seconds to 120 seconds, 20 seconds to 480 seconds.
if(do_after(src, 20 SECONDS, timed_action_flags = IGNORE_INCAPACITATED)) // Same scaling as breaking cuffs, 5 seconds to 120 seconds, 20 seconds to 480 seconds.
if(!wear_suit || buckled)
return
@@ -145,7 +145,7 @@
return
else
visible_message(span_infoplain(span_bold("\The [src]") + " begins to change the form of \the [I]."))
if(!do_after(src, 10 SECONDS, I, exclusive = TASK_USER_EXCLUSIVE))
if(!do_after(src, 10 SECONDS, I))
visible_message(span_infoplain(span_bold("\The [src]") + " leaves \the [I] in its original form."))
return 0
visible_message(span_infoplain(span_bold("\The [src]") + " transmutes \the [I] into \the [transmute_product.name]."))
@@ -185,7 +185,7 @@
if(species.lleill_energy < energy_cost_spawn)
to_chat(src, span_warning("You do not have enough energy to do that!"))
return
if(!do_after(src, 10 SECONDS, src, exclusive = TASK_USER_EXCLUSIVE))
if(!do_after(src, 10 SECONDS, src))
src.visible_message(span_infoplain(span_bold("\The [src]") + " begins to form white rings on the ground."))
return 0
to_chat(src, span_warning("You place a new glamour ring at your feet."))
@@ -315,7 +315,7 @@
src.visible_message(span_infoplain(span_bold("\The [src]") + " boops [chosen_target] on the nose."))
if(contact_type == "Custom")
src.visible_message(span_infoplain("[custom_text]"))
if(!do_after(src, 10 SECONDS, chosen_target, exclusive = TASK_USER_EXCLUSIVE))
if(!do_after(src, 10 SECONDS, chosen_target))
src.visible_message(span_infoplain(span_bold("\The [src]") + " and \the [chosen_target] break contact before energy has been transferred."))
return
src.visible_message(span_infoplain(span_bold("\The [src]") + " and \the [chosen_target] complete their contact."))
@@ -366,7 +366,7 @@
return
else
visible_message(span_infoplain(span_bold("\The [src]") + " begins to change the form of \the [I]."))
if(!do_after(src, 10 SECONDS, I, exclusive = TASK_USER_EXCLUSIVE))
if(!do_after(src, 10 SECONDS, I))
visible_message(span_infoplain(span_bold("\The [src]") + " leaves \the [I] in its original form."))
return 0
visible_message(span_infoplain(span_bold("\The [src]") + " transmutes \the [I] into \the [transmute_product.name]."))
@@ -457,7 +457,7 @@
return
visible_message(span_infoplain(span_bold("\The [src]") + " begins significantly shifting their form."))
if(!do_after(src, 10 SECONDS, src, exclusive = TASK_USER_EXCLUSIVE))
if(!do_after(src, 10 SECONDS, src))
visible_message(span_infoplain(span_bold("\The [src]") + " ceases shifting their form."))
return 0
@@ -548,7 +548,7 @@
return
visible_message(span_infoplain(span_bold("\The [src]") + " begins significantly shifting their form."))
if(!do_after(src, 10 SECONDS, src, exclusive = TASK_USER_EXCLUSIVE))
if(!do_after(src, 10 SECONDS, src))
visible_message(span_infoplain(span_bold("\The [src]") + " ceases shifting their form."))
return 0
visible_message(span_infoplain(span_bold("\The [src]") + " has reverted to their original form."))
@@ -666,7 +666,7 @@
return
visible_message(span_infoplain(span_bold("\The [src]") + " begins significantly shifting their form."))
if(!do_after(src, 10 SECONDS, src, exclusive = TASK_USER_EXCLUSIVE))
if(!do_after(src, 10 SECONDS, src))
visible_message(span_infoplain(span_bold("\The [src]") + " ceases shifting their form."))
return 0
@@ -255,7 +255,7 @@
if(m_action == "Yes")
to_chat(M, span_warning("You begin to break the lines of the glamour ring."))
if(!do_after(M, 10 SECONDS, src, exclusive = TASK_USER_EXCLUSIVE))
if(!do_after(M, 10 SECONDS, src))
to_chat(M, span_warning("You leave the glamour ring alone."))
return
to_chat(M, span_warning("You have destroyed \the [src]."))
@@ -270,7 +270,7 @@
if(LL.ring_cooldown + 10 MINUTES > world.time)
to_chat(M, span_warning("You must wait a while before drawing energy from the glamour again."))
return
if(!do_after(M, 10 SECONDS, src, exclusive = TASK_USER_EXCLUSIVE))
if(!do_after(M, 10 SECONDS, src))
to_chat(M, span_warning("You stop drawing energy."))
return
LL.lleill_energy = min((LL.lleill_energy + 75),LL.lleill_energy_max)
@@ -595,7 +595,7 @@ var/list/wrapped_species_by_ref = list()
oocnotes = 1
to_chat(character, span_notify("You begin to reform. You will need to remain still."))
character.visible_message(span_notify("[character] rapidly contorts and shifts!"), span_danger("You begin to reform."))
if(do_after(character, 40,exclusive = TASK_ALL_EXCLUSIVE))
if(do_after(character, 40))
if(character.client.prefs) //Make sure we didn't d/c
character.client.prefs.vanity_copy_to(src, FALSE, flavour, oocnotes, FALSE, FALSE)
character.visible_message(span_notify("[character] adopts a new form!"), span_danger("You have reformed."))
@@ -653,7 +653,7 @@ var/list/wrapped_species_by_ref = list()
to_chat(character, span_notify("You begin to reassemble into [victim]. You will need to remain still."))
character.visible_message(span_notify("[character] rapidly contorts and shifts!"), span_danger("You begin to reassemble into [victim]."))
if(do_after(character, 40,exclusive = TASK_ALL_EXCLUSIVE))
if(do_after(character, 40))
checking = FALSE
for(var/obj/item/grab/G in character)
if(G.affecting == victim && G.state >= GRAB_AGGRESSIVE)
@@ -440,7 +440,7 @@
to_chat(src,span_warning("You can't change forms while inside something."))
return
to_chat(src, span_notice("You rapidly disassociate your form."))
if(force || do_after(src,20,exclusive = TASK_ALL_EXCLUSIVE))
if(force || do_after(src,20))
handle_grasp() //It's possible to blob out before some key parts of the life loop. This results in things getting dropped at null. TODO: Fix the code so this can be done better.
remove_micros(src, src) //Living things don't fare well in roblobs.
if(buckled)
@@ -554,7 +554,7 @@
to_chat(blob,span_warning("You can't change forms while inside something."))
return
to_chat(src, span_notice("You rapidly reassemble your form."))
if(force || do_after(blob,20,exclusive = TASK_ALL_EXCLUSIVE))
if(force || do_after(blob,20))
if(buckled)
buckled.unbuckle_mob()
if(LAZYLEN(buckled_mobs))
@@ -53,7 +53,7 @@
else
blob = temporary_form
active_regen = 1
if(do_after(blob,50,exclusive = TASK_ALL_EXCLUSIVE))
if(do_after(blob,50))
var/list/limblist = species.has_limbs[choice]
var/limbpath = limblist["path"]
var/obj/item/organ/external/new_eo = new limbpath(src)
@@ -106,7 +106,7 @@
var/obj/item/organ/internal/nano/refactory/refactory = nano_get_refactory()
if(refactory.get_stored_material(MAT_STEEL) >= 10000)
to_chat(protie, span_notify("You begin to rebuild. You will need to remain still."))
if(do_after(protie, 400,exclusive = TASK_ALL_EXCLUSIVE))
if(do_after(protie, 400))
if(species?:OurRig) //Unsafe, but we should only ever be using this with a Protean
species?:OurRig?:make_alive(src,1) //Re-using this proc
refactory.use_stored_material(MAT_STEEL,refactory.get_stored_material(MAT_STEEL)) //Use all of our steel
@@ -129,7 +129,7 @@
oocnotes = 1
to_chat(protie, span_notify("You begin to reassemble. You will need to remain still."))
protie.visible_message(span_notify("[protie] rapidly contorts and shifts!"), span_danger("You begin to reassemble."))
if(do_after(protie, 40,exclusive = TASK_ALL_EXCLUSIVE))
if(do_after(protie, 40))
if(protie.client.prefs) //Make sure we didn't d/c
var/obj/item/rig/protean/Rig = species?:OurRig
protie.client.prefs.vanity_copy_to(src, FALSE, flavour, oocnotes, TRUE, FALSE)
@@ -191,7 +191,7 @@
to_chat(protie, span_notify("You begin to reassemble into [victim]. You will need to remain still."))
protie.visible_message(span_notify("[protie] rapidly contorts and shifts!"), span_danger("You begin to reassemble into [victim]."))
if(do_after(protie, 40,exclusive = TASK_ALL_EXCLUSIVE))
if(do_after(protie, 40))
checking = FALSE
for(var/obj/item/grab/G in protie)
if(G.affecting == victim && G.state >= GRAB_AGGRESSIVE)
@@ -327,7 +327,7 @@
to_chat(protie, span_warning("You need to be repaired first before you can act!"))
return
to_chat(protie, span_notice("You rapidly condense into your module."))
if(forced || do_after(protie,20,exclusive = TASK_ALL_EXCLUSIVE))
if(forced || do_after(protie,20))
if(!temporary_form) //If you're human, force you into blob form before rig'ing
nano_blobform(forced)
spawn(2)
@@ -700,7 +700,7 @@
return
if(G.loc == protie && G.state >= GRAB_AGGRESSIVE)
protie.visible_message(span_warning("[protie] is attempting to latch onto [target]!"), span_danger("You attempt to latch onto [target]!"))
if(do_after(protie, 50, target,exclusive = TASK_ALL_EXCLUSIVE))
if(do_after(protie, 50, target))
if(G.loc == protie && G.state >= GRAB_AGGRESSIVE)
target.drop_from_inventory(target.back)
protie.visible_message(span_danger("[protie] latched onto [target]!"), span_danger("You latch yourself onto [target]!"))
@@ -250,13 +250,13 @@
if(1)
if(W.has_tool_quality(TOOL_SCREWDRIVER))
playsound(src, W.usesound, 50, 1)
if(do_after(user,50,src,exclusive = TASK_ALL_EXCLUSIVE))
if(do_after(user,50,src))
to_chat(user, span_notice("You unscrew the maintenace panel on the [src]."))
dead +=1
return
if(2)
if(istype(W, /obj/item/protean_reboot))//placeholder
if(do_after(user,50,src,exclusive = TASK_ALL_EXCLUSIVE))
if(do_after(user,50,src))
playsound(src, 'sound/items/Deconstruct.ogg', 50, 1)
to_chat(user, span_notice("You carefully slot [W] in the [src]."))
dead +=1
@@ -264,7 +264,7 @@
return
if(3)
if(istype(W, /obj/item/stack/nanopaste))
if(do_after(user,50,src,exclusive = TASK_ALL_EXCLUSIVE))
if(do_after(user,50,src))
playsound(src, 'sound/effects/ointment.ogg', 50, 1)
to_chat(user, span_notice("You slather the interior confines of the [src] with the [W]."))
dead +=1
@@ -274,7 +274,7 @@
if(istype(W, /obj/item/shockpaddles))
if(W?:can_use(user))
to_chat(user, span_notice("You hook up the [W] to the contact points in the maintenance assembly"))
if(do_after(user,50,src,exclusive = TASK_ALL_EXCLUSIVE))
if(do_after(user,50,src))
playsound(src, 'sound/machines/defib_charge.ogg', 50, 0)
if(do_after(user,10,src))
playsound(src, 'sound/machines/defib_zap.ogg', 50, 1, -1)
@@ -634,7 +634,7 @@
to_chat(src, span_warning("You can't do that in your current state."))
return
if(do_after(src, 25, exclusive = TASK_USER_EXCLUSIVE))
if(do_after(src, 25))
var/obj/item/storage/vore_egg/bugcocoon/C = new(loc)
forceMove(C)
+3 -3
View File
@@ -45,7 +45,7 @@
visible_message(span_danger("[src] is trying to break [I]!"),
span_warning("You attempt to break your [I]. (This will take around 5 seconds and you need to stand still)"))
if(do_after(src, 5 SECONDS, target = src, incapacitation_flags = INCAPACITATION_DEFAULT & ~INCAPACITATION_RESTRAINED))
if(do_after(src, 5 SECONDS, target = src, timed_action_flags = IGNORE_INCAPACITATED))
if(!I || buckled)
return
visible_message(span_danger("[src] manages to break [I]!"),
@@ -69,7 +69,7 @@
visible_message(span_danger("[src] attempts to remove [I]!"),
span_warning("You attempt to remove [I]. (This will take around [displaytime] seconds and you need to stand still)"))
if(do_after(src, breakouttime, target = src, incapacitation_flags = INCAPACITATION_DISABLED & INCAPACITATION_KNOCKDOWN))
if(do_after(src, breakouttime, target = src, timed_action_flags = IGNORE_INCAPACITATED))
visible_message(span_danger("[src] manages to remove [I]!"),
span_notice("You successfully remove [I]."))
drop_from_inventory(I)
@@ -87,7 +87,7 @@
span_warning("You attempt to unbuckle yourself. (This will take around 2 minutes and you need to stand still)")
)
if(do_after(src, 2 MINUTES, incapacitation_flags = INCAPACITATION_DEFAULT & ~(INCAPACITATION_RESTRAINED | INCAPACITATION_BUCKLED_FULLY)))
if(do_after(src, 2 MINUTES, timed_action_flags = IGNORE_INCAPACITATED))
if(!buckled)
return
visible_message(span_danger("[src] manages to unbuckle themself!"),
+1 -1
View File
@@ -117,7 +117,7 @@
return
visible_message(span_warning("[src] begins chargin' their lazor!"))
if(!do_after(src, 5 SECONDS, chosen_target, exclusive = TASK_USER_EXCLUSIVE))
if(!do_after(src, 5 SECONDS, chosen_target))
return
if(chosen_target.z != src.z || get_dist(src,chosen_target) > 7)
return
@@ -847,7 +847,7 @@
if(bolt)
if(!bolt.malfunction)
visible_message(span_danger("[src] is trying to break their [bolt]!"), span_warning("You attempt to break your [bolt]. (This will take around 90 seconds and you need to stand still)"))
if(do_after(src, 1.5 MINUTES, src, incapacitation_flags = INCAPACITATION_DISABLED))
if(do_after(src, 1.5 MINUTES, src, timed_action_flags = IGNORE_INCAPACITATED))
visible_message(span_danger("[src] manages to break \the [bolt]!"), span_warning("You successfully break your [bolt]."))
bolt.malfunction = MALFUNCTION_PERMANENT
@@ -266,7 +266,7 @@
to_chat(src, span_notice("You begin to eat \the [E]..."))
if(!do_after(src, 20 SECONDS, E, exclusive = TRUE))
if(!do_after(src, 20 SECONDS, E))
return
to_chat(src, span_notice("[msg]"))
if(nut || aff)
@@ -332,7 +332,7 @@
to_chat(src, span_warning("You decide not to transition."))
return
to_chat(src, span_notice("You begin to transition down to \the [our_dest], stay still..."))
if(!do_after(src, 15 SECONDS, exclusive = TRUE))
if(!do_after(src, 15 SECONDS))
to_chat(src, span_warning("You were interrupted."))
return
visible_message(span_warning("\The [src] disappears!!!"))
@@ -343,7 +343,7 @@
else
to_chat(src, span_notice("You begin to transition back to space, stay still..."))
if(!do_after(src, 15 SECONDS, exclusive = TRUE))
if(!do_after(src, 15 SECONDS))
to_chat(src, span_warning("You were interrupted."))
return
@@ -1060,7 +1060,7 @@
to_chat(user, span_warning("You can see \the [controller] inside! Tendrils of nerves seem to have attached themselves to \the [controller]! There's no room for you right now!"))
return
user.visible_message(span_notice("\The [user] reaches out to touch \the [src]..."),span_notice("You reach out to touch \the [src]..."))
if(!do_after(user, 10 SECONDS, src, exclusive = TRUE))
if(!do_after(user, 10 SECONDS, src))
user.visible_message(span_warning("\The [user] pulls back from \the [src]."),span_warning("You pull back from \the [src]."))
return
if(controller) //got busy while you were waiting, get rekt
@@ -562,7 +562,7 @@ GLOBAL_VAR_INIT(teppi_count, 0) // How mant teppi DO we have?
return ..()
if(resting)
user.visible_message(span_attack("\The [user] approaches \the [src]'s neck with \the [O]."),span_attack("You approach \the [src]'s neck with \the [O]."))
if(do_after(user, 5 SECONDS, exclusive = TASK_USER_EXCLUSIVE, target = src))
if(do_after(user, 5 SECONDS, target = src))
if(resting)
death()
return
@@ -747,7 +747,7 @@ GLOBAL_VAR_INIT(teppi_count, 0) // How mant teppi DO we have?
sheartime *= 2
else
return FALSE
if(do_after(user, sheartime, exclusive = TASK_USER_EXCLUSIVE, target = src))
if(do_after(user, sheartime, target = src))
user.visible_message(span_notice("\The [user] shears \the [src] with \the [tool]."),span_notice("You shear \the [src] with \the [tool]."))
amount_grown = rand(0,250)
var/obj/item/stack/material/fur/F = new(get_turf(user), rand(10,15))
@@ -464,7 +464,7 @@
return
visible_message("<b>\The [src]</b> begins significantly shifting their form.")
if(!do_after(src, 10 SECONDS, src, exclusive = TASK_USER_EXCLUSIVE))
if(!do_after(src, 10 SECONDS, src))
visible_message("<b>\The [src]</b> ceases shifting their form.")
return 0
@@ -51,8 +51,8 @@
/mob/living/dominated_brain/proc/lets_register_our_signals()
if(prey_body)
RegisterSignal(prey_body, COMSIG_PARENT_QDELETING, PROC_REF(prey_was_deleted), TRUE)
RegisterSignal(pred_body, COMSIG_PARENT_QDELETING, PROC_REF(pred_was_deleted), TRUE)
RegisterSignal(prey_body, COMSIG_QDELETING, PROC_REF(prey_was_deleted), TRUE)
RegisterSignal(pred_body, COMSIG_QDELETING, PROC_REF(pred_was_deleted), TRUE)
/mob/living/dominated_brain/proc/lets_unregister_our_signals()
prey_was_deleted()
@@ -61,13 +61,13 @@
/mob/living/dominated_brain/proc/prey_was_deleted()
SIGNAL_HANDLER
if(prey_body)
UnregisterSignal(prey_body, COMSIG_PARENT_QDELETING)
UnregisterSignal(prey_body, COMSIG_QDELETING)
prey_body = null
/mob/living/dominated_brain/proc/pred_was_deleted()
SIGNAL_HANDLER
if(pred_body)
UnregisterSignal(pred_body, COMSIG_PARENT_QDELETING)
UnregisterSignal(pred_body, COMSIG_QDELETING)
pred_body = null
/mob/living/dominated_brain/Destroy()
@@ -86,7 +86,7 @@
to_chat(src, span_danger("You begin to resist \the [prey_name]'s control!!!"))
to_chat(pred_body, span_danger("You feel the captive mind of [src] begin to resist your control."))
if(do_after(src, 10 SECONDS, exclusive = TRUE))
if(do_after(src, 10 SECONDS))
restore_control()
else
to_chat(src, span_notice("Your attempt to regain control has been interrupted..."))
@@ -243,7 +243,7 @@
to_chat(pred, span_warning("You can feel the will of another overwriting your own, control of your body being sapped away from you..."))
to_chat(prey, span_warning("You can feel the will of your host diminishing as you exert your will over them!"))
if(!do_after(prey, 10 SECONDS, exclusive = TRUE))
if(!do_after(prey, 10 SECONDS))
to_chat(prey, span_notice("Your attempt to regain control has been interrupted..."))
to_chat(pred, span_notice("The dominant sensation fades away..."))
return
@@ -338,7 +338,7 @@
to_chat(src, span_danger("You begin to resist \the [prey_name]'s control!!!"))
to_chat(pred_body, span_danger("You feel the captive mind of [src] begin to resist your control."))
if(do_after(src, 10 SECONDS, exclusive = TRUE))
if(do_after(src, 10 SECONDS))
restore_control()
else
to_chat(src, span_notice("Your attempt to regain control has been interrupted..."))
@@ -394,7 +394,7 @@
if(istype(G) && M == G.affecting)
src.visible_message(span_danger("[src] seems to be doing something to [M], resulting in [M]'s body looking increasingly drowsy with every passing moment!"))
if(!do_after(src, 10 SECONDS, exclusive = TRUE))
if(!do_after(src, 10 SECONDS))
to_chat(M, span_notice("The alien presence fades, and you are left along in your body..."))
to_chat(src, span_notice("Your attempt to gather [M]'s mind has been interrupted."))
return
@@ -445,7 +445,7 @@
if(prey_body && prey_body.loc.loc == pred_body)
to_chat(src, span_notice("You exert your will and attempt to return to yout body!!!"))
to_chat(pred_body, span_warning("\The [src] resists your hold and attempts to return to their body!"))
if(do_after(src, 10 SECONDS, exclusive = TRUE))
if(do_after(src, 10 SECONDS))
if(prey_body && prey_body.loc.loc == pred_body)
prey_body.ckey = prey_ckey
@@ -512,7 +512,7 @@
return
to_chat(pred, span_warning("You diminish your will, reducing it and allowing will of your prey to take over..."))
to_chat(prey, span_warning("You can feel the will of your host diminishing as you are given control over them!"))
if(!do_after(pred, 10 SECONDS, exclusive = TRUE))
if(!do_after(pred, 10 SECONDS))
to_chat(pred, span_notice("Your attempt to share control has been interrupted..."))
to_chat(prey, span_notice("The dominant sensation fades away..."))
return
@@ -251,7 +251,7 @@
return ..()
if(M.a_intent == I_HELP)
M.visible_message("[M] pets [src].", runemessage = "pets [src]")
if(do_after(M, 30 SECONDS, exclusive = TASK_USER_EXCLUSIVE, target = src))
if(do_after(M, 30 SECONDS, target = src))
faction = M.faction
revive()
sight = initial(sight)
+5 -1
View File
@@ -232,7 +232,11 @@
var/in_enclosed_vehicle = 0 //For mechs and fighters ambiance. Can be used in other cases.
var/list/progressbars = null //VOREStation Edit
///List of progress bars this mob is currently seeing for actions
var/list/progressbars = null //for stacking do_after bars
///For storing what do_after's someone has, key = string, value = amount of interactions of that type happening.
var/list/do_afters
var/datum/focus //What receives our keyboard inputs. src by default
/// dict of custom stat tabs with data