diff --git a/baystation12.dme b/baystation12.dme
index 64cd4dafe0b..af63c3f88ab 100644
--- a/baystation12.dme
+++ b/baystation12.dme
@@ -21,7 +21,6 @@
#include "code\__HELPERS\global_lists.dm"
#include "code\__HELPERS\icons.dm"
#include "code\__HELPERS\lists.dm"
-#include "code\__HELPERS\loc.dm"
#include "code\__HELPERS\logging.dm"
#include "code\__HELPERS\maths.dm"
#include "code\__HELPERS\mobs.dm"
@@ -81,9 +80,11 @@
#include "code\ATMOSPHERICS\components\unary\unary_base.dm"
#include "code\ATMOSPHERICS\components\unary\vent_pump.dm"
#include "code\ATMOSPHERICS\components\unary\vent_scrubber.dm"
+#include "code\controllers\_DynamicAreaLighting_TG.dm"
#include "code\controllers\configuration.dm"
#include "code\controllers\failsafe.dm"
#include "code\controllers\garbage.dm"
+#include "code\controllers\lighting_controller.dm"
#include "code\controllers\master_controller.dm"
#include "code\controllers\shuttle_controller.dm"
#include "code\controllers\verbs.dm"
@@ -1399,12 +1400,6 @@
#include "code\WorkInProgress\fireworks.dm"
#include "code\WorkInProgress\periodic_news.dm"
#include "code\WorkInProgress\Apples\artifacts.dm"
-#include "code\WorkInProgress\Aryn\Lighting\_Defs.dm"
-#include "code\WorkInProgress\Aryn\Lighting\Compatibility.dm"
-#include "code\WorkInProgress\Aryn\Lighting\Controller.dm"
-#include "code\WorkInProgress\Aryn\Lighting\Engine.dm"
-#include "code\WorkInProgress\Aryn\Lighting\Light.dm"
-#include "code\WorkInProgress\Aryn\Lighting\Lightpoint.dm"
#include "code\WorkInProgress\Cael_Aislinn\sculpture.dm"
#include "code\WorkInProgress\Cael_Aislinn\Jungle\falsewall.dm"
#include "code\WorkInProgress\Cael_Aislinn\Jungle\jungle.dm"
diff --git a/code/WorkInProgress/Aryn/Lighting/Compatibility.dm b/code/WorkInProgress/Aryn/Lighting/Compatibility.dm
deleted file mode 100644
index ad5ca37b047..00000000000
--- a/code/WorkInProgress/Aryn/Lighting/Compatibility.dm
+++ /dev/null
@@ -1,49 +0,0 @@
-area/var/lighting_use_dynamic
-
-turf/space/is_outside = 1
-turf/simulated/shuttle/is_outside = 1
-
-/datum/controller/lighting/var/processing = 1
-/datum/controller/lighting/var/iteration = 0
-
-//Because so many objects jump the gun.
-proc/lighting_ready()
- return lighting_controller && lighting_controller.started
-
-turf_light_data
- var/light_overlay
- var/lightNW
- var/lightSW
- var/lightNE
- var/lightSE
- var/lit_by
-
-turf_light_data/proc/copy_from(turf/T)
- light_overlay = T.light_overlay
- lightNW = T.lightNW
- lightSW = T.lightSW
- lightNE = T.lightNE
- lightSE = T.lightSE
- lit_by = T.lit_by
-
-turf_light_data/proc/copy_to(turf/T)
- T.light_overlay = light_overlay
- T.lightNW = lightNW
- T.lightSW = lightSW
- T.lightNE = lightNE
- T.lightSE = lightSE
- T.lit_by = lit_by
- //T.ResetValue()
-
-atom/proc/SetLuminosity(n)
- ASSERT(n >= 0)
-
- n = min(n,10) //Caelcode.
- if(n > 0)
- //world << "[name].SetLuminosity([n]) \[[max(1,n>>1)],[n]\]"
- SetLight(max(1,n),n)
- else
- //world << "[name].SetLuminosity(0)"
- SetLight(0,0)
- luminosity = n
- //else lighting_controller.initial_lights.Add(src)
\ No newline at end of file
diff --git a/code/WorkInProgress/Aryn/Lighting/Controller.dm b/code/WorkInProgress/Aryn/Lighting/Controller.dm
deleted file mode 100644
index 6220ebe3609..00000000000
--- a/code/WorkInProgress/Aryn/Lighting/Controller.dm
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
-
-Overview:
- Unlike the previous lighting controller, this is mostly here to hold global lighting procs and vars.
- It does not process every tick, because not even DAL did something so stupid.
-
-Global Vars:
- initial_lights - This holds all lights formed before the lighting controller started up. It becomes null on initialization.
-
-Class Vars:
- starlight - The light value of space.
-
- icon_updates - The list of turfs which need an update to their overlays.
-
- light_border - Space turfs which are adjacent to non-space turfs.
-
-Class Procs:
- Initialize()
- Starts the lighting system, creating all light points and turf overlays.
-
- StarLight(n)
- Sets the light produced by space. If a solar eclipse suddenly happens, it'll probably lag.
-
- MarkIconUpdate(turf/T)
- Called when a turf needs an update to its light icon. Ensures that it only gets calculated once per turf.
-
- FlushIconUpdates()
- Called when a light is done marking icon updates. Updates every marked turf.
-
- AddBorder(turf/T) & RemoveBorder(turf/T)
- Called by turf/CheckForOpaqueObjects() to modify the light_border list.
-
-
-*/
-
-var/datum/controller/lighting/lighting_controller
-
-var/all_lightpoints_made = 0
-
-var/list/lit_z_levels = list(1,5)
-
-/datum/controller/lighting
-
- var/starlight = LIGHT_STATES
- var/list/icon_updates = list()
- var/started = 0
-
- //var/icon/border = icon('Icons/Test.dmi', "border")
-
-/datum/controller/lighting/New()
- lighting_controller = src
-
-/datum/controller/lighting/proc/Initialize()
-
- set background = 1
-
- var/start_time = world.timeofday
- world << "Processing lights..."
-
- sleep(1)
-
- var/turfs_updated = 0
- var/total_turfs = world.maxx*world.maxy*lit_z_levels.len
-
- for(var/z in lit_z_levels)
- for(var/y = 0, y <= world.maxy, y++)
- for(var/x = 0, x <= world.maxx, x++)
- if(x > 0 && y > 0)
-
- turfs_updated++
- if((turfs_updated % (total_turfs>>2)) == 0)
- sleep(1)
- world << "Progress: [round((turfs_updated/total_turfs)*100, 0.01)]% ([turfs_updated]/[total_turfs])"
-
- var/turf/T = locate(x,y,z)
- if(!T.is_outside)
- T.light_overlay = new(T)
- //T.ResetValue()
- if(!all_lightpoints_made) new/lightpoint(x+0.5,y+0.5,z)
-
-
-
- //world << "[x],[y],[z]"
-
- all_lightpoints_made = 1
- started = 1
-
- for(var/turf/T)
- if(T.light_overlay)
-
- T.ResetValue()
- T.light_overlay.set_state(MAX_VALUE(T.lightSE), MAX_VALUE(T.lightSW), MAX_VALUE(T.lightNW), MAX_VALUE(T.lightNE))
-
- world << "Lighting initialization took [(world.timeofday-start_time)/world.fps] seconds."
- world << "Updated [turfs_updated] turfs."
-
-/datum/controller/lighting/proc/GetLightIcon(a,b,c,d)
- if(a <= 2) return LIGHT_ICON_1
- else return LIGHT_ICON_2
\ No newline at end of file
diff --git a/code/WorkInProgress/Aryn/Lighting/Engine.dm b/code/WorkInProgress/Aryn/Lighting/Engine.dm
deleted file mode 100644
index fc94b09c6a4..00000000000
--- a/code/WorkInProgress/Aryn/Lighting/Engine.dm
+++ /dev/null
@@ -1,231 +0,0 @@
-/*
-
-Overview:
- Procs given to atom and turf by the lighting engine, as well as the lighting overlay object.
-
-Atom Vars:
- light - Contains the light object this atom is currently shining with.
-
-Turf Vars:
- light_overlay - Contains an object showing the lighting icon over this turf.
-
- lit_value - Stores how brightly lit the turf is.
-
- has_opaque - A cached value updated by CheckForOpaqueObjects()
-
- is_outside - Any turf with this set to true will be considered as bright as space.
-
- needs_light_update - Turf is marked for icon updates when true.
-
- lightNE, lightSE, lightNW, lightSW - Hold the lightpoints on the four corners of this turf. See Lightpoint.dm
-
- lit_by - A list of lights that are lighting this turf.
-
-Atom Procs:
- SetLight(intensity, radius)
- A more versatile SetLuminosity() that allows independent control of intensity and radius.
- Called behind the scenes of SetLuminosity().
-
- SetOpacity(opacity)
- Does the same thing as DAL.
-
-Turf Procs:
- UpdateLight()
- Called by the lighting controller. It is advisable not to call this manually due to the cost of lightpoint/max_value()
-
- AddLight(light/light)
- Called by light/Reset() to light this turf with a particular light.
-
- RemoveLight(light/light)
- Called by light/Off() to unlight turfs that were lit by it.
-
- ResetValue()
- Called when lights are reset or starlight is changed.
-
- ResetCachedValues()
- Resets cached values of all four light points. Called by ResetValue().
-
- CheckForOpaqueObjects()
- Called by lighting_controller.Initialize(), SetOpacity() or when a turf might change opacity.
- Resets the opacity cache and looks for opaque objects. Also responsible for adding and removing borders to space.
-*/
-
-atom/movable/lighting_overlay
- name = ""
- anchored = 1
- layer = 9
- mouse_opacity = 0
- invisibility = INVISIBILITY_LIGHTING
-
-atom/movable/lighting_overlay/proc/set_state(a,b,c,d)
- icon_state = "[a][b][c][d]"
- icon = lighting_controller.GetLightIcon(a,b,c,d)
-
-atom/var/light/light
-
-turf/var/atom/movable/lighting_overlay/light_overlay
-
-turf/var/lit_value = 0
-turf/var/max_brightness = 0
-turf/var/has_opaque = -1
-turf/var/is_outside = 0
-turf/var/is_border = 0
-
-turf/var/lightpoint/lightNE
-turf/var/lightpoint/lightNW
-turf/var/lightpoint/lightSE
-turf/var/lightpoint/lightSW
-turf/var/list/lit_by
-
-atom/movable/New()
- . = ..()
- if(luminosity)
- if(!light)
- SetLight(luminosity,luminosity)
- else
- light.atom = src
- light.Reset()
- else if(light)
- light.atom = src
- light.Reset()
- if(opacity)
- if(lighting_ready())
- opacity = 0
- SetOpacity(1)
-
-atom/movable/Del()
- if(light) light.Off()
- if(opacity) SetOpacity(0)
- . = ..()
-
-atom/movable/Move(turf/newloc)
- var/o = opacity
- if(o) SetOpacity(0)
- . = ..()
- if(.)
- if(o) SetOpacity(1)
-
-turf/Entered(atom/movable/M)
- . = ..()
- if(M.light) M.light.Reset()
-
-atom/proc/SetLight(intensity, radius)
- //if(lights_verbose) world << "SetLight([intensity],[radius])"
- if(!intensity)
- if(!light || !light.intensity)
- //if(lights_verbose) world << "Still off."
- return
- //if(lights_verbose) world << "Shut off light with [light.lit_turfs.len] turfs lit."
- light.Off()
- light.intensity = 0
- //if(lighting_ready()) lighting_controller.FlushIconUpdates()
- return
- if(!light)
- //if(lights_verbose) world << "New light."
- light = new(src)
- if(light.intensity == intensity)
- //if(lights_verbose) world << "Same intensity."
- return
- light.radius = min(radius,15)
- light.intensity = intensity
- light.Reset()
- //if(lighting_ready()) lighting_controller.FlushIconUpdates()
-
-atom/proc/SetOpacity(o)
- if(o == opacity) return
- opacity = o
- var/turf/T = loc
- if(isturf(T))
- T.CheckForOpaqueObjects()
- for(var/light/A in T.lit_by)
- A.Reset()
-
- //lighting_controller.FlushIconUpdates()
-
-atom/proc/UpdateLights()
- if(light) light.Reset()
- for(var/atom/movable/A in src)
- if(A.light) A.light.Reset()
-
-//turf/proc/UpdateLight()
-// if(light_overlay)
-// light_overlay.icon_state = "[lightSE.max_value()][lightSW.max_value()][lightNW.max_value()][lightNE.max_value()]"
-
-turf/proc/AddLight(light/light, brightness)
- if(is_outside) return
-
- if(brightness <= 0) return
-
- if(!lit_by) lit_by = list()
- lit_by.Add(light)
-
-
- lit_by[light] = brightness
-
- if(lighting_ready())
- if(brightness > max_brightness)
- lit_value = LIGHTCLAMP(brightness)
- max_brightness = brightness
-
- if(lightNE) lightNE.cached_value = -1
- if(lightNW) lightNW.cached_value = -1
- if(lightSE) lightSE.cached_value = -1
- if(lightSW) lightSW.cached_value = -1
-
- for(var/turf/T in range(1,src))
- if(T.light_overlay)
- T.light_overlay.set_state(MAX_VALUE(T.lightSE), MAX_VALUE(T.lightSW), MAX_VALUE(T.lightNW), MAX_VALUE(T.lightNE))
-
-turf/proc/RemoveLight(light/light)
- if(lit_by)
- var/brightness = lit_by[light]
- lit_by.Remove(light)
- if(brightness == max_brightness)
- ResetValue()
- if(!lit_by.len) lit_by = null
-
-//Only called by ChangeTurf, because it really needs it.
-turf/proc/ResetAllLights()
- for(var/light/light in lit_by)
- light.Reset()
-
-/turf/space/ResetAllLights()
- var/atom/movable/lighting_overlay/overlay = locate() in src
- if(overlay) overlay.loc = null
- light_overlay = null
- is_outside = 1
- . = ..()
-
-turf/proc/ResetValue()
- if(is_outside)
- max_brightness = lighting_controller.starlight
- lit_value = LIGHTCLAMP(lighting_controller.starlight)
- return
-
- if(has_opaque < 0) CheckForOpaqueObjects()
- if(has_opaque)
- lit_value = 0
- else
- max_brightness = 0
- for(var/light/light in lit_by)
- var/brightness = lit_by[light]//light.CalculateBrightness(src)
- if(brightness > max_brightness)
- max_brightness = brightness
- lit_value = LIGHTCLAMP(max_brightness)
-
- if(lighting_ready())
- if(lightNE) lightNE.cached_value = -1
- if(lightNW) lightNW.cached_value = -1
- if(lightSE) lightSE.cached_value = -1
- if(lightSW) lightSW.cached_value = -1
- for(var/turf/T in range(1,src))
- if(T.light_overlay)
- T.light_overlay.set_state(MAX_VALUE(T.lightSE), MAX_VALUE(T.lightSW), MAX_VALUE(T.lightNW), MAX_VALUE(T.lightNE))
-
-turf/proc/CheckForOpaqueObjects()
- has_opaque = opacity
- if(!opacity)
- for(var/atom/movable/M in contents)
- if(M.opacity)
- has_opaque = 1
- break
\ No newline at end of file
diff --git a/code/WorkInProgress/Aryn/Lighting/Light.dm b/code/WorkInProgress/Aryn/Lighting/Light.dm
deleted file mode 100644
index fd6f196645b..00000000000
--- a/code/WorkInProgress/Aryn/Lighting/Light.dm
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
-
-Overview:
- This object functions similarly to /tg/'s /light. It is responsible for calculating what turfs are lit by it.
-
-Class Vars:
- radius - Set by atom/SetLight(). This stores how far out turfs will be lit up.
- intensity - Set by atom/SetLight(). Stores the amount of light generated at the center.
- lit_turfs - A list of turfs being lit by this light.
- atom - The atom this light is attached to.
-
-Class Procs:
- Reset()
- This is called whenever the light changes, or the underlying atom changes position.
-
- Off()
- A quick way to turn off a light. Removes the light from all turfs in lit_turfs.
-
- CalculateBrightness(turf/T)
- Returns the brightness that should be displayed by this light on a specific turf.
-
-*/
-
-
-light/var/radius = 0
-light/var/intensity = 0
-light/var/ambient_extension = 3
-light/var/list/lit_turfs = list()
-light/var/atom/atom
-
-light/New(atom/atom, radius, ambience=3)
- ASSERT(atom)
-
- if(istype(atom))
- src.atom = atom
- else
- src.intensity = atom
- src.radius = radius
- src.ambient_extension = ambience
-
-light/proc/Reset()
- //if(atom.lights_verbose) world << "light.Reset()"
- Off()
- if(intensity > 0)
- //if(atom.lights_verbose) world << "Restoring light."
- var/turf/loc = atom
- for(var/turf/T in view(loc,radius+ambient_extension))
- if(!T.is_outside)
- var/brightness = CalculateBrightness(T, loc)
- T.AddLight(src, brightness)
- lit_turfs.Add(T)
- //if(atom.lights_verbose) world << "[lit_turfs.len] turfs added."
-
-light/proc/Off()
- //if(atom.lights_verbose) world << "light.Off()"
- for(var/turf/T in lit_turfs)
- T.RemoveLight(src)
- lit_turfs.Cut()
-
-light/proc/Flash(t)
- Reset()
- spawn(t)
- Off()
-
-light/proc/CalculateBrightness(turf/T, turf/loc)
- ASSERT(T)
- var/square = DISTSQ3(loc.x-T.x,loc.y-T.y,loc.z-T.z)
- if(square > (radius+ambient_extension)*(radius+ambient_extension)) return 0
- //+2 offset gives an ambient light effect.
-
- var/value = ((radius)/(2*FSQRT(square) + 1)) * intensity - 0.48
- /*
- lightRadius
- ---------------- * lightValue - 0.48
- 2 * distance + 1
-
- The light decreases by twice the distance, starting from the radius.
- The + 1 causes the graph to shift to the left one unit so that division by zero is prevented on the source tile.
-
- This is then multiplied by the light value to give the final result.
- The -0.48 offset causes the value to be near zero at the radius.
-
- This gives a result which is likely close to the inverse-square law in two dimensions instead of three.
- */
-
-
- return max(min( value , intensity), 0) //Ensure the value never goes above the maximum light value or below zero.
-
- //return cos(90 * sqrt(square) / max(1,lightRadius)) * lightValue
\ No newline at end of file
diff --git a/code/WorkInProgress/Aryn/Lighting/Lightpoint.dm b/code/WorkInProgress/Aryn/Lighting/Lightpoint.dm
deleted file mode 100644
index eeeec4c7068..00000000000
--- a/code/WorkInProgress/Aryn/Lighting/Lightpoint.dm
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
-
-Overview:
- Perhaps the most cryptic datum in the lighting engine, there are four of these at the corners of every turf.
- Any two turfs that share a corner will also have the same lightpoint. Because of the nature of the icons used,
- light is shown at the corner of the turf rather than in the middle, necessitating some way to keep track of what
- icon state to use.
-
-Class Vars:
- x, y, z - The position of the lightpoint. x and y will usually be expressed in terms of 0.5 due to its location on the corner.
-
- NE, NW, SE, SW - The turfs that are in these directions relative to the lightpoint.
-
- cached_value - A cached value of max_value().
-
-Class Procs:
- max_value()
- The maximum of the light amounts on the four turfs of this light point.
-
-*/
-
-lightpoint
- var/x
- var/y
- var/z
-
- var/turf/NE
- var/turf/NW
- var/turf/SW
- var/turf/SE
-
- var/cached_value = -1
-
- New(x,y,z)
- var/turf/T = locate(x+0.5,y+0.5,z)
- if(T)
- NE = T
- T.lightSW = src
- T = locate(x-0.5,y+0.5,z)
- if(T)
- NW = T
- T.lightSE = src
- T = locate(x-0.5,y-0.5,z)
- if(T)
- SW = T
- T.lightNE = src
- T = locate(x+0.5,y-0.5,z)
- if(T)
- SE = T
- T.lightNW = src
-
- proc/max_value()
- var
- valueA = VALUE_OF(NW)
- valueB = VALUE_OF(NE)
- valueC = VALUE_OF(SW)
- valueD = VALUE_OF(SE)
- cached_value = max(valueA,valueB,valueC,valueD)
- return cached_value
\ No newline at end of file
diff --git a/code/WorkInProgress/Aryn/Lighting/Verbs.dm b/code/WorkInProgress/Aryn/Lighting/Verbs.dm
deleted file mode 100644
index f9e4d7c688f..00000000000
--- a/code/WorkInProgress/Aryn/Lighting/Verbs.dm
+++ /dev/null
@@ -1,34 +0,0 @@
-var/icon/lighting_dbg = icon('icons/Testing/Zone.dmi', "created")
-
-atom/var/lights_verbose = 0
-
-obj/machinery/light/verb/ShowInfluence()
- set src in world
-
- lights_verbose = 1
- usr << "[src]"
- if(light)
- usr << "Intensity: [light.intensity]"
- usr << "Radius: [light.radius]"
-
- for(var/turf/T in light.lit_turfs)
- T.overlays += lighting_dbg
- spawn(50)
- for(var/turf/T in light.lit_turfs)
- T.overlays -= lighting_dbg
-
-turf/verb/ShowData()
- set src in world
-
- usr << "[src]"
- usr << "[MAX_VALUE(lightSE)][MAX_VALUE(lightSW)][MAX_VALUE(lightNW)][MAX_VALUE(lightNE)]"
- usr << "Lit Value: [lit_value]"
- usr << "Max Brightness: [max_brightness]"
-
- usr << "Lit By: "
- for(var/light/light in lit_by)
- usr << " - [light.atom] \[[lit_by[light]]\][(lit_by[light] == max_brightness ? "(MAX)" : "")]"
- light.atom.overlays += lighting_dbg
- spawn(50)
- for(var/light/light in lit_by)
- light.atom.overlays -= lighting_dbg
\ No newline at end of file
diff --git a/code/WorkInProgress/Aryn/Lighting/_Defs.dm b/code/WorkInProgress/Aryn/Lighting/_Defs.dm
deleted file mode 100644
index 72069a1afa8..00000000000
--- a/code/WorkInProgress/Aryn/Lighting/_Defs.dm
+++ /dev/null
@@ -1,19 +0,0 @@
-#define LIGHT_ICON_1 'icons/effects/lights/lighting5-1.dmi'
-#define LIGHT_ICON_2 'icons/effects/lights/lighting5-2.dmi'
-#define LIGHT_STATES 4
-
-#define SQ(X) ((X)*(X))
-#define DISTSQ3(A,B,C) (SQ(A)+SQ(B)+SQ(C))
-#define FSQRT(X) (X >= fastroot.len ? new_fsqrt(X) : fastroot[(X)+1])
-#define MAX_VALUE(X) (X.cached_value < 0 ? X.max_value() : X.cached_value)
-#define VALUE_OF(X) ( !X ? 0 : ( X.is_outside ? LIGHTCLAMP(lighting_controller.starlight) : X.lit_value ) )
-#define LIGHTCLAMP(x) ( max(0,min(LIGHT_STATES,round(x,1))) )
-
-var/list/fastroot = list(0, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7)
-
-proc/new_fsqrt(n)
- //world << "Adding [n-fastroot.len] entries to root table."
- for(var/i = fastroot.len, i <= n, i++)
- fastroot += round(sqrt(i))
\ No newline at end of file
diff --git a/code/__HELPERS/loc.dm b/code/__HELPERS/loc.dm
deleted file mode 100644
index 91be708854d..00000000000
--- a/code/__HELPERS/loc.dm
+++ /dev/null
@@ -1,7 +0,0 @@
-atom/movable/proc/setloc(newloc)
- if(light)
- var/oldloc = loc
- loc = newloc
- if(isturf(newloc) != isturf(oldloc)) light.Reset()
- else
- loc = newloc
diff --git a/code/controllers/failsafe.dm b/code/controllers/failsafe.dm
index f4231464efa..ff46b6b10b6 100644
--- a/code/controllers/failsafe.dm
+++ b/code/controllers/failsafe.dm
@@ -45,8 +45,7 @@ var/datum/controller/failsafe/Failsafe
MC_defcon = 0
MC_iteration = controller_iteration
- //Lighting controller now neither processes nor iterates.
- /*if(lighting_controller.processing)
+ if(lighting_controller.processing)
if(lighting_iteration == lighting_controller.iteration) //master_controller hasn't finished processing in the defined interval
switch(lighting_defcon)
if(0 to 3)
@@ -61,7 +60,7 @@ var/datum/controller/failsafe/Failsafe
lighting_defcon = 0
else
lighting_defcon = 0
- lighting_iteration = lighting_controller.iteration*/
+ lighting_iteration = lighting_controller.iteration
else
MC_defcon = 0
lighting_defcon = 0
diff --git a/code/controllers/master_controller.dm b/code/controllers/master_controller.dm
index 417c618c8cc..1b1d57789be 100644
--- a/code/controllers/master_controller.dm
+++ b/code/controllers/master_controller.dm
@@ -83,7 +83,6 @@ datum/controller/game_controller/proc/setup()
if(ticker)
ticker.pregame()
- new/datum/controller/lighting()
lighting_controller.Initialize()
diff --git a/code/controllers/verbs.dm b/code/controllers/verbs.dm
index 5d621b1b726..694f27d7684 100644
--- a/code/controllers/verbs.dm
+++ b/code/controllers/verbs.dm
@@ -19,7 +19,7 @@
feedback_add_details("admin_verb","RFailsafe")
if("Lighting")
new /datum/controller/lighting()
- //lighting_controller.process()
+ lighting_controller.process()
feedback_add_details("admin_verb","RLighting")
if("Supply Shuttle")
supply_shuttle.process()
diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm
index 8bea8675147..9603638f719 100644
--- a/code/game/area/areas.dm
+++ b/code/game/area/areas.dm
@@ -26,16 +26,20 @@
// lighting_state = 4
//has_gravity = 0 // Space has gravity. Because.. because.
- if(!requires_power)
+ if(requires_power)
+ luminosity = 0
+ else
power_light = 0 //rastaf0
power_equip = 0 //rastaf0
power_environ = 0 //rastaf0
+ luminosity = 1
lighting_use_dynamic = 0
..()
// spawn(15)
power_change() // all machines set to current power level, also updates lighting icon
+ InitializeLighting()
/area/proc/poweralert(var/state, var/obj/source as obj)
diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm
index 8a413b89872..3ccb3547a86 100644
--- a/code/game/atoms_movable.dm
+++ b/code/game/atoms_movable.dm
@@ -43,7 +43,7 @@
if(destination)
if(loc)
loc.Exited(src)
- setloc(destination)
+ loc = destination
loc.Entered(src)
for(var/atom/movable/AM in loc)
AM.Crossed(src)
diff --git a/code/game/dna/dna_modifier.dm b/code/game/dna/dna_modifier.dm
index 5931d0e069b..e2224b2c496 100644
--- a/code/game/dna/dna_modifier.dm
+++ b/code/game/dna/dna_modifier.dm
@@ -86,11 +86,14 @@
/obj/machinery/dna_scannernew/proc/eject_occupant()
src.go_out()
for(var/obj/O in src)
- if((!istype(O,/obj/item/weapon/reagent_containers)) && (!istype(O,/obj/item/weapon/circuitboard/clonescanner)) && (!istype(O,/obj/item/weapon/stock_parts)) && (!istype(O,/obj/item/stack/cable_coil)))
- O.setloc(get_turf(src))//Ejects items that manage to get in there (exluding the components)
+ if(!istype(O,/obj/item/weapon/circuitboard/clonescanner) && \
+ !istype(O,/obj/item/weapon/stock_parts) && \
+ !istype(O,/obj/item/stack/cable_coil) && \
+ O != beaker)
+ O.loc = get_turf(src)//Ejects items that manage to get in there (exluding the components and beaker)
if(!occupant)
for(var/mob/M in src)//Failsafe so you can get mobs out
- M.setloc(get_turf(src))
+ M.loc = get_turf(src)
/obj/machinery/dna_scannernew/verb/move_inside()
set src in oview(1)
@@ -113,7 +116,7 @@
usr.stop_pulling()
usr.client.perspective = EYE_PERSPECTIVE
usr.client.eye = src
- usr.setloc(src)
+ usr.loc = src
src.occupant = usr
src.icon_state = "scanner_1"
src.add_fingerprint(usr)
@@ -191,7 +194,7 @@
beaker = item
user.drop_item()
- item.setloc(src)
+ item.loc = src
user.visible_message("[user] adds \a [item] to \the [src]!", "You add \a [item] to \the [src]!")
return
else if (!istype(item, /obj/item/weapon/grab))
@@ -214,7 +217,7 @@
if(M.client)
M.client.perspective = EYE_PERSPECTIVE
M.client.eye = src
- M.setloc(src)
+ M.loc = src
src.occupant = M
src.icon_state = "scanner_1"
@@ -237,7 +240,7 @@
if (src.occupant.client)
src.occupant.client.eye = src.occupant.client.mob
src.occupant.client.perspective = MOB_PERSPECTIVE
- src.occupant.setloc(src.loc)
+ src.occupant.loc = src.loc
src.occupant = null
src.icon_state = "scanner_0"
return
@@ -246,7 +249,7 @@
switch(severity)
if(1.0)
for(var/atom/movable/A as mob|obj in src)
- A.setloc(src.loc)
+ A.loc = src.loc
ex_act(severity)
//Foreach goto(35)
//SN src = null
@@ -255,7 +258,7 @@
if(2.0)
if (prob(50))
for(var/atom/movable/A as mob|obj in src)
- A.setloc(src.loc)
+ A.loc = src.loc
ex_act(severity)
//Foreach goto(108)
//SN src = null
@@ -264,7 +267,7 @@
if(3.0)
if (prob(25))
for(var/atom/movable/A as mob|obj in src)
- A.setloc(src.loc)
+ A.loc = src.loc
ex_act(severity)
//Foreach goto(181)
//SN src = null
@@ -277,7 +280,7 @@
/obj/machinery/dna_scannernew/blob_act()
if(prob(75))
for(var/atom/movable/A as mob|obj in src)
- A.setloc(src.loc)
+ A.loc = src.loc
del(src)
/obj/machinery/computer/scan_consolenew
diff --git a/code/game/dna/genes/goon_powers.dm b/code/game/dna/genes/goon_powers.dm
index 4da90f1aaff..c5e1a757357 100644
--- a/code/game/dna/genes/goon_powers.dm
+++ b/code/game/dna/genes/goon_powers.dm
@@ -55,7 +55,7 @@
var/turf/simulated/T = get_turf(M)
if(!istype(T))
return
- if(T.lit_value <= 2)
+ if(T.lighting_lumcount <= 2)
M.alpha = 0
else
M.alpha = round(255 * 0.80)
diff --git a/code/game/gamemodes/gameticker.dm b/code/game/gamemodes/gameticker.dm
index 6b33c2e5ab5..bf4d6641f09 100644
--- a/code/game/gamemodes/gameticker.dm
+++ b/code/game/gamemodes/gameticker.dm
@@ -164,7 +164,7 @@ var/global/datum/controller/gameticker/ticker
supply_shuttle.process() //Start the supply shuttle regenerating points -- TLE
master_controller.process() //Start master_controller.process()
- //lighting_controller.process() //Start processing DynamicAreaLighting updates
+ lighting_controller.process() //Start processing DynamicAreaLighting updates
if(config.sql_enabled)
diff --git a/code/game/gamemodes/vampire/vampire_powers.dm b/code/game/gamemodes/vampire/vampire_powers.dm
index 79a0966d860..fa7f7698a2c 100644
--- a/code/game/gamemodes/vampire/vampire_powers.dm
+++ b/code/game/gamemodes/vampire/vampire_powers.dm
@@ -278,7 +278,7 @@
if(!mind.vampire.iscloaking)
alpha = 255
return 0
- if(T.lit_value <= 2)
+ if(T.lighting_lumcount <= 2)
alpha = round((255 * 0.15))
return 1
else
@@ -432,7 +432,7 @@
if(T.y>world.maxy-outer_tele_radius || T.y max_lum) continue
+ if(T.lighting_lumcount > max_lum) continue
turfs += T
if(!turfs.len)
diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm
index 0be949dbb01..03a67b4f719 100644
--- a/code/game/machinery/Sleeper.dm
+++ b/code/game/machinery/Sleeper.dm
@@ -187,7 +187,7 @@
blob_act()
if(prob(75))
for(var/atom/movable/A as mob|obj in src)
- A.setloc(src.loc)
+ A.loc = src.loc
A.blob_act()
del(src)
return
@@ -198,7 +198,7 @@
if(!beaker)
beaker = G
user.drop_item()
- G.setloc(src)
+ G.loc = src
user.visible_message("[user] adds \a [G] to \the [src]!", "You add \a [G] to \the [src]!")
src.updateUsrDialog()
return
@@ -228,7 +228,7 @@
if(M.client)
M.client.perspective = EYE_PERSPECTIVE
M.client.eye = src
- M.setloc(src)
+ M.loc = src
src.occupant = M
src.icon_state = "sleeper_1"
if(orient == "RIGHT")
@@ -248,21 +248,21 @@
switch(severity)
if(1.0)
for(var/atom/movable/A as mob|obj in src)
- A.setloc(src.loc)
+ A.loc = src.loc
ex_act(severity)
qdel(src)
return
if(2.0)
if(prob(50))
for(var/atom/movable/A as mob|obj in src)
- A.setloc(src.loc)
+ A.loc = src.loc
ex_act(severity)
qdel(src)
return
if(3.0)
if(prob(25))
for(var/atom/movable/A as mob|obj in src)
- A.setloc(src.loc)
+ A.loc = src.loc
ex_act(severity)
qdel(src)
return
@@ -309,7 +309,7 @@
if(src.occupant.client)
src.occupant.client.eye = src.occupant.client.mob
src.occupant.client.perspective = MOB_PERSPECTIVE
- src.occupant.setloc(src.loc)
+ src.occupant.loc = src.loc
src.occupant = null
if(orient == "RIGHT")
icon_state = "sleeper_0-r"
@@ -411,29 +411,8 @@
if(orient == "RIGHT")
icon_state = "sleeper_1-r"
- for(var/mob/living/carbon/slime/M in range(1,usr))
- if(M.Victim == usr)
- usr << "You're too busy getting your life sucked out of you."
- return
- visible_message("[usr] starts climbing into the sleeper.", 3)
- if(do_after(usr, 20))
- if(src.occupant)
- usr << "\blue The sleeper is already occupied!"
- return
- usr.stop_pulling()
- usr.client.perspective = EYE_PERSPECTIVE
- usr.client.eye = src
- usr.setloc(src)
- src.occupant = usr
- src.icon_state = "sleeper_1"
- if(orient == "RIGHT")
- icon_state = "sleeper_1-r"
-
- usr << "\blue You feel cool air surround you. You go numb as your senses turn inward."
-
- for(var/obj/O in src)
- del(O)
- src.add_fingerprint(usr)
- return
+ for(var/obj/O in src)
+ del(O)
+ src.add_fingerprint(usr)
return
- return
+ return
\ No newline at end of file
diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm
index adc0a84ade5..5c61d2cf226 100644
--- a/code/game/machinery/adv_med.dm
+++ b/code/game/machinery/adv_med.dm
@@ -46,7 +46,7 @@
usr.pulling = null
usr.client.perspective = EYE_PERSPECTIVE
usr.client.eye = src
- usr.setloc(src)
+ usr.loc = src
src.occupant = usr
src.icon_state = "body_scanner_1"
for(var/obj/O in src)
@@ -60,12 +60,12 @@
if ((!( src.occupant ) || src.locked))
return
for(var/obj/O in src)
- O.setloc(src.loc)
+ O.loc = src.loc
//Foreach goto(30)
if (src.occupant.client)
src.occupant.client.eye = src.occupant.client.mob
src.occupant.client.perspective = MOB_PERSPECTIVE
- src.occupant.setloc(src.loc)
+ src.occupant.loc = src.loc
src.occupant = null
src.icon_state = "body_scanner_0"
return
@@ -83,11 +83,11 @@
if (M.client)
M.client.perspective = EYE_PERSPECTIVE
M.client.eye = src
- M.setloc(src)
+ M.loc = src
src.occupant = M
src.icon_state = "body_scanner_1"
for(var/obj/O in src)
- O.setloc(src.loc)
+ O.loc = src.loc
//Foreach goto(154)
src.add_fingerprint(user)
//G = null
@@ -98,7 +98,7 @@
switch(severity)
if(1.0)
for(var/atom/movable/A as mob|obj in src)
- A.setloc(src.loc)
+ A.loc = src.loc
ex_act(severity)
//Foreach goto(35)
//SN src = null
@@ -107,7 +107,7 @@
if(2.0)
if (prob(50))
for(var/atom/movable/A as mob|obj in src)
- A.setloc(src.loc)
+ A.loc = src.loc
ex_act(severity)
//Foreach goto(108)
//SN src = null
@@ -116,7 +116,7 @@
if(3.0)
if (prob(25))
for(var/atom/movable/A as mob|obj in src)
- A.setloc(src.loc)
+ A.loc = src.loc
ex_act(severity)
//Foreach goto(181)
//SN src = null
@@ -128,7 +128,7 @@
/obj/machinery/bodyscanner/blob_act()
if(prob(50))
for(var/atom/movable/A as mob|obj in src)
- A.setloc(src.loc)
+ A.loc = src.loc
del(src)
/obj/machinery/body_scanconsole/ex_act(severity)
diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm
index 52464306d80..34a2f8a4f8a 100644
--- a/code/game/machinery/cryo.dm
+++ b/code/game/machinery/cryo.dm
@@ -251,7 +251,7 @@
if (occupant.client)
occupant.client.eye = occupant.client.mob
occupant.client.perspective = MOB_PERSPECTIVE
- occupant.setloc(get_step(loc, SOUTH)) //this doesn't account for walls or anything, but i don't forsee that being a problem.
+ occupant.loc = get_step(loc, SOUTH) //this doesn't account for walls or anything, but i don't forsee that being a problem.
if (occupant.bodytemperature < 261 && occupant.bodytemperature >= 70) //Patch by Aranclanos to stop people from taking burn damage after being ejected
occupant.bodytemperature = 261
// occupant.metabslow = 0
@@ -275,7 +275,7 @@
M.client.perspective = EYE_PERSPECTIVE
M.client.eye = src
M.stop_pulling()
- M.setloc(src)
+ M.loc = src
if(M.health > -100 && (M.health < 0 || M.sleeping))
M << "\blue You feel a cold liquid surround you. Your skin starts to freeze up."
occupant = M
diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm
index 5d537787b75..5246d97e321 100644
--- a/code/game/machinery/cryopod.dm
+++ b/code/game/machinery/cryopod.dm
@@ -80,7 +80,7 @@ obj/machinery/computer/cryopod/Topic(href, href_list)
visible_message("\blue The console beeps happily as it disgorges \the [I].", 3)
- I.setloc(get_turf(src))
+ I.loc = get_turf(src)
frozen_items -= I
else if(href_list["allitems"])
@@ -92,7 +92,7 @@ obj/machinery/computer/cryopod/Topic(href, href_list)
visible_message("\blue The console beeps happily as it disgorges the desired objects.", 3)
for(var/obj/item/I in frozen_items)
- I.setloc(get_turf(src))
+ I.loc = get_turf(src)
frozen_items -= I
else if(href_list["crew"])
@@ -186,11 +186,11 @@ obj/machinery/computer/cryopod/Topic(href, href_list)
//Drop all items into the pod.
for(var/obj/item/W in occupant)
occupant.drop_from_inventory(W)
- W.setloc(src)
+ W.loc = src
if(W.contents.len) //Make sure we catch anything not handled by del() on the items.
for(var/obj/item/O in W.contents)
- O.setloc(src)
+ O.loc = src
//Delete all items not on the preservation list.
var/list/items = src.contents
@@ -240,7 +240,7 @@ obj/machinery/computer/cryopod/Topic(href, href_list)
current_mode.possible_traitors.Remove(occupant)
// Delete them from datacore.
-
+
if(PDA_Manifest.len)
PDA_Manifest.Cut()
for(var/datum/data/record/R in data_core.medical)
@@ -305,7 +305,7 @@ obj/machinery/computer/cryopod/Topic(href, href_list)
if(do_after(user, 20))
if(!M || !G || !G:affecting) return
- M.setloc(src)
+ M.loc = src
if(M.client)
M.client.perspective = EYE_PERSPECTIVE
@@ -375,7 +375,7 @@ obj/machinery/computer/cryopod/Topic(href, href_list)
usr.stop_pulling()
usr.client.perspective = EYE_PERSPECTIVE
usr.client.eye = src
- usr.setloc(src)
+ usr.loc = src
src.occupant = usr
if(orient_right)
@@ -401,7 +401,7 @@ obj/machinery/computer/cryopod/Topic(href, href_list)
occupant.client.eye = src.occupant.client.mob
occupant.client.perspective = MOB_PERSPECTIVE
- occupant.setloc(get_turf(src))
+ occupant.loc = get_turf(src)
occupant = null
if(orient_right)
diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm
index 2daaee476c5..c78bc0bb393 100644
--- a/code/game/machinery/rechargestation.dm
+++ b/code/game/machinery/rechargestation.dm
@@ -75,7 +75,7 @@
if (src.occupant.client)
src.occupant.client.eye = src.occupant.client.mob
src.occupant.client.perspective = MOB_PERSPECTIVE
- src.occupant.setloc(src.loc)
+ src.occupant.loc = src.loc
src.occupant = null
build_icon()
src.use_power = 1
@@ -179,7 +179,7 @@
if(usr && usr.client)
usr.client.perspective = EYE_PERSPECTIVE
usr.client.eye = src
- usr.setloc(src)
+ usr.loc = src
src.occupant = usr
/*for(var/obj/O in src)
O.loc = src.loc*/
diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm
index 7308ede2a4b..ec282f5096f 100644
--- a/code/game/machinery/suit_storage_unit.dm
+++ b/code/game/machinery/suit_storage_unit.dm
@@ -410,7 +410,7 @@
src.OCCUPANT.client.eye = src.OCCUPANT.client.mob
src.OCCUPANT.client.perspective = MOB_PERSPECTIVE
- src.OCCUPANT.setloc(src.loc)
+ src.OCCUPANT.loc = src.loc
src.OCCUPANT = null
if(!src.isopen)
src.isopen = 1
@@ -453,7 +453,7 @@
usr.stop_pulling()
usr.client.perspective = EYE_PERSPECTIVE
usr.client.eye = src
- usr.setloc(src)
+ usr.loc = src
// usr.metabslow = 1
src.OCCUPANT = usr
src.isopen = 0 //Close the thing after the guy gets inside
@@ -499,7 +499,7 @@
if (M.client)
M.client.perspective = EYE_PERSPECTIVE
M.client.eye = src
- M.setloc(src)
+ M.loc = src
src.OCCUPANT = M
src.isopen = 0 //close ittt
@@ -520,7 +520,7 @@
return
user << "You load the [S.name] into the storage compartment."
user.drop_item()
- S.setloc(src)
+ S.loc = src
src.SUIT = S
src.update_icon()
src.updateUsrDialog()
@@ -534,7 +534,7 @@
return
user << "You load the [H.name] into the storage compartment."
user.drop_item()
- H.setloc(src)
+ H.loc = src
src.HELMET = H
src.update_icon()
src.updateUsrDialog()
@@ -548,7 +548,7 @@
return
user << "You load the [M.name] into the storage compartment."
user.drop_item()
- M.setloc(src)
+ M.loc = src
src.MASK = M
src.update_icon()
src.updateUsrDialog()
diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index 9bbc4e83192..eb296c5c764 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -535,7 +535,7 @@
var/obj/mecha/working/ripley/R = src
if(R.cargo)
for(var/obj/O in R.cargo) //Dump contents of stored cargo
- O.setloc(T)
+ O.loc = T
R.cargo -= O
T.Entered(O)
diff --git a/code/game/objects/items/blueprints.dm b/code/game/objects/items/blueprints.dm
index 9992c18340c..29ddcc812b4 100644
--- a/code/game/objects/items/blueprints.dm
+++ b/code/game/objects/items/blueprints.dm
@@ -132,6 +132,9 @@ move an amendment to the drawing.
move_turfs_to_area(turfs, A)
A.always_unpowered = 0
+ for(var/turf/T in A.contents)
+ T.lighting_changed = 1
+ lighting_controller.changed_turfs += T
spawn(5)
//ma = A.master ? "[A.master]" : "(null)"
diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm
index 236f00e3359..59919346bde 100644
--- a/code/game/objects/items/devices/flashlight.dm
+++ b/code/game/objects/items/devices/flashlight.dm
@@ -89,13 +89,13 @@
/obj/item/device/flashlight/pickup(mob/user)
- if(on && luminosity)
+ if(on)
user.SetLuminosity(user.luminosity + brightness_on)
SetLuminosity(0)
/obj/item/device/flashlight/dropped(mob/user)
- if(on && !luminosity)
+ if(on)
user.SetLuminosity(user.luminosity - brightness_on)
SetLuminosity(brightness_on)
diff --git a/code/game/objects/items/weapons/implants/implantchair.dm b/code/game/objects/items/weapons/implants/implantchair.dm
index 51e0e0dbca4..0edd1a87362 100644
--- a/code/game/objects/items/weapons/implants/implantchair.dm
+++ b/code/game/objects/items/weapons/implants/implantchair.dm
@@ -97,7 +97,7 @@
if (src.occupant.client)
src.occupant.client.eye = src.occupant.client.mob
src.occupant.client.perspective = MOB_PERSPECTIVE
- src.occupant.setloc(src.loc)
+ src.occupant.loc = src.loc
if(injecting)
implant(src.occupant)
injecting = 0
@@ -117,7 +117,7 @@
M.client.perspective = EYE_PERSPECTIVE
M.client.eye = src
M.stop_pulling()
- M.setloc(src)
+ M.loc = src
src.occupant = M
src.add_fingerprint(usr)
icon_state = "implantchair_on"
diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm
index 8bb855047f7..c49a79f07c6 100644
--- a/code/game/objects/items/weapons/storage/storage.dm
+++ b/code/game/objects/items/weapons/storage/storage.dm
@@ -250,7 +250,7 @@
if(usr)
usr.u_equip(W)
usr.update_icons() //update our overlays
- W.setloc(src)
+ W.loc = src
W.on_enter_storage(src)
if(usr)
if (usr.client && usr.s_active != src)
@@ -293,9 +293,9 @@
W.layer = 20
else
W.layer = initial(W.layer)
- W.setloc(new_location)
+ W.loc = new_location
else
- W.setloc(get_turf(src))
+ W.loc = get_turf(src)
if(usr)
src.orient2hud(usr)
@@ -325,7 +325,7 @@
user << "\red The tray won't fit in [src]."
return 1
else
- W.setloc(user.loc)
+ W.loc = user.loc
if ((user.client && user.s_active != src))
user.client.screen -= W
W.dropped(user)
diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm
index 06362c81752..3a9ab2f0ac5 100644
--- a/code/game/objects/structures/crates_lockers/closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets.dm
@@ -21,7 +21,7 @@
if(!opened) // if closed, any item at the crate's loc is put in the contents
for(var/obj/item/I in src.loc)
if(I.density || I.anchored || I == src) continue
- I.setloc(src)
+ I.loc = src
// Fix for #383 - C4 deleting fridges with corpses
/obj/structure/closet/Destroy()
@@ -49,13 +49,13 @@
/obj/structure/closet/proc/dump_contents()
//Cham Projector Exception
for(var/obj/effect/dummy/chameleon/AD in src)
- AD.setloc(src.loc)
+ AD.loc = src.loc
for(var/obj/I in src)
- I.setloc(src.loc)
+ I.loc = src.loc
for(var/mob/M in src)
- M.setloc(src.loc)
+ M.loc = src.loc
if(M.client)
M.client.eye = M.client.mob
M.client.perspective = MOB_PERSPECTIVE
@@ -92,14 +92,14 @@
for(var/obj/effect/dummy/chameleon/AD in src.loc)
if(itemcount >= storage_capacity)
break
- AD.setloc(src)
+ AD.loc = src
itemcount++
for(var/obj/item/I in src.loc)
if(itemcount >= storage_capacity)
break
if(!I.anchored)
- I.setloc(src)
+ I.loc = src
itemcount++
for(var/mob/M in src.loc)
@@ -114,7 +114,7 @@
M.client.perspective = EYE_PERSPECTIVE
M.client.eye = src
- M.setloc(src)
+ M.loc = src
itemcount++
src.icon_state = src.icon_closed
@@ -139,19 +139,19 @@
switch(severity)
if(1)
for(var/atom/movable/A as mob|obj in src)//pulls everything out of the locker and hits it with an explosion
- A.setloc(src.loc)
+ A.loc = src.loc
A.ex_act(severity++)
qdel(src)
if(2)
if(prob(50))
for (var/atom/movable/A as mob|obj in src)
- A.setloc(src.loc)
+ A.loc = src.loc
A.ex_act(severity++)
qdel(src)
if(3)
if(prob(5))
for(var/atom/movable/A as mob|obj in src)
- A.setloc(src.loc)
+ A.loc = src.loc
A.ex_act(severity++)
qdel(src)
@@ -160,7 +160,7 @@
..()
if(health <= 0)
for(var/atom/movable/A as mob|obj in src)
- A.setloc(src.loc)
+ A.loc = src.loc
del(src)
return
@@ -169,14 +169,14 @@
if(user.environment_smash)
visible_message("\red [user] destroys the [src]. ")
for(var/atom/movable/A as mob|obj in src)
- A.setloc(src.loc)
+ A.loc = src.loc
del(src)
// this should probably use dump_contents()
/obj/structure/closet/blob_act()
if(prob(75))
for(var/atom/movable/A as mob|obj in src)
- A.setloc(src.loc)
+ A.loc = src.loc
del(src)
/obj/structure/closet/meteorhit(obj/O as obj)
@@ -268,7 +268,7 @@
return
usr.drop_item()
if(W)
- W.setloc(src.loc)
+ W.loc = src.loc
else if(istype(W, /obj/item/weapon/packageWrap))
return
else if(istype(W, /obj/item/weapon/weldingtool))
diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm
index 73b06da6a87..8170bfae2ab 100644
--- a/code/game/objects/structures/crates_lockers/crates.dm
+++ b/code/game/objects/structures/crates_lockers/crates.dm
@@ -33,7 +33,7 @@
playsound(src.loc, 'sound/machines/click.ogg', 15, 1, -3)
for(var/obj/O in src)
- O.setloc(get_turf(src))
+ O.loc = get_turf(src)
icon_state = icon_opened
src.opened = 1
return 1
@@ -55,7 +55,7 @@
var/obj/structure/stool/bed/B = O
if(B.buckled_mob)
continue
- O.setloc(src)
+ O.loc = src
itemcount++
icon_state = icon_closed
@@ -68,7 +68,7 @@
return
user.drop_item()
if(W)
- W.setloc(src.loc)
+ W.loc = src.loc
else if(istype(W, /obj/item/weapon/packageWrap))
return
else if(istype(W, /obj/item/stack/cable_coil))
@@ -84,7 +84,7 @@
if(rigged)
user << "You attach [W] to [src]."
user.drop_item()
- W.setloc(src)
+ W.loc = src
return
else if(istype(W, /obj/item/weapon/wirecutters))
if(rigged)
@@ -385,12 +385,12 @@
continue
if(!S.anchored)
found = 1
- S.setloc(src)
+ S.loc = src
break
if(!found)
for(var/obj/machinery/M in src.loc)
if(!M.anchored)
- M.setloc(src)
+ M.loc = src
break
return
@@ -413,12 +413,12 @@
continue
if(!S.anchored)
found = 1
- S.setloc(src)
+ S.loc = src
break
if(!found)
for(var/obj/machinery/M in src.loc)
if(!M.anchored)
- M.setloc(src)
+ M.loc = src
break
return
diff --git a/code/game/objects/structures/crates_lockers/largecrate.dm b/code/game/objects/structures/crates_lockers/largecrate.dm
index 0fac1f53035..96ed8ef9169 100644
--- a/code/game/objects/structures/crates_lockers/largecrate.dm
+++ b/code/game/objects/structures/crates_lockers/largecrate.dm
@@ -15,7 +15,7 @@
new /obj/item/stack/sheet/wood(src)
var/turf/T = get_turf(src)
for(var/obj/O in contents)
- O.setloc(T)
+ O.loc = T
user.visible_message("[user] pries \the [src] open.", \
"You pry open \the [src].", \
"You hear splitting wood.")
@@ -84,4 +84,4 @@
/obj/structure/largecrate/cat/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/crowbar))
new /mob/living/simple_animal/cat(loc)
- ..()
+ ..()
\ No newline at end of file
diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm
index 999315b9053..991c4bb873f 100644
--- a/code/game/objects/structures/morgue.dm
+++ b/code/game/objects/structures/morgue.dm
@@ -46,21 +46,21 @@
switch(severity)
if(1.0)
for(var/atom/movable/A as mob|obj in src)
- A.setloc(src.loc)
+ A.loc = src.loc
ex_act(severity)
qdel(src)
return
if(2.0)
if (prob(50))
for(var/atom/movable/A as mob|obj in src)
- A.setloc(src.loc)
+ A.loc = src.loc
ex_act(severity)
qdel(src)
return
if(3.0)
if (prob(5))
for(var/atom/movable/A as mob|obj in src)
- A.setloc(src.loc)
+ A.loc = src.loc
ex_act(severity)
qdel(src)
return
@@ -76,7 +76,7 @@
if (src.connected)
for(var/atom/movable/A as mob|obj in src.connected.loc)
if (!( A.anchored ))
- A.setloc(src)
+ A.loc = src
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
//src.connected = null
del(src.connected)
@@ -90,7 +90,7 @@
src.connected.connected = src
src.icon_state = "morgue0"
for(var/atom/movable/A as mob|obj in src)
- A.setloc(src.connected.loc)
+ A.loc = src.connected.loc
src.connected.icon_state = "morguet"
src.connected.dir = src.dir
else
@@ -126,7 +126,7 @@
src.connected.connected = src
src.icon_state = "morgue0"
for(var/atom/movable/A as mob|obj in src)
- A.setloc(src.connected.loc)
+ A.loc = src.connected.loc
//Foreach goto(106)
src.connected.icon_state = "morguet"
else
@@ -156,7 +156,7 @@
if (src.connected)
for(var/atom/movable/A as mob|obj in src.loc)
if (!( A.anchored ))
- A.setloc(src.connected)
+ A.loc = src.connected
//Foreach goto(26)
src.connected.connected = null
src.connected.update()
@@ -173,7 +173,7 @@
return
if (!ismob(user) || user.stat || user.lying || user.stunned)
return
- O.setloc(src.loc)
+ O.loc = src.loc
if (user != O)
for(var/mob/B in viewers(user, 3))
if ((B.client && !( B.blinded )))
@@ -211,21 +211,21 @@
switch(severity)
if(1.0)
for(var/atom/movable/A as mob|obj in src)
- A.setloc(src.loc)
+ A.loc = src.loc
ex_act(severity)
qdel(src)
return
if(2.0)
if (prob(50))
for(var/atom/movable/A as mob|obj in src)
- A.setloc(src.loc)
+ A.loc = src.loc
ex_act(severity)
qdel(src)
return
if(3.0)
if (prob(5))
for(var/atom/movable/A as mob|obj in src)
- A.setloc(src.loc)
+ A.loc = src.loc
ex_act(severity)
qdel(src)
return
@@ -250,7 +250,7 @@
if ((src.connected) && (src.locked == 0))
for(var/atom/movable/A as mob|obj in src.connected.loc)
if (!( A.anchored ))
- A.setloc(src)
+ A.loc = src
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
//src.connected = null
del(src.connected)
@@ -264,7 +264,7 @@
src.connected.connected = src
src.icon_state = "crema0"
for(var/atom/movable/A as mob|obj in src)
- A.setloc(src.connected.loc)
+ A.loc = src.connected.loc
src.connected.icon_state = "cremat"
else
//src.connected = null
@@ -298,7 +298,7 @@
src.connected.connected = src
src.icon_state = "crema0"
for(var/atom/movable/A as mob|obj in src)
- A.setloc(src.connected.loc)
+ A.loc = src.connected.loc
//Foreach goto(106)
src.connected.icon_state = "cremat"
else
@@ -374,7 +374,7 @@
if (src.connected)
for(var/atom/movable/A as mob|obj in src.loc)
if (!( A.anchored ))
- A.setloc(src.connected)
+ A.loc = src.connected
//Foreach goto(26)
src.connected.connected = null
src.connected.update()
@@ -391,7 +391,7 @@
return
if (!ismob(user) || user.stat || user.lying || user.stunned)
return
- O.setloc(src.loc)
+ O.loc = src.loc
if (user != O)
for(var/mob/B in viewers(user, 3))
if ((B.client && !( B.blinded )))
diff --git a/code/game/objects/structures/safe.dm b/code/game/objects/structures/safe.dm
index cdab10c884b..00946b8678c 100644
--- a/code/game/objects/structures/safe.dm
+++ b/code/game/objects/structures/safe.dm
@@ -36,7 +36,7 @@ FLOOR SAFES
return
if(I.w_class + space <= maxspace)
space += I.w_class
- I.setloc(src)
+ I.loc = src
/obj/structure/safe/proc/check_unlocked(mob/user as mob, canhear)
@@ -147,7 +147,7 @@ FLOOR SAFES
if(I.w_class + space <= maxspace)
space += I.w_class
user.drop_item()
- I.setloc(src)
+ I.loc = src
user << "You put [I] in [src]."
updateUsrDialog()
return
diff --git a/code/game/objects/structures/transit_tubes.dm b/code/game/objects/structures/transit_tubes.dm
index cb1780afa5c..df52dd0995c 100644
--- a/code/game/objects/structures/transit_tubes.dm
+++ b/code/game/objects/structures/transit_tubes.dm
@@ -49,7 +49,7 @@
/obj/structure/transit_tube_pod/Destroy()
for(var/atom/movable/AM in contents)
- AM.setloc(loc)
+ AM.loc = loc
..()
@@ -60,7 +60,8 @@ obj/structure/ex_act(severity)
switch(severity)
if(1.0)
for(var/atom/movable/AM in contents)
- AM.setloc(loc)
+ AM.loc = loc
+ // TODO: What the fuck are you doing
AM.ex_act(severity++)
qdel(src)
@@ -68,7 +69,7 @@ obj/structure/ex_act(severity)
if(2.0)
if(prob(50))
for(var/atom/movable/AM in contents)
- AM.setloc(loc)
+ AM.loc = loc
AM.ex_act(severity++)
qdel(src)
@@ -103,7 +104,7 @@ obj/structure/ex_act(severity)
AM << "The tube's support pylons block your way."
return ..()
else
- AM.setloc(src.loc)
+ AM.loc = src.loc
AM << "You slip under the tube."
/obj/structure/transit_tube/station/New(loc)
@@ -115,7 +116,7 @@ obj/structure/ex_act(severity)
if(!pod_moving && icon_state == "open" && istype(AM, /mob))
for(var/obj/structure/transit_tube_pod/pod in loc)
if(!pod.moving && pod.dir in directions())
- AM.setloc(pod)
+ AM.loc = pod
return
@@ -435,7 +436,7 @@ obj/structure/ex_act(severity)
if(istype(mob, /mob) && mob.client)
// If the pod is not in a tube at all, you can get out at any time.
if(!(locate(/obj/structure/transit_tube) in loc))
- mob.setloc(loc)
+ mob.loc = loc
mob.client.Move(get_step(loc, direction), direction)
//if(moving && istype(loc, /turf/space))
@@ -448,7 +449,7 @@ obj/structure/ex_act(severity)
if(!station.pod_moving)
if(direction == station.dir)
if(station.icon_state == "open")
- mob.setloc(loc)
+ mob.loc = loc
mob.client.Move(get_step(loc, direction), direction)
else
diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm
index 8a81e93d1a9..8bdaad4672a 100644
--- a/code/game/objects/structures/watercloset.dm
+++ b/code/game/objects/structures/watercloset.dm
@@ -31,7 +31,7 @@
if(ishuman(user))
user.put_in_hands(I)
else
- I.setloc(get_turf(src))
+ I.loc = get_turf(src)
user << "You find \an [I] in the cistern."
w_items -= I.w_class
return
@@ -84,7 +84,7 @@
user << "The cistern is full."
return
user.drop_item()
- I.setloc(src)
+ I.loc = src
w_items += I.w_class
user << "You carefully place \the [I] into the cistern."
return
diff --git a/code/game/supplyshuttle.dm b/code/game/supplyshuttle.dm
index c1548257c26..86e306ac1d8 100644
--- a/code/game/supplyshuttle.dm
+++ b/code/game/supplyshuttle.dm
@@ -1,8 +1,8 @@
//Config stuff
#define SUPPLY_DOCKZ 2 //Z-level of the Dock.
#define SUPPLY_STATIONZ 1 //Z-level of the Station.
-#define SUPPLY_STATION_AREATYPE /area/supply/station //Type of the supply shuttle area for station
-#define SUPPLY_DOCK_AREATYPE /area/supply/dock //Type of the supply shuttle area for dock
+#define SUPPLY_STATION_AREATYPE "/area/supply/station" //Type of the supply shuttle area for station
+#define SUPPLY_DOCK_AREATYPE "/area/supply/dock" //Type of the supply shuttle area for dock
var/global/datum/controller/supply_shuttle/supply_shuttle
//var/datum/controller/supply_shuttle/supply_shuttle = new()
diff --git a/code/game/turfs/simulated/floor_types.dm b/code/game/turfs/simulated/floor_types.dm
index 2f04b2f0684..5c8b5d8cc5d 100644
--- a/code/game/turfs/simulated/floor_types.dm
+++ b/code/game/turfs/simulated/floor_types.dm
@@ -246,7 +246,7 @@
thermal_conductivity = OPEN_HEAT_TRANSFER_COEFFICIENT
heat_capacity = 700000
- lit_value = 4 //starlight
+ lighting_lumcount = 4 //starlight
// accepts_lighting=0 // Don't apply overlays
New()
diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm
index c125f9e0269..356214dd9a2 100644
--- a/code/game/turfs/turf.dm
+++ b/code/game/turfs/turf.dm
@@ -209,19 +209,15 @@
if(L)
del L
-var/turf_light_data/old_lights = new
-
//Creates a new turf
/turf/proc/ChangeTurf(var/turf/N)
if (!N)
return
+ var/old_lumcount = lighting_lumcount - initial(lighting_lumcount)
+
//world << "Replacing [src.type] with [N]"
- var/old_opacity = opacity
-
- old_lights.copy_from(src)
-
if(connections) connections.erase_all()
if(istype(src,/turf/simulated))
@@ -242,12 +238,10 @@ var/turf_light_data/old_lights = new
var/turf/simulated/W = new N( locate(src.x, src.y, src.z) )
//W.Assimilate_Air()
- old_lights.copy_to(W)
- W.ResetAllLights()
-
- if(old_opacity)
- W.opacity = 1
- W.SetOpacity(0)
+ W.lighting_lumcount += old_lumcount
+ if(old_lumcount != W.lighting_lumcount)
+ W.lighting_changed = 1
+ lighting_controller.changed_turfs += W
if (istype(W,/turf/simulated/floor))
W.RemoveLattice()
@@ -265,9 +259,10 @@ var/turf_light_data/old_lights = new
// zone.SetStatus(ZONE_ACTIVE)
var/turf/W = new N( locate(src.x, src.y, src.z) )
-
- old_lights.copy_to(W)
- W.ResetAllLights()
+ W.lighting_lumcount += old_lumcount
+ if(old_lumcount != W.lighting_lumcount)
+ W.lighting_changed = 1
+ lighting_controller.changed_turfs += W
if(air_master)
air_master.mark_for_update(src)
diff --git a/code/modules/DetectiveWork/detective_work.dm b/code/modules/DetectiveWork/detective_work.dm
index b9ecfdc3e68..047fa29e506 100644
--- a/code/modules/DetectiveWork/detective_work.dm
+++ b/code/modules/DetectiveWork/detective_work.dm
@@ -142,7 +142,7 @@ obj/machinery/computer/forensic_scanning
temp = null
if("eject")
if(scanning)
- scanning.setloc(loc)
+ scanning.loc = loc
scanning = null
else
temp = "Eject Failed: No Object"
@@ -152,13 +152,13 @@ obj/machinery/computer/forensic_scanning
if(I && istype(I))
if(istype(I, /obj/item/weapon/evidencebag))
scanning = I.contents[1]
- scanning.setloc(src)
+ scanning.loc = src
I.overlays -= scanning
I.icon_state = "evidenceobj"
else
scanning = I
M.drop_item()
- I.setloc(src)
+ I.loc = src
else
usr << "Invalid Object Rejected."
if("card") //Processing a fingerprint card.
@@ -173,11 +173,11 @@ obj/machinery/computer/forensic_scanning
if(card.amount > 1 || !card.fingerprints.len)
usr << "\red ERROR: No prints/too many cards."
if(card.loc == src)
- card.setloc(src.loc)
+ card.loc = src.loc
card = null
return
M.drop_item()
- I.setloc(src)
+ I.loc = src
process_card()
else
usr << "\red Invalid Object Rejected."
@@ -607,7 +607,7 @@ obj/machinery/computer/forensic_scanning
else
usr << "\red ERROR: No prints/too many cards."
if(card.loc == src)
- card.setloc(src.loc)
+ card.loc = src.loc
card = null
return
return
diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm
index 7f43646b963..ba67b8a706a 100644
--- a/code/modules/mob/living/carbon/human/inventory.dm
+++ b/code/modules/mob/living/carbon/human/inventory.dm
@@ -768,11 +768,8 @@ It can still be worn/put on as normal.
if(item && target.has_organ_for_slot(slot_to_process)) //Placing an item on the mob
if(item.mob_can_equip(target, slot_to_process, 0))
source.u_equip(item)
- item.dropped(source)
-
target.equip_to_slot_if_possible(item, slot_to_process, 0, 1, 1)
- item.pickup(target)
-
+ item.dropped(source)
source.update_icons()
target.update_icons()
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index e0c51ca6390..6d56ae5e02c 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -953,7 +953,7 @@
var/turf/T = loc
var/area/A = T.loc
if(A)
- if(A.lighting_use_dynamic) light_amount = min(10,T.lit_value) - 5 //hardcapped so it's not abused by having a ton of flashlights
+ if(A.lighting_use_dynamic) light_amount = min(10,T.lighting_lumcount) - 5 //hardcapped so it's not abused by having a ton of flashlights
else light_amount = 5
nutrition += light_amount
traumatic_shock -= light_amount
@@ -972,7 +972,7 @@
var/turf/T = loc
var/area/A = T.loc
if(A)
- if(A.lighting_use_dynamic) light_amount = T.lit_value
+ if(A.lighting_use_dynamic) light_amount = T.lighting_lumcount
else light_amount = 10
if(light_amount > 2) //if there's enough light, start dying
take_overall_damage(1,1)
@@ -1550,7 +1550,7 @@
//0.1% chance of playing a scary sound to someone who's in complete darkness
if(isturf(loc) && rand(1,1000) == 1)
var/turf/currentTurf = loc
- if(!currentTurf.lit_value)
+ if(!currentTurf.lighting_lumcount)
playsound_local(src,pick(scarySounds),50, 1, -1)
// Separate proc so we can jump out of it when we've succeeded in spreading disease.
diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm
index 6bb646771b0..ccdab077e65 100644
--- a/code/modules/mob/living/carbon/monkey/life.dm
+++ b/code/modules/mob/living/carbon/monkey/life.dm
@@ -452,7 +452,7 @@
var/turf/T = loc
var/area/A = T.loc
if(A)
- if(A.lighting_use_dynamic) light_amount = min(10,T.lit_value) - 5 //hardcapped so it's not abused by having a ton of flashlights
+ if(A.lighting_use_dynamic) light_amount = min(10,T.lighting_lumcount) - 5 //hardcapped so it's not abused by having a ton of flashlights
else light_amount = 5
nutrition += light_amount
diff --git a/code/modules/mob/living/silicon/robot/inventory.dm b/code/modules/mob/living/silicon/robot/inventory.dm
index 6eb7b7ac384..d22976509b1 100644
--- a/code/modules/mob/living/silicon/robot/inventory.dm
+++ b/code/modules/mob/living/silicon/robot/inventory.dm
@@ -12,7 +12,6 @@
if(!O)
return 0
-
if(istype(O,/obj/item/borg/sight))
var/obj/item/borg/sight/S = O
sight_mode &= ~S.sight_mode
@@ -78,7 +77,6 @@
uneq_module(module_state_2)
uneq_module(module_state_3)
-
/mob/living/silicon/robot/proc/activated(obj/item/O)
if(module_state_1 == O)
return 1
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index a9207280470..98173429f06 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -142,7 +142,7 @@
var/datum/robot_component/cell_component = components["power cell"]
cell_component.wrapped = cell
cell_component.installed = 1
-
+
hud_list[HEALTH_HUD] = image('icons/mob/hud.dmi', src, "hudblank")
hud_list[STATUS_HUD] = image('icons/mob/hud.dmi', src, "hudhealth100")
hud_list[ID_HUD] = image('icons/mob/hud.dmi', src, "hudblank")
@@ -151,9 +151,9 @@
hud_list[IMPCHEM_HUD] = image('icons/mob/hud.dmi', src, "hudblank")
hud_list[IMPTRACK_HUD] = image('icons/mob/hud.dmi', src, "hudblank")
hud_list[SPECIALROLE_HUD] = image('icons/mob/hud.dmi', src, "hudblank")
+
-
-
+
playsound(loc, 'sound/voice/liveagain.ogg', 75, 1)
@@ -1153,26 +1153,20 @@
if (href_list["deact"])
var/obj/item/O = locate(href_list["deact"])
-
if(activated(O))
if(module_state_1 == O)
module_state_1 = null
+ contents -= O
else if(module_state_2 == O)
module_state_2 = null
+ contents -= O
else if(module_state_3 == O)
module_state_3 = null
+ contents -= O
else
src << "Module isn't activated."
- return
else
src << "Module isn't activated"
- return
-
- O.dropped(src)
- contents -= O
-
- src << "[O.name] deactivated."
-
installed_modules()
return
diff --git a/code/modules/mob/living/simple_animal/hostile/statue.dm b/code/modules/mob/living/simple_animal/hostile/statue.dm
index 6732eeb3180..f5fa6677b4e 100644
--- a/code/modules/mob/living/simple_animal/hostile/statue.dm
+++ b/code/modules/mob/living/simple_animal/hostile/statue.dm
@@ -111,7 +111,7 @@
// Don't check it twice if our destination is the tile we are on or we can't even get to our destination
if(T == destination)
destination = null
- else if(!T.lit_value && !destination.lit_value) // No one can see us in the darkness, right?
+ else if(!T.lighting_lumcount && !destination.lighting_lumcount) // No one can see us in the darkness, right?
return null
// We aren't in darkness, loop for viewers.
diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm
index d3db4150f2f..2f5d6dbd220 100644
--- a/code/modules/power/singularity/singularity.dm
+++ b/code/modules/power/singularity/singularity.dm
@@ -4,7 +4,6 @@
var/global/list/uneatable = list(
/turf/space,
/obj/effect/overlay,
- /atom/movable/lighting_overlay,
/mob/dead,
/mob/camera,
/mob/new_player
diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm
index 5ce114f8114..c0e2d00165d 100644
--- a/code/modules/reagents/Chemistry-Machinery.dm
+++ b/code/modules/reagents/Chemistry-Machinery.dm
@@ -208,7 +208,7 @@
if(istype(B, /obj/item/weapon/reagent_containers/glass) || istype(B,/obj/item/weapon/reagent_containers/food))
src.beaker = B
user.drop_item()
- B.setloc(src)
+ B.loc = src
user << "You set [B] on the machine."
nanomanager.update_uis(src) // update all UIs attached to src
icon_state = "[icon_state]2"
@@ -325,7 +325,7 @@
return
src.beaker = B
user.drop_item()
- B.setloc(src)
+ B.loc = src
user << "You add the beaker to the machine!"
src.updateUsrDialog()
icon_state = "mixer1"
@@ -338,7 +338,7 @@
src.loaded_pill_bottle = B
user.drop_item()
- B.setloc(src)
+ B.loc = src
user << "You add the pill bottle into the dispenser slot!"
src.updateUsrDialog()
return
@@ -354,7 +354,7 @@
if (href_list["ejectp"])
if(loaded_pill_bottle)
- loaded_pill_bottle.setloc(src.loc)
+ loaded_pill_bottle.loc = src.loc
loaded_pill_bottle = null
else if(href_list["close"])
usr << browse(null, "window=chemmaster")
@@ -966,7 +966,7 @@
else
src.beaker = O
user.drop_item()
- O.setloc(src)
+ O.loc = src
update_icon()
src.updateUsrDialog()
return 0
@@ -980,7 +980,7 @@
for (var/obj/item/weapon/reagent_containers/food/snacks/grown/G in O.contents)
O.contents -= G
- G.setloc(src)
+ G.loc = src
holdingitems += G
if(holdingitems && holdingitems.len >= limit) //Sanity checking so the blender doesn't overfill
user << "You fill the All-In-One grinder to the brim."
@@ -1003,7 +1003,7 @@
return 1
user.before_take_item(O)
- O.setloc(src)
+ O.loc = src
holdingitems += O
src.updateUsrDialog()
return 0
@@ -1086,7 +1086,7 @@
return
if (!beaker)
return
- beaker.setloc(src.loc)
+ beaker.loc = src.loc
beaker = null
update_icon()
@@ -1098,7 +1098,7 @@
return
for(var/obj/item/O in holdingitems)
- O.setloc(src.loc)
+ O.loc = src.loc
holdingitems -= O
holdingitems = list()
diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm
index 3bbcd394262..4b1ad0470e4 100644
--- a/code/modules/recycling/disposal.dm
+++ b/code/modules/recycling/disposal.dm
@@ -112,7 +112,7 @@
if (GM.client)
GM.client.perspective = EYE_PERSPECTIVE
GM.client.eye = src
- GM.setloc(src)
+ GM.loc = src
for (var/mob/C in viewers(src))
C.show_message("\red [GM.name] has been placed in the [src] by [user].", 3)
del(G)
@@ -125,7 +125,7 @@
user.drop_item()
if(I)
- I.setloc(src)
+ I.loc = src
user << "You place \the [I] into the [src]."
for(var/mob/M in viewers(src))
@@ -170,7 +170,7 @@
if (target.client)
target.client.perspective = EYE_PERSPECTIVE
target.client.eye = src
- target.setloc(src)
+ target.loc = src
for (var/mob/C in viewers(src))
if(C == user)
@@ -197,7 +197,7 @@
if (user.client)
user.client.eye = user.client.mob
user.client.perspective = MOB_PERSPECTIVE
- user.setloc(src.loc)
+ user.loc = src.loc
update()
return
@@ -308,7 +308,7 @@
// eject the contents of the disposal unit
proc/eject()
for(var/atom/movable/AM in src)
- AM.setloc(src.loc)
+ AM.loc = src.loc
AM.pipe_eject(0)
update()
@@ -367,7 +367,7 @@
return
use_power = 1
-
+
if(mode != 1) // if off or ready, no need to charge
return
@@ -447,7 +447,7 @@
for(var/atom/movable/AM in H)
target = get_offset_target_turf(src.loc, rand(5)-rand(5), rand(5)-rand(5))
- AM.setloc(src.loc)
+ AM.loc = src.loc
AM.pipe_eject(0)
spawn(1)
if(AM)
@@ -462,7 +462,7 @@
if(istype(I, /obj/item/projectile))
return
if(prob(75))
- I.setloc(src)
+ I.loc = src
for(var/mob/M in viewers(src))
M.show_message("\the [I] lands in \the [src].", 3)
else
@@ -510,7 +510,7 @@
// now everything inside the disposal gets put into the holder
// note AM since can contain mobs or objs
for(var/atom/movable/AM in D)
- AM.setloc(src)
+ AM.loc = src
if(istype(AM, /mob/living/carbon/human))
var/mob/living/carbon/human/H = AM
if(M_FAT in H.mutations) // is a human and fat?
@@ -587,7 +587,7 @@
// used when a a holder meets a stuck holder
proc/merge(var/obj/structure/disposalholder/other)
for(var/atom/movable/AM in other)
- AM.setloc(src) // move everything in other holder to this one
+ AM.loc = src // move everything in other holder to this one
if(ismob(AM))
var/mob/M = AM
if(M.client) // if a client mob, update eye to follow this holder
@@ -649,7 +649,7 @@
// this is unlikely, but just dump out everything into the turf in case
for(var/atom/movable/AM in H)
- AM.setloc(T)
+ AM.loc = T
AM.pipe_eject(0)
del(H)
..()
@@ -680,9 +680,9 @@
if(H2 && !H2.active)
H.merge(H2)
- H.setloc(P)
+ H.loc = P
else // if wasn't a pipe, then set loc to turf
- H.setloc(T)
+ H.loc = T
return null
return P
@@ -721,7 +721,7 @@
if(T.density) // dense ouput turf, so stop holder
H.active = 0
- H.setloc(src)
+ H.loc = src
return
if(T.intact && istype(T,/turf/simulated/floor)) //intact floor, pop the tile
var/turf/simulated/floor/F = T
@@ -741,7 +741,7 @@
playsound(src, 'sound/machines/hiss.ogg', 50, 0, 0)
if(H)
for(var/atom/movable/AM in H)
- AM.setloc(T)
+ AM.loc = T
AM.pipe_eject(direction)
spawn(1)
if(AM)
@@ -756,7 +756,7 @@
for(var/atom/movable/AM in H)
target = get_offset_target_turf(T, rand(5)-rand(5), rand(5)-rand(5))
- AM.setloc(T)
+ AM.loc = T
AM.pipe_eject(0)
spawn(1)
if(AM)
@@ -789,7 +789,7 @@
// this is unlikely, but just dump out everything into the turf in case
for(var/atom/movable/AM in H)
- AM.setloc(T)
+ AM.loc = T
AM.pipe_eject(0)
del(H)
return
@@ -903,6 +903,9 @@
update()
return
+
+
+
//a three-way junction with dir being the dominant direction
/obj/structure/disposalpipe/junction
icon_state = "pipe-j1"
@@ -1025,9 +1028,9 @@
if(H2 && !H2.active)
H.merge(H2)
- H.setloc(P)
+ H.loc = P
else // if wasn't a pipe, then set loc to turf
- H.setloc(T)
+ H.loc = T
return null
return P
@@ -1087,9 +1090,9 @@
if(H2 && !H2.active)
H.merge(H2)
- H.setloc(P)
+ H.loc = P
else // if wasn't a pipe, then set loc to turf
- H.setloc(T)
+ H.loc = T
return null
return P
@@ -1256,7 +1259,7 @@
if(H)
for(var/atom/movable/AM in H)
- AM.setloc(src.loc)
+ AM.loc = src.loc
AM.pipe_eject(dir)
spawn(5)
AM.throw_at(target, 3, 1)
diff --git a/code/modules/research/xenoarchaeology/machinery/geosample_scanner.dm b/code/modules/research/xenoarchaeology/machinery/geosample_scanner.dm
index 10080549788..eaf92181b23 100644
--- a/code/modules/research/xenoarchaeology/machinery/geosample_scanner.dm
+++ b/code/modules/research/xenoarchaeology/machinery/geosample_scanner.dm
@@ -92,7 +92,7 @@
update_coolant()
return
user.drop_item()
- I.setloc(src)
+ I.loc = src
scanned_item = I
/obj/machinery/radiocarbon_spectrometer/proc/update_coolant()
@@ -144,15 +144,15 @@
data["radiation"] = round(radiation)
data["t_left_radspike"] = round(t_left_radspike)
data["rad_shield_on"] = rad_shield
-
+
// update the ui if it exists, returns null if no ui is passed/found
- ui = nanomanager.try_update_ui(user, src, ui_key, ui, data)
+ ui = nanomanager.try_update_ui(user, src, ui_key, ui, data)
if (!ui)
// the ui does not exist, so we'll create a new() one
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
ui = new(user, src, ui_key, "geoscanner.tmpl", "High Res Radiocarbon Spectrometer", 900, 825)
// when the ui is first opened this is the data it will use
- ui.set_initial_data(data)
+ ui.set_initial_data(data)
// open the new ui window
ui.open()
// auto update every Master Controller tick
@@ -319,7 +319,7 @@
last_scan_data = P.info
P.loc = src.loc
- scanned_item.setloc(src.loc)
+ scanned_item.loc = src.loc
scanned_item = null
/obj/machinery/radiocarbon_spectrometer/Topic(href, href_list)
@@ -355,7 +355,7 @@
if(href_list["ejectItem"])
if(scanned_item)
- scanned_item.setloc(src.loc)
+ scanned_item.loc = src.loc
scanned_item = null
add_fingerprint(usr)
diff --git a/icons/effects/lights/lighting1.dmi b/icons/effects/lights/lighting1.dmi
deleted file mode 100644
index 66787a12857..00000000000
Binary files a/icons/effects/lights/lighting1.dmi and /dev/null differ
diff --git a/icons/effects/lights/lighting2.dmi b/icons/effects/lights/lighting2.dmi
deleted file mode 100644
index a80e436c18b..00000000000
Binary files a/icons/effects/lights/lighting2.dmi and /dev/null differ
diff --git a/icons/effects/lights/lighting3.dmi b/icons/effects/lights/lighting3.dmi
deleted file mode 100644
index 023d4252896..00000000000
Binary files a/icons/effects/lights/lighting3.dmi and /dev/null differ
diff --git a/icons/effects/lights/lighting5-1.dmi b/icons/effects/lights/lighting5-1.dmi
deleted file mode 100644
index 3e8057a3d9c..00000000000
Binary files a/icons/effects/lights/lighting5-1.dmi and /dev/null differ
diff --git a/icons/effects/lights/lighting5-2.dmi b/icons/effects/lights/lighting5-2.dmi
deleted file mode 100644
index 0f843d0d024..00000000000
Binary files a/icons/effects/lights/lighting5-2.dmi and /dev/null differ