From 7e378a782f7b74b869246968b534a5fc7f0104e8 Mon Sep 17 00:00:00 2001
From: NovaBot <154629622+NovaBot13@users.noreply.github.com>
Date: Mon, 12 Feb 2024 20:48:25 -0500
Subject: [PATCH] [MIRROR] Fixes complex lights not handling moving well,
 renames lighting defines (#933)

* Fixes complex lights not handling moving well, renames lighting defines (#81423)

## About The Pull Request

[Fixes static lights not
moving](https://github.com/tgstation/tgstation/commit/ffef43c05a55dae414ef94558ecf9b9df709ded7)

Worked fine when the owner moved, but if the owner was inside something
else, it would try and trigger an update on the PARENT's lights, which
are obviously not us.

[Renames MOVABLE_LIGHT and STATIC_LIGHT to better describe what they
do](https://github.com/tgstation/tgstation/commit/de73a63bd4d97783c69c95370726d1c253ffb8fe)

People keep trying to change the lighting system of lamps and it makes
me mad.
I choose OVERLAY_LIGHT and COMPLEX_LIGHT here, I couldn't figure out a
better name for turf matrix lighting. Suggestions welcome

## Why It's Good For The Game

Closes #80005
Hopefully improves understanding of lighting at a glance
## Changelog
:cl:
fix: Fixes fancy lights not updating their source location when picked
up and moved
/:cl:

* Fixes complex lights not handling moving well, renames lighting defines

* Updates modular defines

* Update dancing_pole.dm

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Mal <13398309+vinylspiders@users.noreply.github.com>
---
 code/__DEFINES/lighting.dm                    | 10 ++++----
 code/_onclick/hud/rendering/render_plate.dm   |  2 +-
 code/datums/components/overlay_lighting.dm    |  4 ++--
 code/datums/elements/light_eaten.dm           |  4 ++--
 code/game/atom/_atom.dm                       |  2 +-
 code/game/atom/atom_vv.dm                     | 14 +++++------
 .../game/atom/atoms_initializing_EXPENSIVE.dm |  2 +-
 code/game/atoms_movable.dm                    |  6 ++---
 .../effects/effect_system/effects_sparks.dm   |  2 +-
 code/game/objects/effects/lighting.dm         |  2 +-
 code/game/objects/effects/portals.dm          |  2 +-
 code/game/objects/items/cigs_lighters.dm      |  2 +-
 code/game/objects/items/devices/flashlight.dm | 22 ++++++++---------
 code/game/objects/items/dualsaber.dm          |  2 +-
 code/game/objects/items/flamethrower.dm       |  2 +-
 code/game/objects/items/melee/energy.dm       |  2 +-
 .../stacks/golem_food/golem_status_effects.dm |  2 +-
 code/game/objects/items/tools/weldingtool.dm  |  2 +-
 .../antagonists/heretic/items/keyring.dm      |  2 +-
 code/modules/assembly/flash.dm                |  2 +-
 .../atmospherics/environmental/LINDA_fire.dm  |  2 +-
 code/modules/clothing/head/cakehat.dm         |  2 +-
 code/modules/clothing/head/hardhat.dm         |  2 +-
 code/modules/clothing/shoes/kindlekicks.dm    |  2 +-
 code/modules/clothing/spacesuits/plasmamen.dm |  2 +-
 code/modules/hydroponics/grown/ambrosia.dm    |  2 +-
 code/modules/hydroponics/plant_genes.dm       |  2 +-
 code/modules/lighting/lighting_atom.dm        |  2 +-
 code/modules/lighting/lighting_source.dm      | 24 +++++++++++--------
 .../mining/boulder_processing/refinery.dm     |  2 +-
 .../mining/equipment/kinetic_crusher.dm       |  2 +-
 code/modules/mining/lavaland/tendril_loot.dm  |  2 +-
 code/modules/mob/dead/observer/observer.dm    |  2 +-
 code/modules/mob/living/basic/bots/_bots.dm   |  2 +-
 .../mob/living/basic/guardian/guardian.dm     |  2 +-
 .../mob/living/basic/minebots/minebot.dm      |  2 +-
 .../mob/living/basic/space_fauna/ghost.dm     |  2 +-
 .../mob/living/silicon/robot/robot_defines.dm |  2 +-
 .../mob/living/simple_animal/bot/bot.dm       |  2 +-
 .../mob/living/simple_animal/bot/vibebot.dm   |  2 +-
 .../hostile/megafauna/colossus.dm             |  2 +-
 code/modules/mod/mod_construction.dm          |  2 +-
 code/modules/mod/mod_core.dm                  |  2 +-
 code/modules/mod/modules/modules_general.dm   |  2 +-
 code/modules/mod/modules/modules_supply.dm    |  4 ++--
 .../computers/item/computer.dm                |  2 +-
 code/modules/pai/pai.dm                       |  2 +-
 code/modules/paperwork/pen.dm                 |  2 +-
 code/modules/photography/camera/camera.dm     |  2 +-
 code/modules/projectiles/projectile/beams.dm  |  2 +-
 .../research/ordnance/doppler_array.dm        |  2 +-
 code/modules/surgery/tools.dm                 |  4 ++--
 code/modules/vehicles/cars/clowncar.dm        |  2 +-
 code/modules/vehicles/cars/vim.dm             |  2 +-
 code/modules/vehicles/mecha/_mecha.dm         |  2 +-
 code/modules/vehicles/mecha/combat/durand.dm  |  2 +-
 code/modules/wiremod/shell/bot.dm             |  2 +-
 code/modules/wiremod/shell/compact_remote.dm  |  2 +-
 code/modules/wiremod/shell/controller.dm      |  2 +-
 code/modules/wiremod/shell/dispenser.dm       |  2 +-
 code/modules/wiremod/shell/drone.dm           |  2 +-
 code/modules/wiremod/shell/gun.dm             |  2 +-
 code/modules/wiremod/shell/keyboard.dm        |  2 +-
 code/modules/wiremod/shell/moneybot.dm        |  2 +-
 code/modules/wiremod/shell/scanner.dm         |  2 +-
 code/modules/wiremod/shell/server.dm          |  2 +-
 .../mob/living/simple_animal/friendly/dogs.dm |  2 +-
 .../living/simple_animal/friendly/poppy.dm    |  2 +-
 .../modules/energy_axe/code/energy_fireaxe.dm |  2 +-
 .../lewd_items/code/lewd_items/shibari.dm     |  2 +-
 .../code/lewd_structures/dancing_pole.dm      |  2 +-
 .../modular_weapons/code/ballistic_master.dm  |  2 +-
 modular_nova/modules/mold/code/mold_mobs.dm   |  4 ++--
 73 files changed, 113 insertions(+), 109 deletions(-)

diff --git a/code/__DEFINES/lighting.dm b/code/__DEFINES/lighting.dm
index 3316aa6afe2..ca03017686f 100644
--- a/code/__DEFINES/lighting.dm
+++ b/code/__DEFINES/lighting.dm
@@ -1,17 +1,17 @@
 /// Object doesn't use any of the light systems. Should be changed to add a light source to the object.
 #define NO_LIGHT_SUPPORT 0
 /// Light made with the lighting datums, applying a matrix.
-#define STATIC_LIGHT 1
+#define COMPLEX_LIGHT 1
 /// Light made by masking the lighting darkness plane.
-#define MOVABLE_LIGHT 2
+#define OVERLAY_LIGHT 2
 /// Light made by masking the lighting darkness plane, and is directional.
-#define MOVABLE_LIGHT_DIRECTIONAL 3
+#define OVERLAY_LIGHT_DIRECTIONAL 3
 ///Light made by masking the lighting darkness plane, and is a directionally focused beam.
-#define MOVABLE_LIGHT_BEAM 4
+#define OVERLAY_LIGHT_BEAM 4
 /// Nonesensical value for light color, used for null checks.
 #define NONSENSICAL_VALUE -99999
 
-/// Is a movable light source attached to another movable (its loc), meaning that the lighting component should go one level deeper.
+/// Is our overlay light source attached to another movable (its loc), meaning that the lighting component should go one level deeper.
 #define LIGHT_ATTACHED (1<<0)
 /// Freezes a light in its current state, blocking any attempts at modification
 #define LIGHT_FROZEN (1<<1)
diff --git a/code/_onclick/hud/rendering/render_plate.dm b/code/_onclick/hud/rendering/render_plate.dm
index e42c1f94f68..d33162a5b5f 100644
--- a/code/_onclick/hud/rendering/render_plate.dm
+++ b/code/_onclick/hud/rendering/render_plate.dm
@@ -212,7 +212,7 @@
 		<br>That's how lighting functions at base. Because it uses BLEND_MULTIPLY and occasionally color matrixes, it needs a backdrop of blackness.\
 		<br>See <a href=\"https://secure.byond.com/forum/?post=2141928\">This byond post</a>\
 		<br>Lemme see uh, we're masked by the emissive plane so it can actually function (IE: make things glow in the dark).\
-		<br>We're also masked by the overlay lighting plane, which contains all the movable lights in the game. It draws to us and also the game plane.\
+		<br>We're also masked by the overlay lighting plane, which contains all the well overlay lights in the game. It draws to us and also the game plane.\
 		<br>Masks us out so it has the breathing room to apply its effect.\
 		<br>Oh and we quite often have our alpha changed to achive night vision effects, or things of that sort."
 	plane = RENDER_PLANE_LIGHTING
diff --git a/code/datums/components/overlay_lighting.dm b/code/datums/components/overlay_lighting.dm
index 180c65b2239..efff82b703a 100644
--- a/code/datums/components/overlay_lighting.dm
+++ b/code/datums/components/overlay_lighting.dm
@@ -78,8 +78,8 @@
 		return COMPONENT_INCOMPATIBLE
 
 	var/atom/movable/movable_parent = parent
-	if(movable_parent.light_system != MOVABLE_LIGHT && movable_parent.light_system != MOVABLE_LIGHT_DIRECTIONAL && movable_parent.light_system != MOVABLE_LIGHT_BEAM)
-		stack_trace("[type] added to [parent], with [movable_parent.light_system] value for the light_system var. Use [MOVABLE_LIGHT], [MOVABLE_LIGHT_DIRECTIONAL] or [MOVABLE_LIGHT_BEAM] instead.")
+	if(movable_parent.light_system != OVERLAY_LIGHT && movable_parent.light_system != OVERLAY_LIGHT_DIRECTIONAL && movable_parent.light_system != OVERLAY_LIGHT_BEAM)
+		stack_trace("[type] added to [parent], with [movable_parent.light_system] value for the light_system var. Use [OVERLAY_LIGHT], [OVERLAY_LIGHT_DIRECTIONAL] or [OVERLAY_LIGHT_BEAM] instead.")
 		return COMPONENT_INCOMPATIBLE
 
 	. = ..()
diff --git a/code/datums/elements/light_eaten.dm b/code/datums/elements/light_eaten.dm
index 39550a99124..e3bcc079318 100644
--- a/code/datums/elements/light_eaten.dm
+++ b/code/datums/elements/light_eaten.dm
@@ -15,9 +15,9 @@
 	RegisterSignal(atom_target, COMSIG_ATOM_SET_LIGHT_ON, PROC_REF(block_light_on))
 	RegisterSignal(atom_target, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine))
 
-	/// Because the lighting system does not like movable lights getting set_light() called.
+	/// Because the lighting system does not like overlay lights getting set_light() called.
 	switch(atom_target.light_system)
-		if(STATIC_LIGHT)
+		if(COMPLEX_LIGHT)
 			target.set_light(0, 0, null, l_on = FALSE)
 		else
 			target.set_light_power(0)
diff --git a/code/game/atom/_atom.dm b/code/game/atom/_atom.dm
index 5bd8346f57f..4a7d113ba65 100644
--- a/code/game/atom/_atom.dm
+++ b/code/game/atom/_atom.dm
@@ -65,7 +65,7 @@
 	var/datum/wires/wires = null
 
 	///Light systems, both shouldn't be active at the same time.
-	var/light_system = STATIC_LIGHT
+	var/light_system = COMPLEX_LIGHT
 	///Range of the light in tiles. Zero means no light.
 	var/light_range = 0
 	///Intensity of the light. The stronger, the less shadows you will see on the lit area.
diff --git a/code/game/atom/atom_vv.dm b/code/game/atom/atom_vv.dm
index b5a572749a6..8830a4af2f4 100644
--- a/code/game/atom/atom_vv.dm
+++ b/code/game/atom/atom_vv.dm
@@ -222,37 +222,37 @@
 	light_flags &= ~LIGHT_FROZEN
 	switch(var_name)
 		if(NAMEOF(src, light_range))
-			if(light_system == STATIC_LIGHT)
+			if(light_system == COMPLEX_LIGHT)
 				set_light(l_range = var_value)
 			else
 				set_light_range(var_value)
 			. = TRUE
 		if(NAMEOF(src, light_power))
-			if(light_system == STATIC_LIGHT)
+			if(light_system == COMPLEX_LIGHT)
 				set_light(l_power = var_value)
 			else
 				set_light_power(var_value)
 			. = TRUE
 		if(NAMEOF(src, light_color))
-			if(light_system == STATIC_LIGHT)
+			if(light_system == COMPLEX_LIGHT)
 				set_light(l_color = var_value)
 			else
 				set_light_color(var_value)
 			. = TRUE
 		if(NAMEOF(src, light_angle))
-			if(light_system == STATIC_LIGHT)
+			if(light_system == COMPLEX_LIGHT)
 				set_light(l_angle = var_value)
 				. = TRUE
 		if(NAMEOF(src, light_dir))
-			if(light_system == STATIC_LIGHT)
+			if(light_system == COMPLEX_LIGHT)
 				set_light(l_dir = var_value)
 				. = TRUE
 		if(NAMEOF(src, light_height))
-			if(light_system == STATIC_LIGHT)
+			if(light_system == COMPLEX_LIGHT)
 				set_light(l_height = var_value)
 				. = TRUE
 		if(NAMEOF(src, light_on))
-			if(light_system == STATIC_LIGHT)
+			if(light_system == COMPLEX_LIGHT)
 				set_light(l_on = var_value)
 			else
 				set_light_on(var_value)
diff --git a/code/game/atom/atoms_initializing_EXPENSIVE.dm b/code/game/atom/atoms_initializing_EXPENSIVE.dm
index 2a3a442e04d..ea8bf9b125d 100644
--- a/code/game/atom/atoms_initializing_EXPENSIVE.dm
+++ b/code/game/atom/atoms_initializing_EXPENSIVE.dm
@@ -128,7 +128,7 @@
 	if(color)
 		add_atom_colour(color, FIXED_COLOUR_PRIORITY)
 
-	if (light_system == STATIC_LIGHT && light_power && light_range)
+	if (light_system == COMPLEX_LIGHT && light_power && light_range)
 		update_light()
 
 	SETUP_SMOOTHING()
diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm
index 990f9812126..f82fb690405 100644
--- a/code/game/atoms_movable.dm
+++ b/code/game/atoms_movable.dm
@@ -181,11 +181,11 @@
 	if(opacity)
 		AddElement(/datum/element/light_blocking)
 	switch(light_system)
-		if(MOVABLE_LIGHT)
+		if(OVERLAY_LIGHT)
 			AddComponent(/datum/component/overlay_lighting)
-		if(MOVABLE_LIGHT_DIRECTIONAL)
+		if(OVERLAY_LIGHT_DIRECTIONAL)
 			AddComponent(/datum/component/overlay_lighting, is_directional = TRUE)
-		if(MOVABLE_LIGHT_BEAM)
+		if(OVERLAY_LIGHT_BEAM)
 			AddComponent(/datum/component/overlay_lighting, is_directional = TRUE, is_beam = TRUE)
 
 /atom/movable/Destroy(force)
diff --git a/code/game/objects/effects/effect_system/effects_sparks.dm b/code/game/objects/effects/effect_system/effects_sparks.dm
index 86800d0522c..c3fad6d26b6 100644
--- a/code/game/objects/effects/effect_system/effects_sparks.dm
+++ b/code/game/objects/effects/effect_system/effects_sparks.dm
@@ -16,7 +16,7 @@
 	name = "sparks"
 	icon_state = "sparks"
 	anchored = TRUE
-	light_system = MOVABLE_LIGHT
+	light_system = OVERLAY_LIGHT
 	light_range = 2
 	light_power = 0.5
 	light_color = LIGHT_COLOR_FIRE
diff --git a/code/game/objects/effects/lighting.dm b/code/game/objects/effects/lighting.dm
index 4e95e72f429..1de9fad39ee 100644
--- a/code/game/objects/effects/lighting.dm
+++ b/code/game/objects/effects/lighting.dm
@@ -8,7 +8,7 @@
 	name = "lighting"
 	desc = "Tell a coder if you're seeing this."
 	icon_state = "nothing"
-	light_system = MOVABLE_LIGHT
+	light_system = OVERLAY_LIGHT
 	light_range = MINIMUM_USEFUL_LIGHT_RANGE
 	light_color = COLOR_WHITE
 	blocks_emissive = EMISSIVE_BLOCK_NONE
diff --git a/code/game/objects/effects/portals.dm b/code/game/objects/effects/portals.dm
index 091b4700673..8c52a76dbc0 100644
--- a/code/game/objects/effects/portals.dm
+++ b/code/game/objects/effects/portals.dm
@@ -18,7 +18,7 @@
 	anchored = TRUE
 	density = TRUE // dense for receiving bumbs
 	layer = HIGH_OBJ_LAYER
-	light_system = STATIC_LIGHT
+	light_system = COMPLEX_LIGHT
 	light_range = 3
 	light_power = 1
 	light_on = TRUE
diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm
index ee78b11c720..5740f6aaa4d 100644
--- a/code/game/objects/items/cigs_lighters.dm
+++ b/code/game/objects/items/cigs_lighters.dm
@@ -742,7 +742,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
 	resistance_flags = FIRE_PROOF
 	grind_results = list(/datum/reagent/iron = 1, /datum/reagent/fuel = 5, /datum/reagent/fuel/oil = 5)
 	custom_price = PAYCHECK_CREW * 1.1
-	light_system = MOVABLE_LIGHT
+	light_system = OVERLAY_LIGHT
 	light_range = 2
 	light_power = 0.6
 	light_color = LIGHT_COLOR_FIRE
diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm
index f7c9b4eda7d..8e29da90f92 100644
--- a/code/game/objects/items/devices/flashlight.dm
+++ b/code/game/objects/items/devices/flashlight.dm
@@ -19,7 +19,7 @@
 	slot_flags = ITEM_SLOT_BELT
 	custom_materials = list(/datum/material/iron= SMALL_MATERIAL_AMOUNT * 0.5, /datum/material/glass= SMALL_MATERIAL_AMOUNT * 0.2)
 	actions_types = list(/datum/action/item_action/toggle_light)
-	light_system = MOVABLE_LIGHT_DIRECTIONAL
+	light_system = OVERLAY_LIGHT_DIRECTIONAL
 	light_range = 4
 	light_power = 1
 	light_on = FALSE
@@ -76,7 +76,7 @@
 
 /obj/item/flashlight/proc/update_brightness()
 	update_appearance(UPDATE_ICON)
-	if(light_system == STATIC_LIGHT)
+	if(light_system == COMPLEX_LIGHT)
 		update_light()
 
 /obj/item/flashlight/proc/toggle_light(mob/user)
@@ -364,7 +364,7 @@
 	righthand_file = 'icons/mob/inhands/items_righthand.dmi'
 	force = 10
 	light_range = 3.5
-	light_system = STATIC_LIGHT
+	light_system = COMPLEX_LIGHT
 	light_color = LIGHT_COLOR_FAINT_BLUE
 	w_class = WEIGHT_CLASS_BULKY
 	obj_flags = CONDUCTS_ELECTRICITY
@@ -397,7 +397,7 @@
 	actions_types = list()
 	heat = 1000
 	light_color = LIGHT_COLOR_FLARE
-	light_system = MOVABLE_LIGHT
+	light_system = OVERLAY_LIGHT
 	grind_results = list(/datum/reagent/sulfur = 15)
 	sound_on = 'sound/items/match_strike.ogg'
 	toggle_context = FALSE
@@ -656,7 +656,7 @@
 	righthand_file = 'icons/mob/inhands/equipment/mining_righthand.dmi'
 	desc = "A mining lantern."
 	light_range = 6 // luminosity when on
-	light_system = MOVABLE_LIGHT
+	light_system = OVERLAY_LIGHT
 
 /obj/item/flashlight/lantern/heirloom_moth
 	name = "old lantern"
@@ -687,7 +687,7 @@
 	slot_flags = ITEM_SLOT_BELT
 	custom_materials = null
 	light_range = 7 //luminosity when on
-	light_system = MOVABLE_LIGHT
+	light_system = OVERLAY_LIGHT
 
 /obj/item/flashlight/emp
 	special_desc_requirement = EXAMINE_CHECK_SYNDICATE // NOVA EDIT
@@ -753,7 +753,7 @@
 	custom_price = PAYCHECK_LOWER
 	w_class = WEIGHT_CLASS_SMALL
 	light_range = 4
-	light_system = MOVABLE_LIGHT
+	light_system = OVERLAY_LIGHT
 	color = LIGHT_COLOR_GREEN
 	icon_state = "glowstick"
 	base_icon_state = "glowstick"
@@ -860,7 +860,7 @@
 	name = "disco light"
 	desc = "Groovy..."
 	icon_state = null
-	light_system = MOVABLE_LIGHT
+	light_system = OVERLAY_LIGHT
 	light_range = 4
 	light_power = 10
 	alpha = 0
@@ -888,7 +888,7 @@
 	desc = "A strange device manufactured with mysterious elements that somehow emits darkness. Or maybe it just sucks in light? Nobody knows for sure."
 	icon_state = "flashdark"
 	inhand_icon_state = "flashdark"
-	light_system = STATIC_LIGHT //The overlay light component is not yet ready to produce darkness.
+	light_system = COMPLEX_LIGHT //The overlay light component is not yet ready to produce darkness.
 	light_range = 0
 	///Variable to preserve old lighting behavior in flashlights, to handle darkness.
 	var/dark_light_range = 2.5
@@ -907,7 +907,7 @@
 /obj/item/flashlight/eyelight
 	name = "eyelight"
 	desc = "This shouldn't exist outside of someone's head, how are you seeing this?"
-	light_system = MOVABLE_LIGHT
+	light_system = OVERLAY_LIGHT
 	light_range = 15
 	light_power = 1
 	obj_flags = CONDUCTS_ELECTRICITY
@@ -923,7 +923,7 @@
 	light_power = 0.07
 
 /obj/item/flashlight/eyelight/glow
-	light_system = MOVABLE_LIGHT_BEAM
+	light_system = OVERLAY_LIGHT_BEAM
 	light_range = 4
 	light_power = 2
 
diff --git a/code/game/objects/items/dualsaber.dm b/code/game/objects/items/dualsaber.dm
index 04b95f1049b..7d5bc0b9528 100644
--- a/code/game/objects/items/dualsaber.dm
+++ b/code/game/objects/items/dualsaber.dm
@@ -17,7 +17,7 @@
 	w_class = WEIGHT_CLASS_SMALL
 	hitsound = SFX_SWING_HIT
 	armour_penetration = 35
-	light_system = MOVABLE_LIGHT
+	light_system = OVERLAY_LIGHT
 	light_range = 6 //TWICE AS BRIGHT AS A REGULAR ESWORD
 	light_color = LIGHT_COLOR_ELECTRIC_GREEN
 	light_on = FALSE
diff --git a/code/game/objects/items/flamethrower.dm b/code/game/objects/items/flamethrower.dm
index b7896c64381..1a31c5d58a2 100644
--- a/code/game/objects/items/flamethrower.dm
+++ b/code/game/objects/items/flamethrower.dm
@@ -15,7 +15,7 @@
 	custom_materials = list(/datum/material/iron= HALF_SHEET_MATERIAL_AMOUNT * 0.5)
 	resistance_flags = FIRE_PROOF
 	trigger_guard = TRIGGER_GUARD_NORMAL
-	light_system = MOVABLE_LIGHT
+	light_system = OVERLAY_LIGHT
 	light_on = FALSE
 	var/status = FALSE
 	var/lit = FALSE //on or off
diff --git a/code/game/objects/items/melee/energy.dm b/code/game/objects/items/melee/energy.dm
index 9882f515d0d..948a582651e 100644
--- a/code/game/objects/items/melee/energy.dm
+++ b/code/game/objects/items/melee/energy.dm
@@ -5,7 +5,7 @@
 	attack_verb_continuous = list("hits", "taps", "pokes")
 	attack_verb_simple = list("hit", "tap", "poke")
 	resistance_flags = FIRE_PROOF
-	light_system = MOVABLE_LIGHT
+	light_system = OVERLAY_LIGHT
 	light_range = 3
 	light_power = 1
 	light_on = FALSE
diff --git a/code/game/objects/items/stacks/golem_food/golem_status_effects.dm b/code/game/objects/items/stacks/golem_food/golem_status_effects.dm
index c89fae800b9..31600b03354 100644
--- a/code/game/objects/items/stacks/golem_food/golem_status_effects.dm
+++ b/code/game/objects/items/stacks/golem_food/golem_status_effects.dm
@@ -441,7 +441,7 @@
 	if (!.)
 		return
 	to_chat(owner, span_notice("You start to emit a healthy glow."))
-	owner.light_system = MOVABLE_LIGHT
+	owner.light_system = OVERLAY_LIGHT
 	lightbulb = owner.AddComponent(/datum/component/overlay_lighting, _range = glow_range, _power = glow_power, _color = glow_color)
 	owner.add_filter(LIGHTBULB_FILTER, 2, list("type" = "outline", "color" = glow_color, "alpha" = 60, "size" = 1))
 
diff --git a/code/game/objects/items/tools/weldingtool.dm b/code/game/objects/items/tools/weldingtool.dm
index b48106d0c1d..7995267954e 100644
--- a/code/game/objects/items/tools/weldingtool.dm
+++ b/code/game/objects/items/tools/weldingtool.dm
@@ -17,7 +17,7 @@
 	usesound = list('sound/items/welder.ogg', 'sound/items/welder2.ogg')
 	drop_sound = 'sound/items/handling/weldingtool_drop.ogg'
 	pickup_sound = 'sound/items/handling/weldingtool_pickup.ogg'
-	light_system = MOVABLE_LIGHT
+	light_system = OVERLAY_LIGHT
 	light_range = 2
 	light_power = 0.75
 	light_color = LIGHT_COLOR_FIRE
diff --git a/code/modules/antagonists/heretic/items/keyring.dm b/code/modules/antagonists/heretic/items/keyring.dm
index a6a53bc3cee..b71015dbfe1 100644
--- a/code/modules/antagonists/heretic/items/keyring.dm
+++ b/code/modules/antagonists/heretic/items/keyring.dm
@@ -3,7 +3,7 @@
 	desc = "A crack in space, impossibly deep and painful to the eyes. Definitely not safe."
 	icon = 'icons/effects/eldritch.dmi'
 	icon_state = "realitycrack"
-	light_system = STATIC_LIGHT
+	light_system = COMPLEX_LIGHT
 	light_power = 1
 	light_on = TRUE
 	light_color = COLOR_GREEN
diff --git a/code/modules/assembly/flash.dm b/code/modules/assembly/flash.dm
index a09185df3b5..5319d4465e2 100644
--- a/code/modules/assembly/flash.dm
+++ b/code/modules/assembly/flash.dm
@@ -11,7 +11,7 @@
 	throwforce = 0
 	w_class = WEIGHT_CLASS_TINY
 	custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT*3, /datum/material/glass = SMALL_MATERIAL_AMOUNT*3)
-	light_system = MOVABLE_LIGHT //Used as a flash here.
+	light_system = OVERLAY_LIGHT //Used as a flash here.
 	light_range = FLASH_LIGHT_RANGE
 	light_color = COLOR_WHITE
 	light_power = FLASH_LIGHT_POWER
diff --git a/code/modules/atmospherics/environmental/LINDA_fire.dm b/code/modules/atmospherics/environmental/LINDA_fire.dm
index 2e4e3aa0e5e..cd2628f23e3 100644
--- a/code/modules/atmospherics/environmental/LINDA_fire.dm
+++ b/code/modules/atmospherics/environmental/LINDA_fire.dm
@@ -78,7 +78,7 @@
 	layer = GASFIRE_LAYER
 	plane = ABOVE_GAME_PLANE
 	blend_mode = BLEND_ADD
-	light_system = MOVABLE_LIGHT
+	light_system = OVERLAY_LIGHT
 	light_range = LIGHT_RANGE_FIRE
 	light_power = 1
 	light_color = LIGHT_COLOR_FIRE
diff --git a/code/modules/clothing/head/cakehat.dm b/code/modules/clothing/head/cakehat.dm
index 4a05ff7116f..57369ac24f8 100644
--- a/code/modules/clothing/head/cakehat.dm
+++ b/code/modules/clothing/head/cakehat.dm
@@ -10,7 +10,7 @@
 	righthand_file = 'icons/mob/inhands/clothing/hats_righthand.dmi'
 	armor_type = /datum/armor/none
 	light_range = 2 //luminosity when on
-	light_system = MOVABLE_LIGHT
+	light_system = OVERLAY_LIGHT
 	flags_cover = HEADCOVERSEYES
 	heat = 999
 	wound_bonus = 10
diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm
index a05d3d670cf..131f9f10c03 100644
--- a/code/modules/clothing/head/hardhat.dm
+++ b/code/modules/clothing/head/hardhat.dm
@@ -13,7 +13,7 @@
 	clothing_flags = SNUG_FIT | STACKABLE_HELMET_EXEMPT
 	resistance_flags = FIRE_PROOF
 
-	light_system = MOVABLE_LIGHT_DIRECTIONAL
+	light_system = OVERLAY_LIGHT_DIRECTIONAL
 	light_range = 4
 	light_power = 0.8
 	light_on = FALSE
diff --git a/code/modules/clothing/shoes/kindlekicks.dm b/code/modules/clothing/shoes/kindlekicks.dm
index 82bcb806515..339ec9669af 100644
--- a/code/modules/clothing/shoes/kindlekicks.dm
+++ b/code/modules/clothing/shoes/kindlekicks.dm
@@ -4,7 +4,7 @@
 	icon_state = "kindleKicks"
 	inhand_icon_state = null
 	actions_types = list(/datum/action/item_action/kindle_kicks)
-	light_system = MOVABLE_LIGHT
+	light_system = OVERLAY_LIGHT
 	light_range = 2
 	light_power = 3
 	light_on = FALSE
diff --git a/code/modules/clothing/spacesuits/plasmamen.dm b/code/modules/clothing/spacesuits/plasmamen.dm
index 30e43c793aa..90141d281dd 100644
--- a/code/modules/clothing/spacesuits/plasmamen.dm
+++ b/code/modules/clothing/spacesuits/plasmamen.dm
@@ -52,7 +52,7 @@
 	tint = 2
 	armor_type = /datum/armor/space_plasmaman
 	resistance_flags = FIRE_PROOF
-	light_system = MOVABLE_LIGHT_DIRECTIONAL
+	light_system = OVERLAY_LIGHT_DIRECTIONAL
 	light_range = 4
 	light_on = FALSE
 	var/helmet_on = FALSE
diff --git a/code/modules/hydroponics/grown/ambrosia.dm b/code/modules/hydroponics/grown/ambrosia.dm
index a2afcdc729f..aa02ba7efa1 100644
--- a/code/modules/hydroponics/grown/ambrosia.dm
+++ b/code/modules/hydroponics/grown/ambrosia.dm
@@ -72,7 +72,7 @@
 	name = "ambrosia gaia branch"
 	desc = "Eating this <i>makes</i> you immortal."
 	icon_state = "ambrosia_gaia"
-	light_system = MOVABLE_LIGHT
+	light_system = OVERLAY_LIGHT
 	light_range = 3
 	seed = /obj/item/seeds/ambrosia/gaia
 	wine_power = 70
diff --git a/code/modules/hydroponics/plant_genes.dm b/code/modules/hydroponics/plant_genes.dm
index 98eef6b816e..2ce685d0b7c 100644
--- a/code/modules/hydroponics/plant_genes.dm
+++ b/code/modules/hydroponics/plant_genes.dm
@@ -368,7 +368,7 @@
 		return
 
 	var/obj/item/seeds/our_seed = our_plant.get_plant_seed()
-	our_plant.light_system = MOVABLE_LIGHT
+	our_plant.light_system = OVERLAY_LIGHT
 	our_plant.AddComponent(/datum/component/overlay_lighting, glow_range(our_seed), glow_power(our_seed), glow_color)
 
 /*
diff --git a/code/modules/lighting/lighting_atom.dm b/code/modules/lighting/lighting_atom.dm
index 5d82c33e23f..e3f72da5bbf 100644
--- a/code/modules/lighting/lighting_atom.dm
+++ b/code/modules/lighting/lighting_atom.dm
@@ -44,7 +44,7 @@
 /atom/proc/update_light()
 	SHOULD_NOT_SLEEP(TRUE)
 
-	if(light_system != STATIC_LIGHT)
+	if(light_system != COMPLEX_LIGHT)
 		CRASH("update_light() for [src] with following light_system value: [light_system]")
 
 	if (!light_power || !light_range || !light_on) // We won't emit light anyways, destroy the light source.
diff --git a/code/modules/lighting/lighting_source.dm b/code/modules/lighting/lighting_source.dm
index 90af6a855ce..1a32686aa19 100644
--- a/code/modules/lighting/lighting_source.dm
+++ b/code/modules/lighting/lighting_source.dm
@@ -80,7 +80,7 @@
 	if (needs_update)
 		SSlighting.sources_queue -= src
 		SSlighting.current_sources -= src
-		
+
 	top_atom = null
 	source_atom = null
 	source_turf = null
@@ -107,15 +107,6 @@
 		UnregisterSignal(old_atom_host, COMSIG_MOVABLE_MOVED)
 	return TRUE
 
-///signal handler for when our host atom moves and we need to update our effects
-/datum/light_source/proc/update_host_lights(atom/movable/host)
-	SIGNAL_HANDLER
-
-	if(QDELETED(host))
-		return
-
-	host.update_light()
-
 // Yes this doesn't align correctly on anything other than 4 width tabs.
 // If you want it to go switch everybody to elastic tab stops.
 // Actually that'd be great if you could!
@@ -127,6 +118,19 @@
 		needs_update = level;                 \
 	}
 
+///signal handler for when our host atom moves and we need to update our effects
+/datum/light_source/proc/update_host_lights(atom/movable/host)
+	SIGNAL_HANDLER
+	if(QDELETED(host))
+		return
+
+	// If the host is our owner, we want to call their update so they can decide who the top atom should be
+	if(host == source_atom)
+		host.update_light()
+		return
+
+	// Otherwise, our top atom just moved, so we trigger a normal rebuild
+	EFFECT_UPDATE(LIGHTING_CHECK_UPDATE)
 
 /// This proc will cause the light source to update the top atom, and add itself to the update queue.
 /datum/light_source/proc/update(atom/new_top_atom)
diff --git a/code/modules/mining/boulder_processing/refinery.dm b/code/modules/mining/boulder_processing/refinery.dm
index a6c6c2e7dfc..764816ec6d3 100644
--- a/code/modules/mining/boulder_processing/refinery.dm
+++ b/code/modules/mining/boulder_processing/refinery.dm
@@ -65,7 +65,7 @@
 		/datum/material/adamantine,
 		/datum/material/runite,
 	)
-	light_system = MOVABLE_LIGHT
+	light_system = OVERLAY_LIGHT
 	light_range = 1
 	light_power = 2
 	light_color = "#ffaf55"
diff --git a/code/modules/mining/equipment/kinetic_crusher.dm b/code/modules/mining/equipment/kinetic_crusher.dm
index add06da08a6..e1df98239e2 100644
--- a/code/modules/mining/equipment/kinetic_crusher.dm
+++ b/code/modules/mining/equipment/kinetic_crusher.dm
@@ -21,7 +21,7 @@
 	sharpness = SHARP_EDGED
 	actions_types = list(/datum/action/item_action/toggle_light)
 	obj_flags = UNIQUE_RENAME
-	light_system = MOVABLE_LIGHT
+	light_system = OVERLAY_LIGHT
 	light_range = 5
 	light_on = FALSE
 	var/list/trophies = list()
diff --git a/code/modules/mining/lavaland/tendril_loot.dm b/code/modules/mining/lavaland/tendril_loot.dm
index c84ea668630..1001dd9c897 100644
--- a/code/modules/mining/lavaland/tendril_loot.dm
+++ b/code/modules/mining/lavaland/tendril_loot.dm
@@ -271,7 +271,7 @@
 	desc = "Happy to light your way."
 	icon = 'icons/obj/lighting.dmi'
 	icon_state = "orb"
-	light_system = MOVABLE_LIGHT
+	light_system = OVERLAY_LIGHT
 	light_range = 7
 	light_flags = LIGHT_ATTACHED
 	layer = ABOVE_ALL_MOB_LAYER
diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm
index dc889b38d2d..3fdd830f1b8 100644
--- a/code/modules/mob/dead/observer/observer.dm
+++ b/code/modules/mob/dead/observer/observer.dm
@@ -16,7 +16,7 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER)
 	invisibility = INVISIBILITY_OBSERVER
 	hud_type = /datum/hud/ghost
 	movement_type = GROUND | FLYING
-	light_system = MOVABLE_LIGHT
+	light_system = OVERLAY_LIGHT
 	light_range = 1
 	light_power = 2
 	light_on = FALSE
diff --git a/code/modules/mob/living/basic/bots/_bots.dm b/code/modules/mob/living/basic/bots/_bots.dm
index 8462f4afc35..56fdc4fc938 100644
--- a/code/modules/mob/living/basic/bots/_bots.dm
+++ b/code/modules/mob/living/basic/bots/_bots.dm
@@ -35,7 +35,7 @@ GLOBAL_LIST_INIT(command_strings, list(
 	bubble_icon = "machine"
 	speech_span = SPAN_ROBOT
 	faction = list(FACTION_NEUTRAL, FACTION_SILICON, FACTION_TURRET)
-	light_system = MOVABLE_LIGHT
+	light_system = OVERLAY_LIGHT
 	light_range = 3
 	light_power = 0.9
 	speed = 3
diff --git a/code/modules/mob/living/basic/guardian/guardian.dm b/code/modules/mob/living/basic/guardian/guardian.dm
index 9d79373ccd4..b338a5a4435 100644
--- a/code/modules/mob/living/basic/guardian/guardian.dm
+++ b/code/modules/mob/living/basic/guardian/guardian.dm
@@ -39,7 +39,7 @@
 	melee_damage_lower = 15
 	melee_damage_upper = 15
 	melee_attack_cooldown = CLICK_CD_MELEE
-	light_system = MOVABLE_LIGHT
+	light_system = OVERLAY_LIGHT
 	light_range = 3
 	light_on = FALSE
 
diff --git a/code/modules/mob/living/basic/minebots/minebot.dm b/code/modules/mob/living/basic/minebots/minebot.dm
index f9a22f955f1..5422ab4ee2e 100644
--- a/code/modules/mob/living/basic/minebots/minebot.dm
+++ b/code/modules/mob/living/basic/minebots/minebot.dm
@@ -23,7 +23,7 @@
 	speak_emote = list("states")
 	mob_biotypes = MOB_ROBOTIC
 	death_message = "blows apart!"
-	light_system = MOVABLE_LIGHT
+	light_system = OVERLAY_LIGHT
 	light_range = 6
 	light_on = FALSE
 	combat_mode = FALSE
diff --git a/code/modules/mob/living/basic/space_fauna/ghost.dm b/code/modules/mob/living/basic/space_fauna/ghost.dm
index 981357d1a13..406d2ecefdd 100644
--- a/code/modules/mob/living/basic/space_fauna/ghost.dm
+++ b/code/modules/mob/living/basic/space_fauna/ghost.dm
@@ -22,7 +22,7 @@
 	attack_sound = 'sound/hallucinations/growl1.ogg'
 	death_message = "wails, disintegrating into a pile of ectoplasm!"
 	gold_core_spawnable = NO_SPAWN //too spooky for science
-	light_system = MOVABLE_LIGHT
+	light_system = OVERLAY_LIGHT
 	light_range = 1 // same glowing as visible player ghosts
 	light_power = 2
 	ai_controller = /datum/ai_controller/basic_controller/ghost
diff --git a/code/modules/mob/living/silicon/robot/robot_defines.dm b/code/modules/mob/living/silicon/robot/robot_defines.dm
index d87532f9a6c..8cc1b0d22f1 100644
--- a/code/modules/mob/living/silicon/robot/robot_defines.dm
+++ b/code/modules/mob/living/silicon/robot/robot_defines.dm
@@ -23,7 +23,7 @@
 	radio = /obj/item/radio/borg
 
 	blocks_emissive = EMISSIVE_BLOCK_UNIQUE
-	light_system = MOVABLE_LIGHT_DIRECTIONAL
+	light_system = OVERLAY_LIGHT_DIRECTIONAL
 	light_on = FALSE
 
 
diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm
index 22c7439ec80..ff304332c8d 100644
--- a/code/modules/mob/living/simple_animal/bot/bot.dm
+++ b/code/modules/mob/living/simple_animal/bot/bot.dm
@@ -23,7 +23,7 @@
 	bubble_icon = "machine"
 	speech_span = SPAN_ROBOT
 	faction = list(FACTION_NEUTRAL, FACTION_SILICON, FACTION_TURRET)
-	light_system = MOVABLE_LIGHT
+	light_system = OVERLAY_LIGHT
 	light_range = 3
 	light_power = 0.9
 	del_on_death = TRUE
diff --git a/code/modules/mob/living/simple_animal/bot/vibebot.dm b/code/modules/mob/living/simple_animal/bot/vibebot.dm
index 5a876bd8eca..d0d550f7737 100644
--- a/code/modules/mob/living/simple_animal/bot/vibebot.dm
+++ b/code/modules/mob/living/simple_animal/bot/vibebot.dm
@@ -9,7 +9,7 @@
 	health = 25
 	maxHealth = 25
 	pass_flags = PASSMOB | PASSFLAPS
-	light_system = MOVABLE_LIGHT
+	light_system = OVERLAY_LIGHT
 	light_range = 7
 	light_power = 3
 
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
index e256e4f2921..9253448563b 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
@@ -165,7 +165,7 @@
 	icon_state = "at_shield2"
 	layer = FLY_LAYER
 	plane = ABOVE_GAME_PLANE
-	light_system = MOVABLE_LIGHT
+	light_system = OVERLAY_LIGHT
 	light_range = 2
 	duration = 8
 	var/target
diff --git a/code/modules/mod/mod_construction.dm b/code/modules/mod/mod_construction.dm
index fdbcf47d379..8442783d331 100644
--- a/code/modules/mod/mod_construction.dm
+++ b/code/modules/mod/mod_construction.dm
@@ -58,7 +58,7 @@
 	icon_state = "plasma-flower"
 	desc = "A strange flower from the desolate wastes of lavaland. It pulses with a bright purple glow.  \
 		Its shape is remarkably similar to that of a MOD core."
-	light_system = MOVABLE_LIGHT
+	light_system = OVERLAY_LIGHT
 	light_color = "#cc00cc"
 	light_range = 2
 
diff --git a/code/modules/mod/mod_core.dm b/code/modules/mod/mod_core.dm
index d5c43497982..75a5b2385b7 100644
--- a/code/modules/mod/mod_core.dm
+++ b/code/modules/mod/mod_core.dm
@@ -367,7 +367,7 @@
 	icon_state = "mod-core-plasma-flower"
 	desc = "A strange flower from the desolate wastes of lavaland. It pulses with a strange purple glow.  \
 		The wires coming out of it could be hooked into a MODsuit."
-	light_system = MOVABLE_LIGHT
+	light_system = OVERLAY_LIGHT
 	light_color = "#cc00cc"
 	light_range = 2
 	// Slightly better than the normal plasma core.
diff --git a/code/modules/mod/modules/modules_general.dm b/code/modules/mod/modules/modules_general.dm
index 354d5564b10..9962bc8b9a4 100644
--- a/code/modules/mod/modules/modules_general.dm
+++ b/code/modules/mod/modules/modules_general.dm
@@ -365,7 +365,7 @@
 	incompatible_modules = list(/obj/item/mod/module/flashlight)
 	cooldown_time = 0.5 SECONDS
 	overlay_state_inactive = "module_light"
-	light_system = MOVABLE_LIGHT_DIRECTIONAL
+	light_system = OVERLAY_LIGHT_DIRECTIONAL
 	light_color = COLOR_WHITE
 	light_range = 4
 	light_power = 1
diff --git a/code/modules/mod/modules/modules_supply.dm b/code/modules/mod/modules/modules_supply.dm
index 1240a7adff3..80a662aba60 100644
--- a/code/modules/mod/modules/modules_supply.dm
+++ b/code/modules/mod/modules/modules_supply.dm
@@ -568,7 +568,7 @@
 	range = 6
 	suppressed = SUPPRESSED_VERY
 	armor_flag = BOMB
-	light_system = MOVABLE_LIGHT
+	light_system = OVERLAY_LIGHT
 	light_range = 1
 	light_power = 1
 	light_color = COLOR_LIGHT_ORANGE
@@ -590,7 +590,7 @@
 	icon = 'icons/obj/clothing/modsuit/mod_modules.dmi'
 	anchored = TRUE
 	resistance_flags = FIRE_PROOF|LAVA_PROOF
-	light_system = MOVABLE_LIGHT
+	light_system = OVERLAY_LIGHT
 	light_range = 1
 	light_power = 1
 	light_color = COLOR_LIGHT_ORANGE
diff --git a/code/modules/modular_computers/computers/item/computer.dm b/code/modules/modular_computers/computers/item/computer.dm
index 8d0883fe47d..7994f6b4df3 100644
--- a/code/modules/modular_computers/computers/item/computer.dm
+++ b/code/modules/modular_computers/computers/item/computer.dm
@@ -10,7 +10,7 @@
 	integrity_failure = 0.5
 	max_integrity = 100
 	armor_type = /datum/armor/item_modular_computer
-	light_system = MOVABLE_LIGHT_DIRECTIONAL
+	light_system = OVERLAY_LIGHT_DIRECTIONAL
 
 	///The ID currently stored in the computer.
 	var/obj/item/card/id/computer_id_slot
diff --git a/code/modules/pai/pai.dm b/code/modules/pai/pai.dm
index 494c39eb33f..0ead2e9fd2c 100644
--- a/code/modules/pai/pai.dm
+++ b/code/modules/pai/pai.dm
@@ -16,7 +16,7 @@
 	light_flags = LIGHT_ATTACHED
 	light_on = FALSE
 	light_range = 3
-	light_system = MOVABLE_LIGHT
+	light_system = OVERLAY_LIGHT
 	maxHealth = 500
 	mob_size = MOB_SIZE_TINY
 	mobility_flags = MOBILITY_FLAGS_REST_CAPABLE_DEFAULT
diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm
index 5ee432b365e..10a15e88196 100644
--- a/code/modules/paperwork/pen.dm
+++ b/code/modules/paperwork/pen.dm
@@ -325,7 +325,7 @@
 	armour_penetration = 20
 	bare_wound_bonus = 10
 	item_flags = NO_BLOOD_ON_ITEM
-	light_system = MOVABLE_LIGHT
+	light_system = OVERLAY_LIGHT
 	light_range = 1.5
 	light_power = 0.75
 	light_color = COLOR_SOFT_RED
diff --git a/code/modules/photography/camera/camera.dm b/code/modules/photography/camera/camera.dm
index dae12f33bd4..3f721c1cefc 100644
--- a/code/modules/photography/camera/camera.dm
+++ b/code/modules/photography/camera/camera.dm
@@ -10,7 +10,7 @@
 	worn_icon_state = "camera"
 	lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi'
 	righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi'
-	light_system = MOVABLE_LIGHT //Used as a flash here.
+	light_system = OVERLAY_LIGHT //Used as a flash here.
 	light_range = 8
 	light_color = COLOR_WHITE
 	light_power = FLASH_LIGHT_POWER
diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm
index 2a7095af0f2..f3791f174f6 100644
--- a/code/modules/projectiles/projectile/beams.dm
+++ b/code/modules/projectiles/projectile/beams.dm
@@ -9,7 +9,7 @@
 	armor_flag = LASER
 	eyeblur = 4 SECONDS
 	impact_effect_type = /obj/effect/temp_visual/impact_effect/red_laser
-	light_system = MOVABLE_LIGHT
+	light_system = OVERLAY_LIGHT
 	light_range = 1
 	light_power = 1
 	light_color = COLOR_SOFT_RED
diff --git a/code/modules/research/ordnance/doppler_array.dm b/code/modules/research/ordnance/doppler_array.dm
index a109e5061df..32495e93020 100644
--- a/code/modules/research/ordnance/doppler_array.dm
+++ b/code/modules/research/ordnance/doppler_array.dm
@@ -18,7 +18,7 @@
 	var/obj/item/computer_disk/inserted_disk
 
 	// Lighting system to better communicate the directions.
-	light_system = MOVABLE_LIGHT_DIRECTIONAL
+	light_system = OVERLAY_LIGHT_DIRECTIONAL
 	light_range = 4
 	light_power = 1
 	light_color = COLOR_RED
diff --git a/code/modules/surgery/tools.dm b/code/modules/surgery/tools.dm
index 571e8c422d9..fee7f389dca 100644
--- a/code/modules/surgery/tools.dm
+++ b/code/modules/surgery/tools.dm
@@ -93,7 +93,7 @@
 	hitsound = 'sound/items/welder.ogg'
 	w_class = WEIGHT_CLASS_NORMAL
 	toolspeed = 0.7
-	light_system = MOVABLE_LIGHT
+	light_system = OVERLAY_LIGHT
 	light_range = 1
 	light_color = COLOR_SOFT_RED
 
@@ -378,7 +378,7 @@
 	force = 16
 	w_class = WEIGHT_CLASS_NORMAL
 	toolspeed = 0.7
-	light_system = MOVABLE_LIGHT
+	light_system = OVERLAY_LIGHT
 	light_range = 1
 	light_color = LIGHT_COLOR_BLUE
 	sharpness = SHARP_EDGED
diff --git a/code/modules/vehicles/cars/clowncar.dm b/code/modules/vehicles/cars/clowncar.dm
index d5a3d7bdc7d..032a054a77c 100644
--- a/code/modules/vehicles/cars/clowncar.dm
+++ b/code/modules/vehicles/cars/clowncar.dm
@@ -9,7 +9,7 @@
 	movedelay = 0.6
 	car_traits = CAN_KIDNAP
 	key_type = /obj/item/bikehorn
-	light_system = MOVABLE_LIGHT_DIRECTIONAL
+	light_system = OVERLAY_LIGHT_DIRECTIONAL
 	light_range = 8
 	light_power = 2
 	light_on = FALSE
diff --git a/code/modules/vehicles/cars/vim.dm b/code/modules/vehicles/cars/vim.dm
index a37c6e18b8e..53eee5105a9 100644
--- a/code/modules/vehicles/cars/vim.dm
+++ b/code/modules/vehicles/cars/vim.dm
@@ -13,7 +13,7 @@
 	enter_delay = 20
 	movedelay = 0.6
 	engine_sound_length = 0.3 SECONDS
-	light_system = MOVABLE_LIGHT_DIRECTIONAL
+	light_system = OVERLAY_LIGHT_DIRECTIONAL
 	light_range = 4
 	light_power = 2
 	light_on = FALSE
diff --git a/code/modules/vehicles/mecha/_mecha.dm b/code/modules/vehicles/mecha/_mecha.dm
index dc7304a1388..05b3470358f 100644
--- a/code/modules/vehicles/mecha/_mecha.dm
+++ b/code/modules/vehicles/mecha/_mecha.dm
@@ -29,7 +29,7 @@
 	move_force = MOVE_FORCE_VERY_STRONG
 	move_resist = MOVE_FORCE_EXTREMELY_STRONG
 	COOLDOWN_DECLARE(mecha_bump_smash)
-	light_system = MOVABLE_LIGHT_DIRECTIONAL
+	light_system = OVERLAY_LIGHT_DIRECTIONAL
 	light_on = FALSE
 	light_range = 8
 	generic_canpass = FALSE
diff --git a/code/modules/vehicles/mecha/combat/durand.dm b/code/modules/vehicles/mecha/combat/durand.dm
index f1c7bac4f81..35b53c30ccf 100644
--- a/code/modules/vehicles/mecha/combat/durand.dm
+++ b/code/modules/vehicles/mecha/combat/durand.dm
@@ -164,7 +164,7 @@ own integrity back to max. Shield is automatically dropped if we run out of powe
 	pixel_y = 4
 	max_integrity = 10000
 	anchored = TRUE
-	light_system = MOVABLE_LIGHT
+	light_system = OVERLAY_LIGHT
 	light_range = MINIMUM_USEFUL_LIGHT_RANGE
 	light_power = 5
 	light_color = LIGHT_COLOR_ELECTRIC_CYAN
diff --git a/code/modules/wiremod/shell/bot.dm b/code/modules/wiremod/shell/bot.dm
index dfd9845bc05..533c654e787 100644
--- a/code/modules/wiremod/shell/bot.dm
+++ b/code/modules/wiremod/shell/bot.dm
@@ -9,7 +9,7 @@
 	icon_state = "setup_medium_box"
 
 	density = FALSE
-	light_system = MOVABLE_LIGHT
+	light_system = OVERLAY_LIGHT
 	light_on = FALSE
 
 /obj/structure/bot/Initialize(mapload)
diff --git a/code/modules/wiremod/shell/compact_remote.dm b/code/modules/wiremod/shell/compact_remote.dm
index 38fdfccf951..3336be06ddb 100644
--- a/code/modules/wiremod/shell/compact_remote.dm
+++ b/code/modules/wiremod/shell/compact_remote.dm
@@ -11,7 +11,7 @@
 	worn_icon_state = "electronic"
 	lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi'
 	righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi'
-	light_system = MOVABLE_LIGHT_DIRECTIONAL
+	light_system = OVERLAY_LIGHT_DIRECTIONAL
 	light_on = FALSE
 
 /obj/item/compact_remote/Initialize(mapload)
diff --git a/code/modules/wiremod/shell/controller.dm b/code/modules/wiremod/shell/controller.dm
index 3092d3315f1..ad03867b89b 100644
--- a/code/modules/wiremod/shell/controller.dm
+++ b/code/modules/wiremod/shell/controller.dm
@@ -12,7 +12,7 @@
 	worn_icon_state = "electronic"
 	lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi'
 	righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi'
-	light_system = MOVABLE_LIGHT_DIRECTIONAL
+	light_system = OVERLAY_LIGHT_DIRECTIONAL
 	light_on = FALSE
 
 /obj/item/controller/Initialize(mapload)
diff --git a/code/modules/wiremod/shell/dispenser.dm b/code/modules/wiremod/shell/dispenser.dm
index 5fa2d2b1a8e..4ea2d03c9d7 100644
--- a/code/modules/wiremod/shell/dispenser.dm
+++ b/code/modules/wiremod/shell/dispenser.dm
@@ -9,7 +9,7 @@
 	icon_state = "setup_drone_arms"
 
 	density = FALSE
-	light_system = MOVABLE_LIGHT
+	light_system = OVERLAY_LIGHT
 	light_on = FALSE
 
 	var/max_weight = WEIGHT_CLASS_NORMAL
diff --git a/code/modules/wiremod/shell/drone.dm b/code/modules/wiremod/shell/drone.dm
index 6f7afcfea04..96fe3b2fa0a 100644
--- a/code/modules/wiremod/shell/drone.dm
+++ b/code/modules/wiremod/shell/drone.dm
@@ -10,7 +10,7 @@
 	maxHealth = 300
 	health = 300
 	living_flags = 0
-	light_system = MOVABLE_LIGHT_DIRECTIONAL
+	light_system = OVERLAY_LIGHT_DIRECTIONAL
 	light_on = FALSE
 
 /mob/living/circuit_drone/Initialize(mapload)
diff --git a/code/modules/wiremod/shell/gun.dm b/code/modules/wiremod/shell/gun.dm
index e9176d8c6ca..3a37501e8e1 100644
--- a/code/modules/wiremod/shell/gun.dm
+++ b/code/modules/wiremod/shell/gun.dm
@@ -11,7 +11,7 @@
 	ammo_type = list(/obj/item/ammo_casing/energy/wiremod_gun)
 	cell_type = /obj/item/stock_parts/cell/emproof/wiremod_gun
 	item_flags = NONE
-	light_system = MOVABLE_LIGHT_DIRECTIONAL
+	light_system = OVERLAY_LIGHT_DIRECTIONAL
 	light_on = FALSE
 	automatic_charge_overlays = FALSE
 	trigger_guard = TRIGGER_GUARD_ALLOW_ALL
diff --git a/code/modules/wiremod/shell/keyboard.dm b/code/modules/wiremod/shell/keyboard.dm
index 05b9ded074b..0b28959aa9c 100644
--- a/code/modules/wiremod/shell/keyboard.dm
+++ b/code/modules/wiremod/shell/keyboard.dm
@@ -6,7 +6,7 @@
 	worn_icon_state = "electronic"
 	lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi'
 	righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi'
-	light_system = MOVABLE_LIGHT_DIRECTIONAL
+	light_system = OVERLAY_LIGHT_DIRECTIONAL
 	light_on = FALSE
 
 /obj/item/keyboard_shell/Initialize(mapload)
diff --git a/code/modules/wiremod/shell/moneybot.dm b/code/modules/wiremod/shell/moneybot.dm
index 20eb596eb72..cacb457149d 100644
--- a/code/modules/wiremod/shell/moneybot.dm
+++ b/code/modules/wiremod/shell/moneybot.dm
@@ -9,7 +9,7 @@
 	icon_state = "setup_large"
 
 	density = FALSE
-	light_system = MOVABLE_LIGHT
+	light_system = OVERLAY_LIGHT
 	light_on = FALSE
 
 	var/stored_money = 0
diff --git a/code/modules/wiremod/shell/scanner.dm b/code/modules/wiremod/shell/scanner.dm
index 3012fe65e49..c88d7b1fb5f 100644
--- a/code/modules/wiremod/shell/scanner.dm
+++ b/code/modules/wiremod/shell/scanner.dm
@@ -11,7 +11,7 @@
 	worn_icon_state = "electronic"
 	lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi'
 	righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi'
-	light_system = MOVABLE_LIGHT_DIRECTIONAL
+	light_system = OVERLAY_LIGHT_DIRECTIONAL
 	light_on = FALSE
 
 /obj/item/wiremod_scanner/Initialize(mapload)
diff --git a/code/modules/wiremod/shell/server.dm b/code/modules/wiremod/shell/server.dm
index fc71bfaa265..24501797197 100644
--- a/code/modules/wiremod/shell/server.dm
+++ b/code/modules/wiremod/shell/server.dm
@@ -10,7 +10,7 @@
 	icon_state = "setup_stationary"
 
 	density = TRUE
-	light_system = MOVABLE_LIGHT
+	light_system = OVERLAY_LIGHT
 	light_on = FALSE
 
 /obj/structure/server/Initialize(mapload)
diff --git a/modular_nova/master_files/code/modules/mob/living/simple_animal/friendly/dogs.dm b/modular_nova/master_files/code/modules/mob/living/simple_animal/friendly/dogs.dm
index d038df1c606..8b8dd90641b 100644
--- a/modular_nova/master_files/code/modules/mob/living/simple_animal/friendly/dogs.dm
+++ b/modular_nova/master_files/code/modules/mob/living/simple_animal/friendly/dogs.dm
@@ -87,7 +87,7 @@
 	can_breed = FALSE
 
 	// These lights enable when E-N is emagged
-	light_system = MOVABLE_LIGHT_DIRECTIONAL
+	light_system = OVERLAY_LIGHT_DIRECTIONAL
 	light_color = COLOR_RED
 	light_range = 2
 	light_power = 0.8
diff --git a/modular_nova/master_files/code/modules/mob/living/simple_animal/friendly/poppy.dm b/modular_nova/master_files/code/modules/mob/living/simple_animal/friendly/poppy.dm
index b210d39c1e8..ae65a4d382a 100644
--- a/modular_nova/master_files/code/modules/mob/living/simple_animal/friendly/poppy.dm
+++ b/modular_nova/master_files/code/modules/mob/living/simple_animal/friendly/poppy.dm
@@ -34,7 +34,7 @@
 	mob_size = MOB_SIZE_TINY
 	mob_biotypes = MOB_ORGANIC|MOB_BEAST
 	gold_core_spawnable = NO_SPAWN
-	light_system = MOVABLE_LIGHT_DIRECTIONAL
+	light_system = OVERLAY_LIGHT_DIRECTIONAL
 	light_color = LIGHT_COLOR_BRIGHT_YELLOW
 	light_range = 2
 	light_power = 0.8
diff --git a/modular_nova/modules/energy_axe/code/energy_fireaxe.dm b/modular_nova/modules/energy_axe/code/energy_fireaxe.dm
index 7dffbc0b2c4..f3368325c2c 100644
--- a/modular_nova/modules/energy_axe/code/energy_fireaxe.dm
+++ b/modular_nova/modules/energy_axe/code/energy_fireaxe.dm
@@ -12,7 +12,7 @@
 	desc = "You aren't quite sure if this counts as a fire axe anymore, but it sure is fancy! A tag hangs off of it reading: \"property of the Gorlex Marauders\""
 	force = 5
 	throwforce = 15
-	light_system = MOVABLE_LIGHT
+	light_system = OVERLAY_LIGHT
 	light_range = 6
 	light_color = COLOR_SOFT_RED
 	light_on = FALSE
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/shibari.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/shibari.dm
index 6bfd4aec7f4..d87c9549ef2 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_items/shibari.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_items/shibari.dm
@@ -41,7 +41,7 @@
 	singular_name = "glowy rope"
 	merge_type = /obj/item/stack/shibari_rope/glow
 	icon_state = "shibari_rope_glow"
-	light_system = MOVABLE_LIGHT
+	light_system = OVERLAY_LIGHT
 	light_range = 1
 	light_on = TRUE
 	light_power = 3
diff --git a/modular_nova/modules/modular_items/lewd_items/code/lewd_structures/dancing_pole.dm b/modular_nova/modules/modular_items/lewd_items/code/lewd_structures/dancing_pole.dm
index b382591571f..4db2e59aea9 100644
--- a/modular_nova/modules/modular_items/lewd_items/code/lewd_structures/dancing_pole.dm
+++ b/modular_nova/modules/modular_items/lewd_items/code/lewd_structures/dancing_pole.dm
@@ -10,7 +10,7 @@
 	layer = BELOW_MOB_LAYER
 	pseudo_z_axis = 9 //stepping onto the pole makes you raise upwards!
 	density = 0 //easy to step up on
-	light_system = STATIC_LIGHT
+	light_system = COMPLEX_LIGHT
 	light_range = 3
 	light_power = 1
 	light_color = COLOR_LIGHT_PINK
diff --git a/modular_nova/modules/modular_weapons/code/ballistic_master.dm b/modular_nova/modules/modular_weapons/code/ballistic_master.dm
index fbb4ab76f56..0ede4607288 100644
--- a/modular_nova/modules/modular_weapons/code/ballistic_master.dm
+++ b/modular_nova/modules/modular_weapons/code/ballistic_master.dm
@@ -28,7 +28,7 @@
 	to_chat(user, span_notice("You load [num_loaded] [cartridge_wording]\s into [src][box_load ?  ", but it takes some extra effort" : ""]."))
 
 /obj/effect/temp_visual/dir_setting/firing_effect
-	light_system = MOVABLE_LIGHT
+	light_system = OVERLAY_LIGHT
 	light_range = 2
 	light_power = 1
 	light_color = LIGHT_COLOR_FIRE
diff --git a/modular_nova/modules/mold/code/mold_mobs.dm b/modular_nova/modules/mold/code/mold_mobs.dm
index 0c9f401aeb8..bd8f24794c9 100644
--- a/modular_nova/modules/mold/code/mold_mobs.dm
+++ b/modular_nova/modules/mold/code/mold_mobs.dm
@@ -48,7 +48,7 @@
 	gold_core_spawnable = HOSTILE_SPAWN
 	death_message = "evaporates!"
 
-	light_system = MOVABLE_LIGHT
+	light_system = OVERLAY_LIGHT
 	light_color = LIGHT_COLOR_FIRE
 	light_range = 2
 	light_power = 1
@@ -252,7 +252,7 @@
 	obj_damage = 40
 	attack_sound = 'sound/effects/wounds/crackandbleed.ogg'
 
-	light_system = MOVABLE_LIGHT
+	light_system = OVERLAY_LIGHT
 	light_range = 2
 	light_power = 1
 	light_color = LIGHT_COLOR_GREEN