diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_syndidome.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_syndidome.dmm
index f93bfc737a0..07e7273ca21 100644
--- a/_maps/RandomRuins/IceRuins/icemoon_underground_syndidome.dmm
+++ b/_maps/RandomRuins/IceRuins/icemoon_underground_syndidome.dmm
@@ -4051,11 +4051,11 @@
/area/icemoon/surface/outdoors/noteleport)
"UK" = (
/obj/structure/table/reinforced/plastitaniumglass,
-/obj/item/computer_disk{
+/obj/item/disk/computer{
pixel_x = -5;
pixel_y = 8
},
-/obj/item/computer_disk{
+/obj/item/disk/computer{
pixel_x = 4;
pixel_y = 5
},
diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_syndielab.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_syndielab.dmm
index 0ce6fd74481..2d65f7ff2a0 100644
--- a/_maps/RandomRuins/IceRuins/icemoon_underground_syndielab.dmm
+++ b/_maps/RandomRuins/IceRuins/icemoon_underground_syndielab.dmm
@@ -680,7 +680,7 @@
/area/ruin/syndielab)
"QO" = (
/obj/structure/table/reinforced/plastitaniumglass,
-/obj/item/computer_disk/syndicate/camera_app{
+/obj/item/disk/computer/syndicate/camera_app{
pixel_y = 4;
pixel_x = -5
},
diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_crashsite.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_crashsite.dmm
index 4a162ed4e76..ef3307e388d 100644
--- a/_maps/RandomRuins/LavaRuins/lavaland_surface_crashsite.dmm
+++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_crashsite.dmm
@@ -54,7 +54,7 @@
/obj/structure/chair/comfy/shuttle{
dir = 4
},
-/obj/item/bitrunning_disk/item/pka_mods,
+/obj/item/disk/bitrunning/item/pka_mods,
/turf/open/floor/mineral/titanium/blue,
/area/ruin/unpowered)
"k" = (
diff --git a/_maps/RandomRuins/SpaceRuins/anomaly_research.dmm b/_maps/RandomRuins/SpaceRuins/anomaly_research.dmm
index 17fe1864a16..88e51a612a6 100644
--- a/_maps/RandomRuins/SpaceRuins/anomaly_research.dmm
+++ b/_maps/RandomRuins/SpaceRuins/anomaly_research.dmm
@@ -269,7 +269,7 @@
dir = 4
},
/obj/structure/table/wood,
-/obj/item/computer_disk/ordnance,
+/obj/item/disk/computer/ordnance,
/turf/open/floor/iron/dark,
/area/misc/anomaly_research)
"iq" = (
diff --git a/_maps/RandomRuins/SpaceRuins/derelict7.dmm b/_maps/RandomRuins/SpaceRuins/derelict7.dmm
index 49cd1a71613..d12954efd2c 100644
--- a/_maps/RandomRuins/SpaceRuins/derelict7.dmm
+++ b/_maps/RandomRuins/SpaceRuins/derelict7.dmm
@@ -265,7 +265,7 @@
/obj/effect/turf_decal/trimline/neutral/warning{
dir = 1
},
-/obj/item/computer_disk/ordnance,
+/obj/item/disk/computer/ordnance,
/turf/open/floor/iron/dark/side/airless{
dir = 1
},
diff --git a/_maps/RandomRuins/SpaceRuins/garbagetruck4.dmm b/_maps/RandomRuins/SpaceRuins/garbagetruck4.dmm
index 10c1a56fa26..627842aa210 100644
--- a/_maps/RandomRuins/SpaceRuins/garbagetruck4.dmm
+++ b/_maps/RandomRuins/SpaceRuins/garbagetruck4.dmm
@@ -635,8 +635,8 @@
"JI" = (
/obj/item/dice/d10,
/obj/structure/filingcabinet/chestdrawer,
-/obj/item/computer_disk/maintenance/modsuit_control,
-/obj/item/computer_disk/maintenance/modsuit_control,
+/obj/item/disk/computer/maintenance/modsuit_control,
+/obj/item/disk/computer/maintenance/modsuit_control,
/turf/open/floor/plating,
/area/ruin/space/has_grav/garbagetruck/toystore)
"KR" = (
diff --git a/_maps/RandomRuins/SpaceRuins/old_infiltrator.dmm b/_maps/RandomRuins/SpaceRuins/old_infiltrator.dmm
index 082f1341908..a98f08c1948 100644
--- a/_maps/RandomRuins/SpaceRuins/old_infiltrator.dmm
+++ b/_maps/RandomRuins/SpaceRuins/old_infiltrator.dmm
@@ -215,7 +215,7 @@
pixel_y = -4;
pixel_x = -7
},
-/obj/item/computer_disk/syndicate/camera_app{
+/obj/item/disk/computer/syndicate/camera_app{
pixel_x = -5;
pixel_y = 9
},
diff --git a/_maps/RandomRuins/SpaceRuins/oldstation.dmm b/_maps/RandomRuins/SpaceRuins/oldstation.dmm
index 93141bbfef4..07001ee233f 100644
--- a/_maps/RandomRuins/SpaceRuins/oldstation.dmm
+++ b/_maps/RandomRuins/SpaceRuins/oldstation.dmm
@@ -3051,7 +3051,7 @@
/obj/structure/window/reinforced/spawner/directional/south,
/obj/structure/table,
/obj/machinery/door/window/brigdoor/right/directional/east,
-/obj/item/computer_disk,
+/obj/item/disk/computer,
/turf/open/floor/iron/dark,
/area/ruin/space/ancientstation/delta/ai)
"nI" = (
diff --git a/_maps/RandomRuins/SpaceRuins/turretedoutpost.dmm b/_maps/RandomRuins/SpaceRuins/turretedoutpost.dmm
index e2efec50286..853c4c3c68e 100644
--- a/_maps/RandomRuins/SpaceRuins/turretedoutpost.dmm
+++ b/_maps/RandomRuins/SpaceRuins/turretedoutpost.dmm
@@ -165,7 +165,7 @@
pixel_x = 5;
pixel_y = 6
},
-/obj/item/computer_disk/syndicate/camera_app{
+/obj/item/disk/computer/syndicate/camera_app{
pixel_x = -5
},
/obj/effect/decal/cleanable/dirt,
diff --git a/_maps/RandomZLevels/SnowCabin.dmm b/_maps/RandomZLevels/SnowCabin.dmm
index a190ac27e3e..d0c0389f4e6 100644
--- a/_maps/RandomZLevels/SnowCabin.dmm
+++ b/_maps/RandomZLevels/SnowCabin.dmm
@@ -3318,7 +3318,7 @@
/obj/effect/turf_decal/weather/snow,
/obj/item/modular_computer/pda/syndicate{
desc = "A portable microcomputer by Thinktronic Systems, LTD.";
- inserted_disk = /obj/item/computer_disk/virus/clown;
+ inserted_disk = /obj/item/disk/computer/virus/clown;
name = "soviet tablet"
},
/obj/effect/decal/remains/human{
@@ -5321,7 +5321,7 @@
/obj/structure/table/reinforced,
/obj/item/modular_computer/pda/syndicate{
desc = "A portable microcomputer by Thinktronic Systems, LTD.";
- inserted_disk = /obj/item/computer_disk/virus/mime;
+ inserted_disk = /obj/item/disk/computer/virus/mime;
name = "soviet tablet"
},
/obj/effect/light_emitter{
diff --git a/_maps/RandomZLevels/moonoutpost19.dmm b/_maps/RandomZLevels/moonoutpost19.dmm
index 7ec1338d0c0..377eb6be16f 100644
--- a/_maps/RandomZLevels/moonoutpost19.dmm
+++ b/_maps/RandomZLevels/moonoutpost19.dmm
@@ -2644,8 +2644,8 @@
/area/awaymission/moonoutpost19/arrivals)
"rc" = (
/obj/structure/table,
-/obj/item/computer_disk/ordnance,
-/obj/item/computer_disk/ordnance{
+/obj/item/disk/computer/ordnance,
+/obj/item/disk/computer/ordnance{
pixel_x = -4;
pixel_y = 2
},
diff --git a/_maps/RandomZLevels/museum.dmm b/_maps/RandomZLevels/museum.dmm
index ab6be28cdfb..a4492aed844 100644
--- a/_maps/RandomZLevels/museum.dmm
+++ b/_maps/RandomZLevels/museum.dmm
@@ -5535,7 +5535,7 @@
"Ux" = (
/obj/effect/turf_decal/tile/neutral/opposingcorners,
/obj/structure/table,
-/obj/item/computer_disk{
+/obj/item/disk/computer{
name = "plant data disk";
icon_state = "datadisk_hydro"
},
diff --git a/_maps/RandomZLevels/undergroundoutpost45.dmm b/_maps/RandomZLevels/undergroundoutpost45.dmm
index 624f05678ac..0b5d881f3d5 100644
--- a/_maps/RandomZLevels/undergroundoutpost45.dmm
+++ b/_maps/RandomZLevels/undergroundoutpost45.dmm
@@ -7785,8 +7785,8 @@
/area/awaymission/undergroundoutpost45/engineering)
"Yk" = (
/obj/structure/table,
-/obj/item/computer_disk/ordnance,
-/obj/item/computer_disk/ordnance,
+/obj/item/disk/computer/ordnance,
+/obj/item/disk/computer/ordnance,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron/cafeteria{
dir = 5
diff --git a/_maps/map_files/CatwalkStation/CatwalkStation_2023.dmm b/_maps/map_files/CatwalkStation/CatwalkStation_2023.dmm
index 02508b9de0f..1b2d3a0e6b5 100644
--- a/_maps/map_files/CatwalkStation/CatwalkStation_2023.dmm
+++ b/_maps/map_files/CatwalkStation/CatwalkStation_2023.dmm
@@ -32163,11 +32163,11 @@
/obj/item/radio/intercom/directional/east,
/obj/structure/cable,
/obj/machinery/keycard_auth/wall_mounted/directional/south,
-/obj/item/computer_disk{
+/obj/item/disk/computer{
pixel_x = -6
},
-/obj/item/computer_disk,
-/obj/item/computer_disk{
+/obj/item/disk/computer,
+/obj/item/disk/computer{
pixel_x = 6
},
/turf/open/floor/wood,
diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm
index 7faa02b1844..17f79580956 100644
--- a/_maps/map_files/Deltastation/DeltaStation2.dmm
+++ b/_maps/map_files/Deltastation/DeltaStation2.dmm
@@ -13971,9 +13971,9 @@
/area/station/maintenance/disposal/incinerator)
"dvF" = (
/obj/structure/table/reinforced,
-/obj/item/computer_disk/quartermaster,
-/obj/item/computer_disk/quartermaster,
-/obj/item/computer_disk/quartermaster,
+/obj/item/disk/computer/quartermaster,
+/obj/item/disk/computer/quartermaster,
+/obj/item/disk/computer/quartermaster,
/obj/item/gps/mining,
/obj/item/paper_bin/carbon,
/obj/effect/turf_decal/tile/neutral/fourcorners,
@@ -38804,11 +38804,11 @@
/area/station/security/holding_cell)
"jCf" = (
/obj/structure/table,
-/obj/item/computer_disk{
+/obj/item/disk/computer{
pixel_x = 7;
pixel_y = 2
},
-/obj/item/computer_disk{
+/obj/item/disk/computer{
pixel_x = -2
},
/obj/machinery/light_switch/directional/east{
@@ -46311,17 +46311,17 @@
pixel_x = 4;
pixel_y = 1
},
-/obj/item/computer_disk{
+/obj/item/disk/computer{
pixel_y = 4
},
/obj/machinery/power/apc/auto_name/directional/north,
/obj/structure/cable,
-/obj/item/computer_disk{
+/obj/item/disk/computer{
pixel_x = -2;
pixel_y = 2
},
-/obj/item/computer_disk,
-/obj/item/computer_disk/ordnance{
+/obj/item/disk/computer,
+/obj/item/disk/computer/ordnance{
pixel_x = -4;
pixel_y = -1
},
@@ -59055,9 +59055,9 @@
"oIL" = (
/obj/machinery/airalarm/directional/south,
/obj/effect/turf_decal/bot,
-/obj/item/computer_disk/engineering,
-/obj/item/computer_disk/engineering,
-/obj/item/computer_disk/engineering,
+/obj/item/disk/computer/engineering,
+/obj/item/disk/computer/engineering,
+/obj/item/disk/computer/engineering,
/obj/structure/rack,
/obj/effect/turf_decal/tile/neutral/fourcorners,
/turf/open/floor/iron/dark,
@@ -66183,10 +66183,10 @@
/area/station/service/chapel)
"qtq" = (
/obj/structure/table,
-/obj/item/computer_disk/medical{
+/obj/item/disk/computer/medical{
pixel_x = 3
},
-/obj/item/computer_disk/medical{
+/obj/item/disk/computer/medical{
pixel_x = -3
},
/obj/item/toy/figure/cmo,
@@ -94883,13 +94883,13 @@
/area/station/science/xenobiology)
"xzq" = (
/obj/structure/table/reinforced,
-/obj/item/computer_disk/ordnance{
+/obj/item/disk/computer/ordnance{
pixel_x = 3
},
-/obj/item/computer_disk/ordnance{
+/obj/item/disk/computer/ordnance{
pixel_x = -2
},
-/obj/item/computer_disk/ordnance{
+/obj/item/disk/computer/ordnance{
pixel_y = 2
},
/obj/item/toy/figure/rd,
diff --git a/_maps/map_files/IceBoxStation/IceBoxStation.dmm b/_maps/map_files/IceBoxStation/IceBoxStation.dmm
index 70abb1613d3..bf6538a41c4 100644
--- a/_maps/map_files/IceBoxStation/IceBoxStation.dmm
+++ b/_maps/map_files/IceBoxStation/IceBoxStation.dmm
@@ -20782,9 +20782,9 @@
},
/obj/structure/table,
/obj/item/coin/silver,
-/obj/item/computer_disk/quartermaster,
-/obj/item/computer_disk/quartermaster,
-/obj/item/computer_disk/quartermaster,
+/obj/item/disk/computer/quartermaster,
+/obj/item/disk/computer/quartermaster,
+/obj/item/disk/computer/quartermaster,
/obj/item/clipboard,
/obj/effect/turf_decal/tile/brown/half/contrasted{
dir = 8
@@ -22970,15 +22970,15 @@
},
/obj/item/stock_parts/power_store/cell/high,
/obj/effect/turf_decal/tile/neutral/fourcorners,
-/obj/item/computer_disk/engineering{
+/obj/item/disk/computer/engineering{
pixel_x = 4;
pixel_y = 3
},
-/obj/item/computer_disk/engineering{
+/obj/item/disk/computer/engineering{
pixel_x = 4;
pixel_y = 3
},
-/obj/item/computer_disk/engineering{
+/obj/item/disk/computer/engineering{
pixel_x = 4;
pixel_y = 3
},
@@ -23683,12 +23683,12 @@
/area/station/engineering/storage_shared)
"gEy" = (
/obj/structure/table,
-/obj/item/computer_disk/ordnance,
-/obj/item/computer_disk/ordnance{
+/obj/item/disk/computer/ordnance,
+/obj/item/disk/computer/ordnance{
pixel_x = -5;
pixel_y = 4
},
-/obj/item/computer_disk{
+/obj/item/disk/computer{
pixel_x = 7;
pixel_y = 2
},
@@ -61319,8 +61319,8 @@
/area/station/medical/virology)
"rjt" = (
/obj/structure/table/glass,
-/obj/item/computer_disk/medical,
-/obj/item/computer_disk/medical,
+/obj/item/disk/computer/medical,
+/obj/item/disk/computer/medical,
/obj/machinery/status_display/evac/directional/north,
/obj/effect/turf_decal/tile/blue/fourcorners,
/turf/open/floor/iron/dark,
@@ -71218,10 +71218,10 @@
/area/station/service/theater)
"tZw" = (
/obj/structure/table,
-/obj/item/computer_disk{
+/obj/item/disk/computer{
pixel_x = -2
},
-/obj/item/computer_disk{
+/obj/item/disk/computer{
pixel_x = 2;
pixel_y = 8
},
@@ -76818,14 +76818,14 @@
/area/station/medical/break_room)
"vIg" = (
/obj/structure/table,
-/obj/item/computer_disk{
+/obj/item/disk/computer{
pixel_x = 7;
pixel_y = 2
},
-/obj/item/computer_disk{
+/obj/item/disk/computer{
pixel_x = -2
},
-/obj/item/computer_disk/ordnance{
+/obj/item/disk/computer/ordnance{
pixel_x = -5;
pixel_y = 6
},
diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm
index 567b6badb80..e8234f1482a 100644
--- a/_maps/map_files/MetaStation/MetaStation.dmm
+++ b/_maps/map_files/MetaStation/MetaStation.dmm
@@ -10494,9 +10494,9 @@
/obj/structure/table/reinforced,
/obj/item/clipboard,
/obj/item/paper/monitorkey,
-/obj/item/computer_disk/engineering,
-/obj/item/computer_disk/engineering,
-/obj/item/computer_disk/engineering,
+/obj/item/disk/computer/engineering,
+/obj/item/disk/computer/engineering,
+/obj/item/disk/computer/engineering,
/obj/effect/turf_decal/tile/neutral/half/contrasted,
/turf/open/floor/iron,
/area/station/command/heads_quarters/ce)
@@ -26804,7 +26804,7 @@
name = "Dud Rocket";
desc = "An 84mm High Explosive rocket. This one's a dud. Pretty sure."
},
-/obj/item/computer_disk/quartermaster{
+/obj/item/disk/computer/quartermaster{
pixel_x = 9;
pixel_y = 13
},
@@ -33099,9 +33099,9 @@
/obj/effect/turf_decal/siding{
dir = 4
},
-/obj/item/computer_disk/ordnance,
-/obj/item/computer_disk/ordnance,
-/obj/item/computer_disk/ordnance,
+/obj/item/disk/computer/ordnance,
+/obj/item/disk/computer/ordnance,
+/obj/item/disk/computer/ordnance,
/obj/effect/turf_decal/tile/neutral/opposingcorners{
dir = 1
},
@@ -41869,11 +41869,11 @@
/area/station/hallway/primary/starboard)
"ote" = (
/obj/structure/table,
-/obj/item/computer_disk{
+/obj/item/disk/computer{
pixel_x = -8;
pixel_y = -3
},
-/obj/item/computer_disk{
+/obj/item/disk/computer{
pixel_x = -5;
pixel_y = 8
},
@@ -41881,7 +41881,7 @@
dir = 9
},
/obj/machinery/airalarm/directional/west,
-/obj/item/computer_disk/ordnance{
+/obj/item/disk/computer/ordnance{
pixel_x = 1
},
/turf/open/floor/iron/white,
@@ -51565,8 +51565,8 @@
pixel_x = -7;
pixel_y = 8
},
-/obj/item/computer_disk/medical,
-/obj/item/computer_disk/medical,
+/obj/item/disk/computer/medical,
+/obj/item/disk/computer/medical,
/turf/open/floor/iron/white,
/area/station/command/heads_quarters/cmo)
"rHn" = (
@@ -58014,11 +58014,11 @@
/obj/item/radio/intercom/directional/east,
/obj/structure/table,
/obj/effect/turf_decal/bot,
-/obj/item/computer_disk{
+/obj/item/disk/computer{
pixel_x = 7;
pixel_y = 2
},
-/obj/item/computer_disk{
+/obj/item/disk/computer{
pixel_x = -5;
pixel_y = 8
},
diff --git a/_maps/map_files/NebulaStation/NebulaStation.dmm b/_maps/map_files/NebulaStation/NebulaStation.dmm
index 7ac250c073f..6521255f639 100644
--- a/_maps/map_files/NebulaStation/NebulaStation.dmm
+++ b/_maps/map_files/NebulaStation/NebulaStation.dmm
@@ -19832,7 +19832,7 @@
fax_name = "Chief Engineer's Office";
name = "Chief Engineer's Fax Machine"
},
-/obj/item/computer_disk/engineering,
+/obj/item/disk/computer/engineering,
/obj/structure/table/reinforced/rglass,
/turf/open/floor/carpet/orange,
/area/station/command/heads_quarters/ce)
@@ -32131,14 +32131,14 @@
},
/obj/effect/mapping_helpers/requests_console/assistance,
/obj/effect/mapping_helpers/requests_console/information,
-/obj/item/computer_disk{
+/obj/item/disk/computer{
pixel_x = -5;
pixel_y = 8
},
-/obj/item/computer_disk{
+/obj/item/disk/computer{
pixel_y = 1
},
-/obj/item/computer_disk/ordnance{
+/obj/item/disk/computer/ordnance{
pixel_x = 4;
pixel_y = 6
},
@@ -101353,7 +101353,7 @@
pixel_y = 6;
pixel_x = -5
},
-/obj/item/computer_disk/medical,
+/obj/item/disk/computer/medical,
/obj/machinery/requests_console/directional/south{
department = "Chief Medical Officer's Desk";
name = "Chief Medical Officer's Requests Console"
@@ -144154,7 +144154,7 @@
pixel_y = 3;
pixel_x = -2
},
-/obj/item/computer_disk/ordnance{
+/obj/item/disk/computer/ordnance{
pixel_y = 2;
pixel_x = 4
},
diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm
index c63c1c091ce..f3e01239f79 100644
--- a/_maps/map_files/generic/CentCom.dmm
+++ b/_maps/map_files/generic/CentCom.dmm
@@ -7081,9 +7081,9 @@
/area/awaymission/errorroom)
"FO" = (
/obj/structure/table/reinforced,
-/obj/item/computer_disk/quartermaster,
-/obj/item/computer_disk/quartermaster,
-/obj/item/computer_disk/quartermaster,
+/obj/item/disk/computer/quartermaster,
+/obj/item/disk/computer/quartermaster,
+/obj/item/disk/computer/quartermaster,
/obj/item/gps/mining,
/obj/effect/turf_decal/stripes/line{
dir = 6
diff --git a/_maps/map_files/tramstation/tramstation.dmm b/_maps/map_files/tramstation/tramstation.dmm
index d5153099e4a..27fa9526b94 100644
--- a/_maps/map_files/tramstation/tramstation.dmm
+++ b/_maps/map_files/tramstation/tramstation.dmm
@@ -14194,15 +14194,15 @@
/area/station/engineering/engine_smes)
"dNH" = (
/obj/structure/table,
-/obj/item/computer_disk{
+/obj/item/disk/computer{
pixel_x = -8;
pixel_y = -3
},
-/obj/item/computer_disk{
+/obj/item/disk/computer{
pixel_x = -5;
pixel_y = 8
},
-/obj/item/computer_disk/ordnance{
+/obj/item/disk/computer/ordnance{
pixel_x = 1
},
/obj/effect/turf_decal/trimline/purple/filled/line{
@@ -18341,8 +18341,8 @@
/area/station/security/brig)
"foD" = (
/obj/structure/table/glass,
-/obj/item/computer_disk/medical,
-/obj/item/computer_disk/medical,
+/obj/item/disk/computer/medical,
+/obj/item/disk/computer/medical,
/obj/effect/turf_decal/tile/blue/fourcorners,
/turf/open/floor/iron/dark,
/area/station/command/heads_quarters/cmo)
@@ -38965,9 +38965,9 @@
dir = 1
},
/obj/structure/window/reinforced/spawner/directional/west,
-/obj/item/computer_disk/engineering,
-/obj/item/computer_disk/engineering,
-/obj/item/computer_disk/engineering,
+/obj/item/disk/computer/engineering,
+/obj/item/disk/computer/engineering,
+/obj/item/disk/computer/engineering,
/turf/open/floor/iron,
/area/station/command/heads_quarters/ce)
"myc" = (
@@ -43745,10 +43745,10 @@
/area/station/construction/mining/aux_base)
"okA" = (
/obj/structure/table,
-/obj/item/computer_disk{
+/obj/item/disk/computer{
pixel_x = -2
},
-/obj/item/computer_disk{
+/obj/item/disk/computer{
pixel_x = 7;
pixel_y = 2
},
@@ -48336,8 +48336,8 @@
"pUV" = (
/obj/structure/table,
/obj/item/clipboard,
-/obj/item/computer_disk/quartermaster,
-/obj/item/computer_disk/quartermaster,
+/obj/item/disk/computer/quartermaster,
+/obj/item/disk/computer/quartermaster,
/obj/structure/disposalpipe/segment{
dir = 5
},
@@ -62314,15 +62314,15 @@
pixel_x = 7;
pixel_y = -2
},
-/obj/item/computer_disk/ordnance{
+/obj/item/disk/computer/ordnance{
pixel_x = -4;
pixel_y = 10
},
-/obj/item/computer_disk/ordnance{
+/obj/item/disk/computer/ordnance{
pixel_x = 5;
pixel_y = 10
},
-/obj/item/computer_disk/ordnance{
+/obj/item/disk/computer/ordnance{
pixel_x = 1;
pixel_y = 10
},
diff --git a/_maps/map_files/wawastation/wawastation.dmm b/_maps/map_files/wawastation/wawastation.dmm
index 2a07700a6ad..28b390be699 100644
--- a/_maps/map_files/wawastation/wawastation.dmm
+++ b/_maps/map_files/wawastation/wawastation.dmm
@@ -207,7 +207,7 @@
pixel_y = 4
},
/obj/machinery/firealarm/directional/east,
-/obj/item/computer_disk/quartermaster{
+/obj/item/disk/computer/quartermaster{
pixel_x = -6;
pixel_y = 4
},
@@ -16102,7 +16102,7 @@
/obj/effect/turf_decal/tile/neutral/opposingcorners{
dir = 1
},
-/obj/item/computer_disk/ordnance,
+/obj/item/disk/computer/ordnance,
/obj/machinery/light/warm/directional/south,
/obj/item/coffee_cartridge/fancy,
/turf/open/floor/iron/dark,
@@ -23195,11 +23195,11 @@
/obj/item/radio/intercom/directional/east,
/obj/structure/table,
/obj/effect/turf_decal/bot,
-/obj/item/computer_disk{
+/obj/item/disk/computer{
pixel_x = 7;
pixel_y = 2
},
-/obj/item/computer_disk{
+/obj/item/disk/computer{
pixel_x = -5;
pixel_y = 8
},
@@ -36622,7 +36622,7 @@
/turf/open/floor/iron,
/area/station/security)
"mEN" = (
-/obj/item/computer_disk/maintenance/spectre_meter,
+/obj/item/disk/computer/maintenance/spectre_meter,
/turf/open/misc/asteroid/airless,
/area/station/asteroid)
"mEQ" = (
@@ -49449,7 +49449,7 @@
/obj/machinery/modular_computer/preset/civilian{
dir = 1
},
-/obj/item/computer_disk/ordnance{
+/obj/item/disk/computer/ordnance{
pixel_x = 1
},
/turf/open/floor/iron/dark,
@@ -64419,7 +64419,7 @@
"whG" = (
/obj/structure/table/reinforced/rglass,
/obj/item/folder/blue,
-/obj/item/computer_disk/medical,
+/obj/item/disk/computer/medical,
/obj/item/stamp/head/cmo,
/turf/open/floor/holofloor/dark,
/area/station/command/heads_quarters/cmo)
diff --git a/code/_globalvars/lists/maintenance_loot.dm b/code/_globalvars/lists/maintenance_loot.dm
index b9abc260dc8..638d1068b2c 100644
--- a/code/_globalvars/lists/maintenance_loot.dm
+++ b/code/_globalvars/lists/maintenance_loot.dm
@@ -266,13 +266,13 @@ GLOBAL_LIST_INIT(uncommon_loot, list(//uncommon: useful items
) = 8,
list(//computer disks
- /obj/item/computer_disk/maintenance/scanner = 1,
- /obj/item/computer_disk/maintenance/camera = 1,
- /obj/item/computer_disk/maintenance/modsuit_control = 1,
- /obj/item/computer_disk/maintenance/spectre_meter = 1,
- /obj/item/computer_disk/maintenance/arcade = 1,
+ /obj/item/disk/computer/maintenance/scanner = 1,
+ /obj/item/disk/computer/maintenance/camera = 1,
+ /obj/item/disk/computer/maintenance/modsuit_control = 1,
+ /obj/item/disk/computer/maintenance/spectre_meter = 1,
+ /obj/item/disk/computer/maintenance/arcade = 1,
/obj/item/disk/design_disk/liberator = 1,
- /obj/item/computer_disk/maintenance/theme = 3,
+ /obj/item/disk/computer/maintenance/theme = 3,
) = 4,
list(//modsuits
diff --git a/code/datums/greyscale/config_types/greyscale_configs/greyscale_objects.dm b/code/datums/greyscale/config_types/greyscale_configs/greyscale_objects.dm
index 4f17ad5ae57..5f094f412d9 100644
--- a/code/datums/greyscale/config_types/greyscale_configs/greyscale_objects.dm
+++ b/code/datums/greyscale/config_types/greyscale_configs/greyscale_objects.dm
@@ -82,6 +82,11 @@
icon_file = 'icons/obj/storage/wrapping.dmi'
json_config = 'code/datums/greyscale/json_configs/giftdeliverypackage1.json'
+/datum/greyscale_config/giftdeliveryfloppy
+ name = "Gift Floppy Disk Package"
+ icon_file = 'icons/obj/storage/wrapping.dmi'
+ json_config = 'code/datums/greyscale/json_configs/giftdeliveryfloppy.json'
+
/datum/greyscale_config/wrap_paper
name = "Wrapping Paper"
icon_file = 'icons/obj/stack_objects.dmi'
diff --git a/code/datums/greyscale/json_configs/giftdeliveryfloppy.json b/code/datums/greyscale/json_configs/giftdeliveryfloppy.json
new file mode 100644
index 00000000000..24b0e0892d8
--- /dev/null
+++ b/code/datums/greyscale/json_configs/giftdeliveryfloppy.json
@@ -0,0 +1,16 @@
+{
+ "": [
+ {
+ "type": "icon_state",
+ "icon_state": "giftdeliveryfloppy_base",
+ "blend_mode": "overlay",
+ "color_ids": [1]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "giftdeliveryfloppy_ribbon",
+ "blend_mode": "overlay",
+ "color_ids": [2]
+ }
+ ]
+}
diff --git a/code/datums/holocall.dm b/code/datums/holocall.dm
index 1c6590acd64..0217298f9bc 100644
--- a/code/datums/holocall.dm
+++ b/code/datums/holocall.dm
@@ -215,7 +215,7 @@
/obj/item/disk/holodisk
name = "holorecord disk"
desc = "Stores recorder holocalls."
- icon_state = "holodisk"
+ sticker_icon_state = "o_holo"
obj_flags = UNIQUE_RENAME
custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT)
var/datum/holorecord/record
diff --git a/code/game/gamemodes/objective_items.dm b/code/game/gamemodes/objective_items.dm
index 33256f6d390..49d737ffd16 100644
--- a/code/game/gamemodes/objective_items.dm
+++ b/code/game/gamemodes/objective_items.dm
@@ -520,15 +520,15 @@ GLOBAL_DATUM_INIT(steal_item_handler, /datum/objective_item_handler, new())
/datum/objective_item/steal/hdd_extraction
name = "the source code for Project Goon from the master R&D server mainframe"
- targetitem = /obj/item/computer_disk/hdd_theft
+ targetitem = /obj/item/disk/computer/hdd_theft
excludefromjob = list(JOB_RESEARCH_DIRECTOR, JOB_SCIENTIST, JOB_ROBOTICIST, JOB_GENETICIST)
item_owner = list(JOB_RESEARCH_DIRECTOR, JOB_SCIENTIST)
exists_on_map = TRUE
difficulty = 4
steal_hint = "The hard drive of the master research server, found in R&D's server room."
-/obj/item/computer_disk/hdd_theft/add_stealing_item_objective()
- return add_item_to_steal(src, /obj/item/computer_disk/hdd_theft)
+/obj/item/disk/computer/hdd_theft/add_stealing_item_objective()
+ return add_item_to_steal(src, /obj/item/disk/computer/hdd_theft)
/datum/objective_item/steal/hdd_extraction/New()
special_equipment += /obj/item/paper/guides/antag/hdd_extraction
diff --git a/code/game/machinery/dna_scanner.dm b/code/game/machinery/dna_scanner.dm
index 1ad319486c8..a3e92e9463d 100644
--- a/code/game/machinery/dna_scanner.dm
+++ b/code/game/machinery/dna_scanner.dm
@@ -159,56 +159,18 @@
SIGNAL_HANDLER
set_linked_console(null)
-// Disk skins
-/datum/atom_skin/dna_disk
- abstract_type = /datum/atom_skin/dna_disk
-
-/datum/atom_skin/dna_disk/red
- preview_name = "Red"
- new_icon_state = "datadisk0"
-
-/datum/atom_skin/dna_disk/dark_blue
- preview_name = "Dark Blue"
- new_icon_state = "datadisk1"
-
-/datum/atom_skin/dna_disk/yellow
- preview_name = "Yellow"
- new_icon_state = "datadisk2"
-
-/datum/atom_skin/dna_disk/black
- preview_name = "Black"
- new_icon_state = "datadisk3"
-
-/datum/atom_skin/dna_disk/green
- preview_name = "Green"
- new_icon_state = "datadisk4"
-
-/datum/atom_skin/dna_disk/purple
- preview_name = "Purple"
- new_icon_state = "datadisk5"
-
-/datum/atom_skin/dna_disk/grey
- preview_name = "Grey"
- new_icon_state = "datadisk6"
-
-/datum/atom_skin/dna_disk/light_blue
- preview_name = "Light Blue"
- new_icon_state = "datadisk7"
-
//Just for transferring between genetics machines.
/obj/item/disk/data
- name = "DNA data disk"
+ name = "\improper DNA data disk"
icon_state = "datadisk0" //Gosh I hope syndies don't mistake them for the nuke disk.
var/list/genetic_makeup_buffer = list()
var/list/mutations = list()
var/max_mutations = 6
- var/read_only = FALSE //Well,it's still a floppy disk
/obj/item/disk/data/Initialize(mapload)
. = ..()
- AddComponent(/datum/component/reskinable_item, /datum/atom_skin/dna_disk, infinite = TRUE)
icon_state = "datadisk[rand(0,7)]"
- add_overlay("datadisk_gene")
+ set_sticker_icon_state(pick("o_dna1", "o_dna2"))
if(length(genetic_makeup_buffer))
var/datum/blood_type = genetic_makeup_buffer["blood_type"]
if(blood_type)
@@ -225,11 +187,3 @@
for(var/datum/mutation/mut as anything in subtypesof(/datum/mutation))
var/datum/mutation/ref = GET_INITIALIZED_MUTATION(mut)
mutations += ref
-
-/obj/item/disk/data/attack_self(mob/user)
- read_only = !read_only
- to_chat(user, span_notice("You flip the write-protect tab to [read_only ? "protected" : "unprotected"]."))
-
-/obj/item/disk/data/examine(mob/user)
- . = ..()
- . += "The write-protect tab is set to [read_only ? "protected" : "unprotected"]."
diff --git a/code/game/objects/effects/spawners/random/exotic.dm b/code/game/objects/effects/spawners/random/exotic.dm
index cb43d6f06ae..901bb06cee7 100644
--- a/code/game/objects/effects/spawners/random/exotic.dm
+++ b/code/game/objects/effects/spawners/random/exotic.dm
@@ -9,7 +9,7 @@
loot = list( // Space loot spawner. Couple of random bits of technology-adjacent stuff including anomaly cores and BEPIS techs.
/obj/item/raw_anomaly_core/random,
/obj/item/disk/design_disk/bepis,
- /obj/item/computer_disk/syndicate/camera_app,
+ /obj/item/disk/computer/syndicate/camera_app,
)
/obj/effect/spawner/random/exotic/languagebook
diff --git a/code/game/objects/items/devices/aicard_evil.dm b/code/game/objects/items/devices/aicard_evil.dm
index 0c9f0c6f9c4..65860338fc9 100644
--- a/code/game/objects/items/devices/aicard_evil.dm
+++ b/code/game/objects/items/devices/aicard_evil.dm
@@ -87,15 +87,14 @@
qdel(src)
/// Upgrade disk used to increase the range of a syndicate AI
-/obj/item/computer_disk/syndie_ai_upgrade
+/obj/item/disk/computer/syndie_ai_upgrade
name = "AI interaction range upgrade"
desc = "A NT data chip containing information that a syndiCard AI can utilize to improve its wireless interfacing abilities. Simply slap it on top of an intelliCard, MODsuit, or AI core and watch it do its work! It's rumoured that there's something 'pretty awful' in it."
- icon = 'icons/obj/antags/syndicate_tools.dmi'
- icon_state = "something_awful"
max_capacity = 1000
w_class = WEIGHT_CLASS_NORMAL
+ sticker_icon_state = "o_syndicate"
-/obj/item/computer_disk/syndie_ai_upgrade/pre_attack(atom/target, mob/living/user, list/modifiers, list/attack_modifiers)
+/obj/item/disk/computer/syndie_ai_upgrade/pre_attack(atom/target, mob/living/user, list/modifiers, list/attack_modifiers)
var/mob/living/silicon/ai/AI
if(isAI(target))
AI = target
diff --git a/code/game/objects/items/floppy_disk.dm b/code/game/objects/items/floppy_disk.dm
new file mode 100644
index 00000000000..027cfa41cb5
--- /dev/null
+++ b/code/game/objects/items/floppy_disk.dm
@@ -0,0 +1,370 @@
+#define MAX_DISK_STACK_SIZE 10
+#define STACK_PIXEL_STEP 2
+#define MAX_TEXT_LENGTH 30
+#define STARTING_STICKER "o_empty"
+
+/datum/atom_skin/floppy_disk
+ abstract_type = /datum/atom_skin/floppy_disk
+
+/datum/atom_skin/floppy_disk/red
+ preview_name = "Red"
+ new_icon_state = "datadisk0"
+
+/datum/atom_skin/floppy_disk/dark_blue
+ preview_name = "Dark Blue"
+ new_icon_state = "datadisk1"
+
+/datum/atom_skin/floppy_disk/yellow
+ preview_name = "Yellow"
+ new_icon_state = "datadisk2"
+
+/datum/atom_skin/floppy_disk/black
+ preview_name = "Black"
+ new_icon_state = "datadisk3"
+
+/datum/atom_skin/floppy_disk/green
+ preview_name = "Green"
+ new_icon_state = "datadisk4"
+
+/datum/atom_skin/floppy_disk/purple
+ preview_name = "Purple"
+ new_icon_state = "datadisk5"
+
+/datum/atom_skin/floppy_disk/grey
+ preview_name = "Grey"
+ new_icon_state = "datadisk6"
+
+/datum/atom_skin/floppy_disk/light_blue
+ preview_name = "Light Blue"
+ new_icon_state = "datadisk7"
+
+/obj/item/disk
+ name = "floppy disk"
+ desc = "A generic floppy disk. No way Nanotrasen still uses those, right?"
+ icon = 'icons/obj/devices/floppy_disks.dmi'
+ icon_state = "datadisk3"
+ w_class = WEIGHT_CLASS_TINY
+ inhand_icon_state = "card-id"
+ lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi'
+ drop_sound = 'sound/items/handling/disk_drop.ogg'
+ pickup_sound = 'sound/items/handling/disk_pickup.ogg'
+
+ /// Sticker icons to choose from (as icon states)
+ var/static/list/sticker_variants = list(
+ "One" = "o_one",
+ "Two" = "o_two",
+ "Three" = "o_three",
+ "Four" = "o_four",
+ "Five" = "o_five",
+ "Six" = "o_six",
+ "Seven" = "o_seven",
+ "Eight" = "o_eight",
+ "Nine" = "o_nine",
+ "Zero" = "o_zero",
+ "A" = "o_A",
+ "B" = "o_B",
+ "C" = "o_C",
+ "D" = "o_D",
+ "E" = "o_E",
+ "F" = "o_F",
+ "Code" = "o_code",
+ "DNA — Green" = "o_dna1",
+ "DNA — Red" = "o_dna2",
+ "Medical" = "o_medical",
+ "Holographic" = "o_holo",
+ )
+
+ /// Toggles the readonly state
+ var/read_only = FALSE
+ /// If readonly state can be toggled on and off
+ var/read_only_locked = FALSE
+ /// The current sticker icon state to display
+ var/sticker_icon_state = STARTING_STICKER
+ /// Custom description
+ var/custom_description
+ /// Whether this disk can be reskinned
+ var/reskin_allowed = TRUE
+
+/obj/item/disk/Initialize(mapload)
+ . = ..()
+ if(reskin_allowed)
+ AddComponent(/datum/component/reskinable_item, /datum/atom_skin/floppy_disk, infinite = FALSE)
+ update_appearance(UPDATE_OVERLAYS)
+
+/obj/item/disk/update_overlays()
+ . = ..()
+ if(sticker_icon_state)
+ . += sticker_icon_state
+
+/obj/item/disk/examine(mob/user)
+ . = ..()
+ . += span_notice("The write-protect tab is set to [span_bold("[read_only ? "protected" : "unprotected"]")].")
+
+ if(custom_description)
+ . += span_notice("There's something scribbled on the sticker:")
+ . += span_notice(span_italics("\"[custom_description]\""))
+
+/obj/item/disk/tool_act(mob/living/user, obj/item/tool, list/modifiers)
+ if(istype(tool, /obj/item/pen))
+ if(sticker_icon_state != STARTING_STICKER)
+ to_chat(user, span_warning("You can't add anything else!"))
+ return ITEM_INTERACT_FAILURE
+
+ var/newdescription = sanitize_text(tgui_input_text(user, "What do you want to write?", "Floppy Disk", max_length = MAX_TEXT_LENGTH, multiline = TRUE))
+ if(!newdescription)
+ return ITEM_INTERACT_FAILURE
+
+ if(!can_interact(user))
+ return ITEM_INTERACT_FAILURE
+
+ playsound(src, SFX_WRITING_PEN, 30)
+ to_chat(user, span_notice("You sign the [src]."))
+
+ custom_description = newdescription
+ set_sticker_icon_state(pick("o_text1", "o_text2", "o_text3"))
+ return ITEM_INTERACT_SUCCESS
+
+ . = ..()
+
+/obj/item/disk/attack_self(mob/user)
+ if(read_only_locked)
+ to_chat(user, span_warning("The write-protect tab seems to be stuck in place!"))
+ return
+ read_only = !read_only
+ to_chat(user, span_notice("You flip the write-protect tab to [span_bold("[read_only ? "protected" : "unprotected"]")]."))
+
+/obj/item/disk/click_alt(mob/user)
+ if(sticker_icon_state != STARTING_STICKER)
+ return CLICK_ACTION_BLOCKING
+
+ if(!LAZYLEN(sticker_variants))
+ return CLICK_ACTION_BLOCKING
+
+ var/list/items = list()
+ for(var/variant_name in sticker_variants)
+ var/icon_state_name = sticker_variants[variant_name]
+ var/image/item_image = image(icon = icon, icon_state = icon_state)
+
+ var/image/overlay_preview = image(icon = icon, icon_state = icon_state_name)
+ item_image.overlays += overlay_preview
+ items += list("[variant_name]" = item_image)
+
+ var/pick = show_radial_menu(user, src, items, custom_check = CALLBACK(src, PROC_REF(check_sticker_menu), user), radius = 38, require_near = TRUE)
+ if(!pick)
+ return CLICK_ACTION_BLOCKING
+ if(!sticker_variants[pick])
+ return CLICK_ACTION_BLOCKING
+
+ set_sticker_icon_state(sticker_variants[pick])
+ to_chat(user, span_notice("You change the sticker on [src] to '[pick]'."))
+ return CLICK_ACTION_SUCCESS
+
+/// Can we select a new sticker?
+/obj/item/disk/proc/check_sticker_menu(mob/user)
+ if(QDELETED(src))
+ return FALSE
+ if(sticker_icon_state != STARTING_STICKER)
+ return FALSE
+ if(!istype(user))
+ return FALSE
+ if(user.incapacitated)
+ return FALSE
+ return TRUE
+
+/// Sets the sticker icon state and updates the appearance
+/obj/item/disk/proc/set_sticker_icon_state(new_icon_state)
+ sticker_icon_state = new_icon_state
+ update_appearance(UPDATE_OVERLAYS)
+
+/obj/item/disk/item_interaction(mob/living/user, obj/item/tool, list/modifiers)
+ if(istype(tool, /obj/item/disk_stack))
+ var/obj/item/disk_stack/held_stack = tool
+ var/obj/item/disk_stack/new_stack = new(get_turf(src))
+ var/should_put_in_hand = user.is_holding(src)
+
+ new_stack.add_to_stack(user, src)
+ new_stack.merge_stacks(user, held_stack)
+
+ if(should_put_in_hand)
+ user.put_in_hands(new_stack)
+ return ITEM_INTERACT_SUCCESS
+
+ if(istype(tool, /obj/item/disk))
+ var/obj/item/disk_stack/new_stack = new(get_turf(src))
+ new_stack.pixel_x = pixel_x
+ new_stack.pixel_y = pixel_y
+
+ var/should_put_in_hand = user.is_holding(src) && user.is_holding(tool)
+ new_stack.add_to_stack(user, src)
+ new_stack.add_to_stack(user, tool)
+ new_stack.update_appearance(UPDATE_OVERLAYS)
+ if(should_put_in_hand)
+ user.put_in_hands(new_stack)
+ return ITEM_INTERACT_SUCCESS
+
+/obj/item/disk_stack
+ name = "stack of floppy disks"
+ desc = "A stack of floppy disks. You wonder what happens if you pull out the bottom one..."
+ icon = null
+ icon_state = null
+ w_class = WEIGHT_CLASS_SMALL
+ inhand_icon_state = "card-id"
+ lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi'
+ drop_sound = 'sound/items/handling/disk_drop.ogg'
+ pickup_sound = 'sound/items/handling/disk_pickup.ogg'
+ /// List of references to the disks inside the stack
+ var/list/stacked_disks = list()
+
+/obj/item/disk_stack/Initialize(mapload)
+ . = ..()
+ RegisterSignal(src, COMSIG_MOVABLE_THROW_LANDED, PROC_REF(spread))
+ RegisterSignal(src, COMSIG_ATOM_EXITED, PROC_REF(on_exited))
+
+/obj/item/disk_stack/Destroy()
+ stacked_disks.Cut()
+ return ..()
+
+/obj/item/disk_stack/examine(mob/user)
+ . = ..()
+ . += span_notice("There are [span_bold("[length(stacked_disks)]")] disks in the stack.")
+
+/obj/item/disk_stack/item_interaction(mob/living/user, obj/item/tool, list/modifiers)
+ if(istype(tool, /obj/item/disk_stack))
+ return merge_stacks(user, tool)
+
+ if(istype(tool, /obj/item/disk))
+ return add_to_stack(user, tool)
+
+/obj/item/disk_stack/proc/add_to_stack(mob/living/user, obj/item/disk/newdisk)
+ if(length(stacked_disks) >= MAX_DISK_STACK_SIZE)
+ balloon_alert(user, "can't add more!")
+ return ITEM_INTERACT_BLOCKING
+
+ newdisk.forceMove(src)
+ stacked_disks += newdisk
+ balloon_alert(user, "added to top")
+ update_appearance(UPDATE_OVERLAYS)
+ return ITEM_INTERACT_SUCCESS
+
+/obj/item/disk_stack/update_overlays()
+ . = ..()
+ var/iteration_count = 1
+ for(var/obj/item/disk/disk_in_stack in stacked_disks)
+ var/mutable_appearance/stacked_disk_appearance = mutable_appearance(disk_in_stack.icon, disk_in_stack.icon_state, disk_in_stack.layer + (0.1 * iteration_count))
+ stacked_disk_appearance.pixel_z += iteration_count * STACK_PIXEL_STEP
+
+ if(LAZYLEN(disk_in_stack.overlays))
+ stacked_disk_appearance.overlays = disk_in_stack.overlays.Copy()
+ . += stacked_disk_appearance
+ iteration_count++
+
+/obj/item/disk_stack/proc/pop_top_disk(mob/living/user)
+ if(!length(stacked_disks))
+ return FALSE
+
+ var/obj/item/disk/top = stacked_disks[length(stacked_disks)]
+ user.put_in_hands(top)
+ balloon_alert(user, "removed top disk")
+
+ if(length(stacked_disks) == 1)
+ var/obj/item/disk/last_disk = stacked_disks[1]
+ var/was_in_hand = user.is_holding(src)
+ if(was_in_hand)
+ last_disk.forceMove(user)
+ user.put_in_hands(last_disk)
+ else
+ var/turf/T = get_turf(src)
+ last_disk.forceMove(T)
+ last_disk.pixel_x = pixel_x
+ last_disk.pixel_y = pixel_y
+
+ QDEL_IN(src, 0)
+ return TRUE
+
+ update_appearance(UPDATE_OVERLAYS)
+ return TRUE
+
+/obj/item/disk_stack/proc/merge_stacks(mob/user, obj/item/disk_stack/diskstack)
+ var/amount_counter = 0
+ var/list/moved_disks = list()
+
+ for(var/obj/item/disk/each_disk as anything in diskstack.stacked_disks)
+ if(length(stacked_disks) >= MAX_DISK_STACK_SIZE)
+ break
+
+ each_disk.forceMove(src)
+ stacked_disks += each_disk
+ moved_disks += each_disk
+ amount_counter += 1
+
+ diskstack.stacked_disks -= moved_disks
+ diskstack.update_appearance(UPDATE_OVERLAYS)
+
+ if(!amount_counter)
+ balloon_alert(user, "no space!")
+ return ITEM_INTERACT_BLOCKING
+
+ update_appearance(UPDATE_OVERLAYS)
+ to_chat(user, span_notice("You merge two stacks of disks together."))
+
+ if(!length(diskstack.stacked_disks))
+ QDEL_IN(diskstack, 0)
+
+ return ITEM_INTERACT_SUCCESS
+
+/obj/item/disk_stack/proc/spread()
+ SIGNAL_HANDLER
+
+ if(!length(stacked_disks))
+ return
+
+ var/turf/landing = get_turf(src)
+ for(var/obj/item/disk/each_disk as anything in stacked_disks)
+ each_disk.forceMove(landing)
+ each_disk.throw_at(get_step(src, pick(NORTH, NORTHEAST, EAST, SOUTHEAST, SOUTH, SOUTHWEST, WEST, NORTHWEST)), 1, 0.8)
+
+ visible_message(span_warning("The stack falls apart!"))
+ update_appearance(UPDATE_OVERLAYS)
+ throw_at(get_step(src, pick(NORTH, NORTHEAST, EAST, SOUTHEAST, SOUTH, SOUTHWEST, WEST, NORTHWEST)), 1, 0.8)
+
+/obj/item/disk_stack/attack_hand_secondary(mob/user, list/modifiers)
+ if(pop_top_disk(user))
+ return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN
+
+ . = ..()
+
+/// Handle disks leaving the stack through other means
+/obj/item/disk_stack/proc/on_exited(datum/source, atom/movable/gone, direction)
+ SIGNAL_HANDLER
+
+ if(!istype(gone, /obj/item/disk))
+ return
+
+ stacked_disks -= gone
+ update_appearance(UPDATE_OVERLAYS)
+
+ if(!length(stacked_disks))
+ QDEL_IN(src, 0)
+
+/obj/item/disk/can_be_package_wrapped()
+ return TRUE
+
+/obj/item/disk_stack/can_be_package_wrapped()
+ return FALSE
+
+/obj/item/delivery/small/floppy
+ name = "flat parcel"
+ desc = "A flat paper parcel."
+ icon_state = "deliveryfloppy"
+ base_icon_state = "deliveryfloppy"
+
+/obj/item/delivery/small/floppy/Initialize(mapload)
+ . = ..()
+ new /obj/item/disk/data(src)
+
+#undef STARTING_STICKER
+#undef MAX_DISK_STACK_SIZE
+#undef STACK_PIXEL_STEP
+#undef MAX_TEXT_LENGTH
diff --git a/code/game/objects/items/rcd/RHD.dm b/code/game/objects/items/rcd/RHD.dm
index ccd2b9f5063..2b08fc42b72 100644
--- a/code/game/objects/items/rcd/RHD.dm
+++ b/code/game/objects/items/rcd/RHD.dm
@@ -296,7 +296,7 @@
/obj/item/rcd_upgrade
name = "RCD advanced design disk"
desc = "It seems to be empty."
- icon = 'icons/obj/devices/circuitry_n_data.dmi'
+ icon = 'icons/obj/devices/floppy_disks.dmi'
icon_state = "datadisk3"
var/upgrade
diff --git a/code/game/objects/items/rcd/RPD.dm b/code/game/objects/items/rcd/RPD.dm
index e5ff17bccca..11f1a1fc2c3 100644
--- a/code/game/objects/items/rcd/RPD.dm
+++ b/code/game/objects/items/rcd/RPD.dm
@@ -598,7 +598,7 @@
/obj/item/rpd_upgrade
name = "RPD advanced design disk"
desc = "It seems to be empty."
- icon = 'icons/obj/devices/circuitry_n_data.dmi'
+ icon = 'icons/obj/devices/floppy_disks.dmi'
icon_state = "datadisk3"
/// Bitflags for upgrades
var/upgrade_flags
diff --git a/code/game/objects/items/robot/ai_upgrades.dm b/code/game/objects/items/robot/ai_upgrades.dm
index 9d7e6c41d58..80e97acab18 100644
--- a/code/game/objects/items/robot/ai_upgrades.dm
+++ b/code/game/objects/items/robot/ai_upgrades.dm
@@ -2,7 +2,7 @@
/obj/item/aiupgrade
name = "ai upgrade disk"
desc = "You really shouldn't be seeing this"
- icon = 'icons/obj/devices/circuitry_n_data.dmi'
+ icon = 'icons/obj/devices/floppy_disks.dmi'
icon_state = "datadisk3"
///The upgrade that will be applied to the AI when installed
var/datum/ai_module/to_gift = /datum/ai_module
@@ -44,7 +44,7 @@
/obj/item/malf_upgrade
name = "combat software upgrade"
desc = "A highly illegal, highly dangerous upgrade for artificial intelligence units, granting them a variety of powers as well as the ability to hack APCs.
This upgrade does not override any active laws, and must be applied directly to an active AI core."
- icon = 'icons/obj/devices/circuitry_n_data.dmi'
+ icon = 'icons/obj/devices/floppy_disks.dmi'
icon_state = "datadisk3"
/obj/item/malf_upgrade/Initialize(mapload)
diff --git a/code/game/objects/items/stacks/wrap.dm b/code/game/objects/items/stacks/wrap.dm
index 0c445cc2986..432e040940b 100644
--- a/code/game/objects/items/stacks/wrap.dm
+++ b/code/game/objects/items/stacks/wrap.dm
@@ -149,10 +149,14 @@
user.put_in_hands(parcel)
item.forceMove(parcel)
var/size = round(item.w_class)
- parcel.name = "[weight_class_to_text(size)] parcel"
+ if(istype(item, /obj/item/disk))
+ parcel.base_icon_state = "deliveryfloppy"
+ parcel.name = "floppy disk parcel"
+ else
+ parcel.base_icon_state = "deliverypackage[size]"
+ parcel.name = "[weight_class_to_text(size)] parcel"
parcel.update_weight_class(size)
size = min(size, 5)
- parcel.base_icon_state = "deliverypackage[size]"
parcel.update_icon()
else
return ITEM_INTERACT_BLOCKING
diff --git a/code/game/objects/items/storage/boxes/science_boxes.dm b/code/game/objects/items/storage/boxes/science_boxes.dm
index 11eebd8699c..c182c5c8a30 100644
--- a/code/game/objects/items/storage/boxes/science_boxes.dm
+++ b/code/game/objects/items/storage/boxes/science_boxes.dm
@@ -25,12 +25,13 @@
//Disk boxes
/obj/item/storage/box/disks
- name = "diskette box"
+ name = "floppy disk box"
illustration = "disk_kit"
+ desc = "A set of 8 Nanotrasen-approved floppy disks in individual packaging."
/obj/item/storage/box/disks/PopulateContents()
- for(var/i in 1 to 7)
- new /obj/item/disk/data(src)
+ for(var/i in 1 to 8)
+ new /obj/item/delivery/small/floppy(src)
/obj/item/storage/box/monkeycubes
name = "monkey cube box"
diff --git a/code/game/objects/items/storage/boxes/security_boxes.dm b/code/game/objects/items/storage/boxes/security_boxes.dm
index 230ad5eea22..d5df26d2bac 100644
--- a/code/game/objects/items/storage/boxes/security_boxes.dm
+++ b/code/game/objects/items/storage/boxes/security_boxes.dm
@@ -93,7 +93,7 @@
/obj/item/storage/box/seccarts/PopulateContents()
for(var/i in 1 to 6)
- new /obj/item/computer_disk/security(src)
+ new /obj/item/disk/computer/security(src)
/obj/item/storage/box/firingpins
name = "box of standard firing pins"
diff --git a/code/game/objects/items/storage/uplink_kits.dm b/code/game/objects/items/storage/uplink_kits.dm
index 1e8a9acbba8..c42e33b9a68 100644
--- a/code/game/objects/items/storage/uplink_kits.dm
+++ b/code/game/objects/items/storage/uplink_kits.dm
@@ -57,7 +57,7 @@
new /obj/item/clothing/under/chameleon(src) // 2 tc since it's not the full set
new /obj/item/clothing/mask/chameleon(src) // Goes with above
new /obj/item/clothing/shoes/chameleon/noslip(src) // 2 tc
- new /obj/item/computer_disk/syndicate/camera_app(src) // 1 tc
+ new /obj/item/disk/computer/syndicate/camera_app(src) // 1 tc
new /obj/item/multitool/ai_detect(src) // 1 tc
new /obj/item/encryptionkey/syndicate(src) // 2 tc
new /obj/item/storage/box/syndie_kit/mulligan(src) // 4 tc
@@ -122,7 +122,7 @@
new /obj/item/ai_module/toy_ai(src) // ~6 tc
new /obj/item/multitool/ai_detect(src) // 1 tc
new /obj/item/storage/toolbox/syndicate(src) // 1 tc
- new /obj/item/computer_disk/syndicate/camera_app(src) // 1 tc
+ new /obj/item/disk/computer/syndicate/camera_app(src) // 1 tc
new /obj/item/clothing/glasses/thermal/syndi(src) // 4 tc
new /obj/item/card/id/advanced/chameleon/elite(src) // 2 tc
@@ -143,9 +143,9 @@
if(KIT_SABOTAGE)
new /obj/item/storage/backpack/duffelbag/syndie/sabotage(src) // 5 tc for 3 c4 and 2 x4
- new /obj/item/computer_disk/syndicate/camera_app(src) // 1 tc
+ new /obj/item/disk/computer/syndicate/camera_app(src) // 1 tc
new /obj/item/sbeacondrop/powersink(src) // 11 tc
- new /obj/item/computer_disk/virus/detomatix(src) // 6 tc
+ new /obj/item/disk/computer/virus/detomatix(src) // 6 tc
new /obj/item/storage/toolbox/syndicate(src) // 1 tc
new /obj/item/pizzabox/bomb(src) // 6 tc
new /obj/item/storage/box/syndie_kit/emp(src) // 2 tc
diff --git a/code/game/objects/items/theft_tools.dm b/code/game/objects/items/theft_tools.dm
index c13d621036d..b8dce57e7c3 100644
--- a/code/game/objects/items/theft_tools.dm
+++ b/code/game/objects/items/theft_tools.dm
@@ -128,14 +128,13 @@
Succeed and you will receive a coveted green highlight on your record for this assignment. Fail us and red's the last colour you'll ever see.
\
Do not disappoint us.
"
-/obj/item/computer_disk/hdd_theft
+/obj/item/disk/computer/hdd_theft
name = "r&d server hard disk drive"
desc = "For some reason, people really seem to want to steal this. The source code on this drive is probably used for something awful!"
- icon = 'icons/obj/antags/syndicate_tools.dmi'
- icon_state = "something_awful"
max_capacity = 512
w_class = WEIGHT_CLASS_NORMAL
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
+ sticker_icon_state = "o_nt"
// STEALING SUPERMATTER
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm
index e448c3d553d..0e3be1e463a 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm
@@ -7,7 +7,7 @@
..()
new /obj/item/storage/bag/garment/engineering_chief (src)
- new /obj/item/computer_disk/command/ce(src)
+ new /obj/item/disk/computer/command/ce(src)
new /obj/item/radio/headset/heads/ce(src)
new /obj/item/megaphone/command(src)
new /obj/item/holosign_creator/atmos(src)
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm
index 849c7f74e8e..0b4e5600dbb 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm
@@ -80,7 +80,7 @@
new /obj/item/clothing/suit/bio_suit/cmo(src)
new /obj/item/clothing/head/bio_hood/cmo(src)
new /obj/item/storage/bag/garment/chief_medical(src)
- new /obj/item/computer_disk/command/cmo(src)
+ new /obj/item/disk/computer/command/cmo(src)
new /obj/item/radio/headset/heads/cmo(src)
new /obj/item/megaphone/command(src)
new /obj/item/assembly/flash/handheld(src)
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm
index 7531b8bacfd..7df190f2f6c 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm
@@ -9,7 +9,7 @@
new /obj/item/clothing/suit/bio_suit/scientist(src)
new /obj/item/clothing/head/bio_hood/scientist(src)
new /obj/item/storage/bag/garment/research_director(src)
- new /obj/item/computer_disk/command/rd(src)
+ new /obj/item/disk/computer/command/rd(src)
new /obj/item/radio/headset/heads/rd(src)
new /obj/item/megaphone/command(src)
new /obj/item/storage/lockbox/medal/sci(src)
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
index d1fef8c52da..a43f435c4c9 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
@@ -8,7 +8,7 @@
new /obj/item/clothing/neck/petcollar(src)
new /obj/item/pet_carrier(src)
new /obj/item/storage/bag/garment/captain(src)
- new /obj/item/computer_disk/command/captain(src)
+ new /obj/item/disk/computer/command/captain(src)
new /obj/item/radio/headset/heads/captain/alt(src)
new /obj/item/radio/headset/heads/captain(src)
new /obj/item/door_remote/captain(src)
@@ -29,7 +29,7 @@
new /obj/item/dog_bone(src)
new /obj/item/storage/bag/garment/hop(src)
new /obj/item/storage/lockbox/medal/service(src)
- new /obj/item/computer_disk/command/hop(src)
+ new /obj/item/disk/computer/command/hop(src)
new /obj/item/radio/headset/heads/hop(src)
new /obj/item/storage/box/ids(src)
new /obj/item/storage/box/silver_ids(src)
@@ -53,7 +53,7 @@
/obj/structure/closet/secure_closet/hos/PopulateContents()
..()
- new /obj/item/computer_disk/command/hos(src)
+ new /obj/item/disk/computer/command/hos(src)
new /obj/item/radio/headset/heads/hos(src)
new /obj/item/radio/headset/heads/hos/alt(src)
new /obj/item/storage/bag/garment/hos(src)
diff --git a/code/modules/antagonists/nukeop/equipment/nuclear_authentication_disk.dm b/code/modules/antagonists/nukeop/equipment/nuclear_authentication_disk.dm
index 0f7dc33bc6f..24314af0b46 100644
--- a/code/modules/antagonists/nukeop/equipment/nuclear_authentication_disk.dm
+++ b/code/modules/antagonists/nukeop/equipment/nuclear_authentication_disk.dm
@@ -1,21 +1,15 @@
-/obj/item/disk
- icon = 'icons/obj/devices/circuitry_n_data.dmi'
- w_class = WEIGHT_CLASS_TINY
- inhand_icon_state = "card-id"
- lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi'
- icon_state = "datadisk0"
- drop_sound = 'sound/items/handling/disk_drop.ogg'
- pickup_sound = 'sound/items/handling/disk_pickup.ogg'
-
// DAT FUKKEN DISK.
/obj/item/disk/nuclear
name = "nuclear authentication disk"
desc = "Better keep this safe."
icon_state = "nucleardisk"
max_integrity = 250
+ sticker_icon_state = null
armor_type = /datum/armor/disk_nuclear
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
+ read_only = TRUE
+ read_only_locked = TRUE
+ reskin_allowed = FALSE
/// Whether we're a real nuke disk or not.
var/fake = FALSE
diff --git a/code/modules/bitrunning/objects/debug.dm b/code/modules/bitrunning/objects/debug.dm
index 84f77e3a18c..770aecd21c3 100644
--- a/code/modules/bitrunning/objects/debug.dm
+++ b/code/modules/bitrunning/objects/debug.dm
@@ -1,7 +1,7 @@
/obj/item/bitrunning_debug
name = "bitrunning debug item"
desc = "Adds points and reduces cooldown time for debugging"
- icon = 'icons/obj/devices/circuitry_n_data.dmi'
+ icon = 'icons/obj/devices/floppy_disks.dmi'
base_icon_state = "datadisk"
icon_state = "datadisk0"
diff --git a/code/modules/bitrunning/objects/disks.dm b/code/modules/bitrunning/objects/disks.dm
index f91aeaab043..3b1cd5de782 100644
--- a/code/modules/bitrunning/objects/disks.dm
+++ b/code/modules/bitrunning/objects/disks.dm
@@ -4,16 +4,17 @@
* You can make the custom cheese spells you've always wanted.
* Just make it fun and engaging, it's PvE content.
*/
-/obj/item/bitrunning_disk
+/obj/item/disk/bitrunning
name = "generic bitrunning program"
desc = "A disk containing source code."
- icon = 'icons/obj/devices/circuitry_n_data.dmi'
base_icon_state = "datadisk"
icon_state = "datadisk0"
+ sticker_icon_state = "o_code"
+ reskin_allowed = FALSE
/// Name of the choice made
var/choice_made
-/obj/item/bitrunning_disk/Initialize(mapload)
+/obj/item/disk/bitrunning/Initialize(mapload)
. = ..()
icon_state = "[base_icon_state][rand(0, 7)]"
@@ -23,7 +24,7 @@
load_callback = CALLBACK(src, PROC_REF(load_onto_avatar)), \
)
-/obj/item/bitrunning_disk/examine(mob/user)
+/obj/item/disk/bitrunning/examine(mob/user)
. = ..()
. += span_infoplain("This disk must be carried on your person into a netpod to be used.")
@@ -35,18 +36,17 @@
. += span_notice("It cannot make another selection.")
/// Handles loading our stuff onto avatars
-/obj/item/bitrunning_disk/proc/load_onto_avatar(mob/living/carbon/human/neo, mob/living/carbon/human/avatar, domain_flags)
+/obj/item/disk/bitrunning/proc/load_onto_avatar(mob/living/carbon/human/neo, mob/living/carbon/human/avatar, domain_flags)
return NONE
-
-/obj/item/bitrunning_disk/ability
+/obj/item/disk/bitrunning/ability
desc = "A disk containing source code. It can be used to preload abilities into the virtual domain. Duplicate abilities will be ignored."
/// The selected ability that this grants
var/datum/action/granted_action
/// The list of actions that this can grant
var/list/datum/action/selectable_actions = list()
-/obj/item/bitrunning_disk/ability/load_onto_avatar(mob/living/carbon/human/neo, mob/living/carbon/human/avatar, domain_flags)
+/obj/item/disk/bitrunning/ability/load_onto_avatar(mob/living/carbon/human/neo, mob/living/carbon/human/avatar, domain_flags)
if(domain_flags & DOMAIN_FORBIDS_ABILITIES)
return BITRUNNER_GEAR_LOAD_BLOCKED
@@ -60,8 +60,8 @@
our_action.Grant(avatar)
return NONE
-/obj/item/bitrunning_disk/ability/attack_self(mob/user, modifiers)
- . = ..()
+/obj/item/disk/bitrunning/ability/attack_self(mob/user, modifiers)
+ // Not calling parent to not flip the protection tab
if(choice_made)
return
@@ -86,7 +86,7 @@
choice_made = choice
/// Tier 1 programs. Simple, funny, or helpful.
-/obj/item/bitrunning_disk/ability/tier1
+/obj/item/disk/bitrunning/ability/tier1
name = "bitrunning program: basic"
selectable_actions = list(
/datum/action/cooldown/spell/conjure/cheese,
@@ -94,7 +94,7 @@
)
/// Tier 2 programs. More complex, powerful, or useful.
-/obj/item/bitrunning_disk/ability/tier2
+/obj/item/disk/bitrunning/ability/tier2
name = "bitrunning program: complex"
selectable_actions = list(
/datum/action/cooldown/spell/pointed/projectile/fireball,
@@ -103,7 +103,7 @@
)
/// Tier 3 abilities. Very powerful, game breaking.
-/obj/item/bitrunning_disk/ability/tier3
+/obj/item/disk/bitrunning/ability/tier3
name = "bitrunning program: elite"
selectable_actions = list(
/datum/action/cooldown/spell/shapeshift/dragon,
@@ -111,14 +111,14 @@
)
-/obj/item/bitrunning_disk/item
+/obj/item/disk/bitrunning/item
desc = "A disk containing source code. It can be used to preload items into the virtual domain."
/// The selected item that this grants
var/obj/granted_item
/// The list of actions that this can grant
var/list/obj/selectable_items = list()
-/obj/item/bitrunning_disk/item/load_onto_avatar(mob/living/carbon/human/neo, mob/living/carbon/human/avatar, domain_flags)
+/obj/item/disk/bitrunning/item/load_onto_avatar(mob/living/carbon/human/neo, mob/living/carbon/human/avatar, domain_flags)
if(domain_flags & DOMAIN_FORBIDS_ITEMS)
return BITRUNNER_GEAR_LOAD_BLOCKED
@@ -128,7 +128,7 @@
avatar.put_in_hands(new granted_item())
return NONE
-/obj/item/bitrunning_disk/item/attack_self(mob/user, modifiers)
+/obj/item/disk/bitrunning/item/attack_self(mob/user, modifiers)
. = ..()
if(choice_made)
@@ -151,7 +151,7 @@
choice_made = choice
/// Tier 1 items. Simple, funny, or helpful.
-/obj/item/bitrunning_disk/item/tier1
+/obj/item/disk/bitrunning/item/tier1
name = "bitrunning gear: simple"
selectable_items = list(
/obj/item/pizzabox/infinite,
@@ -160,7 +160,7 @@
)
/// Tier 2 items. More complex, powerful, or useful.
-/obj/item/bitrunning_disk/item/tier2
+/obj/item/disk/bitrunning/item/tier2
name = "bitrunning gear: complex"
selectable_items = list(
/obj/item/reagent_containers/hypospray/medipen/survival/luxury,
@@ -169,7 +169,7 @@
)
/// Tier 3 items. Very powerful, game breaking.
-/obj/item/bitrunning_disk/item/tier3
+/obj/item/disk/bitrunning/item/tier3
name = "bitrunning gear: advanced"
selectable_items = list(
/obj/item/gun/energy/e_gun/nuclear,
@@ -178,7 +178,7 @@
)
///proto-kinetic accelerator mods, to be applied to pka's given inside domains
-/obj/item/bitrunning_disk/item/pka_mods
+/obj/item/disk/bitrunning/item/pka_mods
name = "bitrunning gear: proto-kinetic accelerator mods"
selectable_items = list(
/obj/item/borg/upgrade/modkit/range,
@@ -188,7 +188,7 @@
/obj/item/borg/upgrade/modkit/human_passthrough,
)
-/obj/item/bitrunning_disk/item/pka_mods/premium
+/obj/item/disk/bitrunning/item/pka_mods/premium
name = "bitrunning gear: premium proto-kinetic accelerator mods"
selectable_items = list(
/obj/item/borg/upgrade/modkit/cooldown/repeater,
@@ -199,7 +199,7 @@
)
///proto-kinetic crusher trophies, to be applied to pkc's given inside domains
-/obj/item/bitrunning_disk/item/pkc_mods
+/obj/item/disk/bitrunning/item/pkc_mods
name = "bitrunning gear: proto-kinetic crusher mods"
selectable_items = list(
/obj/item/crusher_trophy/watcher_wing,
@@ -208,7 +208,7 @@
/obj/item/crusher_trophy/wolf_ear,
)
-/obj/item/bitrunning_disk/item/pkc_mods/premium
+/obj/item/disk/bitrunning/item/pkc_mods/premium
name = "bitrunning gear: premium proto-kinetic crusher mods"
selectable_items = list(
/obj/item/crusher_trophy/watcher_wing/ice_wing,
@@ -220,7 +220,7 @@
/obj/item/crusher_trophy/ice_demon_cube,
)
-/obj/item/bitrunning_disk/item/mini_uzi
+/obj/item/disk/bitrunning/item/mini_uzi
name = "bitrunning gear: mini-uzi"
selectable_items = list(
/obj/item/gun/ballistic/automatic/mini_uzi,
diff --git a/code/modules/bitrunning/objects/gimmick_disks/_gimmick_disk.dm b/code/modules/bitrunning/objects/gimmick_disks/_gimmick_disk.dm
index 24702d1254a..3b22db05089 100644
--- a/code/modules/bitrunning/objects/gimmick_disks/_gimmick_disk.dm
+++ b/code/modules/bitrunning/objects/gimmick_disks/_gimmick_disk.dm
@@ -2,23 +2,23 @@
/**
* Bitrunning tech disks which let you load full loadouts into the vdom on first avatar generation.
*/
-/obj/item/bitrunning_disk/gimmick
+/obj/item/disk/bitrunning/gimmick
desc = "A disk containing source code. It can be used to preload gimmick loadouts into the virtual domain."
/// The selected loadout that this grants
var/datum/bitrunning_gimmick/granted_loadout
/// The list of loadouts that this can grant
var/list/datum/bitrunning_gimmick/selectable_loadouts
-/obj/item/bitrunning_disk/gimmick/Destroy()
+/obj/item/disk/bitrunning/gimmick/Destroy()
QDEL_NULL(granted_loadout)
return ..()
-/obj/item/bitrunning_disk/gimmick/load_onto_avatar(mob/living/carbon/human/neo, mob/living/carbon/human/avatar, domain_flags)
+/obj/item/disk/bitrunning/gimmick/load_onto_avatar(mob/living/carbon/human/neo, mob/living/carbon/human/avatar, domain_flags)
if(isnull(granted_loadout))
return BITRUNNER_GEAR_LOAD_FAILED
return granted_loadout.grant_loadout(neo, avatar, domain_flags)
-/obj/item/bitrunning_disk/gimmick/attack_self(mob/user, modifiers)
+/obj/item/disk/bitrunning/gimmick/attack_self(mob/user, modifiers)
. = ..()
if(granted_loadout)
diff --git a/code/modules/bitrunning/objects/gimmick_disks/dungeon_disk.dm b/code/modules/bitrunning/objects/gimmick_disks/dungeon_disk.dm
index 3cf85bb2c66..b0968de86dd 100644
--- a/code/modules/bitrunning/objects/gimmick_disks/dungeon_disk.dm
+++ b/code/modules/bitrunning/objects/gimmick_disks/dungeon_disk.dm
@@ -3,7 +3,7 @@
* Bitrunning gimmick loadouts themed around dungeon crawling.
* Mostly for fun, have niche but not insignificant advantages.
*/
-/obj/item/bitrunning_disk/gimmick/dungeon
+/obj/item/disk/bitrunning/gimmick/dungeon
name = "bitrunning gimmick: dungeon crawling"
selectable_loadouts = list(
/datum/bitrunning_gimmick/alchemist,
diff --git a/code/modules/bitrunning/objects/gimmick_disks/sports_disk.dm b/code/modules/bitrunning/objects/gimmick_disks/sports_disk.dm
index 7024a9a4065..97e7cd1934e 100644
--- a/code/modules/bitrunning/objects/gimmick_disks/sports_disk.dm
+++ b/code/modules/bitrunning/objects/gimmick_disks/sports_disk.dm
@@ -3,7 +3,7 @@
* Bitrunning gimmick loadouts themed around sports.
* Mostly for fun, have niche or little advantages.
*/
-/obj/item/bitrunning_disk/gimmick/sports
+/obj/item/disk/bitrunning/gimmick/sports
name = "bitrunning gimmick: sports"
selectable_loadouts = list(
/datum/bitrunning_gimmick/boxer,
diff --git a/code/modules/bitrunning/orders/tech.dm b/code/modules/bitrunning/orders/tech.dm
index d14cf7bf1a1..1844a38949b 100644
--- a/code/modules/bitrunning/orders/tech.dm
+++ b/code/modules/bitrunning/orders/tech.dm
@@ -3,42 +3,42 @@
/datum/orderable_item/bitrunning_tech/item_tier1
cost_per_order = 750
- purchase_path = /obj/item/bitrunning_disk/item/tier1
+ purchase_path = /obj/item/disk/bitrunning/item/tier1
desc = "This disk contains a program that lets you equip a medical beamgun, a C4 explosive, or a box of infinite pizza."
/datum/orderable_item/bitrunning_tech/item_tier2
cost_per_order = 1250
- purchase_path = /obj/item/bitrunning_disk/item/tier2
+ purchase_path = /obj/item/disk/bitrunning/item/tier2
desc = "This disk contains a program that lets you equip a luxury medipen, a pistol, or an armour vest."
/datum/orderable_item/bitrunning_tech/item_tier3
cost_per_order = 2000
- purchase_path = /obj/item/bitrunning_disk/item/tier3
+ purchase_path = /obj/item/disk/bitrunning/item/tier3
desc = "This disk contains a program that lets you equip an advanced energy gun, a dual bladed energy sword, or a minibomb."
/datum/orderable_item/bitrunning_tech/ability_tier1
cost_per_order = 750
- purchase_path = /obj/item/bitrunning_disk/ability/tier1
+ purchase_path = /obj/item/disk/bitrunning/ability/tier1
desc = "This disk contains a program that lets you cast Summon Cheese or Lesser Heal."
/datum/orderable_item/bitrunning_tech/ability_tier2
cost_per_order = 1500
- purchase_path = /obj/item/bitrunning_disk/ability/tier2
+ purchase_path = /obj/item/disk/bitrunning/ability/tier2
desc = "This disk contains a program that lets you cast Fireball, Lightning Bolt, or Forcewall."
/datum/orderable_item/bitrunning_tech/ability_tier3
cost_per_order = 2500
- purchase_path = /obj/item/bitrunning_disk/ability/tier3
+ purchase_path = /obj/item/disk/bitrunning/ability/tier3
desc = "This disk contains a program that lets you shapeshift into a lesser ashdrake, or a polar bear."
/datum/orderable_item/bitrunning_tech/gimmick_sports
cost_per_order = 750
- purchase_path = /obj/item/bitrunning_disk/gimmick/sports
+ purchase_path = /obj/item/disk/bitrunning/gimmick/sports
desc = "This disk contains a program that lets you equip a sports-themed gimmick loadout."
/datum/orderable_item/bitrunning_tech/gimmick_dungeon_crawling
cost_per_order = 1250
- purchase_path = /obj/item/bitrunning_disk/gimmick/dungeon
+ purchase_path = /obj/item/disk/bitrunning/gimmick/dungeon
desc = "This disk contains a program that lets you equip a dungeon crawling-themed gimmick loadout."
/datum/orderable_item/bitrunning_tech/flip_skillchip
@@ -46,21 +46,21 @@
cost_per_order = 1500
/datum/orderable_item/bitrunning_tech/pka_mod
- purchase_path = /obj/item/bitrunning_disk/item/pka_mods
+ purchase_path = /obj/item/disk/bitrunning/item/pka_mods
cost_per_order = 750
desc = "This disk contains a program that lets you equip modkits for the proto-kinetic accelerator. Proto-kinetic accelerator not included."
/datum/orderable_item/bitrunning_tech/pka_mod/premium
- purchase_path = /obj/item/bitrunning_disk/item/pka_mods/premium
+ purchase_path = /obj/item/disk/bitrunning/item/pka_mods/premium
cost_per_order = 1600
desc = "This disk contains a program that lets you equip stronger modkits for the proto-kinetic accelerator. Proto-kinetic accelerator not included."
/datum/orderable_item/bitrunning_tech/pkc_mod
- purchase_path = /obj/item/bitrunning_disk/item/pkc_mods
+ purchase_path = /obj/item/disk/bitrunning/item/pkc_mods
cost_per_order = 750
desc = "This disk contains a program that lets you equip trophies for the proto-kinetic crusher. Proto-kinetic crusher no included."
/datum/orderable_item/bitrunning_tech/pkc_mod/premium
- purchase_path = /obj/item/bitrunning_disk/item/pkc_mods/premium
+ purchase_path = /obj/item/disk/bitrunning/item/pkc_mods/premium
cost_per_order = 1600
desc = "This disk contains a program that lets you equip stronger trophies for the proto-kinetic crusher. Proto-kinetic crusher not included."
diff --git a/code/modules/bitrunning/virtual_domain/domains/island_brawl.dm b/code/modules/bitrunning/virtual_domain/domains/island_brawl.dm
index 39699072057..a8bf3a6e6a2 100644
--- a/code/modules/bitrunning/virtual_domain/domains/island_brawl.dm
+++ b/code/modules/bitrunning/virtual_domain/domains/island_brawl.dm
@@ -14,7 +14,7 @@
/obj/item/clothing/shoes/sandal = 1,
/obj/item/clothing/glasses/sunglasses = 1,
/obj/item/gun/energy/laser/chameleon/ballistic_only = 1,
- /obj/item/bitrunning_disk/item/mini_uzi = 1,
+ /obj/item/disk/bitrunning/item/mini_uzi = 1,
)
/datum/lazy_template/virtual_domain/island_brawl/setup_domain(list/created_atoms)
diff --git a/code/modules/cargo/exports/parts.dm b/code/modules/cargo/exports/parts.dm
index d5d672425ba..3d4aaef65af 100644
--- a/code/modules/cargo/exports/parts.dm
+++ b/code/modules/cargo/exports/parts.dm
@@ -19,19 +19,19 @@
/datum/export/advanced_disk
cost = CARGO_CRATE_VALUE * 0.4
unit_name = "advanced data disk"
- export_types = list(/obj/item/computer_disk/advanced)
+ export_types = list(/obj/item/disk/computer/advanced)
include_subtypes = FALSE
/datum/export/super_disk
cost = CARGO_CRATE_VALUE * 0.6
unit_name = "super data disk"
- export_types = list(/obj/item/computer_disk/super)
+ export_types = list(/obj/item/disk/computer/super)
include_subtypes = FALSE
/datum/export/standard_disk
cost = CARGO_CRATE_VALUE * 0.2
unit_name = "data disk"
- export_types = list(/obj/item/computer_disk)
+ export_types = list(/obj/item/disk/computer)
include_subtypes = TRUE
/datum/export/refill_canister
diff --git a/code/modules/cargo/markets/market_items/tools.dm b/code/modules/cargo/markets/market_items/tools.dm
index d8acad9e0dc..61ec8452e51 100644
--- a/code/modules/cargo/markets/market_items/tools.dm
+++ b/code/modules/cargo/markets/market_items/tools.dm
@@ -103,7 +103,7 @@
/datum/market_item/tool/program_disk
name = "Bootleg Data Disk"
desc = "A data disk containing EXCLUSIVE and LIMITED modular programs. Legally, we're not allowed to tell you how we acquired them."
- item = /obj/item/computer_disk/black_market
+ item = /obj/item/disk/computer/black_market
price_min = CARGO_CRATE_VALUE * 0.75
price_max = CARGO_CRATE_VALUE * 2
stock_max = 3
diff --git a/code/modules/cargo/supplypod.dm b/code/modules/cargo/supplypod.dm
index 08a0e649a11..6ecc77d4ebf 100644
--- a/code/modules/cargo/supplypod.dm
+++ b/code/modules/cargo/supplypod.dm
@@ -794,7 +794,6 @@
/obj/item/disk/cargo/bluespace_pod //Disk that can be inserted into the Express Console to allow for Advanced Bluespace Pods
name = "Bluespace Drop Pod Upgrade"
desc = "This disk provides a firmware update to the Express Supply Console, granting the use of Nanotrasen's Bluespace Drop Pods to the supply department."
- icon = 'icons/obj/devices/circuitry_n_data.dmi'
- icon_state = "cargodisk"
- inhand_icon_state = "card-id"
- w_class = WEIGHT_CLASS_SMALL
+ icon_state = "datadisk12"
+ sticker_icon_state = "o_cargopod"
+ reskin_allowed = FALSE
diff --git a/code/modules/mob/living/silicon/robot/robot_defense.dm b/code/modules/mob/living/silicon/robot/robot_defense.dm
index b98b18787ca..e4af75d9025 100644
--- a/code/modules/mob/living/silicon/robot/robot_defense.dm
+++ b/code/modules/mob/living/silicon/robot/robot_defense.dm
@@ -206,7 +206,7 @@ GLOBAL_LIST_INIT(blacklisted_borg_hats, typecacheof(list( //Hats that don't real
balloon_alert(user, "headlamp repaired")
return ITEM_INTERACT_SUCCESS
- if(istype(tool, /obj/item/computer_disk))
+ if(istype(tool, /obj/item/disk/computer))
if(!modularInterface)
stack_trace("Cyborg [src] ( [type] ) was somehow missing their integrated tablet. Please make a bug report.")
create_modularInterface()
diff --git a/code/modules/modular_computers/computers/item/computer.dm b/code/modules/modular_computers/computers/item/computer.dm
index c213b351e88..4b382d6d668 100644
--- a/code/modules/modular_computers/computers/item/computer.dm
+++ b/code/modules/modular_computers/computers/item/computer.dm
@@ -19,7 +19,7 @@
///The alt slot, only used by certain UIs like the access app.
var/obj/item/card/id/alt_stored_id
///The disk in this PDA. If set, this will be inserted on Initialize.
- var/obj/item/computer_disk/inserted_disk
+ var/obj/item/disk/computer/inserted_disk
///The power cell the computer uses to run on.
var/obj/item/stock_parts/power_store/internal_cell = /obj/item/stock_parts/power_store/cell
///A pAI currently loaded into the modular computer.
@@ -927,7 +927,7 @@
if(istype(tool, /obj/item/paper_bin))
return paper_bin_act(user, tool)
- if(istype(tool, /obj/item/computer_disk))
+ if(istype(tool, /obj/item/disk/computer))
return computer_disk_act(user, tool)
return NONE
@@ -999,7 +999,7 @@
bin.update_appearance()
return ITEM_INTERACT_SUCCESS
-/obj/item/modular_computer/proc/computer_disk_act(mob/user, obj/item/computer_disk/disk)
+/obj/item/modular_computer/proc/computer_disk_act(mob/user, obj/item/disk/computer/disk)
if(!user.transferItemToLoc(disk, src))
return ITEM_INTERACT_BLOCKING
if(inserted_disk)
diff --git a/code/modules/modular_computers/computers/item/computer_files.dm b/code/modules/modular_computers/computers/item/computer_files.dm
index b0ae073bdd6..62f06b131ba 100644
--- a/code/modules/modular_computers/computers/item/computer_files.dm
+++ b/code/modules/modular_computers/computers/item/computer_files.dm
@@ -74,7 +74,7 @@
* the same filename (disregarding extension), will return it.
* If a computer disk is passed instead, it will check the disk over the computer.
*/
-/obj/item/modular_computer/proc/find_file_by_name(filename, obj/item/computer_disk/target_disk)
+/obj/item/modular_computer/proc/find_file_by_name(filename, obj/item/disk/computer/target_disk)
if(!istext(filename))
return null
if(isnull(target_disk))
@@ -94,7 +94,7 @@
* A file's uid is always unique to them, so this proc is sometimes preferable over find_file_by_name.
* If a computer disk is passed instead, it will check the disk over the computer.
*/
-/obj/item/modular_computer/proc/find_file_by_uid(uid, obj/item/computer_disk/target_disk)
+/obj/item/modular_computer/proc/find_file_by_uid(uid, obj/item/disk/computer/target_disk)
if(!isnum(uid))
return null
if(isnull(target_disk))
diff --git a/code/modules/modular_computers/computers/item/disks/computer_disk.dm b/code/modules/modular_computers/computers/item/disks/computer_disk.dm
index 3161be07921..6740aefbe12 100644
--- a/code/modules/modular_computers/computers/item/disks/computer_disk.dm
+++ b/code/modules/modular_computers/computers/item/disks/computer_disk.dm
@@ -1,26 +1,21 @@
-/obj/item/computer_disk
- name = "data disk"
- desc = "Removable disk used to store data."
- icon = 'icons/obj/devices/circuitry_n_data.dmi'
- icon_state = "datadisk6"
- w_class = WEIGHT_CLASS_TINY
- ///The amount of storage space is on the disk
+/obj/item/disk/computer
+ /// The amount of free storage space
var/max_capacity = 16
- ///The amount of storage space we've got filled
+ /// The amount of storage space occupied
var/used_capacity = 0
- ///List of stored files on this drive. DO NOT MODIFY DIRECTLY!
+ /// List of stored files on this drive. Do NOT directly modify; use setters instead.
var/list/datum/computer_file/stored_files = list()
- ///List of all programs that the disk should start with.
+ /// List of all programs that the disk should start with
var/list/datum/computer_file/starting_programs = list()
-/obj/item/computer_disk/Initialize(mapload)
+/obj/item/disk/computer/Initialize(mapload)
. = ..()
for(var/programs in starting_programs)
var/datum/computer_file/program_type = new programs
add_file(program_type)
-/obj/item/computer_disk/Destroy(force)
+/obj/item/disk/computer/Destroy(force)
. = ..()
QDEL_LIST(stored_files)
@@ -29,7 +24,7 @@
*
* Attempts to add an already existing file to the computer disk, then adds that capacity to the used capicity.
*/
-/obj/item/computer_disk/proc/add_file(datum/computer_file/file)
+/obj/item/disk/computer/proc/add_file(datum/computer_file/file)
if((file.size + used_capacity) > max_capacity)
return FALSE
stored_files.Add(file)
@@ -42,7 +37,7 @@
*
* Removes an app from the stored_files list, then removes their size from the capacity.
*/
-/obj/item/computer_disk/proc/remove_file(datum/computer_file/file)
+/obj/item/disk/computer/proc/remove_file(datum/computer_file/file)
if(!(file in stored_files))
return FALSE
stored_files.Remove(file)
@@ -50,12 +45,12 @@
qdel(file)
return TRUE
-/obj/item/computer_disk/advanced
+/obj/item/disk/computer/advanced
name = "advanced data disk"
icon_state = "datadisk5"
max_capacity = 64
-/obj/item/computer_disk/super
+/obj/item/disk/computer/super
name = "super data disk"
desc = "Removable disk used to store large amounts of data."
icon_state = "datadisk3"
diff --git a/code/modules/modular_computers/computers/item/disks/maintenance_disks.dm b/code/modules/modular_computers/computers/item/disks/maintenance_disks.dm
index 0fb2ccc2eef..3aa30b94f62 100644
--- a/code/modules/modular_computers/computers/item/disks/maintenance_disks.dm
+++ b/code/modules/modular_computers/computers/item/disks/maintenance_disks.dm
@@ -1,30 +1,30 @@
-/obj/item/computer_disk/maintenance
+/obj/item/disk/computer/maintenance
name = "maintenance data disk"
desc = "A data disk forgotten in the depths of maintenance, might have some useful program on it."
/// Medical health analyzer app
-/obj/item/computer_disk/maintenance/scanner
+/obj/item/disk/computer/maintenance/scanner
starting_programs = list(/datum/computer_file/program/maintenance/phys_scanner)
///Camera app, forced to always have largest image size
-/obj/item/computer_disk/maintenance/camera
+/obj/item/disk/computer/maintenance/camera
starting_programs = list(/datum/computer_file/program/maintenance/camera)
///MODsuit UI, in your PDA!
-/obj/item/computer_disk/maintenance/modsuit_control
+/obj/item/disk/computer/maintenance/modsuit_control
starting_programs = list(/datum/computer_file/program/maintenance/modsuit_control)
///Returns A 'spookiness' value based on the number of ghastly creature and hauntium and their distance from the PC.
-/obj/item/computer_disk/maintenance/spectre_meter
+/obj/item/disk/computer/maintenance/spectre_meter
starting_programs = list(/datum/computer_file/program/maintenance/spectre_meter)
///A version of the arcade program with less HP/MP for the enemy and more for the player
-/obj/item/computer_disk/maintenance/arcade
+/obj/item/disk/computer/maintenance/arcade
starting_programs = list(/datum/computer_file/program/arcade/eazy)
-/obj/item/computer_disk/maintenance/theme/Initialize(mapload)
+/obj/item/disk/computer/maintenance/theme/Initialize(mapload)
starting_programs = list(pick(subtypesof(/datum/computer_file/program/maintenance/theme)))
return ..()
-/obj/item/computer_disk/maintenance/cool_sword
+/obj/item/disk/computer/maintenance/cool_sword
starting_programs = list(/datum/computer_file/program/maintenance/cool_sword)
diff --git a/code/modules/modular_computers/computers/item/disks/role_disks.dm b/code/modules/modular_computers/computers/item/disks/role_disks.dm
index 2191aaccdff..073d21f873f 100644
--- a/code/modules/modular_computers/computers/item/disks/role_disks.dm
+++ b/code/modules/modular_computers/computers/item/disks/role_disks.dm
@@ -1,7 +1,7 @@
/**
* Command
*/
-/obj/item/computer_disk/command
+/obj/item/disk/computer/command
icon_state = "datadisk7"
max_capacity = 32
///Static list of programss ALL command tablets have.
@@ -10,13 +10,13 @@
/datum/computer_file/program/status,
)
-/obj/item/computer_disk/command/Initialize(mapload)
+/obj/item/disk/computer/command/Initialize(mapload)
. = ..()
for(var/programs in command_programs)
var/datum/computer_file/program/program_type = new programs
add_file(program_type)
-/obj/item/computer_disk/command/captain
+/obj/item/disk/computer/command/captain
name = "captain data disk"
desc = "Removable disk used to download essential Captain tablet apps."
icon_state = "datadisk10"
@@ -25,21 +25,21 @@
/datum/computer_file/program/records/medical,
)
-/obj/item/computer_disk/command/cmo
+/obj/item/disk/computer/command/cmo
name = "chief medical officer data disk"
desc = "Removable disk used to download essential CMO tablet apps."
starting_programs = list(
/datum/computer_file/program/records/medical,
)
-/obj/item/computer_disk/command/rd
+/obj/item/disk/computer/command/rd
name = "research director data disk"
desc = "Removable disk used to download essential RD tablet apps."
starting_programs = list(
/datum/computer_file/program/signal_commander,
)
-/obj/item/computer_disk/command/hos
+/obj/item/disk/computer/command/hos
name = "head of security data disk"
desc = "Removable disk used to download essential HoS tablet apps."
icon_state = "datadisk9"
@@ -47,7 +47,7 @@
/datum/computer_file/program/records/security,
)
-/obj/item/computer_disk/command/hop
+/obj/item/disk/computer/command/hop
name = "head of personnel data disk"
desc = "Removable disk used to download essential HoP tablet apps."
starting_programs = list(
@@ -55,7 +55,7 @@
/datum/computer_file/program/job_management,
)
-/obj/item/computer_disk/command/ce
+/obj/item/disk/computer/command/ce
name = "chief engineer data disk"
desc = "Removable disk used to download essential CE tablet apps."
starting_programs = list(
@@ -67,7 +67,7 @@
/**
* Security
*/
-/obj/item/computer_disk/security
+/obj/item/disk/computer/security
name = "security officer data disk"
desc = "Removable disk used to download security-related tablet apps."
icon_state = "datadisk9"
@@ -78,7 +78,7 @@
/**
* Medical
*/
-/obj/item/computer_disk/medical
+/obj/item/disk/computer/medical
name = "medical doctor data disk"
desc = "Removable disk used to download medical-related tablet apps."
icon_state = "datadisk7"
@@ -89,10 +89,10 @@
/**
* Supply
*/
-/obj/item/computer_disk/quartermaster
+/obj/item/disk/computer/quartermaster
name = "cargo data disk"
desc = "Removable disk used to download cargo-related tablet apps."
- icon_state = "cargodisk"
+ icon_state = "datadisk12"
starting_programs = list(
/datum/computer_file/program/shipping,
/datum/computer_file/program/budgetorders,
@@ -102,7 +102,7 @@
/**
* Science
*/
-/obj/item/computer_disk/ordnance
+/obj/item/disk/computer/ordnance
name = "ordnance data disk"
desc = "Removable disk used to download ordnance-related tablet apps."
icon_state = "datadisk5"
@@ -114,7 +114,7 @@
/**
* Engineering
*/
-/obj/item/computer_disk/engineering
+/obj/item/disk/computer/engineering
name = "engineering data disk"
desc = "Removable disk used to download engineering-related tablet apps."
icon_state = "datadisk6"
diff --git a/code/modules/modular_computers/computers/item/disks/unique_disks.dm b/code/modules/modular_computers/computers/item/disks/unique_disks.dm
index a5e9d9750f3..9251ffa7922 100644
--- a/code/modules/modular_computers/computers/item/disks/unique_disks.dm
+++ b/code/modules/modular_computers/computers/item/disks/unique_disks.dm
@@ -1,19 +1,27 @@
-/obj/item/computer_disk/syndicate
+/obj/item/disk/computer/syndicate
name = "golden data disk"
desc = "A data disk with some high-tech programs, probably expensive as hell."
- icon_state = "datadisk8"
+ icon_state = "datadisk9"
custom_materials = list(/datum/material/gold = SMALL_MATERIAL_AMOUNT)
-/obj/item/computer_disk/syndicate/camera_app
+/obj/item/disk/computer/syndicate/Initialize(mapload)
+ . = ..()
+ add_overlay("o_syndicate")
+
+/obj/item/disk/computer/syndicate/camera_app
starting_programs = list(/datum/computer_file/program/secureye/syndicate)
-/obj/item/computer_disk/syndicate/contractor
+/obj/item/disk/computer/syndicate/contractor
starting_programs = list(/datum/computer_file/program/contract_uplink)
-/obj/item/computer_disk/black_market
+/obj/item/disk/computer/black_market
desc = "Removable disk used to store data. This one has a smudged piece of paper glued to it, reading \"PC softwarez\"."
-/obj/item/computer_disk/black_market/Initialize(mapload)
+/obj/item/disk/computer/black_market/Initialize(mapload)
+ . = ..()
+ add_overlay("o_code")
+
+/obj/item/disk/computer/black_market/Initialize(mapload)
icon_state = "datadisk[rand(0, 10)]"
//Populated with programs not found in the verified downloader app or that require access to download (but not to run).
var/list/potential_programs = list(
diff --git a/code/modules/modular_computers/computers/item/disks/virus_disk.dm b/code/modules/modular_computers/computers/item/disks/virus_disk.dm
index 585e7d31558..fdc336362a5 100644
--- a/code/modules/modular_computers/computers/item/disks/virus_disk.dm
+++ b/code/modules/modular_computers/computers/item/disks/virus_disk.dm
@@ -2,14 +2,14 @@
* Virus disk
* Can't hold apps, instead does unique actions.
*/
-/obj/item/computer_disk/virus
+/obj/item/disk/computer/virus
name = "\improper generic virus disk"
icon_state = "virusdisk"
max_capacity = 0
///How many charges the virus has left
var/charges = 5
-/obj/item/computer_disk/virus/proc/send_virus(obj/item/modular_computer/pda/source, obj/item/modular_computer/pda/target, mob/living/user, message)
+/obj/item/disk/computer/virus/proc/send_virus(obj/item/modular_computer/pda/source, obj/item/modular_computer/pda/target, mob/living/user, message)
if(charges <= 0)
to_chat(user, span_notice("ERROR: Out of charges."))
return FALSE
@@ -23,10 +23,10 @@
* Makes people's PDA honk
* Can also be used on open panel airlocks to make them honk on opening.
*/
-/obj/item/computer_disk/virus/clown
+/obj/item/disk/computer/virus/clown
name = "\improper H.O.N.K. disk"
-/obj/item/computer_disk/virus/clown/send_virus(obj/item/modular_computer/pda/source, obj/item/modular_computer/pda/target, mob/living/user, message)
+/obj/item/disk/computer/virus/clown/send_virus(obj/item/modular_computer/pda/source, obj/item/modular_computer/pda/target, mob/living/user, message)
. = ..()
if(!.)
return FALSE
@@ -40,10 +40,10 @@
* Mime virus
* Makes PDA's silent, removing their ringtone.
*/
-/obj/item/computer_disk/virus/mime
+/obj/item/disk/computer/virus/mime
name = "\improper sound of silence disk"
-/obj/item/computer_disk/virus/mime/send_virus(obj/item/modular_computer/pda/source, obj/item/modular_computer/pda/target, mob/living/user, message)
+/obj/item/disk/computer/virus/mime/send_virus(obj/item/modular_computer/pda/source, obj/item/modular_computer/pda/target, mob/living/user, message)
. = ..()
if(!.)
return FALSE
@@ -60,11 +60,11 @@
* Detomatix virus
* Sends a false message, and blows the PDA up if the target responds to it (or opens their messenger before a timer)
*/
-/obj/item/computer_disk/virus/detomatix
+/obj/item/disk/computer/virus/detomatix
name = "\improper D.E.T.O.M.A.T.I.X. disk"
charges = 6
-/obj/item/computer_disk/virus/detomatix/send_virus(obj/item/modular_computer/pda/source, obj/item/modular_computer/pda/target, mob/living/user, message)
+/obj/item/disk/computer/virus/detomatix/send_virus(obj/item/modular_computer/pda/source, obj/item/modular_computer/pda/target, mob/living/user, message)
. = ..()
if(!.)
return FALSE
@@ -101,7 +101,7 @@
* Creates and opens a false uplink on someone's PDA
* Can be loaded with TC to show up on the false uplink.
*/
-/obj/item/computer_disk/virus/frame
+/obj/item/disk/computer/virus/frame
name = "\improper F.R.A.M.E. disk"
///How many telecrystals the uplink should have
@@ -109,7 +109,7 @@
///How much progression should be shown in the uplink, set on purchase of the item.
var/current_progression = 0
-/obj/item/computer_disk/virus/frame/attackby(obj/item/attacking_item, mob/user, list/modifiers, list/attack_modifiers)
+/obj/item/disk/computer/virus/frame/attackby(obj/item/attacking_item, mob/user, list/modifiers, list/attack_modifiers)
. = ..()
if(!istype(attacking_item, /obj/item/stack/telecrystal))
return
@@ -122,7 +122,7 @@
telecrystal_stack.use(telecrystal_stack.amount)
-/obj/item/computer_disk/virus/frame/send_virus(obj/item/modular_computer/pda/source, obj/item/modular_computer/pda/target, mob/living/user, message)
+/obj/item/disk/computer/virus/frame/send_virus(obj/item/modular_computer/pda/source, obj/item/modular_computer/pda/target, mob/living/user, message)
. = ..()
if(!.)
return FALSE
diff --git a/code/modules/modular_computers/computers/item/pda.dm b/code/modules/modular_computers/computers/item/pda.dm
index 25ef899febb..1df3722a50f 100644
--- a/code/modules/modular_computers/computers/item/pda.dm
+++ b/code/modules/modular_computers/computers/item/pda.dm
@@ -112,9 +112,9 @@
if(!target_machine.panel_open && !istype(target, /obj/machinery/computer))
return ..()
- if(!istype(inserted_disk, /obj/item/computer_disk/virus/clown))
+ if(!istype(inserted_disk, /obj/item/disk/computer/virus/clown))
return ..()
- var/obj/item/computer_disk/virus/clown/installed_cartridge = inserted_disk
+ var/obj/item/disk/computer/virus/clown/installed_cartridge = inserted_disk
if(!installed_cartridge.charges)
to_chat(user, span_notice("Out of virus charges."))
return ..()
@@ -225,7 +225,7 @@
if(current_turf)
current_turf.hotspot_expose(700,125)
- if(istype(inserted_disk, /obj/item/computer_disk/virus/detomatix))
+ if(istype(inserted_disk, /obj/item/disk/computer/virus/detomatix))
explosion(src, devastation_range = -1, heavy_impact_range = 1, light_impact_range = 3, flash_range = 4)
else
explosion(src, devastation_range = -1, heavy_impact_range = -1, light_impact_range = 2, flash_range = 3)
diff --git a/code/modules/modular_computers/computers/item/role_tablet_presets.dm b/code/modules/modular_computers/computers/item/role_tablet_presets.dm
index b77f273378f..2f655ac1d0c 100644
--- a/code/modules/modular_computers/computers/item/role_tablet_presets.dm
+++ b/code/modules/modular_computers/computers/item/role_tablet_presets.dm
@@ -326,7 +326,7 @@
icon = 'icons/obj/devices/modular_pda.dmi'
icon_state = "pda-clown"
post_init_icon_state = null
- inserted_disk = /obj/item/computer_disk/virus/clown
+ inserted_disk = /obj/item/disk/computer/virus/clown
greyscale_config = null
greyscale_colors = null
inserted_item = /obj/item/toy/crayon/rainbow
@@ -358,7 +358,7 @@
/obj/item/modular_computer/pda/clown/proc/AfterSlip(mob/living/carbon/human/M)
if (istype(M) && (M.real_name != saved_identification))
- var/obj/item/computer_disk/virus/clown/cart = inserted_disk
+ var/obj/item/disk/computer/virus/clown/cart = inserted_disk
if(istype(cart) && cart.charges < 5)
cart.charges++
playsound(src,'sound/machines/ping.ogg',30,TRUE)
@@ -368,7 +368,7 @@
/obj/item/modular_computer/pda/mime
name = "mime PDA"
- inserted_disk = /obj/item/computer_disk/virus/mime
+ inserted_disk = /obj/item/disk/computer/virus/mime
icon_state = "/obj/item/modular_computer/pda/mime"
greyscale_config = /datum/greyscale_config/tablet/mime
greyscale_colors = "#FAFAFA#EA3232"
diff --git a/code/modules/modular_computers/file_system/computer_file.dm b/code/modules/modular_computers/file_system/computer_file.dm
index 05f3272d833..d719fe5bd36 100644
--- a/code/modules/modular_computers/file_system/computer_file.dm
+++ b/code/modules/modular_computers/file_system/computer_file.dm
@@ -14,7 +14,7 @@
///The modular computer hosting the file.
var/obj/item/modular_computer/computer
///The computer disk hosting the file.
- var/obj/item/computer_disk/disk_host
+ var/obj/item/disk/computer/disk_host
/datum/computer_file/New()
..()
diff --git a/code/modules/modular_computers/file_system/programs/messenger/messenger_program.dm b/code/modules/modular_computers/file_system/programs/messenger/messenger_program.dm
index 0cd3595c437..48e19516dad 100644
--- a/code/modules/modular_computers/file_system/programs/messenger/messenger_program.dm
+++ b/code/modules/modular_computers/file_system/programs/messenger/messenger_program.dm
@@ -276,7 +276,7 @@
return FALSE
if(sending_virus)
- var/obj/item/computer_disk/virus/disk = computer.inserted_disk
+ var/obj/item/disk/computer/virus/disk = computer.inserted_disk
if(!istype(disk))
return FALSE
@@ -376,7 +376,7 @@
data["selected_photo_path"] = !isnull(selected_image) ? SSassets.transport.get_asset_url(selected_image) : null
data["on_spam_cooldown"] = !can_send_everyone_message()
- var/obj/item/computer_disk/virus/disk = computer.inserted_disk
+ var/obj/item/disk/computer/virus/disk = computer.inserted_disk
if(istype(disk))
data["virus_attach"] = TRUE
data["sending_virus"] = sending_virus
diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm
index 1c1c45fe59a..b2064b0acdf 100644
--- a/code/modules/power/singularity/emitter.dm
+++ b/code/modules/power/singularity/emitter.dm
@@ -628,7 +628,7 @@
/obj/item/emitter_disk
name = "\improper Diode Disk: Debugger"
desc = "This disk can be used on an emitter with an open panel to reset its projectile. Unless this was handed to you by an admin, you should report this on github."
- icon = 'icons/obj/devices/circuitry_n_data.dmi'
+ icon = 'icons/obj/devices/floppy_disks.dmi'
icon_state = "datadisk6"
var/laser_color = COLOR_VIBRANT_LIME
var/stored_proj = /obj/projectile/beam/emitter/hitscan
diff --git a/code/modules/research/designs/computer_part_designs.dm b/code/modules/research/designs/computer_part_designs.dm
index 7a8242642a1..948073f9f15 100644
--- a/code/modules/research/designs/computer_part_designs.dm
+++ b/code/modules/research/designs/computer_part_designs.dm
@@ -7,7 +7,7 @@
id = "portadrive_basic"
build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE
materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT)
- build_path = /obj/item/computer_disk
+ build_path = /obj/item/disk/computer
category = list(
RND_CATEGORY_INITIAL,
RND_CATEGORY_MODULAR_COMPUTERS + RND_SUBCATEGORY_MODULAR_COMPUTERS_PARTS
@@ -19,7 +19,7 @@
id = "portadrive_advanced"
build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE
materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT * 2)
- build_path = /obj/item/computer_disk/advanced
+ build_path = /obj/item/disk/computer/advanced
category = list(
RND_CATEGORY_INITIAL,
RND_CATEGORY_MODULAR_COMPUTERS + RND_SUBCATEGORY_MODULAR_COMPUTERS_PARTS
@@ -31,7 +31,7 @@
id = "portadrive_super"
build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE
materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT * 4)
- build_path = /obj/item/computer_disk/super
+ build_path = /obj/item/disk/computer/super
category = list(
RND_CATEGORY_INITIAL,
RND_CATEGORY_MODULAR_COMPUTERS + RND_SUBCATEGORY_MODULAR_COMPUTERS_PARTS
diff --git a/code/modules/research/ordnance/doppler_array.dm b/code/modules/research/ordnance/doppler_array.dm
index fda438e4f4e..c516cd38f6a 100644
--- a/code/modules/research/ordnance/doppler_array.dm
+++ b/code/modules/research/ordnance/doppler_array.dm
@@ -15,7 +15,7 @@
/// List of all explosion records in the form of /datum/data/tachyon_record
var/list/records = list()
/// Reference to a disk we are going to print to.
- var/obj/item/computer_disk/inserted_disk
+ var/obj/item/disk/computer/inserted_disk
// Lighting system to better communicate the directions.
light_system = OVERLAY_LIGHT_DIRECTIONAL
@@ -49,8 +49,8 @@
. += span_notice("It is currently facing [dir2text(dir)]")
/obj/machinery/doppler_array/attackby(obj/item/item, mob/user, list/modifiers, list/attack_modifiers)
- if(istype(item, /obj/item/computer_disk))
- var/obj/item/computer_disk/disk = item
+ if(istype(item, /obj/item/disk/computer))
+ var/obj/item/disk/computer/disk = item
eject_disk(user)
if(user.transferItemToLoc(disk, src))
inserted_disk = disk
diff --git a/code/modules/research/ordnance/tank_compressor.dm b/code/modules/research/ordnance/tank_compressor.dm
index 06069123f94..189ab23a3a0 100644
--- a/code/modules/research/ordnance/tank_compressor.dm
+++ b/code/modules/research/ordnance/tank_compressor.dm
@@ -19,7 +19,7 @@
var/record_number = 1
var/obj/item/tank/inserted_tank
/// Reference to a disk we are going to print to.
- var/obj/item/computer_disk/inserted_disk
+ var/obj/item/disk/computer/inserted_disk
pipe_flags = PIPING_ONE_PER_TURF | PIPING_DEFAULT_LAYER_ONLY
@@ -60,8 +60,8 @@
RegisterSignal(inserted_tank, COMSIG_QDELETING, PROC_REF(tank_destruction))
update_appearance()
return
- if(istype(item, /obj/item/computer_disk))
- var/obj/item/computer_disk/attacking_disk = item
+ if(istype(item, /obj/item/disk/computer))
+ var/obj/item/disk/computer/attacking_disk = item
eject_disk(user)
if(user.transferItemToLoc(attacking_disk, src))
inserted_disk = attacking_disk
diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm
index 2c591e0fe11..6b900f0e83b 100644
--- a/code/modules/research/server.dm
+++ b/code/modules/research/server.dm
@@ -116,7 +116,7 @@
/obj/machinery/rnd/server/master
max_integrity = 1800 //takes roughly ~15s longer to break then full deconstruction.
circuit = null
- var/obj/item/computer_disk/hdd_theft/source_code_hdd
+ var/obj/item/disk/computer/hdd_theft/source_code_hdd
var/deconstruction_state = HDD_PANEL_CLOSED
var/front_panel_screws = 4
var/hdd_wires = 6
@@ -166,7 +166,7 @@
return ..()
/obj/machinery/rnd/server/master/attackby(obj/item/attacking_item, mob/user, list/modifiers, list/attack_modifiers)
- if(istype(attacking_item, /obj/item/computer_disk/hdd_theft))
+ if(istype(attacking_item, /obj/item/disk/computer/hdd_theft))
switch(deconstruction_state)
if(HDD_PANEL_CLOSED)
balloon_alert(user, "you can't find a place to insert it!")
diff --git a/code/modules/uplink/uplink_items/device_tools.dm b/code/modules/uplink/uplink_items/device_tools.dm
index 83ebc1e737d..9696cd1bbb7 100644
--- a/code/modules/uplink/uplink_items/device_tools.dm
+++ b/code/modules/uplink/uplink_items/device_tools.dm
@@ -104,7 +104,7 @@
/datum/uplink_item/device_tools/camera_app
name = "SyndEye Program"
desc = "A data disk containing a unique PC app that allows you to watch cameras and track crewmembers."
- item = /obj/item/computer_disk/syndicate/camera_app
+ item = /obj/item/disk/computer/syndicate/camera_app
cost = 1
surplus = 90
purchasable_from = ~UPLINK_ALL_SYNDIE_OPS
@@ -137,14 +137,14 @@
when used cause the targeted tablet to become a new uplink with zero TCs, and immediately become unlocked. \
You will receive the unlock code upon activating the virus, and the new uplink may be charged with \
telecrystals normally."
- item = /obj/item/computer_disk/virus/frame
+ item = /obj/item/disk/computer/virus/frame
cost = 4
restricted = TRUE
purchasable_from = ~UPLINK_ALL_SYNDIE_OPS
/datum/uplink_item/device_tools/frame/spawn_item(spawn_path, mob/user, datum/uplink_handler/uplink_handler, atom/movable/source)
. = ..()
- var/obj/item/computer_disk/virus/frame/target = .
+ var/obj/item/disk/computer/virus/frame/target = .
if(!target)
return
target.current_progression = uplink_handler.progression_points
diff --git a/code/modules/uplink/uplink_items/explosive.dm b/code/modules/uplink/uplink_items/explosive.dm
index 6eb0c05bddd..89d0d9d23ea 100644
--- a/code/modules/uplink/uplink_items/explosive.dm
+++ b/code/modules/uplink/uplink_items/explosive.dm
@@ -51,7 +51,7 @@
desc = "When inserted into a tablet, this cartridge gives you four opportunities to \
detonate tablets of crewmembers who have their message feature enabled. \
The concussive effect from the explosion will knock the recipient out for a short period, and deafen them for longer."
- item = /obj/item/computer_disk/virus/detomatix
+ item = /obj/item/disk/computer/virus/detomatix
cost = 6
restricted = TRUE
diff --git a/code/modules/uplink/uplink_items/nukeops.dm b/code/modules/uplink/uplink_items/nukeops.dm
index 37ee8997aee..971517074fb 100644
--- a/code/modules/uplink/uplink_items/nukeops.dm
+++ b/code/modules/uplink/uplink_items/nukeops.dm
@@ -820,7 +820,7 @@
/datum/uplink_item/suits/synd_ai_upgrade
name = "Syndicate AI Upgrade"
desc = "...unless you buy the Syndicate Upgrade! This data chip allows the captured AI to increase its interaction range by two tiles per application. The Syndicate recommends three or four purchases at most, for a total of seven or infinite meters of range."
- item = /obj/item/computer_disk/syndie_ai_upgrade
+ item = /obj/item/disk/computer/syndie_ai_upgrade
cost = 4
purchasable_from = UPLINK_ALL_SYNDIE_OPS
cant_discount = TRUE
diff --git a/code/modules/vending/assist.dm b/code/modules/vending/assist.dm
index 9e5a3c4d8ec..1f368e4afdd 100644
--- a/code/modules/vending/assist.dm
+++ b/code/modules/vending/assist.dm
@@ -8,7 +8,7 @@
/obj/item/assembly/igniter = 3,
/obj/item/assembly/prox_sensor = 5,
/obj/item/assembly/signaler = 4,
- /obj/item/computer_disk/ordnance = 4,
+ /obj/item/disk/computer/ordnance = 4,
/obj/item/stock_parts/capacitor = 3,
/obj/item/stock_parts/servo = 3,
/obj/item/stock_parts/matter_bin = 3,
diff --git a/code/modules/vending/cartridge.dm b/code/modules/vending/cartridge.dm
index ccc13b7de72..043782d5366 100644
--- a/code/modules/vending/cartridge.dm
+++ b/code/modules/vending/cartridge.dm
@@ -7,12 +7,12 @@
icon_deny = "cart-deny"
panel_type = "panel6"
products = list(
- /obj/item/computer_disk/medical = 10,
- /obj/item/computer_disk/engineering = 10,
- /obj/item/computer_disk/security = 10,
- /obj/item/computer_disk/ordnance = 10,
- /obj/item/computer_disk/quartermaster = 10,
- /obj/item/computer_disk/command/captain = 3,
+ /obj/item/disk/computer/medical = 10,
+ /obj/item/disk/computer/engineering = 10,
+ /obj/item/disk/computer/security = 10,
+ /obj/item/disk/computer/ordnance = 10,
+ /obj/item/disk/computer/quartermaster = 10,
+ /obj/item/disk/computer/command/captain = 3,
/obj/item/modular_computer/pda = 10,
)
refill_canister = /obj/item/vending_refill/cart
diff --git a/code/modules/vending/modularpc.dm b/code/modules/vending/modularpc.dm
index 415329366c7..c3363cde229 100644
--- a/code/modules/vending/modularpc.dm
+++ b/code/modules/vending/modularpc.dm
@@ -8,7 +8,7 @@
product_ads = "Get your gamer gear!;The best GPUs for all of your space-crypto needs!;The most robust cooling!;The finest RGB in space!"
vend_reply = "Game on!"
products = list(
- /obj/item/computer_disk = 8,
+ /obj/item/disk/computer = 8,
/obj/item/modular_computer/laptop = 4,
/obj/item/modular_computer/pda = 4,
)
diff --git a/icons/obj/devices/circuitry_n_data.dmi b/icons/obj/devices/circuitry_n_data.dmi
index cacf3cf13b7..c35a1a60272 100644
Binary files a/icons/obj/devices/circuitry_n_data.dmi and b/icons/obj/devices/circuitry_n_data.dmi differ
diff --git a/icons/obj/devices/floppy_disks.dmi b/icons/obj/devices/floppy_disks.dmi
new file mode 100644
index 00000000000..fea1c6ad149
Binary files /dev/null and b/icons/obj/devices/floppy_disks.dmi differ
diff --git a/icons/obj/storage/wrapping.dmi b/icons/obj/storage/wrapping.dmi
index 9d8e757ea15..2759a02ac8b 100644
Binary files a/icons/obj/storage/wrapping.dmi and b/icons/obj/storage/wrapping.dmi differ
diff --git a/tgstation.dme b/tgstation.dme
index 4e22afe16c1..6f10c88246d 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -2544,6 +2544,7 @@
#include "code\game\objects\items\fireaxe.dm"
#include "code\game\objects\items\flamethrower.dm"
#include "code\game\objects\items\flatpacks.dm"
+#include "code\game\objects\items\floppy_disk.dm"
#include "code\game\objects\items\forensicsspoofer.dm"
#include "code\game\objects\items\frog_statue.dm"
#include "code\game\objects\items\gift.dm"
diff --git a/tools/UpdatePaths/Scripts/94112_disk_repath.txt b/tools/UpdatePaths/Scripts/94112_disk_repath.txt
new file mode 100644
index 00000000000..f5f6ecd21e9
--- /dev/null
+++ b/tools/UpdatePaths/Scripts/94112_disk_repath.txt
@@ -0,0 +1,7 @@
+# Replaces /obj/item/bitrunning_disk with /obj/item/disk/bitrunning
+
+/obj/item/bitrunning_disk : /obj/item/disk/bitrunning{@OLD}
+/obj/item/bitrunning_disk/@SUBTYPES : /obj/item/disk/bitrunning/@SUBTYPES{@OLD}
+
+/obj/item/computer_disk : /obj/item/disk/computer{@OLD}
+/obj/item/computer_disk/@SUBTYPES : /obj/item/disk/computer/@SUBTYPES{@OLD}