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 !