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) => {