diff --git a/baystation12.dme b/baystation12.dme
index 85c0b6fed13..5be875477e1 100644
--- a/baystation12.dme
+++ b/baystation12.dme
@@ -21,6 +21,7 @@
#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"
diff --git a/code/__HELPERS/loc.dm b/code/__HELPERS/loc.dm
new file mode 100644
index 00000000000..91be708854d
--- /dev/null
+++ b/code/__HELPERS/loc.dm
@@ -0,0 +1,7 @@
+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/game/atoms_movable.dm b/code/game/atoms_movable.dm
index 1326e65e5eb..2fe49744f17 100644
--- a/code/game/atoms_movable.dm
+++ b/code/game/atoms_movable.dm
@@ -39,7 +39,7 @@
if(destination)
if(loc)
loc.Exited(src)
- loc = destination
+ setloc(destination)
loc.Entered(src)
return 1
return 0
diff --git a/code/game/dna/dna_modifier.dm b/code/game/dna/dna_modifier.dm
index eadbfb06e14..6aea809d4ad 100644
--- a/code/game/dna/dna_modifier.dm
+++ b/code/game/dna/dna_modifier.dm
@@ -87,10 +87,10 @@
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/weapon/cable_coil)))
- O.loc = get_turf(src)//Ejects items that manage to get in there (exluding the components)
+ O.setloc(get_turf(src))//Ejects items that manage to get in there (exluding the components)
if(!occupant)
for(var/mob/M in src)//Failsafe so you can get mobs out
- M.loc = get_turf(src)
+ M.setloc(get_turf(src))
/obj/machinery/dna_scannernew/verb/move_inside()
set src in oview(1)
@@ -111,7 +111,7 @@
usr.stop_pulling()
usr.client.perspective = EYE_PERSPECTIVE
usr.client.eye = src
- usr.loc = src
+ usr.setloc(src)
src.occupant = usr
src.icon_state = "scanner_1"
src.add_fingerprint(usr)
@@ -125,7 +125,7 @@
beaker = item
user.drop_item()
- item.loc = src
+ item.setloc(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))
@@ -148,7 +148,7 @@
if(M.client)
M.client.perspective = EYE_PERSPECTIVE
M.client.eye = src
- M.loc = src
+ M.setloc(src)
src.occupant = M
src.icon_state = "scanner_1"
@@ -171,7 +171,7 @@
if (src.occupant.client)
src.occupant.client.eye = src.occupant.client.mob
src.occupant.client.perspective = MOB_PERSPECTIVE
- src.occupant.loc = src.loc
+ src.occupant.setloc(src.loc)
src.occupant = null
src.icon_state = "scanner_0"
return
@@ -180,7 +180,7 @@
switch(severity)
if(1.0)
for(var/atom/movable/A as mob|obj in src)
- A.loc = src.loc
+ A.setloc(src.loc)
ex_act(severity)
//Foreach goto(35)
//SN src = null
@@ -189,7 +189,7 @@
if(2.0)
if (prob(50))
for(var/atom/movable/A as mob|obj in src)
- A.loc = src.loc
+ A.setloc(src.loc)
ex_act(severity)
//Foreach goto(108)
//SN src = null
@@ -198,7 +198,7 @@
if(3.0)
if (prob(25))
for(var/atom/movable/A as mob|obj in src)
- A.loc = src.loc
+ A.setloc(src.loc)
ex_act(severity)
//Foreach goto(181)
//SN src = null
@@ -211,7 +211,7 @@
/obj/machinery/dna_scannernew/blob_act()
if(prob(75))
for(var/atom/movable/A as mob|obj in src)
- A.loc = src.loc
+ A.setloc(src.loc)
del(src)
/obj/machinery/computer/scan_consolenew
@@ -454,15 +454,15 @@
if (connected.beaker.reagents && connected.beaker.reagents.reagent_list.len)
for(var/datum/reagent/R in connected.beaker.reagents.reagent_list)
data["beakerVolume"] += R.volume
-
+
// 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, "dna_modifier.tmpl", "DNA Modifier Console", 660, 700)
// 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
diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm
index 7eb8fa096e9..5df229c39c3 100644
--- a/code/game/machinery/Sleeper.dm
+++ b/code/game/machinery/Sleeper.dm
@@ -190,7 +190,7 @@
blob_act()
if(prob(75))
for(var/atom/movable/A as mob|obj in src)
- A.loc = src.loc
+ A.setloc(src.loc)
A.blob_act()
del(src)
return
@@ -200,7 +200,7 @@
if(!beaker)
beaker = G
user.drop_item()
- G.loc = src
+ G.setloc(src)
user.visible_message("[user] adds \a [G] to \the [src]!", "You add \a [G] to \the [src]!")
src.updateUsrDialog()
return
@@ -232,7 +232,7 @@
if(M.client)
M.client.perspective = EYE_PERSPECTIVE
M.client.eye = src
- M.loc = src
+ M.setloc(src)
src.occupant = M
src.icon_state = "sleeper_1"
if(orient == "RIGHT")
@@ -252,21 +252,21 @@
switch(severity)
if(1.0)
for(var/atom/movable/A as mob|obj in src)
- A.loc = src.loc
+ A.setloc(src.loc)
ex_act(severity)
del(src)
return
if(2.0)
if(prob(50))
for(var/atom/movable/A as mob|obj in src)
- A.loc = src.loc
+ A.setloc(src.loc)
ex_act(severity)
del(src)
return
if(3.0)
if(prob(25))
for(var/atom/movable/A as mob|obj in src)
- A.loc = src.loc
+ A.setloc(src.loc)
ex_act(severity)
del(src)
return
@@ -312,7 +312,7 @@
if(src.occupant.client)
src.occupant.client.eye = src.occupant.client.mob
src.occupant.client.perspective = MOB_PERSPECTIVE
- src.occupant.loc = src.loc
+ src.occupant.setloc(src.loc)
src.occupant = null
if(orient == "RIGHT")
icon_state = "sleeper_0-r"
@@ -408,7 +408,7 @@
usr.stop_pulling()
usr.client.perspective = EYE_PERSPECTIVE
usr.client.eye = src
- usr.loc = src
+ usr.setloc(src)
src.occupant = usr
src.icon_state = "sleeper_1"
if(orient == "RIGHT")
diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm
index b7d6ad8ef76..1a69c36c6d5 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.loc = src
+ usr.setloc(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.loc = src.loc
+ O.setloc(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.loc = src.loc
+ src.occupant.setloc(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.loc = src
+ M.setloc(src)
src.occupant = M
src.icon_state = "body_scanner_1"
for(var/obj/O in src)
- O.loc = src.loc
+ O.setloc(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.loc = src.loc
+ A.setloc(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.loc = src.loc
+ A.setloc(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.loc = src.loc
+ A.setloc(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.loc = src.loc
+ A.setloc(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 b909404a1c9..d98ccc9da02 100644
--- a/code/game/machinery/cryo.dm
+++ b/code/game/machinery/cryo.dm
@@ -121,13 +121,13 @@
data["beakerVolume"] += R.volume
// 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, "cryo.tmpl", "Cryo Cell Control System", 520, 410)
// 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
@@ -251,7 +251,7 @@
if (occupant.client)
occupant.client.eye = occupant.client.mob
occupant.client.perspective = MOB_PERSPECTIVE
- occupant.loc = get_step(loc, SOUTH) //this doesn't account for walls or anything, but i don't forsee that being a problem.
+ occupant.setloc(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 // Changed to 70 from 140 by Zuhayr due to reoccurance of bug.
// occupant.metabslow = 0
@@ -275,7 +275,7 @@
M.client.perspective = EYE_PERSPECTIVE
M.client.eye = src
M.stop_pulling()
- M.loc = src
+ M.setloc(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 5246d97e321..5d537787b75 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.loc = get_turf(src)
+ I.setloc(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.loc = get_turf(src)
+ I.setloc(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.loc = src
+ W.setloc(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.loc = src
+ O.setloc(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.loc = src
+ M.setloc(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.loc = src
+ usr.setloc(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.loc = get_turf(src)
+ occupant.setloc(get_turf(src))
occupant = null
if(orient_right)
diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm
index 8d5e888a976..210aae7062c 100644
--- a/code/game/machinery/rechargestation.dm
+++ b/code/game/machinery/rechargestation.dm
@@ -76,7 +76,7 @@
if (src.occupant.client)
src.occupant.client.eye = src.occupant.client.mob
src.occupant.client.perspective = MOB_PERSPECTIVE
- src.occupant.loc = src.loc
+ src.occupant.setloc(src.loc)
src.occupant = null
build_icon()
src.use_power = 1
@@ -113,7 +113,7 @@
if(usr && usr.client)
usr.client.perspective = EYE_PERSPECTIVE
usr.client.eye = src
- usr.loc = src
+ usr.setloc(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 1d8fd6a36b7..3cca5c6960b 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.loc = src.loc
+ src.OCCUPANT.setloc(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.loc = src
+ usr.setloc(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.loc = src
+ M.setloc(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.loc = src
+ S.setloc(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.loc = src
+ H.setloc(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.loc = src
+ M.setloc(src)
src.MASK = M
src.update_icon()
src.updateUsrDialog()
diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index 77807c2ca1c..ec209281a7f 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -529,7 +529,7 @@
var/obj/mecha/working/ripley/R = src
if(R.cargo)
for(var/obj/O in R.cargo) //Dump contents of stored cargo
- O.loc = T
+ O.setloc(T)
R.cargo -= O
T.Entered(O)
diff --git a/code/game/objects/items/weapons/implants/implantchair.dm b/code/game/objects/items/weapons/implants/implantchair.dm
index 535a4264c0b..71e5c635986 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.loc = src.loc
+ src.occupant.setloc(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.loc = src
+ M.setloc(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 9ad77255dc4..0d47b045d84 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.loc = src
+ W.setloc(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.loc = new_location
+ W.setloc(new_location)
else
- W.loc = get_turf(src)
+ W.setloc(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.loc = user.loc
+ W.setloc(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 0e2a4e3b04e..f41b3354e8a 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.loc = src
+ I.setloc(src)
/obj/structure/closet/alter_health()
return get_turf(src)
@@ -44,13 +44,13 @@
/obj/structure/closet/proc/dump_contents()
//Cham Projector Exception
for(var/obj/effect/dummy/chameleon/AD in src)
- AD.loc = src.loc
+ AD.setloc(src.loc)
for(var/obj/I in src)
- I.loc = src.loc
+ I.setloc(src.loc)
for(var/mob/M in src)
- M.loc = src.loc
+ M.setloc(src.loc)
if(M.client)
M.client.eye = M.client.mob
M.client.perspective = MOB_PERSPECTIVE
@@ -85,14 +85,14 @@
for(var/obj/effect/dummy/chameleon/AD in src.loc)
if(itemcount >= storage_capacity)
break
- AD.loc = src
+ AD.setloc(src)
itemcount++
for(var/obj/item/I in src.loc)
if(itemcount >= storage_capacity)
break
if(!I.anchored)
- I.loc = src
+ I.setloc(src)
itemcount++
for(var/mob/M in src.loc)
@@ -107,7 +107,7 @@
M.client.perspective = EYE_PERSPECTIVE
M.client.eye = src
- M.loc = src
+ M.setloc(src)
itemcount++
src.icon_state = src.icon_closed
@@ -130,19 +130,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.loc = src.loc
+ A.setloc(src.loc)
A.ex_act(severity++)
del(src)
if(2)
if(prob(50))
for (var/atom/movable/A as mob|obj in src)
- A.loc = src.loc
+ A.setloc(src.loc)
A.ex_act(severity++)
del(src)
if(3)
if(prob(5))
for(var/atom/movable/A as mob|obj in src)
- A.loc = src.loc
+ A.setloc(src.loc)
A.ex_act(severity++)
del(src)
@@ -151,7 +151,7 @@
..()
if(health <= 0)
for(var/atom/movable/A as mob|obj in src)
- A.loc = src.loc
+ A.setloc(src.loc)
del(src)
return
@@ -160,14 +160,14 @@
if(user.wall_smash)
visible_message("\red [user] destroys the [src]. ")
for(var/atom/movable/A as mob|obj in src)
- A.loc = src.loc
+ A.setloc(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.loc = src.loc
+ A.setloc(src.loc)
del(src)
/obj/structure/closet/meteorhit(obj/O as obj)
@@ -197,7 +197,7 @@
return
usr.drop_item()
if(W)
- W.loc = src.loc
+ W.setloc(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 4c4df81ae0a..a2362c023a1 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.loc = get_turf(src)
+ O.setloc(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.loc = src
+ O.setloc(src)
itemcount++
icon_state = icon_closed
@@ -68,7 +68,7 @@
return
user.drop_item()
if(W)
- W.loc = src.loc
+ W.setloc(src.loc)
else if(istype(W, /obj/item/weapon/packageWrap))
return
else if(istype(W, /obj/item/weapon/cable_coil))
@@ -84,7 +84,7 @@
if(rigged)
user << "You attach [W] to [src]."
user.drop_item()
- W.loc = src
+ W.setloc(src)
return
else if(istype(W, /obj/item/weapon/wirecutters))
if(rigged)
@@ -424,12 +424,12 @@
continue
if(!S.anchored)
found = 1
- S.loc = src
+ S.setloc(src)
break
if(!found)
for(var/obj/machinery/M in src.loc)
if(!M.anchored)
- M.loc = src
+ M.setloc(src)
break
return
@@ -452,12 +452,12 @@
continue
if(!S.anchored)
found = 1
- S.loc = src
+ S.setloc(src)
break
if(!found)
for(var/obj/machinery/M in src.loc)
if(!M.anchored)
- M.loc = src
+ M.setloc(src)
break
return
diff --git a/code/game/objects/structures/crates_lockers/largecrate.dm b/code/game/objects/structures/crates_lockers/largecrate.dm
index c13aafb5927..888b52739f2 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.loc = T
+ O.setloc(T)
user.visible_message("[user] pries \the [src] open.", \
"You pry open \the [src].", \
"You hear splitting wood.")
diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm
index eea03587634..aeefb9f151f 100644
--- a/code/game/objects/structures/morgue.dm
+++ b/code/game/objects/structures/morgue.dm
@@ -34,21 +34,21 @@
switch(severity)
if(1.0)
for(var/atom/movable/A as mob|obj in src)
- A.loc = src.loc
+ A.setloc(src.loc)
ex_act(severity)
del(src)
return
if(2.0)
if (prob(50))
for(var/atom/movable/A as mob|obj in src)
- A.loc = src.loc
+ A.setloc(src.loc)
ex_act(severity)
del(src)
return
if(3.0)
if (prob(5))
for(var/atom/movable/A as mob|obj in src)
- A.loc = src.loc
+ A.setloc(src.loc)
ex_act(severity)
del(src)
return
@@ -64,7 +64,7 @@
if (src.connected)
for(var/atom/movable/A as mob|obj in src.connected.loc)
if (!( A.anchored ))
- A.loc = src
+ A.setloc(src)
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
//src.connected = null
del(src.connected)
@@ -78,7 +78,7 @@
src.connected.connected = src
src.icon_state = "morgue0"
for(var/atom/movable/A as mob|obj in src)
- A.loc = src.connected.loc
+ A.setloc(src.connected.loc)
src.connected.icon_state = "morguet"
src.connected.dir = src.dir
else
@@ -114,7 +114,7 @@
src.connected.connected = src
src.icon_state = "morgue0"
for(var/atom/movable/A as mob|obj in src)
- A.loc = src.connected.loc
+ A.setloc(src.connected.loc)
//Foreach goto(106)
src.connected.icon_state = "morguet"
else
@@ -144,7 +144,7 @@
if (src.connected)
for(var/atom/movable/A as mob|obj in src.loc)
if (!( A.anchored ))
- A.loc = src.connected
+ A.setloc(src.connected)
//Foreach goto(26)
src.connected.connected = null
src.connected.update()
@@ -161,7 +161,7 @@
return
if (!ismob(user) || user.stat || user.lying || user.stunned)
return
- O.loc = src.loc
+ O.setloc(src.loc)
if (user != O)
for(var/mob/B in viewers(user, 3))
if ((B.client && !( B.blinded )))
@@ -199,21 +199,21 @@
switch(severity)
if(1.0)
for(var/atom/movable/A as mob|obj in src)
- A.loc = src.loc
+ A.setloc(src.loc)
ex_act(severity)
del(src)
return
if(2.0)
if (prob(50))
for(var/atom/movable/A as mob|obj in src)
- A.loc = src.loc
+ A.setloc(src.loc)
ex_act(severity)
del(src)
return
if(3.0)
if (prob(5))
for(var/atom/movable/A as mob|obj in src)
- A.loc = src.loc
+ A.setloc(src.loc)
ex_act(severity)
del(src)
return
@@ -238,7 +238,7 @@
if ((src.connected) && (src.locked == 0))
for(var/atom/movable/A as mob|obj in src.connected.loc)
if (!( A.anchored ))
- A.loc = src
+ A.setloc(src)
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
//src.connected = null
del(src.connected)
@@ -252,7 +252,7 @@
src.connected.connected = src
src.icon_state = "crema0"
for(var/atom/movable/A as mob|obj in src)
- A.loc = src.connected.loc
+ A.setloc(src.connected.loc)
src.connected.icon_state = "cremat"
else
//src.connected = null
@@ -286,7 +286,7 @@
src.connected.connected = src
src.icon_state = "crema0"
for(var/atom/movable/A as mob|obj in src)
- A.loc = src.connected.loc
+ A.setloc(src.connected.loc)
//Foreach goto(106)
src.connected.icon_state = "cremat"
else
@@ -360,7 +360,7 @@
if (src.connected)
for(var/atom/movable/A as mob|obj in src.loc)
if (!( A.anchored ))
- A.loc = src.connected
+ A.setloc(src.connected)
//Foreach goto(26)
src.connected.connected = null
src.connected.update()
@@ -377,7 +377,7 @@
return
if (!ismob(user) || user.stat || user.lying || user.stunned)
return
- O.loc = src.loc
+ O.setloc(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 00946b8678c..cdab10c884b 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.loc = src
+ I.setloc(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.loc = src
+ I.setloc(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 8126296a154..f96bf87eee2 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/Del()
for(var/atom/movable/AM in contents)
- AM.loc = loc
+ AM.setloc(loc)
..()
@@ -60,7 +60,7 @@ obj/structure/ex_act(severity)
switch(severity)
if(1.0)
for(var/atom/movable/AM in contents)
- AM.loc = loc
+ AM.setloc(loc)
AM.ex_act(severity++)
del(src)
@@ -68,7 +68,7 @@ obj/structure/ex_act(severity)
if(2.0)
if(prob(50))
for(var/atom/movable/AM in contents)
- AM.loc = loc
+ AM.setloc(loc)
AM.ex_act(severity++)
del(src)
@@ -105,7 +105,7 @@ obj/structure/ex_act(severity)
AM << "The tube's support pylons block your way."
return ..()
else
- AM.loc = src.loc
+ AM.setloc(src.loc)
AM << "You slip under the tube."
@@ -118,7 +118,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.loc = pod
+ AM.setloc(pod)
return
@@ -412,7 +412,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.loc = loc
+ mob.setloc(loc)
mob.client.Move(get_step(loc, direction), direction)
//if(moving && istype(loc, /turf/space))
@@ -425,7 +425,7 @@ obj/structure/ex_act(severity)
if(!station.pod_moving)
if(direction == station.dir)
if(station.icon_state == "open")
- mob.loc = loc
+ mob.setloc(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 237ee6c92f1..933a9a62637 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.loc = get_turf(src)
+ I.setloc(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.loc = src
+ I.setloc(src)
w_items += I.w_class
user << "You carefully place \the [I] into the cistern."
return
diff --git a/code/modules/detectivework/detective_work.dm b/code/modules/detectivework/detective_work.dm
index 725351c777f..72c82c4ac71 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.loc = loc
+ scanning.setloc(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.loc = src
+ scanning.setloc(src)
I.overlays -= scanning
I.icon_state = "evidenceobj"
else
scanning = I
M.drop_item()
- I.loc = src
+ I.setloc(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.loc = src.loc
+ card.setloc(src.loc)
card = null
return
M.drop_item()
- I.loc = src
+ I.setloc(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.loc = src.loc
+ card.setloc(src.loc)
card = null
return
return
diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm
index bf8e2338131..c971e4f8387 100644
--- a/code/modules/reagents/Chemistry-Machinery.dm
+++ b/code/modules/reagents/Chemistry-Machinery.dm
@@ -204,7 +204,7 @@
user << "This machine only accepts beakers"
src.beaker = B
user.drop_item()
- B.loc = src
+ B.setloc(src)
user << "You set [B] on the machine."
nanomanager.update_uis(src) // update all UIs attached to src
return
@@ -331,7 +331,7 @@
return
src.beaker = B
user.drop_item()
- B.loc = src
+ B.setloc(src)
user << "You add the beaker to the machine!"
src.updateUsrDialog()
icon_state = "mixer1"
@@ -344,7 +344,7 @@
src.loaded_pill_bottle = B
user.drop_item()
- B.loc = src
+ B.setloc(src)
user << "You add the pill bottle into the dispenser slot!"
src.updateUsrDialog()
return
@@ -360,7 +360,7 @@
if (href_list["ejectp"])
if(loaded_pill_bottle)
- loaded_pill_bottle.loc = src.loc
+ loaded_pill_bottle.setloc(src.loc)
loaded_pill_bottle = null
else if(href_list["close"])
usr << browse(null, "window=chemmaster")
@@ -462,7 +462,7 @@
reagents.trans_to(P,amount_per_pill)
if(src.loaded_pill_bottle)
if(loaded_pill_bottle.contents.len < loaded_pill_bottle.storage_slots)
- P.loc = loaded_pill_bottle
+ P.setloc(loaded_pill_bottle)
src.updateUsrDialog()
else if (href_list["createbottle"])
@@ -958,7 +958,7 @@
else
src.beaker = O
user.drop_item()
- O.loc = src
+ O.setloc(src)
update_icon()
src.updateUsrDialog()
return 0
@@ -972,7 +972,7 @@
for (var/obj/item/weapon/reagent_containers/food/snacks/grown/G in O.contents)
O.contents -= G
- G.loc = src
+ G.setloc(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."
@@ -989,7 +989,7 @@
return 1
user.before_take_item(O)
- O.loc = src
+ O.setloc(src)
holdingitems += O
src.updateUsrDialog()
return 0
@@ -1072,7 +1072,7 @@
return
if (!beaker)
return
- beaker.loc = src.loc
+ beaker.setloc(src.loc)
beaker = null
update_icon()
@@ -1084,7 +1084,7 @@
return
for(var/obj/item/O in holdingitems)
- O.loc = src.loc
+ O.setloc(src.loc)
holdingitems -= O
holdingitems = list()
diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm
index 876860491d7..2cae4fd6b77 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.loc = src
+ GM.setloc(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.loc = src
+ I.setloc(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.loc = src
+ target.setloc(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.loc = src.loc
+ user.setloc(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.loc = src.loc
+ AM.setloc(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.loc = src.loc
+ AM.setloc(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.loc = src
+ I.setloc(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.loc = src
+ AM.setloc(src)
if(istype(AM, /mob/living/carbon/human))
var/mob/living/carbon/human/H = AM
if(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.loc = src // move everything in other holder to this one
+ AM.setloc(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.loc = T
+ AM.setloc(T)
AM.pipe_eject(0)
del(H)
..()
@@ -680,9 +680,9 @@
if(H2 && !H2.active)
H.merge(H2)
- H.loc = P
+ H.setloc(P)
else // if wasn't a pipe, then set loc to turf
- H.loc = T
+ H.setloc(T)
return null
return P
@@ -721,7 +721,7 @@
if(T.density) // dense ouput turf, so stop holder
H.active = 0
- H.loc = src
+ H.setloc(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.loc = T
+ AM.setloc(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.loc = T
+ AM.setloc(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.loc = T
+ AM.setloc(T)
AM.pipe_eject(0)
del(H)
return
@@ -940,7 +940,7 @@
if(controller.up)
T = locate(src.x, src.y, controller.up_target)
if(!T)
- H.loc = src.loc
+ H.setloc(src.loc)
return
else
for(var/obj/structure/disposalpipe/down/F in T)
@@ -956,9 +956,9 @@
if(H2 && !H2.active)
H.merge(H2)
- H.loc = P
+ H.setloc(P)
else // if wasn't a pipe, then set loc to turf
- H.loc = T
+ H.setloc(T)
return null
return P
@@ -993,7 +993,7 @@
if(controller.down)
T = locate(src.x, src.y, controller.down_target)
if(!T)
- H.loc = src.loc
+ H.setloc(src.loc)
return
else
for(var/obj/structure/disposalpipe/up/F in T)
@@ -1009,9 +1009,9 @@
if(H2 && !H2.active)
H.merge(H2)
- H.loc = P
+ H.setloc(P)
else // if wasn't a pipe, then set loc to turf
- H.loc = T
+ H.setloc(T)
return null
return P
@@ -1139,9 +1139,9 @@
if(H2 && !H2.active)
H.merge(H2)
- H.loc = P
+ H.setloc(P)
else // if wasn't a pipe, then set loc to turf
- H.loc = T
+ H.setloc(T)
return null
return P
@@ -1201,9 +1201,9 @@
if(H2 && !H2.active)
H.merge(H2)
- H.loc = P
+ H.setloc(P)
else // if wasn't a pipe, then set loc to turf
- H.loc = T
+ H.setloc(T)
return null
return P
@@ -1370,7 +1370,7 @@
if(H)
for(var/atom/movable/AM in H)
- AM.loc = src.loc
+ AM.setloc(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 eaf92181b23..10080549788 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.loc = src
+ I.setloc(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.loc = src.loc
+ scanned_item.setloc(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.loc = src.loc
+ scanned_item.setloc(src.loc)
scanned_item = null
add_fingerprint(usr)