diff --git a/aurorastation.dme b/aurorastation.dme
index 9ca8ee4cff0..ea2091bdd00 100644
--- a/aurorastation.dme
+++ b/aurorastation.dme
@@ -1187,7 +1187,6 @@
#include "code\game\objects\items\devices\spy_bug.dm"
#include "code\game\objects\items\devices\suit_cooling.dm"
#include "code\game\objects\items\devices\t_scanner.dm"
-#include "code\game\objects\items\devices\tagger.dm"
#include "code\game\objects\items\devices\taperecorder.dm"
#include "code\game\objects\items\devices\traitordevices.dm"
#include "code\game\objects\items\devices\transfer_valve.dm"
@@ -3508,7 +3507,6 @@
#include "code\modules\research\designs\protolathe\stock_parts_designs.dm"
#include "code\modules\research\designs\protolathe\tool_designs.dm"
#include "code\modules\research\designs\protolathe\weapon_designs.dm"
-#include "code\modules\research\xenoarchaeology\chemistry.dm"
#include "code\modules\research\xenoarchaeology\geosample.dm"
#include "code\modules\research\xenoarchaeology\manuals.dm"
#include "code\modules\research\xenoarchaeology\misc.dm"
diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm
index 5a8e2ab73a1..47b6ac693d6 100644
--- a/code/defines/obj/weapon.dm
+++ b/code/defines/obj/weapon.dm
@@ -363,6 +363,8 @@
desc = "Used to communicate, it appears."
icon = 'icons/obj/radio.dmi'
icon_state = "radio"
+ item_state = "radio"
+ contained_sprite = TRUE
var/temp = null
var/uses = 4.0
var/selfdestruct = 0.0
@@ -370,7 +372,6 @@
var/obj/item/device/radio/origradio = null
obj_flags = OBJ_FLAG_CONDUCTABLE
slot_flags = SLOT_BELT
- item_state = "radio"
throwforce = 5
w_class = WEIGHT_CLASS_SMALL
throw_speed = 4
@@ -460,10 +461,10 @@
/obj/item/device/camera_bug
name = "camera bug"
- icon = 'icons/obj/device.dmi'
+ icon = 'icons/obj/item/device/flash.dmi'
icon_state = "flash"
+ item_state = "flash"
w_class = WEIGHT_CLASS_TINY
- item_state = "electronic"
throw_speed = 4
throw_range = 20
@@ -521,6 +522,7 @@
icon_state = "RPED"
item_state = "RPED"
icon = 'icons/obj/storage/misc.dmi'
+ contained_sprite = TRUE
w_class = WEIGHT_CLASS_HUGE
can_hold = list(/obj/item/stock_parts,/obj/item/reagent_containers/glass/beaker)
storage_slots = 50
diff --git a/code/game/gamemodes/antagspawner.dm b/code/game/gamemodes/antagspawner.dm
index 02397cd776c..f7f69c94173 100644
--- a/code/game/gamemodes/antagspawner.dm
+++ b/code/game/gamemodes/antagspawner.dm
@@ -7,6 +7,8 @@
return 1
/obj/item/antag_spawner
+ icon = 'icons/obj/item/hand_tele.dmi'
+ icon_state = "hand_tele"
throw_speed = 1
throw_range = 5
w_class = WEIGHT_CLASS_TINY
@@ -25,6 +27,8 @@
/obj/item/antag_spawner/proc/request_player(var/mob/user)
uses--
+ if(uses <= 0)
+ icon_state = "hand_tele_recharging"
var/mob/M = new mob_type(get_turf(user))
M.faction = user.faction
@@ -36,8 +40,6 @@
/obj/item/antag_spawner/combat_robot
name = "combat robot teleporter"
desc = "A single-use teleporter used to deploy a Combat Robot on the field. Due to budget restrictions, it is only possible to deploy a single robot."
- icon = 'icons/obj/device.dmi'
- icon_state = "locator"
mob_type = /mob/living/silicon/robot/combat
ghost_role_id = "combatrobot"
@@ -53,8 +55,6 @@
/obj/item/antag_spawner/technomancer_apprentice
name = "apprentice teleporter"
desc = "A teleportation device, which will bring a less potent manipulator of space to you."
- icon = 'icons/obj/device.dmi'
- icon_state = "locator"
mob_type = /mob/living/carbon/human
ghost_role_id = "technoapprentice"
var/outfit_type = /obj/outfit/admin/techomancer/apprentice
diff --git a/code/game/gamemodes/nuclear/pinpointer.dm b/code/game/gamemodes/nuclear/pinpointer.dm
index c4722312427..5a34d30044d 100644
--- a/code/game/gamemodes/nuclear/pinpointer.dm
+++ b/code/game/gamemodes/nuclear/pinpointer.dm
@@ -1,11 +1,12 @@
/obj/item/pinpointer
name = "pinpointer"
- icon = 'icons/obj/device.dmi'
+ icon = 'icons/obj/item/pinpointer.dmi'
icon_state = "pinoff"
+ item_state = "electronic"
+ contained_sprite = TRUE
obj_flags = OBJ_FLAG_CONDUCTABLE
slot_flags = SLOT_BELT
w_class = WEIGHT_CLASS_SMALL
- item_state = "electronic"
throw_speed = 4
throw_range = 20
matter = list(DEFAULT_WALL_MATERIAL = 500)
@@ -16,12 +17,11 @@
if(!active)
active = 1
START_PROCESSING(SSfast_process, src)
- to_chat(usr, SPAN_NOTICE("You activate the pinpointer"))
+ to_chat(usr, SPAN_NOTICE("You activate the pinpointer."))
else
active = 0
STOP_PROCESSING(SSfast_process, src)
- icon_state = "pinoff"
- to_chat(usr, "You deactivate the pinpointer")
+ to_chat(usr, SPAN_NOTICE("You deactivate the pinpointer."))
/obj/item/pinpointer/process()
if (active)
@@ -30,22 +30,23 @@
STOP_PROCESSING(SSfast_process, src)
/obj/item/pinpointer/proc/workdisk()
+ ClearOverlays()
if(!active) return
if(!the_disk)
the_disk = locate()
if(!the_disk)
- icon_state = "pinonnull"
+ AddOverlays("pinonnull")
return
set_dir(get_dir(src,the_disk))
switch(get_dist(src,the_disk))
if(0)
- icon_state = "pinondirect"
+ AddOverlays("pinondirect")
if(1 to 8)
- icon_state = "pinonclose"
+ AddOverlays("pinonclose")
if(9 to 16)
- icon_state = "pinonmedium"
+ AddOverlays("pinonmedium")
if(16 to INFINITY)
- icon_state = "pinonfar"
+ AddOverlays("pinonfar")
return TRUE
/obj/item/pinpointer/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
@@ -60,8 +61,7 @@
return ..()
/obj/item/pinpointer/advpinpointer
- name = "Advanced Pinpointer"
- icon = 'icons/obj/device.dmi'
+ name = "advanced pinpointer"
desc = "A larger version of the normal pinpointer, this unit features a helpful quantum entanglement detection system to locate various objects that do not broadcast a locator signal."
var/mode = 0 // Mode 0 locates disk, mode 1 locates coordinates.
var/turf/location = null
@@ -94,26 +94,26 @@
workobj()
/obj/item/pinpointer/advpinpointer/proc/worklocation()
+ ClearOverlays()
if(!active)
STOP_PROCESSING(SSfast_process, src)
return
if(!location)
- icon_state = "pinonnull"
+ AddOverlays("pinonnull")
return
set_dir(get_dir(src,location))
set_z_overlays(location)
switch(get_dist(src,location))
if(0)
- icon_state = "pinondirect"
+ AddOverlays("pinondirect")
if(1 to 8)
- icon_state = "pinonclose"
+ AddOverlays("pinonclose")
if(9 to 16)
- icon_state = "pinonmedium"
+ AddOverlays("pinonmedium")
if(16 to INFINITY)
- icon_state = "pinonfar"
+ AddOverlays("pinonfar")
/obj/item/pinpointer/advpinpointer/proc/set_z_overlays(var/atom/target)
- ClearOverlays()
if(AreConnectedZLevels(src.loc.z, target.z))
if(src.loc.z > target.z)
AddOverlays("pinzdown")
@@ -130,23 +130,24 @@
set_z_overlays(the_disk)
/obj/item/pinpointer/advpinpointer/proc/workobj()
+ ClearOverlays()
if(!active)
STOP_PROCESSING(SSfast_process, src)
return
if(!target)
- icon_state = "pinonnull"
+ AddOverlays("pinonnull")
return
set_dir(get_dir(src,target))
set_z_overlays(target)
switch(get_dist(src,target))
if(0)
- icon_state = "pinondirect"
+ AddOverlays("pinondirect")
if(1 to 8)
- icon_state = "pinonclose"
+ AddOverlays("pinonclose")
if(9 to 16)
- icon_state = "pinonmedium"
+ AddOverlays("pinonmedium")
if(16 to INFINITY)
- icon_state = "pinonfar"
+ AddOverlays("pinonfar")
/obj/item/pinpointer/advpinpointer/verb/toggle_mode()
set category = "Object"
@@ -154,7 +155,6 @@
set src in view(1)
active = 0
- icon_state = "pinoff"
target = null
location = null
@@ -232,7 +232,6 @@
else
active = 0
STOP_PROCESSING(SSfast_process, src)
- icon_state = "pinoff"
to_chat(user, SPAN_NOTICE("You deactivate the pinpointer."))
/obj/item/pinpointer/nukeop/process()
@@ -242,6 +241,7 @@
worklocation()
/obj/item/pinpointer/nukeop/workdisk()
+ ClearOverlays()
if(!active) return
if(mode) //Check in case the mode changes while operating
worklocation()
@@ -255,7 +255,7 @@
if(!the_disk)
the_disk = locate()
if(!the_disk)
- icon_state = "pinonnull"
+ AddOverlays("pinonnull")
return
// if(loc.z != the_disk.z) //If you are on a different z-level from the disk
// icon_state = "pinonnull"
@@ -263,13 +263,13 @@
set_dir(get_dir(src, the_disk))
switch(get_dist(src, the_disk))
if(0)
- icon_state = "pinondirect"
+ AddOverlays("pinondirect")
if(1 to 8)
- icon_state = "pinonclose"
+ AddOverlays("pinonclose")
if(9 to 16)
- icon_state = "pinonmedium"
+ AddOverlays("pinonmedium")
if(16 to INFINITY)
- icon_state = "pinonfar"
+ AddOverlays("pinonfar")
/obj/item/pinpointer/nukeop/proc/worklocation()
if(!active) return
@@ -285,18 +285,18 @@
if(!home)
home = locate()
if(!home)
- icon_state = "pinonnull"
+ AddOverlays("pinonnull")
return
if(loc.z != home.z) //If you are on a different z-level from the shuttle
- icon_state = "pinonnull"
+ AddOverlays("pinonnull")
else
set_dir(get_dir(src, home))
switch(get_dist(src, home))
if(0)
- icon_state = "pinondirect"
+ AddOverlays("pinondirect")
if(1 to 8)
- icon_state = "pinonclose"
+ AddOverlays("pinonclose")
if(9 to 16)
- icon_state = "pinonmedium"
+ AddOverlays("pinonmedium")
if(16 to INFINITY)
- icon_state = "pinonfar"
+ AddOverlays("pinonfar")
diff --git a/code/game/gamemodes/technomancer/devices/disposable_teleporter.dm b/code/game/gamemodes/technomancer/devices/disposable_teleporter.dm
index 2d1406f9c94..5f317c73205 100644
--- a/code/game/gamemodes/technomancer/devices/disposable_teleporter.dm
+++ b/code/game/gamemodes/technomancer/devices/disposable_teleporter.dm
@@ -8,8 +8,10 @@
/obj/item/disposable_teleporter
name = "disposable teleporter"
desc = "A very compact personal teleportation device. It's very precise and safe, however it can only be used a few times."
- icon = 'icons/obj/device.dmi'
+ icon = 'icons/obj/item/hand_tele.dmi'
icon_state = "hand_tele"
+ item_state = "electronic"
+ contained_sprite = TRUE
var/uses = 3.0
w_class = WEIGHT_CLASS_TINY
item_state = "paper"
diff --git a/code/game/machinery/ai_slipper.dm b/code/game/machinery/ai_slipper.dm
index 5f0c57b4e22..eb3fcf56524 100644
--- a/code/game/machinery/ai_slipper.dm
+++ b/code/game/machinery/ai_slipper.dm
@@ -1,6 +1,6 @@
/obj/machinery/ai_slipper
name = "\improper AI Liquid Dispenser"
- icon = 'icons/obj/device.dmi'
+ icon = 'icons/obj/machinery/ai_slipper.dmi'
icon_state = "motion0"
anchored = 1.0
idle_power_usage = 10
diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm
index 9eced697c77..91630b2c50a 100644
--- a/code/game/machinery/alarm.dm
+++ b/code/game/machinery/alarm.dm
@@ -1040,7 +1040,7 @@ Just a object used in constructing air alarms
*/
/obj/item/airalarm_electronics
name = "air alarm electronics"
- icon = 'icons/obj/device.dmi'
+ icon = 'icons/obj/module.dmi'
icon_state = "door_electronics"
desc = "Looks like a circuit. Probably is."
w_class = WEIGHT_CLASS_SMALL
diff --git a/code/game/machinery/doors/airlock_electronics.dm b/code/game/machinery/doors/airlock_electronics.dm
index e2424ea039b..84bc07a2cb4 100644
--- a/code/game/machinery/doors/airlock_electronics.dm
+++ b/code/game/machinery/doors/airlock_electronics.dm
@@ -1,6 +1,6 @@
/obj/item/airlock_electronics
name = "airlock electronics"
- icon = 'icons/obj/device.dmi'
+ icon = 'icons/obj/module.dmi'
icon_state = "door_electronics"
w_class = WEIGHT_CLASS_TINY
diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm
index d5312fe2f79..b30d3f0e486 100644
--- a/code/game/machinery/firealarm.dm
+++ b/code/game/machinery/firealarm.dm
@@ -301,7 +301,7 @@ Just a object used in constructing fire alarms
*/
/obj/item/firealarm_electronics
name = "fire alarm electronics"
- icon = 'icons/obj/device.dmi'
+ icon = 'icons/obj/module.dmi'
icon_state = "door_electronics"
desc = "A circuit. It has a label on it, it says \"Can handle heat levels up to 40 degrees celsius!\""
w_class = WEIGHT_CLASS_SMALL
diff --git a/code/game/machinery/vending_items.dm b/code/game/machinery/vending_items.dm
index de28c78bc6e..6ff2317d372 100644
--- a/code/game/machinery/vending_items.dm
+++ b/code/game/machinery/vending_items.dm
@@ -1,16 +1,15 @@
/obj/item/device/vending_refill
name = "resupply canister"
- var/vend_id = "generic"
-
+ desc = "A vending machine restock cart."
icon = 'icons/obj/assemblies/electronic_setups.dmi'
icon_state = "setup_medium-open"
item_state = "restock_unit"
- desc = "A vending machine restock cart."
force = 16
throwforce = 10
throw_speed = 1
throw_range = 7
w_class = WEIGHT_CLASS_NORMAL
+ var/vend_id = "generic"
var/charges = 0
/obj/item/device/vending_refill/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index 513c4050056..18047f1e08f 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -288,13 +288,9 @@
AddOverlays(overlay_image(icon, "[icon_state]_acc", accent_color, accent_flags))
/obj/item/device
- icon = 'icons/obj/device.dmi'
- item_icons = list(
- slot_l_hand_str = 'icons/mob/items/device/lefthand_device.dmi',
- slot_r_hand_str = 'icons/mob/items/device/righthand_device.dmi',
- )
pickup_sound = 'sound/items/pickup/device.ogg'
drop_sound = 'sound/items/drop/device.ogg'
+ contained_sprite = TRUE
/atom/proc/get_cell()
return DEVICE_NO_CELL
diff --git a/code/game/objects/items/blueprints.dm b/code/game/objects/items/blueprints.dm
index fb5297e2161..44e40517b37 100644
--- a/code/game/objects/items/blueprints.dm
+++ b/code/game/objects/items/blueprints.dm
@@ -1,7 +1,7 @@
/obj/item/blueprints
name = "blueprints"
desc = "Blueprints of the station. There is a \"Classified\" stamp and several coffee stains on it."
- icon = 'icons/obj/item/tools/blueprints.dmi'
+ icon = 'icons/obj/item/blueprints.dmi'
icon_state = "blueprints"
attack_verb = list("attacked", "bapped", "hit")
w_class = WEIGHT_CLASS_SMALL
diff --git a/code/game/objects/items/devices/augment_implanter.dm b/code/game/objects/items/devices/augment_implanter.dm
index 5c9ddd49f53..79e28caddc6 100644
--- a/code/game/objects/items/devices/augment_implanter.dm
+++ b/code/game/objects/items/devices/augment_implanter.dm
@@ -6,7 +6,6 @@
icon = 'icons/obj/guns/decloner.dmi'
icon_state = "decloner"
item_state = "decloner"
- contained_sprite = TRUE
var/obj/item/organ/augment_type
var/new_augment
diff --git a/code/game/objects/items/devices/binoculars.dm b/code/game/objects/items/devices/binoculars.dm
index c543ce85dc7..ccb6960e6f0 100644
--- a/code/game/objects/items/devices/binoculars.dm
+++ b/code/game/objects/items/devices/binoculars.dm
@@ -2,8 +2,10 @@
name = "binoculars"
desc = "A pair of binoculars."
+ icon = 'icons/obj/item/device/binoculars.dmi'
icon_state = "binoculars"
-
+ item_state = "binoculars"
+ action_button_name = "Toggle Binoculars"
obj_flags = OBJ_FLAG_CONDUCTABLE
force = 11
w_class = WEIGHT_CLASS_SMALL
diff --git a/code/game/objects/items/devices/chameleonproj.dm b/code/game/objects/items/devices/chameleonproj.dm
index d495075798e..a80eee81b61 100644
--- a/code/game/objects/items/devices/chameleonproj.dm
+++ b/code/game/objects/items/devices/chameleonproj.dm
@@ -2,10 +2,11 @@
name = "chameleon projector"
desc = "A strange device."
desc_antag = "This device can let you disguise as common objects. Click on an object with this in your active hand to scan it, then activate it to use it in your hand."
+ icon = 'icons/obj/item/device/chameleon.dmi'
icon_state = "shield0"
+ item_state = "electronic"
obj_flags = OBJ_FLAG_CONDUCTABLE
slot_flags = SLOT_BELT
- item_state = "electronic"
throwforce = 5
throw_speed = 1
throw_range = 5
diff --git a/code/game/objects/items/devices/clothes_dyer.dm b/code/game/objects/items/devices/clothes_dyer.dm
index e178f77c7be..81a8f5c9128 100644
--- a/code/game/objects/items/devices/clothes_dyer.dm
+++ b/code/game/objects/items/devices/clothes_dyer.dm
@@ -6,10 +6,9 @@
name = "clothes dyer"
desc = "This is a device designed to rapidly dye clothes to new colors. Naysayers say it isn't great for the fabric, but what do they know?"
desc_info = "Select the desired color by using the item on yourself, and alternate between the primary and secondary colour of the item by alt-clicking the item. This only works on clothing items that are recolorable."
- icon = 'icons/obj/item/tools/paint_sprayer.dmi'
- icon_state = "floor_painter"
- item_state = "floor_painter"
- contained_sprite = TRUE
+ icon = 'icons/obj/item/device/paint_sprayer.dmi'
+ icon_state = "paint_sprayer"
+ item_state = "paint_sprayer"
/// Controls whether the dyer changes the primary or accent color of the clothes item.
var/selected_mode = BASE_COLOR
/// Contains the colors the dyer is set to for each possible mode.
diff --git a/code/game/objects/items/devices/cosmetic_surgery_kit.dm b/code/game/objects/items/devices/cosmetic_surgery_kit.dm
index cdb5eaec326..54a9633a63c 100644
--- a/code/game/objects/items/devices/cosmetic_surgery_kit.dm
+++ b/code/game/objects/items/devices/cosmetic_surgery_kit.dm
@@ -1,7 +1,7 @@
/obj/item/device/cosmetic_surgery_kit
name = "cosmetic surgery auto-kit"
- icon = 'icons/obj/device.dmi'
- icon_state = "depthscanner"
+ icon = 'icons/obj/item/autoimplanter.dmi'
+ icon_state = "autoimplanter"
item_state = "electronic"
slot_flags = SLOT_BELT
throwforce = 5
diff --git a/code/game/objects/items/devices/dociler.dm b/code/game/objects/items/devices/dociler.dm
index bc4014d0f76..829a5025585 100644
--- a/code/game/objects/items/devices/dociler.dm
+++ b/code/game/objects/items/devices/dociler.dm
@@ -3,11 +3,9 @@
desc = "A complex single use recharging injector that spreads a complex neurological serum that makes animals docile and friendly. Somewhat."
w_class = WEIGHT_CLASS_NORMAL
origin_tech = list(TECH_BIO = 5, TECH_MATERIAL = 2)
- // To-do track down where the hell this sprite went?
icon = 'icons/obj/guns/decloner.dmi'
icon_state = "decloner"
item_state = "decloner"
- contained_sprite = TRUE
force = 0
var/loaded = 1
var/mode = "completely"
@@ -59,11 +57,11 @@
L.name = name
loaded = 0
- icon_state = "animal_tagger0"
+ icon_state = "decloner0"
addtimer(CALLBACK(src, PROC_REF(do_recharge)), 5 MINUTES)
/obj/item/device/dociler/proc/do_recharge()
loaded = 1
- icon_state = "animal_tagger1"
+ icon_state = "decloner"
src.visible_message("\The [src] beeps, refilling itself.")
diff --git a/code/game/objects/items/devices/drop_targeter/_droptargeter.dm b/code/game/objects/items/devices/drop_targeter/_droptargeter.dm
index 58492417cb2..f3676d2d4f9 100644
--- a/code/game/objects/items/devices/drop_targeter/_droptargeter.dm
+++ b/code/game/objects/items/devices/drop_targeter/_droptargeter.dm
@@ -1,8 +1,8 @@
/obj/item/device/orbital_dropper
name = "laser targeting dropper"
desc = "A device used to paint a target, which will then promptly orbitally drop the requested items."
- icon = 'icons/obj/device.dmi'
- icon_state = "drillpointer"
+ icon = 'icons/obj/item/device/binoculars.dmi'
+ icon_state = "binoculars"
item_state = "binoculars"
slot_flags = SLOT_BELT
w_class = WEIGHT_CLASS_SMALL
@@ -59,7 +59,7 @@
add_fingerprint(user)
//laser pointer image
- icon_state = "drillpointer_on"
+ icon_state = "binoculars_high"
var/list/showto = list()
for(var/mob/M in viewers(targloc))
if(M.client)
@@ -91,7 +91,7 @@
addtimer(CALLBACK(src, PROC_REF(orbital_drop), targloc, user), 105)
flick_overlay(I, showto, 20) //2 seconds of the red dot appearing
- icon_state = "drillpointer"
+ icon_state = "binoculars"
/obj/item/device/orbital_dropper/proc/orbital_drop(var/turf/target, var/user)
if(!map)
diff --git a/code/game/objects/items/devices/flash.dm b/code/game/objects/items/devices/flash.dm
index a470d19664a..2a6c32b66ca 100644
--- a/code/game/objects/items/devices/flash.dm
+++ b/code/game/objects/items/devices/flash.dm
@@ -2,6 +2,7 @@
name = "flash"
desc = "A security device capable of producing a blinding, incapacitating flash at close ranges. Repeated use may result in a burnt-out bulb and/or excessive force investigations."
desc_info = "Click on someone adjacent to you to attempt to blind them. Use it in your hand with HARM intent, or on yourself, to blind everyone in a small radius (including yourself!)"
+ icon = 'icons/obj/item/device/flash.dmi'
icon_state = "flash"
item_state = "flash"
throwforce = 5
diff --git a/code/game/objects/items/devices/hearing_aid.dm b/code/game/objects/items/devices/hearing_aid.dm
index 7535a0a4dd3..f9079c82a9a 100644
--- a/code/game/objects/items/devices/hearing_aid.dm
+++ b/code/game/objects/items/devices/hearing_aid.dm
@@ -1,10 +1,9 @@
/obj/item/device/hearing_aid
name = "hearing aid"
desc = "A device that allows the naturally deaf to hear, to an extent."
- icon = 'icons/obj/hearing_aid.dmi'
+ icon = 'icons/obj/item/device/hearing_aid.dmi'
icon_state = "hearing_aid"
item_state = "hearing_aid"
- contained_sprite = TRUE
slot_flags = SLOT_EARS
w_class = WEIGHT_CLASS_SMALL
diff --git a/code/game/objects/items/devices/laserpointer.dm b/code/game/objects/items/devices/laserpointer.dm
index 9c8b4d64bc4..ed1a047249a 100644
--- a/code/game/objects/items/devices/laserpointer.dm
+++ b/code/game/objects/items/devices/laserpointer.dm
@@ -3,7 +3,7 @@
/obj/item/device/laser_pointer
name = "laser pointer"
desc = "Don't shine it in your eyes!"
- icon = 'icons/obj/device.dmi'
+ icon = 'icons/obj/item/device/laser_pointer.dmi'
icon_state = "pointer"
item_state = "pen"
var/pointer_icon_state
@@ -12,9 +12,6 @@
var/turf/pointer_loc
var/obj/item/stock_parts/micro_laser/diode //cant use the laser without it
-
-
-
/obj/item/device/laser_pointer/red
pointer_icon_state = "red_laser"
/obj/item/device/laser_pointer/green
diff --git a/code/game/objects/items/devices/lightmeter.dm b/code/game/objects/items/devices/lightmeter.dm
index 5d1a137c705..85d5f5f9e2a 100644
--- a/code/game/objects/items/devices/lightmeter.dm
+++ b/code/game/objects/items/devices/lightmeter.dm
@@ -3,9 +3,9 @@
/obj/item/device/light_meter
name = "light meter"
desc = "A simple device that measures ambient light levels."
- icon = 'icons/obj/device.dmi'
- icon_state = "locator"
-
+ icon = 'icons/obj/item/device/gps.dmi'
+ icon_state = "gps"
+ item_state = "radio"
// Copied from debugger.dm
obj_flags = OBJ_FLAG_CONDUCTABLE
force = 11
diff --git a/code/game/objects/items/devices/megaphone.dm b/code/game/objects/items/devices/megaphone.dm
index 47de699b276..0ff295acbd3 100644
--- a/code/game/objects/items/devices/megaphone.dm
+++ b/code/game/objects/items/devices/megaphone.dm
@@ -3,10 +3,9 @@
desc = "Pretend to be a director for a brief moment before someone tackles you to make you shut up."
desc_extended = "Annoy your colleagues! Scare interns! Impress no one!"
desc_info = "A device used to project your voice. Loudly."
- icon = 'icons/obj/item/tools/megaphone.dmi'
+ icon = 'icons/obj/item/device/megaphone.dmi'
icon_state = "megaphone"
item_state = "megaphone"
- contained_sprite = TRUE
w_class = WEIGHT_CLASS_SMALL
obj_flags = OBJ_FLAG_CONDUCTABLE
diff --git a/code/game/objects/items/devices/memorywiper.dm b/code/game/objects/items/devices/memorywiper.dm
index 8a6abd4431e..6a7896da13b 100644
--- a/code/game/objects/items/devices/memorywiper.dm
+++ b/code/game/objects/items/devices/memorywiper.dm
@@ -6,7 +6,6 @@
icon = 'icons/obj/memorywiper.dmi'
icon_state = "portable_memorywiper"
item_state = "portable_memorywiper"
- contained_sprite = TRUE
anchored = FALSE
drop_sound = 'sound/items/drop/backpack.ogg'
pickup_sound = 'sound/items/pickup/backpack.ogg'
diff --git a/code/game/objects/items/devices/modkit.dm b/code/game/objects/items/devices/modkit.dm
index ab78a040583..092e5aa95b2 100644
--- a/code/game/objects/items/devices/modkit.dm
+++ b/code/game/objects/items/devices/modkit.dm
@@ -6,7 +6,9 @@
/obj/item/device/modkit
name = "voidsuit modification kit"
desc = "A kit containing all the needed tools and parts to modify a voidsuit for another user."
+ icon = 'icons/obj/item/device/modkit.dmi'
icon_state = "modkit"
+ item_state = "restock_unit"
var/parts = MODKIT_FULL
var/target_species = BODYTYPE_HUMAN
var/is_multi_species = FALSE //can this modkit change things for multiple species?
@@ -105,8 +107,10 @@
/obj/item/voidsuit_modkit
name = "voidsuit kit"
- icon = 'icons/obj/device.dmi'
+ icon = 'icons/obj/item/device/modkit.dmi'
icon_state = "modkit"
+ item_state = "restock_unit"
+ contained_sprite = TRUE
desc = "A simple cardboard box containing the requisition forms, permits, and decal kits for a Himean voidsuit."
desc_info = "In order to convert a voidsuit simply click on voidsuit or helmet with this item\
The same process can be used to convert the voidsuit back into a regular voidsuit. Make sure not to have a helmet or tank in the suit\
@@ -235,8 +239,10 @@
/obj/item/voidsuit_modkit_multi //for converting between a large range of options instead of having 5000 subtypes
name = "voidsuit kit"
- icon = 'icons/obj/device.dmi'
+ icon = 'icons/obj/item/device/modkit.dmi'
icon_state = "modkit"
+ item_state = "restock_unit"
+ contained_sprite = TRUE
desc = "A simple cardboard box designed to modify a voidsuit to a selection of alternate options."
desc_info = "In order to convert a voidsuit simply click on voidsuit or helmet with this item\
The same process can be used to convert the voidsuit back into a regular voidsuit. Make sure not to have a helmet or tank in the suit\
diff --git a/code/game/objects/items/devices/multitool.dm b/code/game/objects/items/devices/multitool.dm
index 67d96706696..3d2d62e5921 100644
--- a/code/game/objects/items/devices/multitool.dm
+++ b/code/game/objects/items/devices/multitool.dm
@@ -7,11 +7,10 @@
name = "multitool"
desc = "This small, handheld device is made of durable, insulated plastic. It has a electrode jack, perfect for interfacing with numerous machines, as well as an in-built NT-SmartTrack! system."
desc_info = "You can use this on airlocks or APCs to try to hack them without cutting wires. You can also use it to wire circuits, and track APCs by using it in-hand."
- icon = 'icons/obj/item/tools/multitool.dmi'
+ icon = 'icons/obj/item/device/multitool.dmi'
icon_state = "multitool"
item_state = "multitool"
item_icons = null
- contained_sprite = TRUE
obj_flags = OBJ_FLAG_CONDUCTABLE
force = 11
w_class = WEIGHT_CLASS_SMALL
diff --git a/code/game/objects/items/devices/oxycandle.dm b/code/game/objects/items/devices/oxycandle.dm
index be344f1aec9..31082c805de 100644
--- a/code/game/objects/items/devices/oxycandle.dm
+++ b/code/game/objects/items/devices/oxycandle.dm
@@ -1,7 +1,7 @@
/obj/item/device/oxycandle
name = "oxygen candle"
desc = "A steel tube with the words 'OXYGEN - PULL CORD TO IGNITE' stamped on the side. A small label warns against using the device underwater."
- icon = 'icons/obj/device.dmi'
+ icon = 'icons/obj/item/device/oxycandle.dmi'
icon_state = "oxycandle"
item_state = "oxycandle"
w_class = WEIGHT_CLASS_SMALL // Should fit into internal's box or maybe pocket
diff --git a/code/game/objects/items/devices/paint_sprayer.dm b/code/game/objects/items/devices/paint_sprayer.dm
index dc99bd7aed2..ea4f6bc41ac 100644
--- a/code/game/objects/items/devices/paint_sprayer.dm
+++ b/code/game/objects/items/devices/paint_sprayer.dm
@@ -7,10 +7,9 @@
name = "paint gun"
desc = "A Hephaestus-made paint gun that uses microbes to replenish its paint storage. Very high-tech and fancy too!"
desc_info = "Use control-click on a coloured decal on a turf to copy its colour. You can also use shift-click on a turf with the paint gun in hand to clear all decals on it."
- icon = 'icons/obj/item/tools/paint_sprayer.dmi'
- icon_state = "floor_painter"
- item_state = "floor_painter"
- contained_sprite = TRUE
+ icon = 'icons/obj/item/device/paint_sprayer.dmi'
+ icon_state = "paint_sprayer"
+ item_state = "mister"
var/decal = "remove all decals"
var/paint_dir = "precise"
var/paint_colour = COLOR_WHITE
@@ -81,6 +80,10 @@
"bulkhead black" = COLOR_WALL_GUNMETAL
)
+/obj/item/device/paint_sprayer/update_icon()
+ ClearOverlays()
+ AddOverlays(overlay_image(icon, "paint_sprayer_color", paint_colour))
+
/obj/item/device/paint_sprayer/afterattack(var/atom/A, var/mob/user, proximity, params)
if(!proximity)
return
@@ -324,6 +327,7 @@
var/new_colour = input(usr, "Choose a colour.", "paintgun", paint_colour) as null|anything in preset_colors
if(new_colour && new_colour != paint_colour)
paint_colour = preset_colors[new_colour]
+ update_icon()
to_chat(usr, SPAN_NOTICE("You set \the [src] to paint with a new colour."))
/obj/item/device/paint_sprayer/verb/choose_decal()
diff --git a/code/game/objects/items/devices/personal_shield.dm b/code/game/objects/items/devices/personal_shield.dm
index c19565f4a69..710ae60af58 100644
--- a/code/game/objects/items/devices/personal_shield.dm
+++ b/code/game/objects/items/devices/personal_shield.dm
@@ -4,7 +4,6 @@
icon = 'icons/obj/personal_shield.dmi'
icon_state = "personal_shield"
item_state = "personal_shield"
- contained_sprite = TRUE
slot_flags = SLOT_BELT
w_class = WEIGHT_CLASS_NORMAL
action_button_name = "Toggle Shield"
diff --git a/code/game/objects/items/devices/pin_extractor.dm b/code/game/objects/items/devices/pin_extractor.dm
index ec1e2a3a8b6..6805b44c809 100644
--- a/code/game/objects/items/devices/pin_extractor.dm
+++ b/code/game/objects/items/devices/pin_extractor.dm
@@ -1,9 +1,9 @@
/obj/item/device/pin_extractor
name = "firing pin extractor"
desc = "A device that is capable of removing firing pin without damaging it."
- icon = 'icons/obj/device.dmi'
+ icon = 'icons/obj/item/device/pin_extractor.dmi'
icon_state = "pin_extractor"
- item_state = "pin_extractor"
+ item_state = "analyzer"
w_class = WEIGHT_CLASS_SMALL
obj_flags = OBJ_FLAG_CONDUCTABLE
action_button_name = "Toggle extractor"
diff --git a/code/game/objects/items/devices/pipe_painter.dm b/code/game/objects/items/devices/pipe_painter.dm
index b90dfa9dcae..f7163bf692a 100644
--- a/code/game/objects/items/devices/pipe_painter.dm
+++ b/code/game/objects/items/devices/pipe_painter.dm
@@ -1,9 +1,8 @@
/obj/item/device/pipe_painter
name = "pipe painter"
- icon = 'icons/obj/item/tools/pipe_painter.dmi'
+ icon = 'icons/obj/item/device/pipe_painter.dmi'
icon_state = "pipe_painter"
item_state = "pipe_painter"
- contained_sprite = TRUE
var/list/modes
var/mode
diff --git a/code/game/objects/items/devices/powersink.dm b/code/game/objects/items/devices/powersink.dm
index 6a93e451c33..31ef85630c4 100644
--- a/code/game/objects/items/devices/powersink.dm
+++ b/code/game/objects/items/devices/powersink.dm
@@ -3,6 +3,7 @@
/obj/item/device/powersink
name = "power sink"
desc = "A nulling power sink which drains energy from electrical systems."
+ icon = 'icons/obj/item/device/powersink.dmi'
icon_state = "powersink0"
item_state = "powersink0"
w_class = WEIGHT_CLASS_BULKY
diff --git a/code/game/objects/items/devices/radio/encryptionkey.dm b/code/game/objects/items/devices/radio/encryptionkey.dm
index 0fc0524c113..872cd84f6f9 100644
--- a/code/game/objects/items/devices/radio/encryptionkey.dm
+++ b/code/game/objects/items/devices/radio/encryptionkey.dm
@@ -1,7 +1,7 @@
/obj/item/device/encryptionkey
name = "standard encryption key"
desc = "An encryption key for a radio headset. Contains cypherkeys."
- icon = 'icons/obj/radio.dmi'
+ icon = 'icons/obj/item/device/encryptionkey.dmi'
icon_state = "cypherkey"
item_state = ""
w_class = WEIGHT_CLASS_TINY
@@ -101,7 +101,7 @@
/obj/item/device/encryptionkey/bluespace
name = "bluespace encryption key"
desc = "A nonsensical mimicry of a standard encryption key, in the form of an elongated bluespace crystal. It seems to function."
- icon_state = "bs_cyperkey"
+ icon_state = "bs_cypherkey"
additional_channels = list(CHANNEL_BLUESPACE = TRUE)
origin_tech = list(TECH_BLUESPACE = 3)
syndie = TRUE
@@ -266,7 +266,7 @@
/obj/item/storage/box/fancy/keypouch
name = "encryption key pouch"
desc = "A pouch designed to store three encryption keys."
- icon = 'icons/obj/radio.dmi'
+ icon = 'icons/obj/item/device/encryptionkey.dmi'
icon_state = "keypouch0"
icon_type = "key"
storage_type = "pouch"
diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm
index b1d8e9d09bf..9ecf05d20d8 100644
--- a/code/game/objects/items/devices/radio/headset.dm
+++ b/code/game/objects/items/devices/radio/headset.dm
@@ -1,6 +1,7 @@
/obj/item/device/radio/headset
name = "radio headset"
desc = "An updated, modular intercom that fits over the head. Takes encryption keys."
+ icon = 'icons/obj/item/device/radio/headset.dmi'
icon_state = "headset"
item_state = "headset"
matter = list(MATERIAL_ALUMINIUM = 75)
@@ -193,6 +194,7 @@
/obj/item/device/radio/headset/alt
name = "bowman headset"
+ icon = 'icons/obj/item/device/radio/headset_alt.dmi'
icon_state = "headset_alt"
item_state = "headset_alt"
@@ -200,6 +202,7 @@
name = "soundproof headset"
desc = "A sound isolating version of the common radio headset."
desc_info = "This radio doubles as a pair of earmuffs by providing sound protection."
+ icon = 'icons/obj/item/device/radio/headset_alt_double.dmi'
icon_state = "earset"
item_state = "earset"
item_flags = ITEM_FLAG_SOUND_PROTECTION
@@ -209,6 +212,7 @@
name = "wristbound radio"
desc = "A radio designed to fit on the wrist. Often known for broadcasting loudly enough that those closeby might overhear it."
desc_info = "This radio can be heard by people standing next to the one wearing it."
+ icon = 'icons/obj/item/device/radio/headset_wrist.dmi'
icon_state = "wristset"
item_state = "wristset"
slot_flags = SLOT_WRISTS
@@ -240,11 +244,10 @@
name = "clip-on radio"
desc = "A radio designed to clip onto your clothes. Often known for broadcasting loudly enough that those closeby might overhear it."
desc_info = "This radio can be heard by people standing next to the one wearing it."
- icon = 'icons/obj/item/tools/radio/clip.dmi'
+ icon = 'icons/obj/item/device/radio/headset_clip.dmi'
icon_state = "clip"
item_state = "clip"
slot_flags = SLOT_WRISTS | SLOT_EARS
- contained_sprite = TRUE
/obj/item/device/radio/headset/wrist/clip/verb/flip_radio()
set category = "Object"
@@ -283,11 +286,13 @@
name = "service radio headset"
desc = "Headset used by the service staff, tasked with keeping the station full, happy and clean."
icon_state = "srv_headset"
+ item_state = "srv_headset"
ks2type = /obj/item/device/encryptionkey/headset_service
/obj/item/device/radio/headset/headset_service/alt
name = "service radio bowman headset"
- icon_state = "headset_alt"
+ icon_state = "srv_headset_alt"
+ item_state = "srv_headset_alt"
/obj/item/device/radio/headset/alt/double/service
name = "soundproof service headset"
@@ -444,8 +449,8 @@
/obj/item/device/radio/headset/alt/double/mining
name = "soundproof mining headset"
- icon_state = "earset_Mine"
- item_state = "earset_Mine"
+ icon_state = "earset_mine"
+ item_state = "earset_mine"
ks2type = /obj/item/device/encryptionkey/headset_cargo
/obj/item/device/radio/headset/wrist/cargo/mining
@@ -689,8 +694,8 @@
/obj/item/device/radio/headset/alt/double/sec
name = "soundproof security headset"
- icon_state = "earset_Sec"
- item_state = "earset_Sec"
+ icon_state = "earset_sec"
+ item_state = "earset_sec"
ks2type = /obj/item/device/encryptionkey/headset_sec
/obj/item/device/radio/headset/wrist/sec
diff --git a/code/game/objects/items/devices/radio_jammer.dm b/code/game/objects/items/devices/radio_jammer.dm
index add8ab959e4..fe6158b24be 100644
--- a/code/game/objects/items/devices/radio_jammer.dm
+++ b/code/game/objects/items/devices/radio_jammer.dm
@@ -20,8 +20,9 @@ var/list/active_radio_jammers = list()
name = "radio jammer"
desc = "A small, inconspicious looking item with an 'ON/OFF' toggle."
desc_info = "Use in-hand to activate or deactivate, alt-click while adjacent or in-hand to toggle whether it blocks all wireless signals, or just stationbound wireless interfacing."
- icon = 'icons/obj/device.dmi'
+ icon = 'icons/obj/item/device/chameleon.dmi'
icon_state = "shield0"
+ item_state = "electronic"
w_class = WEIGHT_CLASS_SMALL
var/active = JAMMER_OFF
var/radius = 7
diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm
index d69691cc5fe..95228e4401b 100644
--- a/code/game/objects/items/devices/scanners.dm
+++ b/code/game/objects/items/devices/scanners.dm
@@ -10,8 +10,9 @@ BREATH ANALYZER
/obj/item/device/healthanalyzer
name = "health analyzer"
desc = "A hand-held body scanner able to distinguish vital signs of the subject."
+ icon = 'icons/obj/item/device/healthanalyzer.dmi'
icon_state = "health"
- item_state = "healthanalyzer"
+ item_state = "analyzer"
obj_flags = OBJ_FLAG_CONDUCTABLE
slot_flags = SLOT_BELT
throwforce = 3
@@ -373,10 +374,9 @@ BREATH ANALYZER
/obj/item/device/analyzer
name = "analyzer"
desc = "A hand-held environmental scanner which reports current gas levels."
- icon = 'icons/obj/item/tools/air_analyzer.dmi'
+ icon = 'icons/obj/item/device/air_analyzer.dmi'
icon_state = "analyzer"
item_state = "analyzer"
- contained_sprite = TRUE
w_class = WEIGHT_CLASS_SMALL
obj_flags = OBJ_FLAG_CONDUCTABLE
slot_flags = SLOT_BELT
@@ -409,8 +409,9 @@ BREATH ANALYZER
/obj/item/device/mass_spectrometer
name = "mass spectrometer"
desc = "A hand-held mass spectrometer which identifies trace chemicals in a blood sample."
+ icon = 'icons/obj/item/device/mass_spectrometer.dmi'
icon_state = "spectrometer"
- item_state = "analyzer"
+ item_state = "spectrometer"
w_class = WEIGHT_CLASS_SMALL
atom_flags = ATOM_FLAG_OPEN_CONTAINER
obj_flags = OBJ_FLAG_CONDUCTABLE
@@ -471,6 +472,7 @@ BREATH ANALYZER
/obj/item/device/mass_spectrometer/adv
name = "advanced mass spectrometer"
icon_state = "adv_spectrometer"
+ item_state = "adv_spectrometer"
details = TRUE
origin_tech = list(TECH_MAGNET = 4, TECH_BIO = 2)
@@ -483,6 +485,7 @@ BREATH ANALYZER
/obj/item/device/reagent_scanner
name = "reagent scanner"
desc = "A hand-held reagent scanner which identifies chemical agents."
+ icon = 'icons/obj/item/device/reagent_scanner.dmi'
icon_state = "reagent_scanner"
item_state = "analyzer"
w_class = WEIGHT_CLASS_SMALL
@@ -518,12 +521,14 @@ BREATH ANALYZER
/obj/item/device/reagent_scanner/adv
name = "advanced reagent scanner"
icon_state = "adv_reagent_scanner"
+ item_state = "analyzer"
details = 1
origin_tech = list(TECH_MAGNET = 4, TECH_BIO = 2)
/obj/item/device/slime_scanner
name = "slime scanner"
- icon_state = "adv_spectrometer"
+ icon = 'icons/obj/item/device/slime_scanner.dmi'
+ icon_state = "slime_scanner"
item_state = "analyzer"
origin_tech = list(TECH_BIO = 1)
w_class = WEIGHT_CLASS_SMALL
@@ -568,8 +573,8 @@ BREATH ANALYZER
/obj/item/device/price_scanner
name = "price scanner"
desc = "Using an up-to-date database of various costs and prices, this device estimates the market price of an item up to 0.001% accuracy."
+ icon = 'icons/obj/item/device/price_scanner.dmi'
icon_state = "price_scanner"
- item_state = "price_scanner"
item_flags = ITEM_FLAG_NO_BLUDGEON
slot_flags = SLOT_BELT
w_class = WEIGHT_CLASS_SMALL
@@ -589,6 +594,7 @@ BREATH ANALYZER
/obj/item/device/breath_analyzer
name = "breath analyzer"
desc = "A hand-held breath analyzer that provides a robust amount of information about the subject's respiratory system."
+ icon = 'icons/obj/item/device/breath_analyzer.dmi'
icon_state = "breath_analyzer"
item_state = "analyzer"
w_class = WEIGHT_CLASS_SMALL
@@ -698,9 +704,10 @@ BREATH ANALYZER
/obj/item/device/advanced_healthanalyzer
name = "advanced health analyzer"
- desc = "An expensive and varied-use health analyzer of Zeng-Hu design that prints full-body scans after a short scanning delay."
- icon_state = "adv-analyzer"
- item_state = "adv-analyzer"
+ desc = "An expensive and varied-use health analyzer that prints full-body scans after a short scanning delay."
+ icon = 'icons/obj/item/device/advanced_healthanalyzer.dmi'
+ icon_state = "health_adv"
+ item_state = "analyzer"
slot_flags = SLOT_BELT
w_class = WEIGHT_CLASS_NORMAL
origin_tech = list(TECH_MAGNET = 2, TECH_BIO = 3)
@@ -725,6 +732,7 @@ BREATH ANALYZER
user.setClickCooldown(DEFAULT_QUICK_COOLDOWN)
user.do_attack_animation(src)
user.visible_message("[user] starts scanning \the [target_mob] with \the [src].", SPAN_NOTICE("You start scanning \the [target_mob] with \the [src]."))
+ flick("[icon_state]-scan", src)
if(do_after(user, 7 SECONDS, target_mob, DO_UNIQUE))
print_scan(target_mob, user)
add_fingerprint(user)
diff --git a/code/game/objects/items/devices/suit_cooling.dm b/code/game/objects/items/devices/suit_cooling.dm
index cc37826e89f..bdcd8ab016e 100644
--- a/code/game/objects/items/devices/suit_cooling.dm
+++ b/code/game/objects/items/devices/suit_cooling.dm
@@ -2,11 +2,10 @@
name = "portable suit cooling unit"
desc = "A portable heat sink and liquid cooled radiator that can be hooked up to a space suit's existing temperature controls to provide industrial levels of cooling."
w_class = WEIGHT_CLASS_BULKY
- icon = 'icons/obj/item/tools/suitcooler.dmi'
+ icon = 'icons/obj/item/device/suitcooler.dmi'
icon_state = "suitcooler0"
item_state = "coolingpack"
action_button_name = "Toggle Cooling Unit"
- contained_sprite = TRUE
slot_flags = SLOT_BACK //you can carry it on your back if you want, but it won't do anything unless attached to suit storage
//copied from tank.dm
diff --git a/code/game/objects/items/devices/t_scanner.dm b/code/game/objects/items/devices/t_scanner.dm
index 0b21879e087..3fe70d81430 100644
--- a/code/game/objects/items/devices/t_scanner.dm
+++ b/code/game/objects/items/devices/t_scanner.dm
@@ -3,10 +3,10 @@
/obj/item/device/t_scanner
name = "\improper T-ray scanner"
desc = "A terahertz-ray emitter and scanner used to detect underfloor objects such as cables and pipes."
- icon = 'icons/obj/item/tools/t_scanner.dmi'
+ icon = 'icons/obj/item/device/t_scanner.dmi'
icon_state = "t-ray0"
item_state = "t-ray"
- contained_sprite = TRUE
+
slot_flags = SLOT_BELT
w_class = WEIGHT_CLASS_SMALL
matter = list(MATERIAL_PLASTIC = 100, MATERIAL_ALUMINIUM = 50)
diff --git a/code/game/objects/items/devices/tagger.dm b/code/game/objects/items/devices/tagger.dm
deleted file mode 100644
index 21ea8f54ab3..00000000000
--- a/code/game/objects/items/devices/tagger.dm
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
-/obj/item/device/animaltagger
- name = "animal tagger"
- desc = "Used for tagging animals to be identified by a ear tag."
- icon_state = "animal_tagger0"
- force = 11
- w_class = WEIGHT_CLASS_SMALL
- throwforce = 5.0
- throw_range = 15
- throw_speed = 3
- var/animaltag = null
-
- matter = list(DEFAULT_WALL_MATERIAL = 50, MATERIAL_GLASS = 20)
-
- origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 1)
-
-
-/obj/item/device/animaltagger/Destroy()
- return ..()
-
-
-/obj/item/device/animaltagger/attack(mob/living/target_mob, mob/living/user, target_zone)
- return
-
-/obj/item/device/animaltagger/afterattack(atom/A as mob|obj, mob/user as mob)
-
- if(isanimal(A))
- A.name = animaltag
- to_chat(user,SPAN_NOTICE("You tag the animal as [animaltag]."))
-
- else
- to_chat(user, SPAN_NOTICE("You can't tag non animals."))
- return
-
-/obj/item/device/animaltagger/attack_self(mob/user as mob)
-
- var/inputtag = sanitizeSafe(input(user,"Label text?","Set label",""), MAX_NAME_LEN)
- if(!inputtag || !length(inputtag))
- to_chat(user, SPAN_NOTICE("Invalid tag line."))
- return
- animaltag = inputtag
diff --git a/code/game/objects/items/devices/taperecorder.dm b/code/game/objects/items/devices/taperecorder.dm
index 1ef9968e826..7c6a66f6d22 100644
--- a/code/game/objects/items/devices/taperecorder.dm
+++ b/code/game/objects/items/devices/taperecorder.dm
@@ -1,7 +1,8 @@
/obj/item/device/taperecorder
name = "universal recorder"
desc = "A device that can record up to an hour of dialogue and play it back. It automatically translates the content in playback."
- icon_state = "taperecorderidle"
+ icon = 'icons/obj/item/device/taperecorder.dmi'
+ icon_state = "taperecorder_idle"
item_state = "analyzer"
w_class = WEIGHT_CLASS_SMALL
@@ -73,7 +74,7 @@
emagged = TRUE
recording = FALSE
to_chat(user, SPAN_NOTICE("PZZTTPFFFT"))
- icon_state = "taperecorderidle"
+ icon_state = "taperecorder_idle"
return TRUE
/obj/item/device/taperecorder/proc/explode()
@@ -96,7 +97,7 @@
if(emagged)
src.audible_message(SPAN_WARNING("\The [src] makes a scratchy noise."), hearing_distance = 3)
return
- icon_state = "taperecorderrecording"
+ icon_state = "taperecorder_recording"
if(time_recorded < 3600 && !playing)
to_chat(usr, SPAN_NOTICE("Recording started."))
recording = TRUE
@@ -108,7 +109,7 @@
time_recorded++
sleep(10)
recording = FALSE
- icon_state = "taperecorderidle"
+ icon_state = "taperecorder_idle"
return
else
to_chat(usr, SPAN_NOTICE("Either your tape recorder's memory is full, or it is currently playing back its memory."))
@@ -129,12 +130,12 @@
timestamp += time_recorded
stored_info += "\[[time2text(time_recorded*10,"mm:ss")]\] Recording stopped."
to_chat(usr, SPAN_NOTICE("Recording stopped."))
- icon_state = "taperecorderidle"
+ icon_state = "taperecorder_idle"
return
else if(playing)
playing = FALSE
audible_message("Tape Recorder: Playback stopped.", hearing_distance = 3)
- icon_state = "taperecorderidle"
+ icon_state = "taperecorder_idle"
return
/obj/item/device/taperecorder/verb/clear_memory()
@@ -174,7 +175,7 @@
to_chat(usr, SPAN_WARNING("You're already playing!"))
return
playing = TRUE
- icon_state = "taperecorderplaying"
+ icon_state = "taperecorder_playing"
to_chat(usr, SPAN_NOTICE("Playing started."))
for(var/i = 1, time_recorded < 3600, sleep(10 * play_sleep_seconds))
if(!playing)
@@ -196,7 +197,7 @@
audible_message("Tape Recorder: Skipping [play_sleep_seconds] seconds of silence.", hearing_distance = 3)
play_sleep_seconds = 1
i++
- icon_state = "taperecorderidle"
+ icon_state = "taperecorder_idle"
playing = FALSE
if(emagged)
audible_message("Tape Recorder: This tape recorder will self-destruct in... Five.", hearing_distance = 3)
@@ -283,7 +284,7 @@
if(emagged)
src.audible_message(SPAN_WARNING("\The [src] makes a scratchy noise."), hearing_distance = 3)
return
- icon_state = "taperecorderrecording"
+ icon_state = "taperecorder_recording"
if(time_recorded < 3600 && !playing)
to_chat(usr, SPAN_NOTICE("Recording started."))
recording = TRUE
@@ -295,7 +296,7 @@
time_recorded++
sleep(10)
recording = FALSE
- icon_state = "taperecorderidle"
+ icon_state = "taperecorder_idle"
return
else
to_chat(usr, SPAN_WARNING("Either \the [src]'s memory is full, or it is currently playing back its memory."))
@@ -308,7 +309,7 @@
timestamp += time_recorded
stored_info += "\[[time2text(time_recorded*10,"mm:ss")]\] Recording stopped."
to_chat(usr, SPAN_NOTICE("Recording stopped."))
- icon_state = "taperecorderidle"
+ icon_state = "taperecorder_idle"
return
else if(emagged)
to_chat(usr, SPAN_WARNING("\The [src]'s buttons doesn't react!"))
@@ -316,7 +317,7 @@
else if(playing)
playing = FALSE
audible_message("Tape Recorder: Playback stopped.", hearing_distance = 3)
- icon_state = "taperecorderidle"
+ icon_state = "taperecorder_idle"
return
/obj/item/device/taperecorder/attackby(obj/item/attacking_item, mob/user)
diff --git a/code/game/objects/items/devices/traitordevices.dm b/code/game/objects/items/devices/traitordevices.dm
index 8111fb70e67..4d580c55481 100644
--- a/code/game/objects/items/devices/traitordevices.dm
+++ b/code/game/objects/items/devices/traitordevices.dm
@@ -17,13 +17,14 @@ effective or pretty fucking useless.
/obj/item/device/batterer
name = "mind batterer"
desc = "A strange device with twin antennas."
+ icon = 'icons/obj/item/device/batterer.dmi'
icon_state = "batterer"
+ item_state = "electronic"
throwforce = 5
w_class = WEIGHT_CLASS_TINY
throw_speed = 4
throw_range = 10
obj_flags = OBJ_FLAG_CONDUCTABLE
- item_state = "electronic"
origin_tech = list(TECH_MAGNET = 3, TECH_COMBAT = 3, TECH_ILLEGAL = 3)
var/times_used = 0 //Number of times it's been used.
@@ -55,7 +56,9 @@ effective or pretty fucking useless.
/obj/item/device/liidrafier //adminspawn/event injector, designed to easily make someone a lii'dra zombie/actual lii'dra
name = "Lii'drafication Injector"
desc = "Use this single-use injector on a Vaurca to grant them access to the Lii'dra Hivenet. Use it on an organic non-Vaurca to infect them with black k'ois. This is an OOC item, do not let anyone see it!"
- icon_state = "animal_tagger1"
+ icon = 'icons/obj/guns/decloner.dmi'
+ icon_state = "decloner"
+ item_state = "decloner"
/obj/item/device/liidrafier/attack(mob/living/target_mob, mob/living/user, target_zone)
return
diff --git a/code/game/objects/items/devices/tvcamera.dm b/code/game/objects/items/devices/tvcamera.dm
index 8d577ce9bf2..3977ea6f966 100644
--- a/code/game/objects/items/devices/tvcamera.dm
+++ b/code/game/objects/items/devices/tvcamera.dm
@@ -1,6 +1,7 @@
/obj/item/device/tvcamera
name = "press camera drone"
desc = "An Ingi Usang Entertainment Co. livestreaming press camera drone. Weapon of choice for war correspondents and reality show cameramen. It does not appear to have any internal memory storage."
+ icon = 'icons/obj/item/device/tvcamera.dmi'
icon_state = "camcorder"
item_state = "camcorder"
w_class = WEIGHT_CLASS_BULKY
diff --git a/code/game/objects/items/devices/uplink.dm b/code/game/objects/items/devices/uplink.dm
index 615bff6315b..1bf01b530ab 100644
--- a/code/game/objects/items/devices/uplink.dm
+++ b/code/game/objects/items/devices/uplink.dm
@@ -391,8 +391,9 @@ Then check if it's true, if true return. This will stop the normal menu appearin
//for revs to create their own central command reports
/obj/item/device/announcer
name = "relay positioning device"
- icon = 'icons/obj/device.dmi'
- icon_state = "locator"
+ icon = 'icons/obj/item/device/gps.dmi'
+ icon_state = "gps"
+ item_state = "radio"
desc_antag = "This device allows you to create a single central command report. It has only one use."
w_class = WEIGHT_CLASS_SMALL
diff --git a/code/game/objects/items/devices/whistle.dm b/code/game/objects/items/devices/whistle.dm
index 146cecf697f..15de5b79cc2 100644
--- a/code/game/objects/items/devices/whistle.dm
+++ b/code/game/objects/items/devices/whistle.dm
@@ -1,6 +1,7 @@
/obj/item/device/hailer
name = "hailer"
desc = "Used by obese officers to save their breath for running."
+ icon = 'icons/obj/item/device/hailer.dmi'
icon_state = "voice0"
item_state = "flashbang" //looks exactly like a flash (and nothing like a flashbang)
w_class = WEIGHT_CLASS_TINY
diff --git a/code/game/objects/items/knitting.dm b/code/game/objects/items/knitting.dm
index c476c0f916c..94b62c18aff 100644
--- a/code/game/objects/items/knitting.dm
+++ b/code/game/objects/items/knitting.dm
@@ -1,7 +1,7 @@
/obj/item/knittingneedles
name = "knitting needles"
desc = "Silver knitting needles used for stitching yarn."
- icon = 'icons/obj/item/tools/knitting.dmi'
+ icon = 'icons/obj/item/knitting.dmi'
icon_state = "knittingneedles"
item_state = "knittingneedles"
w_class = WEIGHT_CLASS_SMALL
@@ -119,7 +119,7 @@
/obj/item/yarn
name = "ball of yarn"
desc = "A ball of yarn, this one is white."
- icon = 'icons/obj/item/tools/knitting.dmi'
+ icon = 'icons/obj/item/knitting.dmi'
icon_state = "white_ball"
w_class = WEIGHT_CLASS_TINY
diff --git a/code/game/objects/items/paintkit.dm b/code/game/objects/items/paintkit.dm
index de741acfa15..f69551ec4e7 100644
--- a/code/game/objects/items/paintkit.dm
+++ b/code/game/objects/items/paintkit.dm
@@ -1,6 +1,7 @@
/obj/item/device/kit
+ icon = 'icons/obj/item/device/modkit.dmi'
icon_state = "modkit"
- icon = 'icons/obj/device.dmi'
+ item_state = "restock_unit"
var/new_name = "exosuit" //What is the variant called?
var/new_desc = "An exosuit." //How is the new exosuit described?
var/new_icon = "ripley" //What base icon will the new exosuit use?
diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm
index 3332e3cc8fd..999d6a07b77 100644
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -281,6 +281,7 @@
icon = 'icons/obj/radio.dmi'
icon_state = "beacon"
item_state = "signaler"
+ contained_sprite = TRUE
/*
* Fake singularity
diff --git a/code/game/objects/items/vitals_monitor.dm b/code/game/objects/items/vitals_monitor.dm
index 5fa4c9d5f9b..77e49bf2774 100644
--- a/code/game/objects/items/vitals_monitor.dm
+++ b/code/game/objects/items/vitals_monitor.dm
@@ -1,7 +1,7 @@
/obj/item/vitals_monitor
name = "vitals monitor"
desc = "A vitals monitor, used to track a patient's vitality. It needs to be attached to a rollerbed to function."
- icon = 'icons/obj/item/tools/vitals_monitor.dmi'
+ icon = 'icons/obj/item/vitals_monitor.dmi'
icon_state = "vitals_monitor"
item_state = "vitals_monitor"
contained_sprite = TRUE
diff --git a/code/game/objects/items/weapons/autopsy.dm b/code/game/objects/items/weapons/autopsy.dm
index cae7b1fcd49..eec2b878b92 100644
--- a/code/game/objects/items/weapons/autopsy.dm
+++ b/code/game/objects/items/weapons/autopsy.dm
@@ -5,8 +5,10 @@
/obj/item/autopsy_scanner
name = "autopsy scanner"
desc = "Extracts information on wounds."
- icon = 'icons/obj/device.dmi'
+ icon = 'icons/obj/item/autopsy_scanner.dmi'
icon_state = "autopsy"
+ item_state = "autopsy"
+ contained_sprite = TRUE
obj_flags = OBJ_FLAG_CONDUCTABLE
w_class = WEIGHT_CLASS_SMALL
origin_tech = list(TECH_MATERIAL = 1, TECH_BIO = 1)
@@ -178,6 +180,7 @@
for(var/mob/O in viewers(M))
O.show_message(SPAN_NOTICE("\The [user] scans the wounds on [M.name]'s [S.name] with \the [src]"), 1)
+ flick("autopsy-scan", src)
src.add_data(S)
return 1
diff --git a/code/game/objects/items/weapons/cloaking_device.dm b/code/game/objects/items/weapons/cloaking_device.dm
index cefa2583a72..907a23ec723 100644
--- a/code/game/objects/items/weapons/cloaking_device.dm
+++ b/code/game/objects/items/weapons/cloaking_device.dm
@@ -5,9 +5,10 @@
This will not make you inaudible, your footsteps can still be heard, and it will make a very distinctive sound when uncloaking.\
Any items you're holding in your hands can still be seen."
desc_antag = "Being cloaked makes you impossible to click on, which offers a major advantage in combat. People can only hit you by blind-firing in your direction."
-
- icon = 'icons/obj/device.dmi'
+ icon = 'icons/obj/item/device/chameleon.dmi'
icon_state = "shield0"
+ item_state = "electronic"
+ contained_sprite = TRUE
var/active = 0.0
obj_flags = OBJ_FLAG_CONDUCTABLE
item_state = "electronic"
diff --git a/code/game/objects/items/weapons/neutralizer.dm b/code/game/objects/items/weapons/neutralizer.dm
index 48633367c6f..6a20ef77ba5 100644
--- a/code/game/objects/items/weapons/neutralizer.dm
+++ b/code/game/objects/items/weapons/neutralizer.dm
@@ -2,7 +2,7 @@
name = "bluespace neutralizer"
desc = "A strange device, supposedly capable of pre-emptively shutting down bluespace portals."
desc_info = "Click on it, or use it in-hand to activate it. Click on any portal-like structure to instantly close it. Stand near a bluespace rift while it's active to start the closing process."
- icon = 'icons/obj/item/tools/neutralizer.dmi'
+ icon = 'icons/obj/item/neutralizer.dmi'
icon_state = "neutralizer"
contained_sprite = TRUE
diff --git a/code/game/objects/items/weapons/power_cells.dm b/code/game/objects/items/weapons/power_cells.dm
index 22012307368..4b0748d9410 100644
--- a/code/game/objects/items/weapons/power_cells.dm
+++ b/code/game/objects/items/weapons/power_cells.dm
@@ -4,6 +4,7 @@
icon = 'icons/obj/machinery/cell_charger.dmi'
icon_state = "cell"
item_state = "cell"
+ contained_sprite = TRUE
origin_tech = list(TECH_POWER = 1)
force = 11
throwforce = 5.0
diff --git a/code/game/objects/items/weapons/research_slip.dm b/code/game/objects/items/weapons/research_slip.dm
index c53a1926a10..1586532aaf3 100644
--- a/code/game/objects/items/weapons/research_slip.dm
+++ b/code/game/objects/items/weapons/research_slip.dm
@@ -2,7 +2,7 @@
name = "research slip"
desc = "A small slip of plastic with an embedded chip. It is commonly used to store small amounts of research data."
desc_info = "This item is to be used in the destructive analyzer to gain research points."
- icon = 'icons/obj/item/tools/research_slip.dmi'
+ icon = 'icons/obj/item/research_slip.dmi'
icon_state = "slip_nt"
contained_sprite = TRUE
diff --git a/code/game/objects/items/weapons/teleportation.dm b/code/game/objects/items/weapons/teleportation.dm
index edc0483db4e..fbe10c40264 100644
--- a/code/game/objects/items/weapons/teleportation.dm
+++ b/code/game/objects/items/weapons/teleportation.dm
@@ -26,8 +26,8 @@
/obj/item/locator
name = "locator"
desc = "A device that can be used to track those with locator implants."
- icon = 'icons/obj/device.dmi'
- icon_state = "locator"
+ icon = 'icons/obj/item/pinpointer.dmi'
+ icon_state = "pinoff"
var/temp = null
var/frequency = 1451
var/broadcasting = null
@@ -142,7 +142,7 @@ Frequency:
name = "hand tele"
desc = "A hand-held bluespace teleporter that can rip open portals to a random nearby location, or lock onto a teleporter with a selected teleportation beacon."
desc_info = "Ctrl-click to choose which teleportation pad to link to. Use in-hand or alt-click to deploy a portal. When not linked to a pad, or the pad isn't pointing at a beacon, it will choose a completely random teleportation destination."
- icon = 'icons/obj/device.dmi'
+ icon = 'icons/obj/item/hand_tele.dmi'
icon_state = "hand_tele"
item_state = "electronic"
throwforce = 5
@@ -259,6 +259,9 @@ Frequency:
LAZYREMOVE(active_teleporters, P)
if(LAZYLEN(active_teleporters) < max_portals)
check_maptext(SMALL_FONTS(7, "Ready"))
+ icon_state = "hand_tele"
+ else
+ icon_state = "hand_tele_recharging"
/obj/item/closet_teleporter
name = "closet teleporter"
diff --git a/code/game/objects/items/weapons/tether.dm b/code/game/objects/items/weapons/tether.dm
index 122203e2239..0a92eca6b7f 100644
--- a/code/game/objects/items/weapons/tether.dm
+++ b/code/game/objects/items/weapons/tether.dm
@@ -4,8 +4,10 @@ var/list/global/all_tethers = list()
name = "tethering device"
desc = "A device used by explorers to keep track of partners by way of electro-tether."
desc_info = "Use in-hand to activate, must be on the same level and within fifteen tiles of another device to latch. Tethers are colour coded by distance."
- icon = 'icons/obj/device.dmi'
- icon_state = "locator"
+ icon = 'icons/obj/item/device/gps.dmi'
+ icon_state = "gps"
+ item_state = "radio"
+ contained_sprite = TRUE
w_class = WEIGHT_CLASS_SMALL
slot_flags = SLOT_BELT
force = 1
@@ -18,6 +20,11 @@ var/list/global/all_tethers = list()
. = ..()
all_tethers += src
+/obj/item/tethering_device/update_icon()
+ ClearOverlays()
+ if(active)
+ AddOverlays("gps_on")
+
/obj/item/tethering_device/Destroy()
STOP_PROCESSING(SSprocessing, src)
deactivate()
@@ -26,6 +33,7 @@ var/list/global/all_tethers = list()
/obj/item/tethering_device/attack_self(mob/user)
active = !active
+ update_icon()
var/msg = "You [active ? "activate" : "deactivate"] \the [src]."
to_chat(user, SPAN_NOTICE(msg))
if(active)
@@ -33,6 +41,7 @@ var/list/global/all_tethers = list()
else
deactivate()
+
/obj/item/tethering_device/process()
var/turf/our_turf = get_turf(src)
for(var/tether in all_tethers - src)
@@ -54,7 +63,7 @@ var/list/global/all_tethers = list()
/obj/item/tethering_device/emp_act(severity)
. = ..()
-
+ AddOverlays("gps_emp")
deactivate()
/obj/item/tethering_device/proc/activate()
diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm
index 1ab37b4bc8a..cea66904cb5 100644
--- a/code/game/objects/items/weapons/tools.dm
+++ b/code/game/objects/items/weapons/tools.dm
@@ -219,7 +219,7 @@
/obj/item/weldingtool
name = "welding tool"
desc = "A welding tool with a built-in fuel tank, designed for welding and cutting metal."
- icon = 'icons/obj/item/tools/welding_tools.dmi'
+ icon = 'icons/obj/item/welding_tools.dmi'
icon_state = "welder"
item_state = "welder"
var/welding_state = "welding_sparks"
@@ -662,7 +662,7 @@
name = "experimental eyeshield"
desc = "An advanced eyeshield capable of dampening the welding glare produced when working on modern super-materials, removing the need for user-worn welding gear."
desc_info = "This can be attached to an experimental welder to give it welding protection, removing the need for welding goggles or masks."
- icon = 'icons/obj/item/tools/welding_tools.dmi'
+ icon = 'icons/obj/item/welding_tools.dmi'
icon_state = "eyeshield"
item_state = "eyeshield"
contained_sprite = TRUE
@@ -671,7 +671,7 @@
name = "experimental overcapacitor"
desc = "An advanced capacitor that injects a current into the welding stream, doubling the speed of welding tasks without sacrificing quality. Excess current burns up welding fuel, reducing fuel efficiency, however."
desc_info = "This can be attached to an experimental welder to double the speed it works at, at the cost of tripling the fuel cost of using it."
- icon = 'icons/obj/item/tools/welding_tools.dmi'
+ icon = 'icons/obj/item/welding_tools.dmi'
icon_state = "overcap"
item_state = "overcap"
contained_sprite = TRUE
@@ -750,7 +750,7 @@
/obj/item/crowbar/hydraulic_rescue_tool
name = "Hydraulic rescue tool"
desc = "A hydraulic rescue tool that functions like a crowbar by applying strong amounts of hydraulic pressure to force open different things. Also known as jaws of life."
- icon = 'icons/obj/item/tools/hydraulic_rescue_tool.dmi'
+ icon = 'icons/obj/item/hydraulic_rescue_tool.dmi'
icon_state = "jawspry"
force = 15
throwforce = 1
@@ -870,7 +870,7 @@
/obj/item/powerdrill
name = "impact wrench"
desc = "The screwdriver's big brother."
- icon = 'icons/obj/item/tools/impact_wrench.dmi'
+ icon = 'icons/obj/item/impact_wrench.dmi'
icon_state = "impact_wrench-screw"
item_state = "impact_wrench"
contained_sprite = TRUE
diff --git a/code/game/objects/random/tech.dm b/code/game/objects/random/tech.dm
index a202c8b6a76..dd25b24738a 100644
--- a/code/game/objects/random/tech.dm
+++ b/code/game/objects/random/tech.dm
@@ -15,8 +15,8 @@
/obj/random/technology_scanner
name = "random scanner"
desc = "This is a random technology scanner."
- icon = 'icons/obj/device.dmi'
- icon_state = "atmos"
+ icon = 'icons/obj/item/device/air_analyzer.dmi'
+ icon_state = "analyzer"
problist = list(
/obj/item/device/t_scanner = 5,
/obj/item/device/radio = 2,
diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm
index e4bfeca45e5..129c3f04c1d 100644
--- a/code/game/objects/structures/crates_lockers/closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets.dm
@@ -813,8 +813,8 @@
/obj/item/device/cratescanner
name = "crate contents scanner"
desc = "A handheld device used to scan and print a manifest of a container's contents. Does not work on locked crates, for privacy reasons."
+ icon = 'icons/obj/item/device/cratescanner.dmi'
icon_state = "cratescanner"
- item_state = "cratescanner"
matter = list(DEFAULT_WALL_MATERIAL = 250, MATERIAL_GLASS = 140)
w_class = WEIGHT_CLASS_SMALL
obj_flags = OBJ_FLAG_CONDUCTABLE
diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm
index c30c3be834b..862647a1acd 100644
--- a/code/modules/assembly/holder.dm
+++ b/code/modules/assembly/holder.dm
@@ -1,5 +1,5 @@
/obj/item/device/assembly_holder
- name = "Assembly"
+ name = "assembly"
icon = 'icons/obj/assemblies/new_assemblies.dmi'
icon_state = "holder"
item_state = "assembly"
diff --git a/code/modules/cargo/export_scanner.dm b/code/modules/cargo/export_scanner.dm
index f183a5a64b8..d1c0feb6eed 100644
--- a/code/modules/cargo/export_scanner.dm
+++ b/code/modules/cargo/export_scanner.dm
@@ -1,7 +1,7 @@
/obj/item/export_scanner
name = "export scanner"
desc = "A device used to check objects against NanoTrasen exports and bounty database."
- icon = 'icons/obj/device.dmi'
+ icon = 'icons/obj/item/device/price_scanner.dmi'
icon_state = "price_scanner"
slot_flags = SLOT_BELT
item_flags = ITEM_FLAG_NO_BLUDGEON
diff --git a/code/modules/custom_ka/core.dm b/code/modules/custom_ka/core.dm
index 6efa4433901..fceafc04817 100644
--- a/code/modules/custom_ka/core.dm
+++ b/code/modules/custom_ka/core.dm
@@ -570,8 +570,8 @@
/obj/item/device/kinetic_analyzer
name = "kinetic analyzer"
desc = "Analyzes the kinetic accelerator and prints useful information on it's statistics."
- icon = 'icons/obj/device.dmi'
- icon_state = "kinetic_anal"
+ icon = 'icons/obj/item/device/kinetic_analyzer.dmi'
+ icon_state = "kinetic_analyzer"
/obj/item/device/kinetic_analyzer/afterattack(var/atom/target, var/mob/living/user, proximity, params)
@@ -580,6 +580,7 @@
SPAN_WARNING("\The [user] scans \the [target] with \the [src]."),
SPAN_ALERT("You scan \the [target] with \the [src]."))
+ flick("kinetic_analyzer_scan", src)
if(istype(target,/obj/item/gun/custom_ka))
playsound(src, 'sound/machines/ping.ogg', 10, 1)
diff --git a/code/modules/detectivework/tools/uvlight.dm b/code/modules/detectivework/tools/uvlight.dm
index 2871d88c740..2136bca6355 100644
--- a/code/modules/detectivework/tools/uvlight.dm
+++ b/code/modules/detectivework/tools/uvlight.dm
@@ -1,10 +1,11 @@
/obj/item/device/uv_light
name = "\improper UV light"
desc = "A small handheld black light."
+ icon = 'icons/obj/item/device/uv_light.dmi'
icon_state = "uv_off"
+ item_state = "electronic"
slot_flags = SLOT_BELT
w_class = WEIGHT_CLASS_SMALL
- item_state = "electronic"
matter = list(DEFAULT_WALL_MATERIAL = 150)
origin_tech = list(TECH_MAGNET = 1, TECH_ENGINEERING = 1)
var/list/scanned = list()
diff --git a/code/modules/economy/EFTPOS.dm b/code/modules/economy/EFTPOS.dm
index afbb4488a47..6fd0d0036f3 100644
--- a/code/modules/economy/EFTPOS.dm
+++ b/code/modules/economy/EFTPOS.dm
@@ -1,8 +1,9 @@
/obj/item/device/eftpos
name = "\improper EFTPOS scanner"
desc = "Swipe your ID card to make purchases electronically."
- icon = 'icons/obj/device.dmi'
+ icon = 'icons/obj/item/device/eftpos.dmi'
icon_state = "eftpos"
+ item_state = "electronic"
w_class = WEIGHT_CLASS_TINY
var/machine_id = ""
var/eftpos_name = "Default EFTPOS scanner"
diff --git a/code/modules/economy/quikpay.dm b/code/modules/economy/quikpay.dm
index 8aee050e917..148fe5f3bac 100644
--- a/code/modules/economy/quikpay.dm
+++ b/code/modules/economy/quikpay.dm
@@ -3,8 +3,9 @@
/obj/item/device/quikpay
name = "\improper Idris Quik-Pay"
desc = "Swipe your ID to make direct company purchases."
- icon = 'icons/obj/device.dmi'
+ icon = 'icons/obj/item/device/eftpos.dmi'
icon_state = "quikpay"
+ item_state = "electronic"
w_class = WEIGHT_CLASS_SMALL
slot_flags = SLOT_BELT
var/machine_id = ""
diff --git a/code/modules/holomap/portable_map_reader.dm b/code/modules/holomap/portable_map_reader.dm
index 60e57abb904..c6b0f647bac 100644
--- a/code/modules/holomap/portable_map_reader.dm
+++ b/code/modules/holomap/portable_map_reader.dm
@@ -2,9 +2,10 @@
/obj/item/portable_map_reader
name = "portable map reader"
desc = "Displays a map of the local space, as well as any marked points of interest."
- icon = 'icons/obj/device.dmi'
- icon_state = "depthscanner"
-
+ icon = 'icons/obj/item/device/gps.dmi'
+ icon_state = "gps"
+ item_state = "radio"
+ contained_sprite = TRUE
/// The map reader only shows that z-level (and any z-levels that z-level is connected to).
/// It will not show other z-levels, like if the user were to transport it elsewhere on a shuttle.
var/list/connected_z_levels = null
diff --git a/code/modules/hydroponics/trays/tray_tools.dm b/code/modules/hydroponics/trays/tray_tools.dm
index 0ca1e28dcc6..d269011294c 100644
--- a/code/modules/hydroponics/trays/tray_tools.dm
+++ b/code/modules/hydroponics/trays/tray_tools.dm
@@ -22,10 +22,9 @@
/obj/item/device/analyzer/plant_analyzer
name = "plant analyzer"
- icon = 'icons/obj/item/tools/plant_analyzer.dmi'
+ icon = 'icons/obj/item/device/plant_analyzer.dmi'
icon_state = "hydro"
item_state = "hydro"
- contained_sprite = TRUE
var/form_title
var/last_data
matter = list(DEFAULT_WALL_MATERIAL = 80, MATERIAL_GLASS = 20)
diff --git a/code/modules/integrated_electronics/subtypes/input.dm b/code/modules/integrated_electronics/subtypes/input.dm
index 5e37d852940..fee57d813aa 100644
--- a/code/modules/integrated_electronics/subtypes/input.dm
+++ b/code/modules/integrated_electronics/subtypes/input.dm
@@ -406,7 +406,10 @@
name = "global positioning system"
desc = "This allows you to easily know the position of a machine containing this device."
extended_desc = "The GPS's coordinates it gives is absolute, not relative."
+ icon = 'icons/obj/item/device/gps.dmi'
icon_state = "gps"
+ item_state = "radio"
+ contained_sprite = TRUE
complexity = 4
inputs = list()
outputs = list(
diff --git a/code/modules/mining/drilling/scanner.dm b/code/modules/mining/drilling/scanner.dm
index 590c7252fb1..f21ee09c934 100644
--- a/code/modules/mining/drilling/scanner.dm
+++ b/code/modules/mining/drilling/scanner.dm
@@ -1,9 +1,10 @@
/obj/item/mining_scanner
name = "deep ore scanner"
desc = "A complex device used to locate ore deep underground."
- icon = 'icons/obj/device.dmi'
- icon_state = "forensic0-old" //GET A BETTER SPRITE.
- item_state = "electronic"
+ icon = 'icons/obj/item/mining_scanner.dmi'
+ icon_state = "manual_mining"
+ item_state = "manual_mining"
+ contained_sprite = TRUE
origin_tech = list(TECH_MAGNET = 1, TECH_ENGINEERING = 1)
matter = list(DEFAULT_WALL_MATERIAL = 150)
diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm
index 4ee9f45dcc5..0df1384d1c8 100644
--- a/code/modules/mining/mine_items.dm
+++ b/code/modules/mining/mine_items.dm
@@ -200,7 +200,7 @@
/obj/item/pickaxe/drill
name = "mining drill" // Can dig sand as well!
desc = "Yours is the drill that will pierce through the rock walls."
- icon = 'icons/obj/item/tools/drills.dmi'
+ icon = 'icons/obj/item/drills.dmi'
icon_state = "miningdrill"
item_state = "miningdrill"
contained_sprite = TRUE
@@ -221,8 +221,8 @@
/obj/item/pickaxe/drill/weak
name = "shaft drill"
desc = "Baby's first mining drill. Slow, but reliable."
- icon_state = "babydrill"
- item_state = "babydrill"
+ icon_state = "drill"
+ item_state = "drill"
digspeed = 5
digspeed_unwielded = 10
excavation_amount = 80
@@ -231,7 +231,7 @@
/obj/item/pickaxe/jackhammer
name = "sonic jackhammer"
desc = "Cracks rocks with sonic blasts, perfect for killing cave lizards."
- icon = 'icons/obj/item/tools/drills.dmi'
+ icon = 'icons/obj/item/drills.dmi'
icon_state = "jackhammer"
item_state = "jackhammer"
contained_sprite = TRUE
@@ -275,7 +275,7 @@
/obj/item/pickaxe/diamonddrill //When people ask about the badass leader of the mining tools, they are talking about ME!
name = "diamond mining drill"
- icon = 'icons/obj/item/tools/drills.dmi'
+ icon = 'icons/obj/item/drills.dmi'
icon_state = "diamonddrill"
item_state = "diamonddrill"
contained_sprite = TRUE
@@ -296,7 +296,7 @@
/obj/item/pickaxe/borgdrill
name = "cyborg mining drill"
- icon = 'icons/obj/item/tools/drills.dmi'
+ icon = 'icons/obj/item/drills.dmi'
icon_state = "diamonddrill"
item_state = "jackhammer"
contained_sprite = TRUE
@@ -616,7 +616,7 @@
/obj/item/ore_radar
name = "scanner pad"
desc = "An antiquated device that can detect ore in a wide radius around the user."
- icon = 'icons/obj/device.dmi'
+ icon = 'icons/obj/item/pinpointer.dmi'
icon_state = "pinoff"
obj_flags = OBJ_FLAG_CONDUCTABLE
slot_flags = SLOT_BELT
@@ -1166,7 +1166,7 @@ var/list/total_extraction_beacons = list()
/obj/item/autochisel
name = "auto-chisel"
desc = "With an integrated AI chip and hair-trigger precision, this baby makes sculpting almost automatic!"
- icon = 'icons/obj/item/tools/drills.dmi'
+ icon = 'icons/obj/item/drills.dmi'
icon_state = "chisel"
item_state = "jackhammer"
contained_sprite = TRUE
diff --git a/code/modules/mining/ore_detector.dm b/code/modules/mining/ore_detector.dm
index c2e9341586a..3d64c35437c 100644
--- a/code/modules/mining/ore_detector.dm
+++ b/code/modules/mining/ore_detector.dm
@@ -9,9 +9,8 @@
/obj/item/ore_detector
name = "ore detector"
desc = "A device capable of locating and displaying ores to the average untrained hole explorer."
- icon = 'icons/obj/item/tools/ore_scanner.dmi'
- icon_state = "ore_scanner"
- item_state = "ore_scanner"
+ icon = 'icons/obj/item/adv_mining_scanner.dmi'
+ icon_state = "advmining0"
w_class = WEIGHT_CLASS_SMALL
slot_flags = SLOT_BELT
force = 1
@@ -42,7 +41,7 @@
return ..()
/obj/item/ore_detector/update_icon()
- icon_state = "ore_scanner[active ? "-active" : ""]"
+ icon_state = "advmining[active]"
/obj/item/ore_detector/attack_self(mob/user)
ui_interact(user)
@@ -130,7 +129,7 @@
found_ores = TRUE
if(found_ores)
- var/image/ore_ping = image(icon = 'icons/obj/item/tools/ore_scanner.dmi', icon_state = "signal_overlay", loc = anchor, layer = UNDER_HUD_LAYER)
+ var/image/ore_ping = image(icon = 'icons/obj/item/adv_mining_scanner.dmi', icon_state = "signal_overlay", loc = anchor, layer = UNDER_HUD_LAYER)
ore_ping.appearance_flags |= KEEP_APART|RESET_ALPHA|RESET_COLOR|RESET_TRANSFORM
ore_ping.pixel_x = rand(-6, 6)
ore_ping.pixel_y = rand(-6, 6)
diff --git a/code/modules/mob/living/bot/medbot.dm b/code/modules/mob/living/bot/medbot.dm
index 90dd450ea44..abaa6992ab9 100644
--- a/code/modules/mob/living/bot/medbot.dm
+++ b/code/modules/mob/living/bot/medbot.dm
@@ -127,7 +127,7 @@
if(!underlays.len)
underlays += image(firstaid_item.icon, firstaid_item.icon_state)
var/matrix/M = matrix()
- var/image/ha_image = image('icons/obj/device.dmi', "health")
+ var/image/ha_image = image('icons/obj/item/device/healthanalyzer.dmi', "health")
M.Translate(5, 0)
ha_image.transform = M
underlays += ha_image
@@ -376,7 +376,7 @@
to_chat(user, SPAN_NOTICE("You add the health sensor to [src]."))
name = "first-aid/robot arm/health analyzer assembly"
var/matrix/M = matrix()
- var/image/ha_image = image('icons/obj/device.dmi', "health")
+ var/image/ha_image = image('icons/obj/item/device/healthanalyzer.dmi', "health")
M.Translate(5, 0)
ha_image.transform = M
underlays += ha_image
diff --git a/code/modules/mob/living/silicon/robot/analyzer.dm b/code/modules/mob/living/silicon/robot/analyzer.dm
index f9fbcd23d81..64e573b95b6 100644
--- a/code/modules/mob/living/silicon/robot/analyzer.dm
+++ b/code/modules/mob/living/silicon/robot/analyzer.dm
@@ -3,6 +3,7 @@
//
/obj/item/device/robotanalyzer
name = "cyborg analyzer"
+ icon = 'icons/obj/item/device/robotanalyzer.dmi'
icon_state = "robotanalyzer"
item_state = "analyzer"
desc = "A hand-held scanner able to diagnose robotic injuries."
@@ -109,6 +110,7 @@
/obj/item/device/robotanalyzer/augment
name = "retractable cyborg analyzer"
desc = "An scanner implanted directly into the hand, popping through the finger. This scanner can diagnose robotic injuries."
+ icon = 'icons/obj/item/device/robotanalyzer.dmi'
icon_state = "robotanalyzer"
item_state = "analyzer"
slot_flags = null
diff --git a/code/modules/mob/living/silicon/robot/drone/drone_items.dm b/code/modules/mob/living/silicon/robot/drone/drone_items.dm
index 92798332a7c..f17929e5d96 100644
--- a/code/modules/mob/living/silicon/robot/drone/drone_items.dm
+++ b/code/modules/mob/living/silicon/robot/drone/drone_items.dm
@@ -3,7 +3,7 @@
/obj/item/matter_decompiler
name = "matter decompiler"
desc = "Eating trash, bits of glass, or other debris will replenish your stores."
- icon = 'icons/obj/device.dmi'
+ icon = 'icons/obj/item/gripper.dmi'
icon_state = "decompiler"
var/is_decompiling = FALSE
diff --git a/code/modules/mob/living/silicon/robot/items/gripper.dm b/code/modules/mob/living/silicon/robot/items/gripper.dm
index 6d24e70995c..ef7b8425d1d 100644
--- a/code/modules/mob/living/silicon/robot/items/gripper.dm
+++ b/code/modules/mob/living/silicon/robot/items/gripper.dm
@@ -3,7 +3,7 @@
/obj/item/gripper
name = "magnetic gripper"
desc = "A simple grasping tool specialized in construction and engineering work."
- icon = 'icons/obj/device.dmi'
+ icon = 'icons/obj/item/gripper.dmi'
icon_state = "gripper"
item_flags = ITEM_FLAG_NO_BLUDGEON
diff --git a/code/modules/mob/living/silicon/robot/items/inductive_charger.dm b/code/modules/mob/living/silicon/robot/items/inductive_charger.dm
index 8b5f852702d..bf0ad09dc8c 100644
--- a/code/modules/mob/living/silicon/robot/items/inductive_charger.dm
+++ b/code/modules/mob/living/silicon/robot/items/inductive_charger.dm
@@ -3,7 +3,7 @@
desc = "A phoron-enhanced induction charger hooked up to its attached stationbound's internal cell."
desc_extended = "Harnessing the energy potential found in phoron structures, NanoTrasen engineers have created a portable device capable of highly efficient wireless charging. The expense and limit of energy output of using this method of charging prevents it from being used on a large scale, being far outclassed by Phoron-Supermatter charging systems."
desc_info = "Click on an adjacent object that contains or is a power cell to attempt to find and charge it. After a successful charge, the inductive charger recharge in a few minutes. The amount transfered can be adjusted by alt clicking it."
- icon = 'icons/obj/item/tools/inductive_charger.dmi'
+ icon = 'icons/obj/item/inductive_charger.dmi'
icon_state = "inductive_charger"
item_state = "inductive_charger"
item_flags = ITEM_FLAG_HELD_MAP_TEXT
diff --git a/code/modules/mob/living/silicon/robot/items/modules/robot_shield.dm b/code/modules/mob/living/silicon/robot/items/modules/robot_shield.dm
index 57a42c36b77..3462cb5b1e0 100644
--- a/code/modules/mob/living/silicon/robot/items/modules/robot_shield.dm
+++ b/code/modules/mob/living/silicon/robot/items/modules/robot_shield.dm
@@ -2,7 +2,7 @@
/obj/item/borg/combat/shield
name = "personal shielding"
desc = "A powerful experimental module that turns aside or absorbs incoming attacks at the cost of charge."
- icon = 'icons/obj/device.dmi'
+ icon = 'icons/obj/item/device/chameleon.dmi'
icon_state = "shield1" //placeholder for now // four fucking years alberyk. FOUR
var/shield_level = 0.5 //Percentage of damage absorbed by the shield.
diff --git a/code/modules/mob/living/silicon/robot/items/robot_inflatables.dm b/code/modules/mob/living/silicon/robot/items/robot_inflatables.dm
index b4028f26cd5..90924ff859d 100644
--- a/code/modules/mob/living/silicon/robot/items/robot_inflatables.dm
+++ b/code/modules/mob/living/silicon/robot/items/robot_inflatables.dm
@@ -6,6 +6,8 @@
desc = "Small device which allows rapid deployment and removal of inflatables."
icon = 'icons/obj/item/inflatables.dmi'
icon_state = "inf_deployer"
+ item_state = "RPED" //inhands
+ contained_sprite = TRUE
w_class = WEIGHT_CLASS_NORMAL
var/deploying = FALSE
var/max_walls = 10
diff --git a/code/modules/modular_computers/computers/subtypes/dev_pda.dm b/code/modules/modular_computers/computers/subtypes/dev_pda.dm
index b83d4e6da2c..8d4a2d09239 100644
--- a/code/modules/modular_computers/computers/subtypes/dev_pda.dm
+++ b/code/modules/modular_computers/computers/subtypes/dev_pda.dm
@@ -3,12 +3,9 @@
lexical_name = "tablet"
desc = "A personal data assistant. The latest in portable microcomputer solutions from Thinktronic Systems LTD."
icon = 'icons/obj/pda.dmi'
- item_icons = list(
- slot_l_hand_str = 'icons/mob/items/device/lefthand_device.dmi',
- slot_r_hand_str = 'icons/mob/items/device/righthand_device.dmi',
- )
icon_state = "pda"
item_state = "electronic"
+ contained_sprite = TRUE
icon_state_screensaver = "off"
icon_state_unpowered = "pda"
var/icon_add // this is the "bar" part in "pda-bar"
diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm
index 8fc0cc22a48..1f3b13341b3 100644
--- a/code/modules/paperwork/photocopier.dm
+++ b/code/modules/paperwork/photocopier.dm
@@ -281,5 +281,6 @@
/obj/item/device/toner
name = "toner cartridge"
desc = "A high-definition toner for colour photocopying and printer machines. Good thing it's a business expense."
+ icon = 'icons/obj/item/device/toner.dmi'
icon_state = "tonercartridge"
var/toner_amount = 30
diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm
index f6472d1f269..76ac5ed0da3 100644
--- a/code/modules/paperwork/photography.dm
+++ b/code/modules/paperwork/photography.dm
@@ -320,7 +320,6 @@ var/global/photo_count = 0
desc = "A slightly antiquated camera with a large flash bulb. Still popular with Tajara all over Adhomai."
icon_state = "taj_camera_on"
item_state = "taj_camera"
- contained_sprite = TRUE
slot_flags = SLOT_MASK
black_white = TRUE
icon_on = "taj_camera_on"
diff --git a/code/modules/paperwork/typewriter.dm b/code/modules/paperwork/typewriter.dm
index a1e9d45d230..4df61842b8e 100644
--- a/code/modules/paperwork/typewriter.dm
+++ b/code/modules/paperwork/typewriter.dm
@@ -11,7 +11,7 @@
which were once staples of Tajaran offices - have slowly become more uncommon. That \
said, rural areas and less urban parts of the planet still rely heavily on these machines."
icon_state = "typewriter"
- icon = 'icons/obj/device.dmi'
+ icon = 'icons/obj/bureaucracy.dmi'
force = 25
throwforce = 5
w_class = WEIGHT_CLASS_NORMAL
diff --git a/code/modules/power/tracker.dm b/code/modules/power/tracker.dm
index 72a93afbef4..91d875c3cca 100644
--- a/code/modules/power/tracker.dm
+++ b/code/modules/power/tracker.dm
@@ -77,6 +77,6 @@
/obj/item/tracker_electronics
name = "tracker electronics"
- icon = 'icons/obj/device.dmi'
+ icon = 'icons/obj/module.dmi'
icon_state = "door_electronics"
w_class = WEIGHT_CLASS_SMALL
diff --git a/code/modules/reagents/reagent_containers/welding_backpack.dm b/code/modules/reagents/reagent_containers/welding_backpack.dm
index 9dba3a49914..81663198dbd 100644
--- a/code/modules/reagents/reagent_containers/welding_backpack.dm
+++ b/code/modules/reagents/reagent_containers/welding_backpack.dm
@@ -2,7 +2,7 @@
name = "welding kit"
desc = "A heavy-duty, portable welding fluid carrier."
slot_flags = SLOT_BACK
- icon = 'icons/obj/item/tools/welderpack.dmi'
+ icon = 'icons/obj/item/reagent_containers/weldpack.dmi'
icon_state = "welderpack"
item_state = "welderpack"
contained_sprite = TRUE
diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm
index f8094ca8d57..1c838db90c0 100755
--- a/code/modules/recycling/sortingmachinery.dm
+++ b/code/modules/recycling/sortingmachinery.dm
@@ -250,8 +250,8 @@
/obj/item/device/destTagger
name = "destination tagger"
desc = "Used to set the destination of properly wrapped packages."
+ icon = 'icons/obj/item/device/dest_tagger.dmi'
icon_state = "dest_tagger"
- item_state = "dest_tagger"
var/currTag = 0
matter = list(DEFAULT_WALL_MATERIAL = 250, MATERIAL_GLASS = 140)
w_class = WEIGHT_CLASS_SMALL
diff --git a/code/modules/research/xenoarchaeology/chemistry.dm b/code/modules/research/xenoarchaeology/chemistry.dm
deleted file mode 100644
index 849418107b9..00000000000
--- a/code/modules/research/xenoarchaeology/chemistry.dm
+++ /dev/null
@@ -1,85 +0,0 @@
-
-//chemistry stuff here so that it can be easily viewed/modified
-
-/obj/item/reagent_containers/glass/solution_tray
- name = "solution tray"
- desc = "A small, open-topped glass container for delicate research samples. It sports a re-useable strip for labelling with a pen."
- icon = 'icons/obj/device.dmi'
- icon_state = "solution_tray"
- matter = list(MATERIAL_GLASS = 5)
- w_class = WEIGHT_CLASS_SMALL
- amount_per_transfer_from_this = 1
- possible_transfer_amounts = list(1, 2)
- volume = 2
- atom_flags = ATOM_FLAG_OPEN_CONTAINER
-
-/obj/item/reagent_containers/glass/solution_tray/attackby(obj/item/attacking_item, mob/user, params)
- if(attacking_item.ispen())
- var/new_label = sanitizeSafe( tgui_input_text(user, "What should the new label be?", "Label solution tray", max_length = MAX_NAME_LEN), MAX_NAME_LEN )
- if(new_label)
- name = "solution tray ([new_label])"
- to_chat(user, SPAN_NOTICE("You write on the label of the solution tray."))
- else
- return ..()
-
-/obj/item/storage/box/solution_trays
- name = "solution tray box"
- icon_state = "solution_trays"
-
-/obj/item/storage/box/solution_trays/fill()
- ..()
- new /obj/item/reagent_containers/glass/solution_tray( src )
- new /obj/item/reagent_containers/glass/solution_tray( src )
- new /obj/item/reagent_containers/glass/solution_tray( src )
- new /obj/item/reagent_containers/glass/solution_tray( src )
- new /obj/item/reagent_containers/glass/solution_tray( src )
- new /obj/item/reagent_containers/glass/solution_tray( src )
- new /obj/item/reagent_containers/glass/solution_tray( src )
-
-/obj/item/reagent_containers/glass/beaker/tungsten
- name = "beaker 'tungsten'"
-
-/obj/item/reagent_containers/glass/beaker/tungsten/Initialize()
- . = ..()
- reagents.add_reagent(/singleton/reagent/tungsten,50)
- update_icon()
-
-/obj/item/reagent_containers/glass/beaker/oxygen
- name = "beaker 'oxygen'"
-
-/obj/item/reagent_containers/glass/beaker/oxygen/Initialize()
- . = ..()
- reagents.add_reagent(/singleton/reagent/acetone,50)
- update_icon()
-
-/obj/item/reagent_containers/glass/beaker/sodium
- name = "beaker 'sodium'"
-
-/obj/item/reagent_containers/glass/beaker/sodium/Initialize()
- . = ..()
- reagents.add_reagent(/singleton/reagent/sodium,50)
- update_icon()
-
-/obj/item/reagent_containers/glass/beaker/lithium
- name = "beaker 'lithium'"
-
-/obj/item/reagent_containers/glass/beaker/lithium/Initialize()
- . = ..()
- reagents.add_reagent(/singleton/reagent/lithium,50)
- update_icon()
-
-/obj/item/reagent_containers/glass/beaker/water
- name = "beaker 'water'"
-
-/obj/item/reagent_containers/glass/beaker/water/Initialize()
- . = ..()
- reagents.add_reagent(/singleton/reagent/water,50)
- update_icon()
-
-/obj/item/reagent_containers/glass/beaker/fuel
- name = "beaker 'fuel'"
-
-/obj/item/reagent_containers/glass/beaker/fuel/Initialize()
- . = ..()
- reagents.add_reagent(/singleton/reagent/fuel,50)
- update_icon()
diff --git a/code/modules/research/xenoarchaeology/tools/tools.dm b/code/modules/research/xenoarchaeology/tools/tools.dm
index c0d77fddbf0..cc59a5574bb 100644
--- a/code/modules/research/xenoarchaeology/tools/tools.dm
+++ b/code/modules/research/xenoarchaeology/tools/tools.dm
@@ -2,21 +2,6 @@
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Miscellaneous xenoarchaeology tools
-/obj/item/device/gps
- name = "relay positioning device"
- desc = "Triangulates the approximate co-ordinates using a nearby satellite network."
- icon = 'icons/obj/device.dmi'
- icon_state = "locator"
- item_state = "locator"
- w_class = WEIGHT_CLASS_SMALL
-
-/obj/item/device/gps/attack_self(var/mob/user as mob)
- if(!emped)
- ui_interact(user)
-
- var/turf/T = get_turf(src)
- to_chat(user, SPAN_NOTICE("[icon2html(src, user)] [src] flashes [T.x].[rand(0,9)]:[T.y].[rand(0,9)]:[T.z].[rand(0,9)]."))
-
/obj/item/device/measuring_tape
name = "measuring tape"
desc = "A coiled metallic tape used to check dimensions and lengths."
diff --git a/code/modules/research/xenoarchaeology/tools/tools_anoscanner.dm b/code/modules/research/xenoarchaeology/tools/tools_anoscanner.dm
index a01a3154e8d..09c0cc4b50f 100644
--- a/code/modules/research/xenoarchaeology/tools/tools_anoscanner.dm
+++ b/code/modules/research/xenoarchaeology/tools/tools_anoscanner.dm
@@ -5,7 +5,6 @@
icon = 'icons/obj/xenoarchaeology.dmi'
icon_state = "xenoarch_scanner"
item_state = "xenoarch_scanner"
- contained_sprite = TRUE
w_class = WEIGHT_CLASS_SMALL
slot_flags = SLOT_BELT
var/nearest_artifact_id = "unknown"
diff --git a/code/modules/research/xenoarchaeology/tools/tools_depthscanner.dm b/code/modules/research/xenoarchaeology/tools/tools_depthscanner.dm
index 2a2afabe50c..b36263ee05c 100644
--- a/code/modules/research/xenoarchaeology/tools/tools_depthscanner.dm
+++ b/code/modules/research/xenoarchaeology/tools/tools_depthscanner.dm
@@ -9,7 +9,6 @@
icon = 'icons/obj/xenoarchaeology.dmi'
icon_state = "depth_scanner"
item_state = "depth_scanner"
- contained_sprite = TRUE
w_class = WEIGHT_CLASS_SMALL
slot_flags = SLOT_BELT
var/list/positive_locations = list()
diff --git a/code/modules/research/xenoarchaeology/tools/tools_locater.dm b/code/modules/research/xenoarchaeology/tools/tools_locater.dm
index 6b231b95d82..ea9eca98579 100644
--- a/code/modules/research/xenoarchaeology/tools/tools_locater.dm
+++ b/code/modules/research/xenoarchaeology/tools/tools_locater.dm
@@ -5,7 +5,7 @@
/obj/item/device/beacon_locator
name = "locater device"
desc = "Used to scan and locate signals on a particular frequency according ."
- icon = 'icons/obj/device.dmi'
+ icon = 'icons/obj/item/pinpointer.dmi'
icon_state = "pinoff" //pinonfar, pinonmedium, pinonclose, pinondirect, pinonnull
item_state = "electronic"
var/frequency = PUB_FREQ
diff --git a/code/modules/telesci/gps.dm b/code/modules/telesci/gps.dm
index a1189f481f6..c85074a4e9a 100644
--- a/code/modules/telesci/gps.dm
+++ b/code/modules/telesci/gps.dm
@@ -3,8 +3,9 @@ GLOBAL_LIST_EMPTY(gps_list)
/obj/item/device/gps
name = "global positioning system"
desc = "Helping lost spacemen find their way through the planets since 2016."
- icon = 'icons/obj/telescience.dmi'
+ icon = 'icons/obj/item/device/gps.dmi'
icon_state = "gps-com"
+ item_state = "radio"
w_class = WEIGHT_CLASS_SMALL
slot_flags = SLOT_BELT
origin_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2)
diff --git a/code/modules/telesci/telepad.dm b/code/modules/telesci/telepad.dm
index f551e2952b2..bb04464716b 100644
--- a/code/modules/telesci/telepad.dm
+++ b/code/modules/telesci/telepad.dm
@@ -91,6 +91,7 @@
icon = 'icons/obj/radio.dmi'
icon_state = "beacon"
item_state = "signaler"
+
origin_tech = list(TECH_BLUESPACE = 3)
/obj/item/device/telepad_beacon/attack_self(mob/user)
diff --git a/html/changelogs/wezzy_device_resprite.yml b/html/changelogs/wezzy_device_resprite.yml
new file mode 100644
index 00000000000..b455716d1c8
--- /dev/null
+++ b/html/changelogs/wezzy_device_resprite.yml
@@ -0,0 +1,60 @@
+################################
+# Example Changelog File
+#
+# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
+#
+# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
+# When it is, any changes listed below will disappear.
+#
+# Valid Prefixes:
+# bugfix
+# - (fixes bugs)
+# wip
+# - (work in progress)
+# qol
+# - (quality of life)
+# soundadd
+# - (adds a sound)
+# sounddel
+# - (removes a sound)
+# rscadd
+# - (adds a feature)
+# rscdel
+# - (removes a feature)
+# imageadd
+# - (adds an image or sprite)
+# imagedel
+# - (removes an image or sprite)
+# spellcheck
+# - (fixes spelling or grammar)
+# experiment
+# - (experimental change)
+# balance
+# - (balance changes)
+# code_imp
+# - (misc internal code change)
+# refactor
+# - (refactors code)
+# config
+# - (makes a change to the config files)
+# admin
+# - (makes changes to administrator tools)
+# server
+# - (miscellaneous changes to server)
+#################################
+
+# Your name.
+author: Wowzewow (Wezzy)
+
+# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
+delete-after: True
+
+# Any changes you've made. See valid prefix list above.
+# INDENT WITH TWO SPACES. NOT TABS. SPACES.
+# SCREW THIS UP AND IT WON'T WORK.
+# Also, this gets changed to [] after reading. Just remove the brackets when you add new shit.
+# Please surround your changes in double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog.
+changes:
+ - imageadd: "Resprites devices, fixes inhands, puts them in contained sprites."
+ - imageadd: "Adds new mounted flash sprites."
+ - imagedel: "Removes superfluous GPS item."
diff --git a/icons/mob/belt.dmi b/icons/mob/belt.dmi
index f2b52800870..882722c1ac0 100644
Binary files a/icons/mob/belt.dmi and b/icons/mob/belt.dmi differ
diff --git a/icons/mob/items/device/lefthand_device.dmi b/icons/mob/items/device/lefthand_device.dmi
deleted file mode 100644
index 6d7d030aa07..00000000000
Binary files a/icons/mob/items/device/lefthand_device.dmi and /dev/null differ
diff --git a/icons/mob/items/device/righthand_device.dmi b/icons/mob/items/device/righthand_device.dmi
deleted file mode 100644
index b8a73fea8c6..00000000000
Binary files a/icons/mob/items/device/righthand_device.dmi and /dev/null differ
diff --git a/icons/mob/l_ear.dmi b/icons/mob/l_ear.dmi
index dc291ade7d5..28e34ea2592 100644
Binary files a/icons/mob/l_ear.dmi and b/icons/mob/l_ear.dmi differ
diff --git a/icons/mob/r_ear.dmi b/icons/mob/r_ear.dmi
index dbca57ef90b..817602ea7d3 100644
Binary files a/icons/mob/r_ear.dmi and b/icons/mob/r_ear.dmi differ
diff --git a/icons/mob/wrist.dmi b/icons/mob/wrist.dmi
index e474e484895..fe2a3c414b9 100644
Binary files a/icons/mob/wrist.dmi and b/icons/mob/wrist.dmi differ
diff --git a/icons/obj/assemblies/electronic_setups.dmi b/icons/obj/assemblies/electronic_setups.dmi
index 58ef0903beb..d3b96886437 100644
Binary files a/icons/obj/assemblies/electronic_setups.dmi and b/icons/obj/assemblies/electronic_setups.dmi differ
diff --git a/icons/obj/assemblies/new_assemblies.dmi b/icons/obj/assemblies/new_assemblies.dmi
index f05f10faafd..f71830bf0b5 100644
Binary files a/icons/obj/assemblies/new_assemblies.dmi and b/icons/obj/assemblies/new_assemblies.dmi differ
diff --git a/icons/obj/bureaucracy.dmi b/icons/obj/bureaucracy.dmi
index 3f3b573a8eb..e3233825df6 100644
Binary files a/icons/obj/bureaucracy.dmi and b/icons/obj/bureaucracy.dmi differ
diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi
index 76966349973..cf74d73796c 100644
Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ
diff --git a/icons/obj/item/adv_mining_scanner.dmi b/icons/obj/item/adv_mining_scanner.dmi
new file mode 100644
index 00000000000..ffbc48ce56d
Binary files /dev/null and b/icons/obj/item/adv_mining_scanner.dmi differ
diff --git a/icons/obj/item/autoimplanter.dmi b/icons/obj/item/autoimplanter.dmi
new file mode 100644
index 00000000000..3985ee17fd9
Binary files /dev/null and b/icons/obj/item/autoimplanter.dmi differ
diff --git a/icons/obj/item/autopsy_scanner.dmi b/icons/obj/item/autopsy_scanner.dmi
new file mode 100644
index 00000000000..6bda17e0eb7
Binary files /dev/null and b/icons/obj/item/autopsy_scanner.dmi differ
diff --git a/icons/obj/item/tools/blueprints.dmi b/icons/obj/item/blueprints.dmi
similarity index 100%
rename from icons/obj/item/tools/blueprints.dmi
rename to icons/obj/item/blueprints.dmi
diff --git a/icons/obj/item/clothing/suit/storage/toggle/labcoat.dmi b/icons/obj/item/clothing/suit/storage/toggle/labcoat.dmi
index fefe6dd8d50..807bb5b816d 100644
Binary files a/icons/obj/item/clothing/suit/storage/toggle/labcoat.dmi and b/icons/obj/item/clothing/suit/storage/toggle/labcoat.dmi differ
diff --git a/icons/obj/item/device/advanced_healthanalyzer.dmi b/icons/obj/item/device/advanced_healthanalyzer.dmi
new file mode 100644
index 00000000000..1e5657ae5fa
Binary files /dev/null and b/icons/obj/item/device/advanced_healthanalyzer.dmi differ
diff --git a/icons/obj/item/tools/air_analyzer.dmi b/icons/obj/item/device/air_analyzer.dmi
similarity index 100%
rename from icons/obj/item/tools/air_analyzer.dmi
rename to icons/obj/item/device/air_analyzer.dmi
diff --git a/icons/obj/item/device/batterer.dmi b/icons/obj/item/device/batterer.dmi
new file mode 100644
index 00000000000..3976abe1759
Binary files /dev/null and b/icons/obj/item/device/batterer.dmi differ
diff --git a/icons/obj/item/device/binoculars.dmi b/icons/obj/item/device/binoculars.dmi
new file mode 100644
index 00000000000..124d8aaaff7
Binary files /dev/null and b/icons/obj/item/device/binoculars.dmi differ
diff --git a/icons/obj/item/device/breath_analyzer.dmi b/icons/obj/item/device/breath_analyzer.dmi
new file mode 100644
index 00000000000..dbef0c6b023
Binary files /dev/null and b/icons/obj/item/device/breath_analyzer.dmi differ
diff --git a/icons/obj/item/device/chameleon.dmi b/icons/obj/item/device/chameleon.dmi
new file mode 100644
index 00000000000..2b0035a97ac
Binary files /dev/null and b/icons/obj/item/device/chameleon.dmi differ
diff --git a/icons/obj/item/device/cratescanner.dmi b/icons/obj/item/device/cratescanner.dmi
new file mode 100644
index 00000000000..fd5b2bccee6
Binary files /dev/null and b/icons/obj/item/device/cratescanner.dmi differ
diff --git a/icons/obj/item/device/dest_tagger.dmi b/icons/obj/item/device/dest_tagger.dmi
new file mode 100644
index 00000000000..7cbb0324c6b
Binary files /dev/null and b/icons/obj/item/device/dest_tagger.dmi differ
diff --git a/icons/obj/item/device/eftpos.dmi b/icons/obj/item/device/eftpos.dmi
new file mode 100644
index 00000000000..be1f0746c63
Binary files /dev/null and b/icons/obj/item/device/eftpos.dmi differ
diff --git a/icons/obj/item/device/encryptionkey.dmi b/icons/obj/item/device/encryptionkey.dmi
new file mode 100644
index 00000000000..a48545bafda
Binary files /dev/null and b/icons/obj/item/device/encryptionkey.dmi differ
diff --git a/icons/obj/item/device/flash.dmi b/icons/obj/item/device/flash.dmi
new file mode 100644
index 00000000000..60ed46d7fc0
Binary files /dev/null and b/icons/obj/item/device/flash.dmi differ
diff --git a/icons/obj/item/device/gps.dmi b/icons/obj/item/device/gps.dmi
new file mode 100644
index 00000000000..e1c81842503
Binary files /dev/null and b/icons/obj/item/device/gps.dmi differ
diff --git a/icons/obj/item/device/hailer.dmi b/icons/obj/item/device/hailer.dmi
new file mode 100644
index 00000000000..052762299f8
Binary files /dev/null and b/icons/obj/item/device/hailer.dmi differ
diff --git a/icons/obj/item/device/healthanalyzer.dmi b/icons/obj/item/device/healthanalyzer.dmi
new file mode 100644
index 00000000000..7ee9c251d57
Binary files /dev/null and b/icons/obj/item/device/healthanalyzer.dmi differ
diff --git a/icons/obj/hearing_aid.dmi b/icons/obj/item/device/hearing_aid.dmi
similarity index 100%
rename from icons/obj/hearing_aid.dmi
rename to icons/obj/item/device/hearing_aid.dmi
diff --git a/icons/obj/item/device/kinetic_analyzer.dmi b/icons/obj/item/device/kinetic_analyzer.dmi
new file mode 100644
index 00000000000..de2ab56614a
Binary files /dev/null and b/icons/obj/item/device/kinetic_analyzer.dmi differ
diff --git a/icons/obj/item/device/laser_pointer.dmi b/icons/obj/item/device/laser_pointer.dmi
new file mode 100644
index 00000000000..112873240f6
Binary files /dev/null and b/icons/obj/item/device/laser_pointer.dmi differ
diff --git a/icons/obj/item/device/mass_spectrometer.dmi b/icons/obj/item/device/mass_spectrometer.dmi
new file mode 100644
index 00000000000..2df3712d33e
Binary files /dev/null and b/icons/obj/item/device/mass_spectrometer.dmi differ
diff --git a/icons/obj/item/tools/megaphone.dmi b/icons/obj/item/device/megaphone.dmi
similarity index 100%
rename from icons/obj/item/tools/megaphone.dmi
rename to icons/obj/item/device/megaphone.dmi
diff --git a/icons/obj/item/device/modkit.dmi b/icons/obj/item/device/modkit.dmi
new file mode 100644
index 00000000000..34932f92e27
Binary files /dev/null and b/icons/obj/item/device/modkit.dmi differ
diff --git a/icons/obj/item/tools/multitool.dmi b/icons/obj/item/device/multitool.dmi
similarity index 100%
rename from icons/obj/item/tools/multitool.dmi
rename to icons/obj/item/device/multitool.dmi
diff --git a/icons/obj/item/device/oxycandle.dmi b/icons/obj/item/device/oxycandle.dmi
new file mode 100644
index 00000000000..532e50bccf2
Binary files /dev/null and b/icons/obj/item/device/oxycandle.dmi differ
diff --git a/icons/obj/item/device/paint_sprayer.dmi b/icons/obj/item/device/paint_sprayer.dmi
new file mode 100644
index 00000000000..324d59e01b5
Binary files /dev/null and b/icons/obj/item/device/paint_sprayer.dmi differ
diff --git a/icons/obj/item/device/pin_extractor.dmi b/icons/obj/item/device/pin_extractor.dmi
new file mode 100644
index 00000000000..721e606b2b0
Binary files /dev/null and b/icons/obj/item/device/pin_extractor.dmi differ
diff --git a/icons/obj/item/tools/pipe_painter.dmi b/icons/obj/item/device/pipe_painter.dmi
similarity index 100%
rename from icons/obj/item/tools/pipe_painter.dmi
rename to icons/obj/item/device/pipe_painter.dmi
diff --git a/icons/obj/item/device/plant_analyzer.dmi b/icons/obj/item/device/plant_analyzer.dmi
new file mode 100644
index 00000000000..7b13bbab2c5
Binary files /dev/null and b/icons/obj/item/device/plant_analyzer.dmi differ
diff --git a/icons/obj/item/device/powersink.dmi b/icons/obj/item/device/powersink.dmi
new file mode 100644
index 00000000000..1947908513a
Binary files /dev/null and b/icons/obj/item/device/powersink.dmi differ
diff --git a/icons/obj/item/device/price_scanner.dmi b/icons/obj/item/device/price_scanner.dmi
new file mode 100644
index 00000000000..f3be844e2c0
Binary files /dev/null and b/icons/obj/item/device/price_scanner.dmi differ
diff --git a/icons/obj/item/device/radio/headset.dmi b/icons/obj/item/device/radio/headset.dmi
new file mode 100644
index 00000000000..c953fe497fb
Binary files /dev/null and b/icons/obj/item/device/radio/headset.dmi differ
diff --git a/icons/obj/item/device/radio/headset_alt.dmi b/icons/obj/item/device/radio/headset_alt.dmi
new file mode 100644
index 00000000000..f82b642696f
Binary files /dev/null and b/icons/obj/item/device/radio/headset_alt.dmi differ
diff --git a/icons/obj/item/device/radio/headset_alt_double.dmi b/icons/obj/item/device/radio/headset_alt_double.dmi
new file mode 100644
index 00000000000..88c02247cd4
Binary files /dev/null and b/icons/obj/item/device/radio/headset_alt_double.dmi differ
diff --git a/icons/obj/item/device/radio/headset_clip.dmi b/icons/obj/item/device/radio/headset_clip.dmi
new file mode 100644
index 00000000000..a7c705e892b
Binary files /dev/null and b/icons/obj/item/device/radio/headset_clip.dmi differ
diff --git a/icons/obj/item/device/radio/headset_wrist.dmi b/icons/obj/item/device/radio/headset_wrist.dmi
new file mode 100644
index 00000000000..29d5d7e6c92
Binary files /dev/null and b/icons/obj/item/device/radio/headset_wrist.dmi differ
diff --git a/icons/obj/item/device/reagent_scanner.dmi b/icons/obj/item/device/reagent_scanner.dmi
new file mode 100644
index 00000000000..cdd9077b7d9
Binary files /dev/null and b/icons/obj/item/device/reagent_scanner.dmi differ
diff --git a/icons/obj/item/device/robotanalyzer.dmi b/icons/obj/item/device/robotanalyzer.dmi
new file mode 100644
index 00000000000..6ed501d5f92
Binary files /dev/null and b/icons/obj/item/device/robotanalyzer.dmi differ
diff --git a/icons/obj/item/device/slime_scanner.dmi b/icons/obj/item/device/slime_scanner.dmi
new file mode 100644
index 00000000000..c2930820dfa
Binary files /dev/null and b/icons/obj/item/device/slime_scanner.dmi differ
diff --git a/icons/obj/item/tools/suitcooler.dmi b/icons/obj/item/device/suitcooler.dmi
similarity index 100%
rename from icons/obj/item/tools/suitcooler.dmi
rename to icons/obj/item/device/suitcooler.dmi
diff --git a/icons/obj/item/device/suitrecord.dmi b/icons/obj/item/device/suitrecord.dmi
new file mode 100644
index 00000000000..593d51ec4c3
Binary files /dev/null and b/icons/obj/item/device/suitrecord.dmi differ
diff --git a/icons/obj/item/tools/t_scanner.dmi b/icons/obj/item/device/t_scanner.dmi
similarity index 100%
rename from icons/obj/item/tools/t_scanner.dmi
rename to icons/obj/item/device/t_scanner.dmi
diff --git a/icons/obj/item/device/taperecorder.dmi b/icons/obj/item/device/taperecorder.dmi
new file mode 100644
index 00000000000..b83eae6cfd6
Binary files /dev/null and b/icons/obj/item/device/taperecorder.dmi differ
diff --git a/icons/obj/item/device/toner.dmi b/icons/obj/item/device/toner.dmi
new file mode 100644
index 00000000000..392d2533778
Binary files /dev/null and b/icons/obj/item/device/toner.dmi differ
diff --git a/icons/obj/item/device/tvcamera.dmi b/icons/obj/item/device/tvcamera.dmi
new file mode 100644
index 00000000000..03f1eb4fabf
Binary files /dev/null and b/icons/obj/item/device/tvcamera.dmi differ
diff --git a/icons/obj/item/device/uv_light.dmi b/icons/obj/item/device/uv_light.dmi
new file mode 100644
index 00000000000..67c29327d75
Binary files /dev/null and b/icons/obj/item/device/uv_light.dmi differ
diff --git a/icons/obj/item/drills.dmi b/icons/obj/item/drills.dmi
new file mode 100644
index 00000000000..23d14f2914f
Binary files /dev/null and b/icons/obj/item/drills.dmi differ
diff --git a/icons/obj/item/gripper.dmi b/icons/obj/item/gripper.dmi
new file mode 100644
index 00000000000..290a65191f6
Binary files /dev/null and b/icons/obj/item/gripper.dmi differ
diff --git a/icons/obj/item/hand_tele.dmi b/icons/obj/item/hand_tele.dmi
new file mode 100644
index 00000000000..1371c1d5b54
Binary files /dev/null and b/icons/obj/item/hand_tele.dmi differ
diff --git a/icons/obj/item/tools/hydraulic_rescue_tool.dmi b/icons/obj/item/hydraulic_rescue_tool.dmi
similarity index 63%
rename from icons/obj/item/tools/hydraulic_rescue_tool.dmi
rename to icons/obj/item/hydraulic_rescue_tool.dmi
index 3cb15d1f4ca..ac40068a16f 100644
Binary files a/icons/obj/item/tools/hydraulic_rescue_tool.dmi and b/icons/obj/item/hydraulic_rescue_tool.dmi differ
diff --git a/icons/obj/item/tools/impact_wrench.dmi b/icons/obj/item/impact_wrench.dmi
similarity index 100%
rename from icons/obj/item/tools/impact_wrench.dmi
rename to icons/obj/item/impact_wrench.dmi
diff --git a/icons/obj/item/tools/inductive_charger.dmi b/icons/obj/item/inductive_charger.dmi
similarity index 100%
rename from icons/obj/item/tools/inductive_charger.dmi
rename to icons/obj/item/inductive_charger.dmi
diff --git a/icons/obj/item/inflatables.dmi b/icons/obj/item/inflatables.dmi
index 4dc87f571ff..473b81a0237 100644
Binary files a/icons/obj/item/inflatables.dmi and b/icons/obj/item/inflatables.dmi differ
diff --git a/icons/obj/item/tools/knitting.dmi b/icons/obj/item/knitting.dmi
similarity index 100%
rename from icons/obj/item/tools/knitting.dmi
rename to icons/obj/item/knitting.dmi
diff --git a/icons/obj/item/mining_scanner.dmi b/icons/obj/item/mining_scanner.dmi
new file mode 100644
index 00000000000..50573c04123
Binary files /dev/null and b/icons/obj/item/mining_scanner.dmi differ
diff --git a/icons/obj/item/tools/neutralizer.dmi b/icons/obj/item/neutralizer.dmi
similarity index 100%
rename from icons/obj/item/tools/neutralizer.dmi
rename to icons/obj/item/neutralizer.dmi
diff --git a/icons/obj/item/pinpointer.dmi b/icons/obj/item/pinpointer.dmi
new file mode 100644
index 00000000000..d8bf54454c2
Binary files /dev/null and b/icons/obj/item/pinpointer.dmi differ
diff --git a/icons/obj/item/reagent_containers/syringe.dmi b/icons/obj/item/reagent_containers/syringe.dmi
index c39b61a7826..0f4139c10e1 100644
Binary files a/icons/obj/item/reagent_containers/syringe.dmi and b/icons/obj/item/reagent_containers/syringe.dmi differ
diff --git a/icons/obj/item/tools/welderpack.dmi b/icons/obj/item/reagent_containers/weldpack.dmi
similarity index 100%
rename from icons/obj/item/tools/welderpack.dmi
rename to icons/obj/item/reagent_containers/weldpack.dmi
diff --git a/icons/obj/item/tools/research_slip.dmi b/icons/obj/item/research_slip.dmi
similarity index 100%
rename from icons/obj/item/tools/research_slip.dmi
rename to icons/obj/item/research_slip.dmi
diff --git a/icons/obj/item/tools/drills.dmi b/icons/obj/item/tools/drills.dmi
deleted file mode 100644
index 4199e794a2e..00000000000
Binary files a/icons/obj/item/tools/drills.dmi and /dev/null differ
diff --git a/icons/obj/item/tools/ore_scanner.dmi b/icons/obj/item/tools/ore_scanner.dmi
deleted file mode 100644
index 7109a9729ff..00000000000
Binary files a/icons/obj/item/tools/ore_scanner.dmi and /dev/null differ
diff --git a/icons/obj/item/tools/paint_sprayer.dmi b/icons/obj/item/tools/paint_sprayer.dmi
deleted file mode 100644
index 7c4979b9b5c..00000000000
Binary files a/icons/obj/item/tools/paint_sprayer.dmi and /dev/null differ
diff --git a/icons/obj/item/tools/plant_analyzer.dmi b/icons/obj/item/tools/plant_analyzer.dmi
deleted file mode 100644
index 18276765780..00000000000
Binary files a/icons/obj/item/tools/plant_analyzer.dmi and /dev/null differ
diff --git a/icons/obj/item/tools/radio/clip.dmi b/icons/obj/item/tools/radio/clip.dmi
deleted file mode 100644
index ba73eb5d0a6..00000000000
Binary files a/icons/obj/item/tools/radio/clip.dmi and /dev/null differ
diff --git a/icons/obj/item/tools/vitals_monitor.dmi b/icons/obj/item/vitals_monitor.dmi
similarity index 100%
rename from icons/obj/item/tools/vitals_monitor.dmi
rename to icons/obj/item/vitals_monitor.dmi
diff --git a/icons/obj/item/tools/welding_tools.dmi b/icons/obj/item/welding_tools.dmi
similarity index 96%
rename from icons/obj/item/tools/welding_tools.dmi
rename to icons/obj/item/welding_tools.dmi
index f79247fabbe..4ee0f5419ee 100644
Binary files a/icons/obj/item/tools/welding_tools.dmi and b/icons/obj/item/welding_tools.dmi differ
diff --git a/icons/obj/machinery/ai_slipper.dmi b/icons/obj/machinery/ai_slipper.dmi
new file mode 100644
index 00000000000..99f8386c704
Binary files /dev/null and b/icons/obj/machinery/ai_slipper.dmi differ
diff --git a/icons/obj/machinery/cell_charger.dmi b/icons/obj/machinery/cell_charger.dmi
index f8179283089..228d3e4bfdb 100644
Binary files a/icons/obj/machinery/cell_charger.dmi and b/icons/obj/machinery/cell_charger.dmi differ
diff --git a/icons/obj/module.dmi b/icons/obj/module.dmi
index c2b4465b737..07ae5ba887f 100644
Binary files a/icons/obj/module.dmi and b/icons/obj/module.dmi differ
diff --git a/icons/obj/musician.dmi b/icons/obj/musician.dmi
index 5d75e3e1519..e98bd021dc6 100644
Binary files a/icons/obj/musician.dmi and b/icons/obj/musician.dmi differ
diff --git a/icons/obj/pda.dmi b/icons/obj/pda.dmi
index a5fad2ea873..99d113811f1 100644
Binary files a/icons/obj/pda.dmi and b/icons/obj/pda.dmi differ
diff --git a/icons/obj/pda_old.dmi b/icons/obj/pda_old.dmi
index 22c049591d1..35ff46b31de 100644
Binary files a/icons/obj/pda_old.dmi and b/icons/obj/pda_old.dmi differ
diff --git a/icons/obj/pda_rugged.dmi b/icons/obj/pda_rugged.dmi
index 6e1b1c8adf9..f41a51ffcb7 100644
Binary files a/icons/obj/pda_rugged.dmi and b/icons/obj/pda_rugged.dmi differ
diff --git a/icons/obj/pda_slate.dmi b/icons/obj/pda_slate.dmi
index a9d91bece17..a4c035dd256 100644
Binary files a/icons/obj/pda_slate.dmi and b/icons/obj/pda_slate.dmi differ
diff --git a/icons/obj/pda_smart.dmi b/icons/obj/pda_smart.dmi
index 707b7a41554..d1d53d5e632 100644
Binary files a/icons/obj/pda_smart.dmi and b/icons/obj/pda_smart.dmi differ
diff --git a/icons/obj/power.dmi b/icons/obj/power.dmi
index 6f1b6910412..7c2ee3f6edb 100644
Binary files a/icons/obj/power.dmi and b/icons/obj/power.dmi differ
diff --git a/icons/obj/radio.dmi b/icons/obj/radio.dmi
index cf22341c8df..da2757870ae 100644
Binary files a/icons/obj/radio.dmi and b/icons/obj/radio.dmi differ
diff --git a/icons/obj/stationobjs.dmi b/icons/obj/stationobjs.dmi
index 6fbe5c42140..1680b6ea2e4 100644
Binary files a/icons/obj/stationobjs.dmi and b/icons/obj/stationobjs.dmi differ
diff --git a/icons/obj/storage/misc.dmi b/icons/obj/storage/misc.dmi
index 965a610cf85..db52905a363 100644
Binary files a/icons/obj/storage/misc.dmi and b/icons/obj/storage/misc.dmi differ
diff --git a/icons/obj/tank.dmi b/icons/obj/tank.dmi
index 1b2dc5195c2..e59a05128ce 100644
Binary files a/icons/obj/tank.dmi and b/icons/obj/tank.dmi differ
diff --git a/icons/obj/telescience.dmi b/icons/obj/telescience.dmi
index bd8ed1da51e..95e68105b98 100644
Binary files a/icons/obj/telescience.dmi and b/icons/obj/telescience.dmi differ
diff --git a/maps/away/ships/konyang/ipc_refugee/ipc_refugee_ship.dmm b/maps/away/ships/konyang/ipc_refugee/ipc_refugee_ship.dmm
index 41df7724e2e..bbfc85bd995 100644
--- a/maps/away/ships/konyang/ipc_refugee/ipc_refugee_ship.dmm
+++ b/maps/away/ships/konyang/ipc_refugee/ipc_refugee_ship.dmm
@@ -1837,7 +1837,7 @@
},
/obj/effect/decal/fake_object{
name = "Impact Wrench";
- icon = 'icons/obj/item/tools/impact_wrench.dmi';
+ icon = 'icons/obj/item/impact_wrench.dmi';
icon_state = "impact_wrench_lh";
dir = 8;
pixel_y = 20;