mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-10 22:54:32 +01:00
515 Compatibility (#19636)
* 515 compat * double spaces * Callback documentation, aa review * spacing * NAMEOF_STATIC * big beta
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
log_adminwarn("Failed Login (invalid data): [key] [address]-[computer_id]")
|
||||
// The nested ternaries are needed here
|
||||
if(log_info)
|
||||
INVOKE_ASYNC(GLOBAL_PROC, .proc/log_connection, (ckey(key) || ""), (address || ""), (computer_id || ""), CONNECTION_TYPE_DROPPED_INVALID)
|
||||
INVOKE_ASYNC(GLOBAL_PROC, GLOBAL_PROC_REF(log_connection), (ckey(key) || ""), (address || ""), (computer_id || ""), CONNECTION_TYPE_DROPPED_INVALID)
|
||||
return list("reason"="invalid login data", "desc"="Error: Could not check ban status, please try again. Error message: Your computer provided invalid or blank information to the server on connection (BYOND Username, IP, and Computer ID). Provided information for reference: Username: '[key]' IP: '[address]' Computer ID: '[computer_id]'. If you continue to get this error, please restart byond or contact byond support.")
|
||||
|
||||
if(type == "world")
|
||||
@@ -14,7 +14,7 @@
|
||||
if(text2num(computer_id) == 2147483647) //this cid causes bans to go haywire
|
||||
log_adminwarn("Failed Login (invalid cid): [key] [address]-[computer_id]")
|
||||
if(log_info)
|
||||
INVOKE_ASYNC(GLOBAL_PROC, .proc/log_connection, ckey(key), address, computer_id, CONNECTION_TYPE_DROPPED_INVALID)
|
||||
INVOKE_ASYNC(GLOBAL_PROC, GLOBAL_PROC_REF(log_connection), ckey(key), address, computer_id, CONNECTION_TYPE_DROPPED_INVALID)
|
||||
return list("reason"="invalid login data", "desc"="Error: Could not check ban status, Please try again. Error message: Your computer provided an invalid Computer ID.")
|
||||
|
||||
var/admin = 0
|
||||
@@ -40,7 +40,7 @@
|
||||
log_adminwarn("Failed Login: [key] [computer_id] [address] - Guests not allowed")
|
||||
// message_admins("<span class='notice'>Failed Login: [key] - Guests not allowed</span>")
|
||||
if(log_info)
|
||||
INVOKE_ASYNC(GLOBAL_PROC, .proc/log_connection, ckey(key), address, computer_id, CONNECTION_TYPE_DROPPED_BANNED)
|
||||
INVOKE_ASYNC(GLOBAL_PROC, GLOBAL_PROC_REF(log_connection), ckey(key), address, computer_id, CONNECTION_TYPE_DROPPED_BANNED)
|
||||
return list("reason"="guest", "desc"="\nReason: Guests not allowed. Please sign in with a BYOND account.")
|
||||
|
||||
// Check if we are checking TOS consent before connecting
|
||||
@@ -70,7 +70,7 @@
|
||||
if(GLOB.configuration.url.banappeals_url)
|
||||
mistakemessage = "\nIf you have to use one, request whitelisting at: [GLOB.configuration.url.banappeals_url]"
|
||||
if(log_info)
|
||||
INVOKE_ASYNC(GLOBAL_PROC, .proc/log_connection, ckey(key), address, computer_id, CONNECTION_TYPE_DROPPED_IPINTEL)
|
||||
INVOKE_ASYNC(GLOBAL_PROC, GLOBAL_PROC_REF(log_connection), ckey(key), address, computer_id, CONNECTION_TYPE_DROPPED_IPINTEL)
|
||||
return list("reason"="using proxy or vpn", "desc"="\nReason: Proxies/VPNs are not allowed here. [mistakemessage]")
|
||||
|
||||
|
||||
@@ -203,7 +203,7 @@
|
||||
|
||||
log_adminwarn("Failed Login: [key] [computer_id] [address] - Banned [.["reason"]]")
|
||||
if(log_info)
|
||||
INVOKE_ASYNC(GLOBAL_PROC, .proc/log_connection, ckey(key), address, computer_id, CONNECTION_TYPE_DROPPED_BANNED)
|
||||
INVOKE_ASYNC(GLOBAL_PROC, GLOBAL_PROC_REF(log_connection), ckey(key), address, computer_id, CONNECTION_TYPE_DROPPED_BANNED)
|
||||
qdel(query)
|
||||
return .
|
||||
qdel(query)
|
||||
@@ -221,5 +221,5 @@
|
||||
else
|
||||
log_adminwarn("Failed Login: [key] [computer_id] [address] - Banned [.["message"]]")
|
||||
if(log_info)
|
||||
INVOKE_ASYNC(GLOBAL_PROC, .proc/log_connection, ckey(key), address, computer_id, CONNECTION_TYPE_DROPPED_BANNED)
|
||||
INVOKE_ASYNC(GLOBAL_PROC, GLOBAL_PROC_REF(log_connection), ckey(key), address, computer_id, CONNECTION_TYPE_DROPPED_BANNED)
|
||||
return .
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
if(!ckey)
|
||||
return
|
||||
|
||||
var/datum/callback/cb = CALLBACK(src, /datum/admins/.proc/ccbdb_lookup_callback, usr, ckey)
|
||||
var/datum/callback/cb = CALLBACK(src, TYPE_PROC_REF(/datum/admins, ccbdb_lookup_callback), usr, ckey)
|
||||
SShttp.create_async_request(RUSTG_HTTP_METHOD_GET, "[GLOB.configuration.url.centcom_ban_db_url][ckey]", proc_callback=cb)
|
||||
|
||||
/**
|
||||
|
||||
@@ -1406,7 +1406,7 @@
|
||||
if(time_seconds < 0)
|
||||
return
|
||||
|
||||
contract.prisoner_timer_handle = addtimer(CALLBACK(contract, /datum/syndicate_contract.proc/handle_target_return, M), time_seconds * 10, TIMER_STOPPABLE)
|
||||
contract.prisoner_timer_handle = addtimer(CALLBACK(contract, TYPE_PROC_REF(/datum/syndicate_contract, handle_target_return), M), time_seconds * 10, TIMER_STOPPABLE)
|
||||
to_chat(usr, "Started automatic return of [M] from the Syndicate Jail in [time_seconds] second\s.")
|
||||
message_admins("[key_name_admin(usr)] has started the automatic return of [key_name_admin(M)] from the Syndicate Jail in [time_seconds] second\s")
|
||||
log_admin("[key_name(usr)] has started the automatic return of [key_name(M)] from the Syndicate Jail in [time_seconds] second\s")
|
||||
|
||||
@@ -86,7 +86,7 @@ GLOBAL_VAR_INIT(deathsquad_sent, FALSE)
|
||||
dstype = input_async(ghost_mob, "Select Deathsquad Type (10 seconds):", list("Organic", "Cyborg"))
|
||||
else
|
||||
to_chat(ghost_mob.client, "<span class='boldwarning'>You have been chosen to lead the Deathsquad. Please stand by.</span>" )
|
||||
addtimer(CALLBACK(src, .proc/deathsquad_spawn, ghost_mob, is_leader, dstype, L, nuke_code, mission), 10 SECONDS) // This may fail if the user switches mobs during it, this is because input_async is only for mobs not clients
|
||||
addtimer(CALLBACK(src, PROC_REF(deathsquad_spawn), ghost_mob, is_leader, dstype, L, nuke_code, mission), 10 SECONDS) // This may fail if the user switches mobs during it, this is because input_async is only for mobs not clients
|
||||
|
||||
is_leader = FALSE
|
||||
commando_number--
|
||||
|
||||
@@ -278,7 +278,7 @@ GLOBAL_LIST_EMPTY(antagonists)
|
||||
if(wiki_page_name)
|
||||
to_chat(owner.current, "<span class='motd'>For more information, check the wiki page: ([GLOB.configuration.url.wiki_url]/index.php/[wiki_page_name])</span>")
|
||||
if(is_banned(owner.current) && replace_banned)
|
||||
INVOKE_ASYNC(src, .proc/replace_banned_player)
|
||||
INVOKE_ASYNC(src, PROC_REF(replace_banned_player))
|
||||
return TRUE
|
||||
|
||||
/**
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
return FALSE
|
||||
user.visible_message("<span class='warning'>[user] vomits a glob of acid on [user.p_their()] [O.name]!</span>", \
|
||||
"<span class='warning'>We vomit acidic ooze onto our restraints!</span>")
|
||||
addtimer(CALLBACK(src, .proc/dissolve_restraint, user, O), 3 SECONDS)
|
||||
addtimer(CALLBACK(src, PROC_REF(dissolve_restraint), user, O), 3 SECONDS)
|
||||
used = TRUE
|
||||
|
||||
if(user.legcuffed)
|
||||
@@ -29,7 +29,7 @@
|
||||
return FALSE
|
||||
user.visible_message("<span class='warning'>[user] vomits a glob of acid on [user.p_their()] [O.name]!</span>", \
|
||||
"<span class='warning'>We vomit acidic ooze onto our leg restraints!</span>")
|
||||
addtimer(CALLBACK(src, .proc/dissolve_restraint, user, O), 3 SECONDS)
|
||||
addtimer(CALLBACK(src, PROC_REF(dissolve_restraint), user, O), 3 SECONDS)
|
||||
used = TRUE
|
||||
|
||||
if(user.wear_suit && user.wear_suit.breakouttime && !used)
|
||||
@@ -38,7 +38,7 @@
|
||||
return FALSE
|
||||
user.visible_message("<span class='warning'>[user] vomits a glob of acid across the front of [user.p_their()] [S.name]!</span>", \
|
||||
"<span class='warning'>We vomit acidic ooze onto our straight jacket!</span>")
|
||||
addtimer(CALLBACK(src, .proc/dissolve_restraint, user, S), 3 SECONDS)
|
||||
addtimer(CALLBACK(src, PROC_REF(dissolve_restraint), user, S), 3 SECONDS)
|
||||
used = TRUE
|
||||
|
||||
if(istype(user.loc, /obj/structure/closet) && !used)
|
||||
@@ -47,7 +47,7 @@
|
||||
return FALSE
|
||||
C.visible_message("<span class='warning'>[C]'s hinges suddenly begin to melt and run!</span>")
|
||||
to_chat(user, "<span class='warning'>We vomit acidic goop onto the interior of [C]!</span>")
|
||||
addtimer(CALLBACK(src, .proc/open_closet, user, C), 7 SECONDS)
|
||||
addtimer(CALLBACK(src, PROC_REF(open_closet), user, C), 7 SECONDS)
|
||||
used = TRUE
|
||||
|
||||
if(istype(user.loc, /obj/structure/spider/cocoon) && !used)
|
||||
@@ -56,7 +56,7 @@
|
||||
return FALSE
|
||||
C.visible_message("<span class='warning'>[src] shifts and starts to fall apart!</span>")
|
||||
to_chat(user, "<span class='warning'>We secrete acidic enzymes from our skin and begin melting our cocoon...</span>")
|
||||
addtimer(CALLBACK(src, .proc/dissolve_cocoon, user, C), 2.5 SECONDS) //Very short because it's just webs
|
||||
addtimer(CALLBACK(src, PROC_REF(dissolve_cocoon), user, C), 2.5 SECONDS) //Very short because it's just webs
|
||||
used = TRUE
|
||||
for(var/obj/item/grab/G in user.grabbed_by)
|
||||
var/mob/living/carbon/M = G.assailant
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
user.updatehealth("fakedeath sting")
|
||||
cling.regenerating = TRUE
|
||||
|
||||
addtimer(CALLBACK(src, .proc/ready_to_regenerate, user), LING_FAKEDEATH_TIME)
|
||||
addtimer(CALLBACK(src, PROC_REF(ready_to_regenerate), user), LING_FAKEDEATH_TIME)
|
||||
SSblackbox.record_feedback("nested tally", "changeling_powers", 1, list("[name]"))
|
||||
return TRUE
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
by quick repeated use!</span>")
|
||||
|
||||
recent_uses++
|
||||
INVOKE_ASYNC(src, .proc/fleshmend, user)
|
||||
INVOKE_ASYNC(src, PROC_REF(fleshmend), user)
|
||||
SSblackbox.record_feedback("nested tally", "changeling_powers", 1, list("[name]"))
|
||||
return TRUE
|
||||
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
target.say(":g AAAAARRRRGGGGGHHHHH!!")
|
||||
to_chat(target, "<font color=#800040><span class='boldannounce'>You can now communicate in the changeling hivemind, say \":g message\" to communicate!</span>")
|
||||
target.reagents.add_reagent("salbutamol", 40) // So they don't choke to death while you interrogate them
|
||||
addtimer(CALLBACK(src, .proc/end_link, user, target), 180 SECONDS)
|
||||
addtimer(CALLBACK(src, PROC_REF(end_link), user, target), 180 SECONDS)
|
||||
|
||||
if(!do_mob(user, target, 2 SECONDS))
|
||||
to_chat(user, "<span class='warning'>Our link with [target] has ended!</span>")
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
/datum/action/changeling/sting/New(Target)
|
||||
. = ..()
|
||||
click_override = new(CALLBACK(src, .proc/try_to_sting))
|
||||
click_override = new(CALLBACK(src, PROC_REF(try_to_sting)))
|
||||
|
||||
/datum/action/changeling/sting/Destroy(force, ...)
|
||||
if(cling.owner.current.middleClickOverride == click_override)
|
||||
@@ -137,7 +137,7 @@
|
||||
|
||||
/datum/action/changeling/sting/LSD/sting_action(mob/user, mob/living/carbon/target)
|
||||
add_attack_logs(user, target, "LSD sting (changeling)")
|
||||
addtimer(CALLBACK(src, .proc/start_hallucinations, target, 400 SECONDS), rand(30 SECONDS, 60 SECONDS))
|
||||
addtimer(CALLBACK(src, PROC_REF(start_hallucinations), target, 400 SECONDS), rand(30 SECONDS, 60 SECONDS))
|
||||
SSblackbox.record_feedback("nested tally", "changeling_powers", 1, list("[name]"))
|
||||
return TRUE
|
||||
|
||||
|
||||
@@ -197,7 +197,7 @@
|
||||
status = CONTRACT_STATUS_COMPLETED
|
||||
completed_time = station_time_timestamp()
|
||||
dead_extraction = target_dead
|
||||
addtimer(CALLBACK(src, .proc/notify_completion, final_tc_reward, reward_credits, target_dead), COMPLETION_NOTIFY_DELAY)
|
||||
addtimer(CALLBACK(src, PROC_REF(notify_completion), final_tc_reward, reward_credits, target_dead), COMPLETION_NOTIFY_DELAY)
|
||||
|
||||
/**
|
||||
* Marks the contract as invalid and effectively cancels it for later use.
|
||||
@@ -279,8 +279,8 @@
|
||||
extraction_deadline = world.time + extraction_cooldown
|
||||
M.visible_message("<span class='notice'>[M] enters a mysterious code on [U] and pulls a black and gold flare from [M.p_their()] belongings before lighting it.</span>",\
|
||||
"<span class='notice'>You finish entering the signal on [U] and light an extraction flare, initiating the extraction process.</span>")
|
||||
addtimer(CALLBACK(src, .proc/open_extraction_portal, U, M, F), EXTRACTION_PHASE_PORTAL)
|
||||
extraction_timer_handle = addtimer(CALLBACK(src, .proc/deadline_reached), portal_duration, TIMER_STOPPABLE)
|
||||
addtimer(CALLBACK(src, PROC_REF(open_extraction_portal), U, M, F), EXTRACTION_PHASE_PORTAL)
|
||||
extraction_timer_handle = addtimer(CALLBACK(src, PROC_REF(deadline_reached)), portal_duration, TIMER_STOPPABLE)
|
||||
|
||||
/**
|
||||
* Opens the extraction portal.
|
||||
@@ -318,7 +318,7 @@
|
||||
* * P - The extraction portal.
|
||||
*/
|
||||
/datum/syndicate_contract/proc/target_received(mob/living/M, obj/effect/portal/redspace/contractor/P)
|
||||
INVOKE_ASYNC(src, .proc/clean_up)
|
||||
INVOKE_ASYNC(src, PROC_REF(clean_up))
|
||||
add_attack_logs(owning_hub.owner.current, M, "extracted to Syndicate Jail")
|
||||
complete(M.stat == DEAD)
|
||||
handle_target_experience(M, P)
|
||||
@@ -350,7 +350,7 @@
|
||||
var/mob/living/carbon/human/H = M
|
||||
|
||||
// Prepare their return
|
||||
prisoner_timer_handle = addtimer(CALLBACK(src, .proc/handle_target_return, M, T), prison_time, TIMER_STOPPABLE)
|
||||
prisoner_timer_handle = addtimer(CALLBACK(src, PROC_REF(handle_target_return), M, T), prison_time, TIMER_STOPPABLE)
|
||||
LAZYSET(GLOB.prisoner_belongings.prisoners, M, src)
|
||||
|
||||
// Shove all of the victim's items in the secure locker.
|
||||
|
||||
@@ -181,7 +181,7 @@
|
||||
E.GiveTarget(user) //so it starts running right away
|
||||
E.Goto(user, E.move_to_delay, E.minimum_distance)
|
||||
user.make_invisible()
|
||||
addtimer(CALLBACK(user, /mob/living/.proc/reset_visibility), 6 SECONDS)
|
||||
addtimer(CALLBACK(user, TYPE_PROC_REF(/mob/living, reset_visibility)), 6 SECONDS)
|
||||
|
||||
/obj/effect/proc_holder/spell/vampire/rally_thralls
|
||||
name = "Rally Thralls (100)"
|
||||
@@ -208,7 +208,7 @@
|
||||
playsound(H, 'sound/magic/staff_healing.ogg', 30)
|
||||
H.remove_CC()
|
||||
H.add_overlay(I)
|
||||
addtimer(CALLBACK(H, /atom/.proc/cut_overlay, I), 6 SECONDS) // this makes it obvious who your thralls are for a while.
|
||||
addtimer(CALLBACK(H, TYPE_PROC_REF(/atom, cut_overlay), I), 6 SECONDS) // this makes it obvious who your thralls are for a while.
|
||||
|
||||
/obj/effect/proc_holder/spell/vampire/self/share_damage
|
||||
name = "Blood Bond"
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
/obj/effect/proc_holder/spell/vampire/self/stomp/cast(list/targets, mob/user)
|
||||
var/turf/T = get_turf(user)
|
||||
playsound(T, 'sound/effects/meteorimpact.ogg', 100, TRUE)
|
||||
addtimer(CALLBACK(src, .proc/hit_check, 1, T, user), 0.2 SECONDS)
|
||||
addtimer(CALLBACK(src, PROC_REF(hit_check), 1, T, user), 0.2 SECONDS)
|
||||
new /obj/effect/temp_visual/stomp(T)
|
||||
|
||||
/obj/effect/proc_holder/spell/vampire/self/stomp/proc/hit_check(range, turf/start_turf, mob/user, safe_targets = list())
|
||||
@@ -49,12 +49,12 @@
|
||||
if(L.move_resist > MOVE_FORCE_VERY_STRONG)
|
||||
continue
|
||||
var/throw_target = get_edge_target_turf(L, get_dir(start_turf, L))
|
||||
INVOKE_ASYNC(L, /atom/movable/.proc/throw_at, throw_target, 3, 4)
|
||||
INVOKE_ASYNC(L, TYPE_PROC_REF(/atom/movable, throw_at), throw_target, 3, 4)
|
||||
L.KnockDown(1 SECONDS)
|
||||
safe_targets += L
|
||||
var/new_range = range + 1
|
||||
if(new_range <= max_range)
|
||||
addtimer(CALLBACK(src, .proc/hit_check, new_range, start_turf, user, safe_targets), 0.2 SECONDS)
|
||||
addtimer(CALLBACK(src, PROC_REF(hit_check), new_range, start_turf, user, safe_targets), 0.2 SECONDS)
|
||||
|
||||
/obj/effect/temp_visual/stomp
|
||||
icon = 'icons/effects/seismic_stomp_effect.dmi'
|
||||
@@ -160,10 +160,10 @@
|
||||
switch(firer.a_intent)
|
||||
if(INTENT_DISARM)
|
||||
throw_target = get_edge_target_turf(L, get_dir(firer, L))
|
||||
L.throw_at(throw_target, 2, 5, spin = FALSE, callback = CALLBACK(src, .proc/create_snare, L)) // shove away
|
||||
L.throw_at(throw_target, 2, 5, spin = FALSE, callback = CALLBACK(src, PROC_REF(create_snare), L)) // shove away
|
||||
if(INTENT_GRAB)
|
||||
throw_target = get_step(firer, get_dir(firer, L))
|
||||
L.throw_at(throw_target, 2, 5, spin = FALSE, diagonals_first = TRUE, callback = CALLBACK(src, .proc/create_snare, L)) // pull towards
|
||||
L.throw_at(throw_target, 2, 5, spin = FALSE, diagonals_first = TRUE, callback = CALLBACK(src, PROC_REF(create_snare), L)) // pull towards
|
||||
|
||||
/obj/item/projectile/magic/demonic_grasp/proc/create_snare(mob/target)
|
||||
new /obj/effect/temp_visual/demonic_snare(target.loc)
|
||||
@@ -200,4 +200,4 @@
|
||||
if(isliving(user))
|
||||
var/mob/living/L = user
|
||||
L.apply_status_effect(STATUS_EFFECT_CHARGING)
|
||||
L.throw_at(target, targeting.range, 1, L, FALSE, callback = CALLBACK(L, /mob/living/.proc/remove_status_effect, STATUS_EFFECT_CHARGING))
|
||||
L.throw_at(target, targeting.range, 1, L, FALSE, callback = CALLBACK(L, TYPE_PROC_REF(/mob/living, remove_status_effect), STATUS_EFFECT_CHARGING))
|
||||
|
||||
@@ -103,7 +103,7 @@
|
||||
continue
|
||||
new /obj/effect/temp_visual/blood_tendril(blood_turf)
|
||||
|
||||
addtimer(CALLBACK(src, .proc/apply_slowdown, T, area_of_affect, 6 SECONDS, user), 0.5 SECONDS)
|
||||
addtimer(CALLBACK(src, PROC_REF(apply_slowdown), T, area_of_affect, 6 SECONDS, user), 0.5 SECONDS)
|
||||
|
||||
/obj/effect/proc_holder/spell/vampire/blood_tendrils/proc/apply_slowdown(turf/T, distance, slowed_amount, mob/user)
|
||||
for(var/mob/living/L in range(distance, T))
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(V.iscloaking)
|
||||
H.physiology.burn_mod *= 1.3
|
||||
user.RegisterSignal(user, COMSIG_LIVING_IGNITED, /mob/living.proc/update_vampire_cloak)
|
||||
user.RegisterSignal(user, COMSIG_LIVING_IGNITED, TYPE_PROC_REF(/mob/living, update_vampire_cloak))
|
||||
else
|
||||
user.UnregisterSignal(user, COMSIG_LIVING_IGNITED)
|
||||
H.physiology.burn_mod /= 1.3
|
||||
@@ -144,7 +144,7 @@
|
||||
|
||||
/obj/effect/proc_holder/spell/vampire/soul_anchor/proc/make_anchor(mob/user, turf/anchor_turf)
|
||||
anchor = new(anchor_turf)
|
||||
timer = addtimer(CALLBACK(src, .proc/recall, user), 2 MINUTES, TIMER_STOPPABLE)
|
||||
timer = addtimer(CALLBACK(src, PROC_REF(recall), user), 2 MINUTES, TIMER_STOPPABLE)
|
||||
should_recharge_after_cast = TRUE
|
||||
|
||||
/obj/effect/proc_holder/spell/vampire/soul_anchor/proc/recall(mob/user)
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
var/datum/antagonist/vampire/V = U.mind.has_antag_datum(/datum/antagonist/vampire)
|
||||
var/rejuv_bonus = V.get_rejuv_bonus()
|
||||
if(rejuv_bonus)
|
||||
INVOKE_ASYNC(src, .proc/heal, U, rejuv_bonus)
|
||||
INVOKE_ASYNC(src, PROC_REF(heal), U, rejuv_bonus)
|
||||
|
||||
/obj/effect/proc_holder/spell/vampire/self/rejuvenate/proc/heal(mob/living/user, rejuv_bonus)
|
||||
for(var/i in 1 to 5)
|
||||
|
||||
@@ -58,7 +58,7 @@ GLOBAL_VAR(claw_game_html)
|
||||
atom_say("WINNER!")
|
||||
new /obj/item/toy/prizeball(get_turf(src))
|
||||
playsound(loc, 'sound/arcade/win.ogg', 50, TRUE)
|
||||
addtimer(CALLBACK(src, /atom/.proc/update_icon, UPDATE_ICON_STATE), 10)
|
||||
addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, update_icon), UPDATE_ICON_STATE), 10)
|
||||
|
||||
/obj/machinery/arcade/claw/start_play(mob/user as mob)
|
||||
..()
|
||||
|
||||
@@ -16,11 +16,11 @@
|
||||
if(!new_info)
|
||||
return INITIALIZE_HINT_QDEL
|
||||
mob_info = new_info
|
||||
RegisterSignal(mob_info, COMSIG_PARENT_QDELETING, .proc/delete_wrapper)
|
||||
RegisterSignal(mob_info, COMSIG_PARENT_QDELETING, PROC_REF(delete_wrapper))
|
||||
update_self()
|
||||
forceMove(mob_info.spawn_point)
|
||||
if(!mob_info.is_trap)
|
||||
addtimer(CALLBACK(src, .proc/despawn), mob_info.lifetime)
|
||||
addtimer(CALLBACK(src, PROC_REF(despawn)), mob_info.lifetime)
|
||||
|
||||
/obj/effect/nanomob/Destroy()
|
||||
SSmob_hunt.trap_spawns -= src
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
cooldown--
|
||||
if(cooldown <= 0)
|
||||
return FALSE
|
||||
addtimer(CALLBACK(src, .proc/process_cooldown), 10)
|
||||
addtimer(CALLBACK(src, PROC_REF(process_cooldown)), 10)
|
||||
return TRUE
|
||||
|
||||
/obj/item/assembly/Destroy()
|
||||
@@ -93,7 +93,7 @@
|
||||
if(!secured || cooldown > 0)
|
||||
return FALSE
|
||||
cooldown = 2
|
||||
addtimer(CALLBACK(src, .proc/process_cooldown), 10)
|
||||
addtimer(CALLBACK(src, PROC_REF(process_cooldown)), 10)
|
||||
return TRUE
|
||||
|
||||
/obj/item/assembly/toggle_secure()
|
||||
|
||||
@@ -128,7 +128,7 @@
|
||||
audible_message("[bicon(src)] *beep* *beep*", hearing_distance = 3)
|
||||
if(first)
|
||||
qdel(first)
|
||||
addtimer(CALLBACK(src, .proc/process_cooldown), 10)
|
||||
addtimer(CALLBACK(src, PROC_REF(process_cooldown)), 10)
|
||||
|
||||
/obj/item/assembly/infra/interact(mob/user)//TODO: change this this to the wire control panel
|
||||
if(!secured) return
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
cooldown = 2
|
||||
pulse(FALSE)
|
||||
visible_message("[bicon(src)] *beep* *beep*", "*beep* *beep*")
|
||||
addtimer(CALLBACK(src, .proc/process_cooldown), 10)
|
||||
addtimer(CALLBACK(src, PROC_REF(process_cooldown)), 10)
|
||||
|
||||
/obj/item/assembly/prox_sensor/process()
|
||||
if(timing && (time >= 0))
|
||||
|
||||
@@ -50,7 +50,7 @@ GLOBAL_LIST_EMPTY(remote_signalers)
|
||||
return
|
||||
|
||||
cooldown = 2
|
||||
addtimer(CALLBACK(src, .proc/process_cooldown), 1 SECONDS)
|
||||
addtimer(CALLBACK(src, PROC_REF(process_cooldown)), 1 SECONDS)
|
||||
|
||||
signal()
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
pulse(FALSE)
|
||||
if(loc)
|
||||
loc.visible_message("[bicon(src)] *beep* *beep*", "*beep* *beep*")
|
||||
addtimer(CALLBACK(src, .proc/process_cooldown), 10)
|
||||
addtimer(CALLBACK(src, PROC_REF(process_cooldown)), 10)
|
||||
|
||||
/obj/item/assembly/timer/process()
|
||||
if(timing && (time > 0))
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
/obj/effect/waterfall/New()
|
||||
. = ..()
|
||||
water_timer = addtimer(CALLBACK(src, .proc/drip), water_frequency, TIMER_STOPPABLE)
|
||||
water_timer = addtimer(CALLBACK(src, PROC_REF(drip)), water_frequency, TIMER_STOPPABLE)
|
||||
|
||||
/obj/effect/waterfall/Destroy()
|
||||
if(water_timer)
|
||||
@@ -26,7 +26,7 @@
|
||||
W.dir = dir
|
||||
spawn(1)
|
||||
W.loc = get_step(W, dir)
|
||||
water_timer = addtimer(CALLBACK(src, .proc/drip), water_frequency, TIMER_STOPPABLE)
|
||||
water_timer = addtimer(CALLBACK(src, PROC_REF(drip)), water_frequency, TIMER_STOPPABLE)
|
||||
|
||||
/turf/simulated/floor/beach/away
|
||||
name = "Beach"
|
||||
@@ -90,7 +90,7 @@
|
||||
|
||||
/turf/simulated/floor/beach/away/water/Initialize(mapload)
|
||||
. = ..()
|
||||
RegisterSignal(src, COMSIG_ATOM_INITIALIZED_ON, .proc/InitializedOn)
|
||||
RegisterSignal(src, COMSIG_ATOM_INITIALIZED_ON, PROC_REF(InitializedOn))
|
||||
|
||||
/turf/simulated/floor/beach/away/water/Entered(atom/movable/AM, atom/OldLoc)
|
||||
. = ..()
|
||||
|
||||
@@ -264,7 +264,7 @@
|
||||
log_client_to_db(tdata) // Make sure our client exists in the DB
|
||||
|
||||
// We have a holder. Inform the relevant places
|
||||
INVOKE_ASYNC(src, .proc/announce_join)
|
||||
INVOKE_ASYNC(src, PROC_REF(announce_join))
|
||||
|
||||
pai_save = new(src)
|
||||
|
||||
@@ -337,7 +337,7 @@
|
||||
on_holder_add()
|
||||
add_admin_verbs()
|
||||
// Must be async because any sleeps (happen in sql queries) will break connectings clients
|
||||
INVOKE_ASYNC(src, .proc/admin_memo_output, "Show", FALSE, TRUE)
|
||||
INVOKE_ASYNC(src, PROC_REF(admin_memo_output), "Show", FALSE, TRUE)
|
||||
|
||||
|
||||
// Forcibly enable hardware-accelerated graphics, as we need them for the lighting overlays.
|
||||
@@ -574,7 +574,7 @@
|
||||
|
||||
qdel(query_update)
|
||||
// After the regular update
|
||||
INVOKE_ASYNC(src, /client/.proc/get_byond_account_date, FALSE) // Async to avoid other procs in the client chain being delayed by a web request
|
||||
INVOKE_ASYNC(src, TYPE_PROC_REF(/client, get_byond_account_date), FALSE) // Async to avoid other procs in the client chain being delayed by a web request
|
||||
|
||||
else
|
||||
//New player!! Need to insert all the stuff
|
||||
@@ -590,10 +590,10 @@
|
||||
qdel(query_insert)
|
||||
// This is their first connection instance, so TRUE here to notify admins
|
||||
// This needs to happen here to ensure they actually have a row to update
|
||||
INVOKE_ASYNC(src, /client/.proc/get_byond_account_date, TRUE) // Async to avoid other procs in the client chain being delayed by a web request
|
||||
INVOKE_ASYNC(src, TYPE_PROC_REF(/client, get_byond_account_date), TRUE) // Async to avoid other procs in the client chain being delayed by a web request
|
||||
|
||||
// Log player connections to DB
|
||||
INVOKE_ASYNC(GLOBAL_PROC, .proc/log_connection, ckey, address, computer_id, CONNECTION_TYPE_ESTABLISHED)
|
||||
INVOKE_ASYNC(GLOBAL_PROC, GLOBAL_PROC_REF(log_connection), ckey, address, computer_id, CONNECTION_TYPE_ESTABLISHED)
|
||||
|
||||
/client/proc/check_ip_intel()
|
||||
set waitfor = 0 //we sleep when getting the intel, no need to hold up the client connection while we sleep
|
||||
|
||||
@@ -1073,7 +1073,7 @@
|
||||
|
||||
if("edit_2fa")
|
||||
// Do this async so we arent holding up a topic() call
|
||||
INVOKE_ASYNC(user.client, /client.proc/edit_2fa)
|
||||
INVOKE_ASYNC(user.client, TYPE_PROC_REF(/client, edit_2fa))
|
||||
return // We return here to avoid focus being lost
|
||||
|
||||
if("keybindings")
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
SEND_SOUND(parent, S)
|
||||
// Save it
|
||||
if(debounce_save)
|
||||
volume_mixer_saving = addtimer(CALLBACK(src, .proc/save_volume_mixer), 3 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE | TIMER_STOPPABLE)
|
||||
volume_mixer_saving = addtimer(CALLBACK(src, PROC_REF(save_volume_mixer)), 3 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE | TIMER_STOPPABLE)
|
||||
else
|
||||
if(volume_mixer_saving)
|
||||
deltimer(volume_mixer_saving)
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
|
||||
/obj/item/clothing/shoes/galoshes/dry/Initialize(mapload)
|
||||
. = ..()
|
||||
RegisterSignal(src, COMSIG_SHOES_STEP_ACTION, .proc/on_step)
|
||||
RegisterSignal(src, COMSIG_SHOES_STEP_ACTION, PROC_REF(on_step))
|
||||
|
||||
/obj/item/clothing/shoes/galoshes/dry/proc/on_step()
|
||||
SIGNAL_HANDLER
|
||||
|
||||
@@ -373,7 +373,7 @@
|
||||
disabled = TRUE
|
||||
icon_state = "reactiveoff"
|
||||
item_state = "reactiveoff"
|
||||
addtimer(CALLBACK(src, .proc/reboot), disable_time SECONDS)
|
||||
addtimer(CALLBACK(src, PROC_REF(reboot)), disable_time SECONDS)
|
||||
if(ishuman(loc))
|
||||
var/mob/living/carbon/human/C = loc
|
||||
C.update_inv_wear_suit()
|
||||
@@ -461,7 +461,7 @@
|
||||
E.Goto(owner, E.move_to_delay, E.minimum_distance)
|
||||
owner.visible_message("<span class='danger'>[owner] is hit by [attack_text] in the chest!</span>") //We pretend to be hit, since blocking it would stop the message otherwise
|
||||
owner.make_invisible()
|
||||
addtimer(CALLBACK(owner, /mob/living/.proc/reset_visibility), 4 SECONDS)
|
||||
addtimer(CALLBACK(owner, TYPE_PROC_REF(/mob/living, reset_visibility)), 4 SECONDS)
|
||||
return TRUE
|
||||
|
||||
/obj/item/clothing/suit/armor/reactive/tesla
|
||||
@@ -524,7 +524,7 @@
|
||||
var/mob/living/M = AM
|
||||
to_chat(M, "<span class='userdanger'>You're thrown back by [owner]'s reactive armor!</span>")
|
||||
add_attack_logs(owner, M, "[M] was thrown by [owner]'s [src]", ATKLOG_ALMOSTALL)
|
||||
INVOKE_ASYNC(AM, /atom/movable/.proc/throw_at, throw_target, ((clamp((repulse_power - (clamp(dist_from_user - 2, 0, dist_from_user))), 3, repulse_power))), 1) //So stuff gets tossed around at the same time.
|
||||
INVOKE_ASYNC(AM, TYPE_PROC_REF(/atom/movable, throw_at), throw_target, ((clamp((repulse_power - (clamp(dist_from_user - 2, 0, dist_from_user))), 3, repulse_power))), 1) //So stuff gets tossed around at the same time.
|
||||
disable(rand(2, 5))
|
||||
return TRUE
|
||||
|
||||
|
||||
@@ -236,7 +236,7 @@
|
||||
|
||||
/obj/item/fluff/dogwhistle/attack_self(mob/user)
|
||||
user.visible_message("<span class='notice'>[user] blows on the whistle, but no sound comes out.</span>", "<span class='notice'>You blow on the whistle, but don't hear anything.</span>")
|
||||
addtimer(CALLBACK(src, .proc/summon_sax, user), 20)
|
||||
addtimer(CALLBACK(src, PROC_REF(summon_sax), user), 20)
|
||||
|
||||
/obj/item/fluff/dogwhistle/proc/summon_sax(mob/user)
|
||||
var/mob/living/simple_animal/pet/dog/corgi/C = new /mob/living/simple_animal/pet/dog/corgi(get_turf(user))
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
to_chat(usr, "<span class='notice'>Printing report, please wait...</span>")
|
||||
playsound(loc, 'sound/goonstation/machines/printer_thermal.ogg', 50, 1)
|
||||
|
||||
addtimer(CALLBACK(src, .proc/make_paper, log), 10 SECONDS) // Create our paper
|
||||
addtimer(CALLBACK(src, PROC_REF(make_paper), log), 10 SECONDS) // Create our paper
|
||||
log = list() // Clear the logs
|
||||
scanning = FALSE
|
||||
else
|
||||
@@ -95,7 +95,7 @@
|
||||
if(length(log) && !scanning)
|
||||
log = list()
|
||||
playsound(loc, 'sound/machines/ding.ogg', 40)
|
||||
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, usr, "<span class='notice'>Scanner logs cleared.</span>"), 1.5 SECONDS) //Timer so that it clears on the 'ding'
|
||||
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), usr, "<span class='notice'>Scanner logs cleared.</span>"), 1.5 SECONDS) //Timer so that it clears on the 'ding'
|
||||
else
|
||||
to_chat(usr, "<span class='warning'>The scanner has no logs or is in use.</span>")
|
||||
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
/datum/event/abductor
|
||||
|
||||
/datum/event/abductor/start()
|
||||
INVOKE_ASYNC(src, .proc/try_makeAbductorTeam)
|
||||
INVOKE_ASYNC(src, PROC_REF(try_makeAbductorTeam))
|
||||
|
||||
/datum/event/abductor/proc/try_makeAbductorTeam()
|
||||
if(!makeAbductorTeam())
|
||||
message_admins("Abductor event failed to find players. Retrying in 30s.")
|
||||
addtimer(CALLBACK(src, .proc/makeAbductorTeam), 30 SECONDS)
|
||||
addtimer(CALLBACK(src, PROC_REF(makeAbductorTeam)), 30 SECONDS)
|
||||
|
||||
/datum/event/abductor/proc/makeAbductorTeam()
|
||||
var/list/mob/dead/observer/candidates = SSghost_spawns.poll_candidates("Do you wish to be considered for an Abductor Team?", ROLE_ABDUCTOR, TRUE)
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
playercount = length(GLOB.clients)//grab playercount when event starts not when game starts
|
||||
if(playercount >= highpop_trigger) //spawn with 4 if highpop
|
||||
spawncount = 4
|
||||
INVOKE_ASYNC(src, .proc/spawn_xenos)
|
||||
INVOKE_ASYNC(src, PROC_REF(spawn_xenos))
|
||||
|
||||
/datum/event/alien_infestation/proc/spawn_xenos()
|
||||
var/list/candidates = SSghost_spawns.poll_candidates("Do you want to play as an alien?", ROLE_ALIEN, TRUE, source = /mob/living/carbon/alien/larva)
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
log_and_message_admins("Warning: Could not spawn any mobs for event Blob")
|
||||
|
||||
/datum/event/blob/start()
|
||||
INVOKE_ASYNC(src, .proc/make_blob)
|
||||
INVOKE_ASYNC(src, PROC_REF(make_blob))
|
||||
|
||||
/datum/event/blob/proc/make_blob()
|
||||
var/list/candidates = SSghost_spawns.poll_candidates("Do you want to play as a blob infested mouse?", ROLE_BLOB, TRUE, source = /mob/living/simple_animal/mouse/blobinfected)
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
for(var/obj/machinery/vending/V in GLOB.machines)
|
||||
if(!is_station_level(V.z))
|
||||
continue
|
||||
RegisterSignal(V, COMSIG_PARENT_QDELETING, .proc/vendor_destroyed)
|
||||
RegisterSignal(V, COMSIG_PARENT_QDELETING, PROC_REF(vendor_destroyed))
|
||||
vendingMachines.Add(V)
|
||||
|
||||
if(!length(vendingMachines))
|
||||
|
||||
@@ -20,4 +20,4 @@
|
||||
T.start_ion()
|
||||
// Bring it back sometime between 3-5 minutes. This uses deciseconds, so 1800 and 3000 respecticely.
|
||||
// The AI cannot disable this, it must be waited for
|
||||
addtimer(CALLBACK(T, /obj/machinery/tcomms.proc/end_ion), rand(1800, 3000))
|
||||
addtimer(CALLBACK(T, TYPE_PROC_REF(/obj/machinery/tcomms, end_ion)), rand(1800, 3000))
|
||||
|
||||
@@ -7,9 +7,9 @@
|
||||
for(var/obj/machinery/door/D in GLOB.airlocks)
|
||||
if(!is_station_level(D.z))
|
||||
continue
|
||||
INVOKE_ASYNC(D, /obj/machinery/door.proc/hostile_lockdown)
|
||||
addtimer(CALLBACK(D, /obj/machinery/door.proc/disable_lockdown), 90 SECONDS)
|
||||
addtimer(CALLBACK(src, .proc/reboot), 90 SECONDS)
|
||||
INVOKE_ASYNC(D, TYPE_PROC_REF(/obj/machinery/door, hostile_lockdown))
|
||||
addtimer(CALLBACK(D, TYPE_PROC_REF(/obj/machinery/door, disable_lockdown)), 90 SECONDS)
|
||||
addtimer(CALLBACK(src, PROC_REF(reboot)), 90 SECONDS)
|
||||
post_status(STATUS_DISPLAY_ALERT, "lockdown")
|
||||
|
||||
/datum/event/door_runtime/proc/reboot()
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
shake_camera(M, 3, 1)
|
||||
playsound(loc, 'sound/effects/meteorimpact.ogg', 40, 1)
|
||||
|
||||
INVOKE_ASYNC(src, .proc/impact_meteor, A) // ex_act can have some sleeps in it
|
||||
INVOKE_ASYNC(src, PROC_REF(impact_meteor), A) // ex_act can have some sleeps in it
|
||||
|
||||
/obj/effect/space_dust/proc/impact_meteor(atom/A)
|
||||
var/turf/where = get_turf(A)
|
||||
|
||||
@@ -24,4 +24,4 @@
|
||||
for(var/thing in epicentreList)
|
||||
var/obj/effect/landmark/epicentre = thing
|
||||
for(var/obj/machinery/power/apc/apc in range(epicentre, lightsoutRange))
|
||||
INVOKE_ASYNC(apc, /obj/machinery/power/apc.proc/overload_lighting)
|
||||
INVOKE_ASYNC(apc, TYPE_PROC_REF(/obj/machinery/power/apc, overload_lighting))
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
qnty = rand(45,125)
|
||||
|
||||
/datum/event/dust/meaty/start()
|
||||
INVOKE_ASYNC(src, .proc/spawn_meaty_ores)
|
||||
INVOKE_ASYNC(src, PROC_REF(spawn_meaty_ores))
|
||||
|
||||
/datum/event/dust/meaty/proc/spawn_meaty_ores()
|
||||
while(qnty-- > 0)
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
//meteor showers are lighter and more common,
|
||||
/datum/event/meteor_wave/tick()
|
||||
if(waves && activeFor >= next_meteor)
|
||||
INVOKE_ASYNC(GLOBAL_PROC, .proc/spawn_meteors, get_meteor_count(), get_meteors())
|
||||
INVOKE_ASYNC(GLOBAL_PROC, GLOBAL_PROC_REF(spawn_meteors), get_meteor_count(), get_meteors())
|
||||
next_meteor += rand(15, 30) / severity
|
||||
waves--
|
||||
endWhen = (waves ? next_meteor + 1 : activeFor + 15)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/datum/event/sentience
|
||||
|
||||
/datum/event/sentience/start()
|
||||
INVOKE_ASYNC(src, .proc/make_sentient_mob)
|
||||
INVOKE_ASYNC(src, PROC_REF(make_sentient_mob))
|
||||
|
||||
/datum/event/sentience/proc/make_sentient_mob()
|
||||
var/list/potential = list()
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
log_game("[key_name_admin(S)] was spawned as a Slaughter Demon by an event.")
|
||||
|
||||
/datum/event/spawn_slaughter/start()
|
||||
INVOKE_ASYNC(src, .proc/get_slaughter)
|
||||
INVOKE_ASYNC(src, PROC_REF(get_slaughter))
|
||||
|
||||
/datum/event/spawn_slaughter/greater
|
||||
demon = /mob/living/simple_animal/slaughter
|
||||
|
||||
@@ -230,7 +230,7 @@
|
||||
if(explosion_severity < 3)
|
||||
qdel(holder)
|
||||
else
|
||||
addtimer(CALLBACK(holder, /obj/structure/spacevine.proc/wither), 5)
|
||||
addtimer(CALLBACK(holder, TYPE_PROC_REF(/obj/structure/spacevine, wither)), 5)
|
||||
return TRUE
|
||||
|
||||
/datum/spacevine_mutation/explosive/on_death(obj/structure/spacevine/holder, mob/hitter, obj/item/I)
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
|
||||
/datum/event/spider_terror/start()
|
||||
// It is necessary to wrap this to avoid the event triggering repeatedly.
|
||||
INVOKE_ASYNC(src, .proc/wrappedstart)
|
||||
INVOKE_ASYNC(src, PROC_REF(wrappedstart))
|
||||
|
||||
/datum/event/spider_terror/proc/wrappedstart()
|
||||
var/spider_type
|
||||
|
||||
@@ -23,11 +23,11 @@
|
||||
// Give ghosts some time to jump there before it begins.
|
||||
var/image/alert_overlay = image('icons/mob/animal.dmi', notify_image)
|
||||
notify_ghosts("\A [src] is about to open in [get_area(T)].", title = notify_title, source = T, alert_overlay = alert_overlay, action = NOTIFY_FOLLOW)
|
||||
addtimer(CALLBACK(src, .proc/spawn_tear, T), 4 SECONDS)
|
||||
addtimer(CALLBACK(src, PROC_REF(spawn_tear), T), 4 SECONDS)
|
||||
|
||||
// Energy overload; we mess with machines as an early warning and for extra spookiness.
|
||||
for(var/obj/machinery/M in range(8, T))
|
||||
INVOKE_ASYNC(M, /atom/.proc/get_spooked)
|
||||
INVOKE_ASYNC(M, TYPE_PROC_REF(/atom, get_spooked))
|
||||
|
||||
/datum/event/tear/proc/spawn_tear(location)
|
||||
TE = new /obj/effect/tear(location)
|
||||
@@ -62,8 +62,8 @@
|
||||
playsound(get_turf(src), 'sound/magic/drum_heartbeat.ogg', 100)
|
||||
|
||||
// We spawn the minions first, then the boss.
|
||||
addtimer(CALLBACK(src, .proc/spawn_mobs), 2 SECONDS)
|
||||
addtimer(CALLBACK(src, .proc/spawn_leader), 5 SECONDS)
|
||||
addtimer(CALLBACK(src, PROC_REF(spawn_mobs)), 2 SECONDS)
|
||||
addtimer(CALLBACK(src, PROC_REF(spawn_leader)), 5 SECONDS)
|
||||
|
||||
/obj/effect/tear/proc/spawn_mobs()
|
||||
// We break some of those flickering consoles from earlier.
|
||||
|
||||
@@ -31,7 +31,7 @@ GLOBAL_LIST_INIT(unused_trade_stations, list("sol"))
|
||||
|
||||
trader_objectives = forge_trader_objectives()
|
||||
|
||||
INVOKE_ASYNC(src, .proc/spawn_traders, spawnlocs)
|
||||
INVOKE_ASYNC(src, PROC_REF(spawn_traders), spawnlocs)
|
||||
|
||||
/datum/event/traders/proc/spawn_traders(list/spawnlocs)
|
||||
var/list/candidates = SSghost_spawns.poll_candidates("Do you want to play as a Sol Trader?", ROLE_TRADER, TRUE)
|
||||
@@ -63,7 +63,7 @@ GLOBAL_LIST_INIT(unused_trade_stations, list("sol"))
|
||||
to_chat(M, "<span class='boldnotice'>You are a trader!</span>")
|
||||
to_chat(M, "<span class='notice'>You are currently docked at [get_area(M)].</span>")
|
||||
to_chat(M, "<span class='notice'>You are about to trade with [station_name()].</span>")
|
||||
addtimer(CALLBACK(GLOBAL_PROC, .proc/show_objectives, M.mind), 25)
|
||||
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(show_objectives), M.mind), 25)
|
||||
|
||||
/datum/event/traders/proc/forge_trader_objectives()
|
||||
var/list/objs = list()
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/datum/event/wallrot/start()
|
||||
INVOKE_ASYNC(src, .proc/spawn_wallrot)
|
||||
INVOKE_ASYNC(src, PROC_REF(spawn_wallrot))
|
||||
|
||||
/datum/event/wallrot/proc/spawn_wallrot()
|
||||
var/turf/simulated/wall/center = null
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
dream_images += pick_n_take(dreams)
|
||||
dreaming++
|
||||
for(var/i in 1 to dream_images.len)
|
||||
addtimer(CALLBACK(src, .proc/experience_dream, dream_images[i], FALSE), ((i - 1) * rand(30,60)))
|
||||
addtimer(CALLBACK(src, PROC_REF(experience_dream), dream_images[i], FALSE), ((i - 1) * rand(30,60)))
|
||||
return TRUE
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
dream_images += pick_n_take(nightmares)
|
||||
nightmare++
|
||||
for(var/i in 1 to dream_images.len)
|
||||
addtimer(CALLBACK(src, .proc/experience_dream, dream_images[i], TRUE), ((i - 1) * rand(30,60)))
|
||||
addtimer(CALLBACK(src, PROC_REF(experience_dream), dream_images[i], TRUE), ((i - 1) * rand(30,60)))
|
||||
return TRUE
|
||||
|
||||
/mob/living/carbon/proc/handle_dreams()
|
||||
|
||||
@@ -51,18 +51,18 @@
|
||||
return ..()
|
||||
if(src == H.l_hand || src == H.r_hand)
|
||||
can_shake = FALSE
|
||||
addtimer(CALLBACK(src, .proc/reset_shakable), 1 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE)
|
||||
addtimer(CALLBACK(src, PROC_REF(reset_shakable)), 1 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE)
|
||||
to_chat(H, "<span class='notice'>You start shaking up [src].</span>")
|
||||
if(do_after(H, 1 SECONDS, target = H))
|
||||
visible_message("<span class='warning'>[user] shakes up [src]!</span>")
|
||||
if(times_shaken == 0)
|
||||
times_shaken++
|
||||
addtimer(CALLBACK(src, .proc/reset_shaken), 1 MINUTES, TIMER_UNIQUE | TIMER_OVERRIDE | TIMER_NO_HASH_WAIT)
|
||||
addtimer(CALLBACK(src, PROC_REF(reset_shaken)), 1 MINUTES, TIMER_UNIQUE | TIMER_OVERRIDE | TIMER_NO_HASH_WAIT)
|
||||
else if(times_shaken < 5)
|
||||
times_shaken++
|
||||
addtimer(CALLBACK(src, .proc/reset_shaken), (70 - (times_shaken * 10)) SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE | TIMER_NO_HASH_WAIT)
|
||||
addtimer(CALLBACK(src, PROC_REF(reset_shaken)), (70 - (times_shaken * 10)) SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE | TIMER_NO_HASH_WAIT)
|
||||
else
|
||||
addtimer(CALLBACK(src, .proc/reset_shaken), 20 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE | TIMER_NO_HASH_WAIT)
|
||||
addtimer(CALLBACK(src, PROC_REF(reset_shaken)), 20 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE | TIMER_NO_HASH_WAIT)
|
||||
handle_bursting(user)
|
||||
else
|
||||
to_chat(H, "<span class='warning'>You need to hold [src] in order to shake it.</span>")
|
||||
@@ -158,7 +158,7 @@
|
||||
can_burst = FALSE
|
||||
burst_chance = 0
|
||||
if(times_shaken)
|
||||
addtimer(CALLBACK(src, .proc/reset_shaken), (70 - (times_shaken * 10)) SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE | TIMER_NO_HASH_WAIT)
|
||||
addtimer(CALLBACK(src, PROC_REF(reset_shaken)), (70 - (times_shaken * 10)) SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE | TIMER_NO_HASH_WAIT)
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/cans/cola
|
||||
name = "space cola"
|
||||
|
||||
@@ -148,7 +148,7 @@
|
||||
else
|
||||
L.death()
|
||||
break
|
||||
addtimer(CALLBACK(src, .proc/finish_cook, I, user), cooktime)
|
||||
addtimer(CALLBACK(src, PROC_REF(finish_cook), I, user), cooktime)
|
||||
|
||||
/obj/machinery/cooker/proc/finish_cook(obj/item/I, mob/user, params)
|
||||
if(QDELETED(I)) //For situations where the item being cooked gets deleted mid-cook (primed grenades)
|
||||
|
||||
@@ -56,8 +56,8 @@
|
||||
)
|
||||
|
||||
playsound(src, 'sound/goonstation/misc/drinkfizz.ogg', 25)
|
||||
addtimer(CALLBACK(src, .proc/boil_leadup, user), 4 SECONDS)
|
||||
addtimer(CALLBACK(src, .proc/make_foam, ice_amount), 5 SECONDS)
|
||||
addtimer(CALLBACK(src, PROC_REF(boil_leadup), user), 4 SECONDS)
|
||||
addtimer(CALLBACK(src, PROC_REF(make_foam), ice_amount), 5 SECONDS)
|
||||
|
||||
return TRUE
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
occupant = user
|
||||
update_icon(UPDATE_OVERLAYS)
|
||||
feedinTopanim()
|
||||
addtimer(CALLBACK(src, .proc/startgibbing, user), 33)
|
||||
addtimer(CALLBACK(src, PROC_REF(startgibbing), user), 33)
|
||||
return OBLITERATION
|
||||
|
||||
/obj/machinery/gibber/update_overlays()
|
||||
@@ -147,7 +147,7 @@
|
||||
occupant = victim
|
||||
|
||||
update_icon(UPDATE_OVERLAYS)
|
||||
INVOKE_ASYNC(src, .proc/feedinTopanim)
|
||||
INVOKE_ASYNC(src, PROC_REF(feedinTopanim))
|
||||
|
||||
/obj/machinery/gibber/verb/eject()
|
||||
set category = "Object"
|
||||
|
||||
@@ -375,7 +375,7 @@
|
||||
if(!throw_item)
|
||||
return FALSE
|
||||
|
||||
INVOKE_ASYNC(throw_item, /atom/movable.proc/throw_at, target, 16, 3, src)
|
||||
INVOKE_ASYNC(throw_item, TYPE_PROC_REF(/atom/movable, throw_at), target, 16, 3, src)
|
||||
visible_message("<span class='warning'>[src] launches [throw_item.name] at [target.name]!</span>")
|
||||
return TRUE
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
/obj/effect/hallucination/chaser/Initialize(mapload, mob/living/carbon/target)
|
||||
. = ..()
|
||||
name = "\proper monkey ([rand(100, 999)])"
|
||||
think_timer = addtimer(CALLBACK(src, .proc/think), think_interval, TIMER_LOOP | TIMER_STOPPABLE)
|
||||
think_timer = addtimer(CALLBACK(src, PROC_REF(think)), think_interval, TIMER_LOOP | TIMER_STOPPABLE)
|
||||
|
||||
/obj/effect/hallucination/chaser/Destroy()
|
||||
deltimer(think_timer)
|
||||
|
||||
@@ -139,7 +139,7 @@
|
||||
teleport.plane = GAME_PLANE
|
||||
add_icon(teleport)
|
||||
clear_icon_in(teleport, 4 SECONDS)
|
||||
addtimer(CALLBACK(src, .proc/do_spawn_scientist, T), 4 SECONDS)
|
||||
addtimer(CALLBACK(src, PROC_REF(do_spawn_scientist), T), 4 SECONDS)
|
||||
playsound(T, "sparks", 100, TRUE)
|
||||
|
||||
/**
|
||||
@@ -206,8 +206,8 @@
|
||||
/obj/effect/hallucination/loose_energy_ball/Initialize(mapload)
|
||||
. = ..()
|
||||
phase_1()
|
||||
addtimer(CALLBACK(src, .proc/phase_2), length_phase_1)
|
||||
addtimer(CALLBACK(src, .proc/phase_3), length_phase_1 + length_phase_2)
|
||||
addtimer(CALLBACK(src, PROC_REF(phase_2)), length_phase_1)
|
||||
addtimer(CALLBACK(src, PROC_REF(phase_3)), length_phase_1 + length_phase_2)
|
||||
|
||||
/**
|
||||
* First phase of the hallucination: intermittent, far-away explosion sounds.
|
||||
@@ -238,7 +238,7 @@
|
||||
|
||||
var/steps = (length_phase_3 / 20) - 1
|
||||
for(var/i in 0 to steps)
|
||||
addtimer(CALLBACK(src, .proc/phase_3_inner, ball, steps - i, i), i * 2 SECONDS)
|
||||
addtimer(CALLBACK(src, PROC_REF(phase_3_inner), ball, steps - i, i), i * 2 SECONDS)
|
||||
|
||||
/**
|
||||
* Called during phase 3 to approach the energy ball towards the target.
|
||||
@@ -359,7 +359,7 @@
|
||||
var/turf/T = get_turf(pick(vents))
|
||||
xeno = new(T, target)
|
||||
xeno.dir = get_dir(T, target)
|
||||
addtimer(CALLBACK(src, .proc/do_pounce), pounce_interval)
|
||||
addtimer(CALLBACK(src, PROC_REF(do_pounce)), pounce_interval)
|
||||
|
||||
/obj/effect/hallucination/xeno_pounce/proc/do_pounce()
|
||||
if(QDELETED(xeno) || QDELETED(target))
|
||||
@@ -367,7 +367,7 @@
|
||||
|
||||
xeno.leap_to(target)
|
||||
if(--num_pounces > 0)
|
||||
addtimer(CALLBACK(src, .proc/do_pounce), pounce_interval)
|
||||
addtimer(CALLBACK(src, PROC_REF(do_pounce)), pounce_interval)
|
||||
|
||||
/obj/effect/hallucination/xeno_pouncer
|
||||
hallucination_icon = 'icons/mob/alien.dmi'
|
||||
@@ -399,7 +399,7 @@
|
||||
images[1].icon = 'icons/mob/alienleap.dmi'
|
||||
images[1].icon_state = "alienh_leap"
|
||||
dir = get_dir(get_turf(src), dest)
|
||||
throw_at(dest, 7, 1, spin = FALSE, diagonals_first = TRUE, callback = CALLBACK(src, .proc/reset_icon))
|
||||
throw_at(dest, 7, 1, spin = FALSE, diagonals_first = TRUE, callback = CALLBACK(src, PROC_REF(reset_icon)))
|
||||
|
||||
/**
|
||||
* Resets the xeno's icon to a resting state.
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
var/obj/machinery/door/airlock/A = pick_n_take(airlocks)
|
||||
if(A.locked)
|
||||
continue
|
||||
addtimer(CALLBACK(src, .proc/do_bolt, A), num_bolted++ * rand(5, 7))
|
||||
addtimer(CALLBACK(src, PROC_REF(do_bolt), A), num_bolted++ * rand(5, 7))
|
||||
bolt_amount--
|
||||
|
||||
/**
|
||||
@@ -86,8 +86,8 @@
|
||||
target?.playsound_local(get_turf(A), A.boltDown, 30, FALSE, 3)
|
||||
LAZYSET(bolted, A, bolt_overlay)
|
||||
// Timer and signal to turn it off (only one can happen)
|
||||
RegisterSignal(A, COMSIG_AIRLOCK_OPEN, .proc/do_unbolt)
|
||||
addtimer(CALLBACK(src, .proc/do_unbolt, A, bolt_overlay), bolt_duration)
|
||||
RegisterSignal(A, COMSIG_AIRLOCK_OPEN, PROC_REF(do_unbolt))
|
||||
addtimer(CALLBACK(src, PROC_REF(do_unbolt), A, bolt_overlay), bolt_duration)
|
||||
|
||||
/**
|
||||
* Called in a timer to fake unbolt the given airlock.
|
||||
|
||||
@@ -267,7 +267,7 @@
|
||||
create_plasma(T)
|
||||
expand_queue += T
|
||||
processed[T] = TRUE
|
||||
expand_timer = addtimer(CALLBACK(src, .proc/expand), expand_delay, TIMER_LOOP | TIMER_STOPPABLE)
|
||||
expand_timer = addtimer(CALLBACK(src, PROC_REF(expand)), expand_delay, TIMER_LOOP | TIMER_STOPPABLE)
|
||||
|
||||
/obj/effect/hallucination/plasma_flood/Destroy()
|
||||
deltimer(expand_timer)
|
||||
|
||||
@@ -114,7 +114,7 @@ GLOBAL_LIST_INIT(hallucinations, list(
|
||||
* * delay - Delay in deciseconds.
|
||||
*/
|
||||
/obj/effect/hallucination/proc/clear_icon_in(image/I, delay)
|
||||
addtimer(CALLBACK(src, .proc/clear_icon, I), delay)
|
||||
addtimer(CALLBACK(src, PROC_REF(clear_icon), I), delay)
|
||||
|
||||
/**
|
||||
* Clears all images from the hallucination.
|
||||
@@ -141,4 +141,4 @@ GLOBAL_LIST_INIT(hallucinations, list(
|
||||
if(time == 0) // whatever
|
||||
target?.playsound_local(source, snd, volume, vary, frequency)
|
||||
return
|
||||
addtimer(CALLBACK(target, /mob/.proc/playsound_local, source, snd, volume, vary, frequency), time)
|
||||
addtimer(CALLBACK(target, TYPE_PROC_REF(/mob, playsound_local), source, snd, volume, vary, frequency), time)
|
||||
|
||||
@@ -271,7 +271,7 @@
|
||||
stored_plants.Cut()
|
||||
playsound(loc, 'sound/machines/blender.ogg', 50, 1)
|
||||
use_power(plants_processed * 150)
|
||||
addtimer(CALLBACK(src, .proc/end_processing), (plants_processed * 5) / productivity)
|
||||
addtimer(CALLBACK(src, PROC_REF(end_processing)), (plants_processed * 5) / productivity)
|
||||
|
||||
/obj/machinery/biogenerator/proc/end_processing()
|
||||
processing = FALSE
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
return FALSE
|
||||
G.forceMove(src)
|
||||
to_chat(user, "<span class='notice'>You place [G] into [src] to start the fermentation process.</span>")
|
||||
addtimer(CALLBACK(src, .proc/makeWine, G), rand(80, 120) * speed_multiplier)
|
||||
addtimer(CALLBACK(src, PROC_REF(makeWine), G), rand(80, 120) * speed_multiplier)
|
||||
else if(I.is_refillable())
|
||||
return FALSE // To refill via afterattack proc
|
||||
else
|
||||
|
||||
@@ -124,7 +124,7 @@
|
||||
C.throw_mode_on()
|
||||
icon_state = "firelemon_active"
|
||||
playsound(loc, 'sound/weapons/armbomb.ogg', 75, 1, -3)
|
||||
addtimer(CALLBACK(src, .proc/prime), rand(10, 60))
|
||||
addtimer(CALLBACK(src, PROC_REF(prime)), rand(10, 60))
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/firelemon/burn()
|
||||
prime()
|
||||
|
||||
@@ -89,7 +89,7 @@
|
||||
samples = list()
|
||||
for(var/key in real_samples)
|
||||
real_keys += text2num(key)
|
||||
sortTim(real_keys, /proc/cmp_numeric_asc, associative = FALSE)
|
||||
sortTim(real_keys, GLOBAL_PROC_REF(cmp_numeric_asc), associative = FALSE)
|
||||
|
||||
for(var/i in 1 to (length(real_keys) - 1))
|
||||
var/from_key = real_keys[i]
|
||||
|
||||
@@ -13,8 +13,8 @@
|
||||
song.instrument_range = 0
|
||||
song.allowed_instrument_ids = SSinstruments.synthesizer_instrument_ids
|
||||
// To update the icon
|
||||
RegisterSignal(src, COMSIG_SONG_START, .proc/start_playing)
|
||||
RegisterSignal(src, COMSIG_SONG_END, .proc/stop_playing)
|
||||
RegisterSignal(src, COMSIG_SONG_START, PROC_REF(start_playing))
|
||||
RegisterSignal(src, COMSIG_SONG_END, PROC_REF(stop_playing))
|
||||
|
||||
/obj/item/clothing/ears/headphones/Destroy()
|
||||
QDEL_NULL(song)
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
if("tempo")
|
||||
tempo = sanitize_tempo(text2num(params["new"]))
|
||||
if("play")
|
||||
INVOKE_ASYNC(src, .proc/start_playing, usr)
|
||||
INVOKE_ASYNC(src, PROC_REF(start_playing), usr)
|
||||
if("newline")
|
||||
var/newline = html_encode(input("Enter your line: ", parent.name) as text|null)
|
||||
if(!newline || !in_range(parent, usr))
|
||||
|
||||
@@ -320,7 +320,7 @@
|
||||
|
||||
user.drop_item()
|
||||
I.forceMove(src)
|
||||
RegisterSignal(I, COMSIG_PARENT_QDELETING, .proc/clear_stored_item) //ensure proper GC'ing
|
||||
RegisterSignal(I, COMSIG_PARENT_QDELETING, PROC_REF(clear_stored_item)) //ensure proper GC'ing
|
||||
store = I
|
||||
to_chat(user, "<span class='notice'>You hide [I] in [name].</span>")
|
||||
return TRUE
|
||||
|
||||
@@ -249,7 +249,7 @@
|
||||
if(!printing)
|
||||
printing = TRUE
|
||||
visible_message("<span class='notice'>[src] begins to hum as it warms up its printing drums.</span>")
|
||||
addtimer(CALLBACK(src, .proc/print_book), 5 SECONDS)
|
||||
addtimer(CALLBACK(src, PROC_REF(print_book)), 5 SECONDS)
|
||||
else
|
||||
playsound(src, 'sound/machines/synth_no.ogg', 15, TRUE)
|
||||
if("toggle_binder_category")
|
||||
@@ -347,7 +347,7 @@
|
||||
|
||||
disconnect() //clear references to old computer, we have to unregister signals
|
||||
computer = library_computer
|
||||
RegisterSignal(library_computer, COMSIG_PARENT_QDELETING, .proc/disconnect)
|
||||
RegisterSignal(library_computer, COMSIG_PARENT_QDELETING, PROC_REF(disconnect))
|
||||
return TRUE
|
||||
|
||||
/obj/item/barcodescanner/proc/disconnect()
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
target.adjustStaminaLoss(40)
|
||||
|
||||
CQC.restraining = TRUE
|
||||
addtimer(CALLBACK(CQC, /datum/martial_art/cqc/.proc/drop_restraining), 5 SECONDS, TIMER_UNIQUE)
|
||||
addtimer(CALLBACK(CQC, TYPE_PROC_REF(/datum/martial_art/cqc, drop_restraining)), 5 SECONDS, TIMER_UNIQUE)
|
||||
add_attack_logs(user, target, "Melee attacked with martial-art [src] : Restrain", ATKLOG_ALL)
|
||||
return MARTIAL_COMBO_DONE
|
||||
return MARTIAL_COMBO_FAIL
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
/datum/martial_combo/plasma_fist/tornado_sweep/perform_combo(mob/living/carbon/human/user, mob/living/target, datum/martial_art/MA)
|
||||
user.say("TORNADO SWEEP!")
|
||||
INVOKE_ASYNC(src, .proc/do_tornado_effect, user)
|
||||
INVOKE_ASYNC(src, PROC_REF(do_tornado_effect), user)
|
||||
var/obj/effect/proc_holder/spell/aoe_turf/repulse/R = new(null)
|
||||
var/list/turfs = list()
|
||||
for(var/turf/T in range(1,user))
|
||||
|
||||
@@ -114,7 +114,7 @@
|
||||
D.fire()
|
||||
charged = FALSE
|
||||
update_icon()
|
||||
addtimer(CALLBACK(src, .proc/Recharge), charge_time)
|
||||
addtimer(CALLBACK(src, PROC_REF(Recharge)), charge_time)
|
||||
return
|
||||
if(proximity_flag && isliving(target))
|
||||
var/mob/living/L = target
|
||||
@@ -392,7 +392,7 @@
|
||||
continue
|
||||
playsound(L, 'sound/magic/fireball.ogg', 20, 1)
|
||||
new /obj/effect/temp_visual/fire(L.loc)
|
||||
addtimer(CALLBACK(src, .proc/pushback, L, user), 1) //no free backstabs, we push AFTER module stuff is done
|
||||
addtimer(CALLBACK(src, PROC_REF(pushback), L, user), 1) //no free backstabs, we push AFTER module stuff is done
|
||||
L.adjustFireLoss(bonus_value)
|
||||
|
||||
/obj/item/crusher_trophy/tail_spike/proc/pushback(mob/living/target, mob/living/user)
|
||||
@@ -458,7 +458,7 @@
|
||||
|
||||
/obj/item/crusher_trophy/blaster_tubes/on_mark_detonation(mob/living/target, mob/living/user)
|
||||
deadly_shot = TRUE
|
||||
addtimer(CALLBACK(src, .proc/reset_deadly_shot), 300, TIMER_UNIQUE|TIMER_OVERRIDE)
|
||||
addtimer(CALLBACK(src, PROC_REF(reset_deadly_shot)), 300, TIMER_UNIQUE|TIMER_OVERRIDE)
|
||||
|
||||
/obj/item/crusher_trophy/blaster_tubes/proc/reset_deadly_shot()
|
||||
deadly_shot = FALSE
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
|
||||
/obj/item/organ/internal/regenerative_core/Initialize(mapload)
|
||||
. = ..()
|
||||
addtimer(CALLBACK(src, .proc/inert_check), 2400)
|
||||
addtimer(CALLBACK(src, PROC_REF(inert_check)), 2400)
|
||||
|
||||
/obj/item/organ/internal/regenerative_core/proc/inert_check()
|
||||
if(!preserved)
|
||||
@@ -122,7 +122,7 @@
|
||||
|
||||
/obj/item/organ/internal/regenerative_core/legion/update_icon_state()
|
||||
icon_state = inert ? "legion_soul_inert" : "legion_soul"
|
||||
|
||||
|
||||
/obj/item/organ/internal/regenerative_core/legion/update_overlays()
|
||||
. = ..()
|
||||
if(!inert && !preserved)
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
transform = matrix() * 0.75
|
||||
animate(src, transform = matrix() * 1.5, time = duration)
|
||||
deltimer(timerid)
|
||||
timerid = addtimer(CALLBACK(src, .proc/burst), duration, TIMER_STOPPABLE)
|
||||
timerid = addtimer(CALLBACK(src, PROC_REF(burst)), duration, TIMER_STOPPABLE)
|
||||
|
||||
/obj/effect/temp_visual/resonance/Destroy()
|
||||
if(res)
|
||||
|
||||
@@ -88,7 +88,7 @@
|
||||
L.Weaken(12 SECONDS)
|
||||
if(ishuman(L))
|
||||
shake_camera(L, 20, 1)
|
||||
addtimer(CALLBACK(L, /mob/living/carbon.proc/vomit), 20)
|
||||
addtimer(CALLBACK(L, TYPE_PROC_REF(/mob/living/carbon, vomit)), 20)
|
||||
|
||||
/obj/item/wormhole_jaunter/contractor
|
||||
name = "emergency extraction flare"
|
||||
@@ -140,7 +140,7 @@
|
||||
"<span class='notice'>You light an emergency extraction flare, initiating the extraction process.</span>")
|
||||
user.drop_item()
|
||||
forceMove(F)
|
||||
addtimer(CALLBACK(src, .proc/create_portal, destination), 5 SECONDS)
|
||||
addtimer(CALLBACK(src, PROC_REF(create_portal), destination), 5 SECONDS)
|
||||
|
||||
/obj/item/wormhole_jaunter/contractor/proc/create_portal(turf/destination)
|
||||
new /obj/effect/decal/cleanable/ash(get_turf(src))
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
name = harvested_name
|
||||
desc = harvested_desc
|
||||
harvested = TRUE
|
||||
addtimer(CALLBACK(src, .proc/regrow), rand(regrowth_time_low, regrowth_time_high))
|
||||
addtimer(CALLBACK(src, PROC_REF(regrow)), rand(regrowth_time_low, regrowth_time_high))
|
||||
return 1
|
||||
|
||||
/obj/structure/flora/ash/proc/regrow()
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
..()
|
||||
spirits = list()
|
||||
register_signals(src)
|
||||
RegisterSignal(src, COMSIG_MOVABLE_MOVED, .proc/on_move)
|
||||
RegisterSignal(src, COMSIG_MOVABLE_MOVED, PROC_REF(on_move))
|
||||
GLOB.poi_list |= src
|
||||
|
||||
/obj/item/melee/ghost_sword/Destroy()
|
||||
@@ -113,8 +113,8 @@
|
||||
UnregisterSignal(A, COMSIG_ATOM_ORBIT_BEGIN)
|
||||
|
||||
/obj/item/melee/ghost_sword/proc/register_signals(atom/A)
|
||||
RegisterSignal(A, COMSIG_ATOM_ORBIT_BEGIN, .proc/add_ghost, override = TRUE)
|
||||
RegisterSignal(A, COMSIG_ATOM_ORBIT_STOP, .proc/remove_ghost, override = TRUE)
|
||||
RegisterSignal(A, COMSIG_ATOM_ORBIT_BEGIN, PROC_REF(add_ghost), override = TRUE)
|
||||
RegisterSignal(A, COMSIG_ATOM_ORBIT_STOP, PROC_REF(remove_ghost), override = TRUE)
|
||||
|
||||
/**
|
||||
* When moving into something's contents
|
||||
|
||||
@@ -64,14 +64,14 @@
|
||||
calculate_anger_mod(user)
|
||||
timer = world.time + CLICK_CD_MELEE //by default, melee attacks only cause melee blasts, and have an accordingly short cooldown
|
||||
if(proximity_flag)
|
||||
INVOKE_ASYNC(src, .proc/aoe_burst, T, user)
|
||||
INVOKE_ASYNC(src, PROC_REF(aoe_burst), T, user)
|
||||
if(is_station_level(T.z))
|
||||
add_attack_logs(user, target, "Fired 3x3 blast at [src]")
|
||||
else
|
||||
add_attack_logs(user, target, "Fired 3x3 blast at [src]", ATKLOG_ALL)
|
||||
else
|
||||
if(ismineralturf(target) && get_dist(user, target) < 6) //target is minerals, we can hit it(even if we can't see it)
|
||||
INVOKE_ASYNC(src, .proc/cardinal_blasts, T, user)
|
||||
INVOKE_ASYNC(src, PROC_REF(cardinal_blasts), T, user)
|
||||
timer = world.time + cooldown_time
|
||||
else if(target in view(5, get_turf(user))) //if the target is in view, hit it
|
||||
timer = world.time + cooldown_time
|
||||
@@ -85,7 +85,7 @@
|
||||
else
|
||||
add_attack_logs(user, target, "Fired a chaser at [src]", ATKLOG_ALL)
|
||||
else
|
||||
INVOKE_ASYNC(src, .proc/cardinal_blasts, T, user) //otherwise, just do cardinal blast
|
||||
INVOKE_ASYNC(src, PROC_REF(cardinal_blasts), T, user) //otherwise, just do cardinal blast
|
||||
if(is_station_level(T.z))
|
||||
add_attack_logs(user, target, "Fired cardinal blast at [src]")
|
||||
else
|
||||
@@ -93,7 +93,7 @@
|
||||
else
|
||||
to_chat(user, "<span class='warning'>That target is out of range!</span>" )
|
||||
timer = world.time
|
||||
INVOKE_ASYNC(src, .proc/prepare_icon_update)
|
||||
INVOKE_ASYNC(src, PROC_REF(prepare_icon_update))
|
||||
|
||||
/obj/item/hierophant_club/proc/calculate_anger_mod(mob/user) //we get stronger as the user loses health
|
||||
chaser_cooldown = initial(chaser_cooldown)
|
||||
@@ -140,7 +140,7 @@
|
||||
user.visible_message("<span class='hierophant_warning'>[user] starts fiddling with [src]'s pommel...</span>", \
|
||||
"<span class='notice'>You start detaching the hierophant beacon...</span>")
|
||||
timer = world.time + 51
|
||||
INVOKE_ASYNC(src, .proc/prepare_icon_update)
|
||||
INVOKE_ASYNC(src, PROC_REF(prepare_icon_update))
|
||||
if(do_after(user, 50, target = user) && !beacon)
|
||||
var/turf/T = get_turf(user)
|
||||
playsound(T,'sound/magic/blind.ogg', 200, TRUE, -4)
|
||||
@@ -152,7 +152,7 @@
|
||||
<span class='notice'>You can remove the beacon to place it again by striking it with the club.</span>")
|
||||
else
|
||||
timer = world.time
|
||||
INVOKE_ASYNC(src, .proc/prepare_icon_update)
|
||||
INVOKE_ASYNC(src, PROC_REF(prepare_icon_update))
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You need to be on solid ground to detach the beacon!</span>")
|
||||
return
|
||||
@@ -172,7 +172,7 @@
|
||||
user.update_action_buttons_icon()
|
||||
user.visible_message("<span class='hierophant_warning'>[user] starts to glow faintly...</span>")
|
||||
timer = world.time + 50
|
||||
INVOKE_ASYNC(src, .proc/prepare_icon_update)
|
||||
INVOKE_ASYNC(src, PROC_REF(prepare_icon_update))
|
||||
beacon.icon_state = "hierophant_tele_on"
|
||||
var/obj/effect/temp_visual/hierophant/telegraph/edge/TE1 = new /obj/effect/temp_visual/hierophant/telegraph/edge(user.loc)
|
||||
var/obj/effect/temp_visual/hierophant/telegraph/edge/TE2 = new /obj/effect/temp_visual/hierophant/telegraph/edge(beacon.loc)
|
||||
@@ -184,7 +184,7 @@
|
||||
to_chat(user, "<span class='warning'>The beacon is blocked by something, preventing teleportation!</span>")
|
||||
user.update_action_buttons_icon()
|
||||
timer = world.time
|
||||
INVOKE_ASYNC(src, .proc/prepare_icon_update)
|
||||
INVOKE_ASYNC(src, PROC_REF(prepare_icon_update))
|
||||
beacon.icon_state = "hierophant_tele_off"
|
||||
return
|
||||
new /obj/effect/temp_visual/hierophant/telegraph(T, user)
|
||||
@@ -196,7 +196,7 @@
|
||||
if(user)
|
||||
user.update_action_buttons_icon()
|
||||
timer = world.time
|
||||
INVOKE_ASYNC(src, .proc/prepare_icon_update)
|
||||
INVOKE_ASYNC(src, PROC_REF(prepare_icon_update))
|
||||
if(beacon)
|
||||
beacon.icon_state = "hierophant_tele_off"
|
||||
return
|
||||
@@ -205,7 +205,7 @@
|
||||
to_chat(user, "<span class='warning'>The beacon is blocked by something, preventing teleportation!</span>")
|
||||
user.update_action_buttons_icon()
|
||||
timer = world.time
|
||||
INVOKE_ASYNC(src, .proc/prepare_icon_update)
|
||||
INVOKE_ASYNC(src, PROC_REF(prepare_icon_update))
|
||||
beacon.icon_state = "hierophant_tele_off"
|
||||
return
|
||||
add_attack_logs(user, beacon, "Teleported self from ([AREACOORD(source)]) to ([AREACOORD(beacon)])")
|
||||
@@ -218,7 +218,7 @@
|
||||
var/obj/effect/temp_visual/hierophant/blast/B = new /obj/effect/temp_visual/hierophant/blast(t, user, TRUE) //but absolutely will hurt enemies
|
||||
B.damage = 30
|
||||
for(var/mob/living/L in range(1, source))
|
||||
INVOKE_ASYNC(src, .proc/teleport_mob, source, L, T, user) //regardless, take all mobs near us along
|
||||
INVOKE_ASYNC(src, PROC_REF(teleport_mob), source, L, T, user) //regardless, take all mobs near us along
|
||||
sleep(6) //at this point the blasts detonate
|
||||
if(beacon)
|
||||
beacon.icon_state = "hierophant_tele_off"
|
||||
@@ -226,7 +226,7 @@
|
||||
qdel(TE1)
|
||||
qdel(TE2)
|
||||
timer = world.time
|
||||
INVOKE_ASYNC(src, .proc/prepare_icon_update)
|
||||
INVOKE_ASYNC(src, PROC_REF(prepare_icon_update))
|
||||
if(beacon)
|
||||
beacon.icon_state = "hierophant_tele_off"
|
||||
teleporting = FALSE
|
||||
@@ -267,7 +267,7 @@
|
||||
B.damage = HIEROPHANT_CLUB_CARDINAL_DAMAGE
|
||||
B.monster_damage_boost = FALSE
|
||||
for(var/d in GLOB.cardinal)
|
||||
INVOKE_ASYNC(src, .proc/blast_wall, T, d, user)
|
||||
INVOKE_ASYNC(src, PROC_REF(blast_wall), T, d, user)
|
||||
|
||||
/obj/item/hierophant_club/proc/blast_wall(turf/T, dir, mob/living/user) //make a wall of blasts blast_range tiles long
|
||||
if(!T)
|
||||
|
||||
@@ -260,7 +260,7 @@
|
||||
return
|
||||
|
||||
if(wisp.loc == src)
|
||||
RegisterSignal(user, COMSIG_MOB_UPDATE_SIGHT, .proc/update_user_sight)
|
||||
RegisterSignal(user, COMSIG_MOB_UPDATE_SIGHT, PROC_REF(update_user_sight))
|
||||
|
||||
to_chat(user, "<span class='notice'>You release the wisp. It begins to bob around your head.</span>")
|
||||
icon_state = "lantern"
|
||||
@@ -349,7 +349,7 @@
|
||||
smoke2.start()
|
||||
cooldown = TRUE
|
||||
linked.cooldown = TRUE
|
||||
addtimer(CALLBACK(src, .proc/reset), 20 SECONDS)
|
||||
addtimer(CALLBACK(src, PROC_REF(reset)), 20 SECONDS)
|
||||
|
||||
/obj/item/warp_cube/proc/reset()
|
||||
cooldown = FALSE
|
||||
|
||||
@@ -364,7 +364,7 @@
|
||||
..()
|
||||
if(!activated)
|
||||
return
|
||||
addtimer(CALLBACK(src, .proc/try_attach_to_owner), 0) // Do this once the drop call stack is done. The holding limb might be getting removed
|
||||
addtimer(CALLBACK(src, PROC_REF(try_attach_to_owner)), 0) // Do this once the drop call stack is done. The holding limb might be getting removed
|
||||
|
||||
/obj/item/rod_of_asclepius/proc/try_attach_to_owner()
|
||||
if(ishuman(owner) && !QDELETED(owner))
|
||||
@@ -403,7 +403,7 @@
|
||||
activated = TRUE
|
||||
|
||||
owner.apply_status_effect(STATUS_EFFECT_HIPPOCRATIC_OATH)
|
||||
RegisterSignal(owner, COMSIG_PARENT_QDELETING, .proc/deactivate)
|
||||
RegisterSignal(owner, COMSIG_PARENT_QDELETING, PROC_REF(deactivate))
|
||||
|
||||
/obj/item/rod_of_asclepius/proc/deactivate()
|
||||
if(owner)
|
||||
@@ -434,7 +434,7 @@
|
||||
. = ..()
|
||||
to_chat(user,"<span class='userdanger'>The mass goes up your arm and inside it!</span>")
|
||||
playsound(user, 'sound/misc/demon_consume.ogg', 50, TRUE)
|
||||
RegisterSignal(user, COMSIG_MOB_DEATH, .proc/user_death)
|
||||
RegisterSignal(user, COMSIG_MOB_DEATH, PROC_REF(user_death))
|
||||
|
||||
user.drop_item()
|
||||
insert(user)
|
||||
@@ -464,7 +464,7 @@
|
||||
|
||||
/obj/item/organ/internal/cyberimp/arm/katana/proc/user_death(mob/user)
|
||||
SIGNAL_HANDLER
|
||||
INVOKE_ASYNC(src, .proc/user_death_async, user)
|
||||
INVOKE_ASYNC(src, PROC_REF(user_death_async), user)
|
||||
|
||||
/obj/item/organ/internal/cyberimp/arm/katana/proc/user_death_async(mob/user)
|
||||
Retract()
|
||||
@@ -472,7 +472,7 @@
|
||||
"<span class='userdanger'>You feel your body begin to turn to dust, your soul being drawn into [src]!</span>")
|
||||
forceMove(get_turf(owner))
|
||||
remove(user)
|
||||
addtimer(CALLBACK(user, /mob/.proc/dust), 1 SECONDS)
|
||||
addtimer(CALLBACK(user, TYPE_PROC_REF(/mob, dust)), 1 SECONDS)
|
||||
|
||||
|
||||
/obj/item/organ/internal/cyberimp/arm/katana/remove(mob/living/carbon/M, special)
|
||||
@@ -514,12 +514,12 @@
|
||||
var/list/input_list = list()
|
||||
var/list/combo_strings = list()
|
||||
var/static/list/combo_list = list(
|
||||
ATTACK_STRIKE = list(COMBO_STEPS = list(LEFT_SLASH, LEFT_SLASH, RIGHT_SLASH), COMBO_PROC = .proc/strike),
|
||||
ATTACK_SLICE = list(COMBO_STEPS = list(RIGHT_SLASH, LEFT_SLASH, LEFT_SLASH), COMBO_PROC = .proc/slice),
|
||||
ATTACK_DASH = list(COMBO_STEPS = list(LEFT_SLASH, RIGHT_SLASH, RIGHT_SLASH), COMBO_PROC = .proc/dash),
|
||||
ATTACK_CUT = list(COMBO_STEPS = list(RIGHT_SLASH, RIGHT_SLASH, LEFT_SLASH), COMBO_PROC = .proc/cut),
|
||||
ATTACK_HEAL = list(COMBO_STEPS = list(LEFT_SLASH, RIGHT_SLASH, LEFT_SLASH, RIGHT_SLASH), COMBO_PROC = .proc/heal),
|
||||
ATTACK_SHATTER = list(COMBO_STEPS = list(RIGHT_SLASH, LEFT_SLASH, RIGHT_SLASH, LEFT_SLASH), COMBO_PROC = .proc/shatter),
|
||||
ATTACK_STRIKE = list(COMBO_STEPS = list(LEFT_SLASH, LEFT_SLASH, RIGHT_SLASH), COMBO_PROC = TYPE_PROC_REF(/obj/item/cursed_katana, strike)),
|
||||
ATTACK_SLICE = list(COMBO_STEPS = list(RIGHT_SLASH, LEFT_SLASH, LEFT_SLASH), COMBO_PROC = TYPE_PROC_REF(/obj/item/cursed_katana, slice)),
|
||||
ATTACK_DASH = list(COMBO_STEPS = list(LEFT_SLASH, RIGHT_SLASH, RIGHT_SLASH), COMBO_PROC = TYPE_PROC_REF(/obj/item/cursed_katana, dash)),
|
||||
ATTACK_CUT = list(COMBO_STEPS = list(RIGHT_SLASH, RIGHT_SLASH, LEFT_SLASH), COMBO_PROC = TYPE_PROC_REF(/obj/item/cursed_katana, cut)),
|
||||
ATTACK_HEAL = list(COMBO_STEPS = list(LEFT_SLASH, RIGHT_SLASH, LEFT_SLASH, RIGHT_SLASH), COMBO_PROC = TYPE_PROC_REF(/obj/item/cursed_katana, heal)),
|
||||
ATTACK_SHATTER = list(COMBO_STEPS = list(RIGHT_SLASH, LEFT_SLASH, RIGHT_SLASH, LEFT_SLASH), COMBO_PROC = TYPE_PROC_REF(/obj/item/cursed_katana, shatter)),
|
||||
)
|
||||
|
||||
/obj/item/cursed_katana/Initialize(mapload)
|
||||
@@ -561,7 +561,7 @@
|
||||
reset_inputs(null, TRUE)
|
||||
return TRUE
|
||||
else
|
||||
timerid = addtimer(CALLBACK(src, .proc/reset_inputs, user, FALSE), 5 SECONDS, TIMER_UNIQUE|TIMER_OVERRIDE|TIMER_STOPPABLE)
|
||||
timerid = addtimer(CALLBACK(src, PROC_REF(reset_inputs), user, FALSE), 5 SECONDS, TIMER_UNIQUE|TIMER_OVERRIDE|TIMER_STOPPABLE)
|
||||
return ..()
|
||||
|
||||
/obj/item/cursed_katana/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
|
||||
@@ -589,9 +589,9 @@
|
||||
"<span class='notice'>You hilt strike [target]!</span>")
|
||||
to_chat(target, "<span class='userdanger'>You've been struck by [user]!</span>")
|
||||
playsound(src, 'sound/weapons/genhit3.ogg', 50, TRUE)
|
||||
RegisterSignal(target, COMSIG_MOVABLE_IMPACT, .proc/strike_throw_impact)
|
||||
RegisterSignal(target, COMSIG_MOVABLE_IMPACT, PROC_REF(strike_throw_impact))
|
||||
var/atom/throw_target = get_edge_target_turf(target, user.dir)
|
||||
target.throw_at(throw_target, 5, 3, user, FALSE, callback = CALLBACK(target, /datum/.proc/UnregisterSignal, target, COMSIG_MOVABLE_IMPACT))
|
||||
target.throw_at(throw_target, 5, 3, user, FALSE, callback = CALLBACK(target, TYPE_PROC_REF(/datum, UnregisterSignal), target, COMSIG_MOVABLE_IMPACT))
|
||||
target.apply_damage(17, BRUTE, BODY_ZONE_CHEST)
|
||||
to_chat(target, "<span class='userdanger'>You've been struck by [user]!</span>")
|
||||
user.do_attack_animation(target, ATTACK_EFFECT_PUNCH)
|
||||
@@ -683,7 +683,7 @@
|
||||
if(O.holder == src)
|
||||
O.Retract()
|
||||
shattered = TRUE
|
||||
addtimer(CALLBACK(src, .proc/coagulate, user), 45 SECONDS)
|
||||
addtimer(CALLBACK(src, PROC_REF(coagulate), user), 45 SECONDS)
|
||||
|
||||
/obj/item/cursed_katana/proc/coagulate(mob/user)
|
||||
to_chat(user, "<span class='notice'>[src] reforms!</span>")
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
|
||||
/obj/machinery/mineral/ore_redemption/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TRANQUILLITE, MAT_TITANIUM, MAT_BLUESPACE), INFINITY, FALSE, /obj/item/stack, null, CALLBACK(src, .proc/on_material_insert))
|
||||
AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TRANQUILLITE, MAT_TITANIUM, MAT_BLUESPACE), INFINITY, FALSE, /obj/item/stack, null, CALLBACK(src, PROC_REF(on_material_insert)))
|
||||
ore_buffer = list()
|
||||
files = new /datum/research/smelter(src)
|
||||
// Stock parts
|
||||
|
||||
@@ -249,7 +249,7 @@
|
||||
UnregisterSignal(user, COMSIG_MOB_UPDATE_SIGHT)
|
||||
user.update_sight()
|
||||
else
|
||||
RegisterSignal(user, COMSIG_MOB_UPDATE_SIGHT, .proc/update_user_sight)
|
||||
RegisterSignal(user, COMSIG_MOB_UPDATE_SIGHT, PROC_REF(update_user_sight))
|
||||
user.update_sight()
|
||||
|
||||
to_chat(user, "<span class='notice'>You toggle your meson vision [!is_active ? "on" : "off"].</span>")
|
||||
|
||||
@@ -89,7 +89,7 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER)
|
||||
|
||||
//starts ghosts off with all HUDs.
|
||||
toggle_all_huds_on(body)
|
||||
RegisterSignal(src, COMSIG_MOB_HUD_CREATED, .proc/set_ghost_darkness_level) //something something don't call this until we have a HUD
|
||||
RegisterSignal(src, COMSIG_MOB_HUD_CREATED, PROC_REF(set_ghost_darkness_level)) //something something don't call this until we have a HUD
|
||||
..()
|
||||
plane = GAME_PLANE
|
||||
|
||||
@@ -494,7 +494,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
if(isobserver(usr)) //Make sure they're an observer!
|
||||
var/list/dest = getpois(mobs_only=TRUE) //Fill list, prompt user with list
|
||||
var/datum/async_input/A = input_autocomplete_async(usr, "Enter a mob name: ", dest)
|
||||
A.on_close(CALLBACK(src, .proc/jump_to_mob))
|
||||
A.on_close(CALLBACK(src, PROC_REF(jump_to_mob)))
|
||||
|
||||
/mob/dead/observer/proc/jump_to_mob(mob/M)
|
||||
if(!M || !isobserver(usr))
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
else //Maybe uses plasma in the future, although that wouldn't make any sense...
|
||||
leaping = 1
|
||||
update_icons()
|
||||
throw_at(A, MAX_ALIEN_LEAP_DIST, 1, spin = 0, diagonals_first = 1, callback = CALLBACK(src, .proc/leap_end))
|
||||
throw_at(A, MAX_ALIEN_LEAP_DIST, 1, spin = 0, diagonals_first = 1, callback = CALLBACK(src, PROC_REF(leap_end)))
|
||||
|
||||
/mob/living/carbon/alien/humanoid/hunter/proc/leap_end()
|
||||
leaping = 0
|
||||
|
||||
@@ -148,7 +148,7 @@
|
||||
|
||||
GoIdle() //so it doesn't jump the people that tear it off
|
||||
|
||||
addtimer(CALLBACK(src, .proc/Impregnate, M), impregnation_time)
|
||||
addtimer(CALLBACK(src, PROC_REF(Impregnate), M), impregnation_time)
|
||||
return TRUE
|
||||
|
||||
/obj/item/clothing/mask/facehugger/proc/Impregnate(mob/living/target)
|
||||
@@ -195,7 +195,7 @@
|
||||
|
||||
stat = UNCONSCIOUS
|
||||
icon_state = "[initial(icon_state)]_inactive"
|
||||
addtimer(CALLBACK(src, .proc/GoActive), rand(min_active_time, max_active_time))
|
||||
addtimer(CALLBACK(src, PROC_REF(GoActive)), rand(min_active_time, max_active_time))
|
||||
|
||||
/obj/item/clothing/mask/facehugger/proc/Die()
|
||||
if(stat == DEAD)
|
||||
|
||||
@@ -174,7 +174,7 @@
|
||||
//Jitter and other fluff.
|
||||
AdjustJitter(2000 SECONDS)
|
||||
AdjustStuttering(4 SECONDS)
|
||||
addtimer(CALLBACK(src, .proc/secondary_shock, should_stun), 1 SECONDS)
|
||||
addtimer(CALLBACK(src, PROC_REF(secondary_shock), should_stun), 1 SECONDS)
|
||||
return shock_damage
|
||||
|
||||
///Called slightly after electrocute act to reduce jittering and apply a secondary knockdown.
|
||||
@@ -861,7 +861,7 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, list(/obj/machinery/atmospherics/unary/ven
|
||||
return istype(wear_mask, /obj/item/clothing/mask/facehugger)
|
||||
|
||||
/mob/living/carbon/resist_buckle()
|
||||
INVOKE_ASYNC(src, .proc/resist_muzzle)
|
||||
INVOKE_ASYNC(src, PROC_REF(resist_muzzle))
|
||||
var/obj/item/I = get_restraining_item()
|
||||
if(!I) // If there is nothing to restrain him then he is not restrained
|
||||
buckled.user_unbuckle_mob(src, src)
|
||||
@@ -870,7 +870,7 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, list(/obj/machinery/atmospherics/unary/ven
|
||||
var/time = I.breakouttime
|
||||
visible_message("<span class='warning'>[src] attempts to unbuckle [p_them()]self!</span>",
|
||||
"<span class='notice'>You attempt to unbuckle yourself... (This will take around [time / 10] seconds and you need to stay still.)</span>")
|
||||
if(!do_after(src, time, FALSE, src, extra_checks = list(CALLBACK(src, .proc/buckle_check))))
|
||||
if(!do_after(src, time, FALSE, src, extra_checks = list(CALLBACK(src, PROC_REF(buckle_check)))))
|
||||
if(src && buckled)
|
||||
to_chat(src, "<span class='warning'>You fail to unbuckle yourself!</span>")
|
||||
else
|
||||
@@ -897,7 +897,7 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, list(/obj/machinery/atmospherics/unary/ven
|
||||
|
||||
|
||||
/mob/living/carbon/resist_restraints()
|
||||
INVOKE_ASYNC(src, .proc/resist_muzzle)
|
||||
INVOKE_ASYNC(src, PROC_REF(resist_muzzle))
|
||||
var/obj/item/I = null
|
||||
if(handcuffed)
|
||||
I = handcuffed
|
||||
|
||||
@@ -133,8 +133,8 @@
|
||||
giver.apply_status_effect(STATUS_EFFECT_OFFERING_ITEM, receiver_UID, item_UID)
|
||||
add_overlay(icon(I.icon, I.icon_state, SOUTH))
|
||||
add_overlay("alert_flash")
|
||||
RegisterSignal(I, list(COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED), .proc/cancel_give)
|
||||
RegisterSignal(giver, list(SIGNAL_ADDTRAIT(TRAIT_HANDS_BLOCKED), COMSIG_CARBON_SWAP_HANDS), .proc/cancel_give)
|
||||
RegisterSignal(I, list(COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED), PROC_REF(cancel_give))
|
||||
RegisterSignal(giver, list(SIGNAL_ADDTRAIT(TRAIT_HANDS_BLOCKED), COMSIG_CARBON_SWAP_HANDS), PROC_REF(cancel_give))
|
||||
// If either of these atoms are deleted, we need to cancel everything. Also saves having to do null checks before interacting with these atoms.
|
||||
RegisterSignal(I, COMSIG_PARENT_QDELETING, /datum/proc/signal_qdel)
|
||||
RegisterSignal(giver, COMSIG_PARENT_QDELETING, /datum/proc/signal_qdel)
|
||||
|
||||
@@ -311,7 +311,7 @@
|
||||
L.status_flags |= GODMODE
|
||||
explosion(get_turf(user), 5, 2, 1, 3)
|
||||
// explosions have a spawn so this makes sure that we don't get gibbed
|
||||
addtimer(CALLBACK(src, .proc/wiz_cleanup, user_carbon, L), 1)
|
||||
addtimer(CALLBACK(src, PROC_REF(wiz_cleanup), user_carbon, L), 1)
|
||||
user_carbon.remove_status_effect(STATUS_EFFECT_HIGHFIVE)
|
||||
L.remove_status_effect(STATUS_EFFECT_HIGHFIVE)
|
||||
return TRUE
|
||||
|
||||
@@ -578,7 +578,7 @@
|
||||
"You hear a loud thud.")
|
||||
if(!HAS_TRAIT(target, TRAIT_FLOORED))
|
||||
target.KnockDown(3 SECONDS)
|
||||
addtimer(CALLBACK(target, /mob/living.proc/SetKnockDown, 0), 3 SECONDS) // so you cannot chain stun someone
|
||||
addtimer(CALLBACK(target, TYPE_PROC_REF(/mob/living, SetKnockDown), 0), 3 SECONDS) // so you cannot chain stun someone
|
||||
else if(!user.IsStunned())
|
||||
target.Stun(0.5 SECONDS)
|
||||
else
|
||||
@@ -851,7 +851,7 @@
|
||||
return
|
||||
if(prob(15) && head_organ.h_style != "Bald")
|
||||
to_chat(H, "<span class='danger'>Your hair starts to fall out in clumps...</span>")
|
||||
addtimer(CALLBACK(src, .proc/go_bald, H), 5 SECONDS)
|
||||
addtimer(CALLBACK(src, PROC_REF(go_bald), H), 5 SECONDS)
|
||||
|
||||
/datum/species/proc/go_bald(mob/living/carbon/human/H)
|
||||
if(QDELETED(H)) //may be called from a timer
|
||||
|
||||
@@ -516,7 +516,7 @@
|
||||
var/mob/living/carbon/human/H = owner
|
||||
H.visible_message("<span class='warning'>[H] starts vibrating!</span>", "<span class='danger'>You start charging your bluespace core...</span>")
|
||||
playsound(get_turf(H), 'sound/weapons/flash.ogg', 25, 1)
|
||||
addtimer(CALLBACK(src, .proc/teleport, H), 15)
|
||||
addtimer(CALLBACK(src, PROC_REF(teleport), H), 15)
|
||||
|
||||
/datum/action/innate/unstable_teleport/proc/teleport(mob/living/carbon/human/H)
|
||||
activated = FALSE
|
||||
@@ -725,7 +725,7 @@
|
||||
H.forceMove(src)
|
||||
cloth_golem = H
|
||||
to_chat(cloth_golem, "<span class='notice'>You start gathering your life energy, preparing to rise again...</span>")
|
||||
addtimer(CALLBACK(src, .proc/revive), revive_time)
|
||||
addtimer(CALLBACK(src, PROC_REF(revive)), revive_time)
|
||||
else
|
||||
return INITIALIZE_HINT_QDEL
|
||||
|
||||
|
||||
@@ -53,10 +53,10 @@
|
||||
..()
|
||||
var/datum/action/innate/cocoon/cocoon = new()
|
||||
cocoon.Grant(H)
|
||||
RegisterSignal(H, COMSIG_LIVING_FIRE_TICK, .proc/check_burn_wings)
|
||||
RegisterSignal(H, COMSIG_LIVING_AHEAL, .proc/on_aheal)
|
||||
RegisterSignal(H, COMSIG_HUMAN_CHANGE_BODY_ACCESSORY, .proc/on_change_body_accessory)
|
||||
RegisterSignal(H, COMSIG_HUMAN_CHANGE_HEAD_ACCESSORY, .proc/on_change_head_accessory)
|
||||
RegisterSignal(H, COMSIG_LIVING_FIRE_TICK, PROC_REF(check_burn_wings))
|
||||
RegisterSignal(H, COMSIG_LIVING_AHEAL, PROC_REF(on_aheal))
|
||||
RegisterSignal(H, COMSIG_HUMAN_CHANGE_BODY_ACCESSORY, PROC_REF(on_change_body_accessory))
|
||||
RegisterSignal(H, COMSIG_HUMAN_CHANGE_HEAD_ACCESSORY, PROC_REF(on_change_head_accessory))
|
||||
|
||||
/datum/species/moth/on_species_loss(mob/living/carbon/human/H)
|
||||
..()
|
||||
@@ -148,7 +148,7 @@
|
||||
H.apply_status_effect(STATUS_EFFECT_COCOONED)
|
||||
H.KnockOut()
|
||||
H.create_log(MISC_LOG, "has woven a cocoon")
|
||||
addtimer(CALLBACK(src, .proc/emerge, C), COCOON_EMERGE_DELAY, TIMER_UNIQUE)
|
||||
addtimer(CALLBACK(src, PROC_REF(emerge), C), COCOON_EMERGE_DELAY, TIMER_UNIQUE)
|
||||
else
|
||||
to_chat(H, "<span class='warning'>You need to hold still in order to weave a cocoon!</span>")
|
||||
|
||||
|
||||
@@ -151,8 +151,8 @@
|
||||
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, FALSE, H, extra_checks = list(CALLBACK(H, /mob/living.proc/IsStunned)), use_default_checks = FALSE)) // Override the check for weakness, only check for stunned
|
||||
if(H.incapacitated(extra_checks = list(CALLBACK(H, /mob/living.proc/IsStunned)), use_default_checks = FALSE)) // Override the check for weakness, only check for stunned
|
||||
if(do_after(H, SLIMEPERSON_REGROWTHDELAY, FALSE, H, extra_checks = list(CALLBACK(H, TYPE_PROC_REF(/mob/living, IsStunned))), use_default_checks = FALSE)) // Override the check for weakness, only check for stunned
|
||||
if(H.incapacitated(extra_checks = list(CALLBACK(H, TYPE_PROC_REF(/mob/living, 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
|
||||
|
||||
|
||||
@@ -74,7 +74,7 @@
|
||||
med_hud_set_health()
|
||||
med_hud_set_status()
|
||||
if(!gibbed && !QDELETED(src))
|
||||
addtimer(CALLBACK(src, .proc/med_hud_set_status), DEFIB_TIME_LIMIT + 1)
|
||||
addtimer(CALLBACK(src, PROC_REF(med_hud_set_status)), DEFIB_TIME_LIMIT + 1)
|
||||
|
||||
GLOB.alive_mob_list -= src
|
||||
GLOB.dead_mob_list += src
|
||||
@@ -100,10 +100,10 @@
|
||||
visible_message("<span class='danger'><b>[src]</b> starts convulsing violently!</span>", "You feel as if your body is tearing itself apart!")
|
||||
Weaken(30 SECONDS)
|
||||
do_jitter_animation(1000, -1) // jitter until they are gibbed
|
||||
addtimer(CALLBACK(src, .proc/gib), rand(2 SECONDS, 10 SECONDS))
|
||||
addtimer(CALLBACK(src, PROC_REF(gib)), rand(2 SECONDS, 10 SECONDS))
|
||||
|
||||
/mob/living/carbon/proc/inflate_gib() // Plays an animation that makes mobs appear to inflate before finally gibbing
|
||||
addtimer(CALLBACK(src, .proc/gib, null, null, TRUE, TRUE), 25)
|
||||
addtimer(CALLBACK(src, PROC_REF(gib), null, null, TRUE, TRUE), 25)
|
||||
var/matrix/M = matrix()
|
||||
M.Scale(1.8, 1.2)
|
||||
animate(src, time = 40, transform = M, easing = SINE_EASING)
|
||||
|
||||
@@ -1,28 +1,28 @@
|
||||
/// Called on [/mob/living/Initialize(mapload)], for the mob to register to relevant signals.
|
||||
/mob/living/proc/register_init_signals()
|
||||
RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_KNOCKEDOUT), .proc/on_knockedout_trait_gain)
|
||||
RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_KNOCKEDOUT), .proc/on_knockedout_trait_loss)
|
||||
RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_KNOCKEDOUT), PROC_REF(on_knockedout_trait_gain))
|
||||
RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_KNOCKEDOUT), PROC_REF(on_knockedout_trait_loss))
|
||||
|
||||
RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_FAKEDEATH), .proc/on_fakedeath_trait_gain)
|
||||
RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_FAKEDEATH), .proc/on_fakedeath_trait_loss)
|
||||
RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_FAKEDEATH), PROC_REF(on_fakedeath_trait_gain))
|
||||
RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_FAKEDEATH), PROC_REF(on_fakedeath_trait_loss))
|
||||
|
||||
RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_IMMOBILIZED), .proc/on_immobilized_trait_gain)
|
||||
RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_IMMOBILIZED), .proc/on_immobilized_trait_loss)
|
||||
RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_IMMOBILIZED), PROC_REF(on_immobilized_trait_gain))
|
||||
RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_IMMOBILIZED), PROC_REF(on_immobilized_trait_loss))
|
||||
|
||||
RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_FLOORED), .proc/on_floored_trait_gain)
|
||||
RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_FLOORED), .proc/on_floored_trait_loss)
|
||||
RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_FLOORED), PROC_REF(on_floored_trait_gain))
|
||||
RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_FLOORED), PROC_REF(on_floored_trait_loss))
|
||||
|
||||
RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_HANDS_BLOCKED), .proc/on_handsblocked_trait_gain)
|
||||
RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_HANDS_BLOCKED), .proc/on_handsblocked_trait_loss)
|
||||
RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_HANDS_BLOCKED), PROC_REF(on_handsblocked_trait_gain))
|
||||
RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_HANDS_BLOCKED), PROC_REF(on_handsblocked_trait_loss))
|
||||
|
||||
RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_UI_BLOCKED), .proc/on_ui_blocked_trait_gain)
|
||||
RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_UI_BLOCKED), .proc/on_ui_blocked_trait_loss)
|
||||
RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_UI_BLOCKED), PROC_REF(on_ui_blocked_trait_gain))
|
||||
RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_UI_BLOCKED), PROC_REF(on_ui_blocked_trait_loss))
|
||||
|
||||
RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_CANNOT_PULL), .proc/on_pull_blocked_trait_gain)
|
||||
RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_CANNOT_PULL), .proc/on_pull_blocked_trait_loss)
|
||||
RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_CANNOT_PULL), PROC_REF(on_pull_blocked_trait_gain))
|
||||
RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_CANNOT_PULL), PROC_REF(on_pull_blocked_trait_loss))
|
||||
|
||||
RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_RESTRAINED), .proc/on_restrained_trait_gain)
|
||||
RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_RESTRAINED), .proc/on_restrained_trait_loss)
|
||||
RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_RESTRAINED), PROC_REF(on_restrained_trait_gain))
|
||||
RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_RESTRAINED), PROC_REF(on_restrained_trait_loss))
|
||||
|
||||
/// Called when [TRAIT_KNOCKEDOUT] is added to the mob.
|
||||
/mob/living/proc/on_knockedout_trait_gain(datum/source)
|
||||
|
||||
@@ -836,7 +836,7 @@
|
||||
/mob/living/proc/flash_eyes(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0, type = /obj/screen/fullscreen/flash)
|
||||
if(check_eye_prot() < intensity && (override_blindness_check || !HAS_TRAIT(src, TRAIT_BLIND)) && !HAS_TRAIT(src, TRAIT_FLASH_PROTECTION))
|
||||
overlay_fullscreen("flash", type)
|
||||
addtimer(CALLBACK(src, .proc/clear_fullscreen, "flash", 25), 25)
|
||||
addtimer(CALLBACK(src, PROC_REF(clear_fullscreen), "flash", 25), 25)
|
||||
return 1
|
||||
|
||||
/mob/living/proc/check_eye_prot()
|
||||
|
||||
@@ -448,4 +448,4 @@ GLOBAL_LIST_EMPTY(channel_to_radio_key)
|
||||
/mob/living/speech_bubble(bubble_state = "", bubble_loc = src, list/bubble_recipients = list())
|
||||
var/image/I = image('icons/mob/talk.dmi', bubble_loc, bubble_state, FLY_LAYER)
|
||||
I.appearance_flags = APPEARANCE_UI_IGNORE_ALPHA
|
||||
INVOKE_ASYNC(GLOBAL_PROC, /.proc/flick_overlay, I, bubble_recipients, 30)
|
||||
INVOKE_ASYNC(GLOBAL_PROC, GLOBAL_PROC_REF(flick_overlay), I, bubble_recipients, 30)
|
||||
|
||||
@@ -317,7 +317,7 @@
|
||||
to_chat(usr, "<span class='warning'>You are already hacking that door!</span>")
|
||||
else
|
||||
hacking = TRUE
|
||||
INVOKE_ASYNC(src, .proc/hackloop)
|
||||
INVOKE_ASYNC(src, PROC_REF(hackloop))
|
||||
if("cancel")
|
||||
hackdoor = null
|
||||
if("cable")
|
||||
|
||||
@@ -215,7 +215,7 @@
|
||||
log_game("[key_name(user)] emagged drone [key_name(src)]. Laws overridden.")
|
||||
var/time = time2text(world.realtime,"hh:mm:ss")
|
||||
GLOB.lawchanges.Add("[time] <B>:</B> [H.name]([H.key]) emagged [name]([key])")
|
||||
addtimer(CALLBACK(src, .proc/shut_down, TRUE), EMAG_TIMER)
|
||||
addtimer(CALLBACK(src, PROC_REF(shut_down), TRUE), EMAG_TIMER)
|
||||
|
||||
emagged = TRUE
|
||||
density = TRUE
|
||||
|
||||
@@ -173,7 +173,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list(
|
||||
diag_hud_set_borgcell()
|
||||
scanner = new(src)
|
||||
scanner.Grant(src)
|
||||
RegisterSignal(src, COMSIG_MOVABLE_MOVED, .proc/create_trail)
|
||||
RegisterSignal(src, COMSIG_MOVABLE_MOVED, PROC_REF(create_trail))
|
||||
|
||||
/mob/living/silicon/robot/get_radio()
|
||||
return radio
|
||||
|
||||
@@ -432,7 +432,7 @@
|
||||
/obj/item/robot_module/janitor/Initialize(mapload)
|
||||
. = ..()
|
||||
var/mob/living/silicon/robot/R = loc
|
||||
RegisterSignal(R, COMSIG_MOVABLE_MOVED, .proc/on_cyborg_move)
|
||||
RegisterSignal(R, COMSIG_MOVABLE_MOVED, PROC_REF(on_cyborg_move))
|
||||
|
||||
/**
|
||||
* Proc called after the janitor cyborg has moved, in order to clean atoms at it's new location.
|
||||
|
||||
@@ -40,8 +40,8 @@
|
||||
..()
|
||||
add_language("Galactic Common")
|
||||
init_subsystems()
|
||||
RegisterSignal(SSalarm, COMSIG_TRIGGERED_ALARM, .proc/alarm_triggered)
|
||||
RegisterSignal(SSalarm, COMSIG_CANCELLED_ALARM, .proc/alarm_cancelled)
|
||||
RegisterSignal(SSalarm, COMSIG_TRIGGERED_ALARM, PROC_REF(alarm_triggered))
|
||||
RegisterSignal(SSalarm, COMSIG_CANCELLED_ALARM, PROC_REF(alarm_cancelled))
|
||||
|
||||
/mob/living/silicon/Initialize(mapload)
|
||||
. = ..()
|
||||
@@ -87,7 +87,7 @@
|
||||
if(in_cooldown)
|
||||
return
|
||||
|
||||
addtimer(CALLBACK(src, .proc/show_alarms), 3 SECONDS)
|
||||
addtimer(CALLBACK(src, PROC_REF(show_alarms)), 3 SECONDS)
|
||||
|
||||
/mob/living/silicon/proc/show_alarms()
|
||||
if(alarms_to_show.len < 5)
|
||||
|
||||
@@ -419,7 +419,7 @@
|
||||
|
||||
if(on)
|
||||
turn_off()
|
||||
addtimer(CALLBACK(src, .proc/un_emp, was_on), severity * 300)
|
||||
addtimer(CALLBACK(src, PROC_REF(un_emp), was_on), severity * 300)
|
||||
|
||||
|
||||
/mob/living/simple_animal/bot/proc/un_emp(was_on)
|
||||
@@ -509,7 +509,7 @@ Pass a positive integer as an argument to override a bot's default speed.
|
||||
if(step_count >= 1 && tries < BOT_STEP_MAX_RETRIES)
|
||||
for(var/step_number in 1 to step_count)
|
||||
// Hopefully this wont fill the buckets too much
|
||||
addtimer(CALLBACK(src, .proc/bot_step), BOT_STEP_DELAY * (step_number - 1))
|
||||
addtimer(CALLBACK(src, PROC_REF(bot_step)), BOT_STEP_DELAY * (step_number - 1))
|
||||
else
|
||||
return FALSE
|
||||
return TRUE
|
||||
@@ -547,7 +547,7 @@ Pass a positive integer as an argument to override a bot's default speed.
|
||||
if(!on)
|
||||
turn_on() //Saves the AI the hassle of having to activate a bot manually.
|
||||
if(client)
|
||||
reset_access_timer_id = addtimer(CALLBACK (src, .proc/bot_reset), 600, TIMER_OVERRIDE|TIMER_STOPPABLE) //if the bot is player controlled, they get the extra access for a limited time
|
||||
reset_access_timer_id = addtimer(CALLBACK(src, PROC_REF(bot_reset)), 600, TIMER_OVERRIDE|TIMER_STOPPABLE) //if the bot is player controlled, they get the extra access for a limited time
|
||||
to_chat(src, "<span class='notice'><span class='big'>Priority waypoint set by [calling_ai] <b>[caller]</b>. Proceed to <b>[end_area.name]</b>.</span><br>[length(path)-1] meters to destination. You have been granted additional door access for 60 seconds.</span>")
|
||||
if(message)
|
||||
to_chat(calling_ai, "<span class='notice'>[bicon(src)] [name] called to [end_area.name]. [length(path)-1] meters to destination.</span>")
|
||||
@@ -596,7 +596,7 @@ Pass a positive integer as an argument to override a bot's default speed.
|
||||
/mob/living/simple_animal/bot/proc/bot_patrol()
|
||||
set_path(null)
|
||||
patrol_step()
|
||||
addtimer(CALLBACK(src, .proc/do_patrol), 5)
|
||||
addtimer(CALLBACK(src, PROC_REF(do_patrol)), 5)
|
||||
|
||||
/mob/living/simple_animal/bot/proc/do_patrol()
|
||||
if(mode == BOT_PATROL)
|
||||
@@ -617,7 +617,7 @@ Pass a positive integer as an argument to override a bot's default speed.
|
||||
|
||||
|
||||
if(patrol_target) // has patrol target
|
||||
INVOKE_ASYNC(src, .proc/target_patrol)
|
||||
INVOKE_ASYNC(src, PROC_REF(target_patrol))
|
||||
else // no patrol target, so need a new one
|
||||
speak("Engaging patrol mode.")
|
||||
find_patrol_target()
|
||||
@@ -651,7 +651,7 @@ Pass a positive integer as an argument to override a bot's default speed.
|
||||
|
||||
var/moved = bot_move(patrol_target)//step_towards(src, next) // attempt to move
|
||||
if(!moved) //Couldn't proceed the next step of the path BOT_STEP_MAX_RETRIES times
|
||||
addtimer(CALLBACK(src, .proc/patrol_step_not_moved), 2)
|
||||
addtimer(CALLBACK(src, PROC_REF(patrol_step_not_moved)), 2)
|
||||
|
||||
else // no path, so calculate new one
|
||||
mode = BOT_START_PATROL
|
||||
@@ -786,7 +786,7 @@ Pass a positive integer as an argument to override a bot's default speed.
|
||||
|
||||
var/moved = bot_move(summon_target, 3) // Move attempt
|
||||
if(!moved)
|
||||
addtimer(CALLBACK(src, .proc/try_calc_path), 2)
|
||||
addtimer(CALLBACK(src, PROC_REF(try_calc_path)), 2)
|
||||
|
||||
|
||||
else // no path, so calculate new one
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user