diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm
index 19acb34d29ea..46c0f16e1bec 100644
--- a/code/game/atoms_movable.dm
+++ b/code/game/atoms_movable.dm
@@ -403,7 +403,7 @@
for(var/m in buckled_mobs)
var/mob/living/buckled_mob = m
if(!buckled_mob.Move(newloc, direct))
- loc = buckled_mob.loc
+ forceMove(buckled_mob.loc)
last_move = buckled_mob.last_move
inertia_dir = last_move
buckled_mob.inertia_dir = last_move
diff --git a/code/game/gamemodes/blob/overmind.dm b/code/game/gamemodes/blob/overmind.dm
index 58787fa6dcef..61c0365d3096 100644
--- a/code/game/gamemodes/blob/overmind.dm
+++ b/code/game/gamemodes/blob/overmind.dm
@@ -232,14 +232,14 @@ GLOBAL_LIST_EMPTY(blob_nodes)
if(placed)
var/obj/structure/blob/B = locate() in range("3x3", NewLoc)
if(B)
- loc = NewLoc
+ forceMove(NewLoc)
else
return 0
else
var/area/A = get_area(NewLoc)
if(isspaceturf(NewLoc) || istype(A, /area/shuttle)) //if unplaced, can't go on shuttles or space tiles
return 0
- loc = NewLoc
+ forceMove(NewLoc)
return 1
/mob/camera/blob/mind_initialize()
diff --git a/code/game/gamemodes/blob/powers.dm b/code/game/gamemodes/blob/powers.dm
index 9365a02d8b51..e88cc8fb963a 100644
--- a/code/game/gamemodes/blob/powers.dm
+++ b/code/game/gamemodes/blob/powers.dm
@@ -43,7 +43,7 @@
return 0
else if(placement_override == 1)
var/turf/T = pick(GLOB.blobstart)
- loc = T //got overrided? you're somewhere random, motherfucker
+ forceMove(T) //got overrided? you're somewhere random, motherfucker
if(placed && blob_core)
blob_core.forceMove(loc)
else
@@ -75,7 +75,7 @@
var/node_name = input(src, "Choose a node to jump to.", "Node Jump") in nodes
var/obj/structure/blob/node/chosen_node = nodes[node_name]
if(chosen_node)
- loc = chosen_node.loc
+ forceMove(chosen_node.loc)
/mob/camera/blob/proc/createSpecial(price, blobType, nearEquals, needsNode, turf/T)
if(!T)
diff --git a/code/game/gamemodes/miniantags/revenant/revenant.dm b/code/game/gamemodes/miniantags/revenant/revenant.dm
index 78d39673eb00..441689fb9b19 100644
--- a/code/game/gamemodes/miniantags/revenant/revenant.dm
+++ b/code/game/gamemodes/miniantags/revenant/revenant.dm
@@ -375,7 +375,7 @@
return
var/key_of_revenant
message_admins("Revenant ectoplasm was left undestroyed for 1 minute and is reforming into a new revenant.")
- loc = get_turf(src) //In case it's in a backpack or someone's hand
+ forceMove(drop_location()) //In case it's in a backpack or someone's hand
revenant.forceMove(loc)
if(client_to_revive)
for(var/mob/M in GLOB.dead_mob_list)
diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm
index c59ad05cd54e..21de0fc2f9ce 100644
--- a/code/game/gamemodes/wizard/artefact.dm
+++ b/code/game/gamemodes/wizard/artefact.dm
@@ -213,7 +213,7 @@
righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi'
var/mob/living/carbon/human/target = null
var/list/mob/living/carbon/human/possible = list()
- var/obj/item/link = null
+ var/obj/item/linked_item = null
var/cooldown_time = 30 //3s
var/cooldown = 0
max_integrity = 10
@@ -237,10 +237,10 @@
cooldown = world.time +cooldown_time
return
- if(!link)
+ if(!linked_item)
if(I.loc == user && istype(I) && I.w_class <= WEIGHT_CLASS_SMALL)
if (user.transferItemToLoc(I,src))
- link = I
+ linked_item = I
to_chat(user, "You attach [I] to the doll.")
update_targets()
@@ -255,11 +255,11 @@
return
if(user.zone_selected == "chest")
- if(link)
+ if(linked_item)
target = null
- link.loc = get_turf(src)
- to_chat(user, "You remove the [link] from the doll.")
- link = null
+ linked_item.forceMove(drop_location())
+ to_chat(user, "You remove the [linked_item] from the doll.")
+ linked_item = null
update_targets()
return
@@ -291,10 +291,10 @@
/obj/item/voodoo/proc/update_targets()
possible = list()
- if(!link)
+ if(!linked_item)
return
for(var/mob/living/carbon/human/H in GLOB.alive_mob_list)
- if(md5(H.dna.uni_identity) in link.fingerprints)
+ if(md5(H.dna.uni_identity) in linked_item.fingerprints)
possible |= H
/obj/item/voodoo/proc/GiveHint(mob/victim,force=0)
diff --git a/code/game/machinery/PDApainter.dm b/code/game/machinery/PDApainter.dm
index 61d5627354be..6156ee1d86d6 100644
--- a/code/game/machinery/PDApainter.dm
+++ b/code/game/machinery/PDApainter.dm
@@ -134,7 +134,7 @@
return
if(storedpda)
- storedpda.loc = get_turf(src.loc)
+ storedpda.forceMove(drop_location())
storedpda = null
update_icon()
else
diff --git a/code/game/machinery/computer/telecrystalconsoles.dm b/code/game/machinery/computer/telecrystalconsoles.dm
index 538960a1c6f6..e2b6f9152ac1 100644
--- a/code/game/machinery/computer/telecrystalconsoles.dm
+++ b/code/game/machinery/computer/telecrystalconsoles.dm
@@ -51,7 +51,7 @@ GLOBAL_LIST_INIT(possible_uplinker_IDs, list("Alfa","Bravo","Charlie","Delta","E
/obj/machinery/computer/telecrystals/uplinker/proc/ejectuplink()
if(uplinkholder)
- uplinkholder.loc = get_turf(src.loc)
+ uplinkholder.forceMove(drop_location())
uplinkholder = null
update_icon()
diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm
index 29d24444c1f3..97830393bd1e 100644
--- a/code/game/machinery/constructable_frame.dm
+++ b/code/game/machinery/constructable_frame.dm
@@ -157,15 +157,15 @@
if(istype(P, /obj/item/crowbar))
playsound(src.loc, P.usesound, 50, 1)
state = 2
- circuit.loc = src.loc
+ circuit.forceMove(drop_location())
components.Remove(circuit)
circuit = null
if(components.len == 0)
to_chat(user, "You remove the circuit board.")
else
to_chat(user, "You remove the circuit board and other components.")
- for(var/atom/movable/A in components)
- A.loc = src.loc
+ for(var/atom/movable/AM in components)
+ AM.forceMove(drop_location())
desc = initial(desc)
req_components = null
components = null
@@ -186,9 +186,9 @@
qdel(O)
new_machine.component_parts = list()
for(var/obj/O in src)
- O.loc = null
+ O.moveToNullspace()
new_machine.component_parts += O
- circuit.loc = null
+ circuit.moveToNullspace()
new_machine.RefreshParts()
qdel(src)
return
diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index 84bdb67420ad..5aebebd2e793 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -1040,7 +1040,7 @@
panel_open = TRUE
update_icon(AIRLOCK_OPENING)
visible_message("[src]'s panel is blown off in a spray of deadly shrapnel!")
- charge.loc = get_turf(src)
+ charge.forceMove(drop_location())
charge.ex_act(EXPLODE_DEVASTATE)
detonated = 1
charge = null
@@ -1344,7 +1344,7 @@
else
ae = electronics
electronics = null
- ae.loc = src.loc
+ ae.forceMove(drop_location())
qdel(src)
/obj/machinery/door/airlock/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd)
diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm
index d65156e9240b..bd1a553863d5 100644
--- a/code/game/machinery/doors/windowdoor.dm
+++ b/code/game/machinery/doors/windowdoor.dm
@@ -276,7 +276,7 @@
else
ae = electronics
electronics = null
- ae.loc = src.loc
+ ae.forceMove(drop_location())
qdel(src)
return
@@ -496,4 +496,4 @@
/obj/machinery/door/window/brigdoor/security/holding/southright
dir = SOUTH
icon_state = "rightsecure"
- base_state = "rightsecure"
\ No newline at end of file
+ base_state = "rightsecure"
diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm
index d6d8c93ed160..10a552564b59 100644
--- a/code/game/machinery/hologram.dm
+++ b/code/game/machinery/hologram.dm
@@ -75,7 +75,7 @@ Possible to do for anyone motivated enough:
replay_stop()
if(record_mode)
record_stop()
-
+
QDEL_NULL(disk)
holopads -= src
@@ -256,12 +256,12 @@ Possible to do for anyone motivated enough:
temp = ""
if(outgoing_call)
outgoing_call.Disconnect()
-
+
else if(href_list["disk_eject"])
if(disk && !replay_mode)
disk.forceMove(drop_location())
disk = null
-
+
else if(href_list["replay_stop"])
replay_stop()
else if(href_list["replay_start"])
@@ -424,7 +424,7 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/
if(masters[user])
var/obj/effect/overlay/holo_pad_hologram/H = masters[user]
step_to(H, new_turf)
- H.loc = new_turf
+ H.forceMove(new_turf)
var/area/holo_area = get_area(src)
var/area/eye_area = new_turf.loc
@@ -505,7 +505,7 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/
current_delay += entry[2]
var/time_delta = world.time - record_start - current_delay
-
+
if(time_delta >= 1)
disk.record.entries += list(list(HOLORECORD_DELAY,time_delta))
disk.record.entries += list(list(HOLORECORD_SAY,message))
diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm
index 730380225db9..541c931593e1 100644
--- a/code/game/machinery/newscaster.dm
+++ b/code/game/machinery/newscaster.dm
@@ -789,7 +789,7 @@ GLOBAL_LIST_EMPTY(allCasters)
/obj/machinery/newscaster/proc/AttachPhoto(mob/user)
if(photo)
if(!photo.sillynewscastervar)
- photo.loc = loc
+ photo.forceMove(drop_location())
if(!issilicon(user))
user.put_in_inactive_hand(photo)
else
@@ -865,7 +865,7 @@ GLOBAL_LIST_EMPTY(allCasters)
NEWSPAPER.wantedBody = GLOB.news_network.wanted_issue.body
if(GLOB.news_network.wanted_issue.img)
NEWSPAPER.wantedPhoto = GLOB.news_network.wanted_issue.img
- NEWSPAPER.loc = get_turf(src)
+ NEWSPAPER.forceMove(drop_location())
NEWSPAPER.creationTime = GLOB.news_network.lastAction
paper_remaining--
diff --git a/code/game/machinery/robot_fabricator.dm b/code/game/machinery/robot_fabricator.dm
index 606f64c7f30e..c01c72d7a805 100644
--- a/code/game/machinery/robot_fabricator.dm
+++ b/code/game/machinery/robot_fabricator.dm
@@ -137,7 +137,7 @@ Please wait until completion...
spawn (build_time)
if (!isnull(src.being_built))
- src.being_built.loc = get_turf(src)
+ src.being_built.forceMove(drop_location())
src.being_built = null
src.use_power = IDLE_POWER_USE
operating = FALSE
diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm
index b45b393ab2d5..3d3911581db7 100644
--- a/code/game/machinery/spaceheater.dm
+++ b/code/game/machinery/spaceheater.dm
@@ -228,7 +228,7 @@
settableTemperatureMedian + settableTemperatureRange)
if("eject")
if(panel_open && cell)
- cell.loc = get_turf(src)
+ cell.forceMove(drop_location())
cell = null
. = TRUE
diff --git a/code/game/machinery/transformer.dm b/code/game/machinery/transformer.dm
index fe18365a9c35..7624312f8420 100644
--- a/code/game/machinery/transformer.dm
+++ b/code/game/machinery/transformer.dm
@@ -57,7 +57,7 @@
var/move_dir = get_dir(loc, AM.loc)
var/mob/living/carbon/human/H = AM
if((transform_standing || H.lying) && move_dir == EAST)// || move_dir == WEST)
- AM.loc = src.loc
+ AM.forceMove(drop_location())
do_transform(AM)
/obj/machinery/transformer/CanPass(atom/movable/mover, turf/target)
diff --git a/code/game/mecha/equipment/mecha_equipment.dm b/code/game/mecha/equipment/mecha_equipment.dm
index e2a35ac59190..54530d368ca1 100644
--- a/code/game/mecha/equipment/mecha_equipment.dm
+++ b/code/game/mecha/equipment/mecha_equipment.dm
@@ -104,7 +104,7 @@
/obj/item/mecha_parts/mecha_equipment/proc/attach(obj/mecha/M)
M.equipment += src
chassis = M
- src.loc = M
+ forceMove(M)
M.log_message("[src] initialized.")
if(!M.selected && selectable)
M.selected = src
diff --git a/code/game/mecha/equipment/tools/work_tools.dm b/code/game/mecha/equipment/tools/work_tools.dm
index d45664263372..f076b723aec0 100644
--- a/code/game/mecha/equipment/tools/work_tools.dm
+++ b/code/game/mecha/equipment/tools/work_tools.dm
@@ -39,7 +39,7 @@
O.anchored = TRUE
if(do_after_cooldown(target))
cargo_holder.cargo += O
- O.loc = chassis
+ O.forceMove(chassis)
O.anchored = FALSE
occupant_message("[target] successfully loaded.")
log_message("Loaded [O]. Cargo compartment capacity: [cargo_holder.cargo_capacity - cargo_holder.cargo.len]")
@@ -91,7 +91,7 @@
O.anchored = TRUE
if(do_after_cooldown(target))
cargo_holder.cargo += O
- O.loc = chassis
+ O.forceMove(chassis)
O.anchored = FALSE
occupant_message("[target] successfully loaded.")
log_message("Loaded [O]. Cargo compartment capacity: [cargo_holder.cargo_capacity - cargo_holder.cargo.len]")
diff --git a/code/game/mecha/mecha_construction_paths.dm b/code/game/mecha/mecha_construction_paths.dm
index 272d3530a64f..de50d6f86f5d 100644
--- a/code/game/mecha/mecha_construction_paths.dm
+++ b/code/game/mecha/mecha_construction_paths.dm
@@ -542,7 +542,7 @@
else
user.visible_message("[user] removes the capacitor from the [holder].", "You remove the capacitor from the [holder].")
var/obj/item/I = locate(/obj/item/stock_parts/capacitor) in holder
- I.loc = get_turf(holder)
+ I.forceMove(holder.drop_location())
holder.icon_state = "gygax12"
if(9)
if(diff==FORWARD)
@@ -1155,7 +1155,7 @@
else
user.visible_message("[user] removes the scanner module from the [holder].", "You remove the scanner module from the [holder].")
var/obj/item/I = locate(/obj/item/stock_parts/scanning_module) in holder
- I.loc = get_turf(holder)
+ I.forceMove(holder.drop_location())
holder.icon_state = "durand10"
if(11)
if(diff==FORWARD)
@@ -1173,7 +1173,7 @@
else
user.visible_message("[user] removes the super capacitor from the [holder].", "You remove the capacitor from the [holder].")
var/obj/item/I = locate(/obj/item/stock_parts/capacitor) in holder
- I.loc = get_turf(holder)
+ I.forceMove(holder.drop_location())
holder.icon_state = "durand12"
if(9)
if(diff==FORWARD)
@@ -1480,7 +1480,7 @@
else
user.visible_message("[user] removes the phasic scanner module from the [holder].", "You remove the scanner module from the [holder].")
var/obj/item/I = locate(/obj/item/stock_parts/scanning_module) in holder
- I.loc = get_turf(holder)
+ I.forceMove(holder.drop_location())
holder.icon_state = "phazon10"
if(15)
if(diff==FORWARD)
@@ -1498,7 +1498,7 @@
else
user.visible_message("[user] removes the super capacitor from the [holder].", "You remove the capacitor from the [holder].")
var/obj/item/I = locate(/obj/item/stock_parts/capacitor) in holder
- I.loc = get_turf(holder)
+ I.forceMove(holder.drop_location())
holder.icon_state = "phazon12"
if(13)
if(diff==FORWARD)
diff --git a/code/game/mecha/mecha_wreckage.dm b/code/game/mecha/mecha_wreckage.dm
index 67e5c1dbd152..de8f8ecb3acf 100644
--- a/code/game/mecha/mecha_wreckage.dm
+++ b/code/game/mecha/mecha_wreckage.dm
@@ -68,7 +68,7 @@
if(crowbar_salvage && crowbar_salvage.len)
var/obj/S = pick(crowbar_salvage)
if(S)
- S.loc = get_turf(user)
+ S.forceMove(user.drop_location())
crowbar_salvage -= S
user.visible_message("[user] pries [S] from [src].", "You pry [S] from [src].")
return
diff --git a/code/game/objects/effects/spiders.dm b/code/game/objects/effects/spiders.dm
index 89a5ce7353b1..4ecba7c9827f 100644
--- a/code/game/objects/effects/spiders.dm
+++ b/code/game/objects/effects/spiders.dm
@@ -150,7 +150,7 @@
spawn(travel_time)
if(!exit_vent || exit_vent.welded)
- loc = entry_vent
+ forceMove(entry_vent)
entry_vent = null
return
@@ -162,7 +162,7 @@
forceMove(entry_vent)
entry_vent = null
return
- loc = exit_vent.loc
+ forceMove(exit_vent.loc)
entry_vent = null
var/area/new_area = get_area(loc)
if(new_area)
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index a0e522cde1fb..3a956fe002ea 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -719,4 +719,3 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
/obj/item/MouseExited()
deltimer(tip_timer)//delete any in-progress timer if the mouse is moved off the item before it finishes
closeToolTip(usr)
-
diff --git a/code/game/objects/items/chrono_eraser.dm b/code/game/objects/items/chrono_eraser.dm
index 8ac9643c397e..5d4c85ac4d14 100644
--- a/code/game/objects/items/chrono_eraser.dm
+++ b/code/game/objects/items/chrono_eraser.dm
@@ -163,7 +163,7 @@
/obj/effect/chrono_field/New(loc, var/mob/living/target, var/obj/item/gun/energy/chrono_gun/G)
if(target && isliving(target) && G)
- target.loc = src
+ target.forceMove(src)
src.captured = target
var/icon/mob_snapshot = getFlatIcon(target)
var/icon/cached_icon = new()
@@ -198,7 +198,7 @@
if(captured)
if(tickstokill > initial(tickstokill))
for(var/atom/movable/AM in contents)
- AM.loc = loc
+ AM.forceMove(drop_location())
qdel(src)
else if(tickstokill <= 0)
to_chat(captured, "As the last essence of your being is erased from time, you begin to re-experience your most enjoyable memory. You feel happy...")
@@ -213,7 +213,7 @@
else
captured.Unconscious(80)
if(captured.loc != src)
- captured.loc = src
+ captured.forceMove(src)
update_icon()
if(gun)
if(gun.field_check(src))
diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm
index bbeed24168ae..e501e24c6ab4 100644
--- a/code/game/objects/items/defib.dm
+++ b/code/game/objects/items/defib.dm
@@ -328,7 +328,7 @@
O.unwield()
to_chat(user, "The paddles snap back into the main unit.")
defib.on = 0
- loc = defib
+ forceMove(defib)
defib.update_icon()
return unwield(user)
diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm
index 1f7fd77c4aca..f2bc8b568699 100644
--- a/code/game/objects/items/devices/PDA/PDA.dm
+++ b/code/game/objects/items/devices/PDA/PDA.dm
@@ -543,7 +543,7 @@ GLOBAL_LIST_EMPTY(PDAs)
if("2") // Eject pAI device
var/turf/T = get_turf(src.loc)
if(T)
- pai.loc = T
+ pai.forceMove(T)
//LINK FUNCTIONS===================================
@@ -578,7 +578,7 @@ GLOBAL_LIST_EMPTY(PDAs)
M.put_in_hands(id)
to_chat(usr, "You remove the ID from the [name].")
else
- id.loc = get_turf(src)
+ id.forceMove(drop_location())
id = null
update_icon()
diff --git a/code/game/objects/items/devices/chameleonproj.dm b/code/game/objects/items/devices/chameleonproj.dm
index b405e21ca64e..a07d8d8d605b 100644
--- a/code/game/objects/items/devices/chameleonproj.dm
+++ b/code/game/objects/items/devices/chameleonproj.dm
@@ -85,7 +85,7 @@
/obj/item/device/chameleon/proc/eject_all()
for(var/atom/movable/A in active_dummy)
- A.loc = active_dummy.loc
+ A.forceMove(active_dummy.loc)
if(ismob(A))
var/mob/M = A
M.reset_perspective(null)
@@ -106,7 +106,7 @@
VRD.force_dismount(M)
else
V.unbuckle_mob(M, force = TRUE)
- M.loc = src
+ M.forceMove(src)
master = C
master.active_dummy = src
diff --git a/code/game/objects/items/devices/laserpointer.dm b/code/game/objects/items/devices/laserpointer.dm
index b1b200f48986..eb1ccd15f4b7 100644
--- a/code/game/objects/items/devices/laserpointer.dm
+++ b/code/game/objects/items/devices/laserpointer.dm
@@ -50,7 +50,7 @@
else if(istype(W, /obj/item/screwdriver))
if(diode)
to_chat(user, "You remove the [diode.name] from \the [src].")
- diode.loc = get_turf(src.loc)
+ diode.forceMove(drop_location())
diode = null
else
return ..()
diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm
index 9ff19ba57c63..750e1f0511dd 100644
--- a/code/game/objects/items/devices/radio/headset.dm
+++ b/code/game/objects/items/devices/radio/headset.dm
@@ -227,7 +227,7 @@
if(keyslot)
var/turf/T = get_turf(user)
if(T)
- keyslot.loc = T
+ keyslot.forceMove(T)
keyslot = null
@@ -235,7 +235,7 @@
if(keyslot2)
var/turf/T = get_turf(user)
if(T)
- keyslot2.loc = T
+ keyslot2.forceMove(T)
keyslot2 = null
recalculateChannels()
diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm
index b1ab5c88d75a..294659d01b51 100644
--- a/code/game/objects/items/devices/radio/radio.dm
+++ b/code/game/objects/items/devices/radio/radio.dm
@@ -568,7 +568,7 @@
if(keyslot)
var/turf/T = get_turf(user)
if(T)
- keyslot.loc = T
+ keyslot.forceMove(T)
keyslot = null
recalculateChannels()
diff --git a/code/game/objects/items/grenades/chem_grenade.dm b/code/game/objects/items/grenades/chem_grenade.dm
index e791a7454199..8698594555e3 100644
--- a/code/game/objects/items/grenades/chem_grenade.dm
+++ b/code/game/objects/items/grenades/chem_grenade.dm
@@ -110,12 +110,12 @@
else if(stage == WIRED && istype(I, /obj/item/wrench))
if(beakers.len)
for(var/obj/O in beakers)
- O.loc = get_turf(src)
+ O.forceMove(drop_location())
beakers = list()
to_chat(user, "You open the [initial(name)] assembly and remove the payload.")
return // First use of the wrench remove beakers, then use the wrench to remove the activation mechanism.
if(nadeassembly)
- nadeassembly.loc = get_turf(src)
+ nadeassembly.forceMove(drop_location())
nadeassembly.master = null
nadeassembly = null
else // If "nadeassembly = null && stage == WIRED", then it most have been cable_coil that was used.
@@ -167,7 +167,7 @@
playsound(loc, 'sound/items/screwdriver2.ogg', 50, 1)
if(beakers.len)
for(var/obj/O in beakers)
- O.loc = get_turf(src)
+ O.forceMove(drop_location())
beakers = list()
stage_change(EMPTY)
return
diff --git a/code/game/objects/items/implants/implantcase.dm b/code/game/objects/items/implants/implantcase.dm
index c005a8a2b2cf..00bda4dadbbb 100644
--- a/code/game/objects/items/implants/implantcase.dm
+++ b/code/game/objects/items/implants/implantcase.dm
@@ -39,7 +39,7 @@
if(I.imp)
if(imp || I.imp.imp_in)
return
- I.imp.loc = src
+ I.imp.forceMove(src)
imp = I.imp
I.imp = null
update_icon()
@@ -48,7 +48,7 @@
if(imp)
if(I.imp)
return
- imp.loc = I
+ imp.forceMove(I)
I.imp = imp
imp = null
update_icon()
diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm
index 09e3ccdeb05c..339b7fbf4b9e 100644
--- a/code/game/objects/items/robot/robot_parts.dm
+++ b/code/game/objects/items/robot/robot_parts.dm
@@ -69,7 +69,7 @@
if(!l_arm && !r_arm && !l_leg && !r_leg && !chest && !head)
if (M.use(1))
var/obj/item/ed209_assembly/B = new /obj/item/ed209_assembly
- B.loc = get_turf(src)
+ B.forceMove(drop_location())
to_chat(user, "You arm the robot frame.")
var/holding_this = user.get_inactive_held_item()==src
qdel(src)
@@ -227,7 +227,7 @@
O.job = "Cyborg"
O.cell = chest.cell
- chest.cell.loc = O
+ chest.cell.forceMove(O)
chest.cell = null
W.forceMove(O)//Should fix cybros run time erroring when blown up. It got deleted before, along with the frame.
if(O.mmi) //we delete the mmi created by robot/New()
@@ -271,7 +271,7 @@
O.cell = chest.cell
- chest.cell.loc = O
+ chest.cell.forceMove(O)
chest.cell = null
O.locked = panel_locked
O.job = "Cyborg"
diff --git a/code/game/objects/items/tanks/watertank.dm b/code/game/objects/items/tanks/watertank.dm
index 3e0f9db3fc66..e084c0ae1c63 100644
--- a/code/game/objects/items/tanks/watertank.dm
+++ b/code/game/objects/items/tanks/watertank.dm
@@ -131,7 +131,7 @@
..()
to_chat(user, "The mister snaps back onto the watertank.")
tank.on = 0
- loc = tank
+ forceMove(tank)
/obj/item/reagent_containers/spray/mister/attack_self()
return
@@ -236,13 +236,13 @@
tank = parent_tank
reagents = tank.reagents
max_water = tank.volume
- loc = tank
+ forceMove(tank)
/obj/item/extinguisher/mini/nozzle/Move()
..()
if(loc != tank.loc)
- loc = tank
+ forceMove(tank)
return
/obj/item/extinguisher/mini/nozzle/attack_self(mob/user)
@@ -268,7 +268,7 @@
..()
to_chat(user, "The nozzle snaps back onto the tank!")
tank.on = 0
- loc = tank
+ forceMove(tank)
/obj/item/extinguisher/mini/nozzle/afterattack(atom/target, mob/user)
if(nozzle_mode == EXTINGUISHER)
diff --git a/code/game/objects/items/twohanded.dm b/code/game/objects/items/twohanded.dm
index 9058e837abcb..c11d41eaa812 100644
--- a/code/game/objects/items/twohanded.dm
+++ b/code/game/objects/items/twohanded.dm
@@ -447,7 +447,7 @@
return
if(explosive && wielded)
user.say("[war_cry]")
- explosive.loc = AM
+ explosive.forceMove(AM)
explosive.prime()
qdel(src)
diff --git a/code/game/objects/structures/artstuff.dm b/code/game/objects/structures/artstuff.dm
index c748115c73f3..f4af05c9c944 100644
--- a/code/game/objects/structures/artstuff.dm
+++ b/code/game/objects/structures/artstuff.dm
@@ -20,7 +20,7 @@
var/obj/item/canvas/C = I
user.dropItemToGround(C)
painting = C
- C.loc = get_turf(src)
+ C.forceMove(get_turf(src))
C.layer = layer+0.1
user.visible_message("[user] puts \the [C] on \the [src].","You place \the [C] on \the [src].")
else
@@ -32,7 +32,7 @@
var/turf/T = get_turf(src)
. = ..()
if(painting && painting.loc == T) //Only move if it's near us.
- painting.loc = get_turf(src)
+ painting.forceMove(get_turf(src))
else
painting = null
diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm
index 59814f68341d..0f8ad8425233 100644
--- a/code/game/objects/structures/displaycase.dm
+++ b/code/game/objects/structures/displaycase.dm
@@ -224,7 +224,7 @@
G.use(10)
var/obj/structure/displaycase/display = new(src.loc)
if(electronics)
- electronics.loc = display
+ electronics.forceMove(display)
display.electronics = electronics
if(electronics.one_access)
display.req_one_access = electronics.accesses
diff --git a/code/game/objects/structures/electricchair.dm b/code/game/objects/structures/electricchair.dm
index 81c9e9cc6378..f2b0efb6b791 100644
--- a/code/game/objects/structures/electricchair.dm
+++ b/code/game/objects/structures/electricchair.dm
@@ -15,7 +15,7 @@
var/obj/structure/chair/C = new /obj/structure/chair(loc)
playsound(loc, W.usesound, 50, 1)
C.setDir(dir)
- part.loc = loc
+ part.forceMove(loc)
part.master = null
part = null
qdel(src)
diff --git a/code/game/objects/structures/kitchen_spike.dm b/code/game/objects/structures/kitchen_spike.dm
index 80f3308419a1..5cdadb186cf0 100644
--- a/code/game/objects/structures/kitchen_spike.dm
+++ b/code/game/objects/structures/kitchen_spike.dm
@@ -81,7 +81,7 @@
return
playsound(src.loc, 'sound/effects/splat.ogg', 25, 1)
L.visible_message("[user] slams [L] onto the meat spike!", "[user] slams you onto the meat spike!", "You hear a squishy wet noise.")
- L.loc = src.loc
+ L.forceMove(drop_location())
L.emote("scream")
L.add_splatter_floor()
L.adjustBruteLoss(30)
diff --git a/code/game/objects/structures/noticeboard.dm b/code/game/objects/structures/noticeboard.dm
index aeca1453e3bd..f66783284363 100644
--- a/code/game/objects/structures/noticeboard.dm
+++ b/code/game/objects/structures/noticeboard.dm
@@ -18,7 +18,7 @@
if(notices > 4)
break
if(istype(I, /obj/item/paper))
- I.loc = src
+ I.forceMove(src)
notices++
icon_state = "nboard0[notices]"
@@ -58,7 +58,7 @@
return
var/obj/item/I = locate(href_list["remove"]) in contents
if(istype(I) && I.loc == src)
- I.loc = usr.loc
+ I.forceMove(usr.loc)
usr.put_in_hands(I)
notices--
icon_state = "nboard0[notices]"
diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm
index 26582515f8ae..299409b3a33d 100644
--- a/code/game/objects/structures/tables_racks.dm
+++ b/code/game/objects/structures/tables_racks.dm
@@ -121,7 +121,7 @@
T.quick_empty()
for(var/obj/item/C in oldContents)
- C.loc = src.loc
+ C.forceMove(drop_location())
user.visible_message("[user] empties [I] on [src].")
return
diff --git a/code/game/objects/structures/target_stake.dm b/code/game/objects/structures/target_stake.dm
index f33283ae03fd..2ff0d5ef7a51 100644
--- a/code/game/objects/structures/target_stake.dm
+++ b/code/game/objects/structures/target_stake.dm
@@ -18,7 +18,7 @@
/obj/structure/target_stake/Move()
. = ..()
if(pinned_target)
- pinned_target.loc = loc
+ pinned_target.forceMove(loc)
/obj/structure/target_stake/attackby(obj/item/target/T, mob/user)
if(pinned_target)
@@ -36,7 +36,7 @@
/obj/structure/target_stake/proc/removeTarget(mob/user)
pinned_target.layer = OBJ_LAYER
- pinned_target.loc = user.loc
+ pinned_target.forceMove(user.loc)
pinned_target.nullPinnedLoc()
nullPinnedTarget()
if(ishuman(user))
@@ -44,11 +44,11 @@
user.put_in_hands(pinned_target)
to_chat(user, "You take the target out of the stake.")
else
- pinned_target.loc = get_turf(user)
+ pinned_target.forceMove(user.drop_location())
to_chat(user, "You take the target out of the stake.")
/obj/structure/target_stake/bullet_act(obj/item/projectile/P)
if(pinned_target)
pinned_target.bullet_act(P)
else
- ..()
\ No newline at end of file
+ ..()
diff --git a/code/game/objects/structures/windoor_assembly.dm b/code/game/objects/structures/windoor_assembly.dm
index 14aeefba9fe9..0949f540c729 100644
--- a/code/game/objects/structures/windoor_assembly.dm
+++ b/code/game/objects/structures/windoor_assembly.dm
@@ -216,13 +216,13 @@
if(do_after(user, 40, target = src))
if(!src || electronics)
- W.loc = src.loc
+ W.forceMove(drop_location())
return
to_chat(user, "You install the airlock electronics.")
name = "near finished windoor assembly"
electronics = W
else
- W.loc = loc
+ W.forceMove(drop_location())
//Screwdriver to remove airlock electronics. Step 6 undone.
else if(istype(W, /obj/item/screwdriver))
@@ -240,7 +240,7 @@
var/obj/item/electronics/airlock/ae
ae = electronics
electronics = null
- ae.loc = loc
+ ae.forceMove(drop_location())
else if(istype(W, /obj/item/pen))
var/t = stripped_input(user, "Enter the name for the door.", name, created_name,MAX_NAME_LEN)
@@ -285,7 +285,7 @@
else
windoor.req_access = electronics.accesses
windoor.electronics = electronics
- electronics.loc = windoor
+ electronics.forceMove(windoor)
if(created_name)
windoor.name = created_name
qdel(src)
diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm
index 266be021d612..cc6b0e54d676 100644
--- a/code/game/objects/structures/window.dm
+++ b/code/game/objects/structures/window.dm
@@ -283,11 +283,10 @@
return
if(!disassembled)
playsound(src, breaksound, 70, 1)
- var/turf/T = loc
if(!(flags_1 & NODECONSTRUCT_1))
for(var/i in debris)
var/obj/item/I = i
- I.loc = T
+ I.forceMove(drop_location())
transfer_fingerprints_to(I)
qdel(src)
update_nearby_icons()
diff --git a/code/game/turfs/space/space.dm b/code/game/turfs/space/space.dm
index 54c43cdceab8..a0cf52cae914 100644
--- a/code/game/turfs/space/space.dm
+++ b/code/game/turfs/space/space.dm
@@ -138,7 +138,7 @@
var/mob/living/L = A
if(L.pulling)
var/turf/T = get_step(L.loc,turn(A.dir, 180))
- L.pulling.loc = T
+ L.pulling.forceMove(T)
//now we're on the new z_level, proceed the space drifting
stoplag()//Let a diagonal move finish, if necessary
@@ -199,4 +199,3 @@
destination_x = dest_x
destination_y = dest_y
destination_z = dest_z
-
diff --git a/code/modules/admin/fun_balloon.dm b/code/modules/admin/fun_balloon.dm
index 3336f3d0a8ba..480ba20b4dcb 100644
--- a/code/modules/admin/fun_balloon.dm
+++ b/code/modules/admin/fun_balloon.dm
@@ -95,7 +95,7 @@
var/obj/docking_port/stationary/SM = S
if(SM.id == "emergency_home")
var/new_dir = turn(SM.dir, 180)
- SM.loc = get_ranged_target_turf(SM, new_dir, rand(3,15))
+ SM.forceMove(get_ranged_target_turf(SM, new_dir, rand(3,15)))
break
qdel(src)
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index c5fb94d954af..b6cb9691c9c4 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -1301,7 +1301,7 @@
if(alert(usr, "Send [key_name(M)] to Prison?", "Message", "Yes", "No") != "Yes")
return
- M.loc = pick(GLOB.prisonwarp)
+ M.forceMove(pick(GLOB.prisonwarp))
to_chat(M, "You have been sent to Prison!")
log_admin("[key_name(usr)] has sent [key_name(M)] to Prison!")
@@ -1537,7 +1537,7 @@
C.admin_ghost()
var/mob/dead/observer/A = C.mob
A.ManualFollow(AM)
-
+
else if(href_list["admingetmovable"])
if(!check_rights(R_ADMIN))
return
diff --git a/code/modules/admin/verbs/adminjump.dm b/code/modules/admin/verbs/adminjump.dm
index 1e7f89fc8db5..779ea64640e2 100644
--- a/code/modules/admin/verbs/adminjump.dm
+++ b/code/modules/admin/verbs/adminjump.dm
@@ -34,7 +34,7 @@
log_admin("[key_name(usr)] jumped to [T.x],[T.y],[T.z] in [T.loc]")
message_admins("[key_name_admin(usr)] jumped to [T.x],[T.y],[T.z] in [T.loc]")
- usr.loc = T
+ usr.forceMove(T)
SSblackbox.record_feedback("tally", "admin_verb", 1, "Jump To Turf") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
return
@@ -137,7 +137,7 @@
admin_ticket_log(M, msg)
if(M)
M.forceMove(get_turf(usr))
- usr.loc = M.loc
+ usr.forceMove(M.loc)
SSblackbox.record_feedback("tally", "admin_verb", 1, "Get Key") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/sendmob(mob/M in sortmobs())
diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm
index 7b46ee6577cc..409c8a9b3b71 100644
--- a/code/modules/admin/verbs/debug.dm
+++ b/code/modules/admin/verbs/debug.dm
@@ -737,7 +737,7 @@ GLOBAL_PROTECT(LastAdminCalledProc)
Plasma.air_contents.gases[/datum/gas/plasma][MOLES] = 70
Rad.drainratio = 0
Rad.loaded_tank = Plasma
- Plasma.loc = Rad
+ Plasma.forceMove(Rad)
if(!Rad.active)
Rad.toggle_power()
@@ -936,4 +936,3 @@ GLOBAL_PROTECT(LastAdminCalledProc)
return
sort = sortlist[sort]
profile_show(src, sort)
-
diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm
index fd08e4cd5dba..439ea314bb43 100644
--- a/code/modules/assembly/holder.dm
+++ b/code/modules/assembly/holder.dm
@@ -87,10 +87,10 @@
return 0
if(a_left)
a_left.holder = null
- a_left.loc = T
+ a_left.forceMove(T)
if(a_right)
a_right.holder = null
- a_right.loc = T
+ a_right.forceMove(T)
qdel(src)
else
..()
diff --git a/code/modules/assembly/shock_kit.dm b/code/modules/assembly/shock_kit.dm
index 1167caa8df3f..174312df1e60 100644
--- a/code/modules/assembly/shock_kit.dm
+++ b/code/modules/assembly/shock_kit.dm
@@ -15,11 +15,8 @@
/obj/item/assembly/shock_kit/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/wrench))
- var/turf/T = loc
- if(ismob(T))
- T = T.loc
- part1.loc = T
- part2.loc = T
+ part1.forceMove(drop_location())
+ part2.forceMove(drop_location())
part1.master = null
part2.master = null
part1 = null
diff --git a/code/modules/atmospherics/machinery/portable/pump.dm b/code/modules/atmospherics/machinery/portable/pump.dm
index 3f2bceaa045d..db153d60a46a 100644
--- a/code/modules/atmospherics/machinery/portable/pump.dm
+++ b/code/modules/atmospherics/machinery/portable/pump.dm
@@ -135,7 +135,7 @@
investigate_log("was set to [pump.target_pressure] kPa by [key_name(usr)].", INVESTIGATE_ATMOS)
if("eject")
if(holding)
- holding.loc = get_turf(src)
+ holding.forceMove(drop_location())
holding = null
. = TRUE
update_icon()
diff --git a/code/modules/atmospherics/machinery/portable/scrubber.dm b/code/modules/atmospherics/machinery/portable/scrubber.dm
index 564e6d294f6a..3ba7e0a11004 100644
--- a/code/modules/atmospherics/machinery/portable/scrubber.dm
+++ b/code/modules/atmospherics/machinery/portable/scrubber.dm
@@ -96,7 +96,7 @@
. = TRUE
if("eject")
if(holding)
- holding.loc = get_turf(src)
+ holding.forceMove(drop_location())
holding = null
. = TRUE
if("toggle_filter")
diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm
index 5691dbb782cf..15d4579d33d2 100644
--- a/code/modules/clothing/head/helmet.dm
+++ b/code/modules/clothing/head/helmet.dm
@@ -283,7 +283,7 @@
for(var/obj/item/device/flashlight/seclite/S in src)
to_chat(user, "You unscrew the seclite from [src].")
F = null
- S.loc = get_turf(user)
+ S.forceMove(user.drop_location())
update_helmlight(user)
S.update_brightness(user)
update_icon()
diff --git a/code/modules/clothing/spacesuits/chronosuit.dm b/code/modules/clothing/spacesuits/chronosuit.dm
index 1715636b5797..2b25188b809c 100644
--- a/code/modules/clothing/spacesuits/chronosuit.dm
+++ b/code/modules/clothing/spacesuits/chronosuit.dm
@@ -98,7 +98,7 @@
I.flags_1 &= ~NODROP_1
if(camera)
camera.remove_target_ui()
- camera.loc = user
+ camera.forceMove(user)
teleport_now.UpdateButtonIcon()
/obj/item/clothing/suit/space/chronos/proc/chronowalk(atom/location)
@@ -278,19 +278,19 @@
if(loc == user)
forceMove(get_turf(user))
if(user.client && user.client.eye != src)
- src.loc = get_turf(user)
+ src.forceMove(user.drop_location())
user.reset_perspective(src)
user.set_machine(src)
var/atom/step = get_step(src, direction)
if(step)
if((step.x <= TRANSITIONEDGE) || (step.x >= (world.maxx - TRANSITIONEDGE - 1)) || (step.y <= TRANSITIONEDGE) || (step.y >= (world.maxy - TRANSITIONEDGE - 1)))
if(!src.Move(step))
- src.loc = step
+ src.forceMove(step)
else
- src.loc = step
+ src.forceMove(step)
if((x == holder.x) && (y == holder.y) && (z == holder.z))
remove_target_ui()
- loc = user
+ forceMove(user)
else if(!target_ui)
create_target_ui()
phase_time = world.time + phase_time_length
diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm
index cc1df785b521..8e2251980d62 100644
--- a/code/modules/clothing/spacesuits/hardsuit.dm
+++ b/code/modules/clothing/spacesuits/hardsuit.dm
@@ -136,7 +136,7 @@
return
jetpack.turn_off()
- jetpack.loc = get_turf(src)
+ jetpack.forceMove(drop_location())
jetpack = null
to_chat(user, "You successfully remove the jetpack from [src].")
diff --git a/code/modules/clothing/under/accessories.dm b/code/modules/clothing/under/accessories.dm
index 7ec7d75bac55..49364e76d9c2 100755
--- a/code/modules/clothing/under/accessories.dm
+++ b/code/modules/clothing/under/accessories.dm
@@ -15,11 +15,11 @@
if(U.pockets) // storage items conflict
return FALSE
- pockets.loc = U
+ pockets.forceMove(U)
U.pockets = pockets
U.attached_accessory = src
- loc = U
+ forceMove(U)
layer = FLOAT_LAYER
plane = FLOAT_PLANE
if(minimize_when_attached)
@@ -39,7 +39,7 @@
/obj/item/clothing/accessory/proc/detach(obj/item/clothing/under/U, user)
if(pockets && pockets == U.pockets)
- pockets.loc = src
+ pockets.forceMove(src)
U.pockets = null
for(var/armor_type in armor)
diff --git a/code/modules/games/cards.dm b/code/modules/games/cards.dm
index babfb37940b5..e7bf3ea9d740 100644
--- a/code/modules/games/cards.dm
+++ b/code/modules/games/cards.dm
@@ -187,7 +187,7 @@
ASSERT(H)
usr.visible_message("\The [usr] plays \the [card.name].")
- H.loc = get_step(usr,usr.dir)
+ H.forceMove(get_step(usr,usr.dir))
src.update_icon()
diff --git a/code/modules/holiday/halloween.dm b/code/modules/holiday/halloween.dm
index f8716870e18a..a27db8dd380c 100644
--- a/code/modules/holiday/halloween.dm
+++ b/code/modules/holiday/halloween.dm
@@ -146,7 +146,7 @@
timer = rand(1,15)
/mob/living/simple_animal/shade/howling_ghost/proc/EtherealMove(direction)
- loc = get_step(src, direction)
+ forceMove(get_step(src, direction))
setDir(direction)
/mob/living/simple_animal/shade/howling_ghost/proc/roam()
@@ -220,7 +220,7 @@
timer = rand(5,15)
playsound(M.loc, pick('sound/spookoween/scary_horn.ogg','sound/spookoween/scary_horn2.ogg', 'sound/spookoween/scary_horn3.ogg'), 300, 1)
spawn(12)
- loc = M.loc
+ forceMove(M.loc)
/mob/living/simple_animal/hostile/retaliate/clown/insane/MoveToTarget()
stalk(target)
diff --git a/code/modules/holodeck/items.dm b/code/modules/holodeck/items.dm
index f8b708ee5812..1dcab21e16f7 100644
--- a/code/modules/holodeck/items.dm
+++ b/code/modules/holodeck/items.dm
@@ -113,7 +113,7 @@
if(user.grab_state < GRAB_AGGRESSIVE)
to_chat(user, "You need a better grip to do that!")
return
- L.loc = src.loc
+ L.forceMove(loc)
L.Knockdown(100)
visible_message("[user] dunks [L] into \the [src]!")
user.stop_pulling()
diff --git a/code/modules/hydroponics/beekeeping/beebox.dm b/code/modules/hydroponics/beekeeping/beebox.dm
index 31377858714f..cf12ccb3ce2e 100644
--- a/code/modules/hydroponics/beekeeping/beebox.dm
+++ b/code/modules/hydroponics/beekeeping/beebox.dm
@@ -179,7 +179,7 @@
bees -= B
B.beehome = null
if(B.loc == src)
- B.loc = get_turf(src)
+ B.forceMove(drop_location())
relocated++
if(relocated)
to_chat(user, "This queen has a different reagent to some of the bees who live here, those bees will not return to this apiary!")
@@ -202,7 +202,7 @@
if(B.isqueen)
continue
if(B.loc == src)
- B.loc = get_turf(src)
+ B.forceMove(drop_location())
B.target = user
bees = TRUE
if(bees)
@@ -222,7 +222,7 @@
var/obj/item/honey_frame/HF = pick_n_take(honey_frames)
if(HF)
if(!user.put_in_active_hand(HF))
- HF.loc = get_turf(src)
+ HF.forceMove(drop_location())
visible_message("[user] removes a frame from the apiary.")
var/amtH = HF.honeycomb_capacity
@@ -230,7 +230,7 @@
while(honeycombs.len && amtH) //let's pretend you always grab the frame with the most honeycomb on it
var/obj/item/reagent_containers/honeycomb/HC = pick_n_take(honeycombs)
if(HC)
- HC.loc = get_turf(user)
+ HC.forceMove(drop_location())
amtH--
fallen++
if(fallen)
@@ -242,12 +242,12 @@
to_chat(user, "There is no queen bee to remove!")
return
var/obj/item/queen_bee/QB = new()
- queen_bee.loc = QB
+ queen_bee.forceMove(QB)
bees -= queen_bee
QB.queen = queen_bee
QB.name = queen_bee.name
if(!user.put_in_active_hand(QB))
- QB.loc = get_turf(src)
+ QB.forceMove(drop_location())
visible_message("[user] removes the queen from the apiary.")
queen_bee = null
@@ -255,8 +255,8 @@
new /obj/item/stack/sheet/mineral/wood (loc, 20)
for(var/mob/living/simple_animal/hostile/poison/bees/B in bees)
if(B.loc == src)
- B.loc = get_turf(src)
+ B.forceMove(drop_location())
for(var/obj/item/honey_frame/HF in honey_frames)
if(HF.loc == src)
- HF.loc = get_turf(src)
+ HF.forceMove(drop_location())
qdel(src)
diff --git a/code/modules/hydroponics/biogenerator.dm b/code/modules/hydroponics/biogenerator.dm
index 324a94128d6d..8939b6013812 100644
--- a/code/modules/hydroponics/biogenerator.dm
+++ b/code/modules/hydroponics/biogenerator.dm
@@ -78,7 +78,7 @@
if(default_deconstruction_screwdriver(user, "biogen-empty-o", "biogen-empty", O))
if(beaker)
var/obj/item/reagent_containers/glass/B = beaker
- B.loc = loc
+ B.forceMove(drop_location())
beaker = null
update_icon()
return
diff --git a/code/modules/hydroponics/gene_modder.dm b/code/modules/hydroponics/gene_modder.dm
index 86a3b9e6f605..fe8a1010532f 100644
--- a/code/modules/hydroponics/gene_modder.dm
+++ b/code/modules/hydroponics/gene_modder.dm
@@ -260,7 +260,7 @@
if(href_list["eject_seed"] && !operation)
if (seed)
- seed.loc = src.loc
+ seed.forceMove(drop_location())
seed.verb_pickup()
seed = null
update_genes()
@@ -275,7 +275,7 @@
update_icon()
else if(href_list["eject_disk"] && !operation)
if (disk)
- disk.loc = src.loc
+ disk.forceMove(drop_location())
disk.verb_pickup()
disk = null
update_genes()
@@ -368,7 +368,7 @@
/obj/machinery/plantgenes/proc/insert_seed(obj/item/seeds/S)
if(!istype(S) || seed)
return
- S.loc = src
+ S.forceMove(src)
seed = S
update_genes()
update_icon()
diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm
index 9eafcec71b65..5c1fafc1c400 100644
--- a/code/modules/hydroponics/hydroponics.dm
+++ b/code/modules/hydroponics/hydroponics.dm
@@ -108,7 +108,7 @@
var/needs_update = 0 // Checks if the icon needs updating so we don't redraw empty trays every time
if(myseed && (myseed.loc != src))
- myseed.loc = src
+ myseed.forceMove(src)
if(self_sustaining)
adjustNutri(1)
diff --git a/code/modules/hydroponics/seed_extractor.dm b/code/modules/hydroponics/seed_extractor.dm
index 0899a21132ef..b79d0652aa4d 100644
--- a/code/modules/hydroponics/seed_extractor.dm
+++ b/code/modules/hydroponics/seed_extractor.dm
@@ -17,7 +17,7 @@
return
while(t_amount < t_max)
var/obj/item/seeds/t_prod = F.seed.Copy()
- t_prod.loc = seedloc
+ t_prod.forceMove(seedloc)
t_amount++
qdel(O)
return 1
@@ -29,7 +29,7 @@
return
while(t_amount < t_max)
var/obj/item/seeds/t_prod = F.seed.Copy()
- t_prod.loc = seedloc
+ t_prod.forceMove(seedloc)
t_amount++
qdel(O)
return 1
@@ -168,7 +168,7 @@
for (var/obj/T in contents)//Now we find the seed we need to vend
var/obj/item/seeds/O = T
if (O.plantname == href_list["name"] && O.lifespan == href_list["li"] && O.endurance == href_list["en"] && O.maturation == href_list["ma"] && O.production == href_list["pr"] && O.yield == href_list["yi"] && O.potency == href_list["pot"])
- O.loc = src.loc
+ O.forceMove(drop_location())
break
src.updateUsrDialog()
diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm
index 84198d6fe355..b7673a964093 100644
--- a/code/modules/library/lib_items.dm
+++ b/code/modules/library/lib_items.dm
@@ -49,7 +49,7 @@
anchored = TRUE
for(var/obj/item/I in loc)
if(istype(I, /obj/item/book))
- I.loc = src
+ I.forceMove(src)
update_icon()
@@ -123,7 +123,7 @@
if(!user.get_active_held_item())
user.put_in_hands(choice)
else
- choice.loc = get_turf(src)
+ choice.forceMove(drop_location())
update_icon()
@@ -289,7 +289,7 @@
user.put_in_hands(B)
return
else
- B.loc = src.loc
+ B.forceMove(drop_location())
qdel(src)
return
return
diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm
index 52077d2367a5..54a6caffef14 100644
--- a/code/modules/library/lib_machines.dm
+++ b/code/modules/library/lib_machines.dm
@@ -541,7 +541,7 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums
cache = null
if(href_list["eject"])
for(var/obj/item/book/B in contents)
- B.loc = src.loc
+ B.forceMove(drop_location())
src.add_fingerprint(usr)
src.updateUsrDialog()
return
@@ -589,4 +589,4 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums
B.icon_state = "book[rand(1,7)]"
qdel(P)
else
- P.loc = loc
+ P.forceMove(drop_location())
diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm
index 91e847ffc679..665654088f41 100644
--- a/code/modules/mining/lavaland/necropolis_chests.dm
+++ b/code/modules/mining/lavaland/necropolis_chests.dm
@@ -173,7 +173,7 @@
to_chat(M, "Your vision returns to normal.")
wisp.stop_orbit()
- wisp.loc = src
+ wisp.forceMove(src)
icon_state = "lantern-blue"
SSblackbox.record_feedback("tally", "wisp_lantern", 1, "Returned")
@@ -413,7 +413,7 @@
/obj/item/device/shared_storage/attackby(obj/item/W, mob/user, params)
if(bag)
- bag.loc = user
+ bag.forceMove(user)
bag.attackby(W, user, params)
@@ -422,7 +422,7 @@
return
if(loc == user && user.back && user.back == src)
if(bag)
- bag.loc = user
+ bag.forceMove(user)
bag.attack_hand(user)
else
..()
diff --git a/code/modules/mining/lavaland/ruins/gym.dm b/code/modules/mining/lavaland/ruins/gym.dm
index 2eb30dc7119e..efda0f9c8f52 100644
--- a/code/modules/mining/lavaland/ruins/gym.dm
+++ b/code/modules/mining/lavaland/ruins/gym.dm
@@ -29,7 +29,7 @@
icon_state = "fitnesslifter2"
user.setDir(SOUTH)
user.Stun(80)
- user.loc = src.loc
+ user.forceMove(src.loc)
var/bragmessage = pick("pushing it to the limit","going into overdrive","burning with determination","rising up to the challenge", "getting strong now","getting ripped")
user.visible_message("[user] is [bragmessage]!")
var/lifts = 0
@@ -67,7 +67,7 @@
icon_state = "fitnessweight-c"
user.setDir(SOUTH)
user.Stun(80)
- user.loc = src.loc
+ user.forceMove(src.loc)
var/mutable_appearance/swole_overlay = mutable_appearance(icon, "fitnessweight-w", WALL_OBJ_LAYER)
add_overlay(swole_overlay)
var/bragmessage = pick("pushing it to the limit","going into overdrive","burning with determination","rising up to the challenge", "getting strong now","getting ripped")
@@ -93,4 +93,4 @@
var/finishmessage = pick("You feel stronger!","You feel like you can take on the world!","You feel robust!","You feel indestructible!")
icon_state = "fitnessweight"
cut_overlay(swole_overlay)
- to_chat(user, "[finishmessage]")
\ No newline at end of file
+ to_chat(user, "[finishmessage]")
diff --git a/code/modules/mining/machine_stacking.dm b/code/modules/mining/machine_stacking.dm
index 3c7e73610529..44f13d0a4ffe 100644
--- a/code/modules/mining/machine_stacking.dm
+++ b/code/modules/mining/machine_stacking.dm
@@ -88,7 +88,7 @@
stack_list[inp.type] = s
var/obj/item/stack/sheet/storage = stack_list[inp.type]
storage.amount += inp.amount //Stack the sheets
- inp.loc = null //Let the old sheet garbage collect
+ qdel(inp) //Let the old sheet garbage collect
while(storage.amount > stack_amt) //Get rid of excessive stackage
var/obj/item/stack/sheet/out = new inp.type()
out.amount = stack_amt
diff --git a/code/modules/mob/camera/camera.dm b/code/modules/mob/camera/camera.dm
index b107004878b3..9a95bc9a4a13 100644
--- a/code/modules/mob/camera/camera.dm
+++ b/code/modules/mob/camera/camera.dm
@@ -13,3 +13,6 @@
/mob/camera/experience_pressure_difference()
return
+
+/mob/camera/forceMove(atom/destination)
+ loc = destination
diff --git a/code/modules/mob/dead/dead.dm b/code/modules/mob/dead/dead.dm
index e1b27ed51f35..59e8911659c4 100644
--- a/code/modules/mob/dead/dead.dm
+++ b/code/modules/mob/dead/dead.dm
@@ -28,6 +28,9 @@ INITIALIZE_IMMEDIATE(/mob/dead)
/mob/dead/ConveyorMove() //lol
return
+/mob/dead/forceMove(atom/destination)
+ loc = destination
+
/mob/dead/Stat()
..()
diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm
index 0f06ea4ff4f4..81b4f377876a 100644
--- a/code/modules/mob/dead/new_player/new_player.dm
+++ b/code/modules/mob/dead/new_player/new_player.dm
@@ -21,9 +21,9 @@
S.Fade(TRUE)
if(length(GLOB.newplayer_start))
- loc = pick(GLOB.newplayer_start)
+ forceMove(pick(GLOB.newplayer_start))
else
- loc = locate(1,1,1)
+ forceMove(locate(1,1,1))
ComponentInitialize()
@@ -262,7 +262,7 @@
var/obj/effect/landmark/observer_start/O = locate(/obj/effect/landmark/observer_start) in GLOB.landmarks_list
to_chat(src, "Now teleporting.")
if (O)
- observer.loc = O.loc
+ observer.forceMove(O.loc)
else
to_chat(src, "Teleporting failed. Ahelp an admin please")
stack_trace("There's no freaking observer landmark available on this map or you're making observers before the map is initialised")
diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm
index d9824d944d3d..343f82b6f134 100644
--- a/code/modules/mob/dead/observer/observer.dm
+++ b/code/modules/mob/dead/observer/observer.dm
@@ -108,7 +108,7 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER)
else
T = locate(round(world.maxx/2), round(world.maxy/2), ZLEVEL_STATION_PRIMARY) //middle of the station
- loc = T
+ forceMove(T)
if(!name) //To prevent nameless ghosts
name = random_unique_name(gender)
@@ -287,10 +287,10 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
var/oldloc = loc
if(NewLoc)
- loc = NewLoc
+ forceMove(NewLoc)
update_parallax_contents()
else
- loc = get_turf(src) //Get out of closets and such as a ghost
+ forceMove(get_turf(src)) //Get out of closets and such as a ghost
if((direct & NORTH) && y < world.maxy)
y++
else if((direct & SOUTH) && y > 1)
@@ -370,7 +370,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
if(!L || !L.len)
to_chat(usr, "No area available.")
- usr.loc = pick(L)
+ usr.forceMove(pick(L))
update_parallax_contents()
/mob/dead/observer/verb/follow()
@@ -444,7 +444,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
var/turf/T = get_turf(M) //Turf of the destination mob
if(T && isturf(T)) //Make sure the turf exists, then move the source to that destination.
- A.loc = T
+ A.forceMove(T)
A.update_parallax_contents()
else
to_chat(A, "This mob is not located in the game world.")
diff --git a/code/modules/mob/living/brain/MMI.dm b/code/modules/mob/living/brain/MMI.dm
index e4d49d7b70cd..e090592ba39f 100644
--- a/code/modules/mob/living/brain/MMI.dm
+++ b/code/modules/mob/living/brain/MMI.dm
@@ -57,7 +57,7 @@
brainmob = newbrain.brainmob
newbrain.brainmob = null
- brainmob.loc = src
+ brainmob.forceMove(src)
brainmob.container = src
if(!newbrain.damaged_brain) // the brain organ hasn't been beaten to death.
brainmob.stat = CONSCIOUS //we manually revive the brain mob
@@ -90,7 +90,7 @@
/obj/item/device/mmi/proc/eject_brain(mob/user)
brainmob.container = null //Reset brainmob mmi var.
- brainmob.loc = brain //Throw mob into brain.
+ brainmob.forceMove(brain) //Throw mob into brain.
brainmob.stat = DEAD
brainmob.emp_damage = 0
brainmob.reset_perspective() //so the brainmob follows the brain organ instead of the mmi. And to update our vision
@@ -120,7 +120,7 @@
if(ishuman(L))
var/mob/living/carbon/human/H = L
var/obj/item/organ/brain/newbrain = H.getorgan(/obj/item/organ/brain)
- newbrain.loc = src
+ newbrain.forceMove(src)
brain = newbrain
else if(!brain)
brain = new(src)
diff --git a/code/modules/mob/living/brain/posibrain.dm b/code/modules/mob/living/brain/posibrain.dm
index ef704ef13632..33a274c7623e 100644
--- a/code/modules/mob/living/brain/posibrain.dm
+++ b/code/modules/mob/living/brain/posibrain.dm
@@ -157,7 +157,7 @@ GLOBAL_VAR(posibrain_notify_cooldown)
new_name = pick(possible_names)
brainmob.name = "[new_name]-[rand(100, 999)]"
brainmob.real_name = brainmob.name
- brainmob.loc = src
+ brainmob.forceMove(src)
brainmob.container = src
if(autoping)
ping_ghosts("created", TRUE)
diff --git a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
index eb17ecc40a6b..cf8a833bd86d 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
@@ -277,7 +277,7 @@ Doesn't work on other aliens/AI.*/
if(user.stomach_contents.len)
for(var/atom/movable/A in user.stomach_contents)
user.stomach_contents.Remove(A)
- A.loc = user.loc
+ A.forceMove(user.drop_location())
if(isliving(A))
var/mob/M = A
M.reset_perspective()
diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
index fdca497bc308..fc759ec8277b 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
@@ -106,7 +106,7 @@
for(var/atom/movable/A in stomach_contents)
stomach_contents.Remove(A)
new_xeno.stomach_contents.Add(A)
- A.loc = new_xeno
+ A.forceMove(new_xeno)
..()
//For alien evolution/promotion/queen finder procs. Checks for an active alien of that type
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index 5f16b040e2ae..13aa33aacaac 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -38,7 +38,7 @@
if(prob(src.getBruteLoss() - 50))
for(var/atom/movable/A in stomach_contents)
- A.loc = loc
+ A.forceMove(drop_location())
stomach_contents.Remove(A)
src.gib()
@@ -332,7 +332,7 @@
if (client)
client.screen -= W
if (W)
- W.loc = loc
+ W.forceMove(drop_location())
W.dropped(src)
if (W)
W.layer = initial(W.layer)
@@ -345,7 +345,7 @@
if (client)
client.screen -= W
if (W)
- W.loc = loc
+ W.forceMove(drop_location())
W.dropped(src)
if (W)
W.layer = initial(W.layer)
@@ -372,7 +372,7 @@
else
if(I == handcuffed)
- handcuffed.loc = loc
+ handcuffed.forceMove(drop_location())
handcuffed.dropped(src)
handcuffed = null
if(buckled && buckled.buckle_requires_restraints)
@@ -380,7 +380,7 @@
update_handcuffed()
return
if(I == legcuffed)
- legcuffed.loc = loc
+ legcuffed.forceMove(drop_location())
legcuffed.dropped()
legcuffed = null
update_inv_legcuffed()
@@ -786,7 +786,7 @@
if(prob(50))
organs_amt++
O.Remove(src)
- O.loc = get_turf(src)
+ O.forceMove(drop_location())
if(organs_amt)
to_chat(user, "You retrieve some of [src]\'s internal organs!")
diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm
index 6a2205523906..8899c34e1e99 100644
--- a/code/modules/mob/living/carbon/human/human_defense.dm
+++ b/code/modules/mob/living/carbon/human/human_defense.dm
@@ -131,7 +131,7 @@
var/obj/item/bodypart/L = pick(bodyparts)
L.embedded_objects |= I
I.add_mob_blood(src)//it embedded itself in you, of course it's bloody!
- I.loc = src
+ I.forceMove(src)
L.receive_damage(I.w_class*I.embedded_impact_pain_multiplier)
visible_message("[I] embeds itself in [src]'s [L.name]!","[I] embeds itself in your [L.name]!")
hitpush = FALSE
diff --git a/code/modules/mob/living/carbon/human/interactive.dm b/code/modules/mob/living/carbon/human/interactive.dm
index afa167ced63c..19fbd2c7de3d 100644
--- a/code/modules/mob/living/carbon/human/interactive.dm
+++ b/code/modules/mob/living/carbon/human/interactive.dm
@@ -219,7 +219,7 @@
if(prob(25))
var/cType = pick(list(SNPC_BRUTE,SNPC_STEALTH,SNPC_MARTYR,SNPC_PSYCHO))
T.makeTraitor(cType)
- T.loc = pick(get_area_turfs(T.job2area(T.myjob)))
+ T.forceMove(pick(get_area_turfs(T.job2area(T.myjob))))
if(choice == "Custom")
var/cjob = input("Choose Job") as null|anything in SSjob.occupations
if(cjob)
@@ -256,7 +256,7 @@
var/doTele = input("Place the SNPC in their department?") as null|anything in list("Yes","No")
if(doTele)
if(doTele == "Yes")
- T.loc = pick(get_area_turfs(T.job2area(T.myjob)))
+ T.forceMove(pick(get_area_turfs(T.job2area(T.myjob))))
/mob/living/carbon/human/interactive/proc/doSetup()
Path_ID = new /obj/item/card/id(src)
@@ -506,7 +506,7 @@
var/list/slots = list ("left pocket" = slot_l_store,"right pocket" = slot_r_store,"left hand" = slot_hands,"right hand" = slot_hands)
if(hands)
slots = list ("left hand" = slot_hands,"right hand" = slot_hands)
- G.loc = src
+ G.forceMove(src)
if(G.force && G.force > best_force)
best_force = G.force
equip_in_one_of_slots(G, slots)
@@ -931,7 +931,7 @@
/mob/living/carbon/human/interactive/proc/npcDrop(var/obj/item/A,var/blacklist = 0)
if(blacklist)
blacklistItems += A
- A.loc = get_turf(src) // drop item works inconsistently
+ A.forceMove(drop_location()) // drop item works inconsistently
enforce_hands()
update_icons()
@@ -956,7 +956,7 @@
retal_target = traitorTarget
else
var/obj/item/I = traitorTarget
- I.loc = get_turf(traitorTarget) // pull it outta them
+ I.forceMove(get_turf(I)) // pull it outta them
else
take_to_slot(traitorTarget)
if(SNPC_MARTYR)
@@ -1315,7 +1315,7 @@
customEmote("[src] [pick("gibbers","drools","slobbers","claps wildly","spits")], grabbing various foodstuffs from [SF] and sticking them in it's mouth!")
for(var/obj/item/A in SF.contents)
if(prob(smartness/2))
- A.loc = src
+ A.forceMove(src)
if(foundCustom)
@@ -1398,7 +1398,7 @@
if(!Adjacent(toGrab))
tryWalk(toGrab)
else
- toGrab.loc = src
+ toGrab.forceMove(src)
if(finishedList.len > 0)
var/obj/structure/table/reinforced/RT
@@ -1563,7 +1563,7 @@
var/obj/item/W = main_hand
W.attack(TARGET,src)
else
- G.loc = get_turf(src) // drop item works inconsistently
+ G.forceMove(drop_location()) // drop item works inconsistently
enforce_hands()
update_icons()
else
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index 1cc1c3b16bd4..2d9e21dbeda5 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -294,7 +294,7 @@
if(prob(I.embedded_fall_chance))
BP.receive_damage(I.w_class*I.embedded_fall_pain_multiplier)
BP.embedded_objects -= I
- I.loc = get_turf(src)
+ I.forceMove(drop_location())
visible_message("[I] falls out of [name]'s [BP.name]!","[I] falls out of your [BP.name]!")
if(!has_embedded_objects())
clear_alert("embeddedobject")
diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm
index 47d5a0ffd84e..86314e33d722 100644
--- a/code/modules/mob/living/silicon/ai/ai.dm
+++ b/code/modules/mob/living/silicon/ai/ai.dm
@@ -117,7 +117,7 @@
job = "AI"
eyeobj.ai = src
- eyeobj.loc = src.loc
+ eyeobj.forceMove(src.loc)
rename_self("ai")
holo_icon = getHologramIcon(icon('icons/mob/ai.dmi',"default"))
diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm
index ceebab3ca6b1..96599be846cd 100644
--- a/code/modules/mob/living/simple_animal/friendly/dog.dm
+++ b/code/modules/mob/living/simple_animal/friendly/dog.dm
@@ -133,7 +133,7 @@
switch(remove_from)
if("head")
if(inventory_head)
- inventory_head.loc = src.loc
+ inventory_head.forceMove(drop_location())
inventory_head = null
update_corgi_fluff()
regenerate_icons()
@@ -142,7 +142,7 @@
return
if("back")
if(inventory_back)
- inventory_back.loc = src.loc
+ inventory_back.forceMove(drop_location())
inventory_back = null
update_corgi_fluff()
regenerate_icons()
diff --git a/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm b/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm
index 1e6fc92239d9..3b23e4adc096 100644
--- a/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm
+++ b/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm
@@ -67,7 +67,7 @@
L.dropItemToGround(src)
contents -= drone
- drone.loc = get_turf(src)
+ drone.forceMove(drop_location())
drone.reset_perspective()
drone.setDir(SOUTH )//Looks better
drone.visible_message("[drone] uncurls!")
diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm
index f55cdc5715df..c6c83df06bdd 100644
--- a/code/modules/mob/living/simple_animal/parrot.dm
+++ b/code/modules/mob/living/simple_animal/parrot.dm
@@ -125,7 +125,7 @@
/mob/living/simple_animal/parrot/death(gibbed)
if(held_item)
- held_item.loc = src.loc
+ held_item.forceMove(drop_location())
held_item = null
walk(src,0)
@@ -700,7 +700,7 @@
continue
held_item = I
- I.loc = src
+ I.forceMove(src)
visible_message("[src] grabs [held_item]!", "You grab [held_item]!", "You hear the sounds of wings flapping furiously.")
return held_item
@@ -775,7 +775,7 @@
if(!drop_gently)
if(istype(held_item, /obj/item/grenade))
var/obj/item/grenade/G = held_item
- G.loc = src.loc
+ G.forceMove(drop_location())
G.prime()
to_chat(src, "You let go of [held_item]!")
held_item = null
@@ -783,7 +783,7 @@
to_chat(src, "You drop [held_item].")
- held_item.loc = src.loc
+ held_item.forceMove(drop_location())
held_item = null
return 1
@@ -799,7 +799,7 @@
for(var/atom/movable/AM in view(src,1))
for(var/perch_path in desired_perches)
if(istype(AM, perch_path))
- src.loc = AM.loc
+ src.forceMove(AM.loc)
icon_state = icon_sit
return
to_chat(src, "There is no perch nearby to sit on!")
@@ -836,7 +836,7 @@
/mob/living/simple_animal/parrot/proc/perch_on_human(mob/living/carbon/human/H)
if(!H)
return
- loc = get_turf(H)
+ forceMove(get_turf(H))
H.buckle_mob(src, force=1)
pixel_y = 9
pixel_x = pick(-8,8) //pick left or right shoulder
@@ -994,7 +994,7 @@
return
var/datum/disease/parrot_possession/P = new
P.parrot = src
- loc = H
+ forceMove(H)
H.ForceContractDisease(P)
parrot_interest = null
H.visible_message("[src] dive bombs into [H]'s chest and vanishes!", "[src] dive bombs into your chest, vanishing! This can't be good!")
diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm
index b3881a11a182..cbc74317fe09 100644
--- a/code/modules/mob/mob_movement.dm
+++ b/code/modules/mob/mob_movement.dm
@@ -25,7 +25,7 @@
return
mob.control_object.setDir(direct)
else
- mob.control_object.loc = get_step(mob.control_object,direct)
+ mob.control_object.forceMove(get_step(mob.control_object,direct))
return
#define MOVEMENT_DELAY_BUFFER 0.75
@@ -114,7 +114,7 @@
if(LAZYLEN(mob.user_movement_hooks))
for(var/obj/O in mob.user_movement_hooks)
O.intercept_user_move(direct, mob, n, oldloc)
-
+
var/atom/movable/P = mob.pulling
if(P && !ismob(P) && P.density)
mob.dir = turn(mob.dir, 180)
diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm
index abe68d3700e3..c501984de82a 100644
--- a/code/modules/mob/transform_procs.dm
+++ b/code/modules/mob/transform_procs.dm
@@ -58,7 +58,6 @@
O.suiciding = suiciding
if(hellbound)
O.hellbound = hellbound
- O.loc = loc
O.a_intent = INTENT_HARM
//keep viruses?
@@ -113,7 +112,7 @@
var/obj/item/bodypart/chest/torso = O.get_bodypart("chest")
if(cavity_object)
torso.cavity_item = cavity_object //cavity item is given to the new chest
- cavity_object.loc = O
+ cavity_object.forceMove(O)
for(var/missing_zone in missing_bodyparts_zones)
var/obj/item/bodypart/BP = O.get_bodypart(missing_zone)
@@ -220,8 +219,6 @@
if(hellbound)
O.hellbound = hellbound
- O.loc = loc
-
//keep viruses?
if (tr_flags & TR_KEEPVIRUS)
O.viruses = viruses
@@ -276,7 +273,7 @@
var/obj/item/bodypart/chest/torso = get_bodypart("chest")
if(cavity_object)
torso.cavity_item = cavity_object //cavity item is given to the new chest
- cavity_object.loc = O
+ cavity_object.forceMove(O)
for(var/missing_zone in missing_bodyparts_zones)
var/obj/item/bodypart/BP = O.get_bodypart(missing_zone)
@@ -401,7 +398,6 @@
R.mmi.brainmob.real_name = real_name //the name of the brain inside the cyborg is the robotized human's name.
R.mmi.brainmob.name = real_name
- R.loc = loc
R.job = "Cyborg"
R.notify_ai(NEW_BORG)
diff --git a/code/modules/paperwork/clipboard.dm b/code/modules/paperwork/clipboard.dm
index d9d220b0ef05..e8487b334468 100644
--- a/code/modules/paperwork/clipboard.dm
+++ b/code/modules/paperwork/clipboard.dm
@@ -73,7 +73,7 @@
if(href_list["pen"])
if(haspen)
- haspen.loc = usr.loc
+ haspen.forceMove(usr.loc)
usr.put_in_hands(haspen)
haspen = null
@@ -96,7 +96,7 @@
if(href_list["remove"])
var/obj/item/P = locate(href_list["remove"])
if(istype(P) && P.loc == src)
- P.loc = usr.loc
+ P.forceMove(usr.loc)
usr.put_in_hands(P)
if(P == toppaper)
toppaper = null
diff --git a/code/modules/paperwork/folders.dm b/code/modules/paperwork/folders.dm
index 3221a2c8dbe7..c81ab3759122 100644
--- a/code/modules/paperwork/folders.dm
+++ b/code/modules/paperwork/folders.dm
@@ -62,7 +62,7 @@
if(href_list["remove"])
var/obj/item/I = locate(href_list["remove"])
if(istype(I) && I.loc == src)
- I.loc = usr.loc
+ I.forceMove(usr.loc)
usr.put_in_hands(I)
if(href_list["read"])
diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm
index 20038f574580..6f0f56e8584b 100644
--- a/code/modules/paperwork/photocopier.dm
+++ b/code/modules/paperwork/photocopier.dm
@@ -247,10 +247,10 @@
/obj/machinery/photocopier/proc/remove_photocopy(obj/item/O, mob/user)
if(!issilicon(user)) //surprised this check didn't exist before, putting stuff in AI's hand is bad
- O.loc = user.loc
+ O.forceMove(user.loc)
user.put_in_hands(O)
else
- O.loc = src.loc
+ O.forceMove(drop_location())
to_chat(user, "You take [O] out of [src].")
/obj/machinery/photocopier/attackby(obj/item/O, mob/user, params)
@@ -338,16 +338,16 @@
else
user.visible_message("[user] puts [target] onto the photocopier!", "You put [target] onto the photocopier.")
- target.loc = get_turf(src)
+ target.forceMove(drop_location())
ass = target
if(photocopy)
- photocopy.loc = src.loc
+ photocopy.forceMove(drop_location())
visible_message("[photocopy] is shoved out of the way by [ass]!")
photocopy = null
else if(copy)
- copy.loc = src.loc
+ copy.forceMove(drop_location())
visible_message("[copy] is shoved out of the way by [ass]!")
copy = null
updateUsrDialog()
diff --git a/code/modules/power/antimatter/control.dm b/code/modules/power/antimatter/control.dm
index a37344d635ef..f8b8cae22abf 100644
--- a/code/modules/power/antimatter/control.dm
+++ b/code/modules/power/antimatter/control.dm
@@ -339,7 +339,7 @@
if(href_list["ejectjar"])
if(fueljar)
- fueljar.loc = src.loc
+ fueljar.forceMove(drop_location())
fueljar = null
//fueljar.control_unit = null currently it does not care where it is
//update_icon() when we have the icon for it
diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm
index 7f3b42897813..cbe8f335de95 100644
--- a/code/modules/power/apc.dm
+++ b/code/modules/power/apc.dm
@@ -972,7 +972,7 @@
else
to_chat(occupier, "Primary core damaged, unable to return core processes.")
if(forced)
- occupier.loc = src.loc
+ occupier.forceMove(drop_location())
occupier.death()
occupier.gib()
for(var/obj/item/pinpointer/nuke/P in GLOB.pinpointer_list)
diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm
index 9e4e29ceb575..3edff3e9128d 100644
--- a/code/modules/power/cable.dm
+++ b/code/modules/power/cable.dm
@@ -427,7 +427,7 @@ By design, d1 is the smallest direction and d2 is the highest
var/obj/O = P_list[1]
// remove the cut cable from its turf and powernet, so that it doesn't get count in propagate_network worklist
if(remove)
- loc = null
+ moveToNullspace()
powernet.remove_cable(src) //remove the cut cable from its powernet
addtimer(CALLBACK(O, .proc/auto_propogate_cut_cable, O), 0) //so we don't rebuild the network X times when singulo/explosion destroys a line of X cables
diff --git a/code/modules/power/singularity/collector.dm b/code/modules/power/singularity/collector.dm
index 0ede336ef604..36dd615e8617 100644
--- a/code/modules/power/singularity/collector.dm
+++ b/code/modules/power/singularity/collector.dm
@@ -132,7 +132,7 @@
var/obj/item/tank/internals/plasma/Z = src.loaded_tank
if (!Z)
return
- Z.loc = get_turf(src)
+ Z.forceMove(drop_location())
Z.layer = initial(Z.layer)
Z.plane = initial(Z.plane)
src.loaded_tank = null
diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm
index 74aa14072167..cdfbb35b3488 100644
--- a/code/modules/power/singularity/field_generator.dm
+++ b/code/modules/power/singularity/field_generator.dm
@@ -285,9 +285,8 @@ field_generator power level display
var/field_dir = get_dir(T,get_step(G.loc, NSEW))
T = get_step(T, NSEW)
if(!locate(/obj/machinery/field/containment) in T)
- var/obj/machinery/field/containment/CF = new/obj/machinery/field/containment()
+ var/obj/machinery/field/containment/CF = new(T)
CF.set_master(src,G)
- CF.loc = T
CF.setDir(field_dir)
fields += CF
G.fields += CF
diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm
index fb530f128fce..435cfe415698 100644
--- a/code/modules/power/solar.dm
+++ b/code/modules/power/solar.dm
@@ -419,7 +419,7 @@
new /obj/item/shard( src.loc )
var/obj/item/circuitboard/computer/solar_control/M = new /obj/item/circuitboard/computer/solar_control( A )
for (var/obj/C in src)
- C.loc = src.loc
+ C.forceMove(drop_location())
A.circuit = M
A.state = 3
A.icon_state = "3"
@@ -430,7 +430,7 @@
var/obj/structure/frame/computer/A = new /obj/structure/frame/computer( src.loc )
var/obj/item/circuitboard/computer/solar_control/M = new /obj/item/circuitboard/computer/solar_control( A )
for (var/obj/C in src)
- C.loc = src.loc
+ C.forceMove(drop_location())
A.circuit = M
A.state = 4
A.icon_state = "4"
diff --git a/code/modules/power/tracker.dm b/code/modules/power/tracker.dm
index 5e129acf8ff7..a46627b7cae5 100644
--- a/code/modules/power/tracker.dm
+++ b/code/modules/power/tracker.dm
@@ -47,7 +47,7 @@
S.glass_type = /obj/item/stack/sheet/glass
S.tracker = 1
S.anchored = TRUE
- S.loc = src
+ S.forceMove(src)
update_icon()
//updates the tracker icon and the facing angle for the control computer
@@ -94,4 +94,4 @@
// Tracker Electronic
/obj/item/electronics/tracker
- name = "tracker electronics"
\ No newline at end of file
+ name = "tracker electronics"
diff --git a/code/modules/projectiles/ammunition/caseless.dm b/code/modules/projectiles/ammunition/caseless.dm
index e5b905019de3..7432f9f8e7df 100644
--- a/code/modules/projectiles/ammunition/caseless.dm
+++ b/code/modules/projectiles/ammunition/caseless.dm
@@ -7,7 +7,7 @@
/obj/item/ammo_casing/caseless/fire_casing(atom/target, mob/living/user, params, distro, quiet, zone_override, spread)
if (..()) //successfully firing
- loc = null
+ moveToNullspace()
return 1
else
return 0
diff --git a/code/modules/projectiles/boxes_magazines/internal_mag.dm b/code/modules/projectiles/boxes_magazines/internal_mag.dm
index 7b9db6a09796..d7bfaf9ee741 100644
--- a/code/modules/projectiles/boxes_magazines/internal_mag.dm
+++ b/code/modules/projectiles/boxes_magazines/internal_mag.dm
@@ -51,10 +51,10 @@
var/obj/item/ammo_casing/bullet = stored_ammo[i]
if(!bullet || !bullet.BB) // found a spent ammo
stored_ammo[i] = R
- R.loc = src
+ R.forceMove(src)
if(bullet)
- bullet.loc = get_turf(src.loc)
+ bullet.forceMove(drop_location())
return 1
return 0
diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm
index 4d9b680a4a8c..0307d17df04c 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -77,9 +77,8 @@
..()
var/obj/item/gun/G = locate(/obj/item/gun) in contents
if(G)
- G.loc = loc
- qdel(G.pin)
- G.pin = null
+ G.forceMove(loc)
+ QDEL_NULL(G.pin)
visible_message("[G] can now fit a new pin, but the old one was destroyed in the process.", null, null, 3)
qdel(src)
diff --git a/code/modules/projectiles/guns/ballistic.dm b/code/modules/projectiles/guns/ballistic.dm
index afe4c3aba00f..ee7d74081cad 100644
--- a/code/modules/projectiles/guns/ballistic.dm
+++ b/code/modules/projectiles/guns/ballistic.dm
@@ -107,13 +107,13 @@
/obj/item/gun/ballistic/attack_self(mob/living/user)
var/obj/item/ammo_casing/AC = chambered //Find chambered round
if(magazine)
- magazine.loc = get_turf(src.loc)
+ magazine.forceMove(drop_location())
user.put_in_hands(magazine)
magazine.update_icon()
magazine = null
to_chat(user, "You pull the magazine out of \the [src].")
else if(chambered)
- AC.loc = get_turf(src)
+ AC.forceMove(drop_location())
AC.SpinAnimation(10, 1)
chambered = null
to_chat(user, "You unload the round from \the [src]'s chamber.")
@@ -218,4 +218,3 @@
desc = "A foreign knock-off suppressor, it feels flimsy, cheap, and brittle. Still fits all weapons."
icon = 'icons/obj/guns/projectile.dmi'
icon_state = "suppressor"
-
diff --git a/code/modules/projectiles/guns/ballistic/automatic.dm b/code/modules/projectiles/guns/ballistic/automatic.dm
index 5a06d9f3f391..daf223aba930 100644
--- a/code/modules/projectiles/guns/ballistic/automatic.dm
+++ b/code/modules/projectiles/guns/ballistic/automatic.dm
@@ -330,7 +330,7 @@
else if(cover_open && magazine)
//drop the mag
magazine.update_icon()
- magazine.loc = get_turf(src.loc)
+ magazine.forceMove(drop_location())
user.put_in_hands(magazine)
magazine = null
update_icon()
diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm
index 42f4fb8a05cd..4dafbc3f3c76 100644
--- a/code/modules/projectiles/guns/ballistic/revolver.dm
+++ b/code/modules/projectiles/guns/ballistic/revolver.dm
@@ -39,7 +39,7 @@
var/obj/item/ammo_casing/CB
CB = magazine.get_round(0)
if(CB)
- CB.loc = get_turf(src.loc)
+ CB.forceMove(drop_location())
CB.SpinAnimation(10, 1)
CB.update_icon()
num_unloaded++
@@ -289,7 +289,7 @@
var/obj/item/ammo_casing/CB
CB = magazine.get_round(0)
chambered = null
- CB.loc = get_turf(src.loc)
+ CB.forceMove(drop_location())
CB.update_icon()
num_unloaded++
if (num_unloaded)
diff --git a/code/modules/projectiles/guns/ballistic/shotgun.dm b/code/modules/projectiles/guns/ballistic/shotgun.dm
index f15fd3129c7d..c68917fbfda3 100644
--- a/code/modules/projectiles/guns/ballistic/shotgun.dm
+++ b/code/modules/projectiles/guns/ballistic/shotgun.dm
@@ -56,7 +56,7 @@
/obj/item/gun/ballistic/shotgun/proc/pump_unload(mob/M)
if(chambered)//We have a shell in the chamber
- chambered.loc = get_turf(src)//Eject casing
+ chambered.forceMove(drop_location())//Eject casing
chambered.SpinAnimation(5, 1)
chambered = null
diff --git a/code/modules/projectiles/guns/beam_rifle.dm b/code/modules/projectiles/guns/beam_rifle.dm
index 99042c4d3d9a..4b51951cfd17 100644
--- a/code/modules/projectiles/guns/beam_rifle.dm
+++ b/code/modules/projectiles/guns/beam_rifle.dm
@@ -500,11 +500,11 @@
if(!do_pierce)
return FALSE
if(pierced[target]) //we already pierced them go away
- loc = get_turf(target)
+ forceMove(get_turf(target))
return TRUE
if(isclosedturf(target))
if(wall_pierce++ < wall_pierce_amount)
- loc = target
+ forceMove(target)
if(prob(wall_devastate))
if(iswallturf(target))
var/turf/closed/wall/W = target
@@ -520,7 +520,7 @@
var/obj/O = AM
O.take_damage((impact_structure_damage + aoe_structure_damage) * structure_bleed_coeff * get_damage_coeff(AM), BURN, "energy", FALSE)
pierced[AM] = TRUE
- loc = get_turf(AM)
+ forceMove(AM.drop_location())
structure_pierce++
return TRUE
return FALSE
diff --git a/code/modules/projectiles/guns/syringe_gun.dm b/code/modules/projectiles/guns/syringe_gun.dm
index b8e3c97e81dd..ac9f7daedf91 100644
--- a/code/modules/projectiles/guns/syringe_gun.dm
+++ b/code/modules/projectiles/guns/syringe_gun.dm
@@ -42,7 +42,7 @@
if(!S)
return 0
- S.loc = user.loc
+ S.forceMove(user.loc)
syringes.Remove(S)
to_chat(user, "You unload [S] from \the [src].")
@@ -101,4 +101,4 @@
return TRUE
else
to_chat(user, "[src] cannot hold more syringes!")
- return FALSE
\ No newline at end of file
+ return FALSE
diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm
index 5a650ff2c37e..152cff6c741c 100644
--- a/code/modules/projectiles/projectile/special.dm
+++ b/code/modules/projectiles/projectile/special.dm
@@ -100,7 +100,7 @@
/obj/item/projectile/meteor/Collide(atom/A)
if(A == firer)
- loc = A.loc
+ forceMove(A.loc)
return
A.ex_act(EXPLODE_HEAVY)
playsound(src.loc, 'sound/effects/meteorimpact.ogg', 40, 1)
@@ -612,4 +612,3 @@
knockdown = 0
nodamage = TRUE
return ..()
-
diff --git a/code/modules/recycling/disposal/bin.dm b/code/modules/recycling/disposal/bin.dm
index ed14ae63c19e..aa41763cfa2a 100644
--- a/code/modules/recycling/disposal/bin.dm
+++ b/code/modules/recycling/disposal/bin.dm
@@ -29,7 +29,7 @@
if(make_from)
setDir(make_from.dir)
- make_from.loc = null
+ make_from.moveToNullspace()
stored = make_from
pressure_charging = FALSE // newly built disposal bins start with pump off
else
@@ -471,7 +471,7 @@
if(isobj(AM))
var/obj/O = AM
- O.loc = src
+ O.forceMove(src)
else if(ismob(AM))
var/mob/M = AM
if(prob(2)) // to prevent mobs being stuck in infinite loops
diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm
index 56848c639443..bad8f1e5aa53 100644
--- a/code/modules/research/experimentor.dm
+++ b/code/modules/research/experimentor.dm
@@ -219,8 +219,8 @@
return
var/turf/dropturf = get_turf(pick(view(1,src)))
if(!dropturf) //Failsafe to prevent the object being lost in the void forever.
- dropturf = get_turf(src)
- loaded_item.loc = dropturf
+ dropturf = drop_location()
+ loaded_item.forceMove(dropturf)
if(delete)
qdel(loaded_item)
loaded_item = null
@@ -510,7 +510,7 @@
throwSmoke(loc)
if(trackedRuntime)
throwSmoke(trackedRuntime.loc)
- trackedRuntime.loc = loc
+ trackedRuntime.forceMove(drop_location())
investigate_log("Experimentor has stolen Runtime!", INVESTIGATE_EXPERIMENTOR)
else
new /mob/living/simple_animal/pet/cat(loc)
diff --git a/code/modules/shuttle/navigation_computer.dm b/code/modules/shuttle/navigation_computer.dm
index 65636aa52824..de1b0022f627 100644
--- a/code/modules/shuttle/navigation_computer.dm
+++ b/code/modules/shuttle/navigation_computer.dm
@@ -119,7 +119,7 @@
return
if(!my_port)
- my_port = new /obj/docking_port/stationary()
+ my_port = new(locate(eyeobj.x - x_offset, eyeobj.y - y_offset, eyeobj.z))
my_port.name = shuttlePortName
my_port.id = shuttlePortId
my_port.height = shuttle_port.height
@@ -128,7 +128,6 @@
my_port.dwidth = shuttle_port.dwidth
my_port.hidden = shuttle_port.hidden
my_port.dir = the_eye.dir
- my_port.loc = locate(eyeobj.x - x_offset, eyeobj.y - y_offset, eyeobj.z)
if(current_user.client)
current_user.client.images -= the_eye.placed_images
diff --git a/code/modules/surgery/bodyparts/dismemberment.dm b/code/modules/surgery/bodyparts/dismemberment.dm
index 4daeb9ea4564..c952c84314c2 100644
--- a/code/modules/surgery/bodyparts/dismemberment.dm
+++ b/code/modules/surgery/bodyparts/dismemberment.dm
@@ -142,11 +142,11 @@
//when a limb is dropped, the internal organs are removed from the mob and put into the limb
/obj/item/organ/proc/transfer_to_limb(obj/item/bodypart/LB, mob/living/carbon/C)
Remove(C)
- loc = LB
+ forceMove(LB)
/obj/item/organ/brain/transfer_to_limb(obj/item/bodypart/head/LB, mob/living/carbon/human/C)
Remove(C) //Changeling brain concerns are now handled in Remove
- loc = LB
+ forceMove(LB)
LB.brain = src
if(brainmob)
LB.brainmob = brainmob
@@ -265,7 +265,7 @@
attach_limb(C, special)
/obj/item/bodypart/proc/attach_limb(mob/living/carbon/C, special)
- loc = null
+ moveToNullspace()
owner = C
C.bodyparts += src
if(held_index)