diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm
index b4155c13eda..47bc1fe17c4 100644
--- a/code/_onclick/click.dm
+++ b/code/_onclick/click.dm
@@ -75,9 +75,11 @@
if(notransform)
return
- if(SEND_SIGNAL(src, COMSIG_MOB_CLICKON, A, params) & COMSIG_MOB_CANCEL_CLICKON)
- return
var/list/modifiers = params2list(params)
+
+ if(SEND_SIGNAL(src, COMSIG_MOB_CLICKON, A, modifiers) & COMSIG_MOB_CANCEL_CLICKON)
+ return
+
if(LAZYACCESS(modifiers, SHIFT_CLICK))
if(LAZYACCESS(modifiers, MIDDLE_CLICK))
ShiftMiddleClickOn(A)
diff --git a/code/datums/components/shy.dm b/code/datums/components/shy.dm
index 819c9b00caa..b7587063e86 100644
--- a/code/datums/components/shy.dm
+++ b/code/datums/components/shy.dm
@@ -79,8 +79,10 @@
-/datum/component/shy/proc/on_clickon(datum/source, atom/target, params)
+/datum/component/shy/proc/on_clickon(datum/source, atom/target, list/modifiers)
SIGNAL_HANDLER
+ if(modifiers[SHIFT_CLICK]) //let them examine their surroundings.
+ return
return is_shy(target) && COMSIG_MOB_CANCEL_CLICKON
/datum/component/shy/proc/on_try_pull(datum/source, atom/movable/target, force)
diff --git a/code/datums/components/shy_in_room.dm b/code/datums/components/shy_in_room.dm
index 23b3add2d3d..acad303a1fc 100644
--- a/code/datums/components/shy_in_room.dm
+++ b/code/datums/components/shy_in_room.dm
@@ -52,8 +52,10 @@
to_chat(owner, span_warning("[replacetext(message, "%ROOM", room)]"))
return TRUE
-/datum/component/shy_in_room/proc/on_clickon(datum/source, atom/target, params)
+/datum/component/shy_in_room/proc/on_clickon(datum/source, atom/target, list/modifiers)
SIGNAL_HANDLER
+ if(modifiers[SHIFT_CLICK]) //let them examine their surroundings.
+ return
return is_shy(target) && COMSIG_MOB_CANCEL_CLICKON
/datum/component/shy_in_room/proc/on_try_pull(datum/source, atom/movable/target, force)
diff --git a/code/datums/components/tackle.dm b/code/datums/components/tackle.dm
index 22b207d75b3..bb37aad7901 100644
--- a/code/datums/components/tackle.dm
+++ b/code/datums/components/tackle.dm
@@ -68,9 +68,12 @@
tackle.thrower = user
///See if we can tackle or not. If we can, leap!
-/datum/component/tackler/proc/checkTackle(mob/living/carbon/user, atom/A, params)
+/datum/component/tackler/proc/checkTackle(mob/living/carbon/user, atom/A, list/modifiers)
SIGNAL_HANDLER
+ if(modifiers[ALT_CLICK] || modifiers[SHIFT_CLICK] || modifiers[CTRL_CLICK] || modifiers[MIDDLE_CLICK])
+ return
+
if(!user.throw_mode || user.get_active_held_item() || user.pulling || user.buckled || user.incapacitated())
return
@@ -99,9 +102,6 @@
user.face_atom(A)
- var/list/modifiers = params2list(params)
- if(LAZYACCESS(modifiers, ALT_CLICK) || LAZYACCESS(modifiers, SHIFT_CLICK) || LAZYACCESS(modifiers, CTRL_CLICK) || LAZYACCESS(modifiers, MIDDLE_CLICK))
- return
tackling = TRUE
RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/checkObstacle)
diff --git a/code/datums/mutations/holy_mutation/honorbound.dm b/code/datums/mutations/holy_mutation/honorbound.dm
index 0b97be7e468..de3e2e188ea 100644
--- a/code/datums/mutations/holy_mutation/honorbound.dm
+++ b/code/datums/mutations/holy_mutation/honorbound.dm
@@ -48,15 +48,17 @@
. = ..()
/// Signal to see if the mutation allows us to attack a target
-/datum/mutation/human/honorbound/proc/attack_honor(mob/living/carbon/human/honorbound, atom/clickingon, params)
+/datum/mutation/human/honorbound/proc/attack_honor(mob/living/carbon/human/honorbound, atom/clickingon, list/modifiers)
SIGNAL_HANDLER
- var/obj/item/weapon = honorbound.get_active_held_item()
- var/list/modifiers = params2list(params)
-
+ if(modifiers[ALT_CLICK] || modifiers[SHIFT_CLICK] || modifiers[CTRL_CLICK] || modifiers[MIDDLE_CLICK])
+ return
if(!isliving(clickingon))
return
+
var/mob/living/clickedmob = clickingon
+ var/obj/item/weapon = honorbound.get_active_held_item()
+
if(!honorbound.DirectAccess(clickedmob) && !isgun(weapon))
return
if(weapon?.item_flags & NOBLUDGEON)
diff --git a/code/datums/mutations/hulk.dm b/code/datums/mutations/hulk.dm
index 3e144826f50..8db638359c1 100644
--- a/code/datums/mutations/hulk.dm
+++ b/code/datums/mutations/hulk.dm
@@ -97,11 +97,10 @@
#define HULK_TAILTHROW_STEPS 28
/// Run a barrage of checks to see if any given click is actually able to swing
-/datum/mutation/human/hulk/proc/check_swing(mob/living/carbon/human/user, atom/clicked_atom, params)
+/datum/mutation/human/hulk/proc/check_swing(mob/living/carbon/human/user, atom/clicked_atom, list/modifiers)
SIGNAL_HANDLER
/// Basically, we only proceed if we're in throw mode with a tailed carbon in our grasp with at least a neck grab and we're not restrained in some way
- var/list/modifiers = params2list(params)
if(LAZYACCESS(modifiers, ALT_CLICK) || LAZYACCESS(modifiers, SHIFT_CLICK) || LAZYACCESS(modifiers, CTRL_CLICK) || LAZYACCESS(modifiers, MIDDLE_CLICK))
return
if(!user.throw_mode || user.get_active_held_item() || user.zone_selected != BODY_ZONE_PRECISE_GROIN)
diff --git a/code/modules/vehicles/cars/clowncar.dm b/code/modules/vehicles/cars/clowncar.dm
index 00deb71ee39..b96d8ce255d 100644
--- a/code/modules/vehicles/cars/clowncar.dm
+++ b/code/modules/vehicles/cars/clowncar.dm
@@ -219,10 +219,13 @@
driver.update_mouse_pointer()
///Fires the cannon where the user clicks
-/obj/vehicle/sealed/car/clowncar/proc/fire_cannon_at(mob/user, atom/A, params)
+/obj/vehicle/sealed/car/clowncar/proc/fire_cannon_at(mob/user, atom/A, list/modifiers)
SIGNAL_HANDLER
if(cannonmode != CLOWN_CANNON_READY || !length(return_controllers_with_flag(VEHICLE_CONTROL_KIDNAPPED)))
- return NONE
+ return
+ //The driver can still examine things and interact with his inventory.
+ if(modifiers[SHIFT_CLICK] || !isturf(A.loc))
+ return
var/mob/living/unlucky_sod = pick(return_controllers_with_flag(VEHICLE_CONTROL_KIDNAPPED))
mob_exit(unlucky_sod, TRUE)
flick("clowncar_recoil", src)
diff --git a/code/modules/vehicles/mecha/_mecha.dm b/code/modules/vehicles/mecha/_mecha.dm
index 8dfe8b0560d..22b1540feb1 100644
--- a/code/modules/vehicles/mecha/_mecha.dm
+++ b/code/modules/vehicles/mecha/_mecha.dm
@@ -520,13 +520,14 @@
////////////////////////////
///Called when a driver clicks somewhere. Handles everything like equipment, punches, etc.
-/obj/vehicle/sealed/mecha/proc/on_mouseclick(mob/user, atom/target, params)
+/obj/vehicle/sealed/mecha/proc/on_mouseclick(mob/user, atom/target, list/modifiers)
SIGNAL_HANDLER
+ if(modifiers[SHIFT_CLICK]) //Allows things to be examined.
+ return
if(!isturf(target) && !isturf(target.loc)) // Prevents inventory from being drilled
return
if(completely_disabled || is_currently_ejecting || (mecha_flags & CANNOT_INTERACT))
return
- var/list/modifiers = params2list(params)
if(isAI(user) == !LAZYACCESS(modifiers, MIDDLE_CLICK))//BASICALLY if a human uses MMB, or an AI doesn't, then do nothing.
return
if(phasing)
@@ -557,7 +558,7 @@
return
if(SEND_SIGNAL(src, COMSIG_MECHA_EQUIPMENT_CLICK, livinguser, target) & COMPONENT_CANCEL_EQUIPMENT_CLICK)
return
- INVOKE_ASYNC(selected, /obj/item/mecha_parts/mecha_equipment.proc/action, user, target, params)
+ INVOKE_ASYNC(selected, /obj/item/mecha_parts/mecha_equipment.proc/action, user, target, modifiers)
return
if((selected.range & MECHA_MELEE) && Adjacent(target))
if(isliving(target) && selected.harmful && HAS_TRAIT(livinguser, TRAIT_PACIFISM))
@@ -565,7 +566,7 @@
return
if(SEND_SIGNAL(src, COMSIG_MECHA_EQUIPMENT_CLICK, livinguser, target) & COMPONENT_CANCEL_EQUIPMENT_CLICK)
return
- INVOKE_ASYNC(selected, /obj/item/mecha_parts/mecha_equipment.proc/action, user, target, params)
+ INVOKE_ASYNC(selected, /obj/item/mecha_parts/mecha_equipment.proc/action, user, target, modifiers)
return
if(!(livinguser in return_controllers_with_flag(VEHICLE_CONTROL_MELEE)))
to_chat(livinguser, span_warning("You're in the wrong seat to interact with your hands."))
diff --git a/code/modules/vehicles/mecha/equipment/mecha_equipment.dm b/code/modules/vehicles/mecha/equipment/mecha_equipment.dm
index 1adaade6a22..7747e20d35b 100644
--- a/code/modules/vehicles/mecha/equipment/mecha_equipment.dm
+++ b/code/modules/vehicles/mecha/equipment/mecha_equipment.dm
@@ -90,7 +90,7 @@
return FALSE
return TRUE
-/obj/item/mecha_parts/mecha_equipment/proc/action(mob/source, atom/target, params)
+/obj/item/mecha_parts/mecha_equipment/proc/action(mob/source, atom/target, list/modifiers)
TIMER_COOLDOWN_START(chassis, COOLDOWN_MECHA_EQUIPMENT, equip_cooldown)//Cooldown is on the MECH so people dont bypass it by switching equipment
send_byjax(chassis.occupants,"exosuit.browser","[REF(src)]",src.get_equip_info())
chassis.use_power(energy_drain)
diff --git a/code/modules/vehicles/mecha/equipment/tools/medical_tools.dm b/code/modules/vehicles/mecha/equipment/tools/medical_tools.dm
index 0c17cabe006..080f658e5e9 100644
--- a/code/modules/vehicles/mecha/equipment/tools/medical_tools.dm
+++ b/code/modules/vehicles/mecha/equipment/tools/medical_tools.dm
@@ -49,7 +49,7 @@
/obj/item/mecha_parts/mecha_equipment/medical/sleeper/Exit(atom/movable/leaving, direction)
return FALSE //prevents them from leaving without being forcemoved I guess
-/obj/item/mecha_parts/mecha_equipment/medical/sleeper/action(mob/source, atom/atomtarget, params)
+/obj/item/mecha_parts/mecha_equipment/medical/sleeper/action(mob/source, atom/atomtarget, list/modifiers)
if(!action_checks(atomtarget))
return
if(!iscarbon(atomtarget))
@@ -313,7 +313,7 @@
if(output)
return "[output] \[[mode? "Analyze" : "Launch"]\]
\[Syringes: [LAZYLEN(syringes)]/[max_syringes] | Reagents: [reagents.total_volume]/[reagents.maximum_volume]\]
Reagents list"
-/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/action(mob/source, atom/target, params)
+/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/action(mob/source, atom/target, list/modifiers)
if(!action_checks(target))
return
if(istype(target, /obj/item/reagent_containers/syringe))
@@ -531,7 +531,7 @@
return
medigun.process(SSOBJ_DT)
-/obj/item/mecha_parts/mecha_equipment/medical/mechmedbeam/action(mob/source, atom/movable/target, params)
+/obj/item/mecha_parts/mecha_equipment/medical/mechmedbeam/action(mob/source, atom/movable/target, list/modifiers)
medigun.process_fire(target, loc)
diff --git a/code/modules/vehicles/mecha/equipment/tools/mining_tools.dm b/code/modules/vehicles/mecha/equipment/tools/mining_tools.dm
index 7ac70ea3472..17f9f7036dc 100644
--- a/code/modules/vehicles/mecha/equipment/tools/mining_tools.dm
+++ b/code/modules/vehicles/mecha/equipment/tools/mining_tools.dm
@@ -24,7 +24,7 @@
. = ..()
AddComponent(/datum/component/butchering, 50, 100, null, null, TRUE)
-/obj/item/mecha_parts/mecha_equipment/drill/action(mob/source, atom/target, params)
+/obj/item/mecha_parts/mecha_equipment/drill/action(mob/source, atom/target, list/modifiers)
// Check if we can even use the equipment to begin with.
if(!action_checks(target))
return
diff --git a/code/modules/vehicles/mecha/equipment/tools/other_tools.dm b/code/modules/vehicles/mecha/equipment/tools/other_tools.dm
index b11f0c9f7c0..ebcdeb83f1e 100644
--- a/code/modules/vehicles/mecha/equipment/tools/other_tools.dm
+++ b/code/modules/vehicles/mecha/equipment/tools/other_tools.dm
@@ -13,7 +13,7 @@
range = MECHA_RANGED
var/teleport_range = 7
-/obj/item/mecha_parts/mecha_equipment/teleporter/action(mob/source, atom/target, params)
+/obj/item/mecha_parts/mecha_equipment/teleporter/action(mob/source, atom/target, list/modifiers)
var/area/ourarea = get_area(src)
if(!action_checks(target) || ourarea.area_flags & NOTELEPORT)
return
@@ -35,7 +35,7 @@
range = MECHA_RANGED
-/obj/item/mecha_parts/mecha_equipment/wormhole_generator/action(mob/source, atom/target, params)
+/obj/item/mecha_parts/mecha_equipment/wormhole_generator/action(mob/source, atom/target, list/modifiers)
var/area/ourarea = get_area(src)
if(!action_checks(target) || ourarea.area_flags & NOTELEPORT)
return
@@ -81,7 +81,7 @@
var/mode = GRAVSLING_MODE
-/obj/item/mecha_parts/mecha_equipment/gravcatapult/action(mob/source, atom/movable/target, params)
+/obj/item/mecha_parts/mecha_equipment/gravcatapult/action(mob/source, atom/movable/target, list/modifiers)
if(!action_checks(target))
return
switch(mode)
@@ -396,7 +396,7 @@
if(output)
return "[output] \[[fuel]: [round(fuel.amount*MINERAL_MATERIAL_AMOUNT,0.1)] cm3\] - [equip_ready?"Deactivate":"Activate"]"
-/obj/item/mecha_parts/mecha_equipment/generator/action(mob/source, atom/movable/target, params)
+/obj/item/mecha_parts/mecha_equipment/generator/action(mob/source, atom/movable/target, list/modifiers)
if(!chassis)
return
if(load_fuel(target, source))
diff --git a/code/modules/vehicles/mecha/equipment/tools/work_tools.dm b/code/modules/vehicles/mecha/equipment/tools/work_tools.dm
index b58da1e7f9d..08713bf36ad 100644
--- a/code/modules/vehicles/mecha/equipment/tools/work_tools.dm
+++ b/code/modules/vehicles/mecha/equipment/tools/work_tools.dm
@@ -39,7 +39,7 @@
. = ..()
cargo_holder = null
-/obj/item/mecha_parts/mecha_equipment/hydraulic_clamp/action(mob/living/source, atom/target, params)
+/obj/item/mecha_parts/mecha_equipment/hydraulic_clamp/action(mob/living/source, atom/target, list/modifiers)
if(!action_checks(target))
return
if(!cargo_holder)
@@ -94,8 +94,6 @@
if(M.stat == DEAD)
return
- //var/list/modifiers = params2list(params) - SKYRAT EDIT REMOVAL
-
if(!source.combat_mode)
step_away(M,chassis)
if(killer_clamp)
@@ -171,7 +169,7 @@
create_reagents(1000)
reagents.add_reagent(/datum/reagent/water, 1000)
-/obj/item/mecha_parts/mecha_equipment/extinguisher/action(mob/source, atom/target, params)
+/obj/item/mecha_parts/mecha_equipment/extinguisher/action(mob/source, atom/target, list/modifiers)
if(!action_checks(target) || get_dist(chassis, target)>3)
return
@@ -251,7 +249,7 @@
GLOB.rcd_list -= src
return ..()
-/obj/item/mecha_parts/mecha_equipment/rcd/action(mob/source, atom/target, params)
+/obj/item/mecha_parts/mecha_equipment/rcd/action(mob/source, atom/target, list/modifiers)
if(!isturf(target) && !istype(target, /obj/machinery/door/airlock))
target = get_turf(target)
if(!action_checks(target) || get_dist(chassis, target)>3 || istype(target, /turf/open/space/transit))
diff --git a/code/modules/vehicles/mecha/equipment/weapons/weapons.dm b/code/modules/vehicles/mecha/equipment/weapons/weapons.dm
index a206adfcda3..b1d1bcb1ef8 100644
--- a/code/modules/vehicles/mecha/equipment/weapons/weapons.dm
+++ b/code/modules/vehicles/mecha/equipment/weapons/weapons.dm
@@ -21,7 +21,7 @@
return TRUE
return FALSE
-/obj/item/mecha_parts/mecha_equipment/weapon/action(mob/source, atom/target, params)
+/obj/item/mecha_parts/mecha_equipment/weapon/action(mob/source, atom/target, list/modifiers)
if(!action_checks(target))
return FALSE
var/newtonian_target = turn(chassis.dir,180)
@@ -37,7 +37,6 @@
spread = round((i / projectiles_per_shot - 0.5) * variance)
var/obj/projectile/projectile_obj = new projectile(get_turf(src))
- var/modifiers = params2list(params)
projectile_obj.firer = chassis
projectile_obj.preparePixelProjectile(target, source, modifiers, spread)
if(source.client && isliving(source)) //dont want it to happen from syndie mecha npc mobs, they do direct fire anyways
@@ -183,7 +182,7 @@
return FALSE
-/obj/item/mecha_parts/mecha_equipment/weapon/honker/action(mob/source, atom/target, params)
+/obj/item/mecha_parts/mecha_equipment/weapon/honker/action(mob/source, atom/target, list/modifiers)
if(!action_checks(target))
return
playsound(chassis, 'sound/items/airhorn.ogg', 100, TRUE)
@@ -272,7 +271,7 @@
src.rearm()
return
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/action(mob/source, atom/target, params)
+/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/action(mob/source, atom/target, list/modifiers)
if(..())
projectiles -= projectiles_per_shot
send_byjax(chassis.occupants,"exosuit.browser","[REF(src)]",src.get_equip_info())
@@ -366,7 +365,7 @@
var/missile_range = 30
var/diags_first = FALSE
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/action(mob/source, atom/target, params)
+/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/action(mob/source, atom/target, list/modifiers)
if(!action_checks(target))
return
var/obj/O = new projectile(chassis.loc)
@@ -500,7 +499,7 @@
else
to_chat(usr, "[icon2html(src, usr)][span_warning("Lethal Fisting Disabled.")]")
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/punching_glove/action(mob/source, atom/target, params)
+/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/punching_glove/action(mob/source, atom/target, list/modifiers)
. = ..()
if(.)
to_chat(usr, "[icon2html(src, usr)]HONK")
diff --git a/code/modules/wiremod/components/action/mmi.dm b/code/modules/wiremod/components/action/mmi.dm
index e0ee407a7e1..932e4a9cce7 100644
--- a/code/modules/wiremod/components/action/mmi.dm
+++ b/code/modules/wiremod/components/action/mmi.dm
@@ -148,9 +148,8 @@
return TRUE
-/obj/item/circuit_component/mmi/proc/handle_mmi_attack(mob/living/source, atom/target, list/mods)
+/obj/item/circuit_component/mmi/proc/handle_mmi_attack(mob/living/source, atom/target, list/modifiers)
SIGNAL_HANDLER
- var/list/modifiers = params2list(mods)
if(modifiers[RIGHT_CLICK])
clicked_atom.set_output(target)
secondary_attack.set_output(COMPONENT_SIGNAL)