diff --git a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_legacy.dm b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_legacy.dm
index 7e43f572821d..374ffdcdbb66 100644
--- a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_legacy.dm
+++ b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_legacy.dm
@@ -8,6 +8,6 @@
/// for now, this is a signal with (item, user, hit_zone)
#define COMSIG_MOB_LEGACY_RESOLVE_ITEM_ATTACK "legacy-mob-item-resolve-attack"
/// used by passive parry to detect
-/// signal with (user, list/params)
+/// signal with (user, datum/event_args/actor/clickchain/e_args)
/// :skull:
#define COMSIG_MOB_LEGACY_ATTACK_HAND_INTERCEPT "legacy-mob-legacy-attack-hand"
diff --git a/code/game/atoms/buckling.dm b/code/game/atoms/buckling.dm
index b286d57f88ef..0068578f2ab7 100644
--- a/code/game/atoms/buckling.dm
+++ b/code/game/atoms/buckling.dm
@@ -6,7 +6,7 @@
return CLICKCHAIN_DO_NOT_PROPAGATE
return ..()
-/atom/movable/attack_hand(mob/user, list/params)
+/atom/movable/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user.a_intent == INTENT_HARM)
return ..()
. = ..()
diff --git a/code/game/atoms/movable/special/overlay.dm b/code/game/atoms/movable/special/overlay.dm
index 56889c02b356..be8a448f50dd 100644
--- a/code/game/atoms/movable/special/overlay.dm
+++ b/code/game/atoms/movable/special/overlay.dm
@@ -5,10 +5,8 @@
// todo: nuke this shit from orbit, this is awful.
var/atom/master = null
-/atom/movable/overlay/attackby(a, b)
- if (src.master)
- return src.master.attackby(a, b)
+/atom/movable/overlay/attackby(obj/item/I, mob/user, list/params, clickchain_flags, damage_multiplier)
+ return master.attackby(arglist(args))
-/atom/movable/overlay/attack_hand(a, b, c)
- if (src.master)
- return src.master.attack_hand(a, b, c)
+/atom/movable/overlay/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
+ return master.attack_hand(arglist(args))
diff --git a/code/game/click/other_mobs.dm b/code/game/click/other_mobs.dm
index 8cbc452f270a..55a50d5cb69d 100644
--- a/code/game/click/other_mobs.dm
+++ b/code/game/click/other_mobs.dm
@@ -25,12 +25,16 @@
if(istype(G) && G.Touch(A,1))
return
- A.attack_hand(src)
+ A.attack_hand(src, new /datum/event_args/actor/clickchain(src))
/// Return TRUE to cancel other attack hand effects that respect it.
-// todo: /datum/event_args/actor/clickchain
-/atom/proc/attack_hand(mob/user, list/params)
- var/datum/event_args/actor/clickchain/e_args = new(user, target = src, intent = user.a_intent, params = params)
+// todo: better desc
+// todo: e_args is not specified all the time, yet.
+/atom/proc/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
+ // todo: remove
+ if(isnull(e_args))
+ e_args = new(user)
+ // end
if(on_attack_hand(e_args))
return TRUE
if(user.a_intent == INTENT_HARM)
diff --git a/code/game/dna/dna_modifier.dm b/code/game/dna/dna_modifier.dm
index 3f2835b7d3dd..7fd8de7c9530 100644
--- a/code/game/dna/dna_modifier.dm
+++ b/code/game/dna/dna_modifier.dm
@@ -300,7 +300,7 @@
src.add_hiddenprint(user)
nano_ui_interact(user)
-/obj/machinery/computer/scan_consolenew/attack_hand(mob/user, list/params)
+/obj/machinery/computer/scan_consolenew/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(!..())
nano_ui_interact(user)
diff --git a/code/game/gamemodes/cult/cult_structures.dm b/code/game/gamemodes/cult/cult_structures.dm
index c9e899bd85c5..4c10d5b86868 100644
--- a/code/game/gamemodes/cult/cult_structures.dm
+++ b/code/game/gamemodes/cult/cult_structures.dm
@@ -37,7 +37,7 @@
. = ..()
START_PROCESSING(SSobj, src)
-/obj/structure/cult/pylon/attack_hand(mob/user, list/params)
+/obj/structure/cult/pylon/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
attackpylon(user, 5)
/obj/structure/cult/pylon/attack_generic(var/mob/user, var/damage)
diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm
index e2e982ddfe11..5f9c08ac0772 100644
--- a/code/game/gamemodes/cult/ritual.dm
+++ b/code/game/gamemodes/cult/ritual.dm
@@ -101,7 +101,7 @@ var/global/list/rnwords = list("ire","ego","nahlizet","certum","veri","jatkaa","
return
-/obj/effect/rune/attack_hand(mob/user, list/params)
+/obj/effect/rune/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(!ishuman(user))
return
var/mob/living/carbon/human/H = user
diff --git a/code/game/machinery/CableLayer.dm b/code/game/machinery/CableLayer.dm
index 0156cb84f94c..c70604f40cd3 100644
--- a/code/game/machinery/CableLayer.dm
+++ b/code/game/machinery/CableLayer.dm
@@ -17,7 +17,7 @@
. = ..()
layCable(new_turf,M_Dir)
-/obj/machinery/cablelayer/attack_hand(mob/user, list/params)
+/obj/machinery/cablelayer/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(!cable&&!on)
to_chat(user, SPAN_WARNING("\The [src] doesn't have any cable loaded."))
return
diff --git a/code/game/machinery/OpTable.dm b/code/game/machinery/OpTable.dm
index dea856fe44ae..839932093016 100644
--- a/code/game/machinery/OpTable.dm
+++ b/code/game/machinery/OpTable.dm
@@ -41,7 +41,7 @@
if(prob(25))
density = 0
-/obj/machinery/optable/attack_hand(mob/user, list/params)
+/obj/machinery/optable/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(MUTATION_HULK in usr.mutations)
visible_message(SPAN_DANGER("\The [usr] destroys \the [src]!"))
density = FALSE
diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm
index c894c4e47efd..88b51467ac46 100644
--- a/code/game/machinery/Sleeper.dm
+++ b/code/game/machinery/Sleeper.dm
@@ -37,7 +37,7 @@
/obj/machinery/sleep_console/attack_ai(mob/user)
return attack_hand(user)
-/obj/machinery/sleep_console/attack_hand(mob/user, list/params)
+/obj/machinery/sleep_console/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..())
return 1
diff --git a/code/game/machinery/_machinery.dm b/code/game/machinery/_machinery.dm
index 3c8879162bf9..999f424386a8 100644
--- a/code/game/machinery/_machinery.dm
+++ b/code/game/machinery/_machinery.dm
@@ -288,7 +288,7 @@
return attack_hand(user)
// todo: refactor
-/obj/machinery/attack_hand(mob/user, list/params)
+/obj/machinery/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user.a_intent == INTENT_HARM)
return ..()
if(IsAdminGhost(user))
diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm
index c694e19bbdd0..f5780aa48c7d 100644
--- a/code/game/machinery/adv_med.dm
+++ b/code/game/machinery/adv_med.dm
@@ -240,7 +240,7 @@
. = ..()
return attack_hand(user)
-/obj/machinery/body_scanconsole/attack_hand(mob/user, list/params)
+/obj/machinery/body_scanconsole/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(machine_stat & (NOPOWER|BROKEN))
return
diff --git a/code/game/machinery/ai_slipper.dm b/code/game/machinery/ai_slipper.dm
index 477852c0229c..d7b7a582f8dc 100644
--- a/code/game/machinery/ai_slipper.dm
+++ b/code/game/machinery/ai_slipper.dm
@@ -57,7 +57,7 @@
/obj/machinery/ai_slipper/attack_ai(mob/user as mob)
return attack_hand(user)
-/obj/machinery/ai_slipper/attack_hand(mob/user, list/params)
+/obj/machinery/ai_slipper/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(machine_stat & (NOPOWER|BROKEN))
return
if((get_dist(src, user) > 1))
diff --git a/code/game/machinery/atm_ret_field.dm b/code/game/machinery/atm_ret_field.dm
index 5190b86c6bb4..c49273e59647 100644
--- a/code/game/machinery/atm_ret_field.dm
+++ b/code/game/machinery/atm_ret_field.dm
@@ -221,7 +221,7 @@
update_nearby_tiles() //Force ZAS update
. = ..()
-/obj/structure/atmospheric_retention_field/attack_hand(mob/user, list/params)
+/obj/structure/atmospheric_retention_field/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(density)
to_chat(user, "You touch the retention field, and it crackles faintly. Tingly!")
else
diff --git a/code/game/machinery/atmo_control.dm b/code/game/machinery/atmo_control.dm
index 44618bf10b65..5e548e8bb2ea 100644
--- a/code/game/machinery/atmo_control.dm
+++ b/code/game/machinery/atmo_control.dm
@@ -86,7 +86,7 @@
radio_controller.remove_object(src, frequency)
..()
-/obj/machinery/computer/general_air_control/attack_hand(mob/user, list/params)
+/obj/machinery/computer/general_air_control/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..(user))
return
diff --git a/code/game/machinery/bioprinter.dm b/code/game/machinery/bioprinter.dm
index 2b89e6e6b2e8..b9a8ce78f739 100644
--- a/code/game/machinery/bioprinter.dm
+++ b/code/game/machinery/bioprinter.dm
@@ -125,7 +125,7 @@
. = ..()
-/obj/machinery/organ_printer/attack_hand(mob/user, list/params)
+/obj/machinery/organ_printer/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(machine_stat & (BROKEN|NOPOWER))
return
diff --git a/code/game/machinery/bomb_tester.dm b/code/game/machinery/bomb_tester.dm
index 070d81a1fff5..935abaed349e 100644
--- a/code/game/machinery/bomb_tester.dm
+++ b/code/game/machinery/bomb_tester.dm
@@ -107,7 +107,7 @@
return
..()
-/obj/machinery/bomb_tester/attack_hand(mob/user, list/params)
+/obj/machinery/bomb_tester/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
add_fingerprint(user)
ui_interact(user)
diff --git a/code/game/machinery/buttons.dm b/code/game/machinery/buttons.dm
index 2918472e4a30..9f7585241cac 100644
--- a/code/game/machinery/buttons.dm
+++ b/code/game/machinery/buttons.dm
@@ -18,7 +18,7 @@
/obj/machinery/button/attackby(obj/item/W, mob/user)
return attack_hand(user)
-/obj/machinery/button/attack_hand(obj/item/W, mob/user)
+/obj/machinery/button/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..())
return TRUE
playsound(src, 'sound/machines/button.ogg', 100, TRUE)
@@ -30,7 +30,7 @@
desc = "A remote control switch for polarized windows."
var/range = 7
-/obj/machinery/button/windowtint/attack_hand(mob/user, list/params)
+/obj/machinery/button/windowtint/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if (..())
return TRUE
else
diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm
index 26fa71139dcf..673b3de996f2 100644
--- a/code/game/machinery/camera/camera.dm
+++ b/code/game/machinery/camera/camera.dm
@@ -110,7 +110,7 @@ CREATE_WALL_MOUNTING_TYPES(/obj/machinery/camera)
src.view_range = num
GLOB.cameranet.updateVisibility(src, 0)
-/obj/machinery/camera/attack_hand(mob/user, list/params)
+/obj/machinery/camera/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
var/mob/living/carbon/human/L = user
if(!istype(L))
return
diff --git a/code/game/machinery/camera/camera_assembly.dm b/code/game/machinery/camera/camera_assembly.dm
index a851040377c9..2da823206971 100644
--- a/code/game/machinery/camera/camera_assembly.dm
+++ b/code/game/machinery/camera/camera_assembly.dm
@@ -145,7 +145,7 @@
else
icon_state = "cameracase"
-/obj/item/camera_assembly/attack_hand(mob/user, list/params)
+/obj/item/camera_assembly/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(!anchored)
..()
diff --git a/code/game/machinery/cell_charger.dm b/code/game/machinery/cell_charger.dm
index 813b3c83f07b..0beca8c9766c 100644
--- a/code/game/machinery/cell_charger.dm
+++ b/code/game/machinery/cell_charger.dm
@@ -81,7 +81,7 @@
else if(default_part_replacement(user, W))
return
-/obj/machinery/cell_charger/attack_hand(mob/user, list/params)
+/obj/machinery/cell_charger/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
add_fingerprint(user)
if(charging)
diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm
index f099b8ffa241..3f04bf3cb143 100644
--- a/code/game/machinery/cloning.dm
+++ b/code/game/machinery/cloning.dm
@@ -60,7 +60,7 @@
add_hiddenprint(user)
return attack_hand(user)
-/obj/machinery/clonepod/attack_hand(mob/user, list/params)
+/obj/machinery/clonepod/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if((isnull(occupant)) || (machine_stat & NOPOWER))
return
if((!isnull(occupant)) && (occupant.stat != 2))
diff --git a/code/game/machinery/computer/Operating.dm b/code/game/machinery/computer/Operating.dm
index e73cb842326b..853f74f96f03 100644
--- a/code/game/machinery/computer/Operating.dm
+++ b/code/game/machinery/computer/Operating.dm
@@ -48,7 +48,7 @@
return
ui_interact(user)
-/obj/machinery/computer/operating/attack_hand(mob/user, list/params)
+/obj/machinery/computer/operating/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(machine_stat & (BROKEN|NOPOWER))
return
ui_interact(user)
diff --git a/code/game/machinery/computer/RCON_Console.dm b/code/game/machinery/computer/RCON_Console.dm
index 6dae0a2772ec..68d751075a29 100644
--- a/code/game/machinery/computer/RCON_Console.dm
+++ b/code/game/machinery/computer/RCON_Console.dm
@@ -26,7 +26,7 @@
// Proc: attack_hand()
// Parameters: 1 (user - Person which clicked this computer)
// Description: Opens UI of this machine.
-/obj/machinery/computer/rcon/attack_hand(mob/user, list/params)
+/obj/machinery/computer/rcon/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
..()
ui_interact(user)
diff --git a/code/game/machinery/computer/aifixer.dm b/code/game/machinery/computer/aifixer.dm
index ff694a8bba40..43b425dfcfa8 100644
--- a/code/game/machinery/computer/aifixer.dm
+++ b/code/game/machinery/computer/aifixer.dm
@@ -48,7 +48,7 @@
to_chat(user, SPAN_NOTICE("There is no AI loaded onto this computer, and no AI loaded onto [I]. What exactly are you trying to do here?"))
return ..()
-/obj/machinery/computer/aifixer/attack_hand(mob/user, list/params)
+/obj/machinery/computer/aifixer/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(machine_stat & (NOPOWER|BROKEN))
return
ui_interact(user)
diff --git a/code/game/machinery/computer/arcade/amputation.dm b/code/game/machinery/computer/arcade/amputation.dm
index 3725192b5169..a978a40bdf79 100644
--- a/code/game/machinery/computer/arcade/amputation.dm
+++ b/code/game/machinery/computer/arcade/amputation.dm
@@ -7,7 +7,7 @@
icon_screen = null
circuit = /obj/item/circuitboard/arcade/amputation
-/obj/machinery/computer/arcade/amputation/attack_hand(mob/user, list/modifiers)
+/obj/machinery/computer/arcade/amputation/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(!iscarbon(user))
return
var/mob/living/carbon/c_user = user
diff --git a/code/game/machinery/computer/arcade/claw_machine.dm b/code/game/machinery/computer/arcade/claw_machine.dm
index 9d0e3bc741ff..30b76f6a3f66 100644
--- a/code/game/machinery/computer/arcade/claw_machine.dm
+++ b/code/game/machinery/computer/arcade/claw_machine.dm
@@ -160,7 +160,7 @@
/obj/machinery/computer/arcade/clawmachine/Initialize(mapload)
. = ..()
-/obj/machinery/computer/arcade/clawmachine/attack_hand(mob/user, list/params)
+/obj/machinery/computer/arcade/clawmachine/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..())
return
ui_interact(user)
diff --git a/code/game/machinery/computer/atmos_alert.dm b/code/game/machinery/computer/atmos_alert.dm
index d22cfb98a8c2..d0b1000e0724 100644
--- a/code/game/machinery/computer/atmos_alert.dm
+++ b/code/game/machinery/computer/atmos_alert.dm
@@ -19,7 +19,7 @@ var/global/list/minor_air_alarms = list()
atmosphere_alarm.unregister_alarm(src)
return ..()
-/obj/machinery/computer/atmos_alert/attack_hand(mob/user, list/params)
+/obj/machinery/computer/atmos_alert/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
ui_interact(user)
/obj/machinery/computer/atmos_alert/ui_interact(mob/user, datum/tgui/ui, datum/tgui/parent_ui)
diff --git a/code/game/machinery/computer/atmos_control.dm b/code/game/machinery/computer/atmos_control.dm
index 4bda92467aba..edf5ecf561a9 100644
--- a/code/game/machinery/computer/atmos_control.dm
+++ b/code/game/machinery/computer/atmos_control.dm
@@ -33,7 +33,7 @@
/obj/machinery/computer/atmoscontrol/attack_ai(mob/user)
ui_interact(user)
-/obj/machinery/computer/atmoscontrol/attack_hand(mob/user, list/params)
+/obj/machinery/computer/atmoscontrol/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..())
return TRUE
ui_interact(user)
diff --git a/code/game/machinery/computer/camera.dm b/code/game/machinery/computer/camera.dm
index 3748b3970ce3..b7630fc39d64 100644
--- a/code/game/machinery/computer/camera.dm
+++ b/code/game/machinery/computer/camera.dm
@@ -28,7 +28,7 @@
/obj/machinery/computer/security/ui_interact(mob/user, datum/tgui/ui = null)
camera.ui_interact(user, ui)
-/obj/machinery/computer/security/attack_hand(mob/user, list/params)
+/obj/machinery/computer/security/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
add_fingerprint(user)
if(machine_stat & (BROKEN|NOPOWER))
return
diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm
index cc7b57599f99..906da036bf0f 100644
--- a/code/game/machinery/computer/cloning.dm
+++ b/code/game/machinery/computer/cloning.dm
@@ -94,7 +94,7 @@
/obj/machinery/computer/cloning/attack_ai(mob/user as mob)
return attack_hand(user)
-/obj/machinery/computer/cloning/attack_hand(mob/user, list/params)
+/obj/machinery/computer/cloning/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
user.set_machine(src)
add_fingerprint(user)
diff --git a/code/game/machinery/computer/command/card.dm b/code/game/machinery/computer/command/card.dm
index 2428138350ee..d306d3bd22d5 100644
--- a/code/game/machinery/computer/command/card.dm
+++ b/code/game/machinery/computer/command/card.dm
@@ -97,7 +97,7 @@
/obj/machinery/computer/card/attack_ai(var/mob/user as mob)
return attack_hand(user)
-/obj/machinery/computer/card/attack_hand(mob/user, list/params)
+/obj/machinery/computer/card/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..())
return
if(machine_stat & (NOPOWER|BROKEN))
diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm
index 401779e66468..afe0b69ef650 100644
--- a/code/game/machinery/computer/communications.dm
+++ b/code/game/machinery/computer/communications.dm
@@ -296,7 +296,7 @@
/obj/machinery/computer/communications/attack_ai(var/mob/user as mob)
return src.attack_hand(user)
-/obj/machinery/computer/communications/attack_hand(mob/user, list/params)
+/obj/machinery/computer/communications/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..())
return
if ((LEGACY_MAP_DATUM) && !(src.z in (LEGACY_MAP_DATUM).contact_levels))
diff --git a/code/game/machinery/computer/crew.dm b/code/game/machinery/computer/crew.dm
index 72bdbcf6831e..8c1265ef08e6 100644
--- a/code/game/machinery/computer/crew.dm
+++ b/code/game/machinery/computer/crew.dm
@@ -23,7 +23,7 @@
/obj/machinery/computer/crew/attack_ai(mob/user)
attack_hand(user)
-/obj/machinery/computer/crew/attack_hand(mob/user, list/params)
+/obj/machinery/computer/crew/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
..()
if(machine_stat & (BROKEN|NOPOWER))
return
diff --git a/code/game/machinery/computer/law.dm b/code/game/machinery/computer/law.dm
index f6d34ea319fd..63601b4ab0e3 100644
--- a/code/game/machinery/computer/law.dm
+++ b/code/game/machinery/computer/law.dm
@@ -35,7 +35,7 @@
..()
-/obj/machinery/computer/aiupload/attack_hand(mob/user, list/params)
+/obj/machinery/computer/aiupload/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(machine_stat & NOPOWER)
to_chat(user, "The upload computer has no power!")
return
@@ -71,7 +71,7 @@
return ..()
-/obj/machinery/computer/borgupload/attack_hand(mob/user, list/params)
+/obj/machinery/computer/borgupload/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(machine_stat& NOPOWER)
to_chat(user, "The upload computer has no power!")
return
diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm
index 40f65b2fb923..5705c2a9dd3a 100644
--- a/code/game/machinery/computer/medical.dm
+++ b/code/game/machinery/computer/medical.dm
@@ -101,7 +101,7 @@
/obj/machinery/computer/med_data/attack_ai(user as mob)
return attack_hand(user)
-/obj/machinery/computer/med_data/attack_hand(mob/user, list/params)
+/obj/machinery/computer/med_data/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..())
return
diff --git a/code/game/machinery/computer/message.dm b/code/game/machinery/computer/message.dm
index d237215ad181..b14ff4229d32 100644
--- a/code/game/machinery/computer/message.dm
+++ b/code/game/machinery/computer/message.dm
@@ -78,7 +78,7 @@
linkedServer = message_servers[1]
return ..()
-/obj/machinery/computer/message_monitor/attack_hand(mob/user, list/params)
+/obj/machinery/computer/message_monitor/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(machine_stat & (NOPOWER|BROKEN))
return
if(!istype(user))
diff --git a/code/game/machinery/computer/pod.dm b/code/game/machinery/computer/pod.dm
index ebeb9a383006..ee3abe342b34 100644
--- a/code/game/machinery/computer/pod.dm
+++ b/code/game/machinery/computer/pod.dm
@@ -46,7 +46,7 @@
/obj/machinery/computer/pod/attack_ai(var/mob/user as mob)
return attack_hand(user)
-/obj/machinery/computer/pod/attack_hand(mob/user, list/params)
+/obj/machinery/computer/pod/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..())
return
@@ -142,7 +142,7 @@
title = "External Airlock Controls"
req_access = list(ACCESS_FACTION_SYNDICATE)
-/obj/machinery/computer/pod/old/syndicate/attack_hand(mob/user, list/params)
+/obj/machinery/computer/pod/old/syndicate/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(!allowed(user))
to_chat(user, "Access Denied")
return
diff --git a/code/game/machinery/computer/prisoner.dm b/code/game/machinery/computer/prisoner.dm
index 9171a6cf6115..e1acca8293c5 100644
--- a/code/game/machinery/computer/prisoner.dm
+++ b/code/game/machinery/computer/prisoner.dm
@@ -16,7 +16,7 @@
/obj/machinery/computer/prisoner/attack_ai(var/mob/user as mob)
return src.attack_hand(user)
-/obj/machinery/computer/prisoner/attack_hand(mob/user, list/params)
+/obj/machinery/computer/prisoner/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..())
return
ui_interact(user)
diff --git a/code/game/machinery/computer/prisonshuttle.dm b/code/game/machinery/computer/prisonshuttle.dm
index 398b877bec3e..04726d584174 100644
--- a/code/game/machinery/computer/prisonshuttle.dm
+++ b/code/game/machinery/computer/prisonshuttle.dm
@@ -27,7 +27,7 @@ var/prison_shuttle_timeleft = 0
/obj/machinery/computer/prison_shuttle/attack_ai(var/mob/user as mob)
return src.attack_hand(user)
-/obj/machinery/computer/prison_shuttle/attack_hand(mob/user, list/params)
+/obj/machinery/computer/prison_shuttle/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(!src.allowed(user) && (!hacked))
to_chat(user, "Access Denied.")
return
diff --git a/code/game/machinery/computer/robot.dm b/code/game/machinery/computer/robot.dm
index 477ab3ec77a0..db382db147eb 100644
--- a/code/game/machinery/computer/robot.dm
+++ b/code/game/machinery/computer/robot.dm
@@ -11,7 +11,7 @@
/obj/machinery/computer/robotics/attack_ai(var/mob/user as mob)
ui_interact(user)
-/obj/machinery/computer/robotics/attack_hand(mob/user, list/params)
+/obj/machinery/computer/robotics/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..())
return
if(machine_stat & (NOPOWER|BROKEN))
diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm
index 981fc2fdfd99..70c3c201074d 100644
--- a/code/game/machinery/computer/security.dm
+++ b/code/game/machinery/computer/security.dm
@@ -87,7 +87,7 @@
/obj/machinery/computer/secure_data/attack_ai(mob/user as mob)
return attack_hand(user)
-/obj/machinery/computer/secure_data/attack_hand(mob/user, list/params)
+/obj/machinery/computer/secure_data/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..())
return
add_fingerprint(user)
diff --git a/code/game/machinery/computer/shutoff_monitor.dm b/code/game/machinery/computer/shutoff_monitor.dm
index aca1c4988522..d362c764390e 100644
--- a/code/game/machinery/computer/shutoff_monitor.dm
+++ b/code/game/machinery/computer/shutoff_monitor.dm
@@ -15,7 +15,7 @@
QDEL_NULL(monitor)
..()
-/obj/machinery/computer/shutoff_monitor/attack_hand(mob/user, list/params)
+/obj/machinery/computer/shutoff_monitor/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
..()
monitor.ui_interact(user)
diff --git a/code/game/machinery/computer/skills.dm b/code/game/machinery/computer/skills.dm
index e026411a300e..de865888aaab 100644
--- a/code/game/machinery/computer/skills.dm
+++ b/code/game/machinery/computer/skills.dm
@@ -65,7 +65,7 @@
return attack_hand(user)
//Someone needs to break down the dat += into chunks instead of long ass lines.
-/obj/machinery/computer/skills/attack_hand(mob/user, list/params)
+/obj/machinery/computer/skills/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..())
return
if ((LEGACY_MAP_DATUM) && !(src.z in (LEGACY_MAP_DATUM).contact_levels))
diff --git a/code/game/machinery/computer/specops_shuttle.dm b/code/game/machinery/computer/specops_shuttle.dm
index 4b565b2ae2e2..5814dbec0544 100644
--- a/code/game/machinery/computer/specops_shuttle.dm
+++ b/code/game/machinery/computer/specops_shuttle.dm
@@ -254,7 +254,7 @@ var/specops_shuttle_timeleft = 0
/obj/machinery/computer/specops_shuttle/emag_act(var/remaining_charges, var/mob/user)
to_chat(user, "The electronic systems in this console are far too advanced for your primitive hacking peripherals.")
-/obj/machinery/computer/specops_shuttle/attack_hand(mob/user, list/params)
+/obj/machinery/computer/specops_shuttle/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(!allowed(user))
to_chat(user, "Access Denied.")
return
diff --git a/code/game/machinery/computer/station_alert.dm b/code/game/machinery/computer/station_alert.dm
index 35b4b3187a4e..4f0ad22ba130 100644
--- a/code/game/machinery/computer/station_alert.dm
+++ b/code/game/machinery/computer/station_alert.dm
@@ -34,7 +34,7 @@
ui_interact(user)
return
-/obj/machinery/computer/station_alert/attack_hand(mob/user, list/params)
+/obj/machinery/computer/station_alert/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
add_fingerprint(user)
if(machine_stat & (BROKEN|NOPOWER))
return
diff --git a/code/game/machinery/computer/supermatter_monitor_tgui.dm b/code/game/machinery/computer/supermatter_monitor_tgui.dm
index c033af582418..6aaf789af6bc 100644
--- a/code/game/machinery/computer/supermatter_monitor_tgui.dm
+++ b/code/game/machinery/computer/supermatter_monitor_tgui.dm
@@ -17,7 +17,7 @@
/obj/machinery/computer/sm_monitor/attack_ai(mob/user)
ui_interact(user)
-/obj/machinery/computer/sm_monitor/attack_hand(mob/user, list/params)
+/obj/machinery/computer/sm_monitor/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..())
return TRUE
ui_interact(user)
diff --git a/code/game/machinery/computer/supply.dm b/code/game/machinery/computer/supply.dm
index 00e2d24145e2..840549abf934 100644
--- a/code/game/machinery/computer/supply.dm
+++ b/code/game/machinery/computer/supply.dm
@@ -35,7 +35,7 @@
/obj/machinery/computer/supplycomp/attack_ai(var/mob/user as mob)
return attack_hand(user)
-/obj/machinery/computer/supplycomp/attack_hand(mob/user, list/params)
+/obj/machinery/computer/supplycomp/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..())
return
if(!allowed(user))
diff --git a/code/game/machinery/computer/syndicate_specops_shuttle.dm b/code/game/machinery/computer/syndicate_specops_shuttle.dm
index 1e681eb33c87..306a44b3afff 100644
--- a/code/game/machinery/computer/syndicate_specops_shuttle.dm
+++ b/code/game/machinery/computer/syndicate_specops_shuttle.dm
@@ -191,7 +191,7 @@ var/syndicate_elite_shuttle_timeleft = 0
/obj/machinery/computer/syndicate_elite_shuttle/emag_act(var/remaining_charges, var/mob/user)
to_chat(user, "The electronic systems in this console are far too advanced for your primitive hacking peripherals.")
-/obj/machinery/computer/syndicate_elite_shuttle/attack_hand(mob/user, list/params)
+/obj/machinery/computer/syndicate_elite_shuttle/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(!allowed(user))
to_chat(user, "Access Denied.")
return
diff --git a/code/game/machinery/computer/timeclock_vr.dm b/code/game/machinery/computer/timeclock_vr.dm
index 79bc9bbfb951..55f5bf30f726 100644
--- a/code/game/machinery/computer/timeclock_vr.dm
+++ b/code/game/machinery/computer/timeclock_vr.dm
@@ -65,7 +65,7 @@
return
. = ..()
-/obj/machinery/computer/timeclock/attack_hand(mob/user, list/params)
+/obj/machinery/computer/timeclock/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..())
return
user.set_machine(src)
diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm
index 237dd9408a77..6f4ef4ab70b5 100644
--- a/code/game/machinery/cryo.dm
+++ b/code/game/machinery/cryo.dm
@@ -82,7 +82,7 @@
if(occupant == user && !user.stat)
go_out()
-/obj/machinery/atmospherics/component/unary/cryo_cell/attack_hand(mob/user, list/params)
+/obj/machinery/atmospherics/component/unary/cryo_cell/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
nano_ui_interact(user)
/**
diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm
index afed66b803fb..4b803e871166 100644
--- a/code/game/machinery/cryopod.dm
+++ b/code/game/machinery/cryopod.dm
@@ -99,7 +99,7 @@
/obj/machinery/computer/cryopod/attack_ai()
attack_hand()
-/obj/machinery/computer/cryopod/attack_hand(mob/user = usr)
+/obj/machinery/computer/cryopod/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(machine_stat & (NOPOWER|BROKEN))
return
..()
diff --git a/code/game/machinery/deployable_vr.dm b/code/game/machinery/deployable_vr.dm
index 55b62ce1844e..3b50fc26d7c7 100644
--- a/code/game/machinery/deployable_vr.dm
+++ b/code/game/machinery/deployable_vr.dm
@@ -63,7 +63,7 @@
. = ..()
untopple()
-/obj/structure/barricade/cutout/attack_hand(mob/user, list/params)
+/obj/structure/barricade/cutout/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if((. = ..()))
return
diff --git a/code/game/machinery/door_control.dm b/code/game/machinery/door_control.dm
index 648181e273e4..7280a965dcc8 100644
--- a/code/game/machinery/door_control.dm
+++ b/code/game/machinery/door_control.dm
@@ -34,7 +34,7 @@
playsound(src.loc, /datum/soundbyte/grouped/sparks, 100, TRUE)
return 1
-/obj/machinery/button/remote/attack_hand(mob/user, list/params)
+/obj/machinery/button/remote/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..())
return
diff --git a/code/game/machinery/doorbell_vr.dm b/code/game/machinery/doorbell_vr.dm
index 1379236cf3d4..c2bd4e3c45ed 100644
--- a/code/game/machinery/doorbell_vr.dm
+++ b/code/game/machinery/doorbell_vr.dm
@@ -111,7 +111,7 @@
else
icon_state = "doorbell-standby"
-/obj/machinery/button/doorbell/attack_hand(mob/user, list/params)
+/obj/machinery/button/doorbell/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
if(..())
return
diff --git a/code/game/machinery/doors/airlock/airlock.dm b/code/game/machinery/doors/airlock/airlock.dm
index 541fb37f2597..7fd4d8f73dfe 100644
--- a/code/game/machinery/doors/airlock/airlock.dm
+++ b/code/game/machinery/doors/airlock/airlock.dm
@@ -646,7 +646,7 @@ About the new airlock wires panel:
last_spark = world.time
return ..()
-/obj/machinery/door/airlock/attack_hand(mob/user, list/params)
+/obj/machinery/door/airlock/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(!istype(usr, /mob/living/silicon))
if(src.isElectrified())
if(src.shock(user, 100))
diff --git a/code/game/machinery/doors/airlock/airlock_control.dm b/code/game/machinery/doors/airlock/airlock_control.dm
index c71c236d47e5..9fffbae73405 100644
--- a/code/game/machinery/doors/airlock/airlock_control.dm
+++ b/code/game/machinery/doors/airlock/airlock_control.dm
@@ -177,7 +177,7 @@
else
icon_state = "airlock_sensor_off"
-/obj/machinery/airlock_sensor/attack_hand(mob/user, list/params)
+/obj/machinery/airlock_sensor/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
var/datum/signal/signal = new
signal.transmission_method = TRANSMISSION_RADIO //radio signal
signal.data["tag"] = master_tag
@@ -281,7 +281,7 @@
return
..()
-/obj/machinery/access_button/attack_hand(mob/user, list/params)
+/obj/machinery/access_button/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
..()
if(!allowed(user))
to_chat(user, "Access Denied")
diff --git a/code/game/machinery/doors/blast_door.dm b/code/game/machinery/doors/blast_door.dm
index b9041727b7d7..0e7fa26bc677 100644
--- a/code/game/machinery/doors/blast_door.dm
+++ b/code/game/machinery/doors/blast_door.dm
@@ -116,7 +116,7 @@
//Proc: attack_hand
//Description: Attacked with empty hand. Only to allow special attack_bys.
-/obj/machinery/door/blast/attack_hand(mob/user, list/params)
+/obj/machinery/door/blast/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(istype(user, /mob/living/carbon/human))
var/mob/living/carbon/human/X = user
if(istype(X.species, /datum/species/xenos))
diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm
index 9dab9b833db9..0042f37be31e 100644
--- a/code/game/machinery/doors/door.dm
+++ b/code/game/machinery/doors/door.dm
@@ -155,7 +155,7 @@
/obj/machinery/door/attack_ai(mob/user as mob)
return src.attack_hand(user)
-/obj/machinery/door/attack_hand(mob/user, list/params)
+/obj/machinery/door/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user.a_intent == INTENT_HARM)
return ..()
return src.attackby(user, user)
diff --git a/code/game/machinery/doors/door_timer.dm b/code/game/machinery/doors/door_timer.dm
index e45245f39a8a..cd5690419e7b 100644
--- a/code/game/machinery/doors/door_timer.dm
+++ b/code/game/machinery/doors/door_timer.dm
@@ -160,7 +160,7 @@
/obj/machinery/door_timer/attack_ai(mob/user)
return src.attack_hand(user)
-/obj/machinery/door_timer/attack_hand(mob/user, list/params)
+/obj/machinery/door_timer/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..())
return TRUE
ui_interact(user)
diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm
index 0000e5c416a8..ebe353bb3e0d 100644
--- a/code/game/machinery/doors/firedoor.dm
+++ b/code/game/machinery/doors/firedoor.dm
@@ -170,7 +170,7 @@ GLOBAL_LIST_INIT(firelock_align_types, typecacheof(list(
attack_hand(M)
return 0
-/obj/machinery/door/firedoor/attack_hand(mob/user, list/params)
+/obj/machinery/door/firedoor/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
add_fingerprint(user)
if(operating)
return//Already doing something.
diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm
index 95921c715c2f..bf8007ae0194 100644
--- a/code/game/machinery/doors/windowdoor.dm
+++ b/code/game/machinery/doors/windowdoor.dm
@@ -145,7 +145,7 @@
/obj/machinery/door/window/attack_ai(mob/user as mob)
return src.attack_hand(user)
-/obj/machinery/door/window/attack_hand(mob/user, list/params)
+/obj/machinery/door/window/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user.a_intent == INTENT_HARM)
return ..()
src.add_fingerprint(user)
diff --git a/code/game/machinery/embedded_controller/embedded_controller_base.dm b/code/game/machinery/embedded_controller/embedded_controller_base.dm
index 5cc1846c54aa..137e78cdbbbf 100644
--- a/code/game/machinery/embedded_controller/embedded_controller_base.dm
+++ b/code/game/machinery/embedded_controller/embedded_controller_base.dm
@@ -48,7 +48,7 @@
/obj/machinery/embedded_controller/attack_ai(mob/user as mob)
ui_interact(user)
-/obj/machinery/embedded_controller/attack_hand(mob/user, list/params)
+/obj/machinery/embedded_controller/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(!user.IsAdvancedToolUser())
return 0
diff --git a/code/game/machinery/event.dm b/code/game/machinery/event.dm
index aabe77a9a12f..8fc316d2498f 100644
--- a/code/game/machinery/event.dm
+++ b/code/game/machinery/event.dm
@@ -65,7 +65,7 @@ The goal here is to create esoteric or niche, specialized machines that follow t
else
return
-/obj/machinery/magma_pump/attack_hand(mob/user, list/params)
+/obj/machinery/magma_pump/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
interact(user)
/obj/machinery/magma_pump/interact(mob/user)
@@ -211,7 +211,7 @@ The goal here is to create esoteric or niche, specialized machines that follow t
else
return
-/obj/machinery/magma_reservoir/attack_hand(mob/user, list/params)
+/obj/machinery/magma_reservoir/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
interact(user)
/obj/machinery/magma_reservoir/interact(mob/user)
diff --git a/code/game/machinery/exonet_node.dm b/code/game/machinery/exonet_node.dm
index fb6c5c49b8a2..ac1e50634956 100644
--- a/code/game/machinery/exonet_node.dm
+++ b/code/game/machinery/exonet_node.dm
@@ -103,7 +103,7 @@ GLOBAL_LIST_EMPTY(exonet_nodes)
// Proc: attack_hand()
// Parameters: 1 (user - the person clicking on the machine)
// Description: Opens the TGUI interface with ui_interact()
-/obj/machinery/exonet_node/attack_hand(mob/user, list/params)
+/obj/machinery/exonet_node/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
ui_interact(user)
// Proc: ui_interact()
diff --git a/code/game/machinery/fire_alarm.dm b/code/game/machinery/fire_alarm.dm
index 40757b9a3aae..edce90384ca9 100644
--- a/code/game/machinery/fire_alarm.dm
+++ b/code/game/machinery/fire_alarm.dm
@@ -178,7 +178,7 @@ CREATE_WALL_MOUNTING_TYPES_SHIFTED(/obj/machinery/fire_alarm/alarms_hidden, 21)
spawn(rand(0,15))
update_icon()
-/obj/machinery/fire_alarm/attack_hand(mob/user, list/params)
+/obj/machinery/fire_alarm/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user.stat || machine_stat & (NOPOWER | BROKEN))
return
diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm
index 0dc55edd94e7..fd2df07fd4a6 100644
--- a/code/game/machinery/flasher.dm
+++ b/code/game/machinery/flasher.dm
@@ -130,7 +130,7 @@
name = "flasher button"
desc = "A remote control switch for a mounted flasher."
-/obj/machinery/button/flasher/attack_hand(mob/user, list/params)
+/obj/machinery/button/flasher/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..())
return
diff --git a/code/game/machinery/floodlight.dm b/code/game/machinery/floodlight.dm
index fd2ba4b08a02..8548bc99021d 100644
--- a/code/game/machinery/floodlight.dm
+++ b/code/game/machinery/floodlight.dm
@@ -67,7 +67,7 @@
if(!turn_on(TRUE))
to_chat(user, "You try to turn on \the [src] but it does not work.")
-/obj/machinery/floodlight/attack_hand(mob/user, list/params)
+/obj/machinery/floodlight/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(open && cell)
user.grab_item_from_interacted_with(cell, src)
diff --git a/code/game/machinery/floor_inflatables.dm b/code/game/machinery/floor_inflatables.dm
index 7e87f68451a8..2a79c18e4d31 100644
--- a/code/game/machinery/floor_inflatables.dm
+++ b/code/game/machinery/floor_inflatables.dm
@@ -47,7 +47,7 @@
else
to_chat(user, "[C] is to large for [src]")
-/obj/machinery/floor_inflatables/attack_hand(mob/user, list/params)
+/obj/machinery/floor_inflatables/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
. = ..()
var/confirm = input(user, "Do you want to trigger [src]'s deployment?","Trigger Floormount") as null|anything in list("Yes","No")
if(confirm && confirm == "Yes")
diff --git a/code/game/machinery/floor_light.dm b/code/game/machinery/floor_light.dm
index 510b838e4900..6975c0a4f182 100644
--- a/code/game/machinery/floor_light.dm
+++ b/code/game/machinery/floor_light.dm
@@ -62,7 +62,7 @@ var/list/floor_light_cache = list()
attack_hand(user)
return
-/obj/machinery/floor_light/attack_hand(mob/user, list/params)
+/obj/machinery/floor_light/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user.a_intent == INTENT_HARM && !issmall(user))
if(!isnull(damaged) && !(machine_stat & BROKEN))
diff --git a/code/game/machinery/floorlayer.dm b/code/game/machinery/floorlayer.dm
index f2cb0f8e2c78..c52162902c1c 100644
--- a/code/game/machinery/floorlayer.dm
+++ b/code/game/machinery/floorlayer.dm
@@ -32,7 +32,7 @@
old_turf = isturf(loc)? loc : null
-/obj/machinery/floorlayer/attack_hand(mob/user, list/params)
+/obj/machinery/floorlayer/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
on=!on
user.visible_message( \
SPAN_NOTICE("[user] has [!on?"de":""]activated \the [src]."), \
diff --git a/code/game/machinery/holosign.dm b/code/game/machinery/holosign.dm
index 4208e4973304..7b28e9b6766d 100644
--- a/code/game/machinery/holosign.dm
+++ b/code/game/machinery/holosign.dm
@@ -59,7 +59,7 @@
icon = 'icons/obj/power.dmi'
icon_state = "crema_switch"
-/obj/machinery/button/holosign/attack_hand(mob/user, list/params)
+/obj/machinery/button/holosign/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..())
return
diff --git a/code/game/machinery/igniter.dm b/code/game/machinery/igniter.dm
index a4d038ddb312..21b86283ba57 100644
--- a/code/game/machinery/igniter.dm
+++ b/code/game/machinery/igniter.dm
@@ -13,7 +13,7 @@
/obj/machinery/igniter/attack_ai(mob/user)
return attack_hand(user)
-/obj/machinery/igniter/attack_hand(mob/user, list/params)
+/obj/machinery/igniter/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..())
return
@@ -121,7 +121,7 @@
name = "ignition switch"
desc = "A remote control switch for a mounted igniter."
-/obj/machinery/button/ignition/attack_hand(mob/user, list/params)
+/obj/machinery/button/ignition/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..())
return
diff --git a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm
index c2d4b3020add..c75979412d70 100644
--- a/code/game/machinery/iv_drip.dm
+++ b/code/game/machinery/iv_drip.dm
@@ -166,7 +166,7 @@
else
return ..()
-/obj/machinery/iv_drip/attack_hand(mob/user, list/params)
+/obj/machinery/iv_drip/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(reagent_container)
reagent_container.loc = get_turf(src)
reagent_container = null
diff --git a/code/game/machinery/jukebox.dm b/code/game/machinery/jukebox.dm
index 25758ac5be7d..0d687a25a999 100644
--- a/code/game/machinery/jukebox.dm
+++ b/code/game/machinery/jukebox.dm
@@ -273,7 +273,7 @@
/obj/machinery/media/jukebox/attack_ai(mob/user)
return src.attack_hand(user)
-/obj/machinery/media/jukebox/attack_hand(mob/user, list/params)
+/obj/machinery/media/jukebox/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
interact(user)
/obj/machinery/media/jukebox/proc/explode()
diff --git a/code/game/machinery/lightswitch.dm b/code/game/machinery/lightswitch.dm
index 21a0dddf6323..4a44849248b9 100644
--- a/code/game/machinery/lightswitch.dm
+++ b/code/game/machinery/lightswitch.dm
@@ -52,7 +52,7 @@
/obj/machinery/light_switch/examine(mob/user, dist)
. += SPAN_NOTICE("A light switch. It is [on? "on" : "off"].")
-/obj/machinery/light_switch/attack_hand(mob/user, list/params)
+/obj/machinery/light_switch/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
on = !on
diff --git a/code/game/machinery/magnet.dm b/code/game/machinery/magnet.dm
index 00c9426b463c..a9f4e837fa54 100644
--- a/code/game/machinery/magnet.dm
+++ b/code/game/machinery/magnet.dm
@@ -248,7 +248,7 @@
/obj/machinery/magnetic_controller/attack_ai(mob/user)
return attack_hand(user)
-/obj/machinery/magnetic_controller/attack_hand(mob/user, list/params)
+/obj/machinery/magnetic_controller/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(machine_stat & (BROKEN|NOPOWER))
return
user.set_machine(src)
diff --git a/code/game/machinery/misc/bioscan_antenna.dm b/code/game/machinery/misc/bioscan_antenna.dm
index 15dab56fba6a..22da7d056c67 100644
--- a/code/game/machinery/misc/bioscan_antenna.dm
+++ b/code/game/machinery/misc/bioscan_antenna.dm
@@ -58,7 +58,7 @@ GLOBAL_LIST_EMPTY(bioscan_antenna_list)
.[TOOL_MULTITOOL] = "change network"
return merge_double_lazy_assoc_list(., ..())
-/obj/machinery/bioscan_antenna/attack_hand(mob/user, list/params)
+/obj/machinery/bioscan_antenna/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
// todo: better xenomorphs
if(ishuman(user))
var/mob/living/carbon/human/H = user
diff --git a/code/game/machinery/navbeacon.dm b/code/game/machinery/navbeacon.dm
index 2f46990e8c84..5bc31cd85761 100644
--- a/code/game/machinery/navbeacon.dm
+++ b/code/game/machinery/navbeacon.dm
@@ -92,7 +92,7 @@ var/global/list/navbeacons = list() // no I don't like putting this in, but it w
/obj/machinery/navbeacon/attack_ai(var/mob/user)
interact(user, 1)
-/obj/machinery/navbeacon/attack_hand(mob/user, list/params)
+/obj/machinery/navbeacon/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(!user.IsAdvancedToolUser())
return FALSE
diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm
index 9846a08a5260..45445346e415 100644
--- a/code/game/machinery/newscaster.dm
+++ b/code/game/machinery/newscaster.dm
@@ -250,7 +250,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
/obj/machinery/newscaster/attack_ai(mob/user)
return attack_hand(user)
-/obj/machinery/newscaster/attack_hand(mob/user, list/params) //########### THE MAIN BEEF IS HERE! And in the proc below this...############
+/obj/machinery/newscaster/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(!ispowered || isbroken)
return
diff --git a/code/game/machinery/nuclear_bomb.dm b/code/game/machinery/nuclear_bomb.dm
index d7f7a571d1d5..836768f4b54a 100644
--- a/code/game/machinery/nuclear_bomb.dm
+++ b/code/game/machinery/nuclear_bomb.dm
@@ -162,7 +162,7 @@ var/bomb_set
return
..()
-/obj/machinery/nuclearbomb/attack_hand(mob/user, list/params)
+/obj/machinery/nuclearbomb/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(extended)
if(!ishuman(user))
to_chat(user, "You don't have the dexterity to do this!")
diff --git a/code/game/machinery/oxygen_pump.dm b/code/game/machinery/oxygen_pump.dm
index 05cdf8d22a0d..6c7cd305216f 100644
--- a/code/game/machinery/oxygen_pump.dm
+++ b/code/game/machinery/oxygen_pump.dm
@@ -51,7 +51,7 @@
attach_mask(target)
src.add_fingerprint(usr)
-/obj/machinery/oxygen_pump/attack_hand(mob/user, list/params)
+/obj/machinery/oxygen_pump/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if((machine_stat & MAINT) && tank)
user.visible_message( \
SPAN_NOTICE("\The [user] removes \the [tank] from \the [src]."), \
diff --git a/code/game/machinery/pda_multicaster.dm b/code/game/machinery/pda_multicaster.dm
index 324fc042db0d..7273710bbf41 100644
--- a/code/game/machinery/pda_multicaster.dm
+++ b/code/game/machinery/pda_multicaster.dm
@@ -46,7 +46,7 @@
/obj/machinery/pda_multicaster/attack_ai(mob/user)
attack_hand(user)
-/obj/machinery/pda_multicaster/attack_hand(mob/user, list/params)
+/obj/machinery/pda_multicaster/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
toggle_power(user)
/obj/machinery/pda_multicaster/proc/toggle_power(mob/user)
diff --git a/code/game/machinery/pipe/pipe_dispenser.dm b/code/game/machinery/pipe/pipe_dispenser.dm
index 57c717216504..d20efd83cccc 100644
--- a/code/game/machinery/pipe/pipe_dispenser.dm
+++ b/code/game/machinery/pipe/pipe_dispenser.dm
@@ -12,7 +12,7 @@
var/disposals = FALSE
-/obj/machinery/pipedispenser/attack_hand(mob/user, list/params)
+/obj/machinery/pipedispenser/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if((. = ..()))
return
ui_interact(user)
diff --git a/code/game/machinery/pointdefense.dm b/code/game/machinery/pointdefense.dm
index 9fb3e3b69396..7be2b8d14300 100644
--- a/code/game/machinery/pointdefense.dm
+++ b/code/game/machinery/pointdefense.dm
@@ -39,7 +39,7 @@ GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/power/pointdefense)
ui = new(user, src, "PointDefenseControl") // 400, 600
ui.open()
-/obj/machinery/pointdefense_control/attack_hand(mob/user, list/params)
+/obj/machinery/pointdefense_control/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..())
return TRUE
ui_interact(user)
diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm
index b016f4d0a5c3..5bddf8fc4db8 100644
--- a/code/game/machinery/recharger.dm
+++ b/code/game/machinery/recharger.dm
@@ -101,7 +101,7 @@
else if(default_part_replacement(user, G))
return
-/obj/machinery/recharger/attack_hand(mob/user, list/params)
+/obj/machinery/recharger/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(istype(user,/mob/living/silicon))
return
diff --git a/code/game/machinery/recipe_lookup.dm b/code/game/machinery/recipe_lookup.dm
index 3116a8e8ea5c..8fe6954bd83a 100644
--- a/code/game/machinery/recipe_lookup.dm
+++ b/code/game/machinery/recipe_lookup.dm
@@ -9,7 +9,7 @@
/obj/machinery/recipe_lookup/proc/display_options()
return tgui_input_list(usr, "Pick a [result_type_name] to view its recipe.", "Select [result_type_name]", recipe_list)
-/obj/machinery/recipe_lookup/attack_hand(mob/user)
+/obj/machinery/recipe_lookup/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
// regular use checks
if (!isliving(user))
return FALSE
diff --git a/code/game/machinery/records_scanner.dm b/code/game/machinery/records_scanner.dm
index 5ba7d9db0a76..6c1ac78a9fe3 100644
--- a/code/game/machinery/records_scanner.dm
+++ b/code/game/machinery/records_scanner.dm
@@ -36,7 +36,7 @@ obj/machinery/scanner
else
icon_state = "scanner_idle"
-obj/machinery/scanner/attack_hand(mob/user, list/params)
+obj/machinery/scanner/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(stat & NOPOWER)
return
if(!ishuman(user) || lastuser == user.real_name)
diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm
index 3c24ce2293e7..3f7b01c32662 100644
--- a/code/game/machinery/requests_console.dm
+++ b/code/game/machinery/requests_console.dm
@@ -119,7 +119,7 @@ var/list/obj/machinery/requests_console/allConsoles = list()
req_console_information -= department
return ..()
-/obj/machinery/requests_console/attack_hand(mob/user, list/params)
+/obj/machinery/requests_console/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..(user))
return
nano_ui_interact(user)
diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm
index 6dad1ded03ec..4f2fd5f44d85 100644
--- a/code/game/machinery/spaceheater.dm
+++ b/code/game/machinery/spaceheater.dm
@@ -74,7 +74,7 @@
..()
return
-/obj/machinery/space_heater/attack_hand(mob/user, list/params)
+/obj/machinery/space_heater/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
interact(user)
/obj/machinery/space_heater/interact(mob/user as mob)
@@ -232,7 +232,7 @@
return
..()
-/obj/machinery/power/thermoregulator/attack_hand(mob/user, list/params)
+/obj/machinery/power/thermoregulator/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
add_fingerprint(user)
interact(user)
diff --git a/code/game/machinery/suit_storage/suit_cycler.dm b/code/game/machinery/suit_storage/suit_cycler.dm
index dbdc44a1ea6a..e17e8357b43f 100644
--- a/code/game/machinery/suit_storage/suit_cycler.dm
+++ b/code/game/machinery/suit_storage/suit_cycler.dm
@@ -260,7 +260,7 @@
updateUsrDialog()
return 1
-/obj/machinery/suit_cycler/attack_hand(mob/user, list/params)
+/obj/machinery/suit_cycler/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
add_fingerprint(user)
diff --git a/code/game/machinery/suit_storage/suit_storage_massive.dm b/code/game/machinery/suit_storage/suit_storage_massive.dm
index dd5dc3cf21c6..773e6ab6e280 100644
--- a/code/game/machinery/suit_storage/suit_storage_massive.dm
+++ b/code/game/machinery/suit_storage/suit_storage_massive.dm
@@ -65,7 +65,7 @@
dump_everything()
qdel(src)
-/obj/machinery/suit_storage_closet/attack_hand(mob/user, list/params)
+/obj/machinery/suit_storage_closet/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..())
return
if(machine_stat & NOPOWER)
diff --git a/code/game/machinery/suit_storage/suit_storage_unit.dm b/code/game/machinery/suit_storage/suit_storage_unit.dm
index a1b8ff57cca6..cb80c6ff01f4 100644
--- a/code/game/machinery/suit_storage/suit_storage_unit.dm
+++ b/code/game/machinery/suit_storage/suit_storage_unit.dm
@@ -78,7 +78,7 @@
dump_everything()
qdel(src)
-/obj/machinery/suit_storage_unit/attack_hand(mob/user, list/params)
+/obj/machinery/suit_storage_unit/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..())
return
if(machine_stat & NOPOWER)
diff --git a/code/game/machinery/supplybeacon.dm b/code/game/machinery/supplybeacon.dm
index f3337336291c..7b7c5bbf476e 100644
--- a/code/game/machinery/supplybeacon.dm
+++ b/code/game/machinery/supplybeacon.dm
@@ -57,7 +57,7 @@
return
return ..()
-/obj/machinery/power/supply_beacon/attack_hand(mob/user, list/params)
+/obj/machinery/power/supply_beacon/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(expended)
update_use_power(USE_POWER_OFF)
diff --git a/code/game/machinery/syndicatebeacon.dm b/code/game/machinery/syndicatebeacon.dm
index 6148d58e0681..481d8d39008f 100644
--- a/code/game/machinery/syndicatebeacon.dm
+++ b/code/game/machinery/syndicatebeacon.dm
@@ -15,7 +15,7 @@
var/selfdestructing = FALSE
var/charges = 1
-/obj/machinery/syndicate_beacon/attack_hand(mob/user, list/params)
+/obj/machinery/syndicate_beacon/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
usr.set_machine(src)
var/dat = "Scanning [pick("retina pattern", "voice print", "fingerprints", "dna sequence")]...
Identity confirmed,
"
if(istype(user, /mob/living/carbon/human) || istype(user, /mob/living/silicon/ai))
@@ -108,7 +108,7 @@
/obj/machinery/power/singularity_beacon/attack_ai(mob/user)
return
-/obj/machinery/power/singularity_beacon/attack_hand(mob/user, list/params)
+/obj/machinery/power/singularity_beacon/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(anchored)
return active ? Deactivate(user) : Activate(user)
else
@@ -159,7 +159,7 @@
//! ## VR FILE MERGE ## !//
// Virgo modified syndie beacon, does not give objectives
-/obj/machinery/syndicate_beacon/virgo/attack_hand(mob/user, list/params)
+/obj/machinery/syndicate_beacon/virgo/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
usr.set_machine(src)
var/dat = "Scanning [pick("retina pattern", "voice print", "fingerprints", "dna sequence")]...
Identity confirmed,
"
if(istype(user, /mob/living/carbon/human) || istype(user, /mob/living/silicon/ai))
diff --git a/code/game/machinery/telecomms/_telecomms.dm b/code/game/machinery/telecomms/_telecomms.dm
index 7c9f141ca39e..65a6994ea967 100644
--- a/code/game/machinery/telecomms/_telecomms.dm
+++ b/code/game/machinery/telecomms/_telecomms.dm
@@ -363,7 +363,7 @@
return UI_CLOSE
. = ..()
-/obj/machinery/telecomms/attack_hand(mob/user, list/params)
+/obj/machinery/telecomms/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
ui_interact(user)
/obj/machinery/telecomms/ui_interact(mob/user, datum/tgui/ui)
diff --git a/code/game/machinery/telecomms/logbrowser.dm b/code/game/machinery/telecomms/logbrowser.dm
index 94977779139f..a6673e2ed6de 100644
--- a/code/game/machinery/telecomms/logbrowser.dm
+++ b/code/game/machinery/telecomms/logbrowser.dm
@@ -62,7 +62,7 @@
return data
-/obj/machinery/computer/telecomms/server/attack_hand(mob/user, list/params)
+/obj/machinery/computer/telecomms/server/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(machine_stat & (BROKEN|NOPOWER))
return
ui_interact(user)
diff --git a/code/game/machinery/telecomms/message_server.dm b/code/game/machinery/telecomms/message_server.dm
index 56b0aec8744a..3f5bcda9869d 100644
--- a/code/game/machinery/telecomms/message_server.dm
+++ b/code/game/machinery/telecomms/message_server.dm
@@ -140,7 +140,7 @@ var/global/list/obj/machinery/message_server/message_servers = list()
Console.set_light(2)
-/obj/machinery/message_server/attack_hand(mob/user, list/params)
+/obj/machinery/message_server/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
// to_chat(user, "There seem to be some parts missing from this server. They should arrive on the station in a few days, give or take a few CentCom delays.")
to_chat(user, "You toggle PDA message passing from [active ? "On" : "Off"] to [active ? "Off" : "On"]")
active = !active
diff --git a/code/game/machinery/telecomms/telemonitor.dm b/code/game/machinery/telecomms/telemonitor.dm
index eff16361e954..ddf0bc204dd3 100644
--- a/code/game/machinery/telecomms/telemonitor.dm
+++ b/code/game/machinery/telecomms/telemonitor.dm
@@ -50,7 +50,7 @@
return data
-/obj/machinery/computer/telecomms/monitor/attack_hand(mob/user, list/params)
+/obj/machinery/computer/telecomms/monitor/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(machine_stat & (BROKEN|NOPOWER))
return
ui_interact(user)
diff --git a/code/game/machinery/teleporter/console.dm b/code/game/machinery/teleporter/console.dm
index d2c7551f9240..71aa5f335f4c 100644
--- a/code/game/machinery/teleporter/console.dm
+++ b/code/game/machinery/teleporter/console.dm
@@ -86,7 +86,7 @@
return
-/obj/machinery/computer/teleporter/attack_hand(mob/user, list/params)
+/obj/machinery/computer/teleporter/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
ui_interact(user)
/obj/machinery/computer/teleporter/ui_interact(mob/user, datum/tgui/ui, datum/tgui/parent_ui)
diff --git a/code/game/machinery/teleporter/projector.dm b/code/game/machinery/teleporter/projector.dm
index d304f36e6d99..5d2922237cc6 100644
--- a/code/game/machinery/teleporter/projector.dm
+++ b/code/game/machinery/teleporter/projector.dm
@@ -182,7 +182,7 @@
/obj/machinery/tele_projector/attack_ai()
attack_hand()
-/obj/machinery/tele_projector/attack_hand(mob/user, list/params)
+/obj/machinery/tele_projector/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(engaged)
disengage()
else
diff --git a/code/game/machinery/turrets/turret.dm b/code/game/machinery/turrets/turret.dm
index c469d5d39eb6..a22964f65fd1 100644
--- a/code/game/machinery/turrets/turret.dm
+++ b/code/game/machinery/turrets/turret.dm
@@ -288,7 +288,7 @@
nano_ui_interact(user)
-/obj/machinery/porta_turret/attack_hand(mob/user, list/params)
+/obj/machinery/porta_turret/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(isLocked(user))
return
diff --git a/code/game/machinery/turrets/turret_control.dm b/code/game/machinery/turrets/turret_control.dm
index e01425d540a2..b163c6a66656 100644
--- a/code/game/machinery/turrets/turret_control.dm
+++ b/code/game/machinery/turrets/turret_control.dm
@@ -118,7 +118,7 @@
nano_ui_interact(user)
-/obj/machinery/turretid/attack_hand(mob/user, list/params)
+/obj/machinery/turretid/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(isLocked(user))
return
diff --git a/code/game/machinery/turrets/turret_frame.dm b/code/game/machinery/turrets/turret_frame.dm
index 220d30456661..8a3c97076fcb 100644
--- a/code/game/machinery/turrets/turret_frame.dm
+++ b/code/game/machinery/turrets/turret_frame.dm
@@ -103,7 +103,7 @@
to_chat(user, "You add the prox sensor to the turret.")
return
- //attack_hand() removes the gun
+ //attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(5)
if(I.is_screwdriver())
@@ -112,7 +112,7 @@
to_chat(user, "You close the internal access hatch.")
return
- //attack_hand() removes the prox sensor
+ //attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(6)
if(I.is_material_stack_of(/datum/material/steel))
@@ -173,7 +173,7 @@
..()
-/obj/machinery/porta_turret_construct/attack_hand(mob/user, list/params)
+/obj/machinery/porta_turret_construct/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
switch(build_step)
if(4)
if(!installation)
diff --git a/code/game/machinery/vending/vending.dm b/code/game/machinery/vending/vending.dm
index a47f2cf8da65..999a8526eb4d 100644
--- a/code/game/machinery/vending/vending.dm
+++ b/code/game/machinery/vending/vending.dm
@@ -283,7 +283,7 @@
/obj/machinery/vending/attack_ai(mob/user as mob)
return attack_hand(user)
-/obj/machinery/vending/attack_hand(mob/user, list/params)
+/obj/machinery/vending/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(machine_stat & (BROKEN|NOPOWER))
return
diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm
index db2d8c8b4d29..7c0232aa5b14 100644
--- a/code/game/machinery/washing_machine.dm
+++ b/code/game/machinery/washing_machine.dm
@@ -120,7 +120,7 @@
..()
update_icon()
-/obj/machinery/washing_machine/attack_hand(mob/user, list/params)
+/obj/machinery/washing_machine/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
switch(state)
if(1)
state = 2
diff --git a/code/game/machinery/wishgranter.dm b/code/game/machinery/wishgranter.dm
index cd2ffb6a64d4..c233bd51cdf3 100644
--- a/code/game/machinery/wishgranter.dm
+++ b/code/game/machinery/wishgranter.dm
@@ -9,7 +9,7 @@
var/charges = 1
var/insisting = 0
-/obj/machinery/wish_granter/attack_hand(mob/user, list/params)
+/obj/machinery/wish_granter/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
usr.set_machine(src)
if(charges <= 0)
diff --git a/code/game/objects/effects/debris/cleanable/blood.dm b/code/game/objects/effects/debris/cleanable/blood.dm
index 095f46374693..220680d47bd7 100644
--- a/code/game/objects/effects/debris/cleanable/blood.dm
+++ b/code/game/objects/effects/debris/cleanable/blood.dm
@@ -132,7 +132,7 @@ var/global/list/image/splatter_cache=list()
add_atom_colour(newcolor, FIXED_COLOUR_PRIORITY)
amount = 0
-/obj/effect/debris/cleanable/blood/attack_hand(mob/user, list/params)
+/obj/effect/debris/cleanable/blood/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
. = ..()
if(.)
return
diff --git a/code/game/objects/effects/debris/cleanable/misc.dm b/code/game/objects/effects/debris/cleanable/misc.dm
index 8a9ead843099..41866828989a 100644
--- a/code/game/objects/effects/debris/cleanable/misc.dm
+++ b/code/game/objects/effects/debris/cleanable/misc.dm
@@ -15,7 +15,7 @@
icon_state = "ash"
anchored = 1
-/obj/effect/debris/cleanable/ash/attack_hand(mob/user, list/params)
+/obj/effect/debris/cleanable/ash/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
to_chat(user, "[src] sifts through your fingers.")
var/turf/simulated/floor/F = get_turf(src)
if (istype(F))
diff --git a/code/game/objects/effects/decals/remains.dm b/code/game/objects/effects/decals/remains.dm
index b8e7644be70c..95ea5bd8b49b 100644
--- a/code/game/objects/effects/decals/remains.dm
+++ b/code/game/objects/effects/decals/remains.dm
@@ -55,7 +55,7 @@
desc = "They look like human remains. They've been here a long time."
icon_state = "mummified2"
-/obj/effect/decal/remains/attack_hand(mob/user, list/params)
+/obj/effect/decal/remains/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
to_chat(user, "[src] sinks together into a pile of ash.")
var/turf/simulated/floor/F = get_turf(src)
if (istype(F))
diff --git a/code/game/objects/effects/portals.dm b/code/game/objects/effects/portals.dm
index b6e81d12bebe..4216510e7dda 100644
--- a/code/game/objects/effects/portals.dm
+++ b/code/game/objects/effects/portals.dm
@@ -20,7 +20,7 @@ GLOBAL_LIST_BOILERPLATE(all_portals, /obj/effect/portal)
. = ..()
teleport(AM)
-/obj/effect/portal/attack_hand(mob/user, list/params)
+/obj/effect/portal/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(istype(user) && !(istype(user,/mob/living)))
return //do not send ghosts, zshadows, ai eyes, etc
spawn(0)
diff --git a/code/game/objects/items/bells.dm b/code/game/objects/items/bells.dm
index 3eeb418f2f73..39ebae855cbc 100644
--- a/code/game/objects/items/bells.dm
+++ b/code/game/objects/items/bells.dm
@@ -18,7 +18,7 @@
if(broken)
. += "It looks damaged, the ringer is stuck firmly inside."
-/obj/item/deskbell/attack_hand(mob/user, list/params)
+/obj/item/deskbell/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
//This defines the radials and what call we're assiging to them.
var/list/options = list()
diff --git a/code/game/objects/items/devices/chameleonproj.dm b/code/game/objects/items/devices/chameleonproj.dm
index 366b6f29a8ae..7b0616c46b66 100644
--- a/code/game/objects/items/devices/chameleonproj.dm
+++ b/code/game/objects/items/devices/chameleonproj.dm
@@ -110,7 +110,7 @@
to_chat(M, "Your chameleon-projector deactivates.")
master.disrupt()
-/obj/effect/dummy/chameleon/attack_hand(mob/user, list/params)
+/obj/effect/dummy/chameleon/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
for(var/mob/M in src)
to_chat(M, "Your chameleon-projector deactivates.")
master.disrupt()
diff --git a/code/game/objects/items/devices/defib.dm b/code/game/objects/items/devices/defib.dm
index 18afd34b01ff..b657b547ca10 100644
--- a/code/game/objects/items/devices/defib.dm
+++ b/code/game/objects/items/devices/defib.dm
@@ -67,7 +67,7 @@
/obj/item/defib_kit/ui_action_click(datum/action/action, datum/event_args/actor/actor)
toggle_paddles()
-/obj/item/defib_kit/attack_hand(mob/user, list/params)
+/obj/item/defib_kit/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(loc == user)
toggle_paddles()
else
diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm
index 0c5736fac96a..0e34f154c131 100644
--- a/code/game/objects/items/devices/flashlight.dm
+++ b/code/game/objects/items/devices/flashlight.dm
@@ -189,7 +189,7 @@
return CLICKCHAIN_DO_NOT_PROPAGATE
return ..()
-/obj/item/flashlight/attack_hand(mob/user, list/params)
+/obj/item/flashlight/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user.get_inactive_held_item() == src)
if(cell)
cell.update_appearance()
diff --git a/code/game/objects/items/devices/powersink.dm b/code/game/objects/items/devices/powersink.dm
index d4d8b82e28b2..d2d971bd8b08 100644
--- a/code/game/objects/items/devices/powersink.dm
+++ b/code/game/objects/items/devices/powersink.dm
@@ -70,7 +70,7 @@
/obj/item/powersink/attack_ai()
return
-/obj/item/powersink/attack_hand(mob/user, list/params)
+/obj/item/powersink/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
switch(mode)
if(0)
..()
diff --git a/code/game/objects/items/devices/radio/electropack.dm b/code/game/objects/items/devices/radio/electropack.dm
index a4a142c7017a..f835513866fb 100644
--- a/code/game/objects/items/devices/radio/electropack.dm
+++ b/code/game/objects/items/devices/radio/electropack.dm
@@ -15,7 +15,7 @@
var/code = 2
-/obj/item/radio/electropack/attack_hand(mob/user, list/params)
+/obj/item/radio/electropack/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(src == user.item_by_slot_id(SLOT_ID_BACK))
to_chat(user, "You need help taking this off!")
return
diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm
index 4c96ed809894..198d2981da3b 100644
--- a/code/game/objects/items/devices/radio/intercom.dm
+++ b/code/game/objects/items/devices/radio/intercom.dm
@@ -151,7 +151,7 @@ CREATE_WALL_MOUNTING_TYPES_SHIFTED(/obj/item/radio/intercom, 28)
spawn (0)
attack_self(user)
-/obj/item/radio/intercom/attack_hand(mob/user, list/params)
+/obj/item/radio/intercom/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
src.add_fingerprint(user)
spawn (0)
attack_self(user)
diff --git a/code/game/objects/items/devices/radio/jammer.dm b/code/game/objects/items/devices/radio/jammer.dm
index 69ef1cf538f8..80f9f6431053 100644
--- a/code/game/objects/items/devices/radio/jammer.dm
+++ b/code/game/objects/items/devices/radio/jammer.dm
@@ -69,7 +69,7 @@ var/global/list/active_radio_jammers = list()
update_icon()
-/obj/item/radio_jammer/attack_hand(mob/user, list/params)
+/obj/item/radio_jammer/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user.get_inactive_held_item() == src && power_source)
to_chat(user,"You eject \the [power_source] from \the [src].")
user.put_in_hands(power_source)
diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm
index 6bedeea1a533..ef0cea675388 100644
--- a/code/game/objects/items/devices/radio/radio.dm
+++ b/code/game/objects/items/devices/radio/radio.dm
@@ -813,7 +813,7 @@ GLOBAL_DATUM_INIT(virtual_announcer_ai, /mob/living/silicon/ai/announcer, new(nu
/obj/item/bluespace_radio/ui_action_click(datum/action/action, datum/event_args/actor/actor)
toggle_handset()
-/obj/item/bluespace_radio/attack_hand(mob/user, list/params)
+/obj/item/bluespace_radio/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(loc == user)
toggle_handset()
else
diff --git a/code/game/objects/items/devices/tape_recorder/tape_recorder.dm b/code/game/objects/items/devices/tape_recorder/tape_recorder.dm
index 076367dc8a25..7dfd403748f8 100644
--- a/code/game/objects/items/devices/tape_recorder/tape_recorder.dm
+++ b/code/game/objects/items/devices/tape_recorder/tape_recorder.dm
@@ -62,7 +62,7 @@
tape.ruin() //Fires destroy the tape
return ..()
-/obj/item/tape_recorder/attack_hand(mob/user, list/params)
+/obj/item/tape_recorder/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user.get_inactive_held_item() == src)
if(tape)
eject()
diff --git a/code/game/objects/items/devices/taperecorder.dm b/code/game/objects/items/devices/taperecorder.dm
index 3a38f6b4f221..a35e5ec5b34c 100644
--- a/code/game/objects/items/devices/taperecorder.dm
+++ b/code/game/objects/items/devices/taperecorder.dm
@@ -57,7 +57,7 @@
return ..()
-/obj/item/tape_recorder/attack_hand(mob/user, list/params)
+/obj/item/tape_recorder/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user.get_inactive_held_item() == src)
if(mytape)
eject()
diff --git a/code/game/objects/items/shooting_range.dm b/code/game/objects/items/shooting_range.dm
index 3f2ad6ff22e5..8925f463c055 100644
--- a/code/game/objects/items/shooting_range.dm
+++ b/code/game/objects/items/shooting_range.dm
@@ -29,7 +29,7 @@
return ..()
-/obj/item/target/attack_hand(mob/user, list/params)
+/obj/item/target/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
// taking pinned targets off!
var/obj/structure/target_stake/stake
for(var/obj/structure/target_stake/T in view(3,src))
diff --git a/code/game/objects/items/stacks/marker_beacons.dm b/code/game/objects/items/stacks/marker_beacons.dm
index 9be024a7645a..9c923e7c75ce 100644
--- a/code/game/objects/items/stacks/marker_beacons.dm
+++ b/code/game/objects/items/stacks/marker_beacons.dm
@@ -106,7 +106,7 @@ var/list/marker_beacon_colors = list(
icon_state = "[initial(icon_state)][lowertext(picked_color)]-on"
set_light(light_range, light_power, marker_beacon_colors[picked_color])
-/obj/structure/marker_beacon/attack_hand(mob/user, list/params)
+/obj/structure/marker_beacon/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
to_chat(user, "You start picking [src] up...")
if(do_after(user, remove_speed, target = src))
var/obj/item/stack/marker_beacon/M = new(loc)
diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm
index bde4383c2036..65a4985587b5 100644
--- a/code/game/objects/items/stacks/stack.dm
+++ b/code/game/objects/items/stacks/stack.dm
@@ -304,7 +304,7 @@
if(!amount)
break
-/obj/item/stack/attack_hand(mob/user, list/params)
+/obj/item/stack/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user.get_inactive_held_item() == src)
change_stack(user, 1)
else
diff --git a/code/game/objects/items/storage/quickdraw.dm b/code/game/objects/items/storage/quickdraw.dm
index 11575db69b74..3c64736e68ca 100644
--- a/code/game/objects/items/storage/quickdraw.dm
+++ b/code/game/objects/items/storage/quickdraw.dm
@@ -17,7 +17,7 @@
//When set to 1, a click while it is equipped will instead move the first item inside it to your hand
// var/quickmode = 0
-// /obj/item/storage/quickdraw/attack_hand(mob/user, list/params)
+// /obj/item/storage/quickdraw/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
// if(src.loc == user) //If they aren't holding us, we do nothing special
// if(ishuman(user))
// var/mob/living/carbon/human/H = user
diff --git a/code/game/objects/items/storage/secure.dm b/code/game/objects/items/storage/secure.dm
index 1c4f05bca68a..9d249922cbf5 100644
--- a/code/game/objects/items/storage/secure.dm
+++ b/code/game/objects/items/storage/secure.dm
@@ -198,5 +198,5 @@
/obj/item/pen
)
-/obj/item/storage/secure/safe/attack_hand(mob/user, list/params)
+/obj/item/storage/secure/safe/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
return attack_self(user)
diff --git a/code/game/objects/items/stream_projector/medichine.dm b/code/game/objects/items/stream_projector/medichine.dm
index fb87b5393695..5ab66a2b6ad3 100644
--- a/code/game/objects/items/stream_projector/medichine.dm
+++ b/code/game/objects/items/stream_projector/medichine.dm
@@ -58,7 +58,7 @@ GLOBAL_LIST_EMPTY(medichine_cell_datums)
/obj/item/stream_projector/medichine/valid_target(atom/entity)
return isliving(entity)
-/obj/item/stream_projector/medichine/attack_hand(mob/user, list/params)
+/obj/item/stream_projector/medichine/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user.is_holding_inactive(src))
if(isnull(inserted_cartridge))
user.action_feedback(SPAN_WARNING("[src] has no vial loaded."), src)
diff --git a/code/game/objects/items/tools/weldingtool.dm b/code/game/objects/items/tools/weldingtool.dm
index b564a95919b9..9811dbc5c85c 100644
--- a/code/game/objects/items/tools/weldingtool.dm
+++ b/code/game/objects/items/tools/weldingtool.dm
@@ -651,7 +651,7 @@
update_icon()
return 0
-/obj/item/weldingtool/electric/attack_hand(mob/user, list/params)
+/obj/item/weldingtool/electric/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user.get_inactive_held_item() == src)
if(power_supply)
power_supply.update_icon()
diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm
index 83ebd8e9c1b2..4ef067b847a6 100644
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -518,7 +518,7 @@
playsound(user, 'sound/mecha/mechstep.ogg', 20, 1)
cooldown = world.time
-/obj/item/toy/prize/attack_hand(mob/user, list/params)
+/obj/item/toy/prize/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(loc == user)
if(cooldown < world.time - 8)
to_chat(user, "You play with [src].")
@@ -926,7 +926,7 @@
density = 1
var/phrase = "I don't want to exist anymore!"
-/obj/structure/plushie/attack_hand(mob/user, list/params)
+/obj/structure/plushie/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
if(user.a_intent == INTENT_HELP)
user.visible_message("\The [user] hugs [src]!","You hug [src]!")
diff --git a/code/game/objects/items/uav.dm b/code/game/objects/items/uav.dm
index 852a1a8dac98..27ef0ae3ee6f 100644
--- a/code/game/objects/items/uav.dm
+++ b/code/game/objects/items/uav.dm
@@ -64,7 +64,7 @@
STOP_PROCESSING(SSobj, src)
return ..()
-/obj/item/uav/attack_hand(mob/user, list/params)
+/obj/item/uav/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
//Has to be on the ground to work with it properly
if(!isturf(loc))
return ..()
diff --git a/code/game/objects/items/weapons/barrier_tape.dm b/code/game/objects/items/weapons/barrier_tape.dm
index 8eb40321c06d..c82c16b019ca 100644
--- a/code/game/objects/items/weapons/barrier_tape.dm
+++ b/code/game/objects/items/weapons/barrier_tape.dm
@@ -133,7 +133,7 @@ var/list/tape_roll_applications = list()
update_icon()
return ..()
-/obj/item/barrier_tape_roll/attack_hand(mob/user, list/params)
+/obj/item/barrier_tape_roll/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
update_icon()
return ..()
@@ -334,7 +334,7 @@ var/list/tape_roll_applications = list()
/obj/item/barrier_tape_segment/attackby(obj/item/W as obj, mob/user as mob)
breaktape(user)
-/obj/item/barrier_tape_segment/attack_hand(mob/user, list/params)
+/obj/item/barrier_tape_segment/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if (user.a_intent == INTENT_HELP && src.allowed(user))
user.show_viewers("\The [user] lifts \the [src], allowing passage.")
for(var/obj/item/barrier_tape_segment/T in gettapeline())
diff --git a/code/game/objects/items/weapons/duct_tape.dm b/code/game/objects/items/weapons/duct_tape.dm
index 5fbb2b0d3199..6e05e576feae 100644
--- a/code/game/objects/items/weapons/duct_tape.dm
+++ b/code/game/objects/items/weapons/duct_tape.dm
@@ -202,7 +202,7 @@
qdel(I)
to_chat(user, "You place \the [I] back into \the [src].")
-/obj/item/duct_tape_piece/attack_hand(mob/user, list/params)
+/obj/item/duct_tape_piece/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
anchored = FALSE
return ..() // Pick it up now that it's unanchored.
diff --git a/code/game/objects/items/weapons/game_kit.dm b/code/game/objects/items/weapons/game_kit.dm
index 190f0364ad28..fafb6e8281ab 100644
--- a/code/game/objects/items/weapons/game_kit.dm
+++ b/code/game/objects/items/weapons/game_kit.dm
@@ -57,7 +57,7 @@ THAT STUPID GAME KIT
/obj/item/game_kit/attack_ai(mob/user as mob, unused, flag)
return src.attack_hand(user, unused, flag)
-/obj/item/game_kit/attack_hand(mob/user as mob, unused, flag)
+/obj/item/game_kit/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if (flag)
return ..()
diff --git a/code/game/objects/items/weapons/grenades/grenade.dm b/code/game/objects/items/weapons/grenades/grenade.dm
index 795f743c060b..a2bf2996ee9f 100644
--- a/code/game/objects/items/weapons/grenades/grenade.dm
+++ b/code/game/objects/items/weapons/grenades/grenade.dm
@@ -111,7 +111,7 @@
..()
return
-/obj/item/grenade/attack_hand(mob/user, list/params)
+/obj/item/grenade/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
walk(src, null, null)
..()
return
diff --git a/code/game/objects/items/weapons/implants/implantchair.dm b/code/game/objects/items/weapons/implants/implantchair.dm
index fe80c61ab876..e997a571d9be 100644
--- a/code/game/objects/items/weapons/implants/implantchair.dm
+++ b/code/game/objects/items/weapons/implants/implantchair.dm
@@ -24,7 +24,7 @@
..()
add_implants()
-/obj/machinery/implantchair/attack_hand(mob/user, list/params)
+/obj/machinery/implantchair/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
user.set_machine(src)
var/health_text = ""
if(src.occupant)
diff --git a/code/game/objects/items/weapons/implants/implantpad.dm b/code/game/objects/items/weapons/implants/implantpad.dm
index cec946b04872..5a1a4076d171 100644
--- a/code/game/objects/items/weapons/implants/implantpad.dm
+++ b/code/game/objects/items/weapons/implants/implantpad.dm
@@ -21,7 +21,7 @@
return
-/obj/item/implantpad/attack_hand(mob/user, list/params)
+/obj/item/implantpad/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if ((src.case && user.is_holding(src)))
user.put_in_active_hand(case)
diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm
index ac7800a0ec4c..add625fde68d 100644
--- a/code/game/objects/items/weapons/stunbaton.dm
+++ b/code/game/objects/items/weapons/stunbaton.dm
@@ -100,7 +100,7 @@
else
to_chat(user, "This cell is not fitted for [src].")
-/obj/item/melee/baton/attack_hand(mob/user, list/params)
+/obj/item/melee/baton/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user.get_inactive_held_item() == src)
if(bcell && !integrated_cell)
bcell.update_icon()
diff --git a/code/game/objects/items/weapons/traps.dm b/code/game/objects/items/weapons/traps.dm
index d447853fecb3..100a837531d8 100644
--- a/code/game/objects/items/weapons/traps.dm
+++ b/code/game/objects/items/weapons/traps.dm
@@ -85,7 +85,7 @@
if(!has_buckled_mobs())
anchored = FALSE
-/obj/item/beartrap/attack_hand(mob/user, list/params)
+/obj/item/beartrap/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
// check unbuckle first
if(click_unbuckle_interaction(user))
return CLICKCHAIN_DO_NOT_PROPAGATE
diff --git a/code/game/objects/items/weapons/weldbackpack.dm b/code/game/objects/items/weapons/weldbackpack.dm
index 8c1a5be5dc90..38a495269b72 100644
--- a/code/game/objects/items/weapons/weldbackpack.dm
+++ b/code/game/objects/items/weapons/weldbackpack.dm
@@ -84,7 +84,7 @@
to_chat(user,"The tank scoffs at your insolence. It only provides services to welders.")
return
-/obj/item/weldpack/attack_hand(mob/user, list/params)
+/obj/item/weldpack/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(istype(user, /mob/living/carbon/human))
var/mob/living/carbon/human/wearer = user
if(wearer.back == src)
diff --git a/code/game/objects/misc.dm b/code/game/objects/misc.dm
index 0a4d51c5a0fa..04856ddf13ac 100644
--- a/code/game/objects/misc.dm
+++ b/code/game/objects/misc.dm
@@ -7,7 +7,7 @@
/obj/structure/signpost/attackby(obj/item/W, mob/user)
return attack_hand(user)
-/obj/structure/signpost/attack_hand(mob/user, list/params)
+/obj/structure/signpost/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
switch(tgui_alert(user, "Do you want to go to SS13?", "Travel", list("Yes", "No")))
if("Yes")
user.forceMove(SSjob.get_latejoin_spawnpoint(faction = JOB_FACTION_STATION))
diff --git a/code/game/objects/obj.dm b/code/game/objects/obj.dm
index 828bbda90e8a..f58e08f536e6 100644
--- a/code/game/objects/obj.dm
+++ b/code/game/objects/obj.dm
@@ -529,7 +529,7 @@
/obj/proc/do_climb_target(mob/living/climber)
return get_turf(src)
-/obj/attack_hand(mob/user, list/params)
+/obj/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user.a_intent == INTENT_HARM)
return ..()
. = ..()
diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm
index 87a0afecc2d1..08af691efc11 100644
--- a/code/game/objects/structures.dm
+++ b/code/game/objects/structures.dm
@@ -31,7 +31,7 @@
return ..()
-/obj/structure/attack_hand(mob/user, list/params)
+/obj/structure/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(breakable)
if(MUTATION_HULK in user.mutations)
user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ))
diff --git a/code/game/objects/structures/aliens.dm b/code/game/objects/structures/aliens.dm
index 4adaffbe1e29..ad8aa2d2cd0e 100644
--- a/code/game/objects/structures/aliens.dm
+++ b/code/game/objects/structures/aliens.dm
@@ -55,7 +55,7 @@
T.thermal_conductivity = initial(T.thermal_conductivity)
..()
-/obj/structure/alien/resin/attack_hand(mob/user, list/params)
+/obj/structure/alien/resin/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(iscarbon(user))
var/mob/living/carbon/C = user
if(locate(/obj/item/organ/internal/xenos/hivenode) in C.internal_organs)
@@ -344,7 +344,7 @@ Alien plants should do something if theres a lot of poison
if((status == GROWING) && (BURST == 0))
Grow()
-/obj/structure/alien/egg/attack_hand(mob/user, list/params)
+/obj/structure/alien/egg/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
var/mob/living/carbon/M = user
if(!istype(M) || !(locate(/obj/item/organ/internal/xenos/hivenode) in M.internal_organs))
diff --git a/code/game/objects/structures/ashlander.dm b/code/game/objects/structures/ashlander.dm
index 58902f3eb82d..4c9a0d39b7da 100644
--- a/code/game/objects/structures/ashlander.dm
+++ b/code/game/objects/structures/ashlander.dm
@@ -299,7 +299,7 @@
src.updateUsrDialog()
return 0
-/obj/structure/ashlander/calcinator/attack_hand(mob/user, list/params)
+/obj/structure/ashlander/calcinator/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
interact(user)
/obj/structure/ashlander/calcinator/AltClick(mob/user)
@@ -387,7 +387,7 @@
. = ..()
set_light(3, 2, "#9463bb")
-/obj/structure/ashlander/statue/attack_hand(mob/user, list/params)
+/obj/structure/ashlander/statue/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
var/choice = tgui_alert(user, "Do you wish to pray to the statue?", "Interact With the Statue", list("Yes", "No"))
if(choice != "Yes")
return
diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm
index 23bb25c13752..554be30604dd 100644
--- a/code/game/objects/structures/bedsheet_bin.dm
+++ b/code/game/objects/structures/bedsheet_bin.dm
@@ -216,7 +216,7 @@ LINEN BINS
hidden = I
to_chat(user, "You hide [I] among the sheets.")
-/obj/structure/bedsheetbin/attack_hand(mob/user, list/params)
+/obj/structure/bedsheetbin/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(amount >= 1)
amount--
diff --git a/code/game/objects/structures/bonfire.dm b/code/game/objects/structures/bonfire.dm
index a4d652be4679..f43c1aebf1ba 100644
--- a/code/game/objects/structures/bonfire.dm
+++ b/code/game/objects/structures/bonfire.dm
@@ -81,7 +81,7 @@
else
return ..()
-/obj/structure/bonfire/attack_hand(mob/user, list/params)
+/obj/structure/bonfire/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(has_buckled_mobs())
return ..()
@@ -288,7 +288,7 @@
else
return ..()
-/obj/structure/fireplace/attack_hand(mob/user, list/params)
+/obj/structure/fireplace/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(get_fuel_amount())
remove_fuel(user)
diff --git a/code/game/objects/structures/catwalk.dm b/code/game/objects/structures/catwalk.dm
index f34b8a2dfba4..4203261cf627 100644
--- a/code/game/objects/structures/catwalk.dm
+++ b/code/game/objects/structures/catwalk.dm
@@ -135,7 +135,7 @@
. = ..()
activate()
-/obj/effect/catwalk_plated/attack_hand(mob/user, list/params)
+/obj/effect/catwalk_plated/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
attack_generic()
/obj/effect/catwalk_plated/attack_ghost()
diff --git a/code/game/objects/structures/charge_pylon.dm b/code/game/objects/structures/charge_pylon.dm
index 6a86d5b85f8e..0225508a2b7e 100644
--- a/code/game/objects/structures/charge_pylon.dm
+++ b/code/game/objects/structures/charge_pylon.dm
@@ -12,7 +12,7 @@
if(Adjacent(user))
attack_hand(user)
-/obj/structure/adherent_pylon/attack_hand(mob/user, list/params)
+/obj/structure/adherent_pylon/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
charge_user(user)
/obj/structure/adherent_pylon/proc/charge_user(var/mob/living/user)
diff --git a/code/game/objects/structures/coathanger.dm b/code/game/objects/structures/coathanger.dm
index 0b2e643c2f98..3c7e21c9f3a4 100644
--- a/code/game/objects/structures/coathanger.dm
+++ b/code/game/objects/structures/coathanger.dm
@@ -6,7 +6,7 @@
var/obj/item/clothing/suit/coat
var/list/allowed = list(/obj/item/clothing/suit/storage/toggle/labcoat, /obj/item/clothing/suit/storage/det_trench)
-/obj/structure/coatrack/attack_hand(mob/user, list/params)
+/obj/structure/coatrack/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
user.visible_message("[user] takes [coat] off \the [src].", "You take [coat] off the \the [src]")
if(!user.put_in_active_hand(coat))
coat.loc = get_turf(user)
diff --git a/code/game/objects/structures/crates_lockers/__closet.dm b/code/game/objects/structures/crates_lockers/__closet.dm
index d44188937940..d1c3e2fcb82b 100644
--- a/code/game/objects/structures/crates_lockers/__closet.dm
+++ b/code/game/objects/structures/crates_lockers/__closet.dm
@@ -412,7 +412,7 @@
if(!open())
to_chat(user, "It won't budge!")
-/obj/structure/closet/attack_hand(mob/user, list/params)
+/obj/structure/closet/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
add_fingerprint(user)
if(locked && secure)
togglelock(user)
diff --git a/code/game/objects/structures/crates_lockers/closets/coffin.dm b/code/game/objects/structures/crates_lockers/closets/coffin.dm
index fcf23cf8bdeb..44e4f8f46529 100644
--- a/code/game/objects/structures/crates_lockers/closets/coffin.dm
+++ b/code/game/objects/structures/crates_lockers/closets/coffin.dm
@@ -34,7 +34,7 @@
use_old_icon_update = TRUE
obj_flags = OBJ_MELEE_TARGETABLE
-/obj/structure/closet/grave/attack_hand(mob/user, list/params)
+/obj/structure/closet/grave/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(opened)
visible_message("[user] starts to climb into \the [src.name].", \
"You start to lower yourself into \the [src.name].")
diff --git a/code/game/objects/structures/crates_lockers/closets/fireaxe.dm b/code/game/objects/structures/crates_lockers/closets/fireaxe.dm
index e7e320a32367..b58927665393 100644
--- a/code/game/objects/structures/crates_lockers/closets/fireaxe.dm
+++ b/code/game/objects/structures/crates_lockers/closets/fireaxe.dm
@@ -109,7 +109,7 @@
update_icon()
-/obj/structure/closet/fireaxecabinet/attack_hand(mob/user, list/params)
+/obj/structure/closet/fireaxecabinet/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
var/hasaxe = 0
if(fireaxe)
hasaxe = 1
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/genpop.dm b/code/game/objects/structures/crates_lockers/closets/secure/genpop.dm
index d3410971f156..6ce0bf5f5e37 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/genpop.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/genpop.dm
@@ -95,7 +95,7 @@
locked = TRUE
return ..()
-/obj/structure/closet/secure_closet/genpop/attack_hand(mob/user)
+/obj/structure/closet/secure_closet/genpop/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user.lying && get_dist(src, user) > 0)
return
diff --git a/code/game/objects/structures/crates_lockers/closets/statue.dm b/code/game/objects/structures/crates_lockers/closets/statue.dm
index 76fde00e4861..6de122885a82 100644
--- a/code/game/objects/structures/crates_lockers/closets/statue.dm
+++ b/code/game/objects/structures/crates_lockers/closets/statue.dm
@@ -90,7 +90,7 @@
/obj/structure/closet/statue/relaymove()
return
-/obj/structure/closet/statue/attack_hand(mob/user, list/params)
+/obj/structure/closet/statue/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
return
/obj/structure/closet/statue/verb_toggleopen()
diff --git a/code/game/objects/structures/crates_lockers/closets/walllocker.dm b/code/game/objects/structures/crates_lockers/closets/walllocker.dm
index 2554fcc6496a..3c3b8db1ba14 100644
--- a/code/game/objects/structures/crates_lockers/closets/walllocker.dm
+++ b/code/game/objects/structures/crates_lockers/closets/walllocker.dm
@@ -28,7 +28,7 @@
/obj/structure/closet/walllocker/emerglocker/attackby(obj/item/W as obj, mob/user as mob)
return
-/obj/structure/closet/walllocker/emerglocker/attack_hand(mob/user, list/params)
+/obj/structure/closet/walllocker/emerglocker/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if (istype(user, /mob/living/silicon/ai)) //Added by Strumpetplaya - AI shouldn't be able to
return //activate emergency lockers. This fixes that. (Does this make sense, the AI can't call attack_hand, can it? --Mloc)
if(!amount)
diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm
index 04e971a25f02..33e09af3771c 100644
--- a/code/game/objects/structures/crates_lockers/crates.dm
+++ b/code/game/objects/structures/crates_lockers/crates.dm
@@ -201,7 +201,7 @@
else
to_chat(usr, "This mob type can't use this verb.")
-/obj/structure/closet/crate/secure/attack_hand(mob/user, list/params)
+/obj/structure/closet/crate/secure/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
src.add_fingerprint(user)
if(locked)
src.togglelock(user)
diff --git a/code/game/objects/structures/crates_lockers/largecrate.dm b/code/game/objects/structures/crates_lockers/largecrate.dm
index 0a77584a74a1..47eb371602f8 100644
--- a/code/game/objects/structures/crates_lockers/largecrate.dm
+++ b/code/game/objects/structures/crates_lockers/largecrate.dm
@@ -62,7 +62,7 @@
*/
-/obj/structure/largecrate/attack_hand(mob/user, list/params)
+/obj/structure/largecrate/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
to_chat(user, "You need a crowbar to pry this open!")
return
diff --git a/code/game/objects/structures/crates_lockers/vehiclecage.dm b/code/game/objects/structures/crates_lockers/vehiclecage.dm
index c4987c4f0600..f255d50a6274 100644
--- a/code/game/objects/structures/crates_lockers/vehiclecage.dm
+++ b/code/game/objects/structures/crates_lockers/vehiclecage.dm
@@ -23,7 +23,7 @@
load_vehicle(I)
update_icon()
-/obj/structure/vehiclecage/attack_hand(mob/user, list/params)
+/obj/structure/vehiclecage/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
to_chat(user, "You need a wrench to take this apart!")
return
diff --git a/code/game/objects/structures/curtains.dm b/code/game/objects/structures/curtains.dm
index b3f82578d8af..96379a2ea4d0 100644
--- a/code/game/objects/structures/curtains.dm
+++ b/code/game/objects/structures/curtains.dm
@@ -19,7 +19,7 @@
layer = 3.3 //3.3 so its above windows, not the same as them. anything below 3.3 puts the curtain beneath the window sprite in current build
opacity = 0
-/obj/structure/curtain/attack_hand(mob/user, list/params)
+/obj/structure/curtain/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
playsound(get_turf(loc), "rustle", 15, 1, -5)
toggle()
..()
diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm
index 0ef8330e5c20..21b2b9d7ea3f 100644
--- a/code/game/objects/structures/displaycase.dm
+++ b/code/game/objects/structures/displaycase.dm
@@ -23,7 +23,7 @@
else
src.icon_state = "glassbox[src.occupied]"
-/obj/structure/displaycase/attack_hand(mob/user, list/params)
+/obj/structure/displaycase/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if((atom_flags & ATOM_BROKEN) && occupied)
new /obj/item/gun/energy/captain( src.loc )
to_chat(user, "You deactivate the hover field built into the case.")
diff --git a/code/game/objects/structures/extinguisher.dm b/code/game/objects/structures/extinguisher.dm
index c1897ea9bca8..67e93490a3a9 100644
--- a/code/game/objects/structures/extinguisher.dm
+++ b/code/game/objects/structures/extinguisher.dm
@@ -45,7 +45,7 @@
update_icon()
-/obj/structure/extinguisher_cabinet/attack_hand(mob/user, list/params)
+/obj/structure/extinguisher_cabinet/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(isrobot(user))
return
if (ishuman(user))
diff --git a/code/game/objects/structures/fence.dm b/code/game/objects/structures/fence.dm
index 82c954d2d326..067a553e9243 100644
--- a/code/game/objects/structures/fence.dm
+++ b/code/game/objects/structures/fence.dm
@@ -144,7 +144,7 @@
desc = "It looks like it has a strong padlock attached."
locked = TRUE
-/obj/structure/fence/door/attack_hand(mob/user, list/params)
+/obj/structure/fence/door/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(can_open(user))
toggle(user)
else
diff --git a/code/game/objects/structures/fireaxe.dm b/code/game/objects/structures/fireaxe.dm
index 5b21c9d390de..994b2e183976 100644
--- a/code/game/objects/structures/fireaxe.dm
+++ b/code/game/objects/structures/fireaxe.dm
@@ -92,7 +92,7 @@
toggle_close_open()
-/obj/structure/fireaxecabinet/attack_hand(mob/user, list/params)
+/obj/structure/fireaxecabinet/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
//var/hasaxe = 0 //Fuck this. Fuck everything about this. Who wrote this. Why.
//if(fireaxe)
// hasaxe = 1
diff --git a/code/game/objects/structures/fitness.dm b/code/game/objects/structures/fitness.dm
index 355d2f9f1db6..ea926dc26e1c 100644
--- a/code/game/objects/structures/fitness.dm
+++ b/code/game/objects/structures/fitness.dm
@@ -10,7 +10,7 @@
density = 1
var/list/hit_message = list("hit", "punch", "kick", "robust")
-/obj/structure/fitness/punchingbag/attack_hand(mob/user, list/params)
+/obj/structure/fitness/punchingbag/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(!istype(user))
..()
return
@@ -38,7 +38,7 @@
weight = ((weight) % qualifiers.len) + 1
to_chat(user, "You set the machine's weight level to [weight].")
-/obj/structure/fitness/weightlifter/attack_hand(mob/user, list/params)
+/obj/structure/fitness/weightlifter/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(!istype(user))
return
if(user.loc != src.loc)
diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm
index 81d9f24f58aa..9b166f6170d6 100644
--- a/code/game/objects/structures/flora.dm
+++ b/code/game/objects/structures/flora.dm
@@ -397,7 +397,7 @@
/obj/structure/flora/sif
icon = 'icons/obj/flora/sifflora.dmi'
-/obj/structure/flora/sif/attack_hand(mob/user, list/params)
+/obj/structure/flora/sif/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if (user.a_intent == INTENT_HARM)
if(do_after(user, 5 SECONDS))
user.visible_message("\The [user] digs up \the [src.name].", "You dig up \the [src.name].")
@@ -518,7 +518,7 @@
var/gift_type = /obj/item/b_gift
var/list/ckeys_that_took = list()
-/obj/structure/flora/pumpkin/pumpkin_patch/presents/attack_hand(mob/user, list/params)
+/obj/structure/flora/pumpkin/pumpkin_patch/presents/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
. = ..()
if(.)
return
diff --git a/code/game/objects/structures/flora/trees.dm b/code/game/objects/structures/flora/trees.dm
index 75898d9168ce..fe7ac42a99f0 100644
--- a/code/game/objects/structures/flora/trees.dm
+++ b/code/game/objects/structures/flora/trees.dm
@@ -133,7 +133,7 @@
/obj/structure/flora/tree/pine/xmas/presents/choose_icon_state()
return "pinepresents"
-/obj/structure/flora/tree/pine/xmas/presents/attack_hand(mob/user, list/params)
+/obj/structure/flora/tree/pine/xmas/presents/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
. = ..()
if(.)
return
diff --git a/code/game/objects/structures/ghost_pods/ghost_pods.dm b/code/game/objects/structures/ghost_pods/ghost_pods.dm
index ebfc4daa2afc..c8ae98d84a06 100644
--- a/code/game/objects/structures/ghost_pods/ghost_pods.dm
+++ b/code/game/objects/structures/ghost_pods/ghost_pods.dm
@@ -43,7 +43,7 @@
/obj/structure/ghost_pod/manual
var/confirm_before_open = FALSE // Recommended to be TRUE if the pod contains a surprise.
-/obj/structure/ghost_pod/manual/attack_hand(mob/user, list/params)
+/obj/structure/ghost_pod/manual/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(!used)
if(confirm_before_open)
if(alert(user, "Are you sure you want to touch \the [src]?", "Confirm", "No", "Yes") == "No")
diff --git a/code/game/objects/structures/holoplant.dm b/code/game/objects/structures/holoplant.dm
index d239087db652..714980a4d26d 100644
--- a/code/game/objects/structures/holoplant.dm
+++ b/code/game/objects/structures/holoplant.dm
@@ -21,7 +21,7 @@
. = ..()
activate()
-/obj/machinery/holoplant/attack_hand(mob/user, list/params)
+/obj/machinery/holoplant/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(!istype(user) || interference)
return
diff --git a/code/game/objects/structures/inflatable.dm b/code/game/objects/structures/inflatable.dm
index 516693d6f557..3a40b5c873ef 100644
--- a/code/game/objects/structures/inflatable.dm
+++ b/code/game/objects/structures/inflatable.dm
@@ -92,7 +92,7 @@
if(get_dist(user,src) <= 1) //not remotely though
return TryToSwitchState(user)
-/obj/structure/inflatable/door/attack_hand(mob/user, list/params)
+/obj/structure/inflatable/door/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
return TryToSwitchState(user)
/obj/structure/inflatable/door/CanAllowThrough(atom/movable/mover, turf/target)
diff --git a/code/game/objects/structures/janicart.dm b/code/game/objects/structures/janicart.dm
index cd4858dd972a..57e3f2541921 100644
--- a/code/game/objects/structures/janicart.dm
+++ b/code/game/objects/structures/janicart.dm
@@ -89,7 +89,7 @@ GLOBAL_LIST_BOILERPLATE(all_janitorial_carts, /obj/structure/janitorialcart)
mybag.attackby(I, user)
-/obj/structure/janitorialcart/attack_hand(mob/user, list/params)
+/obj/structure/janitorialcart/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
nano_ui_interact(user)
return
@@ -211,7 +211,7 @@ GLOBAL_LIST_BOILERPLATE(all_janitorial_carts, /obj/structure/janitorialcart)
to_chat(user, "You hook the trashbag onto the [callme].")
mybag = I
-/obj/structure/bed/chair/janicart/attack_hand(mob/user, list/params)
+/obj/structure/bed/chair/janicart/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(mybag)
user.grab_item_from_interacted_with(mybag, src)
mybag = null
diff --git a/code/game/objects/structures/kitchen_foodcart.dm b/code/game/objects/structures/kitchen_foodcart.dm
index 968d990be4c5..963becea89b1 100644
--- a/code/game/objects/structures/kitchen_foodcart.dm
+++ b/code/game/objects/structures/kitchen_foodcart.dm
@@ -22,7 +22,7 @@
return
return ..()
-/obj/structure/foodcart/attack_hand(mob/user, list/params)
+/obj/structure/foodcart/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(contents.len)
var/obj/item/reagent_containers/food/choice = input("What would you like to grab from the cart?") as null|obj in contents
if(choice)
diff --git a/code/game/objects/structures/kitchen_spike.dm b/code/game/objects/structures/kitchen_spike.dm
index ecc3dffbb52f..eb239b4e9623 100644
--- a/code/game/objects/structures/kitchen_spike.dm
+++ b/code/game/objects/structures/kitchen_spike.dm
@@ -50,7 +50,7 @@
meat = 5
return 1
-/obj/structure/kitchenspike/attack_hand(mob/user, list/params)
+/obj/structure/kitchenspike/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..() || !occupied)
return
meat--
diff --git a/code/game/objects/structures/loot_piles.dm b/code/game/objects/structures/loot_piles.dm
index 95978d8a76fa..25738b913faa 100644
--- a/code/game/objects/structures/loot_piles.dm
+++ b/code/game/objects/structures/loot_piles.dm
@@ -42,7 +42,7 @@ Loot piles can be depleted, if loot_depleted is turned on. Note that players wh
var/list/rare_loot = list() // Rare is powerful, or somewhat unique items.
var/list/very_rare_loot = list()// Very Rare really powerful, or at least unique items.
-/obj/structure/loot_pile/attack_hand(mob/user, list/params)
+/obj/structure/loot_pile/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
//Human mob
if(isliving(user))
var/mob/living/L = user
diff --git a/code/game/objects/structures/medical_stand_vr.dm b/code/game/objects/structures/medical_stand_vr.dm
index 0eed1c210f1a..ee4ca93c4d39 100644
--- a/code/game/objects/structures/medical_stand_vr.dm
+++ b/code/game/objects/structures/medical_stand_vr.dm
@@ -164,7 +164,7 @@
update_icon()
-/obj/structure/medical_stand/attack_hand(mob/user, list/params)
+/obj/structure/medical_stand/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
var/list/available_options = list()
if (tank)
available_options += "Toggle valve"
diff --git a/code/game/objects/structures/mineral_bath.dm b/code/game/objects/structures/mineral_bath.dm
index bf572a66f100..f729e46cd33f 100644
--- a/code/game/objects/structures/mineral_bath.dm
+++ b/code/game/objects/structures/mineral_bath.dm
@@ -66,7 +66,7 @@
START_PROCESSING(SSobj, src)
return TRUE
-/obj/structure/adherent_bath/attack_hand(mob/user, list/params)
+/obj/structure/adherent_bath/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
eject_occupant()
/obj/structure/adherent_bath/proc/eject_occupant()
diff --git a/code/game/objects/structures/mirror.dm b/code/game/objects/structures/mirror.dm
index 9e12dc21cec7..d120edc51470 100644
--- a/code/game/objects/structures/mirror.dm
+++ b/code/game/objects/structures/mirror.dm
@@ -18,7 +18,7 @@
pixel_x = (dir & 3)? 0 : (dir == 4 ? -28 : 28)
pixel_y = (dir & 3)? (dir == 1 ? -30 : 30) : 0
-/obj/structure/mirror/attack_hand(mob/user, list/params)
+/obj/structure/mirror/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(!glass) return
if(shattered) return
diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm
index 18b979d9bbd8..c73ca39802fa 100644
--- a/code/game/objects/structures/morgue.dm
+++ b/code/game/objects/structures/morgue.dm
@@ -82,7 +82,7 @@
if(Adjacent(user))
attack_hand(user)
-/obj/structure/morgue/attack_hand(mob/user, list/params)
+/obj/structure/morgue/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if (src.connected)
close()
else
@@ -173,7 +173,7 @@
if(Adjacent(user))
attack_hand(user)
-/obj/structure/m_tray/attack_hand(mob/user, list/params)
+/obj/structure/m_tray/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if (src.connected)
for(var/atom/movable/A as mob|obj in src.loc)
if (!( A.anchored ))
@@ -227,7 +227,7 @@ GLOBAL_LIST_BOILERPLATE(all_crematoriums, /obj/structure/morgue/crematorium)
src.icon_state = "crema1"
return
-/obj/structure/morgue/crematorium/attack_hand(mob/user, list/params)
+/obj/structure/morgue/crematorium/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if (cremating)
to_chat(usr, "It's locked.")
return
@@ -350,7 +350,7 @@ GLOBAL_LIST_BOILERPLATE(all_crematoriums, /obj/structure/morgue/crematorium)
req_access = list(ACCESS_GENERAL_CREMATOR)
id = 1
-/obj/machinery/button/crematorium/attack_hand(mob/user, list/params)
+/obj/machinery/button/crematorium/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..())
return
if(src.allowed(user))
diff --git a/code/game/objects/structures/noticeboard.dm b/code/game/objects/structures/noticeboard.dm
index 9376814056a7..9a710c58a5f2 100644
--- a/code/game/objects/structures/noticeboard.dm
+++ b/code/game/objects/structures/noticeboard.dm
@@ -43,7 +43,7 @@
new /obj/item/frame/noticeboard( src.loc )
qdel(src)
-/obj/structure/noticeboard/attack_hand(mob/user, list/params)
+/obj/structure/noticeboard/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
user.do_examinate(src)
// Since Topic() never seems to interact with usr on more than a superficial
diff --git a/code/game/objects/structures/poster.dm b/code/game/objects/structures/poster.dm
index fa5c8a1d0729..4c7978e4a6da 100644
--- a/code/game/objects/structures/poster.dm
+++ b/code/game/objects/structures/poster.dm
@@ -158,7 +158,7 @@
roll_and_drop(user.loc)
return
-/obj/structure/sign/poster/attack_hand(mob/user, list/params)
+/obj/structure/sign/poster/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(ruined)
return
diff --git a/code/game/objects/structures/props/beam_prism.dm b/code/game/objects/structures/props/beam_prism.dm
index 8a2d8b095fde..11ca14327755 100644
--- a/code/game/objects/structures/props/beam_prism.dm
+++ b/code/game/objects/structures/props/beam_prism.dm
@@ -48,7 +48,7 @@
var/degrees_to_rotate = -1 * degrees_from_north
animate(src, transform = turn(src.transform, degrees_to_rotate), time = 2)
-/obj/structure/prop/prism/attack_hand(mob/user, list/params)
+/obj/structure/prop/prism/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
..()
if(rotation_lock)
@@ -160,7 +160,7 @@
var/list/my_turrets = list()
var/dialID = null
-/obj/structure/prop/prismcontrol/attack_hand(mob/user, list/params)
+/obj/structure/prop/prismcontrol/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
..()
var/confirm = input("Do you want to try to rotate \the [src]?", "[name]") in list("Yes", "No")
diff --git a/code/game/objects/structures/props/nest.dm b/code/game/objects/structures/props/nest.dm
index 2e494b42e30c..190e7f78c182 100644
--- a/code/game/objects/structures/props/nest.dm
+++ b/code/game/objects/structures/props/nest.dm
@@ -34,7 +34,7 @@
STOP_PROCESSING(SSobj, src)
..()
-/obj/structure/prop/nest/attack_hand(mob/user, list/params) // Used to tell the player that this isn't useful for anything.
+/obj/structure/prop/nest/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
..()
if(user && prob(disturbance_spawn_chance))
spawn_creature(get_turf(src))
diff --git a/code/game/objects/structures/props/prop.dm b/code/game/objects/structures/props/prop.dm
index c82b4b4dcdef..8471e5fde491 100644
--- a/code/game/objects/structures/props/prop.dm
+++ b/code/game/objects/structures/props/prop.dm
@@ -9,7 +9,7 @@
anchored = TRUE
var/interaction_message = null
-/obj/structure/prop/attack_hand(mob/user, list/params) // Used to tell the player that this isn't useful for anything.
+/obj/structure/prop/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(!istype(user))
return FALSE
if(!interaction_message)
diff --git a/code/game/objects/structures/props/puzzledoor.dm b/code/game/objects/structures/props/puzzledoor.dm
index 8f429ac12f7b..d3e25d3acf8b 100644
--- a/code/game/objects/structures/props/puzzledoor.dm
+++ b/code/game/objects/structures/props/puzzledoor.dm
@@ -52,7 +52,7 @@
locks -= L
..()
-/obj/machinery/door/blast/puzzle/attack_hand(mob/user, list/params)
+/obj/machinery/door/blast/puzzle/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(check_locks())
force_toggle(1, user)
else
diff --git a/code/game/objects/structures/safe.dm b/code/game/objects/structures/safe.dm
index f171fb7bfba4..7f4641ea6de5 100644
--- a/code/game/objects/structures/safe.dm
+++ b/code/game/objects/structures/safe.dm
@@ -70,7 +70,7 @@ FLOOR SAFES
icon_state = initial(icon_state)
-/obj/structure/safe/attack_hand(mob/user, list/params)
+/obj/structure/safe/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
user.set_machine(src)
var/dat = ""
dat += "[open ? "Close" : "Open"] [src] | - [dial * 5] +"
diff --git a/code/game/objects/structures/simple_doors.dm b/code/game/objects/structures/simple_doors.dm
index 9797dfd7ef23..12f948c593c3 100644
--- a/code/game/objects/structures/simple_doors.dm
+++ b/code/game/objects/structures/simple_doors.dm
@@ -49,7 +49,7 @@
if(get_dist(user,src) <= 1) //not remotely though
return TryToSwitchState(user)
-/obj/structure/simple_door/attack_hand(mob/user, list/params)
+/obj/structure/simple_door/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user.a_intent == INTENT_HARM)
return ..()
return TryToSwitchState(user)
diff --git a/code/game/objects/structures/snowman.dm b/code/game/objects/structures/snowman.dm
index 702d870a15ad..d3e5539eda5e 100644
--- a/code/game/objects/structures/snowman.dm
+++ b/code/game/objects/structures/snowman.dm
@@ -5,7 +5,7 @@
desc = "A happy little snowman smiles back at you!"
anchored = 1
-/obj/structure/snowman/attack_hand(mob/user, list/params)
+/obj/structure/snowman/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user.a_intent == INTENT_HARM)
to_chat(user, "In one hit, [src] easily crumples into a pile of snow. You monster.")
var/turf/simulated/floor/F = get_turf(src)
diff --git a/code/game/objects/structures/stasis_cage.dm b/code/game/objects/structures/stasis_cage.dm
index e61d37956543..a4e3b3988a8b 100644
--- a/code/game/objects/structures/stasis_cage.dm
+++ b/code/game/objects/structures/stasis_cage.dm
@@ -14,7 +14,7 @@
if(A)
contain(A)
-/obj/structure/stasis_cage/attack_hand(mob/user, list/params)
+/obj/structure/stasis_cage/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
release()
/obj/structure/stasis_cage/attack_robot(var/mob/user)
diff --git a/code/game/objects/structures/statues.dm b/code/game/objects/structures/statues.dm
index 475ebfcbb9a2..30784dac7950 100644
--- a/code/game/objects/structures/statues.dm
+++ b/code/game/objects/structures/statues.dm
@@ -51,7 +51,7 @@
deconstruct(ATOM_DECONSTRUCT_DISASSEMBLED)
return
return ..()
-/obj/structure/statue/attack_hand(mob/user, list/params)
+/obj/structure/statue/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
add_fingerprint(user)
user.visible_message("[user] rubs some dust off from the [name]'s surface.", \
"You rub some dust off from the [name]'s surface.")
diff --git a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm
index 26cece5c48f0..ebae37616894 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm
@@ -51,7 +51,7 @@
qdel(src)
return CLICKCHAIN_DO_NOT_PROPAGATE
-/obj/structure/bed/chair/attack_hand(mob/user)
+/obj/structure/bed/chair/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(!stacked_size)
return ..()
var/obj/item/material/twohanded/folded_metal_chair/F = new(loc)
diff --git a/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm b/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm
index bade56588a11..6f38a4dd187c 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm
@@ -97,7 +97,7 @@
create_track()
driving = 0
-/obj/structure/bed/chair/wheelchair/attack_hand(mob/user, list/params)
+/obj/structure/bed/chair/wheelchair/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if (pulling_along)
MouseDrop(usr)
return ..()
diff --git a/code/game/objects/structures/tank_dispenser.dm b/code/game/objects/structures/tank_dispenser.dm
index dc0ee1691ed6..4fadf95503c6 100644
--- a/code/game/objects/structures/tank_dispenser.dm
+++ b/code/game/objects/structures/tank_dispenser.dm
@@ -44,7 +44,7 @@
return attack_hand(user)
..()
-/obj/structure/dispenser/attack_hand(mob/user, list/params)
+/obj/structure/dispenser/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
user.set_machine(src)
var/dat = "[src]
"
dat += "Oxygen tanks: [oxygentanks] - [oxygentanks ? "Dispense" : "empty"]
"
diff --git a/code/game/objects/structures/target_stake.dm b/code/game/objects/structures/target_stake.dm
index 136ba2bc219c..73521b73b830 100644
--- a/code/game/objects/structures/target_stake.dm
+++ b/code/game/objects/structures/target_stake.dm
@@ -29,7 +29,7 @@
else
return ..()
-/obj/structure/target_stake/attack_hand(mob/user, list/params)
+/obj/structure/target_stake/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
// taking pinned targets off!
if(pinned_target)
pinned_target.layer = OBJ_LAYER
diff --git a/code/game/objects/structures/transit_tubes.dm b/code/game/objects/structures/transit_tubes.dm
index 8c2052ee6146..3a85ad813067 100644
--- a/code/game/objects/structures/transit_tubes.dm
+++ b/code/game/objects/structures/transit_tubes.dm
@@ -102,7 +102,7 @@
return
-/obj/structure/transit_tube/station/attack_hand(mob/user, list/params)
+/obj/structure/transit_tube/station/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(!pod_moving)
for(var/obj/structure/transit_tube_pod/pod in loc)
if(!pod.moving && (pod.dir in directions()))
diff --git a/code/game/objects/structures/trash_pile.dm b/code/game/objects/structures/trash_pile.dm
index 6fd09fa29026..ce0607b10237 100644
--- a/code/game/objects/structures/trash_pile.dm
+++ b/code/game/objects/structures/trash_pile.dm
@@ -79,7 +79,7 @@
else
return ..()
-/obj/structure/trash_pile/attack_hand(mob/user, list/params)
+/obj/structure/trash_pile/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
//Human mob
if(ishuman(user))
var/mob/living/carbon/human/H = user
diff --git a/code/game/objects/structures/under_wardrobe.dm b/code/game/objects/structures/under_wardrobe.dm
index 3436f3cda468..65fe0be1a86a 100644
--- a/code/game/objects/structures/under_wardrobe.dm
+++ b/code/game/objects/structures/under_wardrobe.dm
@@ -5,7 +5,7 @@
icon_state = "cabinet_closed"
density = 1
-/obj/structure/undies_wardrobe/attack_hand(mob/user, list/params)
+/obj/structure/undies_wardrobe/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(!human_who_can_use_underwear(user))
to_chat(user, "Sadly there's nothing in here for you to wear.")
return
diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm
index a4939c7520a7..d94c0aa091ea 100644
--- a/code/game/objects/structures/watercloset.dm
+++ b/code/game/objects/structures/watercloset.dm
@@ -17,7 +17,7 @@
open = round(rand(0, 1))
update_icon()
-/obj/structure/toilet/attack_hand(mob/user, list/params)
+/obj/structure/toilet/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(swirlie)
usr.setClickCooldown(user.get_attack_speed())
usr.visible_message("[user] slams the toilet seat onto [swirlie.name]'s head!", "You slam the toilet seat onto [swirlie.name]'s head!", "You hear reverberating porcelain.")
@@ -172,7 +172,7 @@
anchored = 1
mouse_opacity = 0
-/obj/machinery/shower/attack_hand(mob/user, list/params)
+/obj/machinery/shower/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
var/mob/living/M = user
if(!istype(M))
return
@@ -388,7 +388,7 @@
thing.reagents.clear_reagents()
thing.update_icon()
-/obj/structure/sink/attack_hand(mob/user, list/params)
+/obj/structure/sink/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if (ishuman(user))
var/mob/living/carbon/human/H = user
var/obj/item/organ/external/temp = H.organs_by_name["r_hand"]
@@ -497,7 +497,7 @@
icon_state = "puddle"
desc = "A small pool of some liquid, ostensibly water."
-/obj/structure/sink/puddle/attack_hand(mob/user, list/params)
+/obj/structure/sink/puddle/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
icon_state = "puddle-splash"
..()
icon_state = "puddle"
@@ -521,7 +521,7 @@
reagents.add_reagent(dispensedreagent, 20)
/* Okay, just straight up, I tried to code this like blood overlays, but I just do NOT understand the system. If someone wants to sort it, enable this too.
-/obj/structure/sink/oil_well/attack_hand(mob/user, list/params)
+/obj/structure/sink/oil_well/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
flick("puddle-oil-splash",src)
reagents.reaction(M, 20) //Covers target in 20u of oil.
to_chat(M, "You touch the pool of oil, only to get oil all over yourself. It would be wise to wash this off with water.")
diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm
index 4f5081b13d04..efe8c3688804 100644
--- a/code/game/objects/structures/window.dm
+++ b/code/game/objects/structures/window.dm
@@ -207,7 +207,7 @@
user.visible_message(SPAN_NOTICE("Something knocks on [src]."))
playsound(loc, 'sound/effects/Glasshit.ogg', 50, TRUE)
-/obj/structure/window/attack_hand(mob/user, list/params)
+/obj/structure/window/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user.a_intent == INTENT_HARM)
return ..()
diff --git a/code/game/rendering/screen.dm b/code/game/rendering/screen.dm
index 77bd443fe473..b379d64f7323 100644
--- a/code/game/rendering/screen.dm
+++ b/code/game/rendering/screen.dm
@@ -36,7 +36,7 @@
G.s_click(src)
return 1
-/atom/movable/screen/grab/attack_hand(mob/user, list/params)
+/atom/movable/screen/grab/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
return
/atom/movable/screen/grab/attackby()
diff --git a/code/game/turfs/simulated/floor_types/snow.dm b/code/game/turfs/simulated/floor_types/snow.dm
index 8d491ae4ceda..24df6a6e6f2d 100644
--- a/code/game/turfs/simulated/floor_types/snow.dm
+++ b/code/game/turfs/simulated/floor_types/snow.dm
@@ -41,7 +41,7 @@ CREATE_STANDARD_TURFS(/turf/simulated/floor/outdoors/snow)
else
..()
-/turf/simulated/floor/outdoors/snow/attack_hand(mob/user, list/params)
+/turf/simulated/floor/outdoors/snow/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
visible_message("[user] starts scooping up some snow.", "You start scooping up some snow.")
if(do_after(user, 1 SECOND))
user.put_in_hands_or_drop(new /obj/item/stack/material/snow)
diff --git a/code/game/turfs/simulated/flooring/flooring_traps.dm b/code/game/turfs/simulated/flooring/flooring_traps.dm
index 659166ce710f..944abc1e4cb7 100644
--- a/code/game/turfs/simulated/flooring/flooring_traps.dm
+++ b/code/game/turfs/simulated/flooring/flooring_traps.dm
@@ -31,7 +31,7 @@
else if (tripped)
icon_state = "[initial(icon_state)]_tripped"
-/turf/simulated/floor/trap/attack_hand(mob/user, list/params)
+/turf/simulated/floor/trap/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(tripped)
to_chat(usr, "You reset the triggered mechanism.")
tripped = 0
diff --git a/code/game/turfs/simulated/wall/wall_attacks.dm b/code/game/turfs/simulated/wall/wall_attacks.dm
index 9737790e6ac2..210112eb624c 100644
--- a/code/game/turfs/simulated/wall/wall_attacks.dm
+++ b/code/game/turfs/simulated/wall/wall_attacks.dm
@@ -82,7 +82,7 @@
return 0
-/turf/simulated/wall/attack_hand(mob/user, list/params)
+/turf/simulated/wall/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
add_fingerprint(user)
user.setClickCooldown(user.get_attack_speed())
var/rotting = (locate(/obj/effect/overlay/wallrot) in src)
diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm
index d8c34019b0ee..0b4c7320d100 100644
--- a/code/game/turfs/turf.dm
+++ b/code/game/turfs/turf.dm
@@ -254,7 +254,7 @@
/turf/proc/is_solid_structure()
return TRUE
-/turf/attack_hand(mob/user, list/params)
+/turf/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
. = ..()
//QOL feature, clicking on turf can toggle doors, unless pulling something
if(!user.pulling)
diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm
index 5f83a4fa06b9..b9acfc00dc7e 100644
--- a/code/modules/assembly/holder.dm
+++ b/code/modules/assembly/holder.dm
@@ -85,7 +85,7 @@
a_right.holder_movement()
-/obj/item/assembly_holder/attack_hand(mob/user, list/params)//Perhapse this should be a holder_pickup proc instead, can add if needbe I guess
+/obj/item/assembly_holder/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(a_left && a_right)
a_left.holder_movement()
a_right.holder_movement()
diff --git a/code/modules/assembly/mousetrap.dm b/code/modules/assembly/mousetrap.dm
index 891d109980bc..f06c66e968d7 100644
--- a/code/modules/assembly/mousetrap.dm
+++ b/code/modules/assembly/mousetrap.dm
@@ -68,7 +68,7 @@
playsound(user.loc, 'sound/weapons/handcuffs.ogg', 30, 1, -3)
-/obj/item/assembly/mousetrap/attack_hand(mob/user, list/params)
+/obj/item/assembly/mousetrap/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
var/mob/living/L = user
if(!istype(L))
return
diff --git a/code/modules/atmospherics/machinery/air_alarm.dm b/code/modules/atmospherics/machinery/air_alarm.dm
index 96a13304af28..e79db8b4533a 100644
--- a/code/modules/atmospherics/machinery/air_alarm.dm
+++ b/code/modules/atmospherics/machinery/air_alarm.dm
@@ -514,7 +514,7 @@ CREATE_WALL_MOUNTING_TYPES_SHIFTED(/obj/machinery/air_alarm, 26)
/obj/machinery/air_alarm/attack_ai(mob/user)
ui_interact(user)
-/obj/machinery/air_alarm/attack_hand(mob/user, list/params)
+/obj/machinery/air_alarm/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
. = ..()
if(.)
return
diff --git a/code/modules/atmospherics/machinery/components/binary_devices/algae_generator_vr.dm b/code/modules/atmospherics/machinery/components/binary_devices/algae_generator_vr.dm
index 799768392e2d..fb6a8bf7103e 100644
--- a/code/modules/atmospherics/machinery/components/binary_devices/algae_generator_vr.dm
+++ b/code/modules/atmospherics/machinery/components/binary_devices/algae_generator_vr.dm
@@ -137,7 +137,7 @@
to_chat(user, SPAN_NOTICE("You cannot insert this item into \the [src]!"))
return
-/obj/machinery/atmospherics/component/binary/algae_farm/attack_hand(mob/user, list/params)
+/obj/machinery/atmospherics/component/binary/algae_farm/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..())
return TRUE
ui_interact(user)
diff --git a/code/modules/atmospherics/machinery/components/binary_devices/heat_pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/heat_pump.dm
index f9fa8cb4c6a7..5e4bc19db5cd 100644
--- a/code/modules/atmospherics/machinery/components/binary_devices/heat_pump.dm
+++ b/code/modules/atmospherics/machinery/components/binary_devices/heat_pump.dm
@@ -109,7 +109,7 @@
"You hear ratchet.")
deconstruct()
-/obj/machinery/atmospherics/component/binary/heat_pump/attack_hand(mob/user, list/params)
+/obj/machinery/atmospherics/component/binary/heat_pump/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..())
return
src.add_fingerprint(usr)
diff --git a/code/modules/atmospherics/machinery/components/binary_devices/massive_gas_pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/massive_gas_pump.dm
index 0ac892f84e8f..02f90da33167 100644
--- a/code/modules/atmospherics/machinery/components/binary_devices/massive_gas_pump.dm
+++ b/code/modules/atmospherics/machinery/components/binary_devices/massive_gas_pump.dm
@@ -147,7 +147,7 @@
return data
-/obj/machinery/atmospherics/component/binary/massive_gas_pump/attack_hand(mob/user, list/params)
+/obj/machinery/atmospherics/component/binary/massive_gas_pump/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..())
return
add_fingerprint(usr)
diff --git a/code/modules/atmospherics/machinery/components/binary_devices/massive_heat_pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/massive_heat_pump.dm
index 6704cfe860e7..bc6706dd316b 100644
--- a/code/modules/atmospherics/machinery/components/binary_devices/massive_heat_pump.dm
+++ b/code/modules/atmospherics/machinery/components/binary_devices/massive_heat_pump.dm
@@ -171,7 +171,7 @@
return data
-/obj/machinery/atmospherics/component/binary/massive_heat_pump/attack_hand(mob/user, list/params)
+/obj/machinery/atmospherics/component/binary/massive_heat_pump/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..())
return
add_fingerprint(usr)
diff --git a/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm b/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm
index 7cbe517906e0..66b1368d7eba 100644
--- a/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm
+++ b/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm
@@ -165,7 +165,7 @@
update_icon()
return
-/obj/machinery/atmospherics/component/binary/passive_gate/attack_hand(mob/user, list/params)
+/obj/machinery/atmospherics/component/binary/passive_gate/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..())
return
add_fingerprint(usr)
diff --git a/code/modules/atmospherics/machinery/components/binary_devices/pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/pump.dm
index 3ad9ead3179c..f800ce95d03e 100644
--- a/code/modules/atmospherics/machinery/components/binary_devices/pump.dm
+++ b/code/modules/atmospherics/machinery/components/binary_devices/pump.dm
@@ -228,7 +228,7 @@ Thus, the two variables affect pump operation are set in New():
. = ..()
ui_interact(user)
-/obj/machinery/atmospherics/component/binary/pump/attack_hand(mob/user, list/params)
+/obj/machinery/atmospherics/component/binary/pump/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..())
return
add_fingerprint(usr)
diff --git a/code/modules/atmospherics/machinery/components/binary_devices/valve.dm b/code/modules/atmospherics/machinery/components/binary_devices/valve.dm
index b7259bbe650e..be7fc2a85e66 100644
--- a/code/modules/atmospherics/machinery/components/binary_devices/valve.dm
+++ b/code/modules/atmospherics/machinery/components/binary_devices/valve.dm
@@ -127,7 +127,7 @@
/obj/machinery/atmospherics/valve/attack_ai(mob/user as mob)
return
-/obj/machinery/atmospherics/valve/attack_hand(mob/user, list/params)
+/obj/machinery/atmospherics/valve/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
src.add_fingerprint(usr)
update_icon()
sleep(10)
@@ -231,7 +231,7 @@
/obj/machinery/atmospherics/valve/digital/attack_ai(mob/user as mob)
return src.attack_hand(user)
-/obj/machinery/atmospherics/valve/digital/attack_hand(mob/user, list/params)
+/obj/machinery/atmospherics/valve/digital/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(!powered())
return
if(!src.allowed(user))
diff --git a/code/modules/atmospherics/machinery/components/omni_devices/omni_base.dm b/code/modules/atmospherics/machinery/components/omni_devices/omni_base.dm
index 2fb778a832bf..d0b30901194f 100644
--- a/code/modules/atmospherics/machinery/components/omni_devices/omni_base.dm
+++ b/code/modules/atmospherics/machinery/components/omni_devices/omni_base.dm
@@ -103,7 +103,7 @@
return TRUE
return FALSE
-/obj/machinery/atmospherics/component/quaternary/attack_hand(mob/user, list/params)
+/obj/machinery/atmospherics/component/quaternary/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..())
return
diff --git a/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm b/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm
index f5c4892d1606..1af33310211e 100644
--- a/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm
+++ b/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm
@@ -94,7 +94,7 @@
data["node2_dir"] = dir_name(node_connects[2],TRUE)
return data
-/obj/machinery/atmospherics/component/trinary/mixer/attack_hand(mob/user, list/params)
+/obj/machinery/atmospherics/component/trinary/mixer/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..())
return
ui_interact(user)
diff --git a/code/modules/atmospherics/machinery/components/trinary_devices/tvalve.dm b/code/modules/atmospherics/machinery/components/trinary_devices/tvalve.dm
index d9cc0b620281..6df7bc5a6a39 100644
--- a/code/modules/atmospherics/machinery/components/trinary_devices/tvalve.dm
+++ b/code/modules/atmospherics/machinery/components/trinary_devices/tvalve.dm
@@ -157,7 +157,7 @@
/obj/machinery/atmospherics/tvalve/attack_ai(mob/user as mob)
return
-/obj/machinery/atmospherics/tvalve/attack_hand(mob/user, list/params)
+/obj/machinery/atmospherics/tvalve/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
src.add_fingerprint(usr)
animation()
sleep(10)
@@ -281,7 +281,7 @@
/obj/machinery/atmospherics/tvalve/digital/attack_ai(mob/user as mob)
return src.attack_hand(user)
-/obj/machinery/atmospherics/tvalve/digital/attack_hand(mob/user, list/params)
+/obj/machinery/atmospherics/tvalve/digital/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(!powered())
return
if(!src.allowed(user))
diff --git a/code/modules/atmospherics/machinery/components/unary/gas_freezer.dm b/code/modules/atmospherics/machinery/components/unary/gas_freezer.dm
index e0df0c43d522..e7c576661f2c 100644
--- a/code/modules/atmospherics/machinery/components/unary/gas_freezer.dm
+++ b/code/modules/atmospherics/machinery/components/unary/gas_freezer.dm
@@ -59,7 +59,7 @@
/obj/machinery/atmospherics/component/unary/freezer/attack_ai(mob/user as mob)
ui_interact(user)
-/obj/machinery/atmospherics/component/unary/freezer/attack_hand(mob/user, list/params)
+/obj/machinery/atmospherics/component/unary/freezer/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
ui_interact(user)
/obj/machinery/atmospherics/component/unary/freezer/ui_interact(mob/user, datum/tgui/ui)
diff --git a/code/modules/atmospherics/machinery/components/unary/gas_heater.dm b/code/modules/atmospherics/machinery/components/unary/gas_heater.dm
index 1e3a14a325c5..022f5157f20b 100644
--- a/code/modules/atmospherics/machinery/components/unary/gas_heater.dm
+++ b/code/modules/atmospherics/machinery/components/unary/gas_heater.dm
@@ -73,7 +73,7 @@
/obj/machinery/atmospherics/component/unary/heater/attack_ai(mob/user as mob)
ui_interact(user)
-/obj/machinery/atmospherics/component/unary/heater/attack_hand(mob/user, list/params)
+/obj/machinery/atmospherics/component/unary/heater/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
ui_interact(user)
/obj/machinery/atmospherics/component/unary/heater/ui_interact(mob/user, datum/tgui/ui)
diff --git a/code/modules/atmospherics/machinery/components/unary/outlet_injector.dm b/code/modules/atmospherics/machinery/components/unary/outlet_injector.dm
index 9e3fccd31a00..ca0498f07b66 100644
--- a/code/modules/atmospherics/machinery/components/unary/outlet_injector.dm
+++ b/code/modules/atmospherics/machinery/components/unary/outlet_injector.dm
@@ -193,7 +193,7 @@
broadcast_status()
update_icon()
-/obj/machinery/atmospherics/component/unary/outlet_injector/attack_hand(mob/user, list/params)
+/obj/machinery/atmospherics/component/unary/outlet_injector/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
ui_interact(user)
/obj/machinery/atmospherics/component/unary/outlet_injector/proc/toggle_injecting()
diff --git a/code/modules/atmospherics/machinery/portable/area_atmos_computer.dm b/code/modules/atmospherics/machinery/portable/area_atmos_computer.dm
index b7f1e566ce16..6b799e21fdce 100644
--- a/code/modules/atmospherics/machinery/portable/area_atmos_computer.dm
+++ b/code/modules/atmospherics/machinery/portable/area_atmos_computer.dm
@@ -23,7 +23,7 @@
/obj/machinery/computer/area_atmos/attack_ai(mob/user)
return src.attack_hand(user)
-/obj/machinery/computer/area_atmos/attack_hand(mob/user, list/params)
+/obj/machinery/computer/area_atmos/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..(user))
return
ui_interact(user)
diff --git a/code/modules/atmospherics/machinery/portable/canister.dm b/code/modules/atmospherics/machinery/portable/canister.dm
index c70bc68b6aa6..216eae7ccc77 100644
--- a/code/modules/atmospherics/machinery/portable/canister.dm
+++ b/code/modules/atmospherics/machinery/portable/canister.dm
@@ -307,7 +307,7 @@ update_flag
/obj/machinery/portable_atmospherics/canister/attack_ai(var/mob/user as mob)
return src.attack_hand(user)
-/obj/machinery/portable_atmospherics/canister/attack_hand(mob/user, list/params)
+/obj/machinery/portable_atmospherics/canister/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
return src.ui_interact(user)
/obj/machinery/portable_atmospherics/canister/ui_state()
diff --git a/code/modules/atmospherics/machinery/portable/pump.dm b/code/modules/atmospherics/machinery/portable/pump.dm
index dc3fa0c1134e..1e314a16cb8f 100644
--- a/code/modules/atmospherics/machinery/portable/pump.dm
+++ b/code/modules/atmospherics/machinery/portable/pump.dm
@@ -105,7 +105,7 @@
. = ..()
return src.attack_hand(user)
-/obj/machinery/portable_atmospherics/powered/pump/attack_hand(mob/user, list/params)
+/obj/machinery/portable_atmospherics/powered/pump/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
ui_interact(user)
/obj/machinery/portable_atmospherics/powered/pump/ui_interact(mob/user, datum/tgui/ui)
diff --git a/code/modules/awaymissions/bluespaceartillery.dm b/code/modules/awaymissions/bluespaceartillery.dm
index 70aa1e5bd534..466351a52353 100644
--- a/code/modules/awaymissions/bluespaceartillery.dm
+++ b/code/modules/awaymissions/bluespaceartillery.dm
@@ -20,7 +20,7 @@
/obj/structure/artilleryplaceholder/decorative
density = 0
-/obj/machinery/artillerycontrol/attack_hand(mob/user, list/params)
+/obj/machinery/artillerycontrol/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
user.set_machine(src)
var/dat = "Bluespace Artillery Control:
"
dat += "Locked on
"
diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm
index fa2f3fdbdd92..6617f54e03e5 100644
--- a/code/modules/clothing/masks/miscellaneous.dm
+++ b/code/modules/clothing/masks/miscellaneous.dm
@@ -21,7 +21,7 @@
say_verbs = list("mumbles", "says")
// Clumsy folks can't take the mask off themselves.
-/obj/item/clothing/mask/muzzle/attack_hand(mob/user, list/params)
+/obj/item/clothing/mask/muzzle/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user.item_by_slot_id(SLOT_ID_MASK) == src && !user.IsAdvancedToolUser())
return 0
..()
diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm
index db94bf4b60fe..8d43ec80d2b9 100644
--- a/code/modules/clothing/shoes/_shoes.dm
+++ b/code/modules/clothing/shoes/_shoes.dm
@@ -66,7 +66,7 @@
update_icon()
-/obj/item/clothing/shoes/attack_hand(mob/user, list/params)
+/obj/item/clothing/shoes/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(can_hold_knife == 1 && holding && src.loc == user)
draw_knife()
return
diff --git a/code/modules/clothing/under/accessories/accessory.dm b/code/modules/clothing/under/accessories/accessory.dm
index ca0607567040..a9c28b8385af 100644
--- a/code/modules/clothing/under/accessories/accessory.dm
+++ b/code/modules/clothing/under/accessories/accessory.dm
@@ -133,7 +133,7 @@
..()
//default attack_hand behaviour
-/obj/item/clothing/accessory/attack_hand(mob/user, list/params)
+/obj/item/clothing/accessory/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(accessory_host)
return //we aren't an object on the ground so don't call parent
..()
diff --git a/code/modules/clothing/under/accessories/holster.dm b/code/modules/clothing/under/accessories/holster.dm
index 20d169cc85ea..339fda618d4a 100644
--- a/code/modules/clothing/under/accessories/holster.dm
+++ b/code/modules/clothing/under/accessories/holster.dm
@@ -67,7 +67,7 @@
set_weight_class(initial(w_class))
clear_holster()
-/obj/item/clothing/accessory/holster/attack_hand(mob/user, list/params)
+/obj/item/clothing/accessory/holster/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if (accessory_host && (slot & ACCESSORY_SLOT_UTILITY))
if(holstered)
unholster(user)
diff --git a/code/modules/detectivework/microscope/dnascanner.dm b/code/modules/detectivework/microscope/dnascanner.dm
index 58699c567182..281fdbb77ee9 100644
--- a/code/modules/detectivework/microscope/dnascanner.dm
+++ b/code/modules/detectivework/microscope/dnascanner.dm
@@ -142,7 +142,7 @@
/obj/machinery/dnaforensics/attack_ai(mob/user)
ui_interact(user)
-/obj/machinery/dnaforensics/attack_hand(mob/user, list/params)
+/obj/machinery/dnaforensics/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
ui_interact(user)
/obj/machinery/dnaforensics/update_icon()
diff --git a/code/modules/detectivework/microscope/microscope.dm b/code/modules/detectivework/microscope/microscope.dm
index 5be88931cf1d..696f0910d0c5 100644
--- a/code/modules/detectivework/microscope/microscope.dm
+++ b/code/modules/detectivework/microscope/microscope.dm
@@ -25,7 +25,7 @@
return
return ..()
-/obj/machinery/microscope/attack_hand(mob/user, list/params)
+/obj/machinery/microscope/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(!sample)
to_chat(user, "The microscope has no sample to examine.")
diff --git a/code/modules/economy/machines/ATM.dm b/code/modules/economy/machines/ATM.dm
index e2967158e2c9..3fdd838f12de 100644
--- a/code/modules/economy/machines/ATM.dm
+++ b/code/modules/economy/machines/ATM.dm
@@ -308,7 +308,7 @@ GLOBAL_LIST_INIT(atm_sounds, list('sound/items/polaroid1.ogg', 'sound/items/pola
authenticated_account = null
account_security_level = 0
-/obj/machinery/atm/attack_hand(mob/user, list/params)
+/obj/machinery/atm/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(istype(user, /mob/living/silicon))
to_chat (user, SPAN_WARNING("A firewall prevents you from interfacing with this device!"))
return
diff --git a/code/modules/economy/machines/Accounts_DB.dm b/code/modules/economy/machines/Accounts_DB.dm
index 08cfd60644de..7eef108386f4 100644
--- a/code/modules/economy/machines/Accounts_DB.dm
+++ b/code/modules/economy/machines/Accounts_DB.dm
@@ -57,7 +57,7 @@
attack_hand(user)
-/obj/machinery/account_database/attack_hand(mob/user, list/params)
+/obj/machinery/account_database/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(machine_stat & (NOPOWER|BROKEN))
return
nano_ui_interact(user)
diff --git a/code/modules/economy/machines/cash_register.dm b/code/modules/economy/machines/cash_register.dm
index 99da9607305b..893f02028bb6 100644
--- a/code/modules/economy/machines/cash_register.dm
+++ b/code/modules/economy/machines/cash_register.dm
@@ -39,7 +39,7 @@
. += "It's completely empty."
-/obj/machinery/cash_register/attack_hand(mob/user, list/params)
+/obj/machinery/cash_register/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
// Don't be accessible from the wrong side of the machine
if(get_dir(src, user) & global.reverse_dir[src.dir]) return
diff --git a/code/modules/economy/machines/mint.dm b/code/modules/economy/machines/mint.dm
index 858b40fa4ed5..daacc66ee439 100644
--- a/code/modules/economy/machines/mint.dm
+++ b/code/modules/economy/machines/mint.dm
@@ -81,7 +81,7 @@
if(processed)
qdel(O)
-/obj/machinery/mineral/mint/attack_hand(mob/user, list/params)
+/obj/machinery/mineral/mint/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
var/dat = "Coin Press
"
@@ -474,7 +474,7 @@
/obj/machinery/coinbank/attack_ai(mob/user as mob)
attack_hand(user)
-/obj/machinery/coinbank/attack_hand(mob/user, list/params)
+/obj/machinery/coinbank/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(machine_stat & (NOPOWER|BROKEN))
return
wires.Interact(user)
diff --git a/code/modules/economy/money_bag.dm b/code/modules/economy/money_bag.dm
index 04a467c8cff1..334bf4051b5f 100644
--- a/code/modules/economy/money_bag.dm
+++ b/code/modules/economy/money_bag.dm
@@ -8,7 +8,7 @@
throw_force = 2.0
w_class = WEIGHT_CLASS_BULKY
-/obj/item/moneybag/attack_hand(mob/user, list/params)
+/obj/item/moneybag/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
var/amt_supermatter = 0
var/amt_bananium = 0
var/amt_mhydrogen = 0
diff --git a/code/modules/food/drinkingglass/extras.dm b/code/modules/food/drinkingglass/extras.dm
index d51297c70588..94b0d7690eb9 100644
--- a/code/modules/food/drinkingglass/extras.dm
+++ b/code/modules/food/drinkingglass/extras.dm
@@ -26,7 +26,7 @@
else
return ..()
-/obj/item/reagent_containers/food/drinks/glass2/attack_hand(mob/user, list/params)
+/obj/item/reagent_containers/food/drinks/glass2/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(src != user.get_inactive_held_item())
return ..()
diff --git a/code/modules/food/food/snacks.dm b/code/modules/food/food/snacks.dm
index f0b26d356190..ab89a235a24c 100644
--- a/code/modules/food/food/snacks.dm
+++ b/code/modules/food/food/snacks.dm
@@ -3273,7 +3273,7 @@
add_overlay(overlays_to_add)
-/obj/item/pizzabox/attack_hand(mob/user, list/params)
+/obj/item/pizzabox/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if( open && pizza )
user.put_in_hands( pizza )
@@ -4807,7 +4807,7 @@ END CITADEL CHANGE */
bitesize = 1
nutriment_amt = 10
-/obj/item/reagent_containers/food/snacks/chipplate/attack_hand(mob/user, list/params)
+/obj/item/reagent_containers/food/snacks/chipplate/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
// todo: sigh, no ..(); shift over to on_attack_hand
var/obj/item/reagent_containers/food/snacks/returningitem = new vendingobject(loc)
returningitem.reagents.clear_reagents()
diff --git a/code/modules/food/glass/bottle.dm b/code/modules/food/glass/bottle.dm
index 76736ada9951..7e47c25b1cee 100644
--- a/code/modules/food/glass/bottle.dm
+++ b/code/modules/food/glass/bottle.dm
@@ -26,7 +26,7 @@
..()
update_icon()
-/obj/item/reagent_containers/glass/bottle/attack_hand(mob/user, list/params)
+/obj/item/reagent_containers/glass/bottle/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
..()
update_icon()
diff --git a/code/modules/food/machinery/appliance/_appliance.dm b/code/modules/food/machinery/appliance/_appliance.dm
index 8bf657ddface..641141ac8286 100644
--- a/code/modules/food/machinery/appliance/_appliance.dm
+++ b/code/modules/food/machinery/appliance/_appliance.dm
@@ -541,7 +541,7 @@
smoke.set_up(10, 0, get_turf(src), 300)
smoke.start()
-/obj/machinery/appliance/attack_hand(mob/user, list/params)
+/obj/machinery/appliance/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if (cooking_objs.len)
if (removal_menu(user))
return
diff --git a/code/modules/food/machinery/gibber.dm b/code/modules/food/machinery/gibber.dm
index 128eed53e599..c5090d677078 100644
--- a/code/modules/food/machinery/gibber.dm
+++ b/code/modules/food/machinery/gibber.dm
@@ -76,7 +76,7 @@
src.go_out()
return
-/obj/machinery/gibber/attack_hand(mob/user, list/params)
+/obj/machinery/gibber/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(machine_stat & (NOPOWER|BROKEN))
return
if(operating)
diff --git a/code/modules/food/machinery/microwave.dm b/code/modules/food/machinery/microwave.dm
index fbd660f080f2..d31dbd2e4ae9 100644
--- a/code/modules/food/machinery/microwave.dm
+++ b/code/modules/food/machinery/microwave.dm
@@ -162,7 +162,7 @@
if(istype(user, /mob/living/silicon/robot) && Adjacent(user))
attack_hand(user)
-/obj/machinery/microwave/attack_hand(mob/user, list/params)
+/obj/machinery/microwave/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
user.set_machine(src)
interact(user)
diff --git a/code/modules/food/machinery/smartfridge.dm b/code/modules/food/machinery/smartfridge.dm
index bfa4a59d7a46..d75dd5222df9 100644
--- a/code/modules/food/machinery/smartfridge.dm
+++ b/code/modules/food/machinery/smartfridge.dm
@@ -202,7 +202,7 @@
/obj/machinery/smartfridge/attack_ai(mob/user as mob)
attack_hand(user)
-/obj/machinery/smartfridge/attack_hand(mob/user, list/params)
+/obj/machinery/smartfridge/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(machine_stat & (NOPOWER|BROKEN))
return
wires.Interact(user)
diff --git a/code/modules/games/cards.dm b/code/modules/games/cards.dm
index 7b76176cb2ae..1fb2c99dffed 100644
--- a/code/modules/games/cards.dm
+++ b/code/modules/games/cards.dm
@@ -67,7 +67,7 @@
return
..()
-/obj/item/deck/attack_hand(mob/user, list/params)
+/obj/item/deck/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
var/mob/living/carbon/human/H = user
if(istype(src.loc, /obj/item/storage) || src == H.r_store || src == H.l_store || src.loc == user) // so objects can be removed from storage containers or pockets. also added a catch-all, so if it's in the mob you'll pick it up.
..()
diff --git a/code/modules/gateway/stargate/stargate-away.dm b/code/modules/gateway/stargate/stargate-away.dm
index 424ad7fb9294..9a1e694cf287 100644
--- a/code/modules/gateway/stargate/stargate-away.dm
+++ b/code/modules/gateway/stargate/stargate-away.dm
@@ -67,7 +67,7 @@
update_icon()
-/obj/machinery/gateway/centeraway/attack_hand(mob/user, list/params)
+/obj/machinery/gateway/centeraway/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(!ready)
detect()
return
diff --git a/code/modules/gateway/stargate/stargate-station.dm b/code/modules/gateway/stargate/stargate-station.dm
index 9708760a87b8..b7e780051a44 100644
--- a/code/modules/gateway/stargate/stargate-station.dm
+++ b/code/modules/gateway/stargate/stargate-station.dm
@@ -84,7 +84,7 @@
update_icon()
-/obj/machinery/gateway/centerstation/attack_hand(mob/user, list/params)
+/obj/machinery/gateway/centerstation/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(!ready)
detect()
return
diff --git a/code/modules/hardsuits/pieces.dm b/code/modules/hardsuits/pieces.dm
index 6615b4240656..84688d96acc5 100644
--- a/code/modules/hardsuits/pieces.dm
+++ b/code/modules/hardsuits/pieces.dm
@@ -85,7 +85,7 @@
hardsuit = null
return ..()
-/obj/item/clothing/suit/space/hardsuit/attack_hand(mob/user, list/params)
+/obj/item/clothing/suit/space/hardsuit/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(tacknife)
tacknife.loc = get_turf(src)
if(user.put_in_active_hand(tacknife))
diff --git a/code/modules/hardsuits/rig_attackby.dm b/code/modules/hardsuits/rig_attackby.dm
index 52330ed2c0f6..2e85da1c35e7 100644
--- a/code/modules/hardsuits/rig_attackby.dm
+++ b/code/modules/hardsuits/rig_attackby.dm
@@ -172,7 +172,7 @@
..()
-/obj/item/hardsuit/attack_hand(mob/user, list/params)
+/obj/item/hardsuit/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(electrified != 0)
if(shock(user)) //Handles removing charge from the cell, as well. No need to do that here.
diff --git a/code/modules/hardsuits/rig_pieces.dm b/code/modules/hardsuits/rig_pieces.dm
index 31cea56b0346..471a9793cdc9 100644
--- a/code/modules/hardsuits/rig_pieces.dm
+++ b/code/modules/hardsuits/rig_pieces.dm
@@ -178,7 +178,7 @@
SPECIES_ZORREN_HIGH,
)
-/obj/item/clothing/suit/space/hardsuit/attack_hand(mob/user, list/params)
+/obj/item/clothing/suit/space/hardsuit/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(tacknife)
tacknife.loc = get_turf(src)
if(user.put_in_active_hand(tacknife))
diff --git a/code/modules/holodeck/HolodeckControl.dm b/code/modules/holodeck/HolodeckControl.dm
index b5697ff0b7fe..95b91e324001 100644
--- a/code/modules/holodeck/HolodeckControl.dm
+++ b/code/modules/holodeck/HolodeckControl.dm
@@ -75,7 +75,7 @@
/obj/machinery/computer/HolodeckControl/attack_ai(var/mob/user as mob)
return src.attack_hand(user)
-/obj/machinery/computer/HolodeckControl/attack_hand(mob/user, list/params)
+/obj/machinery/computer/HolodeckControl/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..())
return
user.set_machine(src)
diff --git a/code/modules/holodeck/HolodeckObjects.dm b/code/modules/holodeck/HolodeckObjects.dm
index dfe40dcf534f..73ca10c2a5fb 100644
--- a/code/modules/holodeck/HolodeckObjects.dm
+++ b/code/modules/holodeck/HolodeckObjects.dm
@@ -359,7 +359,7 @@
/obj/machinery/readybutton/attackby(obj/item/W as obj, mob/user as mob)
to_chat(user, "The device is a solid button, there's nothing you can do with it!")
-/obj/machinery/readybutton/attack_hand(mob/user, list/params)
+/obj/machinery/readybutton/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user.stat || machine_stat & (NOPOWER|BROKEN))
to_chat(user, "This device is not powered.")
diff --git a/code/modules/holomap/station_holomap.dm b/code/modules/holomap/station_holomap.dm
index d89f025a7aef..1a68c7e39f6f 100644
--- a/code/modules/holomap/station_holomap.dm
+++ b/code/modules/holomap/station_holomap.dm
@@ -70,7 +70,7 @@
// floor_markings.layer = FLOOR_DECAL_LAYER
update_icon()
-/obj/machinery/station_map/attack_hand(mob/user, list/params)
+/obj/machinery/station_map/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(watching_mob && (watching_mob != user))
to_chat(user, "Someone else is currently watching the holomap.")
return
diff --git a/code/modules/hydroponics/beekeeping/beehive.dm b/code/modules/hydroponics/beekeeping/beehive.dm
index 5b6cd3714752..7e3e2e941fe0 100644
--- a/code/modules/hydroponics/beekeeping/beehive.dm
+++ b/code/modules/hydroponics/beekeeping/beehive.dm
@@ -122,7 +122,7 @@
qdel(src)
return
-/obj/machinery/beehive/attack_hand(mob/user, list/params)
+/obj/machinery/beehive/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(!closed)
if(honeycombs < 100)
to_chat(user, "There are no filled honeycombs.")
diff --git a/code/modules/hydroponics/seed_machines.dm b/code/modules/hydroponics/seed_machines.dm
index b649fc10f1f5..11f538991210 100644
--- a/code/modules/hydroponics/seed_machines.dm
+++ b/code/modules/hydroponics/seed_machines.dm
@@ -63,7 +63,7 @@
/obj/machinery/botany/attack_ai(mob/user as mob)
return attack_hand(user)
-/obj/machinery/botany/attack_hand(mob/user, list/params)
+/obj/machinery/botany/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
ui_interact(user)
/obj/machinery/botany/proc/finished_task()
diff --git a/code/modules/hydroponics/seed_storage.dm b/code/modules/hydroponics/seed_storage.dm
index 2d8ddb5c6885..1c05181dcd54 100644
--- a/code/modules/hydroponics/seed_storage.dm
+++ b/code/modules/hydroponics/seed_storage.dm
@@ -206,7 +206,7 @@
/obj/item/seeds/whitebeetseed = 3
)
-/obj/machinery/seed_storage/attack_hand(mob/user, list/params)
+/obj/machinery/seed_storage/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(machine_stat & (BROKEN|NOPOWER))
return
diff --git a/code/modules/hydroponics/spreading/spreading.dm b/code/modules/hydroponics/spreading/spreading.dm
index 08d3b1d3ad03..49a80bab7d2c 100644
--- a/code/modules/hydroponics/spreading/spreading.dm
+++ b/code/modules/hydroponics/spreading/spreading.dm
@@ -36,7 +36,7 @@
integrity_enabled = TRUE
obj_flags = OBJ_MELEE_TARGETABLE | OBJ_RANGE_TARGETABLE
-/obj/effect/dead_plant/attack_hand(mob/user, list/params)
+/obj/effect/dead_plant/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
qdel(src)
/obj/effect/dead_plant/attackby()
diff --git a/code/modules/hydroponics/spreading/spreading_response.dm b/code/modules/hydroponics/spreading/spreading_response.dm
index 88657e388d31..016ae848fa3a 100644
--- a/code/modules/hydroponics/spreading/spreading_response.dm
+++ b/code/modules/hydroponics/spreading/spreading_response.dm
@@ -34,7 +34,7 @@
if(!M.apply_damage(base_damage, BRUTE, target_zone, blocked, soaked, used_weapon=src))
return 0
-/obj/effect/plant/attack_hand(mob/user, list/params)
+/obj/effect/plant/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
manual_unbuckle(user)
/obj/effect/plant/attack_generic(var/mob/user)
diff --git a/code/modules/hydroponics/trays/tray.dm b/code/modules/hydroponics/trays/tray.dm
index 6003b3b9eabb..707cf82533f7 100644
--- a/code/modules/hydroponics/trays/tray.dm
+++ b/code/modules/hydroponics/trays/tray.dm
@@ -576,7 +576,7 @@
else if(harvest)
harvest(user)
-/obj/machinery/portable_atmospherics/hydroponics/attack_hand(mob/user, list/params)
+/obj/machinery/portable_atmospherics/hydroponics/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(istype(usr,/mob/living/silicon))
return
diff --git a/code/modules/industry/conveyors/conveyor.dm b/code/modules/industry/conveyors/conveyor.dm
index 1f7c9b381b16..d0510a97b8ac 100644
--- a/code/modules/industry/conveyors/conveyor.dm
+++ b/code/modules/industry/conveyors/conveyor.dm
@@ -162,7 +162,7 @@
return ..()
// attack with hand, move pulled object onto conveyor
-/obj/machinery/conveyor/attack_hand(mob/user, list/params)
+/obj/machinery/conveyor/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(!CHECK_ALL_MOBILITY(user, MOBILITY_CAN_MOVE | MOBILITY_CAN_USE))
return
if(isnull(user.pulling) || user.pulling.anchored)
diff --git a/code/modules/industry/conveyors/conveyor_switch.dm b/code/modules/industry/conveyors/conveyor_switch.dm
index 6992ecf1ed2b..19d3acdef2ad 100644
--- a/code/modules/industry/conveyors/conveyor_switch.dm
+++ b/code/modules/industry/conveyors/conveyor_switch.dm
@@ -51,7 +51,7 @@
C.setmove()
// attack with hand, switch position
-/obj/machinery/conveyor_switch/attack_hand(mob/user, list/params)
+/obj/machinery/conveyor_switch/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(!allowed(user))
to_chat(user, "Access denied.")
return
@@ -112,7 +112,7 @@
desc = "A conveyor control switch. It appears to only go in one direction."
// attack with hand, switch position
-/obj/machinery/conveyor_switch/oneway/attack_hand(mob/user, list/params)
+/obj/machinery/conveyor_switch/oneway/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(position == 0)
position = convdir
else
diff --git a/code/modules/industry/disposals/disposal/chute.dm b/code/modules/industry/disposals/disposal/chute.dm
index 572b165c5b28..7fd8681bffb5 100644
--- a/code/modules/industry/disposals/disposal/chute.dm
+++ b/code/modules/industry/disposals/disposal/chute.dm
@@ -219,7 +219,7 @@
interact(user, 1)
// human interact with machine
-/obj/machinery/disposal/attack_hand(mob/user, list/params)
+/obj/machinery/disposal/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(machine_stat & BROKEN)
return
diff --git a/code/modules/industry/packages/large_parcel.dm b/code/modules/industry/packages/large_parcel.dm
index 268d5a6f94ba..c1c40307b0ba 100644
--- a/code/modules/industry/packages/large_parcel.dm
+++ b/code/modules/industry/packages/large_parcel.dm
@@ -26,7 +26,7 @@
AM.forceMove(T)
return ..()
-/obj/structure/bigDelivery/attack_hand(mob/user, list/params)
+/obj/structure/bigDelivery/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
unwrap()
/obj/structure/bigDelivery/proc/unwrap()
diff --git a/code/modules/instruments/instruments/stationary.dm b/code/modules/instruments/instruments/stationary.dm
index 390f10f10f11..1adf54e84ac3 100644
--- a/code/modules/instruments/instruments/stationary.dm
+++ b/code/modules/instruments/instruments/stationary.dm
@@ -23,7 +23,7 @@
return (usr.default_can_use_topic(src) < UI_UPDATE) //can play with MUTATION_TELEKINESIS and while resting because fun.
/// CITRP EDIT UNTIL INTERACTION REFACTOR PORT!
-/obj/structure/musician/attack_hand(mob/user, list/params)
+/obj/structure/musician/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
. = ..()
if(.)
return
diff --git a/code/modules/integrated_electronics/core/assemblies.dm b/code/modules/integrated_electronics/core/assemblies.dm
index d9765357ef40..43cfa1a3546b 100644
--- a/code/modules/integrated_electronics/core/assemblies.dm
+++ b/code/modules/integrated_electronics/core/assemblies.dm
@@ -609,7 +609,7 @@
return
..()
-/obj/item/electronic_assembly/attack_hand(mob/user, act_intent = user.a_intent, unarmed_attack_flags)
+/obj/item/electronic_assembly/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(anchored)
attack_self(user)
return
diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm
index 28d1d9450f14..5df9c106a829 100644
--- a/code/modules/library/lib_items.dm
+++ b/code/modules/library/lib_items.dm
@@ -54,7 +54,7 @@
else
..()
-/obj/structure/bookcase/attack_hand(mob/user, list/params)
+/obj/structure/bookcase/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(contents.len)
var/obj/item/book/choice = input("Which book would you like to remove from the shelf?") as null|obj in contents
if(choice)
diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm
index 7a2d668fff97..3980cecb08d0 100644
--- a/code/modules/library/lib_machines.dm
+++ b/code/modules/library/lib_machines.dm
@@ -31,7 +31,7 @@
var/category = "Any"
var/author
-/obj/machinery/librarypubliccomp/attack_hand(mob/user, list/params)
+/obj/machinery/librarypubliccomp/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
usr.set_machine(src)
var/dat = "Library Visitor\n" //
switch(screenstate)
@@ -160,7 +160,7 @@
var/obj/item/book/M = new path(null)
all_books[M.title] = M
-/obj/machinery/librarycomp/attack_hand(mob/user, list/params)
+/obj/machinery/librarycomp/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
usr.set_machine(src)
var/dat = "Book Inventory Management\n" //
switch(screenstate)
@@ -476,7 +476,7 @@
if(!user.attempt_insert_item_for_installation(I, src))
return
-/obj/machinery/libraryscanner/attack_hand(mob/user, list/params)
+/obj/machinery/libraryscanner/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
usr.set_machine(src)
var/dat = "Scanner Control Interface\n" //
if(cache)
diff --git a/code/modules/maps/away_missions/archive/wildwest.dm b/code/modules/maps/away_missions/archive/wildwest.dm
index f343556da93c..bb760ae21012 100644
--- a/code/modules/maps/away_missions/archive/wildwest.dm
+++ b/code/modules/maps/away_missions/archive/wildwest.dm
@@ -20,7 +20,7 @@
var/chargesa = 1
var/insistinga = 0
-/obj/machinery/wish_granter_dark/attack_hand(mob/user, list/params)
+/obj/machinery/wish_granter_dark/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
usr.set_machine(src)
if(chargesa <= 0)
diff --git a/code/modules/maps/misc_maps/lavaland/_lavaland.dm b/code/modules/maps/misc_maps/lavaland/_lavaland.dm
index 3b85aae9b434..6c5eb869c54c 100644
--- a/code/modules/maps/misc_maps/lavaland/_lavaland.dm
+++ b/code/modules/maps/misc_maps/lavaland/_lavaland.dm
@@ -22,7 +22,7 @@
use_power = USE_POWER_IDLE
interaction_flags_machine = INTERACT_MACHINE_OFFLINE | INTERACT_MACHINE_ALLOW_SILICON | INTERACT_MACHINE_OFFLINE_SILICON
-/obj/machinery/lavaland_entryportal/attack_hand(mob/user, list/params)
+/obj/machinery/lavaland_entryportal/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(istype(user, /mob/living/silicon/ai)) // lets not teleport AI cores
return
if(inoperable(MAINT))
@@ -58,7 +58,7 @@
anchored = 1
-/obj/effect/lavaland_exitportal/attack_hand(mob/user, list/params)
+/obj/effect/lavaland_exitportal/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(istype(usr, /mob/living/silicon/ai))
return
if(do_after(user, 10))
diff --git a/code/modules/materials/material_sheets.dm b/code/modules/materials/material_sheets.dm
index 950c64e4e9d0..0b9c51f98d69 100644
--- a/code/modules/materials/material_sheets.dm
+++ b/code/modules/materials/material_sheets.dm
@@ -299,7 +299,7 @@
update_mass()
return
-/obj/item/stack/material/supermatter/attack_hand(mob/user, list/params)
+/obj/item/stack/material/supermatter/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
. = ..()
update_mass()
diff --git a/code/modules/mining/drilling/drill.dm b/code/modules/mining/drilling/drill.dm
index dd1dce7bbf6a..3fc9105b9452 100644
--- a/code/modules/mining/drilling/drill.dm
+++ b/code/modules/mining/drilling/drill.dm
@@ -190,7 +190,7 @@
return
..()
-/obj/machinery/mining/drill/attack_hand(mob/user, list/params)
+/obj/machinery/mining/drill/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
check_supports()
if (panel_open && cell && user.Adjacent(src))
diff --git a/code/modules/mining/machine_processing.dm b/code/modules/mining/machine_processing.dm
index a39668372302..1de34552fa6f 100644
--- a/code/modules/mining/machine_processing.dm
+++ b/code/modules/mining/machine_processing.dm
@@ -30,7 +30,7 @@
inserted_id.forceMove(loc) //Prevents deconstructing from deleting whatever ID was inside it.
. = ..()
-/obj/machinery/mineral/processing_unit_console/attack_hand(mob/user, list/params)
+/obj/machinery/mineral/processing_unit_console/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..())
return
interact(user)
diff --git a/code/modules/mining/machine_stacking.dm b/code/modules/mining/machine_stacking.dm
index 8f93efbe270c..ec39ab65a50a 100644
--- a/code/modules/mining/machine_stacking.dm
+++ b/code/modules/mining/machine_stacking.dm
@@ -24,7 +24,7 @@
stack_trace("Stacking machine console at [COORD(src)] could not find its machine!")
qdel(src)
-/obj/machinery/mineral/stacking_unit_console/attack_hand(mob/user, list/params)
+/obj/machinery/mineral/stacking_unit_console/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
add_fingerprint(user)
interact(user)
diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm
index 4fc69fa899a7..8b8f630d436a 100644
--- a/code/modules/mining/mine_items.dm
+++ b/code/modules/mining/mine_items.dm
@@ -391,7 +391,7 @@
else
..()
-/obj/item/stack/flag/attack_hand(mob/user, list/params)
+/obj/item/stack/flag/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(upright)
upright = 0
icon_state = base_state
diff --git a/code/modules/mining/ore_redemption_machine/equipment_vendor.dm b/code/modules/mining/ore_redemption_machine/equipment_vendor.dm
index 16bacb7da61e..5b131d329524 100644
--- a/code/modules/mining/ore_redemption_machine/equipment_vendor.dm
+++ b/code/modules/mining/ore_redemption_machine/equipment_vendor.dm
@@ -119,7 +119,7 @@
else
icon_state = "[initial(icon_state)]-off"
-/obj/machinery/mineral/equipment_vendor/attack_hand(mob/user, list/params)
+/obj/machinery/mineral/equipment_vendor/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..())
return
interact(user)
diff --git a/code/modules/mining/shelter_atoms.dm b/code/modules/mining/shelter_atoms.dm
index 8cdb65a886d4..619a349bdb74 100644
--- a/code/modules/mining/shelter_atoms.dm
+++ b/code/modules/mining/shelter_atoms.dm
@@ -128,7 +128,7 @@
id = "placeholder_id_do_not_use" //This has to be this way, otherwise it will control ALL doors if left blank.
var/obj/machinery/door/airlock/voidcraft/survival_pod/door
-/obj/machinery/button/remote/airlock/survival_pod/attack_hand(obj/item/W, mob/user as mob)
+/obj/machinery/button/remote/airlock/survival_pod/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..()) return 1 //1 is failure on machines (for whatever reason)
if(!door)
var/turf/dT = get_step(src,dir)
@@ -209,7 +209,7 @@
return FALSE
-/obj/item/gps/computer/attack_hand(mob/user, list/params)
+/obj/item/gps/computer/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
attack_self(user)
//Bed
diff --git a/code/modules/mob/living/bot/cleanbot.dm b/code/modules/mob/living/bot/cleanbot.dm
index d019d087d085..7e1da92fc895 100644
--- a/code/modules/mob/living/bot/cleanbot.dm
+++ b/code/modules/mob/living/bot/cleanbot.dm
@@ -140,7 +140,7 @@
else
icon_state = "cleanbot[on]"
-/mob/living/bot/cleanbot/attack_hand(mob/user, list/params)
+/mob/living/bot/cleanbot/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
ui_interact(user)
/mob/living/bot/cleanbot/ui_interact(mob/user, datum/tgui/ui)
diff --git a/code/modules/mob/living/bot/farmbot.dm b/code/modules/mob/living/bot/farmbot.dm
index bbccdd32b11d..be45888d51a6 100644
--- a/code/modules/mob/living/bot/farmbot.dm
+++ b/code/modules/mob/living/bot/farmbot.dm
@@ -69,7 +69,7 @@
return data
-/mob/living/bot/farmbot/attack_hand(mob/user, list/params)
+/mob/living/bot/farmbot/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
. = ..()
if(.)
return
@@ -403,5 +403,5 @@
created_name = t
-/obj/item/farmbot_arm_assembly/attack_hand(mob/user, list/params)
+/obj/item/farmbot_arm_assembly/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
return //it's a converted watertank, no you cannot pick it up and put it in your backpack
diff --git a/code/modules/mob/living/bot/floorbot.dm b/code/modules/mob/living/bot/floorbot.dm
index 81e324c9c20e..a2bd72cba7eb 100644
--- a/code/modules/mob/living/bot/floorbot.dm
+++ b/code/modules/mob/living/bot/floorbot.dm
@@ -89,7 +89,7 @@
return data
-/mob/living/bot/floorbot/attack_hand(mob/user, list/params)
+/mob/living/bot/floorbot/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
ui_interact(user)
/mob/living/bot/floorbot/emag_act(var/remaining_charges, var/mob/user)
diff --git a/code/modules/mob/living/bot/medibot.dm b/code/modules/mob/living/bot/medibot.dm
index bc25e6d098d8..895abfebedcc 100644
--- a/code/modules/mob/living/bot/medibot.dm
+++ b/code/modules/mob/living/bot/medibot.dm
@@ -221,7 +221,7 @@
busy = FALSE
update_appearance()
-/mob/living/bot/medibot/attack_hand(mob/user, list/params)
+/mob/living/bot/medibot/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
. = ..()
if(.)
return
diff --git a/code/modules/mob/living/bot/secbot.dm b/code/modules/mob/living/bot/secbot.dm
index 48e5a56b50a8..7047005d3290 100644
--- a/code/modules/mob/living/bot/secbot.dm
+++ b/code/modules/mob/living/bot/secbot.dm
@@ -163,7 +163,7 @@
return data
-/mob/living/bot/secbot/attack_hand(mob/user, list/params)
+/mob/living/bot/secbot/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
ui_interact(user)
/mob/living/bot/secbot/ui_act(action, list/params, datum/tgui/ui)
diff --git a/code/modules/mob/living/carbon/alien/alien_attacks.dm b/code/modules/mob/living/carbon/alien/alien_attacks.dm
index bac33078a131..41b16b48f56a 100644
--- a/code/modules/mob/living/carbon/alien/alien_attacks.dm
+++ b/code/modules/mob/living/carbon/alien/alien_attacks.dm
@@ -3,7 +3,7 @@
/mob/living/carbon/alien/attack_ui(slot_id)
return
-/mob/living/carbon/alien/attack_hand(mob/user, list/params)
+/mob/living/carbon/alien/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
. = ..()
if(.)
return
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index 366bba485291..4a47c832a90c 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -38,7 +38,7 @@
N.show_message("[M] bursts out of [src]!", 2)
..()
-/mob/living/carbon/attack_hand(mob/user, list/params)
+/mob/living/carbon/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
var/mob/living/carbon/M = user
if(!istype(M))
return ..()
diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm
index 0667987fb4fa..99fe7baf87c9 100644
--- a/code/modules/mob/living/carbon/human/human_attackhand.dm
+++ b/code/modules/mob/living/carbon/human/human_attackhand.dm
@@ -25,7 +25,7 @@
return u_attack
return null
-/mob/living/carbon/human/attack_hand(mob/user, list/params)
+/mob/living/carbon/human/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
var/datum/gender/TT = GLOB.gender_datums[user.get_visible_gender()]
var/mob/living/carbon/human/H = user
if(istype(H))
diff --git a/code/modules/mob/living/carbon/human/traits/weaver_objs.dm b/code/modules/mob/living/carbon/human/traits/weaver_objs.dm
index 45211ebf7d6a..19bf346ed2ef 100644
--- a/code/modules/mob/living/carbon/human/traits/weaver_objs.dm
+++ b/code/modules/mob/living/carbon/human/traits/weaver_objs.dm
@@ -34,7 +34,7 @@ var/global/list/weavable_items = list()
if(damage)
qdel(src)
-/obj/effect/weaversilk/attack_hand(mob/user, list/params)
+/obj/effect/weaversilk/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
..()
if(user.a_intent == INTENT_HARM)
to_chat(user,"You easily tear down [name].")
@@ -81,7 +81,7 @@ var/global/list/weavable_items = list()
return
..()
-/obj/structure/bed/double/weaversilk_nest/attack_hand(mob/user, list/params)
+/obj/structure/bed/double/weaversilk_nest/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
..()
if(user.a_intent == INTENT_HARM && !has_buckled_mobs())
to_chat(user,"You easily tear down [name].")
diff --git a/code/modules/mob/living/living-defense-legacy.dm b/code/modules/mob/living/living-defense-legacy.dm
index ed9609f7d8f8..1e994c49ede8 100644
--- a/code/modules/mob/living/living-defense-legacy.dm
+++ b/code/modules/mob/living/living-defense-legacy.dm
@@ -92,11 +92,11 @@
return 0
// Clicking with an empty hand
-/mob/living/attack_hand(mob/user, list/params)
+/mob/living/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
. = ..()
if(.)
return
- SEND_SIGNAL(src, COMSIG_MOB_LEGACY_ATTACK_HAND_INTERCEPT, user, params)
+ SEND_SIGNAL(src, COMSIG_MOB_LEGACY_ATTACK_HAND_INTERCEPT, user, e_args)
var/mob/living/L = user
if(!istype(L))
return
diff --git a/code/modules/mob/living/silicon/pai/defense.dm b/code/modules/mob/living/silicon/pai/defense.dm
index 2811411b7799..d6faec813e36 100644
--- a/code/modules/mob/living/silicon/pai/defense.dm
+++ b/code/modules/mob/living/silicon/pai/defense.dm
@@ -36,7 +36,7 @@
else
. = ..()
-/mob/living/silicon/pai/attack_hand(mob/user, list/params)
+/mob/living/silicon/pai/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
. = ..()
if(. & CLICKCHAIN_DO_NOT_PROPAGATE)
return
diff --git a/code/modules/mob/living/silicon/pai/hologram_effect.dm b/code/modules/mob/living/silicon/pai/hologram_effect.dm
index 8c84bf80b10c..8bc6cc288ab8 100644
--- a/code/modules/mob/living/silicon/pai/hologram_effect.dm
+++ b/code/modules/mob/living/silicon/pai/hologram_effect.dm
@@ -10,7 +10,7 @@
/obj/effect/pai_hologram/attackby(obj/item/W, mob/user)
hologram_destroy(user)
-/obj/effect/pai_hologram/attack_hand(mob/user, list/params)
+/obj/effect/pai_hologram/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
hologram_destroy(user)
/obj/effect/pai_hologram/proc/hologram_destroy(mob/user)
diff --git a/code/modules/mob/living/silicon/robot/drone/drone_console.dm b/code/modules/mob/living/silicon/robot/drone/drone_console.dm
index e11d2eab337b..5687625be2ef 100644
--- a/code/modules/mob/living/silicon/robot/drone/drone_console.dm
+++ b/code/modules/mob/living/silicon/robot/drone/drone_console.dm
@@ -19,7 +19,7 @@
return UI_CLOSE
return ..()
-/obj/machinery/computer/drone_control/attack_hand(mob/user, list/params)
+/obj/machinery/computer/drone_control/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..())
return
diff --git a/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm b/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm
index 3e7214da92d6..0f453fe6feac 100644
--- a/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm
+++ b/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm
@@ -184,7 +184,7 @@
var/obj/machinery/drone_fabricator/chosen_fabricator = all_fabricators[choice]
chosen_fabricator.create_drone(src.client)
-/obj/machinery/drone_fabricator/attack_hand(mob/user, list/params)
+/obj/machinery/drone_fabricator/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(!is_spawn_safe)
is_spawn_safe = TRUE
to_chat(user, "You inform the fabricator that it is safe for drones to roam around.")
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index d141d84f0076..89781e21ebb3 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -832,7 +832,7 @@
module = null
updatename("Default")
-/mob/living/silicon/robot/attack_hand(mob/user, list/params)
+/mob/living/silicon/robot/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
. = ..()
if(. & CLICKCHAIN_DO_NOT_PROPAGATE)
return
diff --git a/code/modules/mob/living/simple_mob/defense.dm b/code/modules/mob/living/simple_mob/defense.dm
index 5bb0b7f077ec..af337354f3ea 100644
--- a/code/modules/mob/living/simple_mob/defense.dm
+++ b/code/modules/mob/living/simple_mob/defense.dm
@@ -1,5 +1,5 @@
// When someone clicks us with an empty hand
-/mob/living/simple_mob/attack_hand(mob/user, list/params)
+/mob/living/simple_mob/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
. = ..()
if(.)
return
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/farm animals/cow.dm b/code/modules/mob/living/simple_mob/subtypes/animal/farm animals/cow.dm
index dd1534a2565c..4c253e499ba0 100644
--- a/code/modules/mob/living/simple_mob/subtypes/animal/farm animals/cow.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/farm animals/cow.dm
@@ -62,7 +62,7 @@
if(udder && prob(5))
udder.add_reagent("milk", rand(5, 10))
-/mob/living/simple_mob/animal/passive/cow/attack_hand(mob/user, list/params)
+/mob/living/simple_mob/animal/passive/cow/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
var/mob/living/M = user
if(!istype(M))
return
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/passive/fish.dm b/code/modules/mob/living/simple_mob/subtypes/animal/passive/fish.dm
index e6c26cb9f8bb..96d69d7ed51c 100644
--- a/code/modules/mob/living/simple_mob/subtypes/animal/passive/fish.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/passive/fish.dm
@@ -110,7 +110,7 @@
var/obj/belly/B = loc
sting(B.owner)
-/mob/living/simple_mob/animal/passive/fish/koi/poisonous/attack_hand(mob/user, list/params)
+/mob/living/simple_mob/animal/passive/fish/koi/poisonous/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
. = ..()
if(.)
return
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/passive/mouse.dm b/code/modules/mob/living/simple_mob/subtypes/animal/passive/mouse.dm
index cdfebcaf0d36..c555b146fa42 100644
--- a/code/modules/mob/living/simple_mob/subtypes/animal/passive/mouse.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/passive/mouse.dm
@@ -145,7 +145,7 @@
emote_hear = list("squeeks","squeaks","squiks")
emote_see = list("runs in a circle", "shakes", "scritches at something")
-/mob/living/simple_mob/animal/passive/mouse/attack_hand(mob/user, list/params)
+/mob/living/simple_mob/animal/passive/mouse/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
var/mob/living/hander = user
if(!istype(hander))
return
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/pets/parrot.dm b/code/modules/mob/living/simple_mob/subtypes/animal/pets/parrot.dm
index 93b952241395..a58cfae66a3f 100644
--- a/code/modules/mob/living/simple_mob/subtypes/animal/pets/parrot.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/pets/parrot.dm
@@ -72,7 +72,7 @@
return ..()
// Clicked on by empty hand.
-/mob/living/simple_mob/animal/passive/bird/parrot/attack_hand(mob/user, list/params)
+/mob/living/simple_mob/animal/passive/bird/parrot/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
var/mob/living/L = user
if(!istype(L))
return
diff --git a/code/modules/mob/living/simple_mob/subtypes/horror/Eddy.dm b/code/modules/mob/living/simple_mob/subtypes/horror/Eddy.dm
index f1b32eb16bcd..256157269dea 100644
--- a/code/modules/mob/living/simple_mob/subtypes/horror/Eddy.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/horror/Eddy.dm
@@ -51,7 +51,7 @@
. = ..()
playsound(src, 'sound/h_sounds/holla.ogg', 50, 1)
-/mob/living/simple_mob/horror/Eddy/attack_hand(mob/user, list/params)
+/mob/living/simple_mob/horror/Eddy/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
playsound(src, 'sound/h_sounds/holla.ogg', 50, 1)
..()
diff --git a/code/modules/mob/living/simple_mob/subtypes/horror/Master.dm b/code/modules/mob/living/simple_mob/subtypes/horror/Master.dm
index 4c43aea4205e..749a490f3304 100644
--- a/code/modules/mob/living/simple_mob/subtypes/horror/Master.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/horror/Master.dm
@@ -52,7 +52,7 @@
. = ..()
playsound(src, 'sound/h_sounds/holla.ogg', 50, 1)
-/mob/living/simple_mob/horror/Master/attack_hand(mob/user, list/params)
+/mob/living/simple_mob/horror/Master/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
playsound(src, 'sound/h_sounds/holla.ogg', 50, 1)
..()
diff --git a/code/modules/mob/living/simple_mob/subtypes/horror/Rickey.dm b/code/modules/mob/living/simple_mob/subtypes/horror/Rickey.dm
index 94281d20ad83..c38bbbc1d272 100644
--- a/code/modules/mob/living/simple_mob/subtypes/horror/Rickey.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/horror/Rickey.dm
@@ -53,7 +53,7 @@
. = ..()
playsound(src, 'sound/h_sounds/holla.ogg', 50, 1)
-/mob/living/simple_mob/horror/Rickey/attack_hand(mob/user, list/params)
+/mob/living/simple_mob/horror/Rickey/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
playsound(src, 'sound/h_sounds/holla.ogg', 50, 1)
..()
diff --git a/code/modules/mob/living/simple_mob/subtypes/horror/Smiley.dm b/code/modules/mob/living/simple_mob/subtypes/horror/Smiley.dm
index 4cb631309dfb..3faa6b9225dd 100644
--- a/code/modules/mob/living/simple_mob/subtypes/horror/Smiley.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/horror/Smiley.dm
@@ -52,7 +52,7 @@
. = ..()
playsound(src, 'sound/h_sounds/holla.ogg', 50, 1)
-/mob/living/simple_mob/horror/Helix/attack_hand(mob/user, list/params)
+/mob/living/simple_mob/horror/Helix/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
playsound(src, 'sound/h_sounds/holla.ogg', 50, 1)
..()
diff --git a/code/modules/mob/living/simple_mob/subtypes/horror/Steve.dm b/code/modules/mob/living/simple_mob/subtypes/horror/Steve.dm
index 9b9c28a3a21a..775510d1c5e5 100644
--- a/code/modules/mob/living/simple_mob/subtypes/horror/Steve.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/horror/Steve.dm
@@ -57,7 +57,7 @@
. = ..()
playsound(src, 'sound/h_sounds/holla.ogg', 50, 1)
-/mob/living/simple_mob/horror/Steve/attack_hand(mob/user, list/params)
+/mob/living/simple_mob/horror/Steve/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
playsound(src, 'sound/h_sounds/holla.ogg', 50, 1)
..()
diff --git a/code/modules/mob/living/simple_mob/subtypes/horror/Willy.dm b/code/modules/mob/living/simple_mob/subtypes/horror/Willy.dm
index 63ec0ecd54b7..6d8e707a5130 100644
--- a/code/modules/mob/living/simple_mob/subtypes/horror/Willy.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/horror/Willy.dm
@@ -53,7 +53,7 @@
. = ..()
playsound(src, 'sound/h_sounds/holla.ogg', 50, 1)
-/mob/living/simple_mob/horror/Willy/attack_hand(mob/user, list/params)
+/mob/living/simple_mob/horror/Willy/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
playsound(src, 'sound/h_sounds/holla.ogg', 50, 1)
..()
diff --git a/code/modules/mob/living/simple_mob/subtypes/horror/bradley.dm b/code/modules/mob/living/simple_mob/subtypes/horror/bradley.dm
index dd8a6f962a37..7fe387538841 100644
--- a/code/modules/mob/living/simple_mob/subtypes/horror/bradley.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/horror/bradley.dm
@@ -51,7 +51,7 @@
. = ..()
playsound(src, 'sound/h_sounds/holla.ogg', 50, 1)
-/mob/living/simple_mob/horror/bradley/attack_hand(mob/user, list/params)
+/mob/living/simple_mob/horror/bradley/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
playsound(src, 'sound/h_sounds/holla.ogg', 50, 1)
..()
diff --git a/code/modules/mob/living/simple_mob/subtypes/horror/sally.dm b/code/modules/mob/living/simple_mob/subtypes/horror/sally.dm
index 64ec477eddc7..429cdc27508e 100644
--- a/code/modules/mob/living/simple_mob/subtypes/horror/sally.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/horror/sally.dm
@@ -50,7 +50,7 @@
. = ..()
playsound(src, 'sound/h_sounds/holla.ogg', 50, 1)
-/mob/living/simple_mob/horror/Sally/attack_hand(mob/user, list/params)
+/mob/living/simple_mob/horror/Sally/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
playsound(src, 'sound/h_sounds/holla.ogg', 50, 1)
..()
diff --git a/code/modules/mob/living/simple_mob/subtypes/horror/shittytim.dm b/code/modules/mob/living/simple_mob/subtypes/horror/shittytim.dm
index 4b79e05eed18..eb0140b42200 100644
--- a/code/modules/mob/living/simple_mob/subtypes/horror/shittytim.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/horror/shittytim.dm
@@ -51,7 +51,7 @@
. = ..()
playsound(src, 'sound/h_sounds/holla.ogg', 50, 1)
-/mob/living/simple_mob/horror/BigTim/attack_hand(mob/user, list/params)
+/mob/living/simple_mob/horror/BigTim/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
playsound(src, 'sound/h_sounds/holla.ogg', 50, 1)
..()
diff --git a/code/modules/mob/living/simple_mob/subtypes/horror/timling.dm b/code/modules/mob/living/simple_mob/subtypes/horror/timling.dm
index 41bfde71be47..68218e0440ee 100644
--- a/code/modules/mob/living/simple_mob/subtypes/horror/timling.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/horror/timling.dm
@@ -51,7 +51,7 @@
. = ..()
playsound(src, 'sound/h_sounds/holla.ogg', 50, 1)
-/mob/living/simple_mob/horror/TinyTim/attack_hand(mob/user, list/params)
+/mob/living/simple_mob/horror/TinyTim/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
playsound(src, 'sound/h_sounds/holla.ogg', 50, 1)
..()
diff --git a/code/modules/mob/living/simple_mob/subtypes/illusion/illusion.dm b/code/modules/mob/living/simple_mob/subtypes/illusion/illusion.dm
index 9e81d5932b36..721c948243db 100644
--- a/code/modules/mob/living/simple_mob/subtypes/illusion/illusion.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/illusion/illusion.dm
@@ -50,7 +50,7 @@
return ..()
return PROJECTILE_IMPACT_PHASE
-/mob/living/simple_mob/illusion/attack_hand(mob/user, list/params)
+/mob/living/simple_mob/illusion/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
var/mob/living/M = user
if(!istype(M))
return
diff --git a/code/modules/mob/living/simple_mob/subtypes/slime/slime.dm b/code/modules/mob/living/simple_mob/subtypes/slime/slime.dm
index 2218f6ab57f4..227fb8b5be9c 100644
--- a/code/modules/mob/living/simple_mob/subtypes/slime/slime.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/slime/slime.dm
@@ -159,7 +159,7 @@
adjustBruteLoss(-1)
// Clicked on by empty hand.
-/mob/living/simple_mob/slime/attack_hand(mob/user, list/params)
+/mob/living/simple_mob/slime/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
var/mob/living/L = user
if(!istype(L))
return
diff --git a/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/defense.dm b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/defense.dm
index 7d0d0eccb655..dcf8e437aa8c 100644
--- a/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/defense.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/defense.dm
@@ -2,7 +2,7 @@
// Clicked on by empty hand.
// Handles trying to wrestle a slime off of someone being eatten.
-/mob/living/simple_mob/slime/xenobio/attack_hand(mob/user, list/params)
+/mob/living/simple_mob/slime/xenobio/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
var/mob/living/L = user
if(!istype(L))
return
diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/c_pet.dm b/code/modules/mob/living/simple_mob/subtypes/vore/c_pet.dm
index 55598d1e9c19..666d3f0f6fd8 100644
--- a/code/modules/mob/living/simple_mob/subtypes/vore/c_pet.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/vore/c_pet.dm
@@ -40,7 +40,7 @@
has_langs = list("Coulrian")
-/mob/living/simple_mob/animal/passive/honkpet/attack_hand(mob/user, list/params)
+/mob/living/simple_mob/animal/passive/honkpet/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user.a_intent == INTENT_DISARM)
return icon_state = pick("c_pet", "m_pet")
.=..()
@@ -78,7 +78,7 @@
"rad" = 0
)
-/mob/living/simple_mob/animal/passive/mimepet/attack_hand(mob/user, list/params)
+/mob/living/simple_mob/animal/passive/mimepet/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user.a_intent == INTENT_DISARM)
icon_state = pick("dave1", "dave2", "dave3", "dave5" , "dave6" , "dave7" , "dave8" , "dave9" , "dave10")
.=..()
diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/otie.dm b/code/modules/mob/living/simple_mob/subtypes/vore/otie.dm
index 29ea3126cd4e..4caa88ad60a4 100644
--- a/code/modules/mob/living/simple_mob/subtypes/vore/otie.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/vore/otie.dm
@@ -172,7 +172,7 @@
//Pet 4 friendly
-/mob/living/simple_mob/otie/attack_hand(mob/user, list/params)
+/mob/living/simple_mob/otie/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
var/mob/living/M = user
if(!istype(M))
diff --git a/code/modules/modular_computers/NTNet/NTNet_relay.dm b/code/modules/modular_computers/NTNet/NTNet_relay.dm
index c7e503ee6c59..0e6a94718880 100644
--- a/code/modules/modular_computers/NTNet/NTNet_relay.dm
+++ b/code/modules/modular_computers/NTNet/NTNet_relay.dm
@@ -70,7 +70,7 @@
ui.open()
ui.set_auto_update(1)
-/obj/machinery/ntnet_relay/attack_hand(mob/user, list/params)
+/obj/machinery/ntnet_relay/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
nano_ui_interact(user)
/obj/machinery/ntnet_relay/Topic(href, href_list)
diff --git a/code/modules/modular_computers/computers/modular_computer/interaction.dm b/code/modules/modular_computers/computers/modular_computer/interaction.dm
index 28fc9219d1e6..9207f187b5de 100644
--- a/code/modules/modular_computers/computers/modular_computer/interaction.dm
+++ b/code/modules/modular_computers/computers/modular_computer/interaction.dm
@@ -109,7 +109,7 @@
/obj/item/modular_computer/attack_ai(mob/user)
return attack_self(user)
-/obj/item/modular_computer/attack_hand(mob/user, list/params)
+/obj/item/modular_computer/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(anchored)
return attack_self(user)
return ..()
diff --git a/code/modules/modular_computers/laptop_vendor.dm b/code/modules/modular_computers/laptop_vendor.dm
index fc48f029d79f..ddc02dbf3030 100644
--- a/code/modules/modular_computers/laptop_vendor.dm
+++ b/code/modules/modular_computers/laptop_vendor.dm
@@ -214,7 +214,7 @@
return 1
return 0
-/obj/machinery/lapvend/attack_hand(mob/user, list/params)
+/obj/machinery/lapvend/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
nano_ui_interact(user)
/obj/machinery/lapvend/nano_ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
diff --git a/code/modules/multiz/structures/hoist.dm b/code/modules/multiz/structures/hoist.dm
index f2459acaf4bf..aceb2dfcde03 100644
--- a/code/modules/multiz/structures/hoist.dm
+++ b/code/modules/multiz/structures/hoist.dm
@@ -28,7 +28,7 @@
var/obj/structure/hoist/source_hoist
description_info = "Click and drag someone (or any object) to this to attach them to the clamp. If you are within reach, when you click and drag this to a turf adjacent to you, it will move the attached object there and release it."
-/obj/effect/hoist_hook/attack_hand(mob/user, list/params)
+/obj/effect/hoist_hook/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
return // This has to be overridden so that it works properly.
/obj/effect/hoist_hook/MouseDroppedOnLegacy(atom/movable/AM,mob/user)
@@ -175,7 +175,7 @@
return
-/obj/structure/hoist/attack_hand(mob/user, list/params)
+/obj/structure/hoist/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if (!ishuman(user))
return
diff --git a/code/modules/multiz/structures/ladder.dm b/code/modules/multiz/structures/ladder.dm
index 0ac65d6d7c9c..96ebae23d1e7 100644
--- a/code/modules/multiz/structures/ladder.dm
+++ b/code/modules/multiz/structures/ladder.dm
@@ -39,7 +39,7 @@
attack_hand(user)
return
-/obj/structure/ladder/attack_hand(mob/user, list/params)
+/obj/structure/ladder/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
. = ..()
if(.)
return
diff --git a/code/modules/multiz/structures/vorestation_portals.dm b/code/modules/multiz/structures/vorestation_portals.dm
index 9e1989fbfce7..3150788bf837 100644
--- a/code/modules/multiz/structures/vorestation_portals.dm
+++ b/code/modules/multiz/structures/vorestation_portals.dm
@@ -27,7 +27,7 @@
return //do not send ghosts, zshadows, ai eyes, etc
teleport(AM)
-/obj/structure/portal_subtle/attack_hand(mob/user, list/params)
+/obj/structure/portal_subtle/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(istype(user) && !(istype(user,/mob/living)))
return //do not send ghosts, zshadows, ai eyes, etc
spawn(0)
diff --git a/code/modules/multiz/zmimic/mimic_movable.dm b/code/modules/multiz/zmimic/mimic_movable.dm
index 95f6cf27cd4d..adb074785f54 100644
--- a/code/modules/multiz/zmimic/mimic_movable.dm
+++ b/code/modules/multiz/zmimic/mimic_movable.dm
@@ -170,7 +170,7 @@
/atom/movable/openspace/mimic/attackby(obj/item/W, mob/user)
to_chat(user, SPAN_NOTICE("\The [src] is too far away."))
-/atom/movable/openspace/mimic/attack_hand(mob/user)
+/atom/movable/openspace/mimic/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
to_chat(user, SPAN_NOTICE("You cannot reach \the [src] from here."))
/atom/movable/openspace/mimic/examine(...)
@@ -216,7 +216,7 @@
/atom/movable/openspace/turf_proxy/attackby(obj/item/W, mob/user)
loc.attackby(W, user)
-/atom/movable/openspace/turf_proxy/attack_hand(mob/user, list/params)
+/atom/movable/openspace/turf_proxy/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
loc.attack_hand(user)
/atom/movable/openspace/turf_proxy/attack_generic(mob/user as mob)
@@ -243,7 +243,7 @@
/atom/movable/openspace/turf_mimic/attackby(obj/item/W, mob/user)
loc.attackby(W, user)
-/atom/movable/openspace/turf_mimic/attack_hand(mob/user, list/params)
+/atom/movable/openspace/turf_mimic/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
to_chat(user, SPAN_NOTICE("You cannot reach \the [src] from here."))
/atom/movable/openspace/turf_mimic/attack_generic(mob/user as mob)
diff --git a/code/modules/overmap/legacy/overmap_shuttle.dm b/code/modules/overmap/legacy/overmap_shuttle.dm
index 325e06299cc1..441aeb93949c 100644
--- a/code/modules/overmap/legacy/overmap_shuttle.dm
+++ b/code/modules/overmap/legacy/overmap_shuttle.dm
@@ -138,7 +138,7 @@
opened = 1 //shows open so you can diagnose 'oops, no gas' easily
icon_state = "fuel_port_empty" //set the default state just to be safe
-/obj/structure/fuel_port/attack_hand(mob/user, list/params)
+/obj/structure/fuel_port/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(!opened)
to_chat(user, "The door is secured tightly. You'll need a crowbar to open it.")
return
diff --git a/code/modules/overmap/legacy/ships/computers/computer_shims.dm b/code/modules/overmap/legacy/ships/computers/computer_shims.dm
index 616cb4f694f7..0c25c5edf1b6 100644
--- a/code/modules/overmap/legacy/ships/computers/computer_shims.dm
+++ b/code/modules/overmap/legacy/ships/computers/computer_shims.dm
@@ -80,7 +80,7 @@
// If you don't call parent in this proc, you must make all appropriate checks yourself.
// If you do, you must respect the return value.
-/obj/machinery/computer/ship/attack_hand(mob/user, list/params)
+/obj/machinery/computer/ship/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if((. = ..()))
return
if(!allowed(user))
diff --git a/code/modules/overmap/legacy/ships/panicbutton.dm b/code/modules/overmap/legacy/ships/panicbutton.dm
index 0cd9d8c53f2e..33d0cdb90642 100644
--- a/code/modules/overmap/legacy/ships/panicbutton.dm
+++ b/code/modules/overmap/legacy/ships/panicbutton.dm
@@ -23,7 +23,7 @@
else
icon_state = "[initial(icon_state)]"
-/obj/structure/panic_button/attack_hand(mob/user, list/params)
+/obj/structure/panic_button/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(!istype(user))
return ..()
diff --git a/code/modules/paperwork/faxmachine.dm b/code/modules/paperwork/faxmachine.dm
index e6c91e650d3a..0e2e66eff904 100644
--- a/code/modules/paperwork/faxmachine.dm
+++ b/code/modules/paperwork/faxmachine.dm
@@ -32,7 +32,7 @@ var/list/adminfaxes = list() //cache for faxes that have been sent to admins
if(!(("[department]" in alldepartments) || ("[department]" in admin_departments())) )
alldepartments |= department
-/obj/machinery/photocopier/faxmachine/attack_hand(mob/user, list/params)
+/obj/machinery/photocopier/faxmachine/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
user.set_machine(src)
nano_ui_interact(user)
diff --git a/code/modules/paperwork/filingcabinet.dm b/code/modules/paperwork/filingcabinet.dm
index b9ecb5dd6704..d6361a68ddce 100644
--- a/code/modules/paperwork/filingcabinet.dm
+++ b/code/modules/paperwork/filingcabinet.dm
@@ -61,7 +61,7 @@
else
to_chat(user, SPAN_NOTICE("You can't put [P] in [src]!"))
-/obj/structure/filingcabinet/attack_hand(mob/user, list/params)
+/obj/structure/filingcabinet/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(contents.len <= 0)
to_chat(user, SPAN_NOTICE("\The [src] is empty."))
return
@@ -150,7 +150,7 @@
virgin = 0 //tabbing here is correct- it's possible for people to try and use it
//before the records have been generated, so we do this inside the loop.
-/obj/structure/filingcabinet/security/attack_hand(mob/user, list/params)
+/obj/structure/filingcabinet/security/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
populate()
..()
@@ -187,7 +187,7 @@
virgin = 0 //tabbing here is correct- it's possible for people to try and use it
//before the records have been generated, so we do this inside the loop.
-/obj/structure/filingcabinet/medical/attack_hand(mob/user, list/params)
+/obj/structure/filingcabinet/medical/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
populate()
..()
diff --git a/code/modules/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm
index 1076fc731af3..b2bcd9a135a1 100644
--- a/code/modules/paperwork/paperbin.dm
+++ b/code/modules/paperwork/paperbin.dm
@@ -38,7 +38,7 @@
return
-/obj/item/paper_bin/attack_hand(mob/user, list/params)
+/obj/item/paper_bin/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(ishuman(user))
var/mob/living/carbon/human/H = user
var/obj/item/organ/external/temp = H.organs_by_name["r_hand"]
@@ -116,7 +116,7 @@
icon_state = "paper_bundle"
papers = /obj/item/paper/natural
-/obj/item/paper_bin/bundlenatural/attack_hand(mob/user, list/params)
+/obj/item/paper_bin/bundlenatural/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(amount < 1)
qdel(src)
return ..()
diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm
index 632c340da4a9..7b943d43c9a2 100644
--- a/code/modules/paperwork/photocopier.dm
+++ b/code/modules/paperwork/photocopier.dm
@@ -27,7 +27,7 @@
/obj/machinery/photocopier/attack_ai(mob/user as mob)
return attack_hand(user)
-/obj/machinery/photocopier/attack_hand(mob/user, list/params)
+/obj/machinery/photocopier/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
user.set_machine(src)
nano_ui_interact(user)
diff --git a/code/modules/power/antimatter/computer.dm b/code/modules/power/antimatter/computer.dm
index 23d25beed55c..5996d5abc212 100644
--- a/code/modules/power/antimatter/computer.dm
+++ b/code/modules/power/antimatter/computer.dm
@@ -64,7 +64,7 @@
/obj/machinery/computer/am_engine/attack_paw(var/mob/user as mob)
return src.attack_hand(user)
-/obj/machinery/computer/am_engine/attack_hand(mob/user, list/params)
+/obj/machinery/computer/am_engine/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..())
return
user.machine = src
diff --git a/code/modules/power/antimatter/control.dm b/code/modules/power/antimatter/control.dm
index f65362e5f7ef..e9cae20586ad 100644
--- a/code/modules/power/antimatter/control.dm
+++ b/code/modules/power/antimatter/control.dm
@@ -176,7 +176,7 @@
return
-/obj/machinery/power/am_control_unit/attack_hand(mob/user, list/params)
+/obj/machinery/power/am_control_unit/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(anchored)
interact(user)
return
diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm
index 92209ce67943..e42290cc3c60 100644
--- a/code/modules/power/apc.dm
+++ b/code/modules/power/apc.dm
@@ -787,7 +787,7 @@ CREATE_WALL_MOUNTING_TYPES_SHIFTED(/obj/machinery/power/apc, 22)
wires.cut_all()
update_icon()
-/obj/machinery/power/apc/attack_hand(mob/user, list/params)
+/obj/machinery/power/apc/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
// if (!can_use(user)) This already gets called in interact() and in topic()
// return
if(!user)
diff --git a/code/modules/power/breaker_box.dm b/code/modules/power/breaker_box.dm
index 591cc56f449f..8314a7a6f63a 100644
--- a/code/modules/power/breaker_box.dm
+++ b/code/modules/power/breaker_box.dm
@@ -72,7 +72,7 @@
busy = 0
-/obj/machinery/power/breakerbox/attack_hand(mob/user, list/params)
+/obj/machinery/power/breakerbox/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(update_locked)
to_chat(user, "System locked. Please try again later.")
return
diff --git a/code/modules/power/fission/computer.dm b/code/modules/power/fission/computer.dm
index 6c7b62a33a58..4916174d0246 100644
--- a/code/modules/power/fission/computer.dm
+++ b/code/modules/power/fission/computer.dm
@@ -37,7 +37,7 @@
/obj/machinery/computer/fission_monitor/attack_ai(mob/user)
attack_hand(user)
-/obj/machinery/computer/fission_monitor/attack_hand(mob/user, list/params)
+/obj/machinery/computer/fission_monitor/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
add_fingerprint(user)
if(machine_stat & (BROKEN|NOPOWER))
return
diff --git a/code/modules/power/fission/engine.dm b/code/modules/power/fission/engine.dm
index 8e64670dd636..49d976e0af4f 100644
--- a/code/modules/power/fission/engine.dm
+++ b/code/modules/power/fission/engine.dm
@@ -108,7 +108,7 @@
var/power = (decay_heat / REACTOR_RADS_TO_MJ) * max(healthmul, 0.1)
radiation_pulse(src, max(power * REACTOR_RADIATION_MULTIPLIER, 0), RAD_FALLOFF_ENGINE_FISSION)
-/obj/machinery/power/fission/attack_hand(mob/user, list/params)
+/obj/machinery/power/fission/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
nano_ui_interact(user)
/obj/machinery/power/fission/attack_robot(mob/user)
diff --git a/code/modules/power/fusion/core/_core.dm b/code/modules/power/fusion/core/_core.dm
index 2ff85f772b77..207915ae7461 100644
--- a/code/modules/power/fusion/core/_core.dm
+++ b/code/modules/power/fusion/core/_core.dm
@@ -99,7 +99,7 @@ var/list/fusion_cores = list()
if(owned_field)
owned_field.ChangeFieldStrength(value)
-/obj/machinery/power/fusion_core/attack_hand(mob/user, list/params)
+/obj/machinery/power/fusion_core/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(!Adjacent(user)) // As funny as it was for the AI to hug-kill the tokamak field from a distance...
return
visible_message("\The [user] hugs \the [src] to make it feel better!")
diff --git a/code/modules/power/fusion/core/core_control.dm b/code/modules/power/fusion/core/core_control.dm
index 08f267e39747..488c92cf2113 100644
--- a/code/modules/power/fusion/core/core_control.dm
+++ b/code/modules/power/fusion/core/core_control.dm
@@ -21,7 +21,7 @@
/obj/machinery/computer/fusion_core_control/attack_ai(mob/user)
attack_hand(user)
-/obj/machinery/computer/fusion_core_control/attack_hand(mob/user, list/params)
+/obj/machinery/computer/fusion_core_control/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
add_fingerprint(user)
interact(user)
diff --git a/code/modules/power/fusion/fuel_assembly/fuel_control.dm b/code/modules/power/fusion/fuel_assembly/fuel_control.dm
index 668c1ee7d7cf..dc3b35787ad8 100644
--- a/code/modules/power/fusion/fuel_assembly/fuel_control.dm
+++ b/code/modules/power/fusion/fuel_assembly/fuel_control.dm
@@ -10,7 +10,7 @@
/obj/machinery/computer/fusion_fuel_control/attack_ai(mob/user)
attack_hand(user)
-/obj/machinery/computer/fusion_fuel_control/attack_hand(mob/user, list/params)
+/obj/machinery/computer/fusion_fuel_control/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
add_fingerprint(user)
interact(user)
diff --git a/code/modules/power/fusion/fuel_assembly/fuel_injector.dm b/code/modules/power/fusion/fuel_assembly/fuel_injector.dm
index 99856dd63b44..53951245d996 100644
--- a/code/modules/power/fusion/fuel_assembly/fuel_injector.dm
+++ b/code/modules/power/fusion/fuel_assembly/fuel_injector.dm
@@ -79,7 +79,7 @@ var/list/fuel_injectors = list()
return ..()
-/obj/machinery/fusion_fuel_injector/attack_hand(mob/user, list/params)
+/obj/machinery/fusion_fuel_injector/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(injecting)
to_chat(user, "Shut \the [src] off before playing with the fuel rod!")
diff --git a/code/modules/power/fusion/gyrotron/gyrotron_control.dm b/code/modules/power/fusion/gyrotron/gyrotron_control.dm
index 8cff0d855e12..d51841206cdb 100644
--- a/code/modules/power/fusion/gyrotron/gyrotron_control.dm
+++ b/code/modules/power/fusion/gyrotron/gyrotron_control.dm
@@ -11,7 +11,7 @@
/obj/machinery/computer/gyrotron_control/attack_ai(var/mob/user)
attack_hand(user)
-/obj/machinery/computer/gyrotron_control/attack_hand(mob/user, list/params)
+/obj/machinery/computer/gyrotron_control/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
add_fingerprint(user)
interact(user)
diff --git a/code/modules/power/generator.dm b/code/modules/power/generator.dm
index 5315b5560e40..30b91be24149 100644
--- a/code/modules/power/generator.dm
+++ b/code/modules/power/generator.dm
@@ -188,7 +188,7 @@ GLOBAL_LIST_EMPTY(all_turbines)
else
..()
-/obj/machinery/power/generator/attack_hand(mob/user, list/params)
+/obj/machinery/power/generator/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
add_fingerprint(user)
if(machine_stat & (BROKEN|NOPOWER) || !anchored)
return
diff --git a/code/modules/power/generator_type2.dm b/code/modules/power/generator_type2.dm
index 1bf94294a438..bbfb70e642f0 100644
--- a/code/modules/power/generator_type2.dm
+++ b/code/modules/power/generator_type2.dm
@@ -94,7 +94,7 @@
interact(user)
-/obj/machinery/power/generator_type2/attack_hand(mob/user, list/params)
+/obj/machinery/power/generator_type2/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
add_fingerprint(user)
if(machine_stat & (BROKEN|NOPOWER))
return
diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm
index d4bcc7eebf22..c602f9b35e71 100644
--- a/code/modules/power/gravitygenerator.dm
+++ b/code/modules/power/gravitygenerator.dm
@@ -79,7 +79,7 @@ GLOBAL_LIST_EMPTY(gravity_generators)
/obj/machinery/gravity_generator/part/get_status()
return main_part?.get_status()
-/obj/machinery/gravity_generator/part/attack_hand(mob/user, list/params)
+/obj/machinery/gravity_generator/part/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
return main_part.attack_hand(user)
/obj/machinery/gravity_generator/part/set_broken()
@@ -239,7 +239,7 @@ GLOBAL_LIST_EMPTY(gravity_generators)
return
return ..()
-/obj/machinery/gravity_generator/main/attack_hand(mob/user, list/params)
+/obj/machinery/gravity_generator/main/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if((. = ..()))
return
ui_interact(user)
diff --git a/code/modules/power/grid_checker.dm b/code/modules/power/grid_checker.dm
index 4da2807a9e53..9489bb531bf9 100644
--- a/code/modules/power/grid_checker.dm
+++ b/code/modules/power/grid_checker.dm
@@ -51,7 +51,7 @@
else if(istype(W, /obj/item/multitool) || W.is_wirecutter())
attack_hand(user)
-/obj/machinery/power/grid_checker/attack_hand(mob/user, list/params)
+/obj/machinery/power/grid_checker/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(!user)
return
add_fingerprint(user)
diff --git a/code/modules/power/lighting/lighting.dm b/code/modules/power/lighting/lighting.dm
index 0d8144581aee..61515e6b5059 100644
--- a/code/modules/power/lighting/lighting.dm
+++ b/code/modules/power/lighting/lighting.dm
@@ -77,7 +77,7 @@ var/global/list/light_type_cache = list()
else
to_chat(user, "This casing doesn't support power cells for backup power.")
-/obj/machinery/light_construct/attack_hand(mob/user, list/params)
+/obj/machinery/light_construct/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
. = ..()
if(.)
return . // obj/machinery/attack_hand returns 1 if user can't use the machine
@@ -861,7 +861,7 @@ var/global/list/light_type_cache = list()
// attack with hand - remove tube/bulb
// if hands aren't protected and the light is on, burn the player
-/obj/machinery/light/attack_hand(mob/user, list/params)
+/obj/machinery/light/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
add_fingerprint(user)
@@ -907,7 +907,7 @@ var/global/list/light_type_cache = list()
// create a light tube/bulb item and put it in the user's hand
user.put_in_active_hand(remove_bulb()) //puts it in our active hand
-/obj/machinery/light/flamp/attack_hand(mob/user, list/params)
+/obj/machinery/light/flamp/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(lamp_shade)
if(status == LIGHT_EMPTY)
to_chat(user, "There is no [get_fitting_name()] in this light.")
diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm
index fc548866d6b2..6c1603b29ed7 100644
--- a/code/modules/power/port_gen.dm
+++ b/code/modules/power/port_gen.dm
@@ -42,7 +42,7 @@
/obj/machinery/power/powered()
return 1 //doesn't require an external power source
-/obj/machinery/power/port_gen/attack_hand(mob/user, list/params)
+/obj/machinery/power/port_gen/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..())
return
if(!anchored)
@@ -302,7 +302,7 @@
return
return ..()
-/obj/machinery/power/port_gen/pacman/attack_hand(mob/user, list/params)
+/obj/machinery/power/port_gen/pacman/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
..()
if (!anchored)
return
@@ -613,7 +613,7 @@
log_and_message_admins("[ADMIN_LOOKUPFLW(proj.firer)] triggered an Abductor Core explosion at [x],[y],[z] via projectile.")
asplod()
-/obj/machinery/power/rtg/abductor/attack_hand(mob/user, list/params)
+/obj/machinery/power/rtg/abductor/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(!istype(user) || (. = ..()))
return
diff --git a/code/modules/power/sensors/sensor_monitoring.dm b/code/modules/power/sensors/sensor_monitoring.dm
index fc9f49505e39..85f33951033c 100644
--- a/code/modules/power/sensors/sensor_monitoring.dm
+++ b/code/modules/power/sensors/sensor_monitoring.dm
@@ -41,7 +41,7 @@
..()
// On user click opens the UI of this computer.
-/obj/machinery/computer/power_monitor/attack_hand(mob/user, list/params)
+/obj/machinery/computer/power_monitor/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
add_fingerprint(user)
if(machine_stat & (BROKEN|NOPOWER))
diff --git a/code/modules/power/singularity/collector.dm b/code/modules/power/singularity/collector.dm
index 1e5de40b4b86..6fdfc767bb8b 100644
--- a/code/modules/power/singularity/collector.dm
+++ b/code/modules/power/singularity/collector.dm
@@ -48,7 +48,7 @@
rad_insulation = active? rad_insulation_active : rad_insulation_inactive
-/obj/machinery/power/rad_collector/attack_hand(mob/user, list/params)
+/obj/machinery/power/rad_collector/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(anchored)
if(!src.locked)
toggle_power()
diff --git a/code/modules/power/singularity/containment_field.dm b/code/modules/power/singularity/containment_field.dm
index ebbfc93fe055..1e957093359c 100644
--- a/code/modules/power/singularity/containment_field.dm
+++ b/code/modules/power/singularity/containment_field.dm
@@ -21,7 +21,7 @@
FG2.cleanup()
. = ..()
-/obj/machinery/containment_field/attack_hand(mob/user, list/params)
+/obj/machinery/containment_field/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(get_dist(src, user) > 1)
return 0
else
diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm
index 7da6c2e6c880..a62c8516fdc9 100644
--- a/code/modules/power/singularity/emitter.dm
+++ b/code/modules/power/singularity/emitter.dm
@@ -58,7 +58,7 @@
else
icon_state = "emitter"
-/obj/machinery/power/emitter/attack_hand(mob/user, list/params)
+/obj/machinery/power/emitter/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
src.add_fingerprint(user)
activate(user)
diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm
index 6a80497c66b0..ebd211036a73 100644
--- a/code/modules/power/singularity/field_generator.dm
+++ b/code/modules/power/singularity/field_generator.dm
@@ -75,7 +75,7 @@ field_generator power level display
return
-/obj/machinery/field_generator/attack_hand(mob/user, list/params)
+/obj/machinery/field_generator/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(state == 2)
if(get_dist(src, user) <= 1)//Need to actually touch the thing to turn it on
if(src.active >= 1)
diff --git a/code/modules/power/singularity/particle_accelerator/particle_control.dm b/code/modules/power/singularity/particle_accelerator/particle_control.dm
index d87f82a0621b..51efce1bc5fd 100644
--- a/code/modules/power/singularity/particle_accelerator/particle_control.dm
+++ b/code/modules/power/singularity/particle_accelerator/particle_control.dm
@@ -34,7 +34,7 @@
wires = null
return ..()
-/obj/machinery/particle_accelerator/control_box/attack_hand(mob/user, list/params)
+/obj/machinery/particle_accelerator/control_box/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(construction_state >= 3)
interact(user)
else if(construction_state == 2) // Wires exposed
diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm
index 71ed027c49ac..00b55157c46f 100644
--- a/code/modules/power/singularity/singularity.dm
+++ b/code/modules/power/singularity/singularity.dm
@@ -46,7 +46,7 @@ GLOBAL_LIST_BOILERPLATE(all_singularities, /obj/singularity)
STOP_PROCESSING(SSobj, src)
return ..()
-/obj/singularity/attack_hand(mob/user, list/params)
+/obj/singularity/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
consume(user)
return 1
diff --git a/code/modules/power/smes/smes.dm b/code/modules/power/smes/smes.dm
index 9d2082dd458d..bde57b6dd623 100644
--- a/code/modules/power/smes/smes.dm
+++ b/code/modules/power/smes/smes.dm
@@ -241,7 +241,7 @@ GLOBAL_LIST_EMPTY(smeses)
add_hiddenprint(user)
ui_interact(user)
-/obj/machinery/power/smes/attack_hand(mob/user, list/params)
+/obj/machinery/power/smes/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
add_fingerprint(user)
ui_interact(user)
diff --git a/code/modules/power/smes/smes_construction.dm b/code/modules/power/smes/smes_construction.dm
index c60612be15ac..2dde0f3ad5b6 100644
--- a/code/modules/power/smes/smes_construction.dm
+++ b/code/modules/power/smes/smes_construction.dm
@@ -111,7 +111,7 @@
// Proc: attack_hand()
// Parameters: None
// Description: Opens the UI as usual, and if cover is removed opens the wiring panel.
-/obj/machinery/power/smes/buildable/attack_hand(mob/user, list/params)
+/obj/machinery/power/smes/buildable/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
..()
if(open_hatch)
wires.Interact(usr)
diff --git a/code/modules/power/solar/solar_control.dm b/code/modules/power/solar/solar_control.dm
index cd503e9daa74..d2738102c702 100644
--- a/code/modules/power/solar/solar_control.dm
+++ b/code/modules/power/solar/solar_control.dm
@@ -116,7 +116,7 @@
add_overlay(image('icons/obj/computer.dmi', "solcon-o", FLY_LAYER, angle2dir(cdir)))
return
-/obj/machinery/power/solar_control/attack_hand(mob/user, list/params)
+/obj/machinery/power/solar_control/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(!..())
interact(user)
diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm
index 63c73826cfaf..19854c1cd771 100644
--- a/code/modules/power/supermatter/supermatter.dm
+++ b/code/modules/power/supermatter/supermatter.dm
@@ -392,7 +392,7 @@
/obj/machinery/power/supermatter/attack_ai(mob/user as mob)
ui_interact(user)
-/obj/machinery/power/supermatter/attack_hand(mob/user, list/params)
+/obj/machinery/power/supermatter/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
var/datum/gender/TU = GLOB.gender_datums[user.get_visible_gender()]
user.visible_message("\The [user] reaches out and touches \the [src], inducing a resonance... [TU.his] body starts to glow and bursts into flames before flashing into ash.",\
"You reach out and touch \the [src]. Everything starts burning and all you can hear is ringing. Your last thought is \"That was not a wise decision.\"",\
diff --git a/code/modules/power/tesla/coil.dm b/code/modules/power/tesla/coil.dm
index 0121fcb4dc42..ee0741ed89ae 100644
--- a/code/modules/power/tesla/coil.dm
+++ b/code/modules/power/tesla/coil.dm
@@ -59,7 +59,7 @@
return wires.Interact(user)
return ..()
-/obj/machinery/power/tesla_coil/attack_hand(mob/user, list/params)
+/obj/machinery/power/tesla_coil/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user.a_intent == INTENT_GRAB && user_buckle_mob(user.pulling, user))
return
..()
@@ -125,7 +125,7 @@
return
return ..()
-/obj/machinery/power/grounding_rod/attack_hand(mob/user, list/params)
+/obj/machinery/power/grounding_rod/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user.a_intent == INTENT_GRAB && user_buckle_mob(user.pulling, user))
return
..()
diff --git a/code/modules/power/turbine.dm b/code/modules/power/turbine.dm
index e8d7410e77e0..4d52ad696e82 100644
--- a/code/modules/power/turbine.dm
+++ b/code/modules/power/turbine.dm
@@ -273,7 +273,7 @@
updateDialog()
-/obj/machinery/power/turbine/attack_hand(mob/user, list/params)
+/obj/machinery/power/turbine/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if((. = ..()))
return
src.interact(user)
@@ -340,7 +340,7 @@
id = new_ident
return
-/obj/machinery/computer/turbine_computer/attack_hand(mob/user, list/params)
+/obj/machinery/computer/turbine_computer/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if((. = ..()))
return
src.interact(user)
diff --git a/code/modules/projectiles/guns/ballistic.dm b/code/modules/projectiles/guns/ballistic.dm
index 583256d45132..122b6cf69724 100644
--- a/code/modules/projectiles/guns/ballistic.dm
+++ b/code/modules/projectiles/guns/ballistic.dm
@@ -292,7 +292,7 @@
unload_ammo(user)
update_icon()
-/obj/item/gun/ballistic/attack_hand(mob/user, list/params)
+/obj/item/gun/ballistic/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user.get_inactive_held_item() == src)
unload_ammo(user, allow_dump=0)
else
diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm
index 33e3694cab93..89db582917b5 100644
--- a/code/modules/projectiles/guns/energy.dm
+++ b/code/modules/projectiles/guns/energy.dm
@@ -155,7 +155,7 @@
..()
load_ammo(A, user)
-/obj/item/gun/energy/attack_hand(mob/user, list/params)
+/obj/item/gun/energy/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user.get_inactive_held_item() == src)
unload_ammo(user)
else
diff --git a/code/modules/projectiles/guns/launcher/grenade_launcher.dm b/code/modules/projectiles/guns/launcher/grenade_launcher.dm
index 747c7eb52156..319caebd3244 100644
--- a/code/modules/projectiles/guns/launcher/grenade_launcher.dm
+++ b/code/modules/projectiles/guns/launcher/grenade_launcher.dm
@@ -77,7 +77,7 @@
else
..()
-/obj/item/gun/launcher/grenade/attack_hand(mob/user, list/params)
+/obj/item/gun/launcher/grenade/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user.get_inactive_held_item() == src)
unload(user)
else
diff --git a/code/modules/projectiles/guns/launcher/pneumatic.dm b/code/modules/projectiles/guns/launcher/pneumatic.dm
index 9d43fcbb3fac..cd73e8f1bfb8 100644
--- a/code/modules/projectiles/guns/launcher/pneumatic.dm
+++ b/code/modules/projectiles/guns/launcher/pneumatic.dm
@@ -61,7 +61,7 @@
else
to_chat(user, "There is nothing to remove in \the [src].")
-/obj/item/gun/launcher/pneumatic/attack_hand(mob/user, list/params)
+/obj/item/gun/launcher/pneumatic/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user.get_inactive_held_item() == src)
unload_hopper(user)
else
diff --git a/code/modules/projectiles/guns/launcher/syringe_gun.dm b/code/modules/projectiles/guns/launcher/syringe_gun.dm
index 9393ff5c7233..4461b6a2c85e 100644
--- a/code/modules/projectiles/guns/launcher/syringe_gun.dm
+++ b/code/modules/projectiles/guns/launcher/syringe_gun.dm
@@ -108,7 +108,7 @@
next = darts[1]
add_fingerprint(user)
-/obj/item/gun/launcher/syringe/attack_hand(mob/user, list/params)
+/obj/item/gun/launcher/syringe/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user.get_inactive_held_item() == src)
if(!darts.len)
to_chat(user, "[src] is empty.")
diff --git a/code/modules/projectiles/guns/magnetic/bore.dm b/code/modules/projectiles/guns/magnetic/bore.dm
index f59f7d47c8be..f6bf34c5d9d1 100644
--- a/code/modules/projectiles/guns/magnetic/bore.dm
+++ b/code/modules/projectiles/guns/magnetic/bore.dm
@@ -48,7 +48,7 @@
if(mat_storage)
. += image(icon, "[icon_state]_loaded")
-/obj/item/gun/magnetic/matfed/attack_hand(mob/user, list/params) // It doesn't keep a loaded item inside.
+/obj/item/gun/magnetic/matfed/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user.get_inactive_held_item() == src)
var/obj/item/removing
diff --git a/code/modules/projectiles/guns/magnetic/magnetic.dm b/code/modules/projectiles/guns/magnetic/magnetic.dm
index 6a85481a0084..8dffab58d8e4 100644
--- a/code/modules/projectiles/guns/magnetic/magnetic.dm
+++ b/code/modules/projectiles/guns/magnetic/magnetic.dm
@@ -150,7 +150,7 @@
return
. = ..()
-/obj/item/gun/magnetic/attack_hand(mob/user, list/params)
+/obj/item/gun/magnetic/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user.get_inactive_held_item() == src)
var/obj/item/removing
diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm
index 3e9afa3f3fe4..f8b7dcbd6c23 100644
--- a/code/modules/projectiles/guns/projectile/automatic.dm
+++ b/code/modules/projectiles/guns/projectile/automatic.dm
@@ -166,7 +166,7 @@
else
..()
-/obj/item/gun/ballistic/automatic/z8/attack_hand(mob/user, list/params)
+/obj/item/gun/ballistic/automatic/z8/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user.get_inactive_held_item() == src && use_launcher)
launcher.unload(user)
else
@@ -255,7 +255,7 @@
else
return ..() //once closed, behave like normal
-/obj/item/gun/ballistic/automatic/lmg/attack_hand(mob/user, list/params)
+/obj/item/gun/ballistic/automatic/lmg/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(!cover_open && user.get_inactive_held_item() == src)
toggle_cover(user) //open the cover
else
diff --git a/code/modules/projectiles/guns/projectile/bow.dm b/code/modules/projectiles/guns/projectile/bow.dm
index ec2f2da81eb1..b430fb5dceff 100644
--- a/code/modules/projectiles/guns/projectile/bow.dm
+++ b/code/modules/projectiles/guns/projectile/bow.dm
@@ -54,7 +54,7 @@
else
return
-/obj/item/gun/ballistic/bow/attack_hand(mob/user, list/params)
+/obj/item/gun/ballistic/bow/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user.get_inactive_held_item() == src)
unload_ammo(user, allow_dump=0)
else
diff --git a/code/modules/projectiles/guns/projectile/contender.dm b/code/modules/projectiles/guns/projectile/contender.dm
index bd61be4f2683..0f3b1290d361 100644
--- a/code/modules/projectiles/guns/projectile/contender.dm
+++ b/code/modules/projectiles/guns/projectile/contender.dm
@@ -129,7 +129,7 @@
to_chat(user, "\The [src] is completely inoperable!")
handle_click_empty()
-/obj/item/gun/ballistic/contender/pipegun/attack_hand(mob/user, list/params)
+/obj/item/gun/ballistic/contender/pipegun/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user.get_inactive_held_item() == src && destroyed)
to_chat(user, "\The [src]'s chamber is too warped to extract the casing!")
return
diff --git a/code/modules/projectiles/guns/projectile/pistol.dm b/code/modules/projectiles/guns/projectile/pistol.dm
index c188758bb3ca..b0ea5a040444 100644
--- a/code/modules/projectiles/guns/projectile/pistol.dm
+++ b/code/modules/projectiles/guns/projectile/pistol.dm
@@ -74,7 +74,7 @@
icon_state = "colt-taj"
/*//apart of reskins that have two sprites, touching may result in frustration and breaks
-/obj/item/gun/ballistic/colt/detective/attack_hand(mob/user, list/params)
+/obj/item/gun/ballistic/colt/detective/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(!unique_reskin && loc == user)
reskin_gun(user)
return
@@ -273,7 +273,7 @@
to_chat(user, "\The [src] is completely inoperable!")
handle_click_empty()
-/obj/item/gun/ballistic/pirate/attack_hand(mob/user, list/params)
+/obj/item/gun/ballistic/pirate/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user.get_inactive_held_item() == src && destroyed)
to_chat(user, "\The [src]'s chamber is too warped to extract the casing!")
return
@@ -403,7 +403,7 @@
else
..()
-/obj/item/gun/ballistic/konigin/attack_hand(mob/user, list/params)
+/obj/item/gun/ballistic/konigin/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user.get_inactive_held_item() == src && use_shotgun)
shotgun.unload_ammo(user)
else
diff --git a/code/modules/projectiles/guns/projectile/rocket.dm b/code/modules/projectiles/guns/projectile/rocket.dm
index ff201c946ef5..12dac8984e58 100644
--- a/code/modules/projectiles/guns/projectile/rocket.dm
+++ b/code/modules/projectiles/guns/projectile/rocket.dm
@@ -45,7 +45,7 @@
else
..()
-/obj/item/gun/ballistic/rocket/attack_hand(mob/user, list/params)
+/obj/item/gun/ballistic/rocket/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user.get_inactive_held_item() == src)
unload(user)
else
@@ -86,7 +86,7 @@
to_chat(user, "You cannot reload the [src]!")
return
-/obj/item/gun/ballistic/rocket/collapsible/attack_hand(mob/user, list/params)
+/obj/item/gun/ballistic/rocket/collapsible/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user.get_inactive_held_item() == src)
to_chat(user, "You cannot unload the [src]'s munition!")
return
@@ -167,7 +167,7 @@
to_chat(user, "\The [src] is completely inoperable!")
handle_click_empty()
-/obj/item/gun/ballistic/rocket/tyrmalin/attack_hand(mob/user, list/params)
+/obj/item/gun/ballistic/rocket/tyrmalin/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user.get_inactive_held_item() == src && destroyed)
to_chat(user, "\The [src]'s chamber is too warped to extract the casing!")
return
diff --git a/code/modules/random_map/drop/droppod_doors.dm b/code/modules/random_map/drop/droppod_doors.dm
index e6b6c02f0724..619144a6e58b 100644
--- a/code/modules/random_map/drop/droppod_doors.dm
+++ b/code/modules/random_map/drop/droppod_doors.dm
@@ -23,7 +23,7 @@
/obj/structure/droppod_door/attack_generic(var/mob/user)
attack_hand(user)
-/obj/structure/droppod_door/attack_hand(mob/user, list/params)
+/obj/structure/droppod_door/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(deploying) return
to_chat(user, "You prime the explosive bolts. Better get clear!")
sleep(30)
diff --git a/code/modules/reagents/chemistry/machinery.dm b/code/modules/reagents/chemistry/machinery.dm
index dd4191774414..731bb44d72a0 100644
--- a/code/modules/reagents/chemistry/machinery.dm
+++ b/code/modules/reagents/chemistry/machinery.dm
@@ -160,7 +160,7 @@
if(AM in holdingitems)
holdingitems -= AM
-/obj/machinery/reagentgrinder/attack_hand(mob/user, list/params)
+/obj/machinery/reagentgrinder/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
interact(user)
/obj/machinery/reagentgrinder/interact(mob/user as mob) // The microwave Menu //I am reasonably certain that this is not a microwave
diff --git a/code/modules/reagents/distilling/distilling.dm b/code/modules/reagents/distilling/distilling.dm
index 04436f57fb1f..2384c3b21b59 100644
--- a/code/modules/reagents/distilling/distilling.dm
+++ b/code/modules/reagents/distilling/distilling.dm
@@ -107,7 +107,7 @@
..()
-/obj/machinery/portable_atmospherics/powered/reagent_distillery/attack_hand(mob/user, list/params)
+/obj/machinery/portable_atmospherics/powered/reagent_distillery/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
var/list/options = list()
options["examine"] = radial_examine
options["use"] = radial_use
diff --git a/code/modules/reagents/items/hypospray.dm b/code/modules/reagents/items/hypospray.dm
index 8986f462573f..c3b990c67d25 100644
--- a/code/modules/reagents/items/hypospray.dm
+++ b/code/modules/reagents/items/hypospray.dm
@@ -68,7 +68,7 @@
if(HYPOSPRAY_MODE_SPRAY)
. += "spray"
-/obj/item/hypospray/attack_hand(mob/user, list/params)
+/obj/item/hypospray/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user.is_holding_inactive(src))
if(isnull(loaded))
user.action_feedback(SPAN_WARNING("[src] has no vial loaded."), src)
diff --git a/code/modules/reagents/machinery/chem_master.dm b/code/modules/reagents/machinery/chem_master.dm
index 691d9a521137..81d7a77327bd 100644
--- a/code/modules/reagents/machinery/chem_master.dm
+++ b/code/modules/reagents/machinery/chem_master.dm
@@ -148,7 +148,7 @@
pill_bottle = null
return ..()
-/obj/machinery/chem_master/attack_hand(mob/user, list/params)
+/obj/machinery/chem_master/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(machine_stat & BROKEN)
return
user.set_machine(src)
diff --git a/code/modules/reagents/machinery/reagent_dispenser/fuel.dm b/code/modules/reagents/machinery/reagent_dispenser/fuel.dm
index e7e9faab4139..b4be4914556a 100644
--- a/code/modules/reagents/machinery/reagent_dispenser/fuel.dm
+++ b/code/modules/reagents/machinery/reagent_dispenser/fuel.dm
@@ -39,7 +39,7 @@
if(rig)
. += "There is some kind of device rigged to the tank."
-/obj/structure/reagent_dispensers/fueltank/attack_hand()
+/obj/structure/reagent_dispensers/fueltank/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if (rig)
usr.visible_message("[usr] begins to detach [rig] from \the [src].", "You begin to detach [rig] from \the [src]")
if(do_after(usr, 20))
diff --git a/code/modules/reagents/machinery/reagent_dispenser/watercooler.dm b/code/modules/reagents/machinery/reagent_dispenser/watercooler.dm
index 9926b6417d6d..95e3b73397d5 100644
--- a/code/modules/reagents/machinery/reagent_dispenser/watercooler.dm
+++ b/code/modules/reagents/machinery/reagent_dispenser/watercooler.dm
@@ -122,7 +122,7 @@
to_chat(user, "There is already a cup dispenser there!")
return
-/obj/structure/reagent_dispensers/water_cooler/attack_hand(mob/user)
+/obj/structure/reagent_dispensers/water_cooler/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(cups)
new /obj/item/reagent_containers/food/drinks/sillycup(src.loc)
cups--
diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm
index 16fef9d00e2b..93760ce61848 100644
--- a/code/modules/reagents/reagent_containers/glass.dm
+++ b/code/modules/reagents/reagent_containers/glass.dm
@@ -172,7 +172,7 @@
. = ..()
update_icon()
-/obj/item/reagent_containers/glass/beaker/attack_hand(mob/user, list/params)
+/obj/item/reagent_containers/glass/beaker/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
..()
update_icon()
diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm
index 57af42c64645..79621a907c05 100644
--- a/code/modules/reagents/reagent_containers/hypospray.dm
+++ b/code/modules/reagents/reagent_containers/hypospray.dm
@@ -93,7 +93,7 @@
volume = loaded_vial.volume
reagents.maximum_volume = loaded_vial.reagents.maximum_volume
-/obj/item/reagent_containers/hypospray/vial/attack_hand(mob/user, list/params)
+/obj/item/reagent_containers/hypospray/vial/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user.get_inactive_held_item() == src)
if(loaded_vial)
reagents.trans_to_holder(loaded_vial.reagents,volume)
diff --git a/code/modules/reagents/reagent_containers/organic.dm b/code/modules/reagents/reagent_containers/organic.dm
index 71e56dfe8d30..5e6f99728893 100644
--- a/code/modules/reagents/reagent_containers/organic.dm
+++ b/code/modules/reagents/reagent_containers/organic.dm
@@ -51,7 +51,7 @@
. = ..()
update_icon()
-/obj/item/reagent_containers/organic/attack_hand(mob/user, list/params)
+/obj/item/reagent_containers/organic/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
..()
update_icon()
diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm
index 586eea6f7c45..0d68bfa56c6f 100644
--- a/code/modules/reagents/reagent_containers/syringes.dm
+++ b/code/modules/reagents/reagent_containers/syringes.dm
@@ -47,7 +47,7 @@
return
update_icon()
-/obj/item/reagent_containers/syringe/attack_hand(mob/user, list/params)
+/obj/item/reagent_containers/syringe/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
..()
update_icon()
diff --git a/code/modules/research/machinery/rdconsole.dm b/code/modules/research/machinery/rdconsole.dm
index 5caf77516ca8..4aed6ff2db36 100644
--- a/code/modules/research/machinery/rdconsole.dm
+++ b/code/modules/research/machinery/rdconsole.dm
@@ -165,7 +165,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
dat += ""
return dat.Join()
-/obj/machinery/computer/rdconsole/attack_hand(mob/user, list/params)
+/obj/machinery/computer/rdconsole/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(machine_stat & (BROKEN|NOPOWER))
return
ui_interact(user)
diff --git a/code/modules/research/machinery/rdmachines.dm b/code/modules/research/machinery/rdmachines.dm
index a0c8040fec25..5d31c7a76cf5 100644
--- a/code/modules/research/machinery/rdmachines.dm
+++ b/code/modules/research/machinery/rdmachines.dm
@@ -14,7 +14,7 @@
var/list/stored_materials = list() // Materials this machine can accept.
var/list/hidden_materials = list() // Materials this machine will not display, unless it contains them. Must be in the materials list as well.
-/obj/machinery/r_n_d/attack_hand(mob/user, list/params)
+/obj/machinery/r_n_d/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user.a_intent == INTENT_HARM)
return ..()
return
diff --git a/code/modules/research/machinery/server.dm b/code/modules/research/machinery/server.dm
index 987d9d65976b..734343e239b1 100644
--- a/code/modules/research/machinery/server.dm
+++ b/code/modules/research/machinery/server.dm
@@ -285,7 +285,7 @@
target.files.known_tech |= from.files.known_tech
return TRUE
-/obj/machinery/computer/rdservercontrol/attack_hand(mob/user, list/params)
+/obj/machinery/computer/rdservercontrol/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(machine_stat & (BROKEN|NOPOWER))
return
ui_interact(user)
diff --git a/code/modules/resleeving/computers.dm b/code/modules/resleeving/computers.dm
index a539e8c311a1..3101f93ae255 100644
--- a/code/modules/resleeving/computers.dm
+++ b/code/modules/resleeving/computers.dm
@@ -135,7 +135,7 @@
/obj/machinery/computer/transhuman/resleeving/attack_ai(mob/user as mob)
return attack_hand(user)
-/obj/machinery/computer/transhuman/resleeving/attack_hand(mob/user, list/params)
+/obj/machinery/computer/transhuman/resleeving/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
user.set_machine(src)
add_fingerprint(user)
diff --git a/code/modules/resleeving/infomorph.dm b/code/modules/resleeving/infomorph.dm
index 13b11d6e4f93..10ddd357b16b 100644
--- a/code/modules/resleeving/infomorph.dm
+++ b/code/modules/resleeving/infomorph.dm
@@ -343,7 +343,7 @@ var/list/infomorph_emotions = list(
if(stat != 2) close_up()
return
-/mob/living/silicon/infomorph/attack_hand(mob/user, list/params)
+/mob/living/silicon/infomorph/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
visible_message("[user.name] boops [src] on the head.")
close_up()
diff --git a/code/modules/resleeving/machines.dm b/code/modules/resleeving/machines.dm
index 6eb21e0d84f8..145205f7d834 100644
--- a/code/modules/resleeving/machines.dm
+++ b/code/modules/resleeving/machines.dm
@@ -341,7 +341,7 @@
return 1
-/obj/machinery/transhuman/synthprinter/attack_hand(mob/user, list/params)
+/obj/machinery/transhuman/synthprinter/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if((busy == 0) || (machine_stat & NOPOWER))
return
to_chat(user, "Current print cycle is [busy]% complete.")
@@ -430,7 +430,7 @@
manip_rating += M.rating
blur_amount = (48 - manip_rating * 8)
-/obj/machinery/transhuman/resleever/attack_hand(mob/user, list/params)
+/obj/machinery/transhuman/resleever/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
user.set_machine(src)
var/health_text = ""
var/mind_text = ""
diff --git a/code/modules/resleeving/mirror.dm b/code/modules/resleeving/mirror.dm
index 92bebfefa35a..c084fa6aa17b 100644
--- a/code/modules/resleeving/mirror.dm
+++ b/code/modules/resleeving/mirror.dm
@@ -186,7 +186,7 @@
imp = null
update_icon()
-/obj/item/mirrortool/attack_hand(mob/user as mob)
+/obj/item/mirrortool/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user.get_inactive_held_item() == src)
user.put_in_hands_or_drop(imp)
imp = null
diff --git a/code/modules/rogueminer_vr/zone_console.dm b/code/modules/rogueminer_vr/zone_console.dm
index 633bdd2b0232..4524216bb76c 100644
--- a/code/modules/rogueminer_vr/zone_console.dm
+++ b/code/modules/rogueminer_vr/zone_console.dm
@@ -32,7 +32,7 @@
/obj/machinery/computer/roguezones/attack_ai(mob/user as mob)
return attack_hand(user)
-/obj/machinery/computer/roguezones/attack_hand(mob/user, list/params)
+/obj/machinery/computer/roguezones/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
add_fingerprint(user)
if(machine_stat & (BROKEN|NOPOWER))
return
diff --git a/code/modules/security levels/keycard authentication.dm b/code/modules/security levels/keycard authentication.dm
index 526f672973d5..1506cffaca37 100644
--- a/code/modules/security levels/keycard authentication.dm
+++ b/code/modules/security levels/keycard authentication.dm
@@ -68,7 +68,7 @@
if(machine_stat & NOPOWER)
icon_state = "auth_off"
-/obj/machinery/keycard_auth/attack_hand(mob/user, list/params)
+/obj/machinery/keycard_auth/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user.stat || machine_stat & (NOPOWER|BROKEN))
to_chat(user, "This device is not powered.")
return
diff --git a/code/modules/shieldgen/emergency_shield.dm b/code/modules/shieldgen/emergency_shield.dm
index b6ae9691d5ed..191f4024fc1b 100644
--- a/code/modules/shieldgen/emergency_shield.dm
+++ b/code/modules/shieldgen/emergency_shield.dm
@@ -149,7 +149,7 @@
else
check_delay--
-/obj/machinery/shieldgen/attack_hand(mob/user, list/params)
+/obj/machinery/shieldgen/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(locked)
to_chat(user, "The machine is locked, you are unable to use it.")
return
diff --git a/code/modules/shieldgen/energy_field.dm b/code/modules/shieldgen/energy_field.dm
index 666014f6393f..abb6b3f07911 100644
--- a/code/modules/shieldgen/energy_field.dm
+++ b/code/modules/shieldgen/energy_field.dm
@@ -62,7 +62,7 @@
adjust_strength(damage / 20)
return damage
-/obj/effect/energy_field/attack_hand(mob/user, list/params)
+/obj/effect/energy_field/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
impact_effect(3) // Harmless, but still produces the 'impact' effect.
..()
diff --git a/code/modules/shieldgen/energy_shield.dm b/code/modules/shieldgen/energy_shield.dm
index 434a484ad33d..009e9bbb5b8e 100644
--- a/code/modules/shieldgen/energy_shield.dm
+++ b/code/modules/shieldgen/energy_shield.dm
@@ -162,7 +162,7 @@
animate(src, alpha = initial(alpha), time = 1 SECOND)
// Just for fun
-/obj/effect/shield/attack_hand(mob/user, list/params)
+/obj/effect/shield/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
flash_adjacent_segments(3)
/obj/effect/shield/proc/take_damage_legacy(var/damage, var/damtype, var/hitby)
diff --git a/code/modules/shieldgen/handheld_defuser.dm b/code/modules/shieldgen/handheld_defuser.dm
index 2155a0220615..ae075de65698 100644
--- a/code/modules/shieldgen/handheld_defuser.dm
+++ b/code/modules/shieldgen/handheld_defuser.dm
@@ -61,7 +61,7 @@
to_chat(user, "The charge meter reads [cell ? cell.percent() : 0]%")
to_chat(user, "It is [enabled ? "enabled" : "disabled"].")
-/obj/item/shield_diffuser/attack_hand(mob/user, list/params)
+/obj/item/shield_diffuser/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user.get_inactive_held_item() == src)
if(cell)
cell.update_icon()
diff --git a/code/modules/shieldgen/sheldwallgen.dm b/code/modules/shieldgen/sheldwallgen.dm
index 7220b26436b0..93aaed7bc407 100644
--- a/code/modules/shieldgen/sheldwallgen.dm
+++ b/code/modules/shieldgen/sheldwallgen.dm
@@ -26,7 +26,7 @@
var/max_stored_power = 50000 //50 kW
use_power = USE_POWER_OFF //Draws directly from power net. Does not use APC power.
-/obj/machinery/shieldwallgen/attack_hand(mob/user, list/params)
+/obj/machinery/shieldwallgen/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(state != 1)
to_chat(user, "The shield generator needs to be firmly secured to the floor first.")
return 1
@@ -256,7 +256,7 @@
update_nearby_tiles()
..()
-/obj/machinery/shieldwall/attack_hand(mob/user, list/params)
+/obj/machinery/shieldwall/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
return
diff --git a/code/modules/shieldgen/shield_capacitor.dm b/code/modules/shieldgen/shield_capacitor.dm
index 1d6e73970352..739d6cf27ce5 100644
--- a/code/modules/shieldgen/shield_capacitor.dm
+++ b/code/modules/shieldgen/shield_capacitor.dm
@@ -67,7 +67,7 @@
else
..()
-/obj/machinery/shield_capacitor/attack_hand(mob/user, list/params)
+/obj/machinery/shield_capacitor/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(machine_stat & (BROKEN))
return
interact(user)
diff --git a/code/modules/shieldgen/shield_diffuser.dm b/code/modules/shieldgen/shield_diffuser.dm
index c3b2636463e6..67a4f842f17c 100644
--- a/code/modules/shieldgen/shield_diffuser.dm
+++ b/code/modules/shieldgen/shield_diffuser.dm
@@ -41,7 +41,7 @@
else
icon_state = "fdiffuser_on"
-/obj/machinery/shield_diffuser/attack_hand(mob/user, list/params)
+/obj/machinery/shield_diffuser/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if((. = ..()))
return
if(alarm)
diff --git a/code/modules/shieldgen/shield_gen.dm b/code/modules/shieldgen/shield_gen.dm
index 1048bab6de77..4c9e84b79e00 100644
--- a/code/modules/shieldgen/shield_gen.dm
+++ b/code/modules/shieldgen/shield_gen.dm
@@ -94,7 +94,7 @@
/obj/machinery/shield_gen/attack_ai(user as mob)
return src.attack_hand(user)
-/obj/machinery/shield_gen/attack_hand(mob/user, list/params)
+/obj/machinery/shield_gen/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(machine_stat & (BROKEN))
return
interact(user)
diff --git a/code/modules/shieldgen/shield_generator.dm b/code/modules/shieldgen/shield_generator.dm
index 65caacedfc4e..efcd593b77b5 100644
--- a/code/modules/shieldgen/shield_generator.dm
+++ b/code/modules/shieldgen/shield_generator.dm
@@ -431,7 +431,7 @@
return data
-/obj/machinery/power/shield_generator/attack_hand(mob/user, list/params)
+/obj/machinery/power/shield_generator/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if((. = ..()))
return
if(panel_open && Adjacent(user))
diff --git a/code/modules/shuttles/shuttle_console.dm b/code/modules/shuttles/shuttle_console.dm
index 9a639edbff8b..258d6f7d761c 100644
--- a/code/modules/shuttles/shuttle_console.dm
+++ b/code/modules/shuttles/shuttle_console.dm
@@ -11,7 +11,7 @@
var/skip_act = FALSE
var/tgui_subtemplate = "ShuttleControlConsoleDefault"
-/obj/machinery/computer/shuttle_control/attack_hand(mob/user, list/params)
+/obj/machinery/computer/shuttle_control/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..(user))
return
if(!allowed(user))
diff --git a/code/modules/species/protean/protean_blob.dm b/code/modules/species/protean/protean_blob.dm
index 165146f9288f..336209c011b4 100644
--- a/code/modules/species/protean/protean_blob.dm
+++ b/code/modules/species/protean/protean_blob.dm
@@ -258,7 +258,7 @@
else
return ..()
-/mob/living/simple_mob/protean_blob/attack_hand(mob/user, list/params)
+/mob/living/simple_mob/protean_blob/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
var/mob/living/L = user
if(!istype(L))
return
diff --git a/code/modules/species/station/xenomorph_hybrids/hybrid_resin.dm b/code/modules/species/station/xenomorph_hybrids/hybrid_resin.dm
index a4ca77512b9d..9af0aa0221b3 100644
--- a/code/modules/species/station/xenomorph_hybrids/hybrid_resin.dm
+++ b/code/modules/species/station/xenomorph_hybrids/hybrid_resin.dm
@@ -178,7 +178,7 @@
T.thermal_conductivity = initial(T.thermal_conductivity)
..()
-/obj/structure/alien/hybrid_resin/attack_hand(mob/user, list/params)
+/obj/structure/alien/hybrid_resin/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(iscarbon(user))
var/mob/living/carbon/C = user
if(locate(/obj/item/organ/internal/xenos/hivenode) in C.internal_organs)
diff --git a/code/modules/species/xenomorphs/alien_facehugger.dm b/code/modules/species/xenomorphs/alien_facehugger.dm
index 159d148bed6f..5eb271e11ce5 100644
--- a/code/modules/species/xenomorphs/alien_facehugger.dm
+++ b/code/modules/species/xenomorphs/alien_facehugger.dm
@@ -30,7 +30,7 @@ var/const/MAX_ACTIVE_TIME = 400
var/strength = 5
var/attached = 0
-/obj/item/clothing/mask/facehugger/attack_hand(mob/user, list/params)
+/obj/item/clothing/mask/facehugger/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if((stat == CONSCIOUS && !sterile))
if(Attach(user))
return
@@ -315,7 +315,7 @@ var/const/MAX_ACTIVE_TIME = 400
var/strength = 5
var/attached = 0
-/mob/living/simple_mob/animal/space/alien/facehugger/attack_hand(mob/user, list/params)
+/mob/living/simple_mob/animal/space/alien/facehugger/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if((stat == CONSCIOUS && !sterile))
if(Attach(user))
diff --git a/code/modules/stockmarket/computer.dm b/code/modules/stockmarket/computer.dm
index 666891005f5d..e30228b5a8cb 100644
--- a/code/modules/stockmarket/computer.dm
+++ b/code/modules/stockmarket/computer.dm
@@ -13,7 +13,7 @@
. = ..()
logged_in = "Cargo Department"
-/obj/machinery/computer/stockexchange/attack_hand(mob/user, list/params)
+/obj/machinery/computer/stockexchange/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..(user))
return
diff --git a/code/modules/telesci/hyper_pad.dm b/code/modules/telesci/hyper_pad.dm
index cd5c759375cf..e3c129750dc6 100644
--- a/code/modules/telesci/hyper_pad.dm
+++ b/code/modules/telesci/hyper_pad.dm
@@ -56,7 +56,7 @@
if(primary)
primary.attack_ghost(ghost)
-/obj/machinery/hyperpad/centre/attack_hand(mob/user, list/params)
+/obj/machinery/hyperpad/centre/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
. = ..()
if(.)
return
@@ -77,7 +77,7 @@
src.add_fingerprint(user)
startteleport(user)
-/obj/machinery/hyperpad/attack_hand(mob/user, list/params)
+/obj/machinery/hyperpad/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
. = ..()
if(primary)
primary.attack_hand(user)
diff --git a/code/modules/telesci/quantum_pad.dm b/code/modules/telesci/quantum_pad.dm
index 3aabd75950bc..ee060a8bdfab 100644
--- a/code/modules/telesci/quantum_pad.dm
+++ b/code/modules/telesci/quantum_pad.dm
@@ -78,7 +78,7 @@
else
icon_state = initial(icon_state)
-/obj/machinery/power/quantumpad/attack_hand(mob/user, list/params)
+/obj/machinery/power/quantumpad/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
. = ..()
if(.)
return
diff --git a/code/modules/telesci/telesci_computer.dm b/code/modules/telesci/telesci_computer.dm
index 7445b287c5ca..3123dae91893 100644
--- a/code/modules/telesci/telesci_computer.dm
+++ b/code/modules/telesci/telesci_computer.dm
@@ -77,7 +77,7 @@
/obj/machinery/computer/telescience/attack_ai(mob/user)
src.attack_hand(user)
-/obj/machinery/computer/telescience/attack_hand(mob/user, list/params)
+/obj/machinery/computer/telescience/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..())
return
nano_ui_interact(user)
diff --git a/code/modules/turbolift/turbolift_console.dm b/code/modules/turbolift/turbolift_console.dm
index 782afd39a580..129ddc9d3bb2 100644
--- a/code/modules/turbolift/turbolift_console.dm
+++ b/code/modules/turbolift/turbolift_console.dm
@@ -39,7 +39,7 @@
/obj/structure/lift/attack_generic(var/mob/user)
return attack_hand(user)
-/obj/structure/lift/attack_hand(mob/user, list/params)
+/obj/structure/lift/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
return interact(user)
/obj/structure/lift/interact(var/mob/user)
diff --git a/code/modules/vehicles/sealed/mecha/mech_fabricator.dm b/code/modules/vehicles/sealed/mecha/mech_fabricator.dm
index 1a6fe4513e80..f9c009710b78 100644
--- a/code/modules/vehicles/sealed/mecha/mech_fabricator.dm
+++ b/code/modules/vehicles/sealed/mecha/mech_fabricator.dm
@@ -482,7 +482,7 @@
immediate += /datum/asset_pack/spritesheet/materials
return ..()
-/obj/machinery/mecha_part_fabricator/attack_hand(mob/user, list/params)
+/obj/machinery/mecha_part_fabricator/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..())
return
if(!allowed(user))
diff --git a/code/modules/vehicles/sealed/mecha/mecha.dm b/code/modules/vehicles/sealed/mecha/mecha.dm
index 5af90412324d..a7107c0848fa 100644
--- a/code/modules/vehicles/sealed/mecha/mecha.dm
+++ b/code/modules/vehicles/sealed/mecha/mecha.dm
@@ -1032,7 +1032,7 @@
qdel(src)
return
-/obj/vehicle/sealed/mecha/attack_hand(mob/user, list/params)
+/obj/vehicle/sealed/mecha/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user == occupant_legacy)
show_radial_occupant(user)
return
diff --git a/code/modules/vehicles/sealed/mecha/mecha_control_console.dm b/code/modules/vehicles/sealed/mecha/mecha_control_console.dm
index 2d1483ab79d0..b9c9ee11c8e4 100644
--- a/code/modules/vehicles/sealed/mecha/mecha_control_console.dm
+++ b/code/modules/vehicles/sealed/mecha/mecha_control_console.dm
@@ -13,7 +13,7 @@
/obj/machinery/computer/mecha/attack_ai(mob/user)
return attack_hand(user)
-/obj/machinery/computer/mecha/attack_hand(mob/user, list/params)
+/obj/machinery/computer/mecha/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..())
return
ui_interact(user)
diff --git a/code/modules/vehicles/sealed/mecha/mecha_parts.dm b/code/modules/vehicles/sealed/mecha/mecha_parts.dm
index 652ff65aee8b..22f7f2c7407c 100644
--- a/code/modules/vehicles/sealed/mecha/mecha_parts.dm
+++ b/code/modules/vehicles/sealed/mecha/mecha_parts.dm
@@ -22,7 +22,7 @@
..()
return
-/obj/item/mecha_parts/chassis/attack_hand(mob/user, list/params)
+/obj/item/mecha_parts/chassis/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
return
//! Ripley
@@ -467,7 +467,7 @@
..()
return
-/obj/item/mecha_parts/fighter/chassis/attack_hand(mob/user, list/params)
+/obj/item/mecha_parts/fighter/chassis/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
return
diff --git a/code/modules/vehicles/sealed/mecha/subtypes/micro/mecha_parts_vr.dm b/code/modules/vehicles/sealed/mecha/subtypes/micro/mecha_parts_vr.dm
index 7c49970beadb..6b361fa23c4d 100644
--- a/code/modules/vehicles/sealed/mecha/subtypes/micro/mecha_parts_vr.dm
+++ b/code/modules/vehicles/sealed/mecha/subtypes/micro/mecha_parts_vr.dm
@@ -17,7 +17,7 @@
..()
return
-/obj/item/mecha_parts/micro/chassis/attack_hand(mob/user, list/params)
+/obj/item/mecha_parts/micro/chassis/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
return
//Gopher
diff --git a/code/modules/vehicles_legacy/bike.dm b/code/modules/vehicles_legacy/bike.dm
index 9e5ee11e95c7..d977de210b81 100644
--- a/code/modules/vehicles_legacy/bike.dm
+++ b/code/modules/vehicles_legacy/bike.dm
@@ -120,7 +120,7 @@
return CLICKCHAIN_DO_NOT_PROPAGATE
return CLICKCHAIN_DO_NOT_PROPAGATE
-/obj/vehicle_old/bike/attack_hand(mob/user, list/params)
+/obj/vehicle_old/bike/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user == load)
unload(load, user)
to_chat(user, "You unbuckle yourself from \the [src].")
diff --git a/code/modules/vehicles_legacy/skateboard.dm b/code/modules/vehicles_legacy/skateboard.dm
index 1b500e707aed..7b481283a238 100644
--- a/code/modules/vehicles_legacy/skateboard.dm
+++ b/code/modules/vehicles_legacy/skateboard.dm
@@ -47,7 +47,7 @@
return CLICKCHAIN_DO_NOT_PROPAGATE
return CLICKCHAIN_DO_NOT_PROPAGATE
-/obj/vehicle_old/skateboard/attack_hand(mob/user, list/params)
+/obj/vehicle_old/skateboard/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user == load)
unbuckle_mob(load, user)
to_chat(user, "You unbuckle yourself from \the [src].")
diff --git a/code/modules/vehicles_legacy/train.dm b/code/modules/vehicles_legacy/train.dm
index 32f45a77dabe..a957a1c6776e 100644
--- a/code/modules/vehicles_legacy/train.dm
+++ b/code/modules/vehicles_legacy/train.dm
@@ -109,7 +109,7 @@
return CLICKCHAIN_DO_NOT_PROPAGATE
return CLICKCHAIN_DO_NOT_PROPAGATE
-/obj/vehicle_old/train/attack_hand(mob/user, list/params)
+/obj/vehicle_old/train/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user.stat || user.restrained() || !Adjacent(user))
return 0
diff --git a/code/modules/virus2/curer.dm b/code/modules/virus2/curer.dm
index 4263e11d7450..4735ccdf43ce 100644
--- a/code/modules/virus2/curer.dm
+++ b/code/modules/virus2/curer.dm
@@ -36,7 +36,7 @@
/obj/machinery/computer/curer/attack_ai(var/mob/user as mob)
return src.attack_hand(user)
-/obj/machinery/computer/curer/attack_hand(mob/user, list/params)
+/obj/machinery/computer/curer/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..())
return
user.machine = src
diff --git a/code/modules/virus2/diseasesplicer.dm b/code/modules/virus2/diseasesplicer.dm
index b2a1e2ef5d2b..9d9771d2a389 100644
--- a/code/modules/virus2/diseasesplicer.dm
+++ b/code/modules/virus2/diseasesplicer.dm
@@ -38,7 +38,7 @@
/obj/machinery/computer/diseasesplicer/attack_ai(var/mob/user as mob)
return src.attack_hand(user)
-/obj/machinery/computer/diseasesplicer/attack_hand(mob/user, list/params)
+/obj/machinery/computer/diseasesplicer/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..())
return TRUE
ui_interact(user)
diff --git a/code/modules/virus2/dishincubator.dm b/code/modules/virus2/dishincubator.dm
index df4e6ab94357..eb32bee10fb0 100644
--- a/code/modules/virus2/dishincubator.dm
+++ b/code/modules/virus2/dishincubator.dm
@@ -45,7 +45,7 @@
src.attack_hand(user)
-/obj/machinery/disease2/incubator/attack_hand(mob/user, list/params)
+/obj/machinery/disease2/incubator/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(machine_stat & (NOPOWER|BROKEN))
return
nano_ui_interact(user)
diff --git a/code/modules/virus2/isolator.dm b/code/modules/virus2/isolator.dm
index ea48c01a5ede..80093b43806d 100644
--- a/code/modules/virus2/isolator.dm
+++ b/code/modules/virus2/isolator.dm
@@ -41,7 +41,7 @@
src.attack_hand(user)
-/obj/machinery/disease2/isolator/attack_hand(mob/user, list/params)
+/obj/machinery/disease2/isolator/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(machine_stat & (NOPOWER|BROKEN))
return
ui_interact(user)
diff --git a/code/modules/vore/fluffstuff/custom_items.dm b/code/modules/vore/fluffstuff/custom_items.dm
index 531e04b41d11..2266c6708b9f 100644
--- a/code/modules/vore/fluffstuff/custom_items.dm
+++ b/code/modules/vore/fluffstuff/custom_items.dm
@@ -597,7 +597,7 @@
..()
-/obj/item/perfect_tele/attack_hand(mob/user, list/params)
+/obj/item/perfect_tele/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(user.get_inactive_held_item() == src && power_source)
to_chat(user,"You eject \the [power_source] from \the [src].")
user.put_in_hands(power_source)
@@ -859,7 +859,7 @@
tele_hand = null
return ..()
-/obj/item/perfect_tele_beacon/attack_hand(mob/user, list/params)
+/obj/item/perfect_tele_beacon/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if((user.ckey != creator) && !(user.ckey in warned_users))
warned_users |= user.ckey
var/choice = alert(user,"This device is a translocator beacon. Having it on your person may mean that anyone \
diff --git a/code/modules/vore/weight/fitness_machines_vr.dm b/code/modules/vore/weight/fitness_machines_vr.dm
index 1af486035e79..5e27217d991d 100644
--- a/code/modules/vore/weight/fitness_machines_vr.dm
+++ b/code/modules/vore/weight/fitness_machines_vr.dm
@@ -11,7 +11,7 @@
var/cooldown = 10
var/weightloss_power = 1
-/obj/machinery/fitness/attack_hand(mob/user, list/params)
+/obj/machinery/fitness/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
. = ..()
if(.)
return
@@ -68,7 +68,7 @@
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
return
-/obj/machinery/fitness/heavy/attack_hand(mob/user, list/params)
+/obj/machinery/fitness/heavy/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(!anchored)
to_chat(user, "For safety reasons, you are required to have this equipment wrenched down before using it!")
return
@@ -98,7 +98,7 @@
idle_power_usage = 0
active_power_usage = 0
-/obj/machinery/scale/attack_hand(mob/user, list/params)
+/obj/machinery/scale/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
. = ..()
if(.)
return
diff --git a/code/modules/xenoarcheaology/anomaly_container.dm b/code/modules/xenoarcheaology/anomaly_container.dm
index fc2efc0ad1a6..85d76cf6521f 100644
--- a/code/modules/xenoarcheaology/anomaly_container.dm
+++ b/code/modules/xenoarcheaology/anomaly_container.dm
@@ -14,7 +14,7 @@
if(A)
contain(A)
-/obj/structure/anomaly_container/attack_hand(mob/user, list/params)
+/obj/structure/anomaly_container/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
release()
/obj/structure/anomaly_container/attack_robot(var/mob/user)
diff --git a/code/modules/xenoarcheaology/artifacts/artifact.dm b/code/modules/xenoarcheaology/artifacts/artifact.dm
index a55ec3da15ef..54ffea27f32b 100644
--- a/code/modules/xenoarcheaology/artifacts/artifact.dm
+++ b/code/modules/xenoarcheaology/artifacts/artifact.dm
@@ -175,7 +175,7 @@
if(secondary_effect && secondary_effect.trigger == TRIGGER_NITRO && !secondary_effect.activated)
secondary_effect.ToggleActivate(0)
-/obj/machinery/artifact/attack_hand(mob/user, list/params)
+/obj/machinery/artifact/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if (get_dist(user, src) > 1)
to_chat(user, "You can't reach [src] from here.")
return
diff --git a/code/modules/xenoarcheaology/artifacts/gigadrill.dm b/code/modules/xenoarcheaology/artifacts/gigadrill.dm
index 7f54c8337021..73a9c119aef5 100644
--- a/code/modules/xenoarcheaology/artifacts/gigadrill.dm
+++ b/code/modules/xenoarcheaology/artifacts/gigadrill.dm
@@ -9,7 +9,7 @@
density = 1
layer = ABOVE_JUNK_LAYER
-/obj/machinery/giga_drill/attack_hand(mob/user, list/params)
+/obj/machinery/giga_drill/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(active)
active = 0
icon_state = "gigadrill"
diff --git a/code/modules/xenoarcheaology/artifacts/replicator.dm b/code/modules/xenoarcheaology/artifacts/replicator.dm
index 8b9f81e9e511..726c86594f69 100644
--- a/code/modules/xenoarcheaology/artifacts/replicator.dm
+++ b/code/modules/xenoarcheaology/artifacts/replicator.dm
@@ -138,7 +138,7 @@
last_process_time = world.time
-/obj/machinery/replicator/attack_hand(mob/user, list/params)
+/obj/machinery/replicator/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
ui_interact(user)
/obj/machinery/replicator/ui_interact(mob/user, datum/tgui/ui)
diff --git a/code/modules/xenoarcheaology/tools/artifact_analyser.dm b/code/modules/xenoarcheaology/tools/artifact_analyser.dm
index b10e28b38bf5..40bbe0f242a5 100644
--- a/code/modules/xenoarcheaology/tools/artifact_analyser.dm
+++ b/code/modules/xenoarcheaology/tools/artifact_analyser.dm
@@ -24,7 +24,7 @@
if(!owned_scanner)
owned_scanner = locate(/obj/machinery/artifact_scanpad) in orange(1, src)
-/obj/machinery/artifact_analyser/attack_hand(mob/user, list/params)
+/obj/machinery/artifact_analyser/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
add_fingerprint(user)
if(machine_stat & (NOPOWER|BROKEN) || get_dist(src, user) > 1)
return
diff --git a/code/modules/xenoarcheaology/tools/artifact_harvester.dm b/code/modules/xenoarcheaology/tools/artifact_harvester.dm
index b036b06a210d..61bd66103705 100644
--- a/code/modules/xenoarcheaology/tools/artifact_harvester.dm
+++ b/code/modules/xenoarcheaology/tools/artifact_harvester.dm
@@ -35,7 +35,7 @@
else
return..()
-/obj/machinery/artifact_harvester/attack_hand(mob/user, list/params)
+/obj/machinery/artifact_harvester/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
add_fingerprint(user)
if(machine_stat & (NOPOWER|BROKEN))
return
diff --git a/code/modules/xenoarcheaology/tools/geosample_scanner.dm b/code/modules/xenoarcheaology/tools/geosample_scanner.dm
index 8fa28dece263..99d9a99d3095 100644
--- a/code/modules/xenoarcheaology/tools/geosample_scanner.dm
+++ b/code/modules/xenoarcheaology/tools/geosample_scanner.dm
@@ -115,7 +115,7 @@
if(total_purity && fresh_coolant)
coolant_purity = total_purity / fresh_coolant
-/obj/machinery/radiocarbon_spectrometer/attack_hand(mob/user, list/params)
+/obj/machinery/radiocarbon_spectrometer/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
ui_interact(user)
/obj/machinery/radiocarbon_spectrometer/ui_interact(mob/user, datum/tgui/ui)
diff --git a/code/modules/xenoarcheaology/tools/suspension_generator.dm b/code/modules/xenoarcheaology/tools/suspension_generator.dm
index 555e3fb8b71b..9d94bddb67ca 100644
--- a/code/modules/xenoarcheaology/tools/suspension_generator.dm
+++ b/code/modules/xenoarcheaology/tools/suspension_generator.dm
@@ -35,7 +35,7 @@
else
deactivate()
-/obj/machinery/suspension_gen/attack_hand(mob/user, list/params)
+/obj/machinery/suspension_gen/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(panel_open)
if(cell)
to_chat(user, SPAN_NOTICE("You remove [cell]."))
diff --git a/code/modules/xenobio/machinery/processor.dm b/code/modules/xenobio/machinery/processor.dm
index 600a748c01c6..3e0f9474ee46 100644
--- a/code/modules/xenobio/machinery/processor.dm
+++ b/code/modules/xenobio/machinery/processor.dm
@@ -29,7 +29,7 @@
. += SPAN_NOTICE("It looks slick enough to let slimes glide over it.")
. += SPAN_BOLDNOTICE("The automatic intake switch is in the [auto_mode? "On" : "Off"] position.")
-/obj/machinery/processor/attack_hand(mob/user, list/params)
+/obj/machinery/processor/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(processing)
to_chat(user, SPAN_WARNING("The processor is in the process of processing!"))
return
diff --git a/code/modules/xenobio2/machinery/core_extractor.dm b/code/modules/xenobio2/machinery/core_extractor.dm
index c7ae4f1dc3fd..7126bf529979 100644
--- a/code/modules/xenobio2/machinery/core_extractor.dm
+++ b/code/modules/xenobio2/machinery/core_extractor.dm
@@ -145,7 +145,7 @@
eject_slime()
//Here lies the UI
-/obj/machinery/slime/extractor/attack_hand(mob/user, list/params)
+/obj/machinery/slime/extractor/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
user.set_machine(src)
interact(user)
diff --git a/code/modules/xenobio2/machinery/gene_manipulators.dm b/code/modules/xenobio2/machinery/gene_manipulators.dm
index 5599d09ff8d7..548fdfae7b89 100644
--- a/code/modules/xenobio2/machinery/gene_manipulators.dm
+++ b/code/modules/xenobio2/machinery/gene_manipulators.dm
@@ -59,7 +59,7 @@
/obj/machinery/xenobio/attack_ai(mob/user as mob)
return attack_hand(user)
-/obj/machinery/xenobio/attack_hand(mob/user, list/params)
+/obj/machinery/xenobio/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
nano_ui_interact(user)
/obj/machinery/xenobio/attackby(obj/item/W as obj, mob/user as mob)
diff --git a/code/modules/xenobio2/machinery/injector_computer.dm b/code/modules/xenobio2/machinery/injector_computer.dm
index da929dd1257a..2da0a6d0573c 100644
--- a/code/modules/xenobio2/machinery/injector_computer.dm
+++ b/code/modules/xenobio2/machinery/injector_computer.dm
@@ -23,7 +23,7 @@
injector.computer = null
..()
-/obj/machinery/computer/xenobio2/attack_hand(mob/user, list/params)
+/obj/machinery/computer/xenobio2/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(..())
return 1
nano_ui_interact(user)
diff --git a/code/modules/xenobio2/machinery/slime_replicator.dm b/code/modules/xenobio2/machinery/slime_replicator.dm
index edc019043cfa..a36c97634b01 100644
--- a/code/modules/xenobio2/machinery/slime_replicator.dm
+++ b/code/modules/xenobio2/machinery/slime_replicator.dm
@@ -99,7 +99,7 @@
eject_core()
//Here lies the UI
-/obj/machinery/slime/replicator/attack_hand(mob/user, list/params)
+/obj/machinery/slime/replicator/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
user.set_machine(src)
interact(user)
diff --git a/maps/generic/misc.dm b/maps/generic/misc.dm
index 3af8d819c540..b511fd2712a1 100644
--- a/maps/generic/misc.dm
+++ b/maps/generic/misc.dm
@@ -68,7 +68,7 @@
/turf/simulated/floor/maglev/Entered(var/atom/movable/AM, var/atom/old_loc)
if(isliving(AM) && prob(50))
track_zap(AM)
-/turf/simulated/floor/maglev/attack_hand(mob/user, list/params)
+/turf/simulated/floor/maglev/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args)
if(prob(75))
track_zap(user)
/turf/simulated/floor/maglev/proc/track_zap(var/mob/living/user)