use SIGNAL_HANDLER REEEEEE (#59242)

makes as many procs as i can find use the SIGNAL_HANDLER define which i assumed they all already did
This commit is contained in:
Kylerace
2021-05-24 12:28:02 -07:00
committed by GitHub
parent 965a8de99c
commit e13fe75590
121 changed files with 199 additions and 34 deletions
+4
View File
@@ -64,6 +64,7 @@ SUBSYSTEM_DEF(eigenstates)
///removes an object reference from the master list
/datum/controller/subsystem/eigenstates/proc/remove_eigen_entry(atom/entry)
SIGNAL_HANDLER
var/id = eigen_id[entry]
eigen_targets[id] -= entry
eigen_id -= entry
@@ -83,6 +84,8 @@ SUBSYSTEM_DEF(eigenstates)
///Finds the object within the master list, then sends the thing to the object's location
/datum/controller/subsystem/eigenstates/proc/use_eigenlinked_atom(atom/object_sent_from, atom/movable/thing_to_send)
SIGNAL_HANDLER
var/id = eigen_id[object_sent_from]
if(!id)
stack_trace("[object_sent_from] attempted to eigenlink to something that didn't have a valid id!")
@@ -110,5 +113,6 @@ SUBSYSTEM_DEF(eigenstates)
///Prevents tool use on the item
/datum/controller/subsystem/eigenstates/proc/tool_interact(atom/source, mob/user, obj/item/item)
SIGNAL_HANDLER
to_chat(user, "<span class='notice'>The unstable nature of [source] makes it impossible to use [item] on [source.p_them()]!</span>")
return COMPONENT_BLOCK_TOOL_ATTACK
+1
View File
@@ -167,6 +167,7 @@ SUBSYSTEM_DEF(statpanels)
mc_data_encoded = url_encode(json_encode(mc_data))
/atom/proc/remove_from_cache()
SIGNAL_HANDLER
SSstatpanels.cached_images -= REF(src)
/// verbs that send information from the browser UI
+2
View File
@@ -188,12 +188,14 @@ have ways of interacting with a specific atom and control it. They posses a blac
current_behavior.finish_action(src, FALSE)
/datum/ai_controller/proc/on_sentience_gained()
SIGNAL_HANDLER
UnregisterSignal(pawn, COMSIG_MOB_LOGIN)
if(!continue_processing_when_client)
set_ai_status(AI_STATUS_OFF) //Can't do anything while player is connected
RegisterSignal(pawn, COMSIG_MOB_LOGOUT, .proc/on_sentience_lost)
/datum/ai_controller/proc/on_sentience_lost()
SIGNAL_HANDLER
UnregisterSignal(pawn, COMSIG_MOB_LOGOUT)
set_ai_status(AI_STATUS_ON) //Can't do anything while player is connected
RegisterSignal(pawn, COMSIG_MOB_LOGIN, .proc/on_sentience_gained)
@@ -49,6 +49,7 @@
///Signal response for when the item is picked up; stops listening for follow up equips, just waits for a drop.
/datum/ai_controller/haunted/proc/on_equip(datum/source, mob/equipper, slot)
SIGNAL_HANDLER
UnregisterSignal(pawn, COMSIG_ITEM_EQUIPPED)
var/list/hauntee_list = blackboard[BB_TO_HAUNT_LIST]
hauntee_list[equipper] = hauntee_list[equipper] + HAUNTED_ITEM_AGGRO_ADDITION //You have now become one of the victims of the HAAAAUNTTIIIINNGGG OOOOOO~~~
@@ -57,5 +58,6 @@
///Flip it so we listen for equip again but not for drop.
/datum/ai_controller/haunted/proc/on_dropped(datum/source, mob/user)
SIGNAL_HANDLER
RegisterSignal(pawn, COMSIG_ITEM_EQUIPPED, .proc/on_equip)
UnregisterSignal(pawn, COMSIG_ITEM_DROPPED)
+2 -1
View File
@@ -59,9 +59,10 @@
* direction: in what direction mover moved from.
*/
/datum/beam/proc/redrawing(atom/movable/mover, atom/oldloc, direction)
SIGNAL_HANDLER
if(origin && target && get_dist(origin,target)<max_distance && origin.z == target.z)
QDEL_LIST(elements)
Draw()
INVOKE_ASYNC(src, .proc/Draw)
else
qdel(src)
@@ -78,6 +78,7 @@
speech_args[SPEECH_MESSAGE] = ""
/datum/brain_trauma/special/obsessed/proc/on_hug(mob/living/hugger, mob/living/hugged)
SIGNAL_HANDLER
if(hugged == obsession)
obsession_hug_count++
@@ -7,4 +7,5 @@
/// Called when parent is added to the container.
/datum/component/container_item/proc/try_attach(datum/source, atom/container, mob/user)
SIGNAL_HANDLER
return FALSE
@@ -71,6 +71,7 @@
flavour?.add_flavour(arglist(flavour_args))
/datum/component/ice_cream_holder/proc/on_update_name(atom/source, updates)
SIGNAL_HANDLER
var/obj/obj = source
if(istype(obj) && obj.renamedByPlayer) //Renamed by the player.
return
@@ -86,6 +87,7 @@
source.name = "[english_list(unique_list)] [name_to_use]"
/datum/component/ice_cream_holder/proc/on_update_desc(atom/source, updates)
SIGNAL_HANDLER
var/obj/obj = source
if(istype(obj) && obj.renamedByPlayer) //Renamed by the player.
return
@@ -103,6 +105,7 @@
source.desc = "A delicious [initial(source.name)] filled with scoops of [english_list(scoops)] icecream. That's as many as [scoops_len] scoops!"
/datum/component/ice_cream_holder/proc/on_examine_more(atom/source, mob/mob, list/examine_list)
SIGNAL_HANDLER
var/scoops_len = length(scoops)
if(scoops_len == 1 || length(uniqueList(scoops)) == 1) /// Only one flavour.
var/key = scoops[1]
@@ -115,6 +118,7 @@
examine_list += "[source.p_theyre(TRUE)] filled with scoops of [english_list(scoops)] icecream. That's as many as [scoops_len] scoops!"
/datum/component/ice_cream_holder/proc/on_update_overlays(atom/source, list/new_overlays)
SIGNAL_HANDLER
if(!scoops)
return
var/added_offset = 0
@@ -129,6 +133,7 @@
/// Attack the ice cream vat to get some ice cream. This will change as new ways of getting ice cream are added.
/datum/component/ice_cream_holder/proc/on_item_attack_obj(obj/item/source, obj/target, mob/user)
SIGNAL_HANDLER
if(!istype(target, /obj/machinery/icecream_vat))
return
var/obj/machinery/icecream_vat/dispenser = target
@@ -138,7 +143,7 @@
if(flavour.add_flavour(src, dispenser.beaker?.reagents.total_volume ? dispenser.beaker.reagents : null))
dispenser.visible_message("[icon2html(dispenser, viewers(source))] <span class='info'>[user] scoops delicious [dispenser.selected_flavour] ice cream into [source].</span>")
dispenser.product_types[dispenser.selected_flavour]--
dispenser.updateDialog()
INVOKE_ASYNC(dispenser, /obj/machinery/icecream_vat.proc/updateDialog)
else
to_chat(user, "<span class='warning'>There is not enough ice cream left!</span>")
else
+2 -1
View File
@@ -97,6 +97,7 @@
autofire_on(source.client)
/datum/component/automatic_fire/proc/on_mouse_down(client/source, atom/_target, turf/location, control, params)
SIGNAL_HANDLER
var/list/modifiers = params2list(params) //If they're shift+clicking, for example, let's not have them accidentally shoot.
if(LAZYACCESS(modifiers, SHIFT_CLICK))
@@ -136,7 +137,7 @@
target = _target
target_loc = get_turf(target)
mouse_parameters = params
start_autofiring()
INVOKE_ASYNC(src, .proc/start_autofiring)
//Dakka-dakka
+1
View File
@@ -16,6 +16,7 @@
limiting_spam = FALSE
/datum/component/honkspam/proc/interact(mob/user)
SIGNAL_HANDLER
if(!limiting_spam)
limiting_spam = TRUE
var/obj/item/parent_item = parent
+1
View File
@@ -88,6 +88,7 @@
try_infect(target, hit_zone)
/datum/component/infective/proc/try_infect_attack(datum/source, mob/living/target, mob/living/user)
SIGNAL_HANDLER
if(!iscarbon(target)) //this case will be handled by try_infect_attack_zone
try_infect(target)
try_infect(user, BODY_ZONE_L_ARM)
+1
View File
@@ -151,6 +151,7 @@
end_orbit(orbiter)
/datum/component/orbiter/proc/orbiter_glide_size_update(datum/source, target)
SIGNAL_HANDLER
for(var/orbiter in orbiter_list)
var/atom/movable/movable_orbiter = orbiter
movable_orbiter.glide_size = target
+1
View File
@@ -260,6 +260,7 @@
///One of our pellets disappeared due to hitting their max range (or just somehow got qdel'd), remove it from our list and check if we're done (terminated == num_pellets)
/datum/component/pellet_cloud/proc/pellet_range(obj/projectile/P)
SIGNAL_HANDLER
pellets -= P
terminated++
UnregisterSignal(P, list(COMSIG_PARENT_QDELETING, COMSIG_PROJECTILE_RANGE_OUT, COMSIG_PROJECTILE_SELF_ON_HIT))
@@ -216,6 +216,7 @@
///settle wherever we are, and start behaving like a piece of plumbing
/datum/component/plumbing/proc/enable(obj/object, datum/component/component)
SIGNAL_HANDLER
if(active || (component && component != src))
UnregisterSignal(parent, list(COMSIG_COMPONENT_ADDED))
return
@@ -302,6 +303,7 @@
AM.update_appearance()
/datum/component/plumbing/proc/change_ducting_layer(obj/caller, obj/O, new_layer = DUCT_LAYER_DEFAULT)
SIGNAL_HANDLER
ducting_layer = new_layer
if(ismovable(parent))
+1
View File
@@ -36,4 +36,5 @@
return TRUE
/datum/component/pricetag/proc/return_ratio()
SIGNAL_HANDLER
return default_profit_ratio
@@ -115,6 +115,7 @@
/// If we're a cyborg or animal and we spin, we yeet whoever's on us off us
/datum/component/riding/creature/proc/check_emote(mob/living/user, datum/emote/emote)
SIGNAL_HANDLER
if((!iscyborg(user) && !isanimal(user)) || !istype(emote, /datum/emote/spin))
return
+1
View File
@@ -290,6 +290,7 @@
/// Fired when the singularity is fired at with the BSA and deletes it
/datum/component/singularity/proc/bluespace_reaction()
SIGNAL_HANDLER
if (!bsa_targetable)
return
+1
View File
@@ -30,6 +30,7 @@
If amount_left is equal to -1, the component is infinite and will never delete itself.
*/
/datum/component/sound_player/proc/play_sound()
SIGNAL_HANDLER
playsound(parent, pickweight(sounds), volume, TRUE)
switch(amount_left)
if(-1)
@@ -92,12 +92,14 @@
return FALSE
/datum/component/storage/concrete/proc/on_contents_del(datum/source, atom/A)
SIGNAL_HANDLER
var/atom/real_location = parent
if(A in real_location)
usr = null
remove_from_storage(A, null)
/datum/component/storage/concrete/proc/on_deconstruct(datum/source, disassembled)
SIGNAL_HANDLER
if(drop_all_on_deconstruct)
do_quick_empty()
+7 -1
View File
@@ -42,6 +42,7 @@ This component is used in vat growing to swab for microbiological samples which
///Changes examine based on your sample
/datum/component/swabbing/proc/examine(datum/source, mob/user, list/examine_list)
SIGNAL_HANDLER
if(LAZYLEN(swabbed_items))
examine_list += "<span class='nicegreen'>There is a microbiological sample on [parent]!</span>"
examine_list += "<span class='notice'>You can see the following micro-organisms:</span>\n"
@@ -53,7 +54,7 @@ This component is used in vat growing to swab for microbiological samples which
///Ran when you attack an object, tries to get a swab of the object. if a swabbable surface is found it will run behavior and hopefully
/datum/component/swabbing/proc/try_to_swab(datum/source, atom/target, mob/user, params)
set waitfor = FALSE //This prevents do_after() from making this proc not return it's value.
SIGNAL_HANDLER
if(istype(target, /obj/structure/table))//help how do i do this less shitty
return NONE //idk bro pls send help
@@ -96,6 +97,9 @@ This component is used in vat growing to swab for microbiological samples which
return
to_chat(user, "<span class='notice'>You start swabbing [target] for samples!</span>")
INVOKE_ASYNC(src, .proc/async_try_to_swab, target, user)
/datum/component/swabbing/proc/async_try_to_swab(atom/target, mob/user)
if(!do_after(user, 3 SECONDS, target)) // Start swabbing boi
return
@@ -121,8 +125,10 @@ This component is used in vat growing to swab for microbiological samples which
///Handle any special overlay cases on the item itself
/datum/component/swabbing/proc/handle_overlays(datum/source, list/overlays)
SIGNAL_HANDLER
update_overlays?.Invoke(overlays, swabbed_items)
///Handle any special icon cases on the item itself
/datum/component/swabbing/proc/handle_icon(datum/source)
SIGNAL_HANDLER
update_icons?.Invoke(swabbed_items)
+1
View File
@@ -254,6 +254,7 @@
* on_attack triggers on attack with the parent item
*/
/datum/component/two_handed/proc/on_attack(obj/item/source, mob/living/target, mob/living/user)
SIGNAL_HANDLER
if(wielded && attacksound)
var/obj/item/parent_item = parent
playsound(parent_item.loc, attacksound, 50, TRUE)
+1
View File
@@ -21,6 +21,7 @@
REMOVE_TRAIT(target, TRAIT_DRYABLE, ELEMENT_TRAIT)
/datum/element/dryable/proc/finish_drying(atom/source)
SIGNAL_HANDLER
var/atom/dried_atom = source
if(dry_result == dried_atom.type)//if the dried type is the same as our currrent state, don't bother creating a whole new item, just re-color it.
var/atom/movable/resulting_atom = dried_atom
+1
View File
@@ -27,6 +27,7 @@
///Updates old and new turf loc opacities.
/datum/element/light_blocking/proc/on_target_move(atom/movable/source, atom/OldLoc, Dir, Forced = FALSE)
SIGNAL_HANDLER
if(isturf(OldLoc))
var/turf/old_turf = OldLoc
old_turf.remove_opacity_source(source)
+1
View File
@@ -35,6 +35,7 @@
/// Handles beginning processing objects.
/datum/element/obj_regen/proc/on_take_damage(obj/target, damage_amt)
SIGNAL_HANDLER
if(!damage_amt)
return
if(!length(processing))
+1
View File
@@ -17,6 +17,7 @@
. = ..()
/datum/element/skittish/proc/Bump(mob/living/scooby, atom/target)
SIGNAL_HANDLER
if(scooby.stat != CONSCIOUS || scooby.m_intent != MOVE_INTENT_RUN)
return
+2
View File
@@ -305,6 +305,7 @@
/// Something fishy is going on here...
/datum/status_effect/high_fiving/proc/dropped_slap(obj/item/source)
SIGNAL_HANDLER
slap_item = null
//this effect gives the user an alert they can use to surrender quickly
@@ -525,6 +526,7 @@
current_cycle++
/datum/status_effect/eigenstasium/proc/remove_clone_from_var()
SIGNAL_HANDLER
UnregisterSignal(alt_clone, COMSIG_PARENT_QDELETING)
/datum/status_effect/eigenstasium/on_remove()
+2
View File
@@ -176,6 +176,7 @@
*/
/datum/wound/blunt/proc/update_inefficiencies()
SIGNAL_HANDLER
if(limb.body_zone in list(BODY_ZONE_L_LEG, BODY_ZONE_R_LEG))
if(limb.current_gauze)
limp_slowdown = initial(limp_slowdown) * limb.current_gauze.splint_factor
@@ -222,6 +223,7 @@
/// Getting smushed in an airlock/firelock is a last-ditch attempt to try relocating your limb
/datum/wound/blunt/moderate/proc/door_crush()
SIGNAL_HANDLER
if(prob(33))
victim.visible_message("<span class='danger'>[victim]'s dislocated [limb.name] pops back into place!</span>", "<span class='userdanger'>Your dislocated [limb.name] pops back into place! Ow!</span>")
remove_wound()
+1
View File
@@ -472,6 +472,7 @@
///Check if this atoms eye is still alive (probably)
/atom/proc/check_eye(mob/user)
SIGNAL_HANDLER
return
/atom/proc/Bumped(atom/movable/AM)
@@ -2,6 +2,7 @@
RegisterSignal(SSdcs, COMSIG_GLOB_PRE_RANDOM_EVENT, .proc/on_pre_random_event)
/datum/game_mode/dynamic/proc/on_pre_random_event(datum/source, datum/round_event_control/round_event_control)
SIGNAL_HANDLER
if (!round_event_control.dynamic_should_hijack)
return
+1
View File
@@ -49,6 +49,7 @@
///Used to clean up variables after the card has been removed, unregisters the removal signal, sets inserted ID to null, and updates the icon.
/obj/machinery/accounting/proc/remove_card()
SIGNAL_HANDLER
UnregisterSignal(inserted_id, COMSIG_PARENT_QDELETING)
inserted_id = null
update_appearance()
+1
View File
@@ -782,6 +782,7 @@
update_label()
/obj/item/card/id/advanced/proc/on_holding_card_slot_moved(obj/item/computer_hardware/card_slot/source, atom/old_loc, dir, forced)
SIGNAL_HANDLER
if(istype(old_loc, /obj/item/modular_computer/tablet))
UnregisterSignal(old_loc, COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED)
+2 -2
View File
@@ -35,11 +35,11 @@
qdel(PA)
else
PA = new(src)
user.put_in_hands(PA)
INVOKE_ASYNC(user, /mob.proc/put_in_hands, PA)
/obj/item/chrono_eraser/item_action_slot_check(slot, mob/user)
if(slot == ITEM_SLOT_BACK)
return 1
return TRUE
/obj/item/gun/energy/chrono_gun
name = "T.E.D. Projection Apparatus"
+2
View File
@@ -23,6 +23,7 @@
RegisterSignal(src, COMSIG_COMPONENT_NTNET_ACK, .proc/good_signal)
/obj/item/door_remote/proc/bad_signal(datum/source, datum/netdata/data, error_code)
SIGNAL_HANDLER
if(QDELETED(data.user))
return // can't send a message to a missing user
if(error_code == NETWORK_ERROR_UNAUTHORIZED)
@@ -32,6 +33,7 @@
/obj/item/door_remote/proc/good_signal(datum/source, datum/netdata/data, error_code)
SIGNAL_HANDLER
if(QDELETED(data.user))
return
var/toggled = data.data["data"]
+1 -1
View File
@@ -83,7 +83,7 @@
update_power()
/obj/item/defibrillator/ui_action_click()
toggle_paddles()
INVOKE_ASYNC(src, .proc/toggle_paddles)
//ATTACK HAND IGNORING PARENT RETURN VALUE
/obj/item/defibrillator/attack_hand(mob/user, list/modifiers)
@@ -1262,6 +1262,7 @@ GLOBAL_LIST_EMPTY(PDAs)
. += P
/obj/item/pda/proc/pda_no_detonate()
SIGNAL_HANDLER
return COMPONENT_PDA_NO_DETONATE
#undef PDA_SCANNER_NONE
@@ -37,7 +37,7 @@
/obj/item/geiger_counter/Destroy()
STOP_PROCESSING(SSobj, src)
QDEL_NULL(soundloop)
return ..()
/obj/item/geiger_counter/process(delta_time)
@@ -211,6 +211,7 @@
listeningTo = user
/obj/item/geiger_counter/cyborg/proc/redirect_rad_act(datum/source, amount)
SIGNAL_HANDLER
rad_act(amount)
/obj/item/geiger_counter/cyborg/dropped()
@@ -29,6 +29,7 @@
UnregisterSignal(M, COMSIG_MOB_SAY)
/obj/item/megaphone/proc/handle_speech(mob/living/carbon/user, list/speech_args)
SIGNAL_HANDLER
if (user.get_active_held_item() == src)
if(spamcheck > world.time)
to_chat(user, "<span class='warning'>\The [src] needs to recharge!</span>")
@@ -120,6 +120,7 @@
* * source - the area that just had a power change.
*/
/obj/item/radio/intercom/proc/AreaPowerCheck(datum/source)
SIGNAL_HANDLER
var/area/current_area = get_area(src)
if(!current_area)
on = FALSE
+1
View File
@@ -264,6 +264,7 @@
F.default_ignite(location,release_amount)
/obj/item/flamethrower/proc/instant_refill()
SIGNAL_HANDLER
if(ptank)
var/datum/gas_mixture/tank_mix = ptank.return_air()
tank_mix.assert_gas(/datum/gas/plasma)
+1
View File
@@ -192,6 +192,7 @@
///Prevents grilling burnt shit from well, burning.
/obj/item/food/badrecipe/proc/OnGrill()
SIGNAL_HANDLER
return COMPONENT_HANDLED_GRILLING
/obj/item/food/carrotfries
+1 -1
View File
@@ -18,7 +18,7 @@
SEND_SIGNAL(src, COMSIG_IMPLANT_ACTIVATED)
/obj/item/implant/ui_action_click()
activate("action_button")
INVOKE_ASYNC(src, .proc/activate, "action_button")
/obj/item/implant/proc/can_be_implanted_in(mob/living/target)
if(issilicon(target))
@@ -20,6 +20,7 @@
* the component, so delete itself.
*/
/obj/item/implant/uplink/proc/_component_removal(datum/source, datum/component/component)
SIGNAL_HANDLER
if(istype(component, /datum/component/uplink))
qdel(src)
@@ -502,6 +502,7 @@
RegisterSignal(defib_instance, list(COMSIG_PARENT_QDELETING, COMSIG_MOVABLE_MOVED), .proc/on_defib_instance_qdel_or_moved)
/obj/item/borg/upgrade/defib/backpack/proc/on_defib_instance_qdel_or_moved(obj/item/defibrillator/D)
SIGNAL_HANDLER
defib_instance = null
qdel(src)
+1
View File
@@ -144,6 +144,7 @@
listeningTo = null
/obj/item/storage/bag/ore/proc/Pickup_ores(mob/living/user)
SIGNAL_HANDLER
var/show_message = FALSE
var/obj/structure/ore_box/box
var/turf/tile = user.loc
@@ -591,6 +591,7 @@
///freezes the organ and loops bodyparts like heads
/obj/item/storage/organbox/proc/freeze(datum/source, obj/item/I)
SIGNAL_HANDLER
if(isorgan(I))
var/obj/item/organ/organ = I
organ.organ_flags |= ORGAN_FROZEN
@@ -604,6 +605,7 @@
///unfreezes the organ and loops bodyparts like heads
/obj/item/storage/organbox/proc/unfreeze(datum/source, obj/item/I)
SIGNAL_HANDLER
if(isorgan(I))
var/obj/item/organ/organ = I
organ.organ_flags &= ~ORGAN_FROZEN
+3 -1
View File
@@ -74,10 +74,11 @@
ion_trail.stop()
UnregisterSignal(user, COMSIG_MOVABLE_MOVED)
UnregisterSignal(user, COMSIG_MOVABLE_PRE_MOVE)
user.remove_movespeed_modifier(/datum/movespeed_modifier/jetpack/fullspeed)
/obj/item/tank/jetpack/proc/move_react(mob/user)
SIGNAL_HANDLER
if(!on)//If jet dont work, it dont work
return
if(!user || !user.client)//Don't allow jet self using
@@ -94,6 +95,7 @@
allow_thrust(0.01, user)
/obj/item/tank/jetpack/proc/pre_move_react(mob/user)
SIGNAL_HANDLER
ion_trail.oldposition = get_turf(src)
/obj/item/tank/jetpack/proc/allow_thrust(num, mob/living/user)
+1
View File
@@ -190,6 +190,7 @@
ui_interact(user)
/mob/proc/unset_machine()
SIGNAL_HANDLER
if(!machine)
return
UnregisterSignal(machine, COMSIG_PARENT_QDELETING)
@@ -142,6 +142,7 @@
* Cleans up behavior for when the attached item is deleted or removed.
*/
/obj/structure/training_machine/proc/on_attached_delete()
SIGNAL_HANDLER
UnregisterSignal(attached_item, COMSIG_PARENT_QDELETING)
vis_contents -= attached_item
attached_item = null
@@ -12,6 +12,7 @@
RegisterSignal(owner, COMSIG_MOB_ALLOWED, .proc/free_access)
/obj/item/organ/heart/gland/access/proc/free_access(datum/source, obj/O)
SIGNAL_HANDLER
return TRUE
/obj/item/organ/heart/gland/access/Remove(mob/living/carbon/M, special = 0)
@@ -97,6 +97,7 @@
///What happens to the heretic once he dies, used to remove any custom perks
/datum/antagonist/heretic/proc/on_death()
SIGNAL_HANDLER
for(var/knowledge_index in researched_knowledge)
var/datum/eldritch_knowledge/knowledge = researched_knowledge[knowledge_index]
@@ -133,6 +133,7 @@
* Fixes any bugs that are caused by late Generate() or exchanging clients
*/
/datum/reality_smash_tracker/proc/ReworkNetwork()
SIGNAL_HANDLER
listclearnulls(smashes)
for(var/mind in targets)
if(isnull(mind))
@@ -67,6 +67,7 @@
ghouls += humie
/datum/eldritch_knowledge/flesh_ghoul/proc/remove_ghoul(datum/source)
SIGNAL_HANDLER
var/mob/living/carbon/human/humie = source
ghouls -= humie
humie.mind.remove_antag_datum(/datum/antagonist/heretic_monster)
@@ -113,6 +113,7 @@
src.user = user
/obj/item/borg_chameleon/proc/disrupt(mob/living/silicon/robot/user)
SIGNAL_HANDLER
if(active)
to_chat(user, "<span class='danger'>Your chameleon field deactivates.</span>")
deactivate(user)
@@ -71,6 +71,7 @@
new /obj/effect/pod_landingzone(empty_pod_turf, empty_pod)
/datum/syndicate_contract/proc/enter_check(datum/source, sent_mob)
SIGNAL_HANDLER
if (istype(source, /obj/structure/closet/supplypod/extractionpod))
if (isliving(sent_mob))
var/mob/living/M = sent_mob
@@ -120,7 +121,7 @@
target.dna.species.give_important_for_life(target)
// After pod is sent we start the victim narrative/heal.
handleVictimExperience(M)
INVOKE_ASYNC(src, .proc/handleVictimExperience, M)
// This is slightly delayed because of the sleep calls above to handle the narrative.
// We don't want to tell the station instantly.
@@ -136,17 +137,20 @@
priority_announce("One of your crew was captured by a rival organisation - we've needed to pay their ransom to bring them back. \
As is policy we've taken a portion of the station's funds to offset the overall cost.", null, null, null, "Nanotrasen Asset Protection")
sleep(30)
INVOKE_ASYNC(src, .proc/finish_enter)
// Pay contractor their portion of ransom
if (status == CONTRACT_STATUS_COMPLETE)
var/obj/item/card/id/C = contract.owner.current?.get_idcard(TRUE)
/datum/syndicate_contract/proc/finish_enter()
sleep(30)
if(C?.registered_account)
C.registered_account.adjust_money(ransom * 0.35)
// Pay contractor their portion of ransom
if (status == CONTRACT_STATUS_COMPLETE)
var/obj/item/card/id/C = contract.owner.current?.get_idcard(TRUE)
C.registered_account.bank_card_talk("We've processed the ransom, agent. Here's your cut - your balance is now \
[C.registered_account.account_balance] cr.", TRUE)
if(C?.registered_account)
C.registered_account.adjust_money(ransom * 0.35)
C.registered_account.bank_card_talk("We've processed the ransom, agent. Here's your cut - your balance is now \
[C.registered_account.account_balance] cr.", TRUE)
// They're off to holding - handle the return timer and give some text about what's going on.
/datum/syndicate_contract/proc/handleVictimExperience(mob/living/M)
@@ -182,6 +182,7 @@
///Unregister the connected_machine (either when qdel this or the sender)
/obj/machinery/bluespace_vendor/proc/unregister_machine()
SIGNAL_HANDLER
UnregisterSignal(connected_machine, COMSIG_PARENT_QDELETING)
LAZYREMOVE(connected_machine.vendors, src)
connected_machine = null
@@ -43,6 +43,7 @@
* Called in Initialize(), set the showpipe var to true or false depending on the situation, calls update_icon()
*/
/obj/machinery/atmospherics/components/proc/hide_pipe(datum/source, covered)
SIGNAL_HANDLER
showpipe = !covered
update_appearance()
@@ -113,6 +113,7 @@
* * only_signals: default FALSE, if true the proc will not call the deactivate() proc
*/
/obj/machinery/atmospherics/components/unary/hypertorus/core/proc/unregister_signals(only_signals = FALSE)
SIGNAL_HANDLER
UnregisterSignal(linked_interface, COMSIG_PARENT_QDELETING)
UnregisterSignal(linked_input, COMSIG_PARENT_QDELETING)
UnregisterSignal(linked_output, COMSIG_PARENT_QDELETING)
+1
View File
@@ -487,6 +487,7 @@
qdel(src)//runs disconnect code
/obj/item/clothing/head/helmet/monkey_sentience/proc/make_fall_off()
SIGNAL_HANDLER
if(magnification)
visible_message("<span class='warning'>[src] falls off of [magnification]'s head as it changes shape!</span>")
magnification.dropItemToGround(src)
+1
View File
@@ -225,6 +225,7 @@
UnregisterSignal(M, COMSIG_MOB_SAY)
/obj/item/clothing/head/warden/drill/proc/handle_speech(datum/source, mob/speech_args)
SIGNAL_HANDLER
var/message = speech_args[SPEECH_MESSAGE]
if(message[1] != "*")
switch (mode)
+1
View File
@@ -447,6 +447,7 @@
UnregisterSignal(M, COMSIG_MOB_SAY)
/obj/item/clothing/head/frenchberet/proc/handle_speech(datum/source, mob/speech_args)
SIGNAL_HANDLER
var/message = speech_args[SPEECH_MESSAGE]
if(message[1] != "*")
message = " [message]"
+1
View File
@@ -202,6 +202,7 @@
///check_trip runs on each step to see if we fall over as a result of our lace status. Knotted laces are a guaranteed trip, while untied shoes are just a chance to stumble
/obj/item/clothing/shoes/proc/check_trip()
SIGNAL_HANDLER
var/mob/living/carbon/human/our_guy = loc
if(!istype(our_guy)) // are they REALLY /our guy/?
return
@@ -735,6 +735,7 @@
var/mob/listeningTo
/obj/item/clothing/suit/space/hardsuit/ancient/proc/on_mob_move()
SIGNAL_HANDLER
var/mob/living/carbon/human/H = loc
if(!istype(H) || H.wear_suit != src)
return
+1
View File
@@ -148,6 +148,7 @@
UnregisterSignal(user, COMSIG_MOB_STATCHANGE, .proc/resurrect)
/obj/item/clothing/suit/hooded/cloak/godslayer/proc/resurrect(mob/living/carbon/user, new_stat)
SIGNAL_HANDLER
if(new_stat > CONSCIOUS && new_stat < DEAD && COOLDOWN_FINISHED(src, effect_cooldown))
user.heal_ordered_damage(heal_amount, damage_heal_order)
user.visible_message("<span class='notice'>[user] suddenly revives, as their armor swirls with demonic energy!</span>", "<span class='notice'>You suddenly feel invigorated!</span>")
@@ -420,4 +420,5 @@
///What happens when we examine the uniform
/obj/item/clothing/accessory/allergy_dogtag/proc/on_examine(datum/source, mob/user, list/examine_list)
SIGNAL_HANDLER
examine_list += "The dogtag has a listing of allergies : [display]"
@@ -237,7 +237,8 @@
* * user - The user to show the experiment configuration panel to
*/
/datum/component/experiment_handler/proc/configure_experiment(datum/source, mob/user)
ui_interact(user)
SIGNAL_HANDLER
INVOKE_ASYNC(src, .proc/ui_interact, user)
/**
* Attempts to show the user the experiment configuration panel
@@ -270,6 +270,7 @@ GLOBAL_LIST_INIT(scan_conditions,init_scan_conditions())
return current_scan
/datum/scanner_controller/proc/cleanup_current_scan()
SIGNAL_HANDLER
current_scan = null
SEND_SIGNAL(src,COMSIG_EXOSCAN_FINISHED,current_scan)
@@ -603,6 +603,7 @@
// TODO: make it so the washer spills reagents if a reagent container is in there, for now, you can wash pruno
/obj/item/reagent_containers/food/drinks/bottle/pruno/proc/check_fermentation()
SIGNAL_HANDLER
if (!(istype(loc, /obj/machinery) || istype(loc, /obj/structure)))
if(fermentation_timer)
fermentation_time_remaining = timeleft(fermentation_timer)
@@ -101,6 +101,7 @@
update_grill_audio()
/obj/machinery/griddle/proc/ItemRemovedFromGrill(obj/item/I)
SIGNAL_HANDLER
I.flags_1 &= ~IS_ONTOP_1
griddled_objects -= I
vis_contents -= I
+1
View File
@@ -295,6 +295,7 @@ and clear when youre done! if you dont i will use :newspaper2: on you
qdel(object)
/obj/machinery/computer/holodeck/proc/remove_from_holo_lists(datum/to_remove, _forced)
SIGNAL_HANDLER
spawned -= to_remove
UnregisterSignal(to_remove, COMSIG_PARENT_PREQDELETED)
+2
View File
@@ -649,6 +649,7 @@
* target - the atom being hit on thrown or slipping on our plant
*/
/datum/plant_gene/trait/stinging/proc/prickles_inject(obj/item/our_plant, atom/target)
SIGNAL_HANDLER
if(isliving(target) && our_plant.reagents?.total_volume)
var/mob/living/living_target = target
var/obj/item/seeds/our_seed = our_plant.get_plant_seed()
@@ -810,6 +811,7 @@
* target - the atom that slipped on the plant
*/
/datum/plant_gene/trait/plant_laughter/proc/laughter(obj/item/our_plant, atom/target)
SIGNAL_HANDLER
our_plant.audible_message("<span_class='notice'>[our_plant] lets out burst of laughter.</span>")
playsound(our_plant, pick(sounds), 100, FALSE, SHORT_RANGE_SOUND_EXTRARANGE)
+3
View File
@@ -96,6 +96,7 @@
* Called by a component signal when our song starts playing.
*/
/obj/item/instrument/piano_synth/headphones/proc/start_playing()
SIGNAL_HANDLER
icon_state = "[initial(icon_state)]_on"
update_appearance()
@@ -103,6 +104,7 @@
* Called by a component signal when our song stops playing.
*/
/obj/item/instrument/piano_synth/headphones/proc/stop_playing()
SIGNAL_HANDLER
icon_state = "[initial(icon_state)]"
update_appearance()
@@ -253,6 +255,7 @@
actions_types = list(/datum/action/item_action/instrument)
/obj/item/instrument/harmonica/proc/handle_speech(datum/source, list/speech_args)
SIGNAL_HANDLER
if(song.playing && ismob(loc))
to_chat(loc, "<span class='warning'>You stop playing the harmonica to talk...</span>")
song.playing = FALSE
@@ -47,10 +47,12 @@
/// triggered on wield of two handed item
/obj/item/kinetic_crusher/proc/on_wield(obj/item/source, mob/user)
SIGNAL_HANDLER
wielded = TRUE
/// triggered on unwield of two handed item
/obj/item/kinetic_crusher/proc/on_unwield(obj/item/source, mob/user)
SIGNAL_HANDLER
wielded = FALSE
/obj/item/kinetic_crusher/examine(mob/living/user)
@@ -101,6 +101,7 @@
resonance_damage *= damage_multiplier
/obj/effect/temp_visual/resonance/proc/burst()
SIGNAL_HANDLER
rupturing = TRUE
var/turf/T = get_turf(src)
new /obj/effect/temp_visual/resonance_crush(T)
@@ -330,6 +330,7 @@
to_chat(orbits.parent, "<span class='notice'>Your vision returns to normal.</span>")
/obj/effect/wisp/proc/update_user_sight(mob/user)
SIGNAL_HANDLER
user.sight |= sight_flags
if(!isnull(lighting_alpha))
user.lighting_alpha = min(user.lighting_alpha, lighting_alpha)
@@ -704,6 +705,7 @@
UnregisterSignal(user, COMSIG_MOVABLE_BUMP)
/obj/item/clothing/gloves/gauntlets/proc/rocksmash(mob/living/carbon/human/H, atom/A, proximity)
SIGNAL_HANDLER
if(!istype(A, /turf/closed/mineral))
return
A.attackby(src, H)
+1
View File
@@ -1275,4 +1275,5 @@
/mob/living/carbon/proc/attach_rot(mapload)
SIGNAL_HANDLER
AddComponent(/datum/component/rot, 6 MINUTES, 10 MINUTES, 1)
@@ -712,6 +712,7 @@
/// The limb or the whole damn person we were grasping got deleted or dismembered, so we don't care anymore
/obj/item/self_grasp/proc/qdel_void()
SIGNAL_HANDLER
qdel(src)
/// We've already cleared that the bodypart in question is bleeding in [the place we create this][/mob/living/carbon/proc/grabbedby], so set up the connections
@@ -598,6 +598,7 @@
* Called on the COMSIG_COMPONENT_CLEAN_FACE_ACT signal
*/
/mob/living/carbon/human/proc/clean_face(datum/source, clean_types)
SIGNAL_HANDLER
if(!is_mouth_covered() && clean_lips())
. = TRUE
@@ -139,20 +139,24 @@
qdel(src)
/obj/item/dullahan_relay/proc/examinate_check(atom/source, mob/user)
SIGNAL_HANDLER
if(user.client.eye == src)
return COMPONENT_ALLOW_EXAMINATE
//Adds the owner to the list of hearers in hearers_in_view(), for visible/hearable on top of say messages
/obj/item/dullahan_relay/proc/include_owner(datum/source, list/processing_list, list/hearers)
SIGNAL_HANDLER
if(!QDELETED(owner))
hearers += owner
//Stops dullahans from gibbing when regenerating limbs
/obj/item/dullahan_relay/proc/unlist_head(datum/source, noheal = FALSE, list/excluded_zones)
SIGNAL_HANDLER
excluded_zones |= BODY_ZONE_HEAD
//Retrieving the owner's head for better ahealing.
/obj/item/dullahan_relay/proc/retrieve_head(datum/source, full_heal, admin_revive)
SIGNAL_HANDLER
if(admin_revive)
var/obj/item/bodypart/head/H = loc
var/turf/T = get_turf(owner)
@@ -101,6 +101,7 @@
H.update_body()
/datum/species/ethereal/proc/on_emp_act(mob/living/carbon/human/H, severity)
SIGNAL_HANDLER
EMPeffect = TRUE
spec_updatehealth(H)
to_chat(H, "<span class='notice'>You feel the light of your body leave you.</span>")
@@ -111,6 +112,7 @@
addtimer(CALLBACK(src, .proc/stop_emp, H), 20 SECONDS, TIMER_UNIQUE|TIMER_OVERRIDE) //We're out for 20 seconds
/datum/species/ethereal/proc/on_emag_act(mob/living/carbon/human/H, mob/user)
SIGNAL_HANDLER
if(emageffect)
return
emageffect = TRUE
@@ -671,6 +671,7 @@
playsound(get_turf(H), 'sound/misc/sadtrombone.ogg', 70, FALSE)
/datum/species/golem/bananium/proc/handle_speech(datum/source, list/speech_args)
SIGNAL_HANDLER
speech_args[SPEECH_SPANS] |= SPAN_CLOWN
/datum/species/golem/runic
@@ -635,6 +635,7 @@
return TRUE
/datum/species/jelly/stargazer/proc/unlink_mob(mob/living/M)
SIGNAL_HANDLER
var/link_id = linked_mobs.Find(M)
if(!(link_id))
return
@@ -132,6 +132,7 @@
/datum/species/synth/proc/handle_speech(datum/source, list/speech_args)
SIGNAL_HANDLER
if (isliving(source)) // yeah it's gonna be living but just to be clean
var/mob/living/L = source
if(fake_species && L.health > disguise_fail_health)
+4
View File
@@ -1610,6 +1610,7 @@
start_look_up()
/mob/living/proc/start_look_up()
SIGNAL_HANDLER
var/turf/ceiling = get_step_multiz(src, UP)
if(!ceiling) //We are at the highest z-level.
to_chat(src, "<span class='warning'>You can't see through the ceiling above you.</span>")
@@ -1631,6 +1632,7 @@
reset_perspective(ceiling)
/mob/living/proc/stop_look_up()
SIGNAL_HANDLER
reset_perspective()
/mob/living/proc/end_look_up()
@@ -1655,6 +1657,7 @@
start_look_down()
/mob/living/proc/start_look_down()
SIGNAL_HANDLER
var/turf/floor = get_turf(src)
var/turf/lower_level = get_step_multiz(floor, DOWN)
if(!lower_level) //We are at the lowest z-level.
@@ -1679,6 +1682,7 @@
reset_perspective(lower_level)
/mob/living/proc/stop_look_down()
SIGNAL_HANDLER
reset_perspective()
/mob/living/proc/end_look_down()
+1
View File
@@ -1004,6 +1004,7 @@
Remove(owner) //If the last shell is blown, destroy it.
/mob/living/silicon/ai/proc/disconnect_shell()
SIGNAL_HANDLER
if(deployed_shell) //Forcibly call back AI in event of things such as damage, EMP or power loss.
to_chat(src, "<span class='danger'>Your remote connection has been reset!</span>")
deployed_shell.undeploy()
@@ -937,6 +937,7 @@
aicamera.stored[i] = TRUE
/mob/living/silicon/robot/proc/charge(datum/source, amount, repairs)
SIGNAL_HANDLER
if(model)
model.respawn_consumable(src, amount * 0.005)
if(cell)
@@ -914,6 +914,7 @@
return "Unknown"
/mob/living/simple_animal/bot/mulebot/paranormal/proc/ghostmoved()
SIGNAL_HANDLER
visible_message("<span class='notice'>The ghostly figure vanishes...</span>")
UnregisterSignal(load, COMSIG_MOVABLE_MOVED)
unload(0)
@@ -202,6 +202,7 @@
///Updates the next mob in the chain to move to our last location, fixed the worm if somehow broken.
/mob/living/simple_animal/hostile/eldritch/armsy/proc/update_chain_links()
SIGNAL_HANDLER
if(!follow)
return
gib_trail()
@@ -54,6 +54,7 @@
to_chat(src, "<span class='danger'><B>Your powers are on cooldown! You must wait 20 seconds between bombs.</B></span>")
/mob/living/simple_animal/hostile/guardian/bomb/proc/kaboom(atom/source, mob/living/explodee)
SIGNAL_HANDLER
if(!istype(explodee))
return
if(explodee == src || explodee == summoner || hasmatchingsummoner(explodee))
@@ -71,6 +72,7 @@
UNREGISTER_BOMB_SIGNALS(A)
/mob/living/simple_animal/hostile/guardian/bomb/proc/display_examine(datum/source, mob/user, text)
SIGNAL_HANDLER
text += "<span class='holoparasite'>It glows with a strange <font color=\"[guardiancolor]\">light</font>!</span>"
#undef UNREGISTER_BOMB_SIGNALS
@@ -70,5 +70,6 @@
gravito_targets -= target
/mob/living/simple_animal/hostile/guardian/gravitokinetic/proc/__distance_check(atom/movable/AM, OldLoc, Dir, Forced)
SIGNAL_HANDLER
if(get_dist(src, AM) > gravity_power_range)
remove_gravity(AM)
@@ -43,6 +43,7 @@
RegisterSignal(src, COMSIG_MOVABLE_MOVED, .proc/goosement)
/mob/living/simple_animal/hostile/retaliate/goose/proc/goosement(atom/movable/AM, OldLoc, Dir, Forced)
SIGNAL_HANDLER
if(stat == DEAD)
return
if(prob(5) && random_retaliate)
@@ -219,7 +220,7 @@
/mob/living/simple_animal/hostile/retaliate/goose/vomit/goosement(atom/movable/AM, OldLoc, Dir, Forced)
. = ..()
if(vomiting)
vomit() // its supposed to keep vomiting if you move
INVOKE_ASYNC(src, .proc/vomit) // its supposed to keep vomiting if you move
return
if(prob(vomitCoefficient * 0.2))
vomit_prestart(vomitTimeBonus + 25)
@@ -299,6 +299,7 @@ Difficulty: Extremely Hard
/// Resurrects the target when they die by moving them and dusting a clone in their place, one life for another
/obj/item/resurrection_crystal/proc/resurrect(mob/living/carbon/user, gibbed)
SIGNAL_HANDLER
if(gibbed)
to_chat(user, "<span class='notice'>This power cannot be used if your entire mortal body is disintegrated...</span>")
return
@@ -306,12 +307,12 @@ Difficulty: Extremely Hard
var/typepath = user.type
var/mob/living/carbon/clone = new typepath(user.loc)
clone.real_name = user.real_name
user.dna.transfer_identity(clone)
INVOKE_ASYNC(user.dna, /datum/dna.proc/transfer_identity, clone)
clone.updateappearance(mutcolor_update=1)
var/turf/T = find_safe_turf()
user.forceMove(T)
user.revive(full_heal = TRUE, admin_revive = TRUE)
user.set_species(/datum/species/shadow)
INVOKE_ASYNC(user, /mob/living/carbon.proc/set_species, /datum/species/shadow)
to_chat(user, "<span class='notice'>You blink and find yourself in [get_area_name(T)]... feeling a bit darker.</span>")
clone.dust()
qdel(src)
@@ -413,6 +414,7 @@ Difficulty: Extremely Hard
/// Blocks movement from the status effect owner
/datum/status_effect/ice_block_talisman/proc/owner_moved()
SIGNAL_HANDLER
return COMPONENT_MOVABLE_BLOCK_PRE_MOVE
/datum/status_effect/ice_block_talisman/on_remove()
@@ -212,6 +212,7 @@
RegisterSignal(owner, COMSIG_PARENT_PREQDELETED, .proc/handle_mob_deletion)
/datum/action/consume/proc/handle_mob_deletion()
SIGNAL_HANDLER
stop_consuming() //Shit out the vored mob before u go go
///Try to consume the pulled mob
@@ -91,6 +91,7 @@
* the supermatter probably don't need constant beeping to distract them.
*/
/datum/computer_file/program/supermatter_monitor/proc/send_alert()
SIGNAL_HANDLER
if(!computer.get_ntnet_status())
return
if(computer.active_program != src)
@@ -107,6 +108,7 @@
* minimized or closed to avoid double-notifications.
*/
/datum/computer_file/program/supermatter_monitor/proc/send_start_alert()
SIGNAL_HANDLER
if(!computer.get_ntnet_status())
return
if(computer.active_program == src)
@@ -131,9 +133,9 @@
data["SM_power"] = active.power
data["SM_ambienttemp"] = air.temperature
data["SM_ambientpressure"] = air.return_pressure()
data["SM_bad_moles_amount"] = MOLE_PENALTY_THRESHOLD / active.gasefficency
data["SM_bad_moles_amount"] = MOLE_PENALTY_THRESHOLD / active.gasefficency
data["SM_moles"] = 0
var/list/gasdata = list()
if(air.total_moles())
@@ -29,6 +29,7 @@
return NONE
/obj/machinery/plumbing/buffer/proc/on_reagent_change()
SIGNAL_HANDLER
if(!buffer_net)
return
if(reagents.total_volume + CHEMICAL_QUANTISATION_LEVEL >= activation_volume && mode == UNREADY)
@@ -652,6 +652,7 @@ GLOBAL_LIST_INIT(gun_saw_types, typecacheof(list(
. = TRUE
/obj/item/gun/ballistic/proc/instant_reload()
SIGNAL_HANDLER
if(magazine)
magazine.top_off()
else
+1
View File
@@ -276,6 +276,7 @@
. = "<span class='danger'>[user] casually lights [A.loc == user ? "[user.p_their()] [A.name]" : A] with [src]. Damn.</span>"
/obj/item/gun/energy/proc/instant_recharge()
SIGNAL_HANDLER
if(!cell)
return
cell.charge = cell.maxcharge
@@ -243,6 +243,7 @@
select_fire()
/obj/item/gun/energy/wormhole_projector/proc/on_portal_destroy(obj/effect/portal/P)
SIGNAL_HANDLER
if(P == p_blue)
p_blue = null
else if(P == p_orange)
+1
View File
@@ -94,6 +94,7 @@
recharge_newshot()
/obj/item/gun/magic/proc/instant_recharge()
SIGNAL_HANDLER
charges = max_charges
recharge_newshot()
update_appearance()
@@ -232,11 +232,12 @@
lastangle = angle
/obj/item/gun/energy/beam_rifle/proc/on_mob_move()
SIGNAL_HANDLER
check_user()
if(aiming)
delay_penalty(aiming_time_increase_user_movement)
process_aim()
aiming_beam(TRUE)
INVOKE_ASYNC(src, .proc/aiming_beam, TRUE)
/obj/item/gun/energy/beam_rifle/proc/start_aiming()
aiming_time_left = aiming_time
@@ -134,6 +134,7 @@
* - [blastwave_data][/list]: A list containing all of the data for the blastwave.
*/
/obj/item/gun/blastcannon/proc/channel_blastwave(atom/source, list/arguments)
SIGNAL_HANDLER
. = COMSIG_CANCEL_EXPLOSION
var/heavy = arguments[EXARG_KEY_DEV_RANGE]
@@ -145,15 +146,15 @@
return
if(!ismob(loc))
fire_dropped(heavy, medium, light)
INVOKE_ASYNC(src, .proc/fire_dropped, heavy, medium, light)
return
var/mob/holding = loc
var/target = cached_target?.resolve()
if(target && (holding.get_active_held_item() == src) && cached_firer && (holding == cached_firer.resolve()))
fire_intentionally(target, holding, heavy, medium, light, cached_modifiers)
INVOKE_ASYNC(src, .proc/fire_intentionally, target, holding, heavy, medium, light, cached_modifiers)
else
fire_accidentally(holding, heavy, medium, light)
INVOKE_ASYNC(src, .proc/fire_accidentally, holding, heavy, medium, light)
return
/**

Some files were not shown because too many files have changed in this diff Show More