515 Compatibility (#19636)

* 515 compat

* double spaces

* Callback documentation, aa review

* spacing

* NAMEOF_STATIC

* big beta
This commit is contained in:
S34N
2022-11-08 23:08:40 +00:00
committed by GitHub
parent 2e7e556383
commit 667dd5d4ac
378 changed files with 928 additions and 919 deletions
+6 -6
View File
@@ -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 .
+1 -1
View File
@@ -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)
/**
+1 -1
View File
@@ -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")
+1 -1
View File
@@ -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)
+1 -1
View File
@@ -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)
..()
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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()
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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))
+1 -1
View File
@@ -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()
+1 -1
View File
@@ -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)
. = ..()
+5 -5
View File
@@ -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)
+1 -1
View File
@@ -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
+3 -3
View File
@@ -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
+1 -1
View File
@@ -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))
+2 -2
View File
@@ -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>")
+2 -2
View File
@@ -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)
+1 -1
View File
@@ -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)
+1 -1
View File
@@ -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)
+1 -1
View File
@@ -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))
+3 -3
View File
@@ -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()
+1 -1
View File
@@ -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)
+1 -1
View File
@@ -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))
+1 -1
View File
@@ -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)
+1 -1
View File
@@ -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 -1
View File
@@ -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()
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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)
+1 -1
View File
@@ -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
+4 -4
View File
@@ -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.
+2 -2
View File
@@ -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 -1
View File
@@ -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
+2 -2
View File
@@ -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)
+7 -7
View File
@@ -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.
+3 -3
View File
@@ -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)
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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()
+1 -1
View File
@@ -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)
+1 -1
View File
@@ -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))
+1 -1
View File
@@ -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
+2 -2
View File
@@ -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)
+1 -1
View File
@@ -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))
+1 -1
View File
@@ -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>")
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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>")
+2 -2
View File
@@ -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)
+4 -4
View File
@@ -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
+2 -2
View File
@@ -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
+3 -3
View File
@@ -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)
+16 -16
View File
@@ -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)
+1 -1
View File
@@ -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()
+1 -1
View File
@@ -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.
+3 -3
View File
@@ -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