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 1/9] 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[]; From 1419632e35ed6b539004ff12b3830908b638be9a Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Mon, 23 Sep 2024 11:04:39 +0200 Subject: [PATCH 2/9] . --- code/modules/admin/modify_robot.dm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/code/modules/admin/modify_robot.dm b/code/modules/admin/modify_robot.dm index 47ad98e7860..f4b9976b927 100644 --- a/code/modules/admin/modify_robot.dm +++ b/code/modules/admin/modify_robot.dm @@ -511,7 +511,7 @@ target.connect_to_ai(new_ai) return TRUE if("sneaky_toggle") - target.lawsync = !target.lawsync + target.lawupdate = !target.lawupdate return TRUE /datum/eventkit/modify_robot/proc/get_target_items(var/mob/user) @@ -668,3 +668,6 @@ /datum/eventkit/modify_robot/proc/is_malf(var/mob/user) return (is_admin(user) && !target.is_slaved()) || is_special_role(user) + +/datum/eventkit/modify_robot/proc/is_special_role(var/mob/user) + return user.mind.special_role ? TRUE : FALSE From a14077d62290570a57c1856da58559f786d4b16c Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Mon, 23 Sep 2024 12:16:58 +0200 Subject: [PATCH 3/9] multiple ais --- code/modules/admin/modify_robot.dm | 13 +++++++- .../tgui/interfaces/ModifyRobot/index.tsx | 30 ++++++++++++++----- .../tgui/interfaces/ModifyRobot/types.ts | 2 ++ 3 files changed, 36 insertions(+), 9 deletions(-) diff --git a/code/modules/admin/modify_robot.dm b/code/modules/admin/modify_robot.dm index f4b9976b927..3d2b8136728 100644 --- a/code/modules/admin/modify_robot.dm +++ b/code/modules/admin/modify_robot.dm @@ -12,6 +12,7 @@ /datum/eventkit/modify_robot var/mob/living/silicon/robot/target var/mob/living/silicon/robot/source + var/mob/living/ai/selected_ai var/ion_law = "IonLaw" var/zeroth_law = "ZerothLaw" var/inherent_law = "InherentLaw" @@ -123,6 +124,13 @@ .["isAI"] = isAI(target) .["isMalf"] = is_malf(user) .["isSlaved"] = target.is_slaved() + var/list/active_ais = list() + for(var/mob/living/silicon/ai/ai in active_ais()) + if(!ai.loc) + continue + active_ais += list(list("displayText" = "[R]", "value" = "\ref[R]")) + .["active_ais"] = active_ais + .["selected_ai"] = selected_ai var/list/channels = list() for(var/ch_name in target.law_channels()) @@ -500,12 +508,15 @@ if(usr != target) to_chat(usr, "Laws displayed.") return TRUE + if("select_ai") + selected_ai = locate(params["new_ai"]) + 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() + var/new_ai = selected_ai ? select_ai : select_active_ai_with_fewest_borgs() if(new_ai) target.lawupdate = 1 target.connect_to_ai(new_ai) diff --git a/tgui/packages/tgui/interfaces/ModifyRobot/index.tsx b/tgui/packages/tgui/interfaces/ModifyRobot/index.tsx index 402077dc238..325e9e94b2c 100644 --- a/tgui/packages/tgui/interfaces/ModifyRobot/index.tsx +++ b/tgui/packages/tgui/interfaces/ModifyRobot/index.tsx @@ -52,6 +52,8 @@ export const ModifyRobot = (props) => { isAI, isMalf, isSlaved, + all_ais, + selected_ai, channel, channels, law_sets, @@ -173,8 +175,20 @@ export const ModifyRobot = (props) => { Rename + + + act('select_ai', { + new_ai: value, + }) + } + /> + - + )} diff --git a/tgui/packages/tgui/interfaces/ModifyRobot/types.ts b/tgui/packages/tgui/interfaces/ModifyRobot/types.ts index 9d6f8fc5875..d64bdb92610 100644 --- a/tgui/packages/tgui/interfaces/ModifyRobot/types.ts +++ b/tgui/packages/tgui/interfaces/ModifyRobot/types.ts @@ -29,6 +29,8 @@ export type Data = { channel: string; channels: { channel: string }[]; law_sets: law_pack[]; + active_ais: DropdownEntry[]; + selected_ai: {name: string; ref: string} | null; }; export type DropdownEntry = { From d5da234ef28924010c53afb7779d2bb990d9fe65 Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Mon, 23 Sep 2024 12:21:20 +0200 Subject: [PATCH 4/9] . --- code/modules/admin/modify_robot.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/admin/modify_robot.dm b/code/modules/admin/modify_robot.dm index 3d2b8136728..2dc770aa66d 100644 --- a/code/modules/admin/modify_robot.dm +++ b/code/modules/admin/modify_robot.dm @@ -12,7 +12,7 @@ /datum/eventkit/modify_robot var/mob/living/silicon/robot/target var/mob/living/silicon/robot/source - var/mob/living/ai/selected_ai + var/mob/living/silicon/ai/selected_ai var/ion_law = "IonLaw" var/zeroth_law = "ZerothLaw" var/inherent_law = "InherentLaw" @@ -128,7 +128,7 @@ for(var/mob/living/silicon/ai/ai in active_ais()) if(!ai.loc) continue - active_ais += list(list("displayText" = "[R]", "value" = "\ref[R]")) + active_ais += list(list("displayText" = "[ai]", "value" = "\ref[ai]")) .["active_ais"] = active_ais .["selected_ai"] = selected_ai @@ -516,7 +516,7 @@ target.disconnect_from_ai() target.lawupdate = 0 else - var/new_ai = selected_ai ? select_ai : select_active_ai_with_fewest_borgs() + var/new_ai = selected_ai ? selected_ai : select_active_ai_with_fewest_borgs() if(new_ai) target.lawupdate = 1 target.connect_to_ai(new_ai) From 084569c5212bd35182d82a70ec6b1ba4eb16e1f8 Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Mon, 23 Sep 2024 12:49:45 +0200 Subject: [PATCH 5/9] . --- tgui/packages/tgui/interfaces/ModifyRobot/index.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tgui/packages/tgui/interfaces/ModifyRobot/index.tsx b/tgui/packages/tgui/interfaces/ModifyRobot/index.tsx index 325e9e94b2c..7627ae3b1a3 100644 --- a/tgui/packages/tgui/interfaces/ModifyRobot/index.tsx +++ b/tgui/packages/tgui/interfaces/ModifyRobot/index.tsx @@ -202,8 +202,8 @@ export const ModifyRobot = (props) => { color={isMalf ? "red" : "green"} tooltip={(isMalf ? "Disables" : "Enables") + " lawsync"} onClick={(value) => act('sneaky_toggle')} - > - Lawsync + > + Lawsync From 77d7c4c7d46257af00646009516c88aa54e191a1 Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Mon, 23 Sep 2024 13:04:46 +0200 Subject: [PATCH 6/9] . --- tgui/packages/tgui/interfaces/ModifyRobot/index.tsx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tgui/packages/tgui/interfaces/ModifyRobot/index.tsx b/tgui/packages/tgui/interfaces/ModifyRobot/index.tsx index 7627ae3b1a3..7be0c5ff9d6 100644 --- a/tgui/packages/tgui/interfaces/ModifyRobot/index.tsx +++ b/tgui/packages/tgui/interfaces/ModifyRobot/index.tsx @@ -192,9 +192,9 @@ export const ModifyRobot = (props) => { color={isSlaved ? "red" : "green"} tooltip={(isSlaved ? "Disconnect from" : "Connect to") + " AI"} onClick={(value) => act('toggle_sync')} - > - {isSlaved ? isSlaved : "Disconnected!"} - + > + {isSlaved ? isSlaved : "Disconnected!"} + From fc12c5df720be58d20482ebe8e40f885e2ae6dd7 Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Mon, 23 Sep 2024 13:32:45 +0200 Subject: [PATCH 7/9] . --- tgui/packages/tgui/interfaces/ModifyRobot/index.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tgui/packages/tgui/interfaces/ModifyRobot/index.tsx b/tgui/packages/tgui/interfaces/ModifyRobot/index.tsx index 7be0c5ff9d6..8efd08303e7 100644 --- a/tgui/packages/tgui/interfaces/ModifyRobot/index.tsx +++ b/tgui/packages/tgui/interfaces/ModifyRobot/index.tsx @@ -178,7 +178,7 @@ export const ModifyRobot = (props) => { act('select_ai', { new_ai: value, @@ -188,7 +188,7 @@ export const ModifyRobot = (props) => { + - - act('select_ai', { - new_ai: value, - }) + - - - )} + + {!!target?.module && ( + + + + act('select_ai', { + new_ai: value, + }) + } + /> + + + + + + + + + )} + {!!target && diff --git a/tgui/packages/tgui/interfaces/ModifyRobot/types.ts b/tgui/packages/tgui/interfaces/ModifyRobot/types.ts index d64bdb92610..5191e384223 100644 --- a/tgui/packages/tgui/interfaces/ModifyRobot/types.ts +++ b/tgui/packages/tgui/interfaces/ModifyRobot/types.ts @@ -30,7 +30,7 @@ export type Data = { channels: { channel: string }[]; law_sets: law_pack[]; active_ais: DropdownEntry[]; - selected_ai: {name: string; ref: string} | null; + selected_ai: string | null; }; export type DropdownEntry = { @@ -42,6 +42,7 @@ export type Target = { name: string; ckey: string; module: string; + emagged: BooleanLike; active: BooleanLike; crisis_override: BooleanLike; active_restrictions: string[];