diff --git a/baystation12.dme b/baystation12.dme
index 7944c72bd7e..2a9686feb63 100644
--- a/baystation12.dme
+++ b/baystation12.dme
@@ -199,11 +199,13 @@
#include "code\datums\diseases\advance\symptoms\weight.dm"
#include "code\datums\expansions\expansion.dm"
#include "code\datums\expansions\multitool\_multitool.dm"
-#include "code\datums\expansions\multitool\cloning.dm"
#include "code\datums\expansions\multitool\multitool.dm"
#include "code\datums\expansions\multitool\store.dm"
#include "code\datums\expansions\multitool\circuitboards\circuitboards.dm"
#include "code\datums\expansions\multitool\circuitboards\stationalert.dm"
+#include "code\datums\expansions\multitool\items\cable.dm"
+#include "code\datums\expansions\multitool\items\items.dm"
+#include "code\datums\expansions\multitool\machinery\cloning.dm"
#include "code\datums\helper_datums\construction_datum.dm"
#include "code\datums\helper_datums\events.dm"
#include "code\datums\helper_datums\getrev.dm"
diff --git a/code/datums/expansions/expansion.dm b/code/datums/expansions/expansion.dm
index 8e92e53bdc7..7eee07e0d9c 100644
--- a/code/datums/expansions/expansion.dm
+++ b/code/datums/expansions/expansion.dm
@@ -25,7 +25,7 @@
var/list/datum/expansion/expansions = list()
/obj/Destroy()
- if(expansions)
+ if(istype(expansions))
for(var/expansion in expansions)
qdel(expansions[expansion])
expansions.Cut()
diff --git a/code/datums/expansions/multitool/circuitboards/stationalert.dm b/code/datums/expansions/multitool/circuitboards/stationalert.dm
index f46fd6ac5b6..614a4737a4f 100644
--- a/code/datums/expansions/multitool/circuitboards/stationalert.dm
+++ b/code/datums/expansions/multitool/circuitboards/stationalert.dm
@@ -12,7 +12,7 @@
. += ""
. += ""
-/datum/expansion/multitool/circuitboards/stationalert/on_topic(href, href_list, usr)
+/datum/expansion/multitool/circuitboards/stationalert/on_topic(href, href_list, user)
var/obj/item/weapon/circuitboard/stationalert/SA = holder
if(href_list["add"])
var/datum/alarm_handler/AH = locate(href_list["add"]) in alarm_manager.all_handlers
diff --git a/code/datums/expansions/multitool/items/cable.dm b/code/datums/expansions/multitool/items/cable.dm
new file mode 100644
index 00000000000..b8d5ae71a61
--- /dev/null
+++ b/code/datums/expansions/multitool/items/cable.dm
@@ -0,0 +1,18 @@
+/obj/item/stack/cable_coil/New()
+ set_expansion(/datum/expansion/multitool, new/datum/expansion/multitool/items/cable(src))
+ ..()
+
+/datum/expansion/multitool/items/cable/get_interact_window(var/obj/item/device/multitool/M, var/mob/user)
+ . += "Available Colors
"
+ . += "
"
+ for(var/cable_color in possible_cable_coil_colours)
+ . += "| [cable_color] | Select |
"
+ . += "
"
+
+/datum/expansion/multitool/items/cable/on_topic(href, href_list, user)
+ var/obj/item/stack/cable_coil/cable_coil = holder
+ if(href_list["select_color"] && href_list["select_color"] in possible_cable_coil_colours)
+ cable_coil.set_cable_color(href_list["select_color"], user)
+ return MT_REFRESH
+
+ return ..()
diff --git a/code/datums/expansions/multitool/items/items.dm b/code/datums/expansions/multitool/items/items.dm
new file mode 100644
index 00000000000..75bb67bca65
--- /dev/null
+++ b/code/datums/expansions/multitool/items/items.dm
@@ -0,0 +1,5 @@
+/datum/expansion/multitool/items/CanUseTopic(var/mob/user)
+ if(isAI(user)) // No remote AI access
+ return STATUS_CLOSE
+
+ return ..()
diff --git a/code/datums/expansions/multitool/cloning.dm b/code/datums/expansions/multitool/machinery/cloning.dm
similarity index 100%
rename from code/datums/expansions/multitool/cloning.dm
rename to code/datums/expansions/multitool/machinery/cloning.dm
diff --git a/code/datums/expansions/multitool/multitool.dm b/code/datums/expansions/multitool/multitool.dm
index 8a2b8226171..1612355d030 100644
--- a/code/datums/expansions/multitool/multitool.dm
+++ b/code/datums/expansions/multitool/multitool.dm
@@ -75,7 +75,7 @@
close_window(user)
return 1
-/datum/expansion/multitool/proc/on_topic(href, href_list, usr)
+/datum/expansion/multitool/proc/on_topic(href, href_list, user)
return MT_NOACTION
/datum/expansion/multitool/proc/send_buffer(var/obj/item/device/multitool/M, var/atom/buffer, var/mob/user)
diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm
index 7f2186dcd5d..e9f4e3ef6d3 100644
--- a/code/modules/power/cable.dm
+++ b/code/modules/power/cable.dm
@@ -22,6 +22,8 @@ If d1 = dir1 and d2 = dir2, it's a full X-X cable, getting from dir1 to dir2
By design, d1 is the smallest direction and d2 is the highest
*/
+var/list/possible_cable_coil_colours = list ("Yellow", "Green", "Pink", "Blue", "Orange", "Cyan", "Red")
+
/obj/structure/cable
level = 1
anchored =1
@@ -550,6 +552,28 @@ obj/structure/cable/proc/cableColor(var/colorC)
icon_state = "coil"
name = "cable coil"
+/obj/item/stack/cable_coil/proc/set_cable_color(var/selected_color, var/user)
+ if(!selected_color)
+ return
+
+ switch(selected_color)
+ if("Yellow")
+ color = COLOR_YELLOW
+ if("Green")
+ color = COLOR_LIME
+ if("Pink")
+ color = COLOR_PINK
+ if("Blue")
+ color = COLOR_BLUE
+ if("Orange")
+ color = COLOR_ORANGE
+ if("Cyan")
+ color = COLOR_CYAN
+ else
+ color = COLOR_RED
+ selected_color = "red"
+ user << "You change \the [src]'s color to [lowertext(selected_color)]."
+
/obj/item/stack/cable_coil/proc/update_wclass()
if(amount == 1)
w_class = 1.0
@@ -590,26 +614,8 @@ obj/structure/cable/proc/cableColor(var/colorC)
set name = "Change Colour"
set category = "Object"
- var/list/possible_colours = list ("Yellow", "Green", "Pink", "Blue", "Orange", "Cyan", "Red")
- var/selected_type = input("Pick new colour.", "Cable Colour", null, null) as null|anything in possible_colours
-
- if(selected_type)
- switch(selected_type)
- if("Yellow")
- color = COLOR_YELLOW
- if("Green")
- color = COLOR_LIME
- if("Pink")
- color = COLOR_PINK
- if("Blue")
- color = COLOR_BLUE
- if("Orange")
- color = COLOR_ORANGE
- if("Cyan")
- color = COLOR_CYAN
- else
- color = COLOR_RED
- usr << "You change your cable coil's colour to [selected_type]"
+ var/selected_type = input("Pick new colour.", "Cable Colour", null, null) as null|anything in possible_cable_coil_colours
+ set_cable_color(selected_type, usr)
// Items usable on a cable coil :
// - Wirecutters : cut them duh !