diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index 7b5cedca42c..36cbf11ca49 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -311,6 +311,33 @@ /atom/proc/CtrlAltClick(var/mob/user) return +/* + Rclick. +*/ + +/mob/proc/RightClickOn(atom/A) + A.RightClick(src) + +///Called when a owner mob Shift + Rightmouseclicks an atom +/mob/proc/ShiftRightClickOn(atom/A) + A.ShiftRightClick(src) + +///Called when a owner mob Alt + Rightmouseclicks an atom, given that Altclick does not return TRUE +/mob/proc/AltRightClickOn(atom/A) + A.AltRightClick(src) + +///Called when a mob Rightmouseclicks this atom +/atom/proc/RightClick(mob/user) + return + +///Called when a mob Shift + Rightmouseclicks this atom +/atom/proc/ShiftRightClick(mob/user) + return + +///Called when a mob Alt + Rightmouseclicks this atom, given that mobs Altclick() does not return TRUE +/atom/proc/AltRightClick(mob/user) + return + /* Misc helpers diff --git a/code/game/machinery/bodyscanner.dm b/code/game/machinery/bodyscanner.dm index 84cf5f04220..cd9d205f431 100644 --- a/code/game/machinery/bodyscanner.dm +++ b/code/game/machinery/bodyscanner.dm @@ -43,6 +43,10 @@ usr.client.perspective = EYE_PERSPECTIVE usr.client.eye = src +/obj/machinery/bodyscanner/RightClick(mob/user) + if(CanPhysicallyInteract(user)) + eject() + /obj/machinery/bodyscanner/proc/drop_contents() for(var/obj/O in (contents - component_parts)) O.dropInto(loc) diff --git a/code/modules/client/client_defines.dm b/code/modules/client/client_defines.dm index c1bb91e2a6c..22e69e737ae 100644 --- a/code/modules/client/client_defines.dm +++ b/code/modules/client/client_defines.dm @@ -46,6 +46,10 @@ var/related_accounts_ip = "Requires database" //So admins know why it isn't working - Used to determine what other accounts previously logged in from this ip var/related_accounts_cid = "Requires database" //So admins know why it isn't working - Used to determine what other accounts previously logged in from this computer id + ///remembers what our context menu setting is currently set to + var/shift_to_open_context_menu = TRUE + + /* As of byond 512, due to how broken preloading is, preload_rsc MUST be set to 1 at compile time if resource URLs are *not* in use, BUT you still want resource preloading enabled (from the server itself). If using resource URLs, it should be set to 0 and diff --git a/code/modules/client/preferences_toggle.dm b/code/modules/client/preferences_toggle.dm index 4c986c71e6a..e4b83a3cc35 100644 --- a/code/modules/client/preferences_toggle.dm +++ b/code/modules/client/preferences_toggle.dm @@ -62,3 +62,21 @@ var/list/client_preference_stats_ /stat_client_preference/proc/update_name(var/mob/user) name = user.get_preference_value(client_preference) + +///Toggles whether or not you need to hold shift to access the right click menu +/client/verb/toggle_right_click() + set name = "Toggle Right Click" + set category = "Preferences" + + if(shift_to_open_context_menu) + winset(src, "mapwindow.map", "right-click=false") + winset(src, "default.Shift", "is-disabled=true") + winset(src, "default.ShiftUp", "is-disabled=true") + shift_to_open_context_menu = FALSE + to_chat(usr, "You will no longer need to hold the Shift key to access the right click menu") + else + winset(src, "mapwindow.map", "right-click=true") + winset(src, "ShiftUp", "is-disabled=false") + winset(src, "Shift", "is-disabled=false") + shift_to_open_context_menu = TRUE + to_chat(usr, "You will now need to hold the Shift key to access the right click menu") diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index b4304c9a796..70df75ade63 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -663,7 +663,7 @@ if(pin) to_chat(user, SPAN_WARNING("There's already a pin installed.")) -/obj/item/weapon/gun/AltClick(var/mob/user) +/obj/item/weapon/gun/RightClick(var/mob/user) if(!pin) to_chat(user, SPAN_WARNING("There's no firing pin installed in this weapon.")) return diff --git a/interface/skin.dmf b/interface/skin.dmf index eb4076abbe4..b22b9f03dc8 100644 --- a/interface/skin.dmf +++ b/interface/skin.dmf @@ -263,6 +263,16 @@ macro "borghotkeymode" elem name = "." command = "move-down" + elem ".winset :map.right-click=false" + name = "SHIFT+Shift" + elem "Shift" + name = "SHIFT" + command = ".winset :map.right-click=false" + elem "ShiftUp" + name = "SHIFT+UP" + command = ".winset :map.right-click=true" + + macro "macro" elem @@ -451,6 +461,16 @@ macro "macro" elem name = "CTRL+Subtract" command = "move-down" + elem ".winset :map.right-click=false" + name = "SHIFT+Shift" + elem "Shift" + name = "SHIFT" + command = ".winset :map.right-click=false" + elem "ShiftUp" + name = "SHIFT+UP" + command = ".winset :map.right-click=true" + + macro "hotkeymode" elem @@ -549,7 +569,7 @@ macro "hotkeymode" elem name = "Delete" command = "delete-key-pressed" - elem + elem name = "1" command = "a-intent help" elem @@ -735,6 +755,16 @@ macro "hotkeymode" elem name = "SHIFT+UP" command = "setmovingslowly" + elem ".winset :map.right-click=false" + name = "SHIFT+Shift" + elem "Shift" + name = "SHIFT" + command = ".winset :map.right-click=false" + elem "ShiftUp" + name = "SHIFT+UP" + command = ".winset :map.right-click=true" + + macro "borgmacro" elem @@ -911,6 +941,16 @@ macro "borgmacro" elem name = "CTRL+Subtract" command = "move-down" + elem ".winset :map.right-click=false" + name = "SHIFT+Shift" + elem "Shift" + name = "SHIFT" + command = ".winset :map.right-click=false" + elem "ShiftUp" + name = "SHIFT+UP" + command = ".winset :map.right-click=true" + + menu "menu" @@ -1077,6 +1117,7 @@ window "mapwindow" saved-params = "pos;size;is-minimized;is-maximized" titlebar = false statusbar = false + right-click = true can-close = false can-minimize = false can-resize = false