diff --git a/code/_onclick/ai.dm b/code/_onclick/ai.dm index 60d1520f1e6..ad3570e14a1 100644 --- a/code/_onclick/ai.dm +++ b/code/_onclick/ai.dm @@ -64,6 +64,9 @@ if(modifiers["ctrl"]) CtrlClickOn(A) return + if(modifiers["middle"]) + MiddleClickOn(A, params) + return if(world.time <= next_move) return diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index 7c165d3b4a6..134b865810f 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -86,7 +86,7 @@ CtrlShiftClickOn(A) return if(modifiers["middle"]) - MiddleClickOn(A) + MiddleClickOn(A, params) return if(modifiers["shift"]) ShiftClickOn(A) @@ -278,11 +278,11 @@ /** - * Middle click - * Mainly used for swapping hands - */ -/mob/proc/MiddleClickOn(atom/A) - . = SEND_SIGNAL(src, COMSIG_MOB_MIDDLECLICKON, A) + * Middle click + * Mainly used for swapping hands + */ +/mob/proc/MiddleClickOn(atom/A, params) + . = SEND_SIGNAL(src, COMSIG_MOB_MIDDLECLICKON, A, params) if(. & COMSIG_MOB_CANCEL_CLICKON) return swap_hand() diff --git a/code/modules/vehicles/mecha/_mecha.dm b/code/modules/vehicles/mecha/_mecha.dm index bd7209cdb98..a031292f4ff 100644 --- a/code/modules/vehicles/mecha/_mecha.dm +++ b/code/modules/vehicles/mecha/_mecha.dm @@ -521,7 +521,7 @@ if(is_currently_ejecting) return var/list/mouse_control = params2list(params) - if(isAI(user) && !mouse_control["middle"])//AIs use MMB + if(isAI(user) == !mouse_control["middle"])//BASICALLY if a human uses MMB, or an AI doesn't, then do nothing. return if(phasing) to_chat(occupants, "[icon2html(src, occupants)]Unable to interact with objects while phasing.") @@ -566,6 +566,9 @@ target.mech_melee_attack(src, user) TIMER_COOLDOWN_START(src, COOLDOWN_MECHA_MELEE_ATTACK, melee_cooldown) +/obj/vehicle/sealed/mecha/proc/on_middlemouseclick(mob/user, atom/target, params) + if(isAI(user)) + on_mouseclick(user, target, params) ////////////////////////////////// //////// Movement procs //////// @@ -1086,6 +1089,7 @@ /obj/vehicle/sealed/mecha/add_occupant(mob/M, control_flags) RegisterSignal(M, COMSIG_LIVING_DEATH, .proc/mob_exit) RegisterSignal(M, COMSIG_MOB_CLICKON, .proc/on_mouseclick) + RegisterSignal(M, COMSIG_MOB_MIDDLECLICKON, .proc/on_middlemouseclick) //For AIs RegisterSignal(M, COMSIG_MOB_SAY, .proc/display_speech_bubble) . = ..() update_icon() @@ -1093,6 +1097,7 @@ /obj/vehicle/sealed/mecha/remove_occupant(mob/M) UnregisterSignal(M, COMSIG_LIVING_DEATH) UnregisterSignal(M, COMSIG_MOB_CLICKON) + UnregisterSignal(M, COMSIG_MOB_MIDDLECLICKON) UnregisterSignal(M, COMSIG_MOB_SAY) M.clear_alert("charge") M.clear_alert("mech damage")