diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm
index 5088cb75ba25..cf87fa47a181 100644
--- a/code/game/objects/items/crayons.dm
+++ b/code/game/objects/items/crayons.dm
@@ -391,7 +391,7 @@
"Medical" = image('icons/mob/robots.dmi', "med-radial"),
"Janitor" = image('icons/mob/robots.dmi', "jan-radial"),
"Hunter" = image('icons/mob/robots.dmi', "xeno-radial"),
- "Death Bot" = image('icons/mob/robots.dmi', "syndie-bloodhound-preview")
+ "Death Bot" = image('icons/mob/robots.dmi', "spidersyndi-preview")
)
selected_disguise = show_radial_menu(user, target, disguise_options, require_near = TRUE, radius = 42)
diff --git a/code/modules/antagonists/_common/antag_spawner.dm b/code/modules/antagonists/_common/antag_spawner.dm
index 51648d390449..c6793185540c 100644
--- a/code/modules/antagonists/_common/antag_spawner.dm
+++ b/code/modules/antagonists/_common/antag_spawner.dm
@@ -104,7 +104,7 @@
/obj/item/antag_spawner/nuke_ops/borg_tele/assault/Initialize(mapload)
. = ..()
- poll_icon = image(icon = 'icons/mob/robots.dmi', icon_state = "syndie-bloodhound-preview")
+ poll_icon = image(icon = 'icons/mob/robots.dmi', icon_state = "spidersyndi-preview")
/obj/item/antag_spawner/nuke_ops/borg_tele/medical
name = "syndicate medical teleporter"
diff --git a/code/modules/clothing/suits/cardborg_suit.dm b/code/modules/clothing/suits/cardborg_suit.dm
index 324c2fb04c8a..dca49e0dda97 100644
--- a/code/modules/clothing/suits/cardborg_suit.dm
+++ b/code/modules/clothing/suits/cardborg_suit.dm
@@ -105,7 +105,7 @@ CONTENTS:
icon_state = "cardborg_h_deathbot"
item_state = "cardborg_h_deathbot"
dog_fashion = /datum/dog_fashion/head/cardborg/deathbot
- available_disguises = list("nano_bloodhound", "syndie_bloodhound", "syndi-medi", "syndi-engi", "ertgamma")
+ available_disguises = list("nano_bloodhound", "syndie_bloodhound", "syndi-medi", "syndi-engi", "ertgamma", "spidersyndi", "syndieheavy")
species_disguise = "High-tech killer robot"
/*
diff --git a/code/modules/mob/living/silicon/robot/robot_mob.dm b/code/modules/mob/living/silicon/robot/robot_mob.dm
index 388d4fdfc87c..b784e4bb81f9 100644
--- a/code/modules/mob/living/silicon/robot/robot_mob.dm
+++ b/code/modules/mob/living/silicon/robot/robot_mob.dm
@@ -84,6 +84,10 @@ GLOBAL_LIST_INIT(robot_verbs_default, list(
var/list/force_modules
/// Can a robot rename itself with the Namepick verb?
var/allow_rename = TRUE
+ /// Can a robot change it's looks after the module is initialized? Used by syndicate combat borgs.
+ var/allow_resprite = FALSE
+ /// Has the robot done its one allowed resprite?
+ var/done_resprite = FALSE
/// Setting to TRUE unlocks a borg's Safety Override modules.
var/weapons_unlock = FALSE
var/static_radio_channels = FALSE
@@ -298,6 +302,25 @@ GLOBAL_LIST_INIT(robot_verbs_default, list(
return 0
rename_self(braintype, 1)
+/mob/living/silicon/robot/verb/Lookpick()
+ set category = "Robot Commands"
+ set name = "Change module look"
+ if(!modtype)
+ return FALSE
+ if(done_resprite)
+ to_chat(src, "You have already selected your look, you can not change it again.")
+ return FALSE
+ if(!allow_resprite)
+ to_chat(src, "Changing the look of the module is not enabled on this unit.")
+ return FALSE
+ // Pick a sprite
+ var/module_sprites = get_module_sprites(modtype)
+ var/selected_sprite = show_radial_menu(src, src, module_sprites, radius = 42)
+ if(!selected_sprite)
+ return FALSE
+ done_resprite = TRUE
+ initialize_sprites(selected_sprite, module_sprites)
+
/mob/living/silicon/robot/proc/sync()
if(lawupdate && connected_ai)
lawsync()
@@ -481,6 +504,12 @@ GLOBAL_LIST_INIT(robot_verbs_default, list(
"Cricket" = image('icons/mob/robots.dmi', "Cricket-SEC"),
"Heavy" = image('icons/mob/robots.dmi', "heavySec")
)
+ if("Syndicate")
+ module_sprites = list(
+ "Spider" = image('icons/mob/robots.dmi', "spidersyndi"),
+ "Bloodhound" = image('icons/mob/robots.dmi', "syndie_bloodhound"),
+ "Heavy" = image('icons/mob/robots.dmi', "syndieheavy")
+ )
if("Destroyer") //for Adminbus presumably
module_sprites = list(
"Destroyer" = image('icons/mob/robots.dmi', "droidcombat")
@@ -640,7 +669,13 @@ GLOBAL_LIST_INIT(robot_verbs_default, list(
if(!static_radio_channels)
radio.config(module.channels)
rename_character(real_name, get_default_name())
+ initialize_sprites(selected_sprite, module_sprites)
+ if(client.stat_tab == "Status")
+ SSstatpanels.set_status_tab(client)
+ SSblackbox.record_feedback("tally", "cyborg_modtype", 1, "[lowertext(selected_module)]")
+ notify_ai(2)
+/mob/living/silicon/robot/proc/initialize_sprites(selected_sprite, list/module_sprites)
var/image/sprite_image = module_sprites[selected_sprite]
var/list/names = splittext(selected_sprite, "-")
icon = sprite_image.icon
@@ -650,10 +685,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list(
update_module_icon()
robot_module_hat_offset(icon_state)
update_icons()
- if(client.stat_tab == "Status")
- SSstatpanels.set_status_tab(client)
- SSblackbox.record_feedback("tally", "cyborg_modtype", 1, "[lowertext(selected_module)]")
- notify_ai(2)
+
/// Take the borg's upgrades and spill them on the floor
/mob/living/silicon/robot/proc/spill_upgrades()
for(var/obj/item/borg/upgrade/U in contents)
diff --git a/code/modules/mob/living/silicon/robot/syndicate_robot.dm b/code/modules/mob/living/silicon/robot/syndicate_robot.dm
index 17801c1a2e3b..d88415375b6e 100644
--- a/code/modules/mob/living/silicon/robot/syndicate_robot.dm
+++ b/code/modules/mob/living/silicon/robot/syndicate_robot.dm
@@ -1,6 +1,6 @@
/mob/living/silicon/robot/syndicate
- base_icon = "syndie_bloodhound"
- icon_state = "syndie_bloodhound"
+ base_icon = "spidersyndi"
+ icon_state = "spidersyndi"
lawupdate = FALSE
scrambledcodes = TRUE
has_camera = FALSE
@@ -9,6 +9,7 @@
bubble_icon = "syndibot"
designation = "Syndicate Assault"
modtype = "Syndicate"
+ allow_resprite = TRUE
req_access = list(ACCESS_SYNDICATE)
ionpulse = TRUE
damage_protection = 5
diff --git a/icons/mob/robots.dmi b/icons/mob/robots.dmi
index 5009239fc389..cd7ad64edee8 100644
Binary files a/icons/mob/robots.dmi and b/icons/mob/robots.dmi differ