Implements [OPTIONAL] Swap Left/Right hand, changes [OPTIONAL] default keybinds to accomodate (#92659)

## About The Pull Request

- Adds **OPTIONAL** keybinds that lets you select a specific hand
- Alters **OPTIONAL** default keybinds as such:
  - Q: Swap to Right Hand (replacing Drop item)
  - E: Swap to Left Hand (replacing Quick equip)
  - R: Quick equip (replacing Toggle Throw Mode)
  - ShiftR: Quick equip belt
  - X: Drop item (replacing Swap hands)
  - Swap hands is Unbound

## Why It's Good For The Game

Swapping hands has always been somewhat awkward. Since it depends on the
currently selected hand, swapping your hands requires you to look away
from what you're doing and mentally process what you're holding and what
you have selected. In the heat of the moment (like a fight) it's really
easy to forget which hand you have selected and do something you did not
want to do (like accidentally hug your target instead of attack them).
This makes it so that, at the very least, you only need to check what
you're holding.

The **OPTIONAL** default keybinds **THAT ARE OPTIONAL YOU DON'T HAVE TO
USE THEM** were altered so that new players use this new feature,
hopefully alleviating some of the hiccups from learning hand swapping.
## Changelog

🆑
qol: Added [OPTIONAL] keybinds to for Swap Left/Right hands. Check your
keybinds. [NOT OPTIONAL]
/🆑
This commit is contained in:
tonty
2025-08-26 01:00:25 -04:00
committed by GitHub
parent 5594692f12
commit f91de19b44
5 changed files with 49 additions and 7 deletions
+2 -2
View File
@@ -6,7 +6,7 @@
return ishuman(user.mob)
/datum/keybinding/human/quick_equip
hotkey_keys = list("E")
hotkey_keys = list("R")
name = "quick_equip"
full_name = "Quick equip"
description = "Quickly puts an item in the best slot available"
@@ -21,7 +21,7 @@
return TRUE
/datum/keybinding/human/quick_equip_belt
hotkey_keys = list("ShiftE")
hotkey_keys = list("ShiftR")
name = "quick_equip_belt"
full_name = "Quick equip belt"
description = "Put held thing in belt or take out most recent thing from belt"
+1 -1
View File
@@ -167,7 +167,7 @@
return TRUE
/datum/keybinding/living/toggle_throw_mode
hotkey_keys = list("R", "Southwest") // END
hotkey_keys = list("Southwest") // END
name = "toggle_throw_mode"
full_name = "Toggle throw mode"
description = "Toggle throwing the current item or not."
+32 -2
View File
@@ -21,7 +21,7 @@
return TRUE
/datum/keybinding/mob/swap_hands
hotkey_keys = list("X")
hotkey_keys = list("Unbound")
name = "swap_hands"
full_name = "Swap hands"
description = ""
@@ -35,6 +35,36 @@
M.swap_hand()
return TRUE
/datum/keybinding/mob/select_hand
var/hand_index = NONE
/datum/keybinding/mob/select_hand/right
hotkey_keys = list("Q")
name = "select_right_hand"
full_name = "Swap to Right Hand"
keybind_signal = COMSIG_KB_MOB_SELECTRIGHTHAND_DOWN
hand_index = RIGHT_HANDS
/datum/keybinding/mob/select_hand/left
hotkey_keys = list("E")
name = "select_left_hand"
full_name = "Swap to Left Hand"
keybind_signal = COMSIG_KB_MOB_SELECTLEFTHAND_DOWN
hand_index = LEFT_HANDS
/datum/keybinding/mob/select_hand/down(client/user, turf/target)
. = ..()
if(.)
return
var/mob/user_mob = user.mob
var/active_hand_set = ceil(user_mob.active_hand_index / 2) - 1 //offset
var/desired_hand_index = hand_index + (2 * active_hand_set)
user_mob.swap_hand(desired_hand_index)
return TRUE
/datum/keybinding/mob/activate_inhand
hotkey_keys = list("Z")
name = "activate_inhand"
@@ -51,7 +81,7 @@
return TRUE
/datum/keybinding/mob/drop_item
hotkey_keys = list("Q")
hotkey_keys = list("X")
name = "drop_item"
full_name = "Drop Item"
description = ""