mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-21 20:20:33 +01:00
[READY]Makes addtimer use callbacks (#22660)
* Makes addtimer use callbacks * I broke the comment * I fucked up the regex * this was a silly idea.
This commit is contained in:
committed by
oranges
parent
fd337f0741
commit
bee4b132a3
@@ -1317,7 +1317,7 @@ proc/pick_closest_path(value, list/matches = get_fancy_list_of_atom_types())
|
||||
|
||||
#define RANDOM_COLOUR (rgb(rand(0,255),rand(0,255),rand(0,255)))
|
||||
|
||||
#define QDEL_IN(item, time) addtimer(GLOBAL_PROC, "qdel", time, TIMER_NORMAL, item)
|
||||
#define QDEL_IN(item, time) addtimer(CALLBACK(GLOBAL_PROC, /proc/qdel, item), time)
|
||||
|
||||
/proc/check_for_cleanbot_bug()
|
||||
var/static/admins_warned //bet you didn't know you could do this!
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
animate(alert, transform = matrix(), time = 2.5, easing = CUBIC_EASING)
|
||||
|
||||
if(alert.timeout)
|
||||
addtimer(src, "alert_timeout", alert.timeout, TIMER_NORMAL, alert, category)
|
||||
addtimer(CALLBACK(src, .proc/alert_timeout, alert, category), alert.timeout)
|
||||
alert.timeout = world.time + alert.timeout - world.tick_lag
|
||||
return alert
|
||||
|
||||
|
||||
@@ -112,7 +112,7 @@
|
||||
C.parallax_movedir = new_parallax_movedir
|
||||
if (C.parallax_animate_timer)
|
||||
deltimer(C.parallax_animate_timer)
|
||||
C.parallax_animate_timer = addtimer(src, .update_parallax_motionblur, min(shortesttimer, PARALLAX_LOOP_TIME), TIMER_NORMAL, C, animatedir, new_parallax_movedir, newtransform)
|
||||
C.parallax_animate_timer = addtimer(CALLBACK(src, .proc/update_parallax_motionblur, C, animatedir, new_parallax_movedir, newtransform), min(shortesttimer, PARALLAX_LOOP_TIME))
|
||||
|
||||
/datum/hud/proc/update_parallax_motionblur(client/C, animatedir, new_parallax_movedir, matrix/newtransform)
|
||||
C.parallax_animate_timer = FALSE
|
||||
|
||||
@@ -146,7 +146,7 @@ var/list/obj/item/device/paicard/pai_card_list = list()
|
||||
continue
|
||||
//G << 'sound/misc/server-ready.ogg' //Alerting them to their consideration
|
||||
G << "<span class='ghostalert'>Someone is requesting a pAI personality! Use the pAI button to submit yourself as one.</span>"
|
||||
addtimer(src, "spam_again", spam_delay)
|
||||
addtimer(CALLBACK(src, .proc/spam_again), spam_delay)
|
||||
var/list/available = list()
|
||||
for(var/datum/paiCandidate/c in SSpai.candidates)
|
||||
if(c.ready)
|
||||
|
||||
@@ -26,30 +26,19 @@ var/datum/subsystem/timer/SStimer
|
||||
can_fire = 0 //nothing to do, lets stop firing.
|
||||
return
|
||||
for(var/datum/timedevent/event in processing)
|
||||
if(!event.thingToCall || qdeleted(event.thingToCall))
|
||||
qdel(event)
|
||||
if(event.timeToRun <= world.time)
|
||||
runevent(event)
|
||||
event.callback.InvokeAsync()
|
||||
qdel(event)
|
||||
if (MC_TICK_CHECK)
|
||||
return
|
||||
|
||||
/datum/subsystem/timer/proc/runevent(datum/timedevent/event)
|
||||
set waitfor = 0
|
||||
if(event.thingToCall == GLOBAL_PROC && istext(event.procToCall))
|
||||
call("/proc/[event.procToCall]")(arglist(event.argList))
|
||||
else
|
||||
call(event.thingToCall, event.procToCall)(arglist(event.argList))
|
||||
|
||||
/datum/subsystem/timer/Recover()
|
||||
processing |= SStimer.processing
|
||||
hashes |= SStimer.hashes
|
||||
|
||||
/datum/timedevent
|
||||
var/thingToCall
|
||||
var/procToCall
|
||||
var/datum/callback/callback
|
||||
var/timeToRun
|
||||
var/argList
|
||||
var/id
|
||||
var/hash
|
||||
var/static/nextid = 1
|
||||
@@ -62,39 +51,32 @@ var/datum/subsystem/timer/SStimer
|
||||
SStimer.hashes -= hash
|
||||
return QDEL_HINT_IWILLGC
|
||||
|
||||
/proc/addtimer(thingToCall, procToCall, wait, unique = TIMER_NORMAL, ...)
|
||||
if (!thingToCall || !procToCall)
|
||||
/proc/addtimer(datum/callback/callback, wait, unique = TIMER_NORMAL)
|
||||
if (!callback)
|
||||
return
|
||||
if (!SStimer.can_fire)
|
||||
SStimer.can_fire = 1
|
||||
|
||||
var/datum/timedevent/event = new()
|
||||
event.thingToCall = thingToCall
|
||||
event.procToCall = procToCall
|
||||
event.callback = callback
|
||||
event.timeToRun = world.time + wait
|
||||
var/hashlist = args.Copy()
|
||||
var/list/hashlist = args.Copy()
|
||||
|
||||
hashlist[1] = "[thingToCall](\ref[thingToCall])"
|
||||
hashlist[1] = "[callback.object](\ref[callback.object])"
|
||||
hashlist.Insert(2, callback.delegate, callback.arguments)
|
||||
event.hash = jointext(hashlist, null)
|
||||
|
||||
var/bad_args = unique != TIMER_NORMAL && unique != TIMER_UNIQUE
|
||||
if(args.len > 4 || bad_args)
|
||||
if(bad_args)
|
||||
stack_trace("Invalid arguments in call to addtimer! Attempt to call [thingToCall] proc [procToCall]")
|
||||
event.argList = args.Copy(4)
|
||||
else
|
||||
event.argList = args.Copy(5)
|
||||
|
||||
// Check for dupes if unique = 1.
|
||||
if(!bad_args && unique != TIMER_NORMAL) //faster than checking if(unique == TIMER_UNIQUE)
|
||||
if(unique == TIMER_UNIQUE)
|
||||
var/datum/timedevent/hash_event = SStimer.hashes[event.hash]
|
||||
if(hash_event)
|
||||
return hash_event.id
|
||||
|
||||
SStimer.hashes[event.hash] = event
|
||||
if (wait <= 0)
|
||||
SStimer.runevent(event)
|
||||
callback.InvokeAsync()
|
||||
SStimer.hashes -= event.hash
|
||||
return
|
||||
|
||||
// If we are unique (or we're not checking that), add the timer and return the id.
|
||||
SStimer.processing += event
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ var/datum/subsystem/weather/SSweather
|
||||
var/datum/weather/W = pickweight(possible_weather_for_this_z)
|
||||
run_weather(W.name, Z)
|
||||
eligible_zlevels -= Z
|
||||
addtimer(src, "make_z_eligible", rand(3000, 6000) + W.weather_duration_upper, TIMER_UNIQUE, Z) //Around 5-10 minutes between weathers
|
||||
addtimer(CALLBACK(src, .proc/make_z_eligible, Z), rand(3000, 6000) + W.weather_duration_upper, TIMER_UNIQUE) //Around 5-10 minutes between weathers
|
||||
|
||||
/datum/subsystem/weather/Initialize(start_timeofday)
|
||||
..()
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
ticker.mode.servants_of_ratvar += owner.mind
|
||||
ticker.mode.update_servant_icons_added(owner.mind)
|
||||
if(jobban_isbanned(owner, ROLE_SERVANT_OF_RATVAR))
|
||||
addtimer(ticker.mode, "replace_jobbaned_player", 0, TIMER_NORMAL, owner, ROLE_SERVANT_OF_RATVAR, ROLE_SERVANT_OF_RATVAR)
|
||||
addtimer(CALLBACK(ticker.mode, /datum/game_mode.proc/replace_jobbaned_player, owner, ROLE_SERVANT_OF_RATVAR, ROLE_SERVANT_OF_RATVAR), 0)
|
||||
if(owner.mind)
|
||||
owner.mind.special_role = "Servant of Ratvar"
|
||||
owner.attack_log += "\[[time_stamp()]\] <font color=#BE8700>Has been converted to the cult of Ratvar!</font>"
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
var/datum/game_mode/cult/C = ticker.mode
|
||||
C.memorize_cult_objectives(owner.mind)
|
||||
if(jobban_isbanned(owner, ROLE_CULTIST))
|
||||
addtimer(ticker.mode, "replace_jobbaned_player", 0, TIMER_NORMAL, owner, ROLE_CULTIST, ROLE_CULTIST)
|
||||
addtimer(CALLBACK(ticker.mode, /datum/game_mode.proc/replace_jobbaned_player, owner, ROLE_CULTIST, ROLE_CULTIST), 0)
|
||||
if(owner.mind)
|
||||
owner.mind.special_role = "Cultist"
|
||||
owner.attack_log += "\[[time_stamp()]\] <font color=#960000>Has been converted to the cult of Nar'Sie!</font>"
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
|
||||
/datum/callback/proc/Invoke(...)
|
||||
if (!object)
|
||||
CRASH("Cannot call null.[delegate]")
|
||||
return
|
||||
|
||||
var/list/calling_arguments = arguments
|
||||
|
||||
@@ -75,7 +75,7 @@
|
||||
/datum/callback/proc/InvokeAsync(...)
|
||||
set waitfor = 0
|
||||
if (!object)
|
||||
CRASH("Cannot call null.[delegate]")
|
||||
return
|
||||
|
||||
var/list/calling_arguments = arguments
|
||||
|
||||
|
||||
@@ -82,9 +82,9 @@
|
||||
/datum/teleport/proc/playSpecials(atom/location,datum/effect_system/effect,sound)
|
||||
if(location)
|
||||
if(effect)
|
||||
addtimer(src, "do_effect", 0, TIMER_NORMAL, location, effect)
|
||||
addtimer(CALLBACK(src, .proc/do_effect, location, effect), 0)
|
||||
if(sound)
|
||||
addtimer(src, "do_sound", 0, TIMER_NORMAL, location, sound)
|
||||
addtimer(CALLBACK(src, .proc/do_sound, location, sound), 0)
|
||||
|
||||
/datum/teleport/proc/do_effect(atom/location, datum/effect_system/effect)
|
||||
src = null
|
||||
|
||||
@@ -471,7 +471,7 @@
|
||||
D.adjustStaminaLoss(20)
|
||||
D.Stun(5)
|
||||
restraining = 1
|
||||
addtimer(src, "drop_restraining", 50, TIMER_UNIQUE)
|
||||
addtimer(CALLBACK(src, .proc/drop_restraining), 50, TIMER_UNIQUE)
|
||||
return 1
|
||||
|
||||
/datum/martial_art/cqc/proc/Consecutive(mob/living/carbon/human/A, mob/living/carbon/human/D)
|
||||
|
||||
+2
-2
@@ -62,7 +62,7 @@
|
||||
var/damnation_type = 0
|
||||
var/datum/mind/soulOwner //who owns the soul. Under normal circumstances, this will point to src
|
||||
var/isholy = FALSE //is this person a chaplain or admin role allowed to use bibles
|
||||
|
||||
|
||||
var/mob/living/enslaved_to //If this mind's master is another mob (i.e. adamantine golems)
|
||||
|
||||
/datum/mind/New(var/key)
|
||||
@@ -1496,7 +1496,7 @@
|
||||
if(istype(S, type))
|
||||
continue
|
||||
S.charge_counter = delay
|
||||
addtimer(S, "start_recharge", 0)
|
||||
addtimer(CALLBACK(S, /obj/effect/proc_holder/spell.proc/start_recharge), 0)
|
||||
|
||||
/datum/mind/proc/get_ghost(even_if_they_cant_reenter)
|
||||
for(var/mob/dead/observer/G in dead_mob_list)
|
||||
|
||||
@@ -237,7 +237,7 @@
|
||||
owner.visible_message("<span class='danger'>[owner] starts having a seizure!</span>", "<span class='userdanger'>You have a seizure!</span>")
|
||||
owner.Paralyse(10)
|
||||
owner.Jitter(1000)
|
||||
addtimer(src, "jitter_less", 90, TIMER_NORMAL, owner)
|
||||
addtimer(CALLBACK(src, .proc/jitter_less, owner), 90)
|
||||
|
||||
/datum/mutation/human/epilepsy/proc/jitter_less(mob/living/carbon/human/owner)
|
||||
if(owner)
|
||||
|
||||
@@ -110,7 +110,7 @@
|
||||
owner.add_stun_absorption("inathneq", 150, 2, "'s flickering blue aura momentarily intensifies!", "Inath-neq's power absorbs the stun!", " glowing with a flickering blue light!")
|
||||
owner.status_flags |= GODMODE
|
||||
animate(owner, color = oldcolor, time = 150, easing = EASE_IN)
|
||||
addtimer(owner, "update_atom_colour", 150)
|
||||
addtimer(CALLBACK(owner, /atom/proc/update_atom_colour), 150)
|
||||
playsound(owner, 'sound/magic/Ethereal_Enter.ogg', 50, 1)
|
||||
|
||||
/datum/status_effect/inathneqs_endowment/on_remove()
|
||||
|
||||
@@ -19,7 +19,7 @@ var/global/list/all_status_effects = list() //a list of all status effects, if f
|
||||
if(owner)
|
||||
LAZYADD(owner.status_effects, src)
|
||||
all_status_effects += src
|
||||
addtimer(src, "start_ticking", 1) //Give us time to set any variables
|
||||
addtimer(CALLBACK(src, .proc/start_ticking), 1) //Give us time to set any variables
|
||||
|
||||
/datum/status_effect/Destroy()
|
||||
STOP_PROCESSING(SSprocessing, src)
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
M << telegraph_message
|
||||
if(telegraph_sound)
|
||||
M << sound(telegraph_sound)
|
||||
addtimer(src, "start", telegraph_duration)
|
||||
addtimer(CALLBACK(src, .proc/start), telegraph_duration)
|
||||
|
||||
/datum/weather/proc/start()
|
||||
if(stage >= MAIN_STAGE)
|
||||
@@ -85,7 +85,7 @@
|
||||
if(weather_sound)
|
||||
M << sound(weather_sound)
|
||||
START_PROCESSING(SSweather, src)
|
||||
addtimer(src, "wind_down", weather_duration)
|
||||
addtimer(CALLBACK(src, .proc/wind_down), weather_duration)
|
||||
|
||||
/datum/weather/proc/wind_down()
|
||||
if(stage >= WIND_DOWN_STAGE)
|
||||
@@ -100,7 +100,7 @@
|
||||
if(end_sound)
|
||||
M << sound(end_sound)
|
||||
STOP_PROCESSING(SSweather, src)
|
||||
addtimer(src, "end", end_duration)
|
||||
addtimer(CALLBACK(src, .proc/end), end_duration)
|
||||
|
||||
/datum/weather/proc/end()
|
||||
if(stage == END_STAGE)
|
||||
|
||||
@@ -31,13 +31,13 @@
|
||||
if(!A.shorted)
|
||||
A.shorted = TRUE
|
||||
A.update_icon()
|
||||
addtimer(A, "reset", 1200, TIMER_NORMAL, wire)
|
||||
addtimer(CALLBACK(A, /obj/machinery/airalarm.proc/reset, wire), 1200)
|
||||
if(WIRE_IDSCAN) // Toggle lock.
|
||||
A.locked = !A.locked
|
||||
if(WIRE_AI) // Disable AI control for a while.
|
||||
if(!A.aidisabled)
|
||||
A.aidisabled = TRUE
|
||||
addtimer(A, "reset", 100, TIMER_NORMAL, wire)
|
||||
addtimer(CALLBACK(A, /obj/machinery/airalarm.proc/reset, wire), 100)
|
||||
if(WIRE_PANIC) // Toggle panic siphon.
|
||||
if(!A.shorted)
|
||||
if(A.mode == 1) // AALARM_MODE_SCRUB
|
||||
|
||||
@@ -29,14 +29,14 @@
|
||||
if(WIRE_POWER1, WIRE_POWER2) // Short for a long while.
|
||||
if(!A.shorted)
|
||||
A.shorted = TRUE
|
||||
addtimer(A, "reset", 1200, TIMER_NORMAL, wire)
|
||||
addtimer(CALLBACK(A, /obj/machinery/power/apc.proc/reset, wire), 1200)
|
||||
if(WIRE_IDSCAN) // Unlock for a little while.
|
||||
A.locked = FALSE
|
||||
addtimer(A, "reset", 300, TIMER_NORMAL, wire)
|
||||
addtimer(CALLBACK(A, /obj/machinery/power/apc.proc/reset, wire), 300)
|
||||
if(WIRE_AI) // Disable AI control for a very short time.
|
||||
if(!A.aidisabled)
|
||||
A.aidisabled = TRUE
|
||||
addtimer(A, "reset", 10, TIMER_NORMAL, wire)
|
||||
addtimer(CALLBACK(A, /obj/machinery/power/apc.proc/reset, wire), 10)
|
||||
|
||||
/datum/wires/apc/on_cut(index, mend)
|
||||
var/obj/machinery/power/apc/A = holder
|
||||
|
||||
@@ -27,13 +27,13 @@
|
||||
switch(wire)
|
||||
if(WIRE_HACK)
|
||||
A.adjust_hacked(!A.hacked)
|
||||
addtimer(A, "reset", 60, TIMER_NORMAL, wire)
|
||||
addtimer(CALLBACK(A, /obj/machinery/autolathe.proc/reset, wire), 60)
|
||||
if(WIRE_SHOCK)
|
||||
A.shocked = !A.shocked
|
||||
addtimer(A, "reset", 60, TIMER_NORMAL, wire)
|
||||
addtimer(CALLBACK(A, /obj/machinery/autolathe.proc/reset, wire), 60)
|
||||
if(WIRE_DISABLE)
|
||||
A.disabled = !A.disabled
|
||||
addtimer(A, "reset", 60, TIMER_NORMAL, wire)
|
||||
addtimer(CALLBACK(A, /obj/machinery/autolathe.proc/reset, wire), 60)
|
||||
|
||||
/datum/wires/autolathe/on_cut(wire, mend)
|
||||
var/obj/machinery/autolathe/A = holder
|
||||
|
||||
@@ -197,7 +197,7 @@ var/list/teleportlocs = list()
|
||||
if(D.operating)
|
||||
D.nextstate = CLOSED
|
||||
else if(!D.density)
|
||||
addtimer(D, "close", 0)
|
||||
addtimer(CALLBACK(D, /obj/machinery/door/firedoor.proc/close), 0)
|
||||
for(var/obj/machinery/firealarm/F in RA)
|
||||
F.update_icon()
|
||||
for (var/obj/machinery/camera/C in RA)
|
||||
@@ -223,7 +223,7 @@ var/list/teleportlocs = list()
|
||||
if(D.operating)
|
||||
D.nextstate = OPEN
|
||||
else if(D.density)
|
||||
addtimer(D, "open", 0)
|
||||
addtimer(CALLBACK(D, /obj/machinery/door/firedoor.proc/open), 0)
|
||||
for(var/obj/machinery/firealarm/F in RA)
|
||||
F.update_icon()
|
||||
|
||||
@@ -257,7 +257,7 @@ var/list/teleportlocs = list()
|
||||
for (var/mob/living/silicon/SILICON in player_list)
|
||||
if(SILICON.triggerAlarm("Burglar", src, cameras, trigger))
|
||||
//Cancel silicon alert after 1 minute
|
||||
addtimer(SILICON, "cancelAlarm", 600, TIMER_NORMAL,"Burglar",src,trigger)
|
||||
addtimer(CALLBACK(SILICON, /mob/living/silicon.proc/cancelAlarm,"Burglar",src,trigger), 600)
|
||||
|
||||
/area/proc/set_fire_alarm_effect()
|
||||
fire = 1
|
||||
@@ -294,7 +294,7 @@ var/list/teleportlocs = list()
|
||||
if(D.operating)
|
||||
D.nextstate = OPEN
|
||||
else if(D.density)
|
||||
addtimer(D, "open", 0)
|
||||
addtimer(CALLBACK(D, /obj/machinery/door/firedoor.proc/open), 0)
|
||||
|
||||
/area/proc/updateicon()
|
||||
if ((fire || eject || party) && (!requires_power||power_environ))//If it doesn't require power, can still activate this proc.
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
user.visible_message("<span class='warning'>[user] vomits a glob of acid on [user.p_their()] [O]!</span>", \
|
||||
"<span class='warning'>We vomit acidic ooze onto our restraints!</span>")
|
||||
|
||||
addtimer(src, "dissolve_handcuffs", 30, TIMER_NORMAL, user, O)
|
||||
addtimer(CALLBACK(src, .proc/dissolve_handcuffs, user, O), 30)
|
||||
used = TRUE
|
||||
|
||||
if(user.wear_suit && user.wear_suit.breakouttime && !used)
|
||||
@@ -31,7 +31,7 @@
|
||||
return 0
|
||||
user.visible_message("<span class='warning'>[user] vomits a glob of acid across the front of [user.p_their()] [S]!</span>", \
|
||||
"<span class='warning'>We vomit acidic ooze onto our straight jacket!</span>")
|
||||
addtimer(src, "dissolve_straightjacket", 30, TIMER_NORMAL, user, S)
|
||||
addtimer(CALLBACK(src, .proc/dissolve_straightjacket, user, S), 30)
|
||||
used = TRUE
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
return 0
|
||||
C.visible_message("<span class='warning'>[C]'s hinges suddenly begin to melt and run!</span>")
|
||||
user << "<span class='warning'>We vomit acidic goop onto the interior of [C]!</span>"
|
||||
addtimer(src, "open_closet", 70, TIMER_NORMAL, user, C)
|
||||
addtimer(CALLBACK(src, .proc/open_closet, user, C), 70)
|
||||
used = TRUE
|
||||
|
||||
if(istype(user.loc, /obj/structure/spider/cocoon) && !used)
|
||||
@@ -50,7 +50,7 @@
|
||||
return 0
|
||||
C.visible_message("<span class='warning'>[src] shifts and starts to fall apart!</span>")
|
||||
user << "<span class='warning'>We secrete acidic enzymes from our skin and begin melting our cocoon...</span>"
|
||||
addtimer(src, "dissolve_cocoon", 25, TIMER_NORMAL, user, C) //Very short because it's just webs
|
||||
addtimer(CALLBACK(src, .proc/dissolve_cocoon, user, C), 25) //Very short because it's just webs
|
||||
used = TRUE
|
||||
|
||||
if(used)
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
user.update_stat()
|
||||
user.update_canmove()
|
||||
|
||||
addtimer(src, "ready_to_regenerate", LING_FAKEDEATH_TIME, TIMER_UNIQUE, user)
|
||||
addtimer(CALLBACK(src, .proc/ready_to_regenerate, user), LING_FAKEDEATH_TIME, TIMER_UNIQUE)
|
||||
|
||||
feedback_add_details("changeling_powers","FD")
|
||||
return 1
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
by quick repeated use!</span>"
|
||||
|
||||
recent_uses++
|
||||
addtimer(src, "fleshmend", 0, TIMER_NORMAL, user)
|
||||
addtimer(CALLBACK(src, .proc/fleshmend, user), 0)
|
||||
|
||||
feedback_add_details("changeling_powers","RR")
|
||||
return 1
|
||||
|
||||
@@ -149,7 +149,7 @@
|
||||
target.visible_message("<span class='warning'>A grotesque blade forms around [target.name]\'s arm!</span>", "<span class='userdanger'>Your arm twists and mutates, transforming into a horrific monstrosity!</span>", "<span class='italics'>You hear organic matter ripping and tearing!</span>")
|
||||
playsound(target, 'sound/effects/blobattack.ogg', 30, 1)
|
||||
|
||||
addtimer(src, "remove_fake", 600, TIMER_NORMAL, target, blade)
|
||||
addtimer(CALLBACK(src, .proc/remove_fake, target, blade), 600)
|
||||
|
||||
feedback_add_details("changeling_powers","AS")
|
||||
return 1
|
||||
@@ -224,7 +224,7 @@
|
||||
|
||||
/obj/effect/proc_holder/changeling/sting/LSD/sting_action(mob/user, mob/living/carbon/target)
|
||||
add_logs(user, target, "stung", "LSD sting")
|
||||
addtimer(src, "hallucination_time", rand(300,600), TIMER_NORMAL, target)
|
||||
addtimer(CALLBACK(src, .proc/hallucination_time, target), rand(300,600))
|
||||
feedback_add_details("changeling_powers","HS")
|
||||
return 1
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
/obj/effect/clockwork/overlay/wall/New()
|
||||
..()
|
||||
queue_smooth_neighbors(src)
|
||||
addtimer(GLOBAL_PROC, "queue_smooth", 1, TIMER_NORMAL, src)
|
||||
addtimer(CALLBACK(GLOBAL_PROC, .proc/queue_smooth, src), 1)
|
||||
|
||||
/obj/effect/clockwork/overlay/wall/Destroy()
|
||||
queue_smooth_neighbors(src)
|
||||
|
||||
@@ -111,7 +111,7 @@
|
||||
if(glow)
|
||||
qdel(glow)
|
||||
animate(src, color = oldcolor, time = 20)
|
||||
addtimer(src, "update_atom_colour", 20)
|
||||
addtimer(CALLBACK(src, /atom/proc/update_atom_colour), 20)
|
||||
visible_message("<span class='warning'>[src] slowly stops glowing!</span>")
|
||||
return
|
||||
post_channel(L)
|
||||
@@ -137,7 +137,7 @@
|
||||
qdel(src)
|
||||
else
|
||||
animate(src, color = oldcolor, time = 20)
|
||||
addtimer(src, "update_atom_colour", 20)
|
||||
addtimer(CALLBACK(src, /atom/proc/update_atom_colour), 20)
|
||||
visible_message("<span class='warning'>[src] slowly stops glowing!</span>")
|
||||
|
||||
|
||||
@@ -217,7 +217,7 @@
|
||||
var/datum/status_effect/cyborg_power_regen/CPR = cyborg.apply_status_effect(STATUS_EFFECT_POWERREGEN)
|
||||
CPR.power_to_give = giving_power * 0.1 //ten ticks, restoring 10% each
|
||||
animate(cyborg, color = previous_color, time = 100)
|
||||
addtimer(cyborg, "update_atom_colour", 100)
|
||||
addtimer(CALLBACK(cyborg, /atom/proc/update_atom_colour), 100)
|
||||
|
||||
/obj/effect/clockwork/sigil/transmission/proc/cyborg_checks(mob/living/silicon/robot/cyborg)
|
||||
if(!cyborg.cell)
|
||||
@@ -287,7 +287,7 @@
|
||||
return
|
||||
visible_message("<span class='warning'>[src] begins to glow bright blue!</span>")
|
||||
animate(src, alpha = 255, time = 10)
|
||||
addtimer(src, "update_alpha", 10)
|
||||
addtimer(CALLBACK(src, .proc/update_alpha), 10)
|
||||
sleep(10)
|
||||
//as long as they're still on the sigil and are either not a servant or they're a servant AND it has remaining vitality
|
||||
while(L && (!is_servant_of_ratvar(L) || (is_servant_of_ratvar(L) && vitality)) && get_turf(L) == get_turf(src))
|
||||
@@ -383,7 +383,7 @@
|
||||
visible_message("<span class='warning'>[src] slowly stops glowing!</span>")
|
||||
if(sigil_active || alpha == 255)
|
||||
animate(src, alpha = initial(alpha), time = 10)
|
||||
addtimer(src, "update_alpha", 10)
|
||||
addtimer(CALLBACK(src, .proc/update_alpha), 10)
|
||||
|
||||
/obj/effect/clockwork/sigil/vitality/proc/update_alpha()
|
||||
if(sigil_active)
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
|
||||
/obj/effect/clockwork/spatial_gateway/New()
|
||||
..()
|
||||
addtimer(src, "check_setup", 1)
|
||||
addtimer(CALLBACK(src, .proc/check_setup), 1)
|
||||
|
||||
/obj/effect/clockwork/spatial_gateway/Destroy()
|
||||
deltimer(timerid)
|
||||
@@ -135,7 +135,7 @@
|
||||
if(!no_cost)
|
||||
uses = max(0, uses - 1)
|
||||
linked_gateway.uses = max(0, linked_gateway.uses - 1)
|
||||
addtimer(src, "check_uses", 10)
|
||||
addtimer(CALLBACK(src, .proc/check_uses), 10)
|
||||
return TRUE
|
||||
|
||||
/obj/effect/clockwork/spatial_gateway/proc/check_uses()
|
||||
|
||||
@@ -188,7 +188,7 @@
|
||||
if(reinf)
|
||||
prosel_cost -= REPLICANT_ROD
|
||||
for(var/obj/structure/grille/G in get_turf(src))
|
||||
addtimer(proselytizer, "proselytize", 0, TIMER_NORMAL, G, user)
|
||||
addtimer(CALLBACK(proselytizer, /obj/item/clockwork/clockwork_proselytizer.proc/proselytize, G, user), 0)
|
||||
return list("operation_time" = prosel_time, "new_obj_type" = windowtype, "alloy_cost" = prosel_cost, "spawn_dir" = dir, "dir_in_new" = new_dir)
|
||||
|
||||
/obj/structure/window/reinforced/clockwork/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer)
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
add_logs(ranged_ability_user, L, "bound with Geis")
|
||||
if(slab.speed_multiplier >= 0.5) //excuse my debug...
|
||||
ranged_ability_user.notransform = TRUE
|
||||
addtimer(src, "reset_user_notransform", 5, TIMER_NORMAL, ranged_ability_user) //stop us moving for a little bit so we don't break the scripture following this
|
||||
addtimer(CALLBACK(src, .proc/reset_user_notransform, ranged_ability_user), 5) //stop us moving for a little bit so we don't break the scripture following this
|
||||
slab.busy = null
|
||||
var/datum/clockwork_scripture/geis/conversion = new
|
||||
conversion.slab = slab
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
user.emote("scream")
|
||||
user.apply_damage(30, BRUTE, "head")
|
||||
user.adjustBrainLoss(30)
|
||||
addtimer(user, "unEquip", 1, TIMER_NORMAL, src, 1) //equipped happens before putting stuff on(but not before picking items up). thus, we need to wait for it to be on before forcing it off.
|
||||
addtimer(CALLBACK(user, /mob/living.proc/unEquip), src, 1) //equipped happens before putting stuff on(but not before picking items up), 1). thus, we need to wait for it to be on before forcing it off.
|
||||
|
||||
/obj/item/clothing/head/helmet/clockwork/mob_can_equip(mob/M, mob/equipper, slot, disable_warning = 0)
|
||||
if(equipper && !is_servant_of_ratvar(equipper))
|
||||
@@ -106,7 +106,7 @@
|
||||
user.apply_damage(15, BURN, "chest")
|
||||
user.adjust_fire_stacks(2)
|
||||
user.IgniteMob()
|
||||
addtimer(user, "unEquip", 1, TIMER_NORMAL, src, 1)
|
||||
addtimer(CALLBACK(user, /mob/living.proc/unEquip, src, 1), 1)
|
||||
|
||||
/obj/item/clothing/gloves/clockwork
|
||||
name = "clockwork gauntlets"
|
||||
@@ -166,7 +166,7 @@
|
||||
user.emote("scream")
|
||||
user.apply_damage(7, BRUTE, "l_arm")
|
||||
user.apply_damage(7, BRUTE, "r_arm")
|
||||
addtimer(user, "unEquip", 1, TIMER_NORMAL, src, 1)
|
||||
addtimer(CALLBACK(user, /mob/living.proc/unEquip, src, 1), 1)
|
||||
|
||||
/obj/item/clothing/shoes/clockwork
|
||||
name = "clockwork treads"
|
||||
@@ -213,4 +213,4 @@
|
||||
user.emote("scream")
|
||||
user.apply_damage(7, BURN, "l_leg")
|
||||
user.apply_damage(7, BURN, "r_leg")
|
||||
addtimer(user, "unEquip", 1, TIMER_NORMAL, src, 1)
|
||||
addtimer(CALLBACK(user, /mob/living.proc/unEquip, src, 1), 1)
|
||||
|
||||
@@ -102,7 +102,7 @@
|
||||
|
||||
/obj/item/clockwork/slab/dropped(mob/user)
|
||||
. = ..()
|
||||
addtimer(src, "check_on_mob", 1, TIMER_NORMAL, user) //dropped is called before the item is out of the slot, so we need to check slightly later
|
||||
addtimer(CALLBACK(src, .proc/check_on_mob, user), 1) //dropped is called before the item is out of the slot, so we need to check slightly later
|
||||
|
||||
/obj/item/clockwork/slab/proc/check_on_mob(mob/user)
|
||||
if(user && !(src in user.held_items) && slab_ability && slab_ability.ranged_ability_user) //if we happen to check and we AREN'T in user's hands, remove whatever ability we have
|
||||
@@ -436,7 +436,7 @@
|
||||
if("toggle")
|
||||
recollecting = !recollecting
|
||||
if("recite")
|
||||
addtimer(src, "recite_scripture", 0, TIMER_NORMAL, text2path(params["category"]), usr, FALSE)
|
||||
addtimer(CALLBACK(src, .proc/recite_scripture, text2path(params["category"]), usr, FALSE), 0)
|
||||
if("select")
|
||||
selected_scripture = params["category"]
|
||||
if("bind")
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
|
||||
/obj/item/clothing/glasses/judicial_visor/dropped(mob/user)
|
||||
. = ..()
|
||||
addtimer(src, "check_on_mob", 1, TIMER_NORMAL, user) //dropped is called before the item is out of the slot, so we need to check slightly later
|
||||
addtimer(CALLBACK(src, .proc/check_on_mob, user), 1) //dropped is called before the item is out of the slot, so we need to check slightly later
|
||||
|
||||
/obj/item/clothing/glasses/judicial_visor/proc/check_on_mob(mob/user)
|
||||
if(user && src != user.get_item_by_slot(slot_glasses)) //if we happen to check and we AREN'T in the slot, we need to remove our shit from whoever we got dropped from
|
||||
@@ -131,7 +131,7 @@
|
||||
continue
|
||||
V.recharging = TRUE //To prevent exploiting multiple visors to bypass the cooldown
|
||||
V.update_status()
|
||||
addtimer(V, "recharge_visor", (ratvar_awakens ? visor.recharge_cooldown*0.1 : visor.recharge_cooldown) * 2, TIMER_NORMAL, ranged_ability_user)
|
||||
addtimer(CALLBACK(V, /obj/item/clothing/glasses/judicial_visor.proc/recharge_visor), (ratvar_awakens ? visor.recharge_cooldown*0.1 : visor.recharge_cooldown) * 2, ranged_ability_user)
|
||||
clockwork_say(ranged_ability_user, text2ratvar("Kneel, heathens!"))
|
||||
ranged_ability_user.visible_message("<span class='warning'>[ranged_ability_user]'s judicial visor fires a stream of energy at [target], creating a strange mark!</span>", "<span class='heavy_brass'>You direct [visor]'s power to [target]. You must wait for some time before doing this again.</span>")
|
||||
var/turf/targetturf = get_turf(target)
|
||||
@@ -139,7 +139,7 @@
|
||||
add_logs(ranged_ability_user, targetturf, "created a judicial marker")
|
||||
ranged_ability_user.update_action_buttons_icon()
|
||||
ranged_ability_user.update_inv_glasses()
|
||||
addtimer(visor, "recharge_visor", ratvar_awakens ? visor.recharge_cooldown*0.1 : visor.recharge_cooldown, TIMER_NORMAL, ranged_ability_user)//Cooldown is reduced by 10x if Ratvar is up
|
||||
addtimer(CALLBACK(visor, /obj/item/clothing/glasses/judicial_visor.proc/recharge_visor), ratvar_awakens ? visor.recharge_cooldown*0.1 : visor.recharge_cooldown, ranged_ability_user)//Cooldown is reduced by 10x if Ratvar is up
|
||||
remove_ranged_ability()
|
||||
|
||||
return TRUE
|
||||
@@ -160,7 +160,7 @@
|
||||
..()
|
||||
SetLuminosity(4, 3)
|
||||
user = caster
|
||||
addtimer(src, "judicialblast", 0, TIMER_NORMAL)
|
||||
addtimer(CALLBACK(src, .proc/judicialblast), 0)
|
||||
|
||||
/obj/effect/clockwork/judicial_marker/proc/judicialblast()
|
||||
playsound(src, 'sound/magic/MAGIC_MISSILE.ogg', 50, 1, 1, 1)
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
throwforce = initial(throwforce)
|
||||
armour_penetration = 0
|
||||
clockwork_desc = "A powerful spear of Ratvarian making. It's more effective against enemy cultists and silicons, though it won't last for long."
|
||||
timerid = addtimer(src, "break_spear", 600, TIMER_NORMAL)
|
||||
timerid = addtimer(CALLBACK(src, .proc/break_spear), 600)
|
||||
|
||||
/obj/item/clockwork/ratvarian_spear/cyborg/ratvar_act() //doesn't break!
|
||||
if(ratvar_awakens)
|
||||
|
||||
@@ -210,7 +210,7 @@
|
||||
var/invoker_old_color = invoker.color
|
||||
invoker.color = "#AF0AAF"
|
||||
animate(invoker, color = invoker_old_color, time = flee_time+grace_period)
|
||||
addtimer(invoker, "update_atom_colour", flee_time+grace_period)
|
||||
addtimer(CALLBACK(invoker, /atom/proc/update_atom_colour), flee_time+grace_period)
|
||||
if(chant_number != chant_amount) //if this is the last chant, we don't have a movement period because the chant is over
|
||||
var/endtime = world.time + flee_time
|
||||
var/starttime = world.time
|
||||
|
||||
@@ -204,7 +204,7 @@
|
||||
playsound(invoker, 'sound/magic/lightningbolt.ogg', 100, 0)
|
||||
if(invoker.stat == CONSCIOUS)
|
||||
animate(invoker, color = oldcolor, time = 10)
|
||||
addtimer(invoker, "update_atom_colour", 10)
|
||||
addtimer(CALLBACK(invoker, /atom/proc/update_atom_colour), 10)
|
||||
for(var/mob/living/L in view(7, invoker))
|
||||
if(is_servant_of_ratvar(L) || L.null_rod_check())
|
||||
continue
|
||||
|
||||
@@ -210,10 +210,10 @@
|
||||
if(!ratvar_awakens)
|
||||
R.clockwork_desc = "A powerful spear of Ratvarian making. It's more effective against enemy cultists and silicons, though it won't last for long."
|
||||
owner << "<span class='warning'>Your spear begins to break down in this plane of existence. You can't use it for long!</span>"
|
||||
R.timerid = addtimer(R, "break_spear", base_cooldown, TIMER_NORMAL)
|
||||
R.timerid = addtimer(CALLBACK(R, /obj/item/clockwork/ratvarian_spear.proc/break_spear), base_cooldown)
|
||||
cooldown = base_cooldown + world.time
|
||||
owner.update_action_buttons_icon()
|
||||
addtimer(src, "update_actions", base_cooldown, TIMER_NORMAL)
|
||||
addtimer(CALLBACK(src, .proc/update_actions), base_cooldown)
|
||||
return TRUE
|
||||
|
||||
/datum/action/innate/function_call/proc/update_actions()
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
var/previouscolor = color
|
||||
color = "#960000"
|
||||
animate(src, color = previouscolor, time = 8)
|
||||
addtimer(src, "update_atom_colour", 8)
|
||||
addtimer(CALLBACK(src, /atom/proc/update_atom_colour), 8)
|
||||
|
||||
/obj/structure/destructible/clockwork/examine(mob/user)
|
||||
var/can_see_clockwork = is_servant_of_ratvar(user) || isobserver(user)
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
|
||||
/obj/structure/destructible/clockwork/massive/celestial_gateway/New()
|
||||
..()
|
||||
addtimer(src, "spawn_animation", 0)
|
||||
addtimer(CALLBACK(src, .proc/spawn_animation), 0)
|
||||
|
||||
/obj/structure/destructible/clockwork/massive/celestial_gateway/proc/spawn_animation()
|
||||
var/turf/T = get_turf(src)
|
||||
@@ -208,7 +208,7 @@
|
||||
sleep(3)
|
||||
new/obj/structure/destructible/clockwork/massive/ratvar(startpoint)
|
||||
else
|
||||
addtimer(SSshuttle.emergency, "request", 0, TIMER_NORMAL, null, 0) //call the shuttle immediately
|
||||
addtimer(CALLBACK(SSshuttle.emergency, /obj/docking_port/mobile/emergency.proc/request, null, 0), 0) //call the shuttle immediately
|
||||
sleep(3)
|
||||
send_to_playing_players("<span class='ratvar'>\"[text2ratvar("Behold")]!\"</span>\n<span class='inathneq_large'>\"[text2ratvar("See Engine's mercy")]!\"</span>\n\
|
||||
<span class='sevtug_large'>\"[text2ratvar("Observe Engine's design skills")]!\"</span>\n<span class='nezbere_large'>\"[text2ratvar("Behold Engine's light")]!!\"</span>\n\
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
var/image/alert_overlay = image('icons/effects/clockwork_effects.dmi', "ratvar_alert")
|
||||
var/area/A = get_area(src)
|
||||
notify_ghosts("The Justiciar's light calls to you! Reach out to Ratvar in [A.name] to be granted a shell to spread his glory!", null, source = src, alert_overlay = alert_overlay)
|
||||
addtimer(SSshuttle.emergency, "request", 50, TIMER_NORMAL, null, 0.1)
|
||||
addtimer(CALLBACK(SSshuttle.emergency, /obj/docking_port/mobile/emergency..proc/request, null, 0.1), 50)
|
||||
|
||||
/obj/structure/destructible/clockwork/massive/ratvar/Destroy()
|
||||
ratvar_awakens--
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
var/previouscolor = color
|
||||
color = "#FAE48C"
|
||||
animate(src, color = previouscolor, time = 8)
|
||||
addtimer(src, "update_atom_colour", 8)
|
||||
addtimer(CALLBACK(src, /atom/proc/update_atom_colour), 8)
|
||||
|
||||
/obj/structure/destructible/cult/proc/getETA()
|
||||
var/time = (cooldowntime - world.time)/600
|
||||
|
||||
@@ -188,7 +188,7 @@ structure_check() searches for nearby cultist structures required for the invoca
|
||||
var/oldcolor = color
|
||||
color = rgb(255, 0, 0)
|
||||
animate(src, color = oldcolor, time = 5)
|
||||
addtimer(src, "update_atom_colour", 5)
|
||||
addtimer(CALLBACK(src, /atom/proc/update_atom_colour), 5)
|
||||
|
||||
//Malformed Rune: This forms if a rune is not drawn correctly. Invoking it does nothing but hurt the user.
|
||||
/obj/effect/rune/malformed
|
||||
@@ -402,7 +402,7 @@ var/list/teleport_runes = list()
|
||||
..()
|
||||
do_sacrifice(L, invokers)
|
||||
animate(src, color = oldcolor, time = 5)
|
||||
addtimer(src, "update_atom_colour", 5)
|
||||
addtimer(CALLBACK(src, /atom/proc/update_atom_colour), 5)
|
||||
rune_in_use = FALSE
|
||||
|
||||
/obj/effect/rune/convert/proc/do_convert(mob/living/convertee, list/invokers)
|
||||
@@ -795,7 +795,7 @@ var/list/wall_runes = list()
|
||||
W.density = TRUE
|
||||
W.update_state()
|
||||
W.spread_density()
|
||||
density_timer = addtimer(src, "lose_density", 900)
|
||||
density_timer = addtimer(CALLBACK(src, .proc/lose_density), 900)
|
||||
|
||||
/obj/effect/rune/wall/proc/lose_density()
|
||||
if(density)
|
||||
@@ -805,7 +805,7 @@ var/list/wall_runes = list()
|
||||
var/oldcolor = color
|
||||
add_atom_colour("#696969", FIXED_COLOUR_PRIORITY)
|
||||
animate(src, color = oldcolor, time = 50, easing = EASE_IN)
|
||||
addtimer(src, "recharge", 50)
|
||||
addtimer(CALLBACK(src, .proc/recharge), 50)
|
||||
|
||||
/obj/effect/rune/wall/proc/recharge()
|
||||
recharging = FALSE
|
||||
|
||||
@@ -179,7 +179,7 @@ var/list/gang_colors_pool = list("red","orange","yellow","green","blue","purple"
|
||||
|
||||
G.add_gang_hud(gangster_mind)
|
||||
if(jobban_isbanned(gangster_mind.current, ROLE_GANG))
|
||||
addtimer(src, "replace_jobbaned_player", 0, TIMER_NORMAL, gangster_mind.current, ROLE_GANG, ROLE_GANG)
|
||||
addtimer(CALLBACK(src, /datum/game_mode.proc/replace_jobbaned_player, gangster_mind.current, ROLE_GANG, ROLE_GANG), 0)
|
||||
return 2
|
||||
////////////////////////////////////////////////////////////////////
|
||||
//Deals with players reverting to neutral (Not a gangster anymore)//
|
||||
|
||||
@@ -162,8 +162,8 @@
|
||||
for(var/obj/machinery/door/D in airlocks)
|
||||
if(D.z != ZLEVEL_STATION)
|
||||
continue
|
||||
addtimer(D, "hostile_lockdown", 0, TIMER_NORMAL, src)
|
||||
addtimer(D, "disable_lockdown", 900)
|
||||
addtimer(CALLBACK(D, /obj/machinery/door.proc/hostile_lockdown, src), 0)
|
||||
addtimer(CALLBACK(D, /obj/machinery/door.proc/disable_lockdown), 900)
|
||||
|
||||
var/obj/machinery/computer/communications/C = locate() in machines
|
||||
if(C)
|
||||
@@ -172,9 +172,9 @@
|
||||
verbs -= /mob/living/silicon/ai/proc/lockdown
|
||||
minor_announce("Hostile runtime detected in door controllers. Isolation Lockdown protocols are now in effect. Please remain calm.","Network Alert:", 1)
|
||||
src << "<span class = 'warning'>Lockdown Initiated. Network reset in 90 seconds.</span>"
|
||||
addtimer(GLOBAL_PROC, "minor_announce", 900, TIMER_NORMAL,
|
||||
addtimer(CALLBACK(GLOBAL_PROC, .proc/minor_announce,
|
||||
"Automatic system reboot complete. Have a secure day.",
|
||||
"Network reset:")
|
||||
"Network reset:"), 900)
|
||||
|
||||
/datum/AI_Module/large/destroy_rcd
|
||||
module_name = "Destroy RCDs"
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
B.victim << "<span class='danger'>You feel the captive mind of [src] begin to resist your control.</span>"
|
||||
|
||||
var/delay = rand(150,250) + B.victim.brainloss
|
||||
addtimer(src, "return_control", delay, TIMER_NORMAL, src.loc)
|
||||
addtimer(CALLBACK(src, .proc/return_control, src.loc), delay)
|
||||
|
||||
/mob/living/captive_brain/proc/return_control(mob/living/simple_animal/borer/B)
|
||||
if(!B || !B.controlling)
|
||||
@@ -272,7 +272,7 @@ var/total_borer_hosts_needed = 10
|
||||
else
|
||||
src << "<span class='warning'>You start shaking off your lethargy as the sugar leaves your host's blood. This will take about 10 seconds...</span>"
|
||||
|
||||
waketimerid = addtimer(src,"wakeup",10,TIMER_NORMAL)
|
||||
waketimerid = addtimer(CALLBACK(src, "wakeup"), 10)
|
||||
if(controlling)
|
||||
|
||||
if(docile)
|
||||
@@ -509,7 +509,7 @@ var/total_borer_hosts_needed = 10
|
||||
|
||||
leaving = TRUE
|
||||
|
||||
addtimer(src, "release_host", 100, TIMER_NORMAL)
|
||||
addtimer(CALLBACK(src, .proc/release_host), 100)
|
||||
|
||||
/mob/living/simple_animal/borer/proc/release_host()
|
||||
if(!victim || !src || qdeleted(victim) || qdeleted(src))
|
||||
@@ -633,7 +633,7 @@ var/total_borer_hosts_needed = 10
|
||||
bonding = TRUE
|
||||
|
||||
var/delay = 200+(victim.brainloss*5)
|
||||
addtimer(src, "assume_control", delay, TIMER_NORMAL)
|
||||
addtimer(CALLBACK(src, .proc/assume_control), delay)
|
||||
|
||||
/mob/living/simple_animal/borer/proc/assume_control()
|
||||
if(!victim || !src || controlling || victim.stat == DEAD)
|
||||
|
||||
@@ -186,7 +186,7 @@
|
||||
adjustBruteLoss(25) //hella effective
|
||||
inhibited = 1
|
||||
update_action_buttons_icon()
|
||||
addtimer(src, "reset_inhibit", 30, TIMER_NORMAL)
|
||||
addtimer(CALLBACK(src, .proc/reset_inhibit), 30)
|
||||
|
||||
/mob/living/simple_animal/revenant/proc/reset_inhibit()
|
||||
if(src)
|
||||
@@ -332,7 +332,7 @@
|
||||
|
||||
/obj/item/weapon/ectoplasm/revenant/New()
|
||||
..()
|
||||
addtimer(src, "try_reform", 600, TIMER_NORMAL)
|
||||
addtimer(CALLBACK(src, .proc/try_reform), 600)
|
||||
|
||||
/obj/item/weapon/ectoplasm/revenant/proc/try_reform()
|
||||
if(src)
|
||||
|
||||
@@ -195,7 +195,7 @@
|
||||
/obj/effect/proc_holder/spell/aoe_turf/revenant/overload/cast(list/targets, mob/living/simple_animal/revenant/user = usr)
|
||||
if(attempt_cast(user))
|
||||
for(var/turf/T in targets)
|
||||
addtimer(src, "overload", 0, TIMER_NORMAL, T, user)
|
||||
addtimer(CALLBACK(src, .proc/overload, T, user), 0)
|
||||
|
||||
/obj/effect/proc_holder/spell/aoe_turf/revenant/overload/proc/overload(turf/T, mob/user)
|
||||
for(var/obj/machinery/light/L in T)
|
||||
@@ -235,7 +235,7 @@
|
||||
/obj/effect/proc_holder/spell/aoe_turf/revenant/defile/cast(list/targets, mob/living/simple_animal/revenant/user = usr)
|
||||
if(attempt_cast(user))
|
||||
for(var/turf/T in targets)
|
||||
addtimer(src, "defile", 0, TIMER_NORMAL, T)
|
||||
addtimer(CALLBACK(src, .proc/defile, T), 0)
|
||||
|
||||
/obj/effect/proc_holder/spell/aoe_turf/revenant/defile/proc/defile(turf/T)
|
||||
if(T.flags & NOJAUNT)
|
||||
@@ -282,7 +282,7 @@
|
||||
/obj/effect/proc_holder/spell/aoe_turf/revenant/malfunction/cast(list/targets, mob/living/simple_animal/revenant/user = usr)
|
||||
if(attempt_cast(user))
|
||||
for(var/turf/T in targets)
|
||||
addtimer(src, "malfunction", 0, TIMER_NORMAL, T, user)
|
||||
addtimer(CALLBACK(src, .proc/malfunction, T, user), 0)
|
||||
|
||||
/obj/effect/proc_holder/spell/aoe_turf/revenant/malfunction/proc/malfunction(turf/T, mob/user)
|
||||
for(var/mob/living/simple_animal/bot/bot in T)
|
||||
@@ -326,7 +326,7 @@
|
||||
/obj/effect/proc_holder/spell/aoe_turf/revenant/blight/cast(list/targets, mob/living/simple_animal/revenant/user = usr)
|
||||
if(attempt_cast(user))
|
||||
for(var/turf/T in targets)
|
||||
addtimer(src, "blight", 0, TIMER_NORMAL, T, user)
|
||||
addtimer(CALLBACK(src, .proc/blight, T, user), 0)
|
||||
|
||||
/obj/effect/proc_holder/spell/aoe_turf/revenant/blight/proc/blight(turf/T, mob/user)
|
||||
for(var/mob/living/mob in T)
|
||||
|
||||
@@ -62,6 +62,6 @@
|
||||
affected_mob.dna.species.handle_hair(affected_mob,"#1d2953")
|
||||
affected_mob.visible_message("<span class='warning'>[affected_mob] looks terrifyingly gaunt...</span>", "<span class='revennotice'>You suddenly feel like your skin is <i>wrong</i>...</span>")
|
||||
affected_mob.add_atom_colour("#1d2953", TEMPORARY_COLOUR_PRIORITY)
|
||||
addtimer(src, "cure", 100, TIMER_NORMAL)
|
||||
addtimer(CALLBACK(src, .proc/cure), 100)
|
||||
else
|
||||
return
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
scan_for_target()
|
||||
point_to_target()
|
||||
my_god_jc_a_bomb()
|
||||
addtimer(src, "refresh_target", 50, TIMER_UNIQUE)
|
||||
addtimer(CALLBACK(src, .proc/refresh_target), 50, TIMER_UNIQUE)
|
||||
|
||||
/obj/item/weapon/pinpointer/proc/scan_for_target() //Looks for whatever it's tracking
|
||||
if(target)
|
||||
|
||||
@@ -275,7 +275,7 @@
|
||||
rev_mind.special_role = "Revolutionary"
|
||||
update_rev_icons_added(rev_mind)
|
||||
if(jobban_isbanned(rev_mind.current, ROLE_REV))
|
||||
addtimer(src, "replace_jobbaned_player", 0, TIMER_NORMAL, rev_mind.current, ROLE_REV, ROLE_REV)
|
||||
addtimer(CALLBACK(src, .proc/replace_jobbaned_player), 0, rev_mind.current, ROLE_REV, ROLE_REV)
|
||||
return 1
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//Deals with players being converted from the revolution (Not a rev anymore)// // Modified to handle borged MMIs. Accepts another var if the target is being borged at the time -- Polymorph.
|
||||
|
||||
@@ -161,7 +161,7 @@
|
||||
if(device)
|
||||
device.pulsed()
|
||||
|
||||
addtimer(src, "update_icon", 15)
|
||||
addtimer(CALLBACK(src, .proc/update_icon), 15)
|
||||
|
||||
/obj/machinery/button/power_change()
|
||||
..()
|
||||
|
||||
@@ -102,7 +102,7 @@
|
||||
if(can_use())
|
||||
cameranet.addCamera(src)
|
||||
emped = 0 //Resets the consecutive EMP count
|
||||
addtimer(src, "cancelCameraAlarm", 100)
|
||||
addtimer(CALLBACK(src, .proc/cancelCameraAlarm), 100)
|
||||
for(var/mob/O in mob_list)
|
||||
if (O.client && O.client.eye == src)
|
||||
O.unset_machine()
|
||||
@@ -286,7 +286,7 @@
|
||||
if(status)
|
||||
change_msg = "reactivates"
|
||||
triggerCameraAlarm()
|
||||
addtimer(src, "cancelCameraAlarm", 100)
|
||||
addtimer(CALLBACK(src, .proc/cancelCameraAlarm), 100)
|
||||
if(displaymessage)
|
||||
if(user)
|
||||
visible_message("<span class='danger'>[user] [change_msg] [src]!</span>")
|
||||
|
||||
@@ -134,7 +134,7 @@
|
||||
if(!G)
|
||||
return FALSE
|
||||
if(clonemind.damnation_type) //Can't clone the damned.
|
||||
addtimer(src, "horrifyingsound", 0)
|
||||
addtimer(CALLBACK(src, .proc/horrifyingsound), 0)
|
||||
mess = 1
|
||||
icon_state = "pod_g"
|
||||
update_icon()
|
||||
@@ -145,7 +145,7 @@
|
||||
countdown.start()
|
||||
|
||||
eject_wait = TRUE
|
||||
addtimer(src, "wait_complete", 30)
|
||||
addtimer(CALLBACK(src, .proc/wait_complete), 30)
|
||||
|
||||
var/mob/living/carbon/human/H = new /mob/living/carbon/human(src)
|
||||
|
||||
|
||||
@@ -114,7 +114,7 @@
|
||||
user.clear_fullscreen("flash", 5)
|
||||
watchers[user] = C
|
||||
use_power(50)
|
||||
addtimer(src, "use_camera_console", 5, TIMER_NORMAL, user)
|
||||
addtimer(CALLBACK(src, .proc/use_camera_console, user), 5)
|
||||
else
|
||||
user.unset_machine()
|
||||
|
||||
|
||||
@@ -260,7 +260,7 @@ var/global/datum/crewmonitor/crewmonitor = new
|
||||
return ..()
|
||||
|
||||
/datum/crewmonitor/proc/queueUpdate(z)
|
||||
addtimer(crewmonitor, "update", 5, TIMER_UNIQUE, z)
|
||||
addtimer(CALLBACK(crewmonitor, .proc/update, z), 5, TIMER_UNIQUE)
|
||||
|
||||
/datum/crewmonitor/proc/sendResources(var/client/client)
|
||||
send_asset(client, "crewmonitor.js")
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
|
||||
/obj/machinery/computer/gulag_teleporter_computer/New()
|
||||
..()
|
||||
addtimer(src, "scan_machinery", 5)
|
||||
addtimer(CALLBACK(src, .proc/scan_machinery), 5)
|
||||
|
||||
/obj/machinery/computer/gulag_teleporter_computer/Destroy()
|
||||
if(id)
|
||||
@@ -124,7 +124,7 @@
|
||||
if("teleport")
|
||||
if(!teleporter || !beacon)
|
||||
return
|
||||
addtimer(src, "teleport", 5, TIMER_NORMAL, usr)
|
||||
addtimer(CALLBACK(src, .proc/teleport, usr), 5)
|
||||
|
||||
/obj/machinery/computer/gulag_teleporter_computer/proc/scan_machinery()
|
||||
teleporter = findteleporter()
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
// Will help make emagging the console not so easy to get away with.
|
||||
MK.info += "<br><br><font color='red'>£%@%(*$%&(£&?*(%&£/{}</font>"
|
||||
var/time = 100 * length(src.linkedServer.decryptkey)
|
||||
addtimer(src, "UnmagConsole", time)
|
||||
addtimer(CALLBACK(src, .proc/UnmagConsole), time)
|
||||
message = rebootmsg
|
||||
else
|
||||
user << "<span class='notice'>A no server error appears on the screen.</span>"
|
||||
|
||||
@@ -100,7 +100,7 @@
|
||||
|
||||
/obj/structure/barricade/security/New()
|
||||
..()
|
||||
addtimer(src, "deploy", 40)
|
||||
addtimer(CALLBACK(src, .proc/deploy), 40)
|
||||
|
||||
/obj/structure/barricade/security/proc/deploy()
|
||||
icon_state = "barrier1"
|
||||
|
||||
@@ -232,7 +232,7 @@ var/list/airlock_overlays = list()
|
||||
if(cyclelinkedairlock.operating)
|
||||
cyclelinkedairlock.delayed_close_requested = TRUE
|
||||
else
|
||||
addtimer(cyclelinkedairlock, "close", 2)
|
||||
addtimer(CALLBACK(cyclelinkedairlock, .proc/close), 2)
|
||||
..()
|
||||
|
||||
|
||||
@@ -1244,9 +1244,9 @@ var/list/airlock_overlays = list()
|
||||
playsound(src.loc, 'sound/machines/airlockforced.ogg', 30, 1)
|
||||
|
||||
if(autoclose && normalspeed)
|
||||
addtimer(src, "autoclose", 150)
|
||||
addtimer(CALLBACK(src, .proc/autoclose), 150)
|
||||
else if(autoclose && !normalspeed)
|
||||
addtimer(src, "autoclose", 15)
|
||||
addtimer(CALLBACK(src, .proc/autoclose), 15)
|
||||
|
||||
if(!density)
|
||||
return 1
|
||||
@@ -1266,7 +1266,7 @@ var/list/airlock_overlays = list()
|
||||
update_freelook_sight()
|
||||
if(delayed_close_requested)
|
||||
delayed_close_requested = FALSE
|
||||
addtimer(src, "close", 2)
|
||||
addtimer(CALLBACK(src, .proc/close), 2)
|
||||
return 1
|
||||
|
||||
|
||||
@@ -1279,7 +1279,7 @@ var/list/airlock_overlays = list()
|
||||
if(safe)
|
||||
for(var/atom/movable/M in get_turf(src))
|
||||
if(M.density && M != src) //something is blocking the door
|
||||
addtimer(src, "autoclose", 60)
|
||||
addtimer(CALLBACK(src, .proc/autoclose), 60)
|
||||
return
|
||||
|
||||
if(forced < 2)
|
||||
|
||||
@@ -465,7 +465,7 @@
|
||||
var/previouscolor = color
|
||||
color = "#960000"
|
||||
animate(src, color = previouscolor, time = 8)
|
||||
addtimer(src, "update_atom_colour", 8)
|
||||
addtimer(CALLBACK(src, /atom/proc/update_atom_colour), 8)
|
||||
|
||||
/obj/machinery/door/airlock/clockwork/attackby(obj/item/I, mob/living/user, params)
|
||||
if(!attempt_construction(I, user))
|
||||
|
||||
@@ -92,7 +92,7 @@
|
||||
for(var/obj/machinery/door/window/brigdoor/door in targets)
|
||||
if(door.density)
|
||||
continue
|
||||
addtimer(door, "close", 0)
|
||||
addtimer(CALLBACK(door, /obj/machinery/door/window/brigdoor.proc/close), 0)
|
||||
|
||||
for(var/obj/structure/closet/secure_closet/brig/C in targets)
|
||||
if(C.broken)
|
||||
@@ -121,7 +121,7 @@
|
||||
for(var/obj/machinery/door/window/brigdoor/door in targets)
|
||||
if(!door.density)
|
||||
continue
|
||||
addtimer(door, "open", 0)
|
||||
addtimer(CALLBACK(door, /obj/machinery/door/window/brigdoor.proc/open), 0)
|
||||
|
||||
for(var/obj/structure/closet/secure_closet/brig/C in targets)
|
||||
if(C.broken)
|
||||
|
||||
@@ -191,7 +191,7 @@
|
||||
if(secondsElectrified == 0)
|
||||
secondsElectrified = -1
|
||||
shockedby += "\[[time_stamp()]\]EM Pulse"
|
||||
addtimer(src, "unelectrify", 300)
|
||||
addtimer(CALLBACK(src, .proc/unelectrify), 300)
|
||||
..()
|
||||
|
||||
/obj/machinery/door/proc/unelectrify()
|
||||
@@ -253,7 +253,7 @@
|
||||
for(var/atom/movable/M in get_turf(src))
|
||||
if(M.density && M != src) //something is blocking the door
|
||||
if(autoclose)
|
||||
addtimer(src, "autoclose", 60)
|
||||
addtimer(CALLBACK(src, .proc/autoclose), 60)
|
||||
return
|
||||
operating = 1
|
||||
|
||||
|
||||
@@ -30,9 +30,9 @@
|
||||
/obj/machinery/door/poddoor/shuttledock/proc/check()
|
||||
var/turf/T = get_step(src, checkdir)
|
||||
if(!istype(T, turftype))
|
||||
addtimer(src, "open", 0, TIMER_UNIQUE)
|
||||
addtimer(CALLBACK(src, .proc/open), 0, TIMER_UNIQUE)
|
||||
else
|
||||
addtimer(src, "close", 0, TIMER_UNIQUE)
|
||||
addtimer(CALLBACK(src, .proc/close), 0, TIMER_UNIQUE)
|
||||
|
||||
/obj/machinery/door/poddoor/Bumped(atom/AM)
|
||||
if(density)
|
||||
|
||||
@@ -339,7 +339,7 @@
|
||||
var/previouscolor = color
|
||||
color = "#960000"
|
||||
animate(src, color = previouscolor, time = 8)
|
||||
addtimer(src, "update_atom_colour", 8)
|
||||
addtimer(CALLBACK(src, /atom/proc/update_atom_colour), 8)
|
||||
|
||||
/obj/machinery/door/window/clockwork/allowed(mob/M)
|
||||
if(is_servant_of_ratvar(M))
|
||||
|
||||
@@ -56,10 +56,10 @@
|
||||
|
||||
if(program)
|
||||
program.receive_user_command(href_list["command"])
|
||||
addtimer(program, "process", 5)
|
||||
addtimer(CALLBACK(program, /datum/computer/file/embedded_program.proc/process), 5)
|
||||
|
||||
usr.set_machine(src)
|
||||
addtimer(src, "updateDialog", 5)
|
||||
addtimer(CALLBACK(src, .proc/updateDialog), 5)
|
||||
|
||||
/obj/machinery/embedded_controller/process()
|
||||
if(program)
|
||||
|
||||
@@ -94,7 +94,7 @@
|
||||
playsound(src.loc, 'sound/ambience/signal.ogg', 75, 0)
|
||||
|
||||
/obj/machinery/firealarm/proc/alarm_in(time)
|
||||
addtimer(src, "alarm", time, TIMER_NORMAL)
|
||||
addtimer(CALLBACK(src, .proc/alarm), time)
|
||||
|
||||
/obj/machinery/firealarm/proc/reset()
|
||||
if(!is_operational())
|
||||
@@ -103,7 +103,7 @@
|
||||
A.firereset(src)
|
||||
|
||||
/obj/machinery/firealarm/proc/reset_in(time)
|
||||
addtimer(src, "reset", time, TIMER_NORMAL)
|
||||
addtimer(CALLBACK(src, .proc/reset), time)
|
||||
|
||||
/obj/machinery/firealarm/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, \
|
||||
datum/tgui/master_ui = null, datum/ui_state/state = default_state)
|
||||
|
||||
@@ -35,7 +35,7 @@ The console is located at computer/gulag_teleporter.dm
|
||||
/obj/item/clothing/mask/gas))
|
||||
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/gulag_teleporter(null)
|
||||
B.apply_default_parts(src)
|
||||
addtimer(src, "locate_reclaimer", 5)
|
||||
addtimer(CALLBACK(src, .proc/locate_reclaimer), 5)
|
||||
|
||||
/obj/machinery/gulag_teleporter/Destroy()
|
||||
if(linked_reclaimer)
|
||||
|
||||
@@ -121,7 +121,7 @@
|
||||
use_power(power)
|
||||
flick("limbgrower_fill",src)
|
||||
icon_state = "limbgrower_idleon"
|
||||
addtimer(src, "build_item",32*prod_coeff)
|
||||
addtimer(CALLBACK(src, .proc/build_item),32*prod_coeff)
|
||||
|
||||
else
|
||||
usr << "<span class=\"alert\">The limb grower is busy. Please wait for completion of previous operation.</span>"
|
||||
|
||||
@@ -134,7 +134,7 @@
|
||||
on = !on
|
||||
|
||||
if(on)
|
||||
addtimer(src, "magnetic_process", 0)
|
||||
addtimer(CALLBACK(src, .proc/magnetic_process), 0)
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -152,7 +152,7 @@ var/const/SAFETY_COOLDOWN = 100
|
||||
safety_mode = TRUE
|
||||
update_icon()
|
||||
L.loc = src.loc
|
||||
addtimer(src, "reboot", SAFETY_COOLDOWN)
|
||||
addtimer(CALLBACK(src, .proc/reboot), SAFETY_COOLDOWN)
|
||||
|
||||
/obj/machinery/recycler/proc/reboot()
|
||||
playsound(src.loc, 'sound/machines/ping.ogg', 50, 0)
|
||||
|
||||
@@ -217,7 +217,7 @@
|
||||
occupant.adjustFireLoss(rand(10, 16))
|
||||
if(iscarbon(occupant))
|
||||
occupant.emote("scream")
|
||||
addtimer(src, "cook", 50, TIMER_NORMAL)
|
||||
addtimer(CALLBACK(src, .proc/cook), 50)
|
||||
else
|
||||
uv_cycles = initial(uv_cycles)
|
||||
uv = FALSE
|
||||
@@ -263,7 +263,7 @@
|
||||
add_fingerprint(user)
|
||||
if(locked)
|
||||
visible_message("<span class='notice'>You see [user] kicking against the doors of [src]!</span>", "<span class='notice'>You start kicking against the doors...</span>")
|
||||
addtimer(src, "resist_open", 300, TIMER_NORMAL, user)
|
||||
addtimer(CALLBACK(src, .proc/resist_open, user), 300)
|
||||
else
|
||||
open_machine()
|
||||
dump_contents()
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
. = (payload in src) && (active || ignore_active) && !defused
|
||||
if(.)
|
||||
payload.detonate()
|
||||
|
||||
|
||||
/obj/machinery/syndicatebomb/obj_break()
|
||||
if(!try_detonate())
|
||||
..()
|
||||
@@ -419,7 +419,7 @@
|
||||
chem_splash(get_turf(src), spread_range, list(reactants), temp_boost)
|
||||
|
||||
// Detonate it again in one second, until it's out of juice.
|
||||
addtimer(src, "detonate", 10)
|
||||
addtimer(CALLBACK(src, .proc/detonate), 10)
|
||||
|
||||
// If it's not a time release bomb, do normal explosion
|
||||
|
||||
|
||||
@@ -103,7 +103,7 @@
|
||||
|
||||
// So he can't jump out the gate right away.
|
||||
R.SetLockdown()
|
||||
addtimer(src, "unlock_new_robot", 50, TIMER_NORMAL, R)
|
||||
addtimer(CALLBACK(src, .proc/unlock_new_robot, R), 50)
|
||||
|
||||
/obj/machinery/transformer/proc/unlock_new_robot(mob/living/silicon/robot/R)
|
||||
playsound(src.loc, 'sound/machines/ping.ogg', 50, 0)
|
||||
|
||||
@@ -87,7 +87,7 @@
|
||||
/obj/item/mecha_parts/mecha_equipment/proc/start_cooldown()
|
||||
set_ready_state(0)
|
||||
chassis.use_power(energy_drain)
|
||||
addtimer(src, "set_ready_state", equip_cooldown, TIMER_NORMAL, 1)
|
||||
addtimer(CALLBACK(src, .proc/set_ready_state, 1), equip_cooldown)
|
||||
|
||||
/obj/item/mecha_parts/mecha_equipment/proc/do_after_cooldown(atom/target)
|
||||
if(!chassis)
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/energy/start_cooldown()
|
||||
set_ready_state(0)
|
||||
chassis.use_power(energy_drain*get_shot_amount())
|
||||
addtimer(src, "set_ready_state", equip_cooldown, TIMER_NORMAL, 1)
|
||||
addtimer(CALLBACK(src, .proc/set_ready_state, 1), equip_cooldown)
|
||||
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser
|
||||
equip_cooldown = 8
|
||||
@@ -344,7 +344,7 @@
|
||||
var/turf/T = get_turf(src)
|
||||
message_admins("[key_name(chassis.occupant, chassis.occupant.client)](<A HREF='?_src_=holder;adminmoreinfo=\ref[chassis.occupant]'>?</A>) fired a [src] in ([T.x],[T.y],[T.z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>JMP</a>)",0,1)
|
||||
log_game("[key_name(chassis.occupant)] fired a [src] ([T.x],[T.y],[T.z])")
|
||||
addtimer(F, "prime", det_time)
|
||||
addtimer(CALLBACK(F, /obj/item/weapon/grenade/flashbang.proc/prime), det_time)
|
||||
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/flashbang/clusterbang //Because I am a heartless bastard -Sieve //Heartless? for making the poor man's honkblast? - Kaze
|
||||
name = "\improper SOB-3 grenade launcher"
|
||||
|
||||
@@ -52,7 +52,7 @@ would spawn and follow the beaker, even if it is carried or thrown.
|
||||
for(var/i in 1 to number)
|
||||
if(total_effects > 20)
|
||||
return
|
||||
addtimer(src, "generate_effect", 0)
|
||||
addtimer(CALLBACK(src, .proc/generate_effect), 0)
|
||||
|
||||
/datum/effect_system/proc/generate_effect()
|
||||
if(holder)
|
||||
@@ -68,7 +68,7 @@ would spawn and follow the beaker, even if it is carried or thrown.
|
||||
for(var/j in 1 to steps_amt)
|
||||
sleep(5)
|
||||
step(E,direction)
|
||||
addtimer(src, "decrement_total_effect", 20)
|
||||
addtimer(CALLBACK(src, .proc/decrement_total_effect), 20)
|
||||
|
||||
/datum/effect_system/proc/decrement_total_effect()
|
||||
total_effects--
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
|
||||
/obj/effect/particle_effect/smoke/proc/kill_smoke()
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
addtimer(src, "fade_out", 0)
|
||||
addtimer(CALLBACK(src, .proc/fade_out), 0)
|
||||
QDEL_IN(src, 10)
|
||||
|
||||
/obj/effect/particle_effect/smoke/process()
|
||||
@@ -64,7 +64,7 @@
|
||||
if(C.smoke_delay)
|
||||
return 0
|
||||
C.smoke_delay++
|
||||
addtimer(src, "remove_smoke_delay", 10, TIMER_NORMAL, C)
|
||||
addtimer(CALLBACK(src, .proc/remove_smoke_delay, C), 10)
|
||||
return 1
|
||||
|
||||
/obj/effect/particle_effect/smoke/proc/remove_smoke_delay(mob/living/carbon/C)
|
||||
|
||||
@@ -52,7 +52,7 @@ var/list/blacklisted_glowshroom_turfs = typecacheof(list(
|
||||
else //if on the floor, glowshroom on-floor sprite
|
||||
icon_state = "[base_icon_state]f"
|
||||
|
||||
addtimer(src, "Spread", delay)
|
||||
addtimer(CALLBACK(src, .proc/Spread), delay)
|
||||
|
||||
/obj/structure/glowshroom/proc/Spread()
|
||||
for(var/i = 1 to yield)
|
||||
|
||||
@@ -20,14 +20,14 @@
|
||||
owner.status_flags |= XENO_HOST
|
||||
START_PROCESSING(SSobj, src)
|
||||
owner.med_hud_set_status()
|
||||
addtimer(src, "AddInfectionImages", 0, TIMER_NORMAL, owner)
|
||||
addtimer(CALLBACK(src, .proc/AddInfectionImages, owner), 0)
|
||||
|
||||
/obj/item/organ/body_egg/Remove(var/mob/living/carbon/M, special = 0)
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
if(owner)
|
||||
owner.status_flags &= ~(XENO_HOST)
|
||||
owner.med_hud_set_status()
|
||||
addtimer(src, "RemoveInfectionImages", 0, TIMER_NORMAL, owner)
|
||||
addtimer(CALLBACK(src, .proc/RemoveInfectionImages, owner), 0)
|
||||
..()
|
||||
|
||||
/obj/item/organ/body_egg/process()
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
|
||||
user << "Your name has been sent to your employers for approval."
|
||||
// Autoapproves after a certain time
|
||||
response_timer_id = addtimer(src, "rename_station", approval_time, TIMER_NORMAL, new_name, user)
|
||||
response_timer_id = addtimer(CALLBACK(src, .proc/rename_station, new_name, user), approval_time)
|
||||
admins << "<span class='adminnotice'><b><font color=orange>CUSTOM STATION RENAME:</font></b>[key_name_admin(user)] (<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A>) proposes to rename the station to [new_name] (will autoapprove in [approval_time / 10] seconds). (<A HREF='?_src_=holder;BlueSpaceArtillery=\ref[user]'>BSA</A>) (<A HREF='?_src_=holder;reject_custom_name=\ref[src]'>REJECT</A>) (<a href='?_src_=holder;CentcommReply=\ref[user]'>RPLY</a>)</span>"
|
||||
|
||||
/obj/item/station_charter/proc/reject_proposed(user)
|
||||
|
||||
@@ -197,7 +197,7 @@
|
||||
. = TRUE
|
||||
|
||||
/obj/item/device/radio/talk_into(atom/movable/M, message, channel, list/spans)
|
||||
addtimer(src,"talk_into_impl",0, TIMER_NORMAL,M,message,channel,spans)
|
||||
addtimer(CALLBACK(src, .proc/talk_into_impl, M, message, channel, spans), 0)
|
||||
return ITALICS | REDUCE_RANGE
|
||||
|
||||
/obj/item/device/radio/proc/talk_into_impl(atom/movable/M, message, channel, list/spans)
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
core = ncore
|
||||
icon_state = "core_container_loaded"
|
||||
user << "<span class='warning'>Container is sealing...</span>"
|
||||
addtimer(src, "seal", 50)
|
||||
addtimer(CALLBACK(src, .proc/seal), 50)
|
||||
return 1
|
||||
|
||||
/obj/item/nuke_core_container/proc/seal()
|
||||
|
||||
@@ -363,7 +363,7 @@
|
||||
if(charging)
|
||||
return
|
||||
if(candy < candymax)
|
||||
addtimer(src, "charge_lollipops", charge_delay, TIMER_NORMAL)
|
||||
addtimer(CALLBACK(src, .proc/charge_lollipops), charge_delay)
|
||||
charging = TRUE
|
||||
|
||||
/obj/item/borg/lollipop/proc/charge_lollipops()
|
||||
|
||||
@@ -231,8 +231,8 @@
|
||||
toggle_action.Grant(R)
|
||||
return 1
|
||||
|
||||
/obj/item/borg/uprgade/selfrepair/dropped()
|
||||
addtimer(src, "check_dropped", 1)
|
||||
/obj/item/borg/upgrade/selfrepair/dropped()
|
||||
addtimer(CALLBACK(src, .proc/check_dropped), 1)
|
||||
|
||||
/obj/item/borg/upgrade/selfrepair/proc/check_dropped()
|
||||
if(loc != cyborg)
|
||||
|
||||
@@ -362,7 +362,7 @@
|
||||
|
||||
/obj/effect/decal/cleanable/ash/snappop_phoenix/New()
|
||||
. = ..()
|
||||
addtimer(src, "respawn", respawn_time)
|
||||
addtimer(CALLBACK(src, .proc/respawn), respawn_time)
|
||||
|
||||
/obj/effect/decal/cleanable/ash/snappop_phoenix/proc/respawn()
|
||||
new /obj/item/toy/snappop/phoenix(get_turf(src))
|
||||
|
||||
@@ -551,7 +551,7 @@ RCD
|
||||
buzz loudly!</b></span>","<span class='danger'><b>[src] begins \
|
||||
vibrating violently!</b></span>")
|
||||
// 5 seconds to get rid of it
|
||||
addtimer(src, "detonate_pulse_explode", 50)
|
||||
addtimer(CALLBACK(src, .proc/detonate_pulse_explode), 50)
|
||||
|
||||
/obj/item/weapon/rcd/proc/detonate_pulse_explode()
|
||||
explosion(src, 0, 0, 3, 1, flame_range = 1)
|
||||
|
||||
@@ -94,7 +94,7 @@
|
||||
|
||||
target.add_overlay(image_overlay, 1)
|
||||
user << "<span class='notice'>You plant the bomb. Timer counting down from [timer].</span>"
|
||||
addtimer(src, "explode", timer * 10)
|
||||
addtimer(CALLBACK(src, .proc/explode), timer * 10)
|
||||
|
||||
/obj/item/weapon/c4/proc/explode()
|
||||
if(qdeleted(src))
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
var/mob/living/carbon/C = user
|
||||
C.throw_mode_on()
|
||||
|
||||
addtimer(src, "prime", det_time)
|
||||
addtimer(CALLBACK(src, .proc/prime), det_time)
|
||||
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/attackby(obj/item/I, mob/user, params)
|
||||
@@ -287,7 +287,7 @@
|
||||
message_admins("grenade primed by an assembly, attached by [key_name_admin(M)]<A HREF='?_src_=holder;adminmoreinfo=\ref[M]'>(?)</A> (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[M]'>FLW</A>) and last touched by [key_name_admin(last)]<A HREF='?_src_=holder;adminmoreinfo=\ref[last]'>(?)</A> (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[last]'>FLW</A>) ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>[A.name] (JMP)</a>.")
|
||||
log_game("grenade primed by an assembly, attached by [key_name(M)] and last touched by [key_name(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] ([T.x], [T.y], [T.z])")
|
||||
else
|
||||
addtimer(src, "prime", det_time)
|
||||
addtimer(CALLBACK(src, .proc/prime), det_time)
|
||||
var/turf/DT = get_turf(src)
|
||||
var/area/DA = get_area(DT)
|
||||
log_game("A grenade detonated at [DA.name] ([DT.x], [DT.y], [DT.z])")
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
payload = payload_type
|
||||
active = 1
|
||||
walk_away(src,loc,rand(1,4))
|
||||
addtimer(src, "prime", rand(15,60))
|
||||
addtimer(CALLBACK(src, .proc/prime), rand(15,60))
|
||||
|
||||
/obj/item/weapon/grenade/clusterbuster/segment/prime()
|
||||
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
if(iscarbon(user))
|
||||
var/mob/living/carbon/C = user
|
||||
C.throw_mode_on()
|
||||
addtimer(src, "prime", det_time)
|
||||
addtimer(CALLBACK(src, .proc/prime), det_time)
|
||||
|
||||
/obj/item/weapon/grenade/iedcasing/prime() //Blowing that can up
|
||||
update_mob()
|
||||
|
||||
@@ -84,7 +84,7 @@
|
||||
target.add_overlay(image_overlay, 1)
|
||||
if(!nadeassembly)
|
||||
user << "<span class='notice'>You plant the bomb. Timer counting down from [det_time].</span>"
|
||||
addtimer(src, "prime", det_time*10)
|
||||
addtimer(CALLBACK(src, .proc/prime), det_time*10)
|
||||
|
||||
/obj/item/weapon/grenade/plastic/suicide_act(mob/user)
|
||||
message_admins("[key_name_admin(user)](<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A>) (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[user]'>FLW</A>) suicided with [src] at ([user.x],[user.y],[user.z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[user.x];Y=[user.y];Z=[user.z]'>JMP</a>)",0,1)
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
if(isfloorturf(T))
|
||||
var/turf/open/floor/F = T
|
||||
F.wet = TURF_WET_PERMAFROST
|
||||
addtimer(F, "MakeDry", rand(3000, 3100), TIMER_NORMAL, TURF_WET_PERMAFROST)
|
||||
addtimer(CALLBACK(F, /turf/open/floor.proc/MakeDry), rand(3000, 3100), TURF_WET_PERMAFROST)
|
||||
for(var/mob/living/carbon/L in T)
|
||||
L.adjustStaminaLoss(stamina_damage)
|
||||
L.bodytemperature -= 230
|
||||
|
||||
@@ -299,7 +299,7 @@
|
||||
|
||||
/obj/item/weapon/restraints/legcuffs/beartrap/energy/New()
|
||||
..()
|
||||
addtimer(src, "dissipate", 100)
|
||||
addtimer(CALLBACK(src, .proc/dissipate), 100)
|
||||
|
||||
/obj/item/weapon/restraints/legcuffs/beartrap/energy/proc/dissipate()
|
||||
if(!istype(loc, /mob))
|
||||
|
||||
@@ -77,10 +77,10 @@
|
||||
ready_implants--
|
||||
if(!replenishing && auto_replenish)
|
||||
replenishing = TRUE
|
||||
addtimer(src,"replenish",replenish_cooldown)
|
||||
addtimer(CALLBACK(src,"replenish"),replenish_cooldown)
|
||||
if(injection_cooldown > 0)
|
||||
ready = FALSE
|
||||
addtimer(src,"set_ready",injection_cooldown)
|
||||
addtimer(CALLBACK(src,"set_ready"),injection_cooldown)
|
||||
else
|
||||
playsound(get_turf(src), 'sound/machines/buzz-sigh.ogg', 25, 1)
|
||||
update_icon()
|
||||
@@ -106,7 +106,7 @@
|
||||
if(ready_implants < max_implants)
|
||||
ready_implants++
|
||||
if(ready_implants < max_implants)
|
||||
addtimer(src,"replenish",replenish_cooldown)
|
||||
addtimer(CALLBACK(src,"replenish"),replenish_cooldown)
|
||||
else
|
||||
replenishing = FALSE
|
||||
|
||||
|
||||
@@ -271,7 +271,7 @@
|
||||
impale(user)
|
||||
return
|
||||
if((wielded) && prob(50))
|
||||
addtimer(src, "jedi_spin", 0, TIMER_UNIQUE, user)
|
||||
addtimer(CALLBACK(src, .proc/jedi_spin, user), 0, TIMER_UNIQUE)
|
||||
|
||||
/obj/item/weapon/twohanded/dualsaber/proc/jedi_spin(mob/living/user)
|
||||
for(var/i in list(1,2,4,8,4,2,1,2,4,8,4,2))
|
||||
@@ -339,7 +339,7 @@
|
||||
playsound(loc, hitsound, get_clamped_volume(), 1, -1)
|
||||
add_fingerprint(user)
|
||||
// Light your candles while spinning around the room
|
||||
addtimer(src, "jedi_spin", 0, TIMER_UNIQUE, user)
|
||||
addtimer(CALLBACK(src, .proc/jedi_spin, user), 0, TIMER_UNIQUE)
|
||||
|
||||
/obj/item/weapon/twohanded/dualsaber/green/New()
|
||||
item_color = "green"
|
||||
|
||||
@@ -215,7 +215,7 @@ var/global/image/acid_overlay = image("icon" = 'icons/effects/effects.dmi', "ico
|
||||
being_shocked = 1
|
||||
var/power_bounced = power / 2
|
||||
tesla_zap(src, 3, power_bounced)
|
||||
addtimer(src, "reset_shocked", 10)
|
||||
addtimer(CALLBACK(src, .proc/reset_shocked), 10)
|
||||
|
||||
/obj/proc/reset_shocked()
|
||||
being_shocked = 0
|
||||
|
||||
@@ -222,7 +222,7 @@
|
||||
/obj/structure/alien/egg/New()
|
||||
new /obj/item/clothing/mask/facehugger(src)
|
||||
..()
|
||||
addtimer(src, "Grow", rand(MIN_GROWTH_TIME, MAX_GROWTH_TIME))
|
||||
addtimer(CALLBACK(src, .proc/Grow), rand(MIN_GROWTH_TIME, MAX_GROWTH_TIME))
|
||||
|
||||
/obj/structure/alien/egg/Destroy()
|
||||
remove_from_proximity_list(src, 1)
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
user << "<span class='notice'>The water feels warm and soothing as you touch it. The fountain immediately dries up shortly afterwards.</span>"
|
||||
user.reagents.add_reagent("godblood",20)
|
||||
update_icons()
|
||||
addtimer(src, "update_icons", time_between_uses)
|
||||
addtimer(CALLBACK(src, .proc/update_icons), time_between_uses)
|
||||
|
||||
|
||||
/obj/structure/healingfountain/proc/update_icons()
|
||||
|
||||
@@ -239,7 +239,7 @@
|
||||
var/previouscolor = color
|
||||
color = "#960000"
|
||||
animate(src, color = previouscolor, time = 8)
|
||||
addtimer(src, "update_atom_colour", 8)
|
||||
addtimer(CALLBACK(src, /atom/proc/update_atom_colour), 8)
|
||||
|
||||
/obj/structure/grille/ratvar/ratvar_act()
|
||||
return
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
smoke.start()
|
||||
visible_message("<span class='boldannounce'>The [src] warps in!</span>")
|
||||
playsound(src.loc, 'sound/effects/EMPulse.ogg', 25, 1)
|
||||
addtimer(src, "warpbots", rand(10, 600))
|
||||
addtimer(CALLBACK(src, .proc/warpbots), rand(10, 600))
|
||||
|
||||
/obj/structure/hivebot_beacon/proc/warpbots()
|
||||
icon_state = "def_radar"
|
||||
|
||||
@@ -99,7 +99,7 @@
|
||||
var/mob/living/M = user
|
||||
M.electrocute_act(15,"Energy Barrier", safety=1)
|
||||
shockcd = TRUE
|
||||
addtimer(src, "cooldown", 5)
|
||||
addtimer(CALLBACK(src, .proc/cooldown), 5)
|
||||
|
||||
/obj/structure/holosign/barrier/cyborg/hacked/Bumped(atom/user)
|
||||
if(!shockcd)
|
||||
@@ -107,4 +107,4 @@
|
||||
var/mob/living/M = user
|
||||
M.electrocute_act(15,"Energy Barrier", safety=1)
|
||||
shockcd = TRUE
|
||||
addtimer(src, "cooldown", 5)
|
||||
addtimer(CALLBACK(src, .proc/cooldown), 5)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user