From f1cbe0396b3f369f1787c33e3c4c358199d913da Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Mon, 23 Sep 2024 10:55:16 +0200 Subject: [PATCH] ai syncing / unsyncing in modify robot --- code/modules/admin/modify_robot.dm | 18 +++++++++++++ .../tgui/interfaces/ModifyRobot/index.tsx | 25 +++++++++++++++++-- .../tgui/interfaces/ModifyRobot/types.ts | 2 ++ 3 files changed, 43 insertions(+), 2 deletions(-) diff --git a/code/modules/admin/modify_robot.dm b/code/modules/admin/modify_robot.dm index 1ffcf78be28..47ad98e7860 100644 --- a/code/modules/admin/modify_robot.dm +++ b/code/modules/admin/modify_robot.dm @@ -121,6 +121,8 @@ package_laws(., "supplied_laws", target.laws.supplied_laws) .["isAI"] = isAI(target) + .["isMalf"] = is_malf(user) + .["isSlaved"] = target.is_slaved() var/list/channels = list() for(var/ch_name in target.law_channels()) @@ -498,6 +500,19 @@ if(usr != target) to_chat(usr, "Laws displayed.") return TRUE + if("toggle_sync") + if(target.is_slaved()) + target.disconnect_from_ai() + target.lawupdate = 0 + else + var/new_ai = select_active_ai_with_fewest_borgs() + if(new_ai) + target.lawupdate = 1 + target.connect_to_ai(new_ai) + return TRUE + if("sneaky_toggle") + target.lawsync = !target.lawsync + return TRUE /datum/eventkit/modify_robot/proc/get_target_items(var/mob/user) var/list/target_items = list() @@ -650,3 +665,6 @@ package_laws(packaged_laws, "supplied_laws", ALs.supplied_laws) law_sets[++law_sets.len] = list("name" = ALs.name, "header" = ALs.law_header, "ref" = "\ref[ALs]","laws" = packaged_laws) return law_sets + +/datum/eventkit/modify_robot/proc/is_malf(var/mob/user) + return (is_admin(user) && !target.is_slaved()) || is_special_role(user) diff --git a/tgui/packages/tgui/interfaces/ModifyRobot/index.tsx b/tgui/packages/tgui/interfaces/ModifyRobot/index.tsx index dba66ce648a..402077dc238 100644 --- a/tgui/packages/tgui/interfaces/ModifyRobot/index.tsx +++ b/tgui/packages/tgui/interfaces/ModifyRobot/index.tsx @@ -50,6 +50,8 @@ export const ModifyRobot = (props) => { has_inherent_laws, has_supplied_laws, isAI, + isMalf, + isSlaved, channel, channels, law_sets, @@ -90,7 +92,6 @@ export const ModifyRobot = (props) => { tabs[6] = ( { has_inherent_laws={has_inherent_laws} has_supplied_laws={has_supplied_laws} isAI={isAI} + isMalf={isMalf} channel={channel} channels={channels} /> @@ -116,7 +118,7 @@ export const ModifyRobot = (props) => {
{ Rename + + + + + + )} diff --git a/tgui/packages/tgui/interfaces/ModifyRobot/types.ts b/tgui/packages/tgui/interfaces/ModifyRobot/types.ts index d5bb7aeadff..9d6f8fc5875 100644 --- a/tgui/packages/tgui/interfaces/ModifyRobot/types.ts +++ b/tgui/packages/tgui/interfaces/ModifyRobot/types.ts @@ -24,6 +24,8 @@ export type Data = { has_inherent_laws: number; has_supplied_laws: number; isAI: BooleanLike; + isMalf: BooleanLike; + isSlaved: string | null; channel: string; channels: { channel: string }[]; law_sets: law_pack[];