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
+1 -1
View File
@@ -82,7 +82,7 @@
/obj/item/candle/proc/start_flickering()
flickering = TRUE
update_icon(UPDATE_ICON_STATE)
addtimer(CALLBACK(src, .proc/stop_flickering), 4 SECONDS, TIMER_UNIQUE)
addtimer(CALLBACK(src, PROC_REF(stop_flickering)), 4 SECONDS, TIMER_UNIQUE)
/obj/item/candle/proc/stop_flickering()
flickering = FALSE
+1 -1
View File
@@ -43,7 +43,7 @@
icon = 'icons/mob/carp.dmi'
flick("carp_swell", src)
// Wait for animation to end
addtimer(CALLBACK(src, .proc/make_carp), 6)
addtimer(CALLBACK(src, PROC_REF(make_carp)), 6)
/obj/item/toy/carpplushie/dehy_carp/proc/make_carp()
// Make space carp
+1 -1
View File
@@ -98,7 +98,7 @@
if(confirm == "Yes" && (ui_status(user, GLOB.inventory_state) == STATUS_INTERACTIVE)) // And make doubly sure they want to wipe (three total clicks)
msg_admin_attack("[key_name_admin(user)] wiped [key_name_admin(AI)] with \the [src].", ATKLOG_FEW)
add_attack_logs(user, AI, "Wiped with [src].")
INVOKE_ASYNC(src, .proc/wipe_ai)
INVOKE_ASYNC(src, PROC_REF(wipe_ai))
if("radio")
AI.aiRadio.disabledAi = !AI.aiRadio.disabledAi
@@ -125,7 +125,7 @@
if(user.a_intent == INTENT_HELP)
if(!emagged)
user.visible_message("<span class='notice'>[user] scans [target] with [src].</span>", "<span class='notice'>You scan [target]'s radiation levels with [src]...</span>")
addtimer(CALLBACK(src, .proc/scan, target, user), 20, TIMER_UNIQUE) // Let's not have spamming GetAllContents
addtimer(CALLBACK(src, PROC_REF(scan), target, user), 20, TIMER_UNIQUE) // Let's not have spamming GetAllContents
else
user.visible_message("<span class='notice'>[user] scans [target] with [src].</span>", "<span class='danger'>You project [src]'s stored radiation into [target]!</span>")
target.rad_act(radiation_count)
@@ -193,7 +193,7 @@
return
if(listeningTo)
UnregisterSignal(listeningTo, COMSIG_ATOM_RAD_ACT)
RegisterSignal(user, COMSIG_ATOM_RAD_ACT, .proc/redirect_rad_act)
RegisterSignal(user, COMSIG_ATOM_RAD_ACT, PROC_REF(redirect_rad_act))
listeningTo = user
/obj/item/geiger_counter/cyborg/proc/redirect_rad_act(datum/source, amount)
@@ -52,9 +52,9 @@
ADD_TRAIT(H, TRAIT_WAS_BATONNED, user_UID)
cooldown = TRUE
icon_state = "[icon_base]-shock"
addtimer(CALLBACK(src, .proc/allowhit, H, user_UID), attack_cooldown)
addtimer(CALLBACK(src, .proc/short_charge), 1 SECONDS)
addtimer(CALLBACK(src, .proc/recharge), charge_time)
addtimer(CALLBACK(src, PROC_REF(allowhit), H, user_UID), attack_cooldown)
addtimer(CALLBACK(src, PROC_REF(short_charge)), 1 SECONDS)
addtimer(CALLBACK(src, PROC_REF(recharge)), charge_time)
return
if((H.health <= HEALTH_THRESHOLD_CRIT) || (H.undergoing_cardiac_arrest()))
@@ -84,8 +84,8 @@
cooldown = TRUE
icon_state = "[icon_base]-shock"
addtimer(CALLBACK(src, .proc/short_charge), 1 SECONDS)
addtimer(CALLBACK(src, .proc/recharge), charge_time)
addtimer(CALLBACK(src, PROC_REF(short_charge)), 1 SECONDS)
addtimer(CALLBACK(src, PROC_REF(recharge)), charge_time)
else
to_chat(user, "<span class='notice'>[src]'s on board medical scanner indicates that no shock is required.</span>")
@@ -249,7 +249,7 @@
if(!current_area)
return
if(on)
RegisterSignal(current_area, COMSIG_AREA_POWER_CHANGE, .proc/AreaPowerCheck)
RegisterSignal(current_area, COMSIG_AREA_POWER_CHANGE, PROC_REF(AreaPowerCheck))
else
UnregisterSignal(current_area, COMSIG_AREA_POWER_CHANGE)
@@ -313,7 +313,7 @@ GLOBAL_LIST_INIT(default_medbay_channels, list(
universal_speak = TRUE
/mob/living/automatedannouncer/New()
lifetime_timer = addtimer(CALLBACK(src, .proc/autocleanup), 10 SECONDS, TIMER_STOPPABLE)
lifetime_timer = addtimer(CALLBACK(src, PROC_REF(autocleanup)), 10 SECONDS, TIMER_STOPPABLE)
..()
/mob/living/automatedannouncer/Destroy()
@@ -463,7 +463,7 @@ GLOBAL_LIST_INIT(default_medbay_channels, list(
tcm.zlevels = list(position.z)
if(!instant)
// Simulate two seconds of lag
addtimer(CALLBACK(src, .proc/broadcast_callback, tcm), 2 SECONDS)
addtimer(CALLBACK(src, PROC_REF(broadcast_callback), tcm), 2 SECONDS)
else
// Nukeops + Deathsquad headsets are instant and should work the same, whether there is comms or not, on all z levels
for(var/z in 1 to world.maxz)
@@ -591,7 +591,7 @@ GLOBAL_LIST_INIT(default_medbay_channels, list(
/obj/item/radio/emp_act(severity)
on = FALSE
disable_timer++
addtimer(CALLBACK(src, .proc/enable_radio), rand(100, 200))
addtimer(CALLBACK(src, PROC_REF(enable_radio)), rand(100, 200))
if(listening)
visible_message("<span class='warning'>[src] buzzes violently!</span>")
+3 -3
View File
@@ -692,15 +692,15 @@ REAGENT SCANNER
ready = FALSE
printing = TRUE
update_icon()
addtimer(CALLBACK(src, /obj/item/bodyanalyzer/.proc/setReady), scan_cd)
addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/item/bodyanalyzer, setReady)), scan_cd)
addtimer(VARSET_CALLBACK(src, printing, FALSE), 1.4 SECONDS)
addtimer(CALLBACK(src, /atom/.proc/update_icon, UPDATE_OVERLAYS), 1.5 SECONDS)
addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, update_icon), UPDATE_OVERLAYS), 1.5 SECONDS)
else if(iscorgi(M) && M.stat == DEAD)
to_chat(user, "<span class='notice'>You wonder if [M.p_they()] was a good dog. <b>[src] tells you they were the best...</b></span>") // :'(
playsound(loc, 'sound/machines/ping.ogg', 50, 0)
ready = FALSE
update_icon(UPDATE_ICON_STATE)
addtimer(CALLBACK(src, /obj/item/bodyanalyzer/.proc/setReady), scan_cd)
addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/item/bodyanalyzer, setReady)), scan_cd)
time_to_use = world.time + scan_cd
else
to_chat(user, "<span class='notice'>Scanning error detected. Invalid specimen.</span>")
+1 -1
View File
@@ -273,7 +273,7 @@
/obj/item/flag/chameleon/burn()
if(boobytrap)
fire_act()
addtimer(CALLBACK(src, .proc/prime_boobytrap), boobytrap.det_time)
addtimer(CALLBACK(src, PROC_REF(prime_boobytrap)), boobytrap.det_time)
else
..()
+2 -2
View File
@@ -31,7 +31,7 @@
. = ..()
START_PROCESSING(SSprocessing, src)
GLOB.poi_list |= src
RegisterSignal(src, COMSIG_MOVABLE_POST_THROW, .proc/move_gracefully)
RegisterSignal(src, COMSIG_MOVABLE_POST_THROW, PROC_REF(move_gracefully))
update_icon()
/obj/item/his_grace/Destroy()
@@ -56,7 +56,7 @@
/obj/item/his_grace/attack_self(mob/living/user)
if(!awakened)
INVOKE_ASYNC(src, .proc/awaken, user)
INVOKE_ASYNC(src, PROC_REF(awaken), user)
/obj/item/his_grace/attack(mob/living/M, mob/user)
if(awakened && M.stat)
+2 -2
View File
@@ -89,7 +89,7 @@
core = new_core
icon_state = "core_container_loaded"
to_chat(user, "<span class='warning'>Container is sealing...</span>")
addtimer(CALLBACK(src, .proc/seal), 10 SECONDS)
addtimer(CALLBACK(src, PROC_REF(seal)), 10 SECONDS)
/obj/item/nuke_core_container/proc/unload(mob/user)
core.add_fingerprint(user)
@@ -236,7 +236,7 @@
I.item_state = "supermatter_tongs"
icon_state = "supermatter_container_loaded"
to_chat(user, "<span class='warning'>Container is sealing...</span>")
addtimer(CALLBACK(src, .proc/seal), 10 SECONDS)
addtimer(CALLBACK(src, PROC_REF(seal)), 10 SECONDS)
/obj/item/nuke_core_container/supermatter/seal()
if(!QDELETED(sliver))
@@ -13,7 +13,7 @@
if(delay)
// Create a callback with checks that would be called every tick by do_after.
var/datum/callback/tool_check = CALLBACK(src, .proc/tool_check_callback, user, target, amount, extra_checks)
var/datum/callback/tool_check = CALLBACK(src, PROC_REF(tool_check_callback), user, target, amount, extra_checks)
if(ismob(target))
if(!do_mob(user, target, delay, extra_checks = list(tool_check)))
+6 -6
View File
@@ -304,7 +304,7 @@
/obj/effect/decal/cleanable/ash/snappop_phoenix/Initialize(mapload)
. = ..()
addtimer(CALLBACK(src, .proc/respawn), respawn_time)
addtimer(CALLBACK(src, PROC_REF(respawn)), respawn_time)
/obj/effect/decal/cleanable/ash/snappop_phoenix/proc/respawn()
new /obj/item/toy/snappop/phoenix(get_turf(src))
@@ -642,7 +642,7 @@
if(scream_cooldown)
return
scream_cooldown = TRUE //water_act executes the scream_cooldown var, setting it on cooldown.
addtimer(CALLBACK(src, .proc/reset_screamdown), 30 SECONDS) //After 30 seconds the reset_coolodown() proc will execute, resetting the cooldown. Hug interaction is unnaffected by this.
addtimer(CALLBACK(src, PROC_REF(reset_screamdown)), 30 SECONDS) //After 30 seconds the reset_coolodown() proc will execute, resetting the cooldown. Hug interaction is unnaffected by this.
playsound(src, 'sound/goonstation/voice/male_scream.ogg', 10, FALSE)//If the plushie gets wet it screams and "AAAAAH!" appears in chat.
visible_message("<span class='danger'>AAAAAAH!</span>")
if(singed)
@@ -663,7 +663,7 @@
if(hug_cooldown)
return
hug_cooldown = TRUE
addtimer(CALLBACK(src, .proc/reset_hugdown), 5 SECONDS) //Hug interactions only put the plushie on a 5 second cooldown.
addtimer(CALLBACK(src, PROC_REF(reset_hugdown)), 5 SECONDS) //Hug interactions only put the plushie on a 5 second cooldown.
if(singed)//If the plushie is water damaged it'll say Ow instead of talking in wingdings.
visible_message("<span class='danger'>Ow...</span>")
else//If the plushie has not touched water they'll say Greetings in wingdings.
@@ -788,7 +788,7 @@
update_icon(UPDATE_OVERLAYS)
playsound(src, 'sound/effects/pope_entry.ogg', 100)
animate_rumble(src)
addtimer(CALLBACK(src, .proc/stopRumble), 60 SECONDS)
addtimer(CALLBACK(src, PROC_REF(stopRumble)), 60 SECONDS)
else
to_chat(user, "<span class='warning'>[src] is already active!</span>")
@@ -1406,12 +1406,12 @@
/obj/item/toy/figure/xeno/activate(mob/user)
user.visible_message("<span class='notice'>[user] pulls back the string on [src].</span>")
icon_state = "[initial(icon_state)]_used"
addtimer(CALLBACK(src, .proc/hiss), 0.5 SECONDS)
addtimer(CALLBACK(src, PROC_REF(hiss)), 0.5 SECONDS)
/obj/item/toy/figure/xeno/proc/hiss()
atom_say("Hiss!")
playsound(src, get_sfx("hiss"), 50, TRUE)
addtimer(CALLBACK(src, .proc/reset_icon), 4.5 SECONDS)
addtimer(CALLBACK(src, PROC_REF(reset_icon)), 4.5 SECONDS)
/obj/item/toy/figure/xeno/proc/reset_icon()
icon_state = "[initial(icon_state)]"
+2 -2
View File
@@ -199,7 +199,7 @@
"Change Airlock Type" = image(icon = 'icons/obj/interface.dmi', icon_state = "airlocktype")
)
choices -= mode // Get rid of the current mode, clicking it won't do anything.
var/choice = show_radial_menu(user, src, choices, custom_check = CALLBACK(src, .proc/check_menu, user))
var/choice = show_radial_menu(user, src, choices, custom_check = CALLBACK(src, PROC_REF(check_menu), user))
if(!check_menu(user))
return
switch(choice)
@@ -627,7 +627,7 @@
/obj/item/rcd/proc/detonate_pulse()
audible_message("<span class='danger'><b>[src] begins to vibrate and buzz loudly!</b></span>", "<span class='danger'><b>[src] begins vibrating violently!</b></span>")
// 5 seconds to get rid of it
addtimer(CALLBACK(src, .proc/detonate_pulse_explode), 50)
addtimer(CALLBACK(src, PROC_REF(detonate_pulse_explode)), 50)
/**
* Called in `/obj/item/rcd/proc/detonate_pulse()` via callback.
+2 -2
View File
@@ -155,7 +155,7 @@
var/turf/T = get_turf(src)
T.visible_message("<span class='userdanger'>[src] flares briefly.</span>")
addtimer(CALLBACK(src, .proc/effect, user, .), 1 SECONDS)
addtimer(CALLBACK(src, PROC_REF(effect), user, .), 1 SECONDS)
/obj/item/dice/d20/fate/equipped(mob/user, slot)
if(!ishuman(user) || !user.mind || (user.mind in SSticker.mode.wizards))
@@ -358,7 +358,7 @@
else
triggered = TRUE
visible_message("<span class='notice'>You hear a quiet click.</span>")
addtimer(CALLBACK(src, .proc/boom, user, result), 4 SECONDS)
addtimer(CALLBACK(src, PROC_REF(boom), user, result), 4 SECONDS)
/obj/item/dice/d20/e20/proc/boom(mob/user, result)
var/capped = TRUE
@@ -89,7 +89,7 @@
AddComponent(/datum/component/persistent_overlay, image_overlay, target)
if(!nadeassembly)
to_chat(user, "<span class='notice'>You plant the bomb. Timer counting down from [det_time].</span>")
addtimer(CALLBACK(src, .proc/prime), det_time SECONDS)
addtimer(CALLBACK(src, PROC_REF(prime)), det_time SECONDS)
/obj/item/grenade/plastic/suicide_act(mob/user)
message_admins("[key_name_admin(user)]([ADMIN_QUE(user,"?")]) ([ADMIN_FLW(user,"FLW")]) suicided with [src.name] 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)
@@ -227,12 +227,12 @@
var/turf/T = get_step(location, aim_dir)
for(var/turf/simulated/wall/W in range(1, location))
W.thermitemelt(speed = 30)
addtimer(CALLBACK(null, .proc/explosion, T, 0, 0, 2), 3)
addtimer(CALLBACK(smoke, /datum/effect_system/smoke_spread/.proc/start), 3)
addtimer(CALLBACK(null, GLOBAL_PROC_REF(explosion), T, 0, 0, 2), 3)
addtimer(CALLBACK(smoke, TYPE_PROC_REF(/datum/effect_system/smoke_spread, start)), 3)
else
var/turf/T = get_step(location, aim_dir)
addtimer(CALLBACK(null, .proc/explosion, T, 0, 0, 2), 3)
addtimer(CALLBACK(smoke, /datum/effect_system/smoke_spread/.proc/start), 3)
addtimer(CALLBACK(null, GLOBAL_PROC_REF(explosion), T, 0, 0, 2), 3)
addtimer(CALLBACK(smoke, TYPE_PROC_REF(/datum/effect_system/smoke_spread, start)), 3)
if(isliving(target))
var/mob/living/M = target
@@ -430,7 +430,7 @@
message_admins("grenade primed by an assembly, attached by [key_name_admin(M)] and last touched by [key_name_admin(last)] ([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(CALLBACK(src, .proc/prime), det_time)
addtimer(CALLBACK(src, PROC_REF(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])")
@@ -54,7 +54,7 @@
if(iscarbon(user))
var/mob/living/carbon/C = user
C.throw_mode_on()
addtimer(CALLBACK(src, .proc/prime), det_time)
addtimer(CALLBACK(src, PROC_REF(prime)), det_time)
/obj/item/grenade/iedcasing/prime() //Blowing that can up
update_mob()
@@ -73,7 +73,7 @@
variant_names[initial(rod.name)] = rod
variant_icons += list(initial(rod.name) = image(icon = initial(rod.icon), icon_state = initial(rod.icon_state)))
var/mob/living/carbon/human/H = user
var/choice = show_radial_menu(H, src, variant_icons, null, 40, CALLBACK(src, .proc/radial_check, H), TRUE)
var/choice = show_radial_menu(H, src, variant_icons, null, 40, CALLBACK(src, PROC_REF(radial_check), H), TRUE)
if(!choice || !radial_check(H))
return
@@ -105,7 +105,7 @@
CRASH("User was given an bio-chip for an unintentional emote that they can't use.")
LAZYADD(trigger_emotes, emote_key)
RegisterSignal(user, COMSIG_MOB_EMOTED(emote_key), .proc/on_emote)
RegisterSignal(user, COMSIG_MOB_EMOTED(emote_key), PROC_REF(on_emote))
/obj/item/implant/proc/on_emote(mob/living/user, datum/emote/fired_emote, key, emote_type, message, intentional)
SIGNAL_HANDLER
@@ -190,7 +190,7 @@
var/datum/action/A = X
A.Grant(source)
if(trigger_causes & (BIOCHIP_TRIGGER_DEATH_ONCE | BIOCHIP_TRIGGER_DEATH_ANY))
RegisterSignal(source, COMSIG_MOB_DEATH, .proc/on_death)
RegisterSignal(source, COMSIG_MOB_DEATH, PROC_REF(on_death))
if(ishuman(source))
var/mob/living/carbon/human/H = source
H.sec_hud_set_implants()
@@ -9,7 +9,7 @@
/obj/item/implant/emp/activate()
uses--
INVOKE_ASYNC(GLOBAL_PROC, .proc/empulse, get_turf(imp_in), 3, 5, 1)
INVOKE_ASYNC(GLOBAL_PROC, GLOBAL_PROC_REF(empulse), get_turf(imp_in), 3, 5, 1)
if(!uses)
qdel(src)
+5 -5
View File
@@ -136,7 +136,7 @@
/obj/item/restraints/legcuffs/beartrap/energy/New()
..()
addtimer(CALLBACK(src, .proc/dissipate), 100)
addtimer(CALLBACK(src, PROC_REF(dissipate)), 100)
/obj/item/restraints/legcuffs/beartrap/energy/proc/dissipate()
if(!ismob(loc))
@@ -174,12 +174,12 @@
/obj/item/restraints/legcuffs/bola/Initialize(mapload)
. = ..()
RegisterSignal(src, COMSIG_CARBON_TOGGLE_THROW, .proc/spin_up_wrapper)
RegisterSignal(src, COMSIG_CARBON_TOGGLE_THROW, PROC_REF(spin_up_wrapper))
/obj/item/restraints/legcuffs/bola/proc/spin_up_wrapper(datum/source, throw_mode_state) // so that signal handler works
SIGNAL_HANDLER
if(throw_mode_state) // if we actually turned throw mode on
INVOKE_ASYNC(src, .proc/spin_up)
INVOKE_ASYNC(src, PROC_REF(spin_up))
/obj/item/restraints/legcuffs/bola/proc/spin_up()
if(spinning)
@@ -187,13 +187,13 @@
var/mob/living/L = loc // can only be called if the mob is holding the bola.
var/range_increment = round(max_range / max_spins)
var/speed_increment = round(max_speed / max_spins)
RegisterSignal(L, COMSIG_CARBON_SWAP_HANDS, .proc/reset_values, override = TRUE)
RegisterSignal(L, COMSIG_CARBON_SWAP_HANDS, PROC_REF(reset_values), override = TRUE)
item_state = "[initial(item_state)]_spin"
L.update_inv_r_hand()
L.update_inv_l_hand()
spinning = TRUE
for(var/i in 1 to max_spins)
if(!do_mob(L, L, 1 SECONDS, only_use_extra_checks = TRUE, extra_checks = list(CALLBACK(src, .proc/can_spin_check, L))))
if(!do_mob(L, L, 1 SECONDS, only_use_extra_checks = TRUE, extra_checks = list(CALLBACK(src, PROC_REF(can_spin_check), L))))
reset_values(L)
break
throw_range += range_increment
@@ -204,7 +204,7 @@
if(!target.electrocute_act(voltage, flags = SHOCK_TESLA)) // if it fails to shock someone, break the chain
return
protected_mobs += target
addtimer(CALLBACK(src, .proc/arc, target, voltage, protected_mobs), 2.5 SECONDS)
addtimer(CALLBACK(src, PROC_REF(arc), target, voltage, protected_mobs), 2.5 SECONDS)
/datum/enchantment/lightning/proc/arc(mob/living/source, voltage, protected_mobs)
voltage = voltage - 4
@@ -225,7 +225,7 @@
/datum/enchantment/fire/on_gain(obj/item/melee/spellblade/S, mob/living/user)
..()
RegisterSignal(S, list(COMSIG_ITEM_PICKUP, COMSIG_ITEM_DROPPED), .proc/toggle_traits)
RegisterSignal(S, list(COMSIG_ITEM_PICKUP, COMSIG_ITEM_DROPPED), PROC_REF(toggle_traits))
if(user)
toggle_traits(S, user)
+1 -1
View File
@@ -230,7 +230,7 @@
RPD_MENU_DELETE = image(icon = 'icons/obj/interface.dmi', icon_state = "rpd_delete"),
"UI" = image(icon = 'icons/obj/interface.dmi', icon_state = "ui_interact")
)
var/selected_mode = show_radial_menu(user, src, choices, custom_check = CALLBACK(src, .proc/check_menu, user))
var/selected_mode = show_radial_menu(user, src, choices, custom_check = CALLBACK(src, PROC_REF(check_menu), user))
if(!check_menu(user))
return
if(selected_mode == "UI")
@@ -145,7 +145,7 @@
var/image/bible_image = image('icons/obj/storage.dmi', icon_state = icons["state"])
skins[I] = bible_image
var/choice = show_radial_menu(user, src, skins, null, 40, CALLBACK(src, .proc/radial_check, user), TRUE)
var/choice = show_radial_menu(user, src, skins, null, 40, CALLBACK(src, PROC_REF(radial_check), user), TRUE)
if(!choice || !radial_check(user))
return
var/choice_icons = bible_variants[choice]
+1 -1
View File
@@ -197,7 +197,7 @@
H.adjustStaminaLoss(stam_damage)
ADD_TRAIT(L, TRAIT_WAS_BATONNED, user_UID) // so one person cannot hit the same person with two separate batons
addtimer(CALLBACK(src, .proc/baton_knockdown, L, user_UID, knockdown_duration), knockdown_delay)
addtimer(CALLBACK(src, PROC_REF(baton_knockdown), L, user_UID, knockdown_duration), knockdown_delay)
SEND_SIGNAL(L, COMSIG_LIVING_MINOR_SHOCK, 33)
+2 -2
View File
@@ -319,7 +319,7 @@
user.take_organ_damage(20, 25)
return
if((wielded) && prob(50))
INVOKE_ASYNC(src, .proc/jedi_spin, user)
INVOKE_ASYNC(src, PROC_REF(jedi_spin), user)
/obj/item/twohanded/dualsaber/proc/jedi_spin(mob/living/user)
for(var/i in list(NORTH, SOUTH, EAST, WEST, EAST, SOUTH, NORTH, SOUTH, EAST, WEST, EAST, SOUTH))
@@ -931,7 +931,7 @@
user.put_in_hands(W)
on_cooldown = TRUE
flags |= NODROP
addtimer(CALLBACK(src, .proc/reboot), 2 MINUTES)
addtimer(CALLBACK(src, PROC_REF(reboot)), 2 MINUTES)
do_sparks(rand(1,6), 1, loc)
/obj/item/clothing/gloves/color/black/pyro_claws/attackby(obj/item/I, mob/user, params)