[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>
This commit is contained in:
SkyratBot
2023-03-15 00:51:52 +00:00
committed by GitHub
co-authored by Jackraxxus
parent 6cf1c0ff8a
commit e2f43e53b9
5 changed files with 45 additions and 0 deletions
+2
View File
@@ -5,6 +5,7 @@
#define CATEGORY_CARBON "CARBON"
#define CATEGORY_HUMAN "HUMAN"
#define CATEGORY_ROBOT "ROBOT"
#define CATEGORY_AI "AI"
#define CATEGORY_MISC "MISC"
#define CATEGORY_MOVEMENT "MOVEMENT"
#define CATEGORY_COMMUNICATION "COMMUNICATION"
@@ -17,4 +18,5 @@
#define WEIGHT_LIVING 50
#define WEIGHT_DEAD 60
#define WEIGHT_EMOTE 70
#define WEIGHT_AI 80
#define WEIGHT_LOWEST 999
@@ -0,0 +1,21 @@
/datum/keybinding/artificial_intelligence
category = CATEGORY_AI
weight = WEIGHT_AI
/datum/keybinding/artificial_intelligence/can_use(client/user)
return isAI(user.mob)
/datum/keybinding/artificial_intelligence/reconnect
hotkey_keys = list("-")
name = "reconnect"
full_name = "Reconnect to shell"
description = "Reconnects you to your most recently used AI shell"
keybind_signal = COMSIG_KB_SILICON_RECONNECT_DOWN
/datum/keybinding/artificial_intelligence/reconnect/down(client/user)
. = ..()
if(.)
return
var/mob/living/silicon/ai/our_ai = user.mob
our_ai.deploy_to_shell(our_ai.redeploy_action.last_used_shell)
return TRUE
+19
View File
@@ -64,3 +64,22 @@
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