Files
Bubberstation/code/datums/keybinding/robot.dm
SkyratBot e2f43e53b9 [MIRROR] Gives The AI Hotkeys For Disconnecting From and Reconnecting To A Cyborg Shell [MDB IGNORE] (#19868)
* Gives The AI Hotkeys For Disconnecting From and Reconnecting To A Cyborg Shell (#73871)

## About The Pull Request
<img src="https://i.ibb.co/0cM6NHQ/Hotkey-PRImage2.png">
What it says on the tin. Gives the AI hotkeys to connect and disconnect
from its shell. I'm open to suggestions for better default hotkeys, I
made sure to choose out-of-the-way keys with no overlaps because I have
a vague memory about code-side keybind conflicts leading to a threatened
forkening and I don't want that.

Also this is my first PR with more than 2 lines changed so I would
appreciate a thorough and critical review of my code.
## Why It's Good For The Game

Since there are so many AI player admins (Who are all universally
gigachads btw) it would be convenient to them to have an aghost-hotkey
analogue for the AI. This change was specifically requested of me by one
of these admins in fact.

I'm sure non-admin AIs would appreciate this convenience as well though.
## Changelog
🆑
qol: The AI now has hotkeys for its shells, make sure to bind them to
your preferred keys in your keybindings menu, under game preferences.
/🆑

* Gives The AI Hotkeys For Disconnecting From and Reconnecting To A Cyborg Shell

---------

Co-authored-by: Jackraxxus <60418544+Jackraxxus@users.noreply.github.com>
2023-03-15 00:51:52 +00:00

86 lines
2.1 KiB
Plaintext

/datum/keybinding/robot
category = CATEGORY_ROBOT
weight = WEIGHT_ROBOT
/datum/keybinding/robot/can_use(client/user)
return iscyborg(user.mob)
/datum/keybinding/robot/moduleone
hotkey_keys = list("1")
name = "module_one"
full_name = "Toggle module 1"
description = "Equips or unequips the first module"
keybind_signal = COMSIG_KB_SILICON_TOGGLEMODULEONE_DOWN
/datum/keybinding/robot/moduleone/down(client/user)
. = ..()
if(.)
return
var/mob/living/silicon/robot/R = user.mob
R.toggle_module(1)
return TRUE
/datum/keybinding/robot/moduletwo
hotkey_keys = list("2")
name = "module_two"
full_name = "Toggle module 2"
description = "Equips or unequips the second module"
keybind_signal = COMSIG_KB_SILICON_TOGGLEMODULETWO_DOWN
/datum/keybinding/robot/moduletwo/down(client/user)
. = ..()
if(.)
return
var/mob/living/silicon/robot/R = user.mob
R.toggle_module(2)
return TRUE
/datum/keybinding/robot/modulethree
hotkey_keys = list("3")
name = "module_three"
full_name = "Toggle module 3"
description = "Equips or unequips the third module"
keybind_signal = COMSIG_KB_SILICON_TOGGLEMODULETHREE_DOWN
/datum/keybinding/robot/modulethree/down(client/user)
. = ..()
if(.)
return
var/mob/living/silicon/robot/R = user.mob
R.toggle_module(3)
return TRUE
/datum/keybinding/robot/unequip_module
hotkey_keys = list("Q")
name = "unequip_module"
full_name = "Unequip module"
description = "Unequips the active module"
keybind_signal = COMSIG_KB_SILICON_UNEQUIPMODULE_DOWN
/datum/keybinding/robot/unequip_module/down(client/user)
. = ..()
if(.)
return
var/mob/living/silicon/robot/R = user.mob
R.uneq_active()
return TRUE
/datum/keybinding/robot/undeploy
category = CATEGORY_AI
hotkey_keys = list("=")
name = "undeploy"
full_name = "Disconnect from shell"
description = "Returns you to your AI core"
keybind_signal = COMSIG_KB_SILION_UNDEPLOY_DOWN
/datum/keybinding/robot/undeploy/down(client/user)
. = ..()
if(.)
return
var/mob/living/silicon/robot/shell/our_shell = user.mob
//We make sure our shell is actually a shell
if(our_shell.shell == FALSE)
return
our_shell.undeploy()
return TRUE