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)