diff --git a/code/ATMOSPHERICS/components/valve.dm b/code/ATMOSPHERICS/components/valve.dm
index 835adeed27..bcb962857c 100644
--- a/code/ATMOSPHERICS/components/valve.dm
+++ b/code/ATMOSPHERICS/components/valve.dm
@@ -131,7 +131,7 @@ obj/machinery/atmospherics/valve
process()
..()
- machines.Remove(src)
+ . = PROCESS_KILL
/* if(open && (!node1 || !node2))
close()
diff --git a/code/ATMOSPHERICS/pipes.dm b/code/ATMOSPHERICS/pipes.dm
index 422b4e941d..33f3a798c4 100644
--- a/code/ATMOSPHERICS/pipes.dm
+++ b/code/ATMOSPHERICS/pipes.dm
@@ -106,7 +106,7 @@ obj/machinery/atmospherics/pipe
if(!parent) //This should cut back on the overhead calling build_network thousands of times per cycle
..()
else
- machines.Remove(src)
+ . = PROCESS_KILL
/*if(!node1)
parent.mingle_with_turf(loc, volume)
@@ -339,7 +339,7 @@ obj/machinery/atmospherics/pipe
if(!parent)
..()
else
- machines.Remove(src)
+ . = PROCESS_KILL
/* if(!node1)
parent.mingle_with_turf(loc, 200)
if(!nodealert)
@@ -520,7 +520,7 @@ obj/machinery/atmospherics/pipe
process()
if(!parent)
if(build_killswitch <= 0)
- machines.Remove(src)
+ . = PROCESS_KILL
else
build_killswitch--
..()
@@ -626,7 +626,7 @@ obj/machinery/atmospherics/pipe
if(!parent)
..()
else
- machines.Remove(src)
+ . = PROCESS_KILL
/*
if(!node1)
parent.mingle_with_turf(loc, 70)
diff --git a/code/controllers/master_controller.dm b/code/controllers/master_controller.dm
index faa7dfd8cd..248c760c4d 100644
--- a/code/controllers/master_controller.dm
+++ b/code/controllers/master_controller.dm
@@ -25,9 +25,7 @@ datum/controller/game_controller
var/ticker_cost = 0
var/total_cost = 0
- var/obj/machinery/last_obj_processed //Used for MC 'proc break' debugging
- var/datum/disease/last_disease_processed //Used for MC 'proc break' debugging
- var/obj/machinery/last_machine_processed //Used for MC 'proc break' debugging
+ var/last_thing_processed
datum/controller/game_controller/New()
//There can be only one master_controller. Out with the old and in with the new.
@@ -101,7 +99,6 @@ datum/controller/game_controller/proc/process()
if(!Failsafe) new /datum/failsafe()
var/currenttime = world.timeofday
-
last_tick_duration = (currenttime - last_tick_timeofday) / 10
last_tick_timeofday = currenttime
@@ -110,107 +107,128 @@ datum/controller/game_controller/proc/process()
var/start_time = world.timeofday
controller_iteration++
+ //AIR
timer = world.timeofday
+ last_thing_processed = air_master.type
air_master.process()
air_cost = (world.timeofday - timer) / 10
sleep(breather_ticks)
+ //SUN
timer = world.timeofday
+ last_thing_processed = sun.type
sun.calc_position()
sun_cost = (world.timeofday - timer) / 10
sleep(breather_ticks)
+ //MOBS
timer = world.timeofday
- for(var/i=1,i<=mob_list.len,i++)
+ var/i = 1
+ while(i<=mob_list.len)
var/mob/M = mob_list[i]
if(M)
+ last_thing_processed = M.type
M.Life()
+ i++
continue
mob_list.Cut(i,i+1)
- i--
mobs_cost = (world.timeofday - timer) / 10
sleep(breather_ticks)
+ //DISEASES
timer = world.timeofday
- for(var/i=1,i<=active_diseases.len,i++)
+ i = 1
+ while(i<=active_diseases.len)
var/datum/disease/Disease = active_diseases[i]
if(Disease)
- last_disease_processed = Disease
+ last_thing_processed = Disease.type
Disease.process()
+ i++
continue
active_diseases.Cut(i,i+1)
- i--
diseases_cost = (world.timeofday - timer) / 10
sleep(breather_ticks)
+ //MACHINES
timer = world.timeofday
- for(var/i=1,i<=machines.len,i++)
+ i = 1
+ while(i<=machines.len)
var/obj/machinery/Machine = machines[i]
if(Machine)
- last_machine_processed = Machine
- Machine.process()
- if(Machine)
- if(Machine.use_power)
- Machine.auto_use_power()
- continue
+ last_thing_processed = Machine.type
+ if(Machine.process() != PROCESS_KILL)
+ if(Machine)
+ if(Machine.use_power)
+ Machine.auto_use_power()
+ i++
+ continue
machines.Cut(i,i+1)
- i--
machines_cost = (world.timeofday - timer) / 10
sleep(breather_ticks)
+ //OBJECTS
timer = world.timeofday
- for(var/i=1,i<=processing_objects.len,i++)
+ i = 1
+ while(i<=processing_objects.len)
var/obj/Object = processing_objects[i]
if(Object)
- last_obj_processed = Object
+ last_thing_processed = Object.type
Object.process()
+ i++
continue
processing_objects.Cut(i,i+1)
- i--
objects_cost = (world.timeofday - timer) / 10
sleep(breather_ticks)
+ //PIPENETS
timer = world.timeofday
- for(var/i=1,i<=pipe_networks.len,i++)
+ last_thing_processed = /datum/pipe_network
+ i = 1
+ while(i<=pipe_networks.len)
var/datum/pipe_network/Network = pipe_networks[i]
if(Network)
Network.process()
+ i++
continue
pipe_networks.Cut(i,i+1)
- i--
networks_cost = (world.timeofday - timer) / 10
sleep(breather_ticks)
+ //POWERNETS
timer = world.timeofday
- for(var/i=1,i<=powernets.len,i++)
+ last_thing_processed = /datum/powernet
+ i = 1
+ while(i<=powernets.len)
var/datum/powernet/Powernet = powernets[i]
if(Powernet)
Powernet.reset()
+ i++
continue
powernets.Cut(i,i+1)
- i--
powernets_cost = (world.timeofday - timer) / 10
sleep(breather_ticks)
+ //TICKER
timer = world.timeofday
+ last_thing_processed = ticker.type
ticker.process()
ticker_cost = (world.timeofday - timer) / 10
+ //TIMING
total_cost = air_cost + sun_cost + mobs_cost + diseases_cost + machines_cost + objects_cost + networks_cost + powernets_cost + ticker_cost
var/end_time = world.timeofday
if(end_time < start_time)
start_time -= 864000 //deciseconds in a day
sleep( round(minimum_ticks - (end_time - start_time),1) )
-
else
sleep(10)
@@ -283,4 +301,10 @@ datum/controller/game_controller/proc/Recover() //Mostly a placeholder for now.
/client/verb/spawn_FS()
new /datum/failsafe()
-*/
+
+/client/verb/machines_list()
+ for(var/i=1,i<=machines.len,i++)
+ var/machine = machines[i]
+ if(istype(machine,/datum)) world.log << machine:type
+ else world.log << machine
+*/
\ No newline at end of file
diff --git a/code/game/machinery/computer/robot.dm b/code/game/machinery/computer/robot.dm
index 746d00fbd8..e3f51ce211 100644
--- a/code/game/machinery/computer/robot.dm
+++ b/code/game/machinery/computer/robot.dm
@@ -97,14 +97,6 @@
onclose(user, "computer")
return
-//Why is this in robot/computer and why does it exist when /obj/machinery/computer/engine does not? -Nodrak
-/*/obj/machinery/computer/engine/process()
- if(stat & (NOPOWER|BROKEN))
- return
- use_power(500)
- src.updateDialog()
- return*/
-
/obj/machinery/computer/robotics/Topic(href, href_list)
if(..())
return
diff --git a/code/game/machinery/hydroponics.dm b/code/game/machinery/hydroponics.dm
index 830ffd47ab..788dce4a55 100644
--- a/code/game/machinery/hydroponics.dm
+++ b/code/game/machinery/hydroponics.dm
@@ -50,8 +50,8 @@
obj/machinery/hydroponics/process()
- if(myseed && !(myseed in contents))
- contents += myseed
+ if(myseed && (myseed.loc != src))
+ myseed.loc = src
if(world.time > (src.lastcycle + src.cycledelay))
src.lastcycle = world.time
diff --git a/code/game/machinery/igniter.dm b/code/game/machinery/igniter.dm
index 7459a175ed..0cacca07ed 100644
--- a/code/game/machinery/igniter.dm
+++ b/code/game/machinery/igniter.dm
@@ -16,7 +16,7 @@
src.icon_state = text("igniter[]", src.on)
return
-/obj/machinery/igniter/process()
+/obj/machinery/igniter/process() //ugh why is this even in process()?
if (src.on && !(stat & NOPOWER) )
var/turf/location = src.loc
if (isturf(location))
diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm
index 6c4c5548b1..b622c169fb 100644
--- a/code/game/machinery/machinery.dm
+++ b/code/game/machinery/machinery.dm
@@ -93,24 +93,13 @@ Class Procs:
/obj/machinery/New()
..()
- machines.Add(src)
+ machines += src
/obj/machinery/Del()
- machines.Remove(src)
..()
/obj/machinery/process()//If you dont use process or power why are you here
-
- /*
- Big note: if do not call ..() in any machinery subtype process() call or it will
- be removed from the list of machines to iterate. It is, however, okay to call ..()
- if the machine has a parent process() call. For instance, machinery/atmospherics has a
- root process() call, so things like cryocells can call ..() and not worry about
- it getting removed from machines.
- */
-
- machines.Remove(src) // uncommented by Doohl
- return
+ return PROCESS_KILL
/obj/machinery/emp_act(severity)
if(use_power && stat == 0)
diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm
index 2c45e611fb..5bbb1b26d1 100644
--- a/code/game/machinery/newscaster.dm
+++ b/code/game/machinery/newscaster.dm
@@ -891,8 +891,9 @@ obj/item/weapon/newspaper/attackby(obj/item/weapon/W as obj, mob/user as mob)
src.paper_remaining--
return
-/obj/machinery/newscaster/process() //Was thinking of doing the icon update through process, but multiple iterations per second does not
- return //bode well with a newscaster network of 10+ machines. Let's just return it, as it's added in the machines list.
+//Removed for now so these aren't even checked every tick. Left this here in-case Agouri needs it later.
+///obj/machinery/newscaster/process() //Was thinking of doing the icon update through process, but multiple iterations per second does not
+// return //bode well with a newscaster network of 10+ machines. Let's just return it, as it's added in the machines list.
/obj/machinery/newscaster/proc/newsAlert(channel) //This isn't Agouri's work, for it is ugly and vile.
var/turf/T = get_turf(src) //Who the fuck uses spawn(600) anyway, jesus christ
diff --git a/code/game/objects/effects/overlays.dm b/code/game/objects/effects/overlays.dm
index 0df933ece3..140e5314eb 100644
--- a/code/game/objects/effects/overlays.dm
+++ b/code/game/objects/effects/overlays.dm
@@ -12,12 +12,6 @@
..()
spawn(10) del src
-/obj/effect/overlay/water
- name = "water"
- icon = 'icons/misc/beach.dmi'
- icon_state = "water2"
- layer = MOB_LAYER+0.1
-
/obj/effect/overlay/palmtree_r
name = "Palm tree"
icon = 'icons/misc/beach2.dmi'
diff --git a/code/game/supplyshuttle.dm b/code/game/supplyshuttle.dm
index dc66b2e139..de9a4e2b50 100644
--- a/code/game/supplyshuttle.dm
+++ b/code/game/supplyshuttle.dm
@@ -592,7 +592,7 @@ var/list/mechtoys = list(
O.orderedby = idname
supply_shuttle.requestlist += O
- temp = "Order requst placed.
"
+ temp = "Order request placed.
"
temp += "
OK | Authorize Order"
else if(href_list["confirmorder"])
diff --git a/code/game/turfs/unsimulated/beach.dm b/code/game/turfs/unsimulated/beach.dm
index 74d4d909ae..d8ce4659b0 100644
--- a/code/game/turfs/unsimulated/beach.dm
+++ b/code/game/turfs/unsimulated/beach.dm
@@ -13,4 +13,8 @@
/turf/unsimulated/beach/water
name = "Water"
- icon_state = "water"
\ No newline at end of file
+ icon_state = "water"
+
+/turf/unsimulated/beach/water/New()
+ ..()
+ overlays += image("icon"='icons/misc/beach.dmi',"icon_state"="water2","layer"=MOB_LAYER+0.1)
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index b8910ba606..d1291a6268 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -674,8 +674,10 @@ note dizziness decrements automatically in the mob's Life() proc.
if(master_controller)
stat(null,"MasterController-[last_tick_duration] ([master_controller.processing?"On":"Off"]-[controller_iteration])")
stat(null,"Air-[master_controller.air_cost]\t Sun-[master_controller.sun_cost]")
- stat(null,"Mob-[master_controller.mobs_cost]\t Dis-[master_controller.diseases_cost]")
- stat(null,"Mch-[master_controller.machines_cost]\t Obj-[master_controller.objects_cost]")
+ stat(null,"Mob-[master_controller.mobs_cost]\t #[mob_list.len]")
+ stat(null,"Dis-[master_controller.diseases_cost]\t #[active_diseases.len]")
+ stat(null,"Mch-[master_controller.machines_cost]\t #[machines.len]")
+ stat(null,"Obj-[master_controller.objects_cost]\t #[processing_objects.len]")
stat(null,"Net-[master_controller.networks_cost]\t Pnet-[master_controller.powernets_cost]")
stat(null,"Tick-[master_controller.ticker_cost]\t ALL-[master_controller.total_cost]")
else
diff --git a/code/modules/mob/organ/organ.dm b/code/modules/mob/organ/organ.dm
index 7fe61e128d..81b45f5128 100644
--- a/code/modules/mob/organ/organ.dm
+++ b/code/modules/mob/organ/organ.dm
@@ -4,11 +4,11 @@
var/name = "organ"
var/mob/owner = null
-/datum/organ/proc/process()
- return 0
+///datum/organ/proc/process()
+// return 0
-/datum/organ/proc/receive_chem(chemical as obj)
- return 0
+///datum/organ/proc/receive_chem(chemical as obj)
+// return 0
diff --git a/code/modules/power/antimatter/shielding.dm b/code/modules/power/antimatter/shielding.dm
index ffc0cd5130..9c646e25de 100644
--- a/code/modules/power/antimatter/shielding.dm
+++ b/code/modules/power/antimatter/shielding.dm
@@ -80,7 +80,7 @@ proc/cardinalrange(var/center)
/obj/machinery/am_shielding/process()
- if(!processing) ..()
+ if(!processing) . = PROCESS_KILL
//TODO: core functions and stability
//TODO: think about checking the airmix for plasma and increasing power output
return
@@ -174,7 +174,6 @@ proc/cardinalrange(var/center)
/obj/machinery/am_shielding/proc/shutdown_core()
processing = 0
- machines.Remove(src)
if(!control_unit) return
control_unit.linked_cores.Remove(src)
control_unit.reported_core_efficiency -= efficiency
diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm
index 73f1feeff3..c4c127c11e 100644
--- a/code/modules/power/lighting.dm
+++ b/code/modules/power/lighting.dm
@@ -573,7 +573,7 @@
#define LIGHTING_POWER_FACTOR 20 //20W per unit luminosity
-/obj/machinery/light/process()
+/obj/machinery/light/process()//TODO: remove/add this from machines to save on processing as needed ~Carn PRIORITY
if(on)
use_power(luminosity * LIGHTING_POWER_FACTOR, LIGHT)
diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm
index a89f0b874c..59ad51fa7a 100644
--- a/code/modules/power/singularity/emitter.dm
+++ b/code/modules/power/singularity/emitter.dm
@@ -105,22 +105,20 @@
s.set_up(5, 1, src)
s.start()
A.dir = src.dir
- if(src.dir == 1)//Up
- A.yo = 20
- A.xo = 0
- else if(src.dir == 2)//Down
- A.yo = -20
- A.xo = 0
- else if(src.dir == 4)//Right
- A.yo = 0
- A.xo = 20
- else if(src.dir == 8)//Left
- A.yo = 0
- A.xo = -20
- else // Any other
- A.yo = -20
- A.xo = 0
- A.process()
+ switch(dir)
+ if(NORTH)
+ A.yo = 20
+ A.xo = 0
+ if(EAST)
+ A.yo = 0
+ A.xo = 20
+ if(WEST)
+ A.yo = 0
+ A.xo = -20
+ else // Any other
+ A.yo = -20
+ A.xo = 0
+ A.process() //TODO: Carn: check this out
/obj/machinery/emitter/attackby(obj/item/W, mob/user)
diff --git a/code/modules/power/singularity/generator.dm b/code/modules/power/singularity/generator.dm
index 047c724012..8b20fc16ab 100644
--- a/code/modules/power/singularity/generator.dm
+++ b/code/modules/power/singularity/generator.dm
@@ -13,9 +13,7 @@
var/turf/T = get_turf(src)
if(src.energy >= 200)
new /obj/machinery/singularity/(T, 50)
- spawn(0)
- del(src)
- return
+ if(src) del(src)
/obj/machinery/the_singularitygen/attackby(obj/item/W, mob/user)
if(istype(W, /obj/item/weapon/wrench))
diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm
index 52b1b587b8..9031c2ebc8 100644
--- a/code/modules/power/solar.dm
+++ b/code/modules/power/solar.dm
@@ -83,7 +83,7 @@
sunfrac = cos(p_angle) ** 2
-/obj/machinery/power/solar/process()
+/obj/machinery/power/solar/process()//TODO: remove/add this from machines to save on processing as needed ~Carn PRIORITY
if(stat & BROKEN) return
if(!control) return
if(obscured) return
@@ -141,7 +141,7 @@
/obj/machinery/power/solar/fake/process()
- machines.Remove(src)
+ . = PROCESS_KILL
return
diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm
index e3d3add7ff..0b80389d1d 100644
--- a/code/modules/recycling/conveyor2.dm
+++ b/code/modules/recycling/conveyor2.dm
@@ -76,7 +76,7 @@
use_power(100)
affecting = loc.contents - src // moved items will be all in loc
- spawn(1) // slight delay to prevent infinite propagation due to map order
+ spawn(1) // slight delay to prevent infinite propagation due to map order //TODO: please no spawn() in process(). It's a very bad idea
var/items_moved = 0
for(var/atom/movable/A in affecting)
if(!A.anchored)
diff --git a/code/modules/research/message_server.dm b/code/modules/research/message_server.dm
index 534fa761db..0380c90a62 100644
--- a/code/modules/research/message_server.dm
+++ b/code/modules/research/message_server.dm
@@ -82,7 +82,7 @@ var/global/list/obj/machinery/message_server/message_servers = list()
/obj/machinery/message_server/process()
//if(decryptkey == "password")
// decryptkey = generateKey()
- if((stat & (BROKEN|NOPOWER)) && active)
+ if(active && (stat & (BROKEN|NOPOWER)))
active = 0
return
update_icon()
diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm
index 0ef69460fe..54807706a9 100644
--- a/code/modules/research/server.dm
+++ b/code/modules/research/server.dm
@@ -90,7 +90,7 @@
..()
-/obj/machinery/r_n_d/server/proc/
+
//Backup files to centcomm to help admins recover data after greifer attacks
/obj/machinery/r_n_d/server/proc/griefProtection()
for(var/obj/machinery/r_n_d/server/centcom/C in world)
@@ -190,7 +190,7 @@
no_id_servers -= S
/obj/machinery/r_n_d/server/centcom/process()
- return
+ return PROCESS_KILL //don't need process()
/obj/machinery/computer/rdservercontrol
diff --git a/code/setup.dm b/code/setup.dm
index 295f66fadf..0317a54a73 100644
--- a/code/setup.dm
+++ b/code/setup.dm
@@ -495,3 +495,6 @@ var/list/liftable_structures = list(\
#define BORGMESON 1
#define BORGTHERM 2
#define BORGXRAY 4
+
+//some arbitrary defines to be used by self-pruning global lists. (see master_controller)
+#define PROCESS_KILL 26 //Used to trigger removal from a processing list
diff --git a/maps/tgstation.2.0.9.dmm b/maps/tgstation.2.0.9.dmm
index 24148e035c..a5236f4cef 100644
--- a/maps/tgstation.2.0.9.dmm
+++ b/maps/tgstation.2.0.9.dmm
@@ -6162,7 +6162,7 @@
"coz" = (/turf/simulated/floor/holofloor{dir = 10; icon_state = "green"},/area/holodeck/source_basketball)
"coA" = (/obj/structure/holohoop{dir = 1},/turf/simulated/floor/holofloor{dir = 2; icon_state = "green"},/area/holodeck/source_basketball)
"coB" = (/turf/simulated/floor/holofloor{dir = 6; icon_state = "green"},/area/holodeck/source_basketball)
-"coC" = (/obj/effect/overlay/water,/turf/simulated/beach/water,/area/holodeck/source_beach)
+"coC" = (/turf/simulated/beach/water,/area/holodeck/source_beach)
"coD" = (/obj/structure/table/holotable,/turf/simulated/floor/holofloor{dir = 10; icon_state = "green"},/area/holodeck/source_thunderdomecourt)
"coE" = (/obj/structure/table/holotable,/obj/item/clothing/head/helmet/thunderdome,/obj/item/clothing/suit/armor/tdome/green,/obj/item/clothing/under/color/green,/obj/item/weapon/holo/esword/green,/turf/simulated/floor/holofloor{dir = 2; icon_state = "green"},/area/holodeck/source_thunderdomecourt)
"coF" = (/obj/structure/table/holotable,/obj/machinery/readybutton,/turf/simulated/floor/holofloor{dir = 6; icon_state = "green"},/area/holodeck/source_thunderdomecourt)
@@ -6974,7 +6974,7 @@
"cEf" = (/obj/machinery/vending/cigarette,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/holding)
"cEg" = (/obj/structure/table,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/holding)
"cEh" = (/obj/machinery/vending/cola,/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/holding)
-"cEi" = (/obj/effect/overlay/water,/turf/unsimulated/beach/water,/area/centcom/holding)
+"cEi" = (/turf/unsimulated/beach/water,/area/centcom/holding)
"cEj" = (/turf/unsimulated/floor{dir = 8; icon_state = "red"},/area/tdome)
"cEk" = (/turf/unsimulated/floor{icon_state = "green"; dir = 4},/area/tdome)
"cEl" = (/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 6},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom)
@@ -7094,7 +7094,7 @@
"cGv" = (/turf/unsimulated/beach/coastline{density = 1; opacity = 1},/area/beach)
"cGw" = (/turf/unsimulated/beach/coastline,/area/beach)
"cGx" = (/turf/unsimulated/beach/water{density = 1; opacity = 1},/area/beach)
-"cGy" = (/obj/effect/overlay/water,/turf/unsimulated/beach/water,/area/beach)
+"cGy" = (/turf/unsimulated/beach/water,/area/beach)
"cGz" = (/turf/unsimulated/wall,/area/wizard_station)
"cGA" = (/obj/structure/bookcase{name = "Forbidden Knowledge"},/obj/effect/decal/cleanable/cobweb,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station)
"cGB" = (/obj/structure/bookcase{name = "Forbidden Knowledge"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station)
diff --git a/tgstation.dme b/tgstation.dme
index 5884d6e227..2f0ab65071 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -6,219 +6,6 @@
// BEGIN_FILE_DIR
#define FILE_DIR .
-#define FILE_DIR "code"
-#define FILE_DIR "code/ATMOSPHERICS"
-#define FILE_DIR "code/ATMOSPHERICS/components"
-#define FILE_DIR "code/ATMOSPHERICS/components/binary_devices"
-#define FILE_DIR "code/ATMOSPHERICS/components/trinary_devices"
-#define FILE_DIR "code/ATMOSPHERICS/components/unary"
-#define FILE_DIR "code/controllers"
-#define FILE_DIR "code/datums"
-#define FILE_DIR "code/datums/diseases"
-#define FILE_DIR "code/datums/helper_datums"
-#define FILE_DIR "code/datums/spells"
-#define FILE_DIR "code/defines"
-#define FILE_DIR "code/defines/area"
-#define FILE_DIR "code/defines/obj"
-#define FILE_DIR "code/defines/procs"
-#define FILE_DIR "code/defines/tanning"
-#define FILE_DIR "code/FEA"
-#define FILE_DIR "code/game"
-#define FILE_DIR "code/game/area"
-#define FILE_DIR "code/game/asteroid"
-#define FILE_DIR "code/game/gamemodes"
-#define FILE_DIR "code/game/gamemodes/blob"
-#define FILE_DIR "code/game/gamemodes/blob/blobs"
-#define FILE_DIR "code/game/gamemodes/changeling"
-#define FILE_DIR "code/game/gamemodes/cult"
-#define FILE_DIR "code/game/gamemodes/events"
-#define FILE_DIR "code/game/gamemodes/events/holidays"
-#define FILE_DIR "code/game/gamemodes/extended"
-#define FILE_DIR "code/game/gamemodes/malfunction"
-#define FILE_DIR "code/game/gamemodes/meteor"
-#define FILE_DIR "code/game/gamemodes/nuclear"
-#define FILE_DIR "code/game/gamemodes/revolution"
-#define FILE_DIR "code/game/gamemodes/sandbox"
-#define FILE_DIR "code/game/gamemodes/traitor"
-#define FILE_DIR "code/game/gamemodes/wizard"
-#define FILE_DIR "code/game/jobs"
-#define FILE_DIR "code/game/jobs/job"
-#define FILE_DIR "code/game/machinery"
-#define FILE_DIR "code/game/machinery/atmoalter"
-#define FILE_DIR "code/game/machinery/bots"
-#define FILE_DIR "code/game/machinery/computer"
-#define FILE_DIR "code/game/machinery/doors"
-#define FILE_DIR "code/game/machinery/embedded_controller"
-#define FILE_DIR "code/game/machinery/kitchen"
-#define FILE_DIR "code/game/machinery/pipe"
-#define FILE_DIR "code/game/machinery/telecomms"
-#define FILE_DIR "code/game/mecha"
-#define FILE_DIR "code/game/mecha/combat"
-#define FILE_DIR "code/game/mecha/equipment"
-#define FILE_DIR "code/game/mecha/equipment/tools"
-#define FILE_DIR "code/game/mecha/equipment/weapons"
-#define FILE_DIR "code/game/mecha/medical"
-#define FILE_DIR "code/game/mecha/working"
-#define FILE_DIR "code/game/objects"
-#define FILE_DIR "code/game/objects/effects"
-#define FILE_DIR "code/game/objects/effects/decals"
-#define FILE_DIR "code/game/objects/effects/spawners"
-#define FILE_DIR "code/game/objects/items"
-#define FILE_DIR "code/game/objects/items/devices"
-#define FILE_DIR "code/game/objects/items/devices/PDA"
-#define FILE_DIR "code/game/objects/items/devices/radio"
-#define FILE_DIR "code/game/objects/items/robot"
-#define FILE_DIR "code/game/objects/items/stacks"
-#define FILE_DIR "code/game/objects/items/stacks/sheets"
-#define FILE_DIR "code/game/objects/items/stacks/tiles"
-#define FILE_DIR "code/game/objects/items/weapons"
-#define FILE_DIR "code/game/objects/items/weapons/grenades"
-#define FILE_DIR "code/game/objects/items/weapons/implants"
-#define FILE_DIR "code/game/objects/items/weapons/secstorage"
-#define FILE_DIR "code/game/objects/items/weapons/storage"
-#define FILE_DIR "code/game/objects/items/weapons/tanks"
-#define FILE_DIR "code/game/objects/structures"
-#define FILE_DIR "code/game/objects/structures/crates_lockers"
-#define FILE_DIR "code/game/objects/structures/crates_lockers/closets"
-#define FILE_DIR "code/game/objects/structures/crates_lockers/closets/secure"
-#define FILE_DIR "code/game/objects/structures/stool_bed_chair_nest"
-#define FILE_DIR "code/game/turfs"
-#define FILE_DIR "code/game/turfs/simulated"
-#define FILE_DIR "code/game/turfs/unsimulated"
-#define FILE_DIR "code/game/vehicles"
-#define FILE_DIR "code/game/vehicles/airtight"
-#define FILE_DIR "code/game/verbs"
-#define FILE_DIR "code/js"
-#define FILE_DIR "code/modules"
-#define FILE_DIR "code/modules/admin"
-#define FILE_DIR "code/modules/admin/DB ban"
-#define FILE_DIR "code/modules/admin/verbs"
-#define FILE_DIR "code/modules/assembly"
-#define FILE_DIR "code/modules/client"
-#define FILE_DIR "code/modules/clothing"
-#define FILE_DIR "code/modules/clothing/glasses"
-#define FILE_DIR "code/modules/clothing/gloves"
-#define FILE_DIR "code/modules/clothing/head"
-#define FILE_DIR "code/modules/clothing/masks"
-#define FILE_DIR "code/modules/clothing/shoes"
-#define FILE_DIR "code/modules/clothing/spacesuits"
-#define FILE_DIR "code/modules/clothing/suits"
-#define FILE_DIR "code/modules/clothing/under"
-#define FILE_DIR "code/modules/clothing/under/jobs"
-#define FILE_DIR "code/modules/critters"
-#define FILE_DIR "code/modules/critters/hivebots"
-#define FILE_DIR "code/modules/detectivework"
-#define FILE_DIR "code/modules/flufftext"
-#define FILE_DIR "code/modules/food"
-#define FILE_DIR "code/modules/library"
-#define FILE_DIR "code/modules/liquid"
-#define FILE_DIR "code/modules/maps"
-#define FILE_DIR "code/modules/mining"
-#define FILE_DIR "code/modules/mob"
-#define FILE_DIR "code/modules/mob/dead"
-#define FILE_DIR "code/modules/mob/dead/observer"
-#define FILE_DIR "code/modules/mob/living"
-#define FILE_DIR "code/modules/mob/living/blob"
-#define FILE_DIR "code/modules/mob/living/carbon"
-#define FILE_DIR "code/modules/mob/living/carbon/alien"
-#define FILE_DIR "code/modules/mob/living/carbon/alien/humanoid"
-#define FILE_DIR "code/modules/mob/living/carbon/alien/humanoid/caste"
-#define FILE_DIR "code/modules/mob/living/carbon/alien/larva"
-#define FILE_DIR "code/modules/mob/living/carbon/alien/special"
-#define FILE_DIR "code/modules/mob/living/carbon/brain"
-#define FILE_DIR "code/modules/mob/living/carbon/human"
-#define FILE_DIR "code/modules/mob/living/carbon/metroid"
-#define FILE_DIR "code/modules/mob/living/carbon/monkey"
-#define FILE_DIR "code/modules/mob/living/silicon"
-#define FILE_DIR "code/modules/mob/living/silicon/ai"
-#define FILE_DIR "code/modules/mob/living/silicon/ai/freelook"
-#define FILE_DIR "code/modules/mob/living/silicon/decoy"
-#define FILE_DIR "code/modules/mob/living/silicon/pai"
-#define FILE_DIR "code/modules/mob/living/silicon/robot"
-#define FILE_DIR "code/modules/mob/living/simple_animal"
-#define FILE_DIR "code/modules/mob/new_player"
-#define FILE_DIR "code/modules/mob/organ"
-#define FILE_DIR "code/modules/paperwork"
-#define FILE_DIR "code/modules/power"
-#define FILE_DIR "code/modules/power/antimatter"
-#define FILE_DIR "code/modules/power/singularity"
-#define FILE_DIR "code/modules/power/singularity/particle_accelerator"
-#define FILE_DIR "code/modules/projectiles"
-#define FILE_DIR "code/modules/projectiles/ammunition"
-#define FILE_DIR "code/modules/projectiles/guns"
-#define FILE_DIR "code/modules/projectiles/guns/energy"
-#define FILE_DIR "code/modules/projectiles/guns/projectile"
-#define FILE_DIR "code/modules/projectiles/projectile"
-#define FILE_DIR "code/modules/reagents"
-#define FILE_DIR "code/modules/reagents/reagent_containers"
-#define FILE_DIR "code/modules/reagents/reagent_containers/food"
-#define FILE_DIR "code/modules/reagents/reagent_containers/food/drinks"
-#define FILE_DIR "code/modules/reagents/reagent_containers/food/drinks/bottle"
-#define FILE_DIR "code/modules/reagents/reagent_containers/food/snacks"
-#define FILE_DIR "code/modules/reagents/reagent_containers/glass"
-#define FILE_DIR "code/modules/reagents/reagent_containers/glass/bottle"
-#define FILE_DIR "code/modules/recycling"
-#define FILE_DIR "code/modules/research"
-#define FILE_DIR "code/modules/scripting"
-#define FILE_DIR "code/modules/scripting/AST"
-#define FILE_DIR "code/modules/scripting/AST/Operators"
-#define FILE_DIR "code/modules/scripting/Implementations"
-#define FILE_DIR "code/modules/scripting/Interpreter"
-#define FILE_DIR "code/modules/scripting/Parser"
-#define FILE_DIR "code/modules/scripting/Scanner"
-#define FILE_DIR "code/modules/security levels"
-#define FILE_DIR "code/unused"
-#define FILE_DIR "code/unused/beast"
-#define FILE_DIR "code/unused/computer2"
-#define FILE_DIR "code/unused/disease2"
-#define FILE_DIR "code/unused/gamemodes"
-#define FILE_DIR "code/unused/hivebot"
-#define FILE_DIR "code/unused/mining"
-#define FILE_DIR "code/unused/optics"
-#define FILE_DIR "code/unused/pda2"
-#define FILE_DIR "code/unused/powerarmor"
-#define FILE_DIR "code/unused/spacecraft"
-#define FILE_DIR "code/WorkInProgress"
-#define FILE_DIR "code/WorkInProgress/carn"
-#define FILE_DIR "code/WorkInProgress/mapload"
-#define FILE_DIR "code/WorkInProgress/organs"
-#define FILE_DIR "code/WorkInProgress/virus2"
-#define FILE_DIR "html"
-#define FILE_DIR "icons"
-#define FILE_DIR "icons/effects"
-#define FILE_DIR "icons/mecha"
-#define FILE_DIR "icons/misc"
-#define FILE_DIR "icons/mob"
-#define FILE_DIR "icons/obj"
-#define FILE_DIR "icons/obj/assemblies"
-#define FILE_DIR "icons/obj/atmospherics"
-#define FILE_DIR "icons/obj/clothing"
-#define FILE_DIR "icons/obj/doors"
-#define FILE_DIR "icons/obj/machines"
-#define FILE_DIR "icons/obj/pipes"
-#define FILE_DIR "icons/pda_icons"
-#define FILE_DIR "icons/spideros_icons"
-#define FILE_DIR "icons/Testing"
-#define FILE_DIR "icons/turf"
-#define FILE_DIR "icons/vehicles"
-#define FILE_DIR "icons/vending_icons"
-#define FILE_DIR "interface"
-#define FILE_DIR "maps"
-#define FILE_DIR "maps/RandomZLevels"
-#define FILE_DIR "sound"
-#define FILE_DIR "sound/AI"
-#define FILE_DIR "sound/ambience"
-#define FILE_DIR "sound/effects"
-#define FILE_DIR "sound/hallucinations"
-#define FILE_DIR "sound/items"
-#define FILE_DIR "sound/machines"
-#define FILE_DIR "sound/mecha"
-#define FILE_DIR "sound/misc"
-#define FILE_DIR "sound/piano"
-#define FILE_DIR "sound/voice"
-#define FILE_DIR "sound/weapons"
-#define FILE_DIR "tools"
-#define FILE_DIR "tools/Redirector"
// END_FILE_DIR
// BEGIN_PREFERENCES
@@ -1109,7 +896,6 @@
#include "code\modules\power\switch.dm"
#include "code\modules\power\terminal.dm"
#include "code\modules\power\tracker.dm"
-#include "code\modules\power\turbine.dm"
#include "code\modules\power\antimatter\containment_jar.dm"
#include "code\modules\power\antimatter\control.dm"
#include "code\modules\power\antimatter\shielding.dm"