diff --git a/baystation12.dme b/baystation12.dme
index 703c1a526b4..ce37367dd39 100644
--- a/baystation12.dme
+++ b/baystation12.dme
@@ -1272,7 +1272,6 @@
#include "code\game\objects\items\tanks\jetpack.dm"
#include "code\game\objects\items\tanks\tank_types.dm"
#include "code\game\objects\items\tanks\tanks.dm"
-#include "code\game\objects\items\tools\combo.dm"
#include "code\game\objects\items\tools\crowbar.dm"
#include "code\game\objects\items\tools\screwdriver.dm"
#include "code\game\objects\items\tools\surgery.dm"
diff --git a/code/datums/trading/goods.dm b/code/datums/trading/goods.dm
index f81887d5b2c..55f92c536d4 100644
--- a/code/datums/trading/goods.dm
+++ b/code/datums/trading/goods.dm
@@ -96,7 +96,7 @@
/obj/item/cell/hyper = TRADER_THIS_TYPE,
/obj/item/module = TRADER_SUBTYPES_ONLY,
/obj/item/tracker_electronics = TRADER_THIS_TYPE,
- /obj/item/combotool/advtool = TRADER_THIS_TYPE,
+ /obj/item/device/multitool/advtool = TRADER_THIS_TYPE,
/obj/item/modular_computer/tablet/preset/custom_loadout/cheap = TRADER_THIS_TYPE,
/obj/item/modular_computer/laptop/preset/custom_loadout/cheap = TRADER_THIS_TYPE,
/obj/item/computer_hardware = TRADER_ALL,
diff --git a/code/game/objects/items/devices/multitool.dm b/code/game/objects/items/devices/multitool.dm
index fe602a375a1..286195b593a 100644
--- a/code/game/objects/items/devices/multitool.dm
+++ b/code/game/objects/items/devices/multitool.dm
@@ -75,4 +75,182 @@
user.AddTopicPrint(src)
MT.interact(src, user)
- return 1
+ return FALSE
+
+/obj/item/device/multitool/advtool
+ name = "Advanced Multitool"
+ desc = "This small, handheld device is made of durable, insulated plastic, has a rubber grip, and can be used as a multitool, screwdriver or wirecutters."
+ description_info = "Multitools are incredibly versatile and can be used on a wide variety of machines. The most common use for this is to trip a device's wires without having to cut them. Simply click on an object with exposed wiring to use it. This one can also be used as a screwdriver or wirecutters. There might be other uses, as well..."
+ description_fluff = "This device is not just a regular multitool - it is a masterpiece. You can deal with almost any machine using only this little thing."
+ description_antag = "This handy little tool can get you through doors, turn off power, and anything else you might need."
+ icon = 'icons/obj/device.dmi'
+ item_state = "multitool"
+ icon_state = "advtool"
+ force = 5.0
+ w_class = ITEM_SIZE_SMALL
+ throwforce = 5.0
+ throw_range = 15
+
+ matter = list(MATERIAL_STEEL = 500, MATERIAL_GLASS = 200)
+
+ origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 4)
+
+ var/tool_c
+ var/obj/item/device/multitool/advpart/multitool = null
+ var/obj/item/screwdriver/advpart/screwdriver = null
+ var/obj/item/wirecutters/advpart/wirecutters = null
+
+/obj/item/device/multitool/advtool/Initialize()
+ . = ..()
+
+ multitool = new /obj/item/device/multitool/advpart(src)
+ screwdriver = new /obj/item/screwdriver/advpart(src)
+ wirecutters = new /obj/item/wirecutters/advpart(src)
+ tool_c = "multitool"
+ tool_behaviour = TOOL_MULTITOOL
+
+/obj/item/device/multitool/advtool/on_update_icon()
+ underlays.Cut()
+ underlays += "adv_[tool_c]"
+
+/obj/item/device/multitool/advtool/proc/switchtools()
+ if(tool_c == "multitool")
+ if(screwdriver)
+ tool_c = "screwdriver"
+ tool_behaviour = TOOL_SCREWDRIVER
+ sharp = TRUE
+ else
+ tool_c = "wirecutters"
+ tool_behaviour = TOOL_WIRECUTTER
+ sharp = FALSE
+ else if(tool_c == "screwdriver")
+ if(wirecutters)
+ tool_c = "wirecutters"
+ tool_behaviour = TOOL_WIRECUTTER
+ sharp = FALSE
+ else
+ tool_c = "multitool"
+ tool_behaviour = TOOL_MULTITOOL
+ sharp = FALSE
+ else if(tool_c == "wirecutters")
+ tool_c = "multitool"
+ tool_behaviour = TOOL_MULTITOOL
+ sharp = FALSE
+ update_icon()
+
+/obj/item/device/multitool/advtool/attack_self(mob/user)
+ if(!screwdriver && !wirecutters)
+ to_chat(user, SPAN_NOTICE("[src] lacks tools."))
+ return
+
+ switchtools()
+ to_chat(user, SPAN_NOTICE("[src] mode: [tool_c]."))
+ update_icon()
+
+
+/obj/item/device/multitool/advtool/attack_hand(mob/user)
+ if(src != user.get_inactive_hand())
+ return ..()
+
+ if(!contents.len)
+ to_chat(user, SPAN_WARNING("There's nothing in \the [src] to remove!"))
+ return
+
+ var/choice = tgui_input_list(user, "What would you like to remove from the [src]?", "Instrument remove", contents)
+ if(!choice || !(choice in contents))
+ return
+
+ if(choice == multitool)
+ to_chat(user, SPAN_WARNING("You cannot remove the multitool itself."))
+ return
+
+ if(user.pick_or_drop(choice))
+ to_chat(user, SPAN_NOTICE("You remove \the [choice] from \the [src]."))
+ contents -= choice
+ if(choice == wirecutters)
+ wirecutters = null
+ else if(choice == screwdriver)
+ screwdriver = null
+ else
+ to_chat(user, SPAN_WARNING("Something went wrong, please try again."))
+
+ tool_c = "multitool"
+ tool_behaviour = TOOL_MULTITOOL
+ update_icon()
+
+/obj/item/device/multitool/advtool/attackby(obj/item/I, mob/user)
+ if(istype(I, /obj/item/screwdriver/advpart))
+ var/obj/item/screwdriver/advpart/SD = I
+ if(!screwdriver)
+ user.drop(SD, src)
+ screwdriver = SD
+ to_chat(user, SPAN_NOTICE("You insert \the [SD] into \the [src]."))
+ update_icon()
+ else
+ to_chat(user, SPAN_WARNING("There's already \the [screwdriver] in \the [src]!"))
+ else if(istype(I, /obj/item/wirecutters/advpart))
+ var/obj/item/screwdriver/advpart/WC = I
+ if(!wirecutters)
+ user.drop(WC, src)
+ wirecutters = WC
+ to_chat(user, SPAN_NOTICE("You insert \the [WC] into \the [src]."))
+ update_icon()
+ else
+ to_chat(user, SPAN_WARNING("There are already \the [wirecutters] in \the [src]!"))
+ else
+ return ..()
+
+
+/obj/item/device/multitool/advpart
+ name = "compact multitool"
+ desc = "You are not supposed to see this, use this or interact with this at all. However, if nobody knows..."
+ description_info = "Multitools are incredibly versatile and can be used on a wide variety of machines. The most common use for this is to trip a device's wires without having to cut them. Simply click on an object with exposed wiring to use it. There might be other uses, as well..."
+ description_fluff = "The common, every day multitool is descended from certain electrical tools from Earth's early space age. Though none too cheap, they are incredibly handy, and can be found in any self-respecting technician's toolbox."
+ description_antag = "This handy little tool can get you through doors, turn off power, and anything else you might need."
+ item_state = "multitool"
+ icon_state = "adv_multitool"
+ force = 3.5
+ w_class = ITEM_SIZE_TINY
+ throwforce = 3.5
+ throw_range = 15
+ origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 4)
+ matter = list(MATERIAL_STEEL = 25, MATERIAL_GLASS = 20)
+
+/obj/item/screwdriver/advpart
+ name = "compact screwdriver"
+ desc = "Just a regular screwdriver. However, this one is especially small."
+ description_info = "This tool is used to expose or safely hide away cabling. It can open and shut the maintenance panels on vending machines, airlocks, and much more. You can also use it, in combination with a crowbar, to install or remove windows."
+ description_fluff = "Screws have not changed significantly in centuries, and neither have the drivers used to install and remove them."
+ description_antag = "In the world of breaking and entering, tools like multitools and wirecutters are the bread; the screwdriver is the butter. In a pinch, try targetting someone's eyes and stabbing them with it - it'll really hurt!"
+ icon = 'icons/obj/device.dmi'
+ icon_state = "adv_screwdriver"
+ item_state = "screwdriver"
+ slot_flags = SLOT_BELT | SLOT_EARS
+ force = 5.0
+ origin_tech = list(TECH_ENGINEERING = 4)
+ matter = list(MATERIAL_STEEL = 45)
+ lock_picking_level = 6
+
+/obj/item/screwdriver/advpart/Initialize()
+ . = ..()
+ icon_state = "adv_screwdriver"
+ item_state = "screwdriver"
+
+/obj/item/wirecutters/advpart
+ name = "compact wirecutters"
+ desc = "A special pair of pliers with cutting edges. Various brackets and manipulators built into the handle allow it to repair severed wiring. This pair has some insulation."
+ description_info = "This tool will cut wiring anywhere you see it - make sure to wear insulated gloves! When used on more complicated machines or airlocks, it can not only cut cables, but repair them, as well."
+ description_fluff = "With modern alloys, today's wirecutters can snap through cables of astonishing thickness."
+ description_antag = "These cutters can be used to cripple the power anywhere on the ship. All it takes is some creativity, and being in the right place at the right time."
+ icon = 'icons/obj/device.dmi'
+ item_state = "cutters"
+ icon_state = "adv_wirecutters"
+ slot_flags = SLOT_BELT | SLOT_EARS
+ w_class = ITEM_SIZE_TINY
+ origin_tech = list(TECH_ENGINEERING = 4)
+ matter = list(MATERIAL_STEEL = 80)
+
+/obj/item/wirecutters/advpart/Initialize()
+ . = ..()
+ icon_state = "adv_wirecutters"
+ item_state = "cutters"
diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm
index 5be12a520f3..f320a1da7c5 100644
--- a/code/game/objects/items/storage/belt.dm
+++ b/code/game/objects/items/storage/belt.dm
@@ -72,7 +72,7 @@
/obj/item/taperoll,
/obj/item/extinguisher/mini,
/obj/item/marshalling_wand,
- /obj/item/combotool/advtool,
+ /obj/item/device/multitool/advtool,
/obj/item/device/geiger,
/obj/item/device/lightreplacer,
/obj/item/device/robotanalyzer
diff --git a/code/game/objects/items/tools/combo.dm b/code/game/objects/items/tools/combo.dm
deleted file mode 100644
index 7e053919249..00000000000
--- a/code/game/objects/items/tools/combo.dm
+++ /dev/null
@@ -1,204 +0,0 @@
-
-
-// Combined tools.
-// Basically, these allow you to store various tools inside them, switch between these tools and use them directly.
-// TODO list: surgery multitool for borgs, swiss knives, detective's advanced sampler (fingerprints, fiber, replaceable swab vials), modular hypospray, modular RCP ~~Toby
-/obj/item/combotool
- name = "generic combined tool"
- desc = "A swiss knife?"
- icon = 'icons/obj/device.dmi'
- item_state = "device"
- icon_state = "combotool"
- mod_weight = 0.5
- mod_reach = 0.5
- mod_handy = 0.5
-
- var/tool_c = null
-
-/obj/item/combotool/proc/switchtools()
- return
-
-/obj/item/combotool/attack_self(mob/user)
- switchtools()
- to_chat(user, "[src] mode: [tool_c].")
- update_icon()
- return
-
-/obj/item/combotool/on_update_icon()
- underlays.Cut()
- underlays += "adv_[tool_c]"
- ..()
-
-
-/obj/item/combotool/advtool
- name = "Advanced Multitool"
- desc = "This small, handheld device is made of durable, insulated plastic, has a rubber grip, and can be used as a multitool, screwdriver or wirecutters."
- description_info = "Multitools are incredibly versatile and can be used on a wide variety of machines. The most common use for this is to trip a device's wires without having to cut them. Simply click on an object with exposed wiring to use it. This one can also be used as a screwdriver or wirecutters. There might be other uses, as well..."
- description_fluff = "This device is not just a regular multitool - it is a masterpiece. You can deal with almost any machine using only this little thing."
- description_antag = "This handy little tool can get you through doors, turn off power, and anything else you might need."
- icon = 'icons/obj/device.dmi'
- item_state = "multitool"
- icon_state = "advtool"
- force = 5.0
- w_class = ITEM_SIZE_SMALL
- throwforce = 5.0
- throw_range = 15
-
- matter = list(MATERIAL_STEEL = 500, MATERIAL_GLASS = 200)
-
- origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 4)
-
- var/obj/item/device/multitool/advpart/multitool = null
- var/obj/item/screwdriver/advpart/screwdriver = null
- var/obj/item/wirecutters/advpart/wirecutters = null
-
-
-/obj/item/combotool/advtool/New()
- ..()
- multitool = new /obj/item/device/multitool/advpart(src)
- screwdriver = new /obj/item/screwdriver/advpart(src)
- wirecutters = new /obj/item/wirecutters/advpart(src)
- tool_c = "multitool"
- tool_behaviour = TOOL_MULTITOOL
-
-/obj/item/combotool/advtool/switchtools()
- if(tool_c == "multitool")
- if(screwdriver)
- tool_c = "screwdriver"
- tool_behaviour = TOOL_SCREWDRIVER
- sharp = 1
- else
- tool_c = "wirecutters"
- tool_behaviour = TOOL_WIRECUTTER
- sharp = 0
- else if(tool_c == "screwdriver")
- if(wirecutters)
- tool_c = "wirecutters"
- tool_behaviour = TOOL_WIRECUTTER
- sharp = 0
- else
- tool_c = "multitool"
- tool_behaviour = TOOL_MULTITOOL
- sharp = 0
- else if(tool_c == "wirecutters")
- tool_c = "multitool"
- tool_behaviour = TOOL_MULTITOOL
- sharp = 0
- update_icon()
- return
-
-/obj/item/combotool/advtool/attack_self(mob/user)
- if(!screwdriver && !wirecutters)
- to_chat(user, "[src] lacks tools.")
- return
- ..()
-
-/obj/item/combotool/advtool/attack_hand(mob/user)
- if(src != user.get_inactive_hand())
- return ..()
-
- if(!src.contents.len)
- to_chat(user, "There's nothing in \the [src] to remove!")
- return
-
- var/choice = input(user, "What would you like to remove from the [src]?") as null|anything in src.contents
- if(!choice || !(choice in src.contents))
- return
-
- if(choice == multitool)
- to_chat(user, "You cannot remove the multitool itself.")
- return
-
- if(user.pick_or_drop(choice))
- to_chat(user, "You remove \the [choice] from \the [src].")
- src.contents -= choice
- if(choice == wirecutters)
- wirecutters = null
- else if(choice == screwdriver)
- screwdriver = null
- else
- to_chat(user, "Something went wrong, please try again.")
-
- tool_c = "multitool"
- tool_behaviour = TOOL_MULTITOOL
- update_icon()
- return
-
-/obj/item/combotool/advtool/attackby(obj/item/I, mob/user)
- if(istype(I, /obj/item/screwdriver/advpart))
- var/obj/item/screwdriver/advpart/SD = I
- if(!screwdriver)
- contents += SD
- user.drop(SD, src)
- screwdriver = SD
- to_chat(user, "You insert \the [SD] into \the [src].")
- update_icon()
- else
- to_chat(user, "There's already \the [screwdriver] in \the [src]!")
- else if(istype(I, /obj/item/wirecutters/advpart))
- var/obj/item/screwdriver/advpart/WC = I
- if(!wirecutters)
- contents += WC
- user.drop(WC, src)
- wirecutters = WC
- to_chat(user, "You insert \the [WC] into \the [src].")
- update_icon()
- else
- to_chat(user, "There are already \the [wirecutters] in \the [src]!")
- else
- return ..()
-
-
-/obj/item/device/multitool/advpart
- name = "compact multitool"
- desc = "You are not supposed to see this, use this or interact with this at all. However, if nobody knows..."
- description_info = "Multitools are incredibly versatile and can be used on a wide variety of machines. The most common use for this is to trip a device's wires without having to cut them. Simply click on an object with exposed wiring to use it. There might be other uses, as well..."
- description_fluff = "The common, every day multitool is descended from certain electrical tools from Earth's early space age. Though none too cheap, they are incredibly handy, and can be found in any self-respecting technician's toolbox."
- description_antag = "This handy little tool can get you through doors, turn off power, and anything else you might need."
- item_state = "multitool"
- icon_state = "adv_multitool"
- force = 3.5
- w_class = ITEM_SIZE_TINY
- throwforce = 3.5
- throw_range = 15
- origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 4)
- matter = list(MATERIAL_STEEL = 25, MATERIAL_GLASS = 20)
-
-/obj/item/screwdriver/advpart
- name = "compact screwdriver"
- desc = "Just a regular screwdriver. However, this one is especially small."
- description_info = "This tool is used to expose or safely hide away cabling. It can open and shut the maintenance panels on vending machines, airlocks, and much more. You can also use it, in combination with a crowbar, to install or remove windows."
- description_fluff = "Screws have not changed significantly in centuries, and neither have the drivers used to install and remove them."
- description_antag = "In the world of breaking and entering, tools like multitools and wirecutters are the bread; the screwdriver is the butter. In a pinch, try targetting someone's eyes and stabbing them with it - it'll really hurt!"
- icon = 'icons/obj/device.dmi'
- icon_state = "adv_screwdriver"
- item_state = "screwdriver"
- slot_flags = SLOT_BELT | SLOT_EARS
- force = 5.0
- origin_tech = list(TECH_ENGINEERING = 4)
- matter = list(MATERIAL_STEEL = 45)
- lock_picking_level = 6
-
-/obj/item/screwdriver/advpart/Initialize()
- . = ..()
- icon_state = "adv_screwdriver"
- item_state = "screwdriver"
-
-/obj/item/wirecutters/advpart
- name = "compact wirecutters"
- desc = "A special pair of pliers with cutting edges. Various brackets and manipulators built into the handle allow it to repair severed wiring. This pair has some insulation."
- description_info = "This tool will cut wiring anywhere you see it - make sure to wear insulated gloves! When used on more complicated machines or airlocks, it can not only cut cables, but repair them, as well."
- description_fluff = "With modern alloys, today's wirecutters can snap through cables of astonishing thickness."
- description_antag = "These cutters can be used to cripple the power anywhere on the ship. All it takes is some creativity, and being in the right place at the right time."
- icon = 'icons/obj/device.dmi'
- item_state = "cutters"
- icon_state = "adv_wirecutters"
- slot_flags = SLOT_BELT | SLOT_EARS
- w_class = ITEM_SIZE_TINY
- origin_tech = list(TECH_ENGINEERING = 4)
- matter = list(MATERIAL_STEEL = 80)
-
-/obj/item/wirecutters/advpart/Initialize()
- . = ..()
- icon_state = "adv_wirecutters"
- item_state = "cutters"
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm
index 75d9be90bae..51e1aff2d2d 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm
@@ -17,7 +17,7 @@
/obj/item/cartridge/ce,
/obj/item/device/radio/headset/heads/ce,
/obj/item/storage/toolbox/mechanical,
- /obj/item/combotool/advtool,
+ /obj/item/device/multitool/advtool,
/obj/item/device/flash,
/obj/item/taperoll/engineering,
/obj/item/crowbar/brace_jack
diff --git a/code/modules/Z_item_worth/worths_list.dm b/code/modules/Z_item_worth/worths_list.dm
index fd731061c35..572b359e676 100644
--- a/code/modules/Z_item_worth/worths_list.dm
+++ b/code/modules/Z_item_worth/worths_list.dm
@@ -249,7 +249,7 @@ var/list/worths = list(
/obj/item/rsf = 600,
/obj/item/extinguisher/mini = 20,
/obj/item/extinguisher = 40,
- /obj/item/combotool/advtool = 350,
+ /obj/item/device/multitool/advtool = 350,
/obj/item/beartrap = 35,
/obj/item/nullrod = 60,
/obj/item/backwear/reagent/welding = 450,
diff --git a/maps/eclipse/eclipse-1.dmm b/maps/eclipse/eclipse-1.dmm
index eebdef6c68d..915da390cf0 100644
--- a/maps/eclipse/eclipse-1.dmm
+++ b/maps/eclipse/eclipse-1.dmm
@@ -5346,7 +5346,7 @@
"cfB" = (/turf/space,/turf/simulated/shuttle/wall/corner/smoothwhite/nw,/area/shuttle/escape_pod5/station)
"cfC" = (/turf/space,/turf/simulated/shuttle/wall/corner/smoothwhite/ne,/area/shuttle/escape_pod5/station)
"cfD" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/light/small{dir = 1},/obj/structure/table/steel,/obj/machinery/cell_charger,/obj/item/device/t_scanner,/obj/structure/sign/poster{layer = 3.6; pixel_y = 32; name = "poster north"},/turf/simulated/floor/plating,/area/eclipse/engineering/misc/advanced_technical_storage)
-"cfE" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/table/steel,/obj/item/device/multitool,/obj/item/device/multitool,/obj/item/combotool/advtool,/turf/simulated/floor/plating,/area/eclipse/engineering/misc/advanced_technical_storage)
+"cfE" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/table/steel,/obj/item/device/multitool,/obj/item/device/multitool,/obj/item/device/multitool/advtool,/turf/simulated/floor/plating,/area/eclipse/engineering/misc/advanced_technical_storage)
"cfF" = (/turf/simulated/floor/plating/airless,/area/space)
"cfG" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/structure/table/steel,/obj/item/aicard,/obj/item/device/flash,/obj/item/device/flash,/turf/simulated/floor/plating,/area/eclipse/engineering/misc/advanced_technical_storage)
"cfH" = (/obj/machinery/door/blast/regular/open{density = 0; id = "SupermatterPort"; name = "Reactor Blast Door"},/obj/structure/window_frame/reinforced/thermal,/turf/simulated/floor/plating,/area/eclipse/engineering/tech/supermatter_engine)