diff --git a/code/_onclick/observer.dm b/code/_onclick/observer.dm
index 74e46eb6cd7..d9c3e7ffd19 100644
--- a/code/_onclick/observer.dm
+++ b/code/_onclick/observer.dm
@@ -52,21 +52,21 @@
var/atom/l = loc
var/obj/machinery/computer/teleporter/com = locate(/obj/machinery/computer/teleporter, locate(l.x - 2, l.y, l.z))
if(com.locked)
- user.loc = get_turf(com.locked)
+ user.forceMove(get_turf(com.locked))
/obj/effect/portal/attack_ghost(mob/user as mob)
if(target)
- user.loc = get_turf(target)
+ user.forceMove(get_turf(target))
/obj/machinery/gateway/centerstation/attack_ghost(mob/user as mob)
if(awaygate)
- user.loc = awaygate.loc
+ user.forceMove(awaygate.loc)
else
user << "[src] has no destination."
/obj/machinery/gateway/centeraway/attack_ghost(mob/user as mob)
if(stationgate)
- user.loc = stationgate.loc
+ user.forceMove(stationgate.loc)
else
user << "[src] has no destination."
diff --git a/code/_onclick/telekinesis.dm b/code/_onclick/telekinesis.dm
index 05b722abedc..32b39273d45 100644
--- a/code/_onclick/telekinesis.dm
+++ b/code/_onclick/telekinesis.dm
@@ -84,7 +84,7 @@ var/const/tk_maxrange = 15
/obj/item/tk_grab/dropped(mob/user as mob)
if(focus && user && loc != user && loc != user.loc) // drop_item() gets called when you tk-attack a table/closet with an item
if(focus.Adjacent(loc))
- focus.loc = loc
+ focus.forceMove(loc)
loc = null
QDEL_IN(src, 1)
return
diff --git a/code/controllers/subsystems/job.dm b/code/controllers/subsystems/job.dm
index 53ca9b93fb1..31197c86877 100644
--- a/code/controllers/subsystems/job.dm
+++ b/code/controllers/subsystems/job.dm
@@ -345,13 +345,13 @@
if(!joined_late || job.latejoin_at_spawnpoints)
var/obj/S = get_roundstart_spawnpoint(rank)
if(istype(S, /obj/effect/landmark/start) && istype(S.loc, /turf))
- H.loc = S.loc
+ H.forceMove(S.loc)
else
LateSpawn(H, rank)
// Moving wheelchair if they have one
if(H.buckled && istype(H.buckled, /obj/structure/bed/chair/wheelchair))
- H.buckled.loc = H.loc
+ H.buckled.forceMove(H.loc)
H.buckled.set_dir(H.dir)
// If they're head, give them the account info for their department
@@ -694,14 +694,14 @@
if(spawnpos && istype(spawnpos))
if(spawnpos.check_job_spawning(rank))
- H.loc = pick(spawnpos.turfs)
+ H.forceMove(pick(spawnpos.turfs))
. = spawnpos.msg
else
H << "Your chosen spawnpoint ([spawnpos.display_name]) is unavailable for your chosen job. Spawning you at the Arrivals shuttle instead."
- H.loc = pick(latejoin)
+ H.forceMove(pick(latejoin))
. = "is inbound from the [current_map.dock_name]"
else
- H.loc = pick(latejoin)
+ H.forceMove(pick(latejoin))
. = "is inbound from the [current_map.dock_name]"
Debug("LS/([H]): Completed, spawning at area [H.loc.loc].")
diff --git a/code/datums/diseases/advance/symptoms/cough.dm b/code/datums/diseases/advance/symptoms/cough.dm
index ad36d3300e5..b6580f33544 100644
--- a/code/datums/diseases/advance/symptoms/cough.dm
+++ b/code/datums/diseases/advance/symptoms/cough.dm
@@ -35,5 +35,5 @@ BONUS
M.emote("cough")
var/obj/item/I = M.get_active_hand()
if(I && I.w_class < 3)
- M.drop_item()
+ M.drop_from_inventory(I)
return
\ No newline at end of file
diff --git a/code/datums/diseases/wizarditis.dm b/code/datums/diseases/wizarditis.dm
index dc1a669f243..31bfb3a619a 100644
--- a/code/datums/diseases/wizarditis.dm
+++ b/code/datums/diseases/wizarditis.dm
@@ -117,6 +117,6 @@ STI KALY - blind
return
affected_mob.say("SCYAR NILA [uppertext(thearea.name)]!")
- affected_mob.loc = pick(L)
+ affected_mob.forceMove(pick(L))
return
diff --git a/code/datums/wires/wires.dm b/code/datums/wires/wires.dm
index 073337906ac..2459ba817e8 100644
--- a/code/datums/wires/wires.dm
+++ b/code/datums/wires/wires.dm
@@ -141,7 +141,7 @@ var/list/wireColours = list("red", "blue", "green", "darkred", "orange", "brown"
// Attach
else
if(istype(I, /obj/item/device/assembly/signaler))
- L.drop_item()
+ usr.drop_from_inventory(I)
Attach(colour, I)
else
L << "You need a remote signaller!"
@@ -241,7 +241,7 @@ var/const/POWER = 8
if(colour && S)
if(!IsAttached(colour))
signallers[colour] = S
- S.loc = holder
+ S.forceMove(holder)
S.connected = src
return S
@@ -251,7 +251,7 @@ var/const/POWER = 8
if(S)
signallers -= colour
S.connected = null
- S.loc = holder.loc
+ S.forceMove(holder.loc)
return S
diff --git a/code/defines/obj.dm b/code/defines/obj.dm
index 66ea3a33e51..80161cd65ef 100644
--- a/code/defines/obj.dm
+++ b/code/defines/obj.dm
@@ -11,8 +11,8 @@
switch(alert("Travel back to ss13?",,"Yes","No"))
if("Yes")
if(user.z != src.z) return
- user.loc.loc.Exited(user)
- user.loc = pick(latejoin)
+ user.loc.loc.Exited(user) //what the fuck is this
+ user.forceMove(pick(latejoin))
if("No")
return
diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm
index 1471f59ca31..8153a47b1c7 100644
--- a/code/defines/obj/weapon.dm
+++ b/code/defines/obj/weapon.dm
@@ -269,7 +269,7 @@
user.visible_message("[user] has unsheathed \a [concealed_blade] from \his [src]!", "You unsheathe \the [concealed_blade] from \the [src].")
// Calling drop/put in hands to properly call item drop/pickup procs
playsound(user.loc, 'sound/weapons/blade_unsheath.ogg', 50, 1)
- user.drop_from_inventory(src)
+ user.drop_from_inventory(src,enable_animations = FALSE)
user.put_in_hands(concealed_blade)
user.put_in_hands(src)
user.update_inv_l_hand(0)
@@ -284,7 +284,7 @@
user.visible_message("[user] has sheathed \a [W] into \his [src]!", "You sheathe \the [W] into \the [src].")
playsound(user.loc, 'sound/weapons/blade_sheath.ogg', 50, 1)
user.drop_from_inventory(W)
- W.loc = src
+ W.forceMove(src)
src.concealed_blade = W
update_icon()
else
diff --git a/code/game/antagonist/outsider/raider.dm b/code/game/antagonist/outsider/raider.dm
index cc8a6cee98b..caf3d7e5627 100644
--- a/code/game/antagonist/outsider/raider.dm
+++ b/code/game/antagonist/outsider/raider.dm
@@ -267,14 +267,14 @@ var/datum/antagonist/raider/raiders
if(!(primary.slot_flags & SLOT_HOLSTER))
holster = new new_holster(T)
holster.holstered = secondary
- secondary.loc = holster
+ secondary.forceMove(holster)
else
player.equip_to_slot_or_del(secondary, slot_belt)
if(primary.slot_flags & SLOT_HOLSTER)
holster = new new_holster(T)
holster.holstered = primary
- primary.loc = holster
+ primary.forceMove(holster)
else if(!player.belt && (primary.slot_flags & SLOT_BELT))
player.equip_to_slot_or_del(primary, slot_belt)
else if(!player.back && (primary.slot_flags & SLOT_BACK))
diff --git a/code/game/antagonist/station/cultist.dm b/code/game/antagonist/station/cultist.dm
index f103b2a8859..edbe826fcb4 100644
--- a/code/game/antagonist/station/cultist.dm
+++ b/code/game/antagonist/station/cultist.dm
@@ -80,7 +80,7 @@ var/datum/antagonist/cultist/cult
break
var/obj/item/weapon/storage/S = locate() in player.contents
if(S && istype(S))
- T.loc = S
+ T.forceMove(S)
/datum/antagonist/cultist/remove_antagonist(var/datum/mind/player, var/show_message, var/implanted)
if(!..())
diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm
index e611acd3ad6..54285dfdaea 100644
--- a/code/game/area/areas.dm
+++ b/code/game/area/areas.dm
@@ -111,7 +111,7 @@
if (!isturf(C.loc))
continue
- if (C.loc.loc == src)
+ if (C.loc.loc == src) //what the fuck is this
. += C
/area/proc/atmosalert(danger_level, var/alarm_source)
diff --git a/code/game/dna/dna_modifier.dm b/code/game/dna/dna_modifier.dm
index 22dd38e9c40..10baf8dc5b7 100644
--- a/code/game/dna/dna_modifier.dm
+++ b/code/game/dna/dna_modifier.dm
@@ -84,10 +84,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)) && (!iscoil(O)))
- O.loc = get_turf(src)//Ejects items that manage to get in there (exluding the components)
+ O.forceMove(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.forceMove(get_turf(src))
/obj/machinery/dna_scannernew/verb/move_inside()
set src in oview(1)
@@ -108,7 +108,7 @@
usr.stop_pulling()
usr.client.perspective = EYE_PERSPECTIVE
usr.client.eye = src
- usr.loc = src
+ usr.forceMove(src)
src.occupant = usr
src.icon_state = "scanner_1"
src.add_fingerprint(usr)
@@ -121,8 +121,7 @@
return
beaker = item
- user.drop_item()
- item.loc = src
+ user.drop_from_inventory(item,src)
user.visible_message("\The [user] adds \a [item] to \the [src]!", "You add \a [item] to \the [src]!")
return
else if (!istype(item, /obj/item/weapon/grab))
@@ -145,7 +144,7 @@
if(M.client)
M.client.perspective = EYE_PERSPECTIVE
M.client.eye = src
- M.loc = src
+ M.forceMove(src)
src.occupant = M
src.icon_state = "scanner_1"
@@ -168,7 +167,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.forceMove(src.loc)
src.occupant = null
src.icon_state = "scanner_0"
return
@@ -177,7 +176,7 @@
switch(severity)
if(1.0)
for(var/atom/movable/A as mob|obj in src)
- A.loc = src.loc
+ A.forceMove(src.loc)
ex_act(severity)
//Foreach goto(35)
//SN src = null
@@ -186,7 +185,7 @@
if(2.0)
if (prob(50))
for(var/atom/movable/A as mob|obj in src)
- A.loc = src.loc
+ A.forceMove(src.loc)
ex_act(severity)
//Foreach goto(108)
//SN src = null
@@ -195,7 +194,7 @@
if(3.0)
if (prob(25))
for(var/atom/movable/A as mob|obj in src)
- A.loc = src.loc
+ A.forceMove(src.loc)
ex_act(severity)
//Foreach goto(181)
//SN src = null
@@ -234,8 +233,7 @@
/obj/machinery/computer/scan_consolenew/attackby(obj/item/I as obj, mob/user as mob)
if (istype(I, /obj/item/weapon/disk/data)) //INSERT SOME diskS
if (!src.disk)
- user.drop_item()
- I.loc = src
+ user.drop_from_inventory(I,src)
src.disk = I
user << "You insert [I]."
SSnanoui.update_uis(src) // update all UIs attached to src
@@ -632,7 +630,7 @@
if(href_list["ejectBeaker"])
if(connected.beaker)
var/obj/item/weapon/reagent_containers/glass/B = connected.beaker
- B.loc = connected.loc
+ B.forceMove(connected.loc)
connected.beaker = null
return 1
@@ -657,7 +655,7 @@
if (bufferOption == "ejectDisk")
if (!src.disk)
return
- src.disk.loc = get_turf(src)
+ src.disk.forceMove(get_turf(src))
src.disk = null
return 1
@@ -761,7 +759,7 @@
I.buf = buf
waiting_for_user_input=0
if(success)
- I.loc = src.loc
+ I.forceMove(src.loc)
I.name += " ([buf.name])"
//src.temphtml = "Injector created."
src.injector_ready = 0
diff --git a/code/game/gamemodes/changeling/changeling_powers.dm b/code/game/gamemodes/changeling/changeling_powers.dm
index 159047259aa..25d754c997b 100644
--- a/code/game/gamemodes/changeling/changeling_powers.dm
+++ b/code/game/gamemodes/changeling/changeling_powers.dm
@@ -384,7 +384,7 @@ var/global/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","E
for(var/obj/T in C)
qdel(T)
- O.loc = C.loc
+ O.forceMove(C.loc)
O.UpdateAppearance()
domutcheck(O, null)
@@ -394,7 +394,7 @@ var/global/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","E
O.adjustFireLoss(C.getFireLoss())
O.stat = C.stat
for (var/obj/item/weapon/implant/I in implants)
- I.loc = O
+ I.forceMove(O)
I.implanted = O
C.mind.transfer_to(O)
diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm
index 6c8684c86aa..bc483f1aef3 100644
--- a/code/game/gamemodes/cult/ritual.dm
+++ b/code/game/gamemodes/cult/ritual.dm
@@ -479,8 +479,6 @@ var/global/list/rnwords = list("ire","ego","nahlizet","certum","veri","jatkaa","
R.word1=cultwords["travel"]
R.word2=cultwords["self"]
R.word3=beacon
- R.loc = user.loc
- R.check_icon()
if("itemport")
var/list/words = list("ire", "ego", "nahlizet", "certum", "veri", "jatkaa", "balaq", "mgar", "karazet", "geeri")
var/beacon
@@ -489,137 +487,93 @@ var/global/list/rnwords = list("ire","ego","nahlizet","certum","veri","jatkaa","
R.word1=cultwords["travel"]
R.word2=cultwords["other"]
R.word3=beacon
- R.loc = user.loc
- R.check_icon()
if("tome")
R.word1=cultwords["see"]
R.word2=cultwords["blood"]
R.word3=cultwords["hell"]
- R.loc = user.loc
- R.check_icon()
if("armor")
R.word1=cultwords["hell"]
R.word2=cultwords["destroy"]
R.word3=cultwords["other"]
- R.loc = user.loc
- R.check_icon()
if("convert")
R.word1=cultwords["join"]
R.word2=cultwords["blood"]
R.word3=cultwords["self"]
- R.loc = user.loc
- R.check_icon()
if("tear in reality")
R.word1=cultwords["hell"]
R.word2=cultwords["join"]
R.word3=cultwords["self"]
- R.loc = user.loc
- R.check_icon()
if("emp")
R.word1=cultwords["destroy"]
R.word2=cultwords["see"]
R.word3=cultwords["technology"]
- R.loc = user.loc
- R.check_icon()
if("drain")
R.word1=cultwords["travel"]
R.word2=cultwords["blood"]
R.word3=cultwords["self"]
- R.loc = user.loc
- R.check_icon()
if("seer")
R.word1=cultwords["see"]
R.word2=cultwords["hell"]
R.word3=cultwords["join"]
- R.loc = user.loc
- R.check_icon()
if("raise")
R.word1=cultwords["blood"]
R.word2=cultwords["join"]
R.word3=cultwords["hell"]
- R.loc = user.loc
- R.check_icon()
if("obscure")
R.word1=cultwords["hide"]
R.word2=cultwords["see"]
R.word3=cultwords["blood"]
- R.loc = user.loc
- R.check_icon()
if("astral journey")
R.word1=cultwords["hell"]
R.word2=cultwords["travel"]
R.word3=cultwords["self"]
- R.loc = user.loc
- R.check_icon()
if("manifest")
R.word1=cultwords["blood"]
R.word2=cultwords["see"]
R.word3=cultwords["travel"]
- R.loc = user.loc
- R.check_icon()
if("imbue talisman")
R.word1=cultwords["hell"]
R.word2=cultwords["technology"]
R.word3=cultwords["join"]
- R.loc = user.loc
- R.check_icon()
if("sacrifice")
R.word1=cultwords["hell"]
R.word2=cultwords["blood"]
R.word3=cultwords["join"]
- R.loc = user.loc
- R.check_icon()
if("reveal")
R.word1=cultwords["blood"]
R.word2=cultwords["see"]
R.word3=cultwords["hide"]
- R.loc = user.loc
- R.check_icon()
if("wall")
R.word1=cultwords["destroy"]
R.word2=cultwords["travel"]
R.word3=cultwords["self"]
- R.loc = user.loc
- R.check_icon()
if("freedom")
R.word1=cultwords["travel"]
R.word2=cultwords["technology"]
R.word3=cultwords["other"]
- R.loc = user.loc
- R.check_icon()
if("cultsummon")
R.word1=cultwords["join"]
R.word2=cultwords["other"]
R.word3=cultwords["self"]
- R.loc = user.loc
- R.check_icon()
if("deafen")
R.word1=cultwords["hide"]
R.word2=cultwords["other"]
R.word3=cultwords["see"]
- R.loc = user.loc
- R.check_icon()
if("blind")
R.word1=cultwords["destroy"]
R.word2=cultwords["see"]
R.word3=cultwords["other"]
- R.loc = user.loc
- R.check_icon()
if("bloodboil")
R.word1=cultwords["destroy"]
R.word2=cultwords["see"]
R.word3=cultwords["blood"]
- R.loc = user.loc
- R.check_icon()
if("communicate")
R.word1=cultwords["self"]
R.word2=cultwords["other"]
R.word3=cultwords["technology"]
- R.loc = user.loc
- R.check_icon()
if("stun")
R.word1=cultwords["join"]
R.word2=cultwords["hide"]
R.word3=cultwords["technology"]
- R.loc = user.loc
- R.check_icon()
+ R.forceMove(user.loc)
+ R.check_icon()
diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm
index a10322131ec..2610a67c954 100644
--- a/code/game/gamemodes/cult/runes.dm
+++ b/code/game/gamemodes/cult/runes.dm
@@ -38,7 +38,7 @@ var/list/sacrificed = list()
user.visible_message("[user] disappears in a flash of red light!", \
"You feel as your body gets dragged through the dimension of Nar-Sie!", \
"You hear a sickening crunch and sloshing of viscera.")
- user.loc = allrunesloc[rand(1,index)]
+ user.forceMove(allrunesloc[rand(1,index)])
return
if(istype(src,/obj/effect/rune))
return fizzle(user) //Use friggin manuals, Dorf, your list was of zero length.
@@ -76,9 +76,9 @@ var/list/sacrificed = list()
"You smell ozone.")
for(var/obj/O in src.loc)
if(!O.anchored)
- O.loc = IP.loc
+ O.forceMove(IP.loc)
for(var/mob/M in src.loc)
- M.loc = IP.loc
+ M.forceMove(IP.loc)
return
return fizzle(user)
@@ -880,7 +880,7 @@ var/list/sacrificed = list()
if(cultist.buckled || cultist.handcuffed || (!isturf(cultist.loc) && !istype(cultist.loc, /obj/structure/closet)))
user << "You cannot summon \the [cultist], for \his shackles of blood are strong."
return fizzle(user)
- cultist.loc = src.loc
+ cultist.forceMove(src.loc)
cultist.lying = 1
cultist.regenerate_icons()
diff --git a/code/game/gamemodes/endgame/supermatter_cascade/blob.dm b/code/game/gamemodes/endgame/supermatter_cascade/blob.dm
index 46bd6fbed46..45249df15fb 100644
--- a/code/game/gamemodes/endgame/supermatter_cascade/blob.dm
+++ b/code/game/gamemodes/endgame/supermatter_cascade/blob.dm
@@ -98,7 +98,7 @@
playsound(src, 'sound/effects/supermatter.ogg', 50, 1)
- user.drop_from_inventory(W)
+ user.drop_from_inventory(W,src)
Consume(W)
diff --git a/code/game/gamemodes/endgame/supermatter_cascade/portal.dm b/code/game/gamemodes/endgame/supermatter_cascade/portal.dm
index d6fc4406f82..53a5b46286f 100644
--- a/code/game/gamemodes/endgame/supermatter_cascade/portal.dm
+++ b/code/game/gamemodes/endgame/supermatter_cascade/portal.dm
@@ -35,7 +35,7 @@
if(L.buckled && istype(L.buckled,/obj/structure/bed/))
var/turf/O = L.buckled
do_teleport(O, pick(endgame_safespawns))
- L.loc = O.loc
+ L.forceMove(O.loc)
else
do_teleport(L, pick(endgame_safespawns)) //dead-on precision
diff --git a/code/game/gamemodes/events/clang.dm b/code/game/gamemodes/events/clang.dm
index 8c07559217c..8a05deb910f 100644
--- a/code/game/gamemodes/events/clang.dm
+++ b/code/game/gamemodes/events/clang.dm
@@ -40,7 +40,7 @@ In my current plan for it, 'solid' will be defined as anything with density == 1
qdel(src)
if(clong && prob(25))
- src.loc = clong.loc
+ src.forceMove(clong.loc)
/proc/immovablerod()
var/startx = 0
diff --git a/code/game/gamemodes/sandbox/h_sandbox.dm b/code/game/gamemodes/sandbox/h_sandbox.dm
index df75722aeb6..8e5e8a43263 100644
--- a/code/game/gamemodes/sandbox/h_sandbox.dm
+++ b/code/game/gamemodes/sandbox/h_sandbox.dm
@@ -62,25 +62,25 @@ datum/hSB
if("hsbsuit")
var/mob/living/carbon/human/P = usr
if(P.wear_suit)
- P.wear_suit.loc = P.loc
+ P.wear_suit.forceMove(P.loc)
P.wear_suit.layer = initial(P.wear_suit.layer)
P.wear_suit = null
P.wear_suit = new/obj/item/clothing/suit/space(P)
P.wear_suit.layer = 20
if(P.head)
- P.head.loc = P.loc
+ P.head.forceMove(P.loc)
P.head.layer = initial(P.head.layer)
P.head = null
P.head = new/obj/item/clothing/head/helmet/space(P)
P.head.layer = 20
if(P.wear_mask)
- P.wear_mask.loc = P.loc
+ P.wear_mask.forceMove(P.loc)
P.wear_mask.layer = initial(P.wear_mask.layer)
P.wear_mask = null
P.wear_mask = new/obj/item/clothing/mask/gas(P)
P.wear_mask.layer = 20
if(P.back)
- P.back.loc = P.loc
+ P.back.forceMove(P.loc)
P.back.layer = initial(P.back.layer)
P.back = null
P.back = new/obj/item/weapon/tank/jetpack(P)
@@ -89,11 +89,11 @@ datum/hSB
if("hsbmetal")
var/obj/item/stack/sheet/hsb = new/obj/item/stack/sheet/metal
hsb.amount = 50
- hsb.loc = usr.loc
+ hsb.forceMove(usr.loc)
if("hsbglass")
var/obj/item/stack/sheet/hsb = new/obj/item/stack/sheet/glass
hsb.amount = 50
- hsb.loc = usr.loc
+ hsb.forceMove(usr.loc)
if("hsbairlock")
var/obj/machinery/door/hsb = new/obj/machinery/door/airlock
@@ -104,7 +104,7 @@ datum/hSB
if(alert(usr, "Will this airlock require [get_access_desc(A)] access?", "Sandbox:", "Yes", "No") == "Yes")
hsb.req_access += A
- hsb.loc = usr.loc
+ hsb.forceMove(usr.loc)
usr << "Sandbox: Created an airlock."
if("hsbcanister")
var/list/hsbcanisters = typesof(/obj/machinery/portable_atmospherics/canister/) - /obj/machinery/portable_atmospherics/canister/
@@ -113,19 +113,19 @@ datum/hSB
new hsbcanister(usr.loc)
if("hsbfueltank")
//var/obj/hsb = new/obj/weldfueltank
- //hsb.loc = usr.loc
+ //hsb.forceMove(usr.loc)
if("hsbwatertank")
//var/obj/hsb = new/obj/watertank
- //hsb.loc = usr.loc
+ //hsb.forceMove(usr.loc)
if("hsbtoolbox")
var/obj/item/weapon/storage/hsb = new/obj/item/weapon/storage/toolbox/mechanical
for(var/obj/item/device/radio/T in hsb)
qdel(T)
new/obj/item/weapon/crowbar (hsb)
- hsb.loc = usr.loc
+ hsb.forceMove(usr.loc)
if("hsbmedkit")
var/obj/item/weapon/storage/firstaid/hsb = new/obj/item/weapon/storage/firstaid/regular
- hsb.loc = usr.loc
+ hsb.forceMove(usr.loc)
if("hsbobj")
if(!hsboxspawn) return
diff --git a/code/game/gamemodes/vampire/vampire_powers.dm b/code/game/gamemodes/vampire/vampire_powers.dm
index 3ecb9a8b51a..96eb334f73e 100644
--- a/code/game/gamemodes/vampire/vampire_powers.dm
+++ b/code/game/gamemodes/vampire/vampire_powers.dm
@@ -453,7 +453,7 @@
icon_state = "veil_ghost"
last_valid_turf = get_turf(owner.loc)
- owner.loc = src
+ owner.forceMove(src)
desc += " Its features look faintly alike [owner.name]'s."
diff --git a/code/game/machinery/Beacon.dm b/code/game/machinery/Beacon.dm
index 53d0cbf6848..50f84564316 100644
--- a/code/game/machinery/Beacon.dm
+++ b/code/game/machinery/Beacon.dm
@@ -16,7 +16,7 @@
var/turf/T = loc
Beacon = new /obj/item/device/radio/beacon
Beacon.invisibility = INVISIBILITY_MAXIMUM
- Beacon.loc = T
+ Beacon.forceMove(T)
hide(!T.is_plating())
@@ -45,10 +45,10 @@
var/turf/T = loc
Beacon = new /obj/item/device/radio/beacon
Beacon.invisibility = INVISIBILITY_MAXIMUM
- Beacon.loc = T
+ Beacon.forceMove(T)
if(Beacon)
if(Beacon.loc != loc)
- Beacon.loc = loc
+ Beacon.forceMove(loc)
updateicon()
diff --git a/code/game/machinery/OpTable.dm b/code/game/machinery/OpTable.dm
index 36b5bbe6293..72d54a73245 100644
--- a/code/game/machinery/OpTable.dm
+++ b/code/game/machinery/OpTable.dm
@@ -57,11 +57,9 @@
/obj/machinery/optable/MouseDrop_T(obj/O as obj, mob/user as mob)
- if ((!( istype(O, /obj/item/weapon) ) || user.get_active_hand() != O))
+ if (!istype(O, /obj/item/weapon))
return
- user.drop_item()
- if (O.loc != src.loc)
- step(O, get_dir(O, src))
+ user.drop_from_inventory(O,get_turf(src))
return
/obj/machinery/optable/proc/check_victim()
@@ -87,9 +85,9 @@
C.client.perspective = EYE_PERSPECTIVE
C.client.eye = src
C.resting = 1
- C.loc = src.loc
+ C.forceMove(src.loc)
for(var/obj/O in src)
- O.loc = src.loc
+ O.forceMove(src.loc)
src.add_fingerprint(user)
if(ishuman(C))
var/mob/living/carbon/human/H = C
diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm
index 278d6ec1201..5d4069d71ad 100644
--- a/code/game/machinery/Sleeper.dm
+++ b/code/game/machinery/Sleeper.dm
@@ -146,8 +146,7 @@
if(istype(I, /obj/item/weapon/reagent_containers/glass))
if(!beaker)
beaker = I
- user.drop_item()
- I.loc = src
+ user.drop_from_inventory(I,src)
user.visible_message("\The [user] adds \a [I] to \the [src].", "You add \a [I] to \the [src].")
else
user << "\The [src] has a beaker already."
@@ -236,7 +235,7 @@
if(M.client)
M.client.perspective = EYE_PERSPECTIVE
M.client.eye = src
- M.loc = src
+ M.forceMove(src)
update_use_power(2)
occupant = M
update_icon()
diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm
index c1d8b097ab3..96182d31510 100644
--- a/code/game/machinery/adv_med.dm
+++ b/code/game/machinery/adv_med.dm
@@ -67,7 +67,7 @@
usr.pulling = null
usr.client.perspective = EYE_PERSPECTIVE
usr.client.eye = src
- usr.loc = src
+ usr.forceMove(src)
src.occupant = usr
update_use_power(2)
src.icon_state = "body_scanner_1"
@@ -84,12 +84,12 @@
last_occupant_name = src.occupant.name
for(var/obj/O in src)
- O.loc = src.loc
+ O.forceMove(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.forceMove(src.loc)
src.occupant = null
update_use_power(1)
src.icon_state = "body_scanner_0"
@@ -162,12 +162,12 @@
if (M.client)
M.client.perspective = EYE_PERSPECTIVE
M.client.eye = src
- M.loc = src
+ M.forceMove(src)
src.occupant = M
update_use_power(2)
src.icon_state = "body_scanner_1"
for(var/obj/Obj in src)
- Obj.loc = src.loc
+ Obj.forceMove(src.loc)
//Foreach goto(154)
src.add_fingerprint(user)
//G = null
@@ -177,7 +177,7 @@
switch(severity)
if(1.0)
for(var/atom/movable/A as mob|obj in src)
- A.loc = src.loc
+ A.forceMove(src.loc)
ex_act(severity)
//Foreach goto(35)
//SN src = null
@@ -186,7 +186,7 @@
if(2.0)
if (prob(50))
for(var/atom/movable/A as mob|obj in src)
- A.loc = src.loc
+ A.forceMove(src.loc)
ex_act(severity)
//Foreach goto(108)
//SN src = null
@@ -195,7 +195,7 @@
if(3.0)
if (prob(25))
for(var/atom/movable/A as mob|obj in src)
- A.loc = src.loc
+ A.forceMove(src.loc)
ex_act(severity)
//Foreach goto(181)
//SN src = null
diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm
index 202cdb78c37..46cad02fcf8 100644
--- a/code/game/machinery/alarm.dm
+++ b/code/game/machinery/alarm.dm
@@ -796,7 +796,7 @@
if(do_after(user,20))
user << "You pry out the circuit!"
var/obj/item/weapon/airalarm_electronics/circuit = new /obj/item/weapon/airalarm_electronics()
- circuit.loc = user.loc
+ circuit.forceMove(user.loc)
buildstage = 0
update_icon()
return
diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm
index 92e8fc19afd..76dbd42bca6 100644
--- a/code/game/machinery/atmoalter/canister.dm
+++ b/code/game/machinery/atmoalter/canister.dm
@@ -178,7 +178,7 @@ update_flag
update_icon()
if (src.holding)
- src.holding.loc = src.loc
+ src.holding.forceMove(src.loc)
src.holding = null
return 1
@@ -354,7 +354,7 @@ update_flag
release_log += "Valve was closed by [usr] ([usr.ckey]), stopping the transfer into the [holding]
"
if(istype(holding, /obj/item/weapon/tank))
holding.manipulated_by = usr.real_name
- holding.loc = loc
+ holding.forceMove(loc)
holding = null
if (href_list["pressure_adj"])
diff --git a/code/game/machinery/atmoalter/portable_atmospherics.dm b/code/game/machinery/atmoalter/portable_atmospherics.dm
index ce4514eff7c..3e87b2b767a 100644
--- a/code/game/machinery/atmoalter/portable_atmospherics.dm
+++ b/code/game/machinery/atmoalter/portable_atmospherics.dm
@@ -22,7 +22,7 @@
air_contents.volume = volume
air_contents.temperature = T20C
-
+
var/obj/machinery/atmospherics/portables_connector/port = locate() in loc
if(port)
connect(port)
@@ -103,8 +103,7 @@
if (src.holding)
return
var/obj/item/weapon/tank/T = W
- user.drop_item()
- T.loc = src
+ user.drop_from_inventory(T,src)
src.holding = T
update_icon()
return
@@ -160,10 +159,9 @@
var/obj/item/weapon/cell/C = I
- user.drop_item()
+ user.drop_from_inventory(C,src)
C.add_fingerprint(user)
cell = C
- C.loc = src
user.visible_message("[user] opens the panel on [src] and inserts [C].", "You open the panel on [src] and insert [C].")
power_change()
return
@@ -175,7 +173,7 @@
user.visible_message("[user] opens the panel on [src] and removes [cell].", "You open the panel on [src] and remove [cell].")
cell.add_fingerprint(user)
- cell.loc = src.loc
+ cell.forceMove(src.loc)
cell = null
power_change()
return
diff --git a/code/game/machinery/atmoalter/pump.dm b/code/game/machinery/atmoalter/pump.dm
index d4ed88020b7..850b67fc560 100644
--- a/code/game/machinery/atmoalter/pump.dm
+++ b/code/game/machinery/atmoalter/pump.dm
@@ -158,7 +158,7 @@
. = 1
if (href_list["remove_tank"])
if(holding)
- holding.loc = loc
+ holding.forceMove(loc)
holding = null
. = 1
if (href_list["pressure_adj"])
diff --git a/code/game/machinery/atmoalter/scrubber.dm b/code/game/machinery/atmoalter/scrubber.dm
index 7b2b2ae3624..4e3cf1a65a2 100644
--- a/code/game/machinery/atmoalter/scrubber.dm
+++ b/code/game/machinery/atmoalter/scrubber.dm
@@ -132,7 +132,7 @@
. = 1
if (href_list["remove_tank"])
if(holding)
- holding.loc = loc
+ holding.forceMove(loc)
holding = null
. = 1
if (href_list["volume_adj"])
diff --git a/code/game/machinery/biogenerator.dm b/code/game/machinery/biogenerator.dm
index d7b7b035bd7..31415972bf8 100644
--- a/code/game/machinery/biogenerator.dm
+++ b/code/game/machinery/biogenerator.dm
@@ -319,7 +319,7 @@
user << "]The [src] is already loaded."
else
user.remove_from_mob(O)
- O.loc = src
+ O.forceMove(src)
beaker = O
updateUsrDialog()
else if(processing)
@@ -355,7 +355,7 @@
user << "\The [src] is full! Activate it."
else
user.remove_from_mob(O)
- O.loc = src
+ O.forceMove(src)
user << "You put \the [O] in \the [src]"
update_icon()
return
@@ -507,7 +507,7 @@
activate()
if("detach")
if(beaker)
- beaker.loc = src.loc
+ beaker.forceMove(src.loc)
beaker = null
update_icon()
if("create")
diff --git a/code/game/machinery/bioprinter.dm b/code/game/machinery/bioprinter.dm
index edb21409cf8..941925f02c0 100644
--- a/code/game/machinery/bioprinter.dm
+++ b/code/game/machinery/bioprinter.dm
@@ -70,7 +70,7 @@
// Meat for biomass.
if(!prints_prosthetics && istype(W, /obj/item/weapon/reagent_containers/food/snacks/meat))
stored_matter += 50
- user.drop_item()
+ user.drop_from_inventory(W,src)
user << "\The [src] processes \the [W]. Levels of stored biomass now: [stored_matter]"
qdel(W)
return
@@ -78,9 +78,9 @@
if(prints_prosthetics && istype(W, /obj/item/stack/material) && W.get_material_name() == DEFAULT_WALL_MATERIAL)
var/obj/item/stack/S = W
stored_matter += S.amount * 10
- user.drop_item()
+ user.drop_from_inventory(W,src)
user << "\The [src] processes \the [W]. Levels of stored matter now: [stored_matter]"
qdel(W)
return
-
+
return..()
diff --git a/code/game/machinery/bots/mulebot.dm b/code/game/machinery/bots/mulebot.dm
index e69f730371e..2f26024b084 100644
--- a/code/game/machinery/bots/mulebot.dm
+++ b/code/game/machinery/bots/mulebot.dm
@@ -90,8 +90,7 @@
/obj/machinery/bot/mulebot/attackby(var/obj/item/I, var/mob/user)
if(istype(I,/obj/item/weapon/cell) && open && !cell)
var/obj/item/weapon/cell/C = I
- user.drop_item()
- C.loc = src
+ user.drop_from_inventory(C,src)
cell = C
updateDialog()
else if(isscrewdriver(I))
@@ -276,9 +275,8 @@
if(open && !cell)
var/obj/item/weapon/cell/C = usr.get_active_hand()
if(istype(C))
- usr.drop_item()
+ usr.drop_from_inventory(C,src)
cell = C
- C.loc = src
C.add_fingerprint(usr)
usr.visible_message("[usr] inserts a power cell into [src].", "You insert the power cell into [src].")
@@ -405,11 +403,11 @@
if(istype(crate))
crate.close()
- C.loc = src.loc
+ C.forceMove(src.loc)
sleep(2)
if(C.loc != src.loc) //To prevent you from going onto more thano ne bot.
return
- C.loc = src
+ C.forceMove(src)
load = C
C.pixel_y += 9
@@ -436,7 +434,7 @@
mode = 1
cut_overlays()
- load.loc = src.loc
+ load.forceMove(src.loc)
load.pixel_y -= 9
load.layer = initial(load.layer)
if(ismob(load))
@@ -452,7 +450,7 @@
if(CanPass(load,T))//Can't get off onto anything that wouldn't let you pass normally
step(load, dirn)
else
- load.loc = src.loc//Drops you right there, so you shouldn't be able to get yourself stuck
+ load.forceMove(src.loc)//Drops you right there, so you shouldn't be able to get yourself stuck
load = null
@@ -463,7 +461,7 @@
for(var/atom/movable/AM in src)
if(AM == cell || AM == botcard) continue
- AM.loc = src.loc
+ AM.forceMove(src.loc)
AM.layer = initial(AM.layer)
AM.pixel_y = initial(AM.pixel_y)
if(ismob(AM))
@@ -869,7 +867,7 @@
new /obj/item/stack/rods(Tsec)
new /obj/item/stack/cable_coil/cut(Tsec)
if (cell)
- cell.loc = Tsec
+ cell.forceMove(Tsec)
cell.update_icon()
cell = null
diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm
index 858411fcfe0..2c3adecc3d3 100644
--- a/code/game/machinery/camera/camera.dm
+++ b/code/game/machinery/camera/camera.dm
@@ -144,7 +144,7 @@
else if(iswelder(W) && (wires.CanDeconstruct() || (stat & BROKEN)))
if(weld(W, user))
if(assembly)
- assembly.loc = src.loc
+ assembly.forceMove(src.loc)
assembly.anchored = 1
assembly.camera_name = c_tag
assembly.camera_network = english_list(network, "Station", ",", ",")
diff --git a/code/game/machinery/camera/camera_assembly.dm b/code/game/machinery/camera/camera_assembly.dm
index 4413a9ec6cc..10a60010adf 100644
--- a/code/game/machinery/camera/camera_assembly.dm
+++ b/code/game/machinery/camera/camera_assembly.dm
@@ -96,7 +96,7 @@
state = 4
var/obj/machinery/camera/C = new(src.loc)
- src.loc = C
+ src.forceMove(C)
C.assembly = src
C.auto_turn()
@@ -128,7 +128,7 @@
user << "You attach \the [W] into the assembly inner circuits."
upgrades += W
user.remove_from_mob(W)
- W.loc = src
+ W.forceMove(src)
return
// Taking out upgrades
@@ -137,7 +137,7 @@
if(U)
user << "You unattach an upgrade from the assembly."
playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1)
- U.loc = get_turf(src)
+ U.forceMove(get_turf(src))
upgrades -= U
return
diff --git a/code/game/machinery/cell_charger.dm b/code/game/machinery/cell_charger.dm
index 58f77cb6320..2eee1884eca 100644
--- a/code/game/machinery/cell_charger.dm
+++ b/code/game/machinery/cell_charger.dm
@@ -53,8 +53,7 @@
user << "The [name] blinks red as you try to insert the cell!"
return
- user.drop_item()
- W.loc = src
+ user.drop_from_inventory(W,src)
charging = W
user.visible_message("[user] inserts a cell into the charger.", "You insert a cell into the charger.")
chargelevel = -1
diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm
index 298a68ada3c..6ac039a4334 100644
--- a/code/game/machinery/cloning.dm
+++ b/code/game/machinery/cloning.dm
@@ -235,7 +235,7 @@
else if(istype(W, /obj/item/weapon/reagent_containers/food/snacks/meat))
user << "\The [src] processes \the [W]."
biomass += 50
- user.drop_item()
+ user.drop_from_inventory(W,src)
qdel(W)
return
else if(iswrench(W))
@@ -313,7 +313,7 @@
if(occupant.client)
occupant.client.eye = occupant.client.mob
occupant.client.perspective = MOB_PERSPECTIVE
- occupant.loc = loc
+ occupant.forceMove(loc)
eject_wait = 0 //If it's still set somehow.
domutcheck(occupant) //Waiting until they're out before possible transforming.
occupant = null
@@ -347,21 +347,21 @@
switch(severity)
if(1.0)
for(var/atom/movable/A as mob|obj in src)
- A.loc = loc
+ A.forceMove(loc)
ex_act(severity)
qdel(src)
return
if(2.0)
if(prob(50))
for(var/atom/movable/A as mob|obj in src)
- A.loc = loc
+ A.forceMove(loc)
ex_act(severity)
qdel(src)
return
if(3.0)
if(prob(25))
for(var/atom/movable/A as mob|obj in src)
- A.loc = loc
+ A.forceMove(loc)
ex_act(severity)
qdel(src)
return
diff --git a/code/game/machinery/computer/ai_core.dm b/code/game/machinery/computer/ai_core.dm
index 2b522e36f20..7d4fe3e05f1 100644
--- a/code/game/machinery/computer/ai_core.dm
+++ b/code/game/machinery/computer/ai_core.dm
@@ -43,8 +43,7 @@
user << "You place the circuit board inside the frame."
icon_state = "1"
circuit = P
- user.drop_item()
- P.loc = src
+ user.drop_from_inventory(P,src)
if(isscrewdriver(P) && circuit)
playsound(loc, 'sound/items/Screwdriver.ogg', 50, 1)
user << "You screw the circuit board into place."
@@ -55,7 +54,7 @@
user << "You remove the circuit board."
state = 1
icon_state = "0"
- circuit.loc = loc
+ circuit.forceMove(loc)
circuit = null
if(2)
if(isscrewdriver(P) && circuit)
@@ -139,8 +138,7 @@
if(M.brainmob.mind)
clear_antag_roles(M.brainmob.mind, 1)
- user.drop_item()
- P.loc = src
+ user.drop_from_inventory(P,src)
brain = P
usr << "Added [P]."
icon_state = "3b"
@@ -148,7 +146,7 @@
if(iscrowbar(P) && brain)
playsound(loc, 'sound/items/Crowbar.ogg', 50, 1)
user << "You remove the brain."
- brain.loc = loc
+ brain.forceMove(loc)
brain = null
icon_state = "3"
@@ -200,7 +198,7 @@
transfer.aiRestorePowerRoutine = 0
transfer.control_disabled = 0
transfer.aiRadio.disabledAi = 0
- transfer.loc = get_turf(src)
+ transfer.forceMove(get_turf(src))
transfer.create_eyeobj()
transfer.cancel_camera()
user << "Transfer successful: [transfer.name] ([rand(1000,9999)].exe) downloaded to host terminal. Local copy wiped."
diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm
index 013008fea5d..7daddf02f6b 100644
--- a/code/game/machinery/computer/buildandrepair.dm
+++ b/code/game/machinery/computer/buildandrepair.dm
@@ -44,8 +44,7 @@
user << "You place the circuit board inside the frame."
src.icon_state = "1"
src.circuit = P
- user.drop_item()
- P.loc = src
+ user.drop_from_inventory(P,src)
else
user << "This frame does not accept circuit boards of this type!"
if(isscrewdriver(P) && circuit)
@@ -58,7 +57,7 @@
user << "You remove the circuit board."
src.state = 1
src.icon_state = "0"
- circuit.loc = src.loc
+ circuit.forceMove(src.loc)
src.circuit = null
if(2)
if(isscrewdriver(P) && circuit)
diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm
index 0db143b030a..6fa0d9a8806 100644
--- a/code/game/machinery/computer/cloning.dm
+++ b/code/game/machinery/computer/cloning.dm
@@ -92,8 +92,7 @@
/obj/machinery/computer/cloning/attackby(obj/item/W as obj, mob/user as mob)
if (istype(W, /obj/item/weapon/disk/data)) //INSERT SOME DISKETTES
if (!src.diskette)
- user.drop_item()
- W.loc = src
+ user.drop_from_inventory(W,src)
src.diskette = W
user << "You insert [W]."
src.updateUsrDialog()
@@ -293,7 +292,7 @@
src.temp = "Load successful."
if("eject")
if (!isnull(src.diskette))
- src.diskette.loc = src.loc
+ src.diskette.forceMove(src.loc)
src.diskette = null
else if (href_list["save_disk"]) //Save to disk!
diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm
index dc26bf943b9..cc90d761f7f 100644
--- a/code/game/machinery/computer/computer.dm
+++ b/code/game/machinery/computer/computer.dm
@@ -101,7 +101,7 @@
A.circuit = M
A.anchored = 1
for (var/obj/C in src)
- C.loc = src.loc
+ C.forceMove(src.loc)
if (src.stat & BROKEN)
user << "The broken glass falls out."
new /obj/item/weapon/material/shard( src.loc )
diff --git a/code/game/machinery/computer/guestpass.dm b/code/game/machinery/computer/guestpass.dm
index e6643992915..7edeab2d5f2 100644
--- a/code/game/machinery/computer/guestpass.dm
+++ b/code/game/machinery/computer/guestpass.dm
@@ -73,7 +73,7 @@
/obj/machinery/computer/guestpass/attackby(obj/O, mob/user)
if(istype(O, /obj/item/weapon/card/id))
if(!giver && user.unEquip(O))
- O.loc = src
+ O.forceMove(src)
giver = O
updateUsrDialog()
else if(giver)
@@ -152,18 +152,18 @@
if ("id")
if (giver)
if(ishuman(usr))
- giver.loc = usr.loc
+ giver.forceMove(usr.loc)
if(!usr.get_active_hand())
usr.put_in_hands(giver)
giver = null
else
- giver.loc = src.loc
+ giver.forceMove(src.loc)
giver = null
accesses.Cut()
else
var/obj/item/I = usr.get_active_hand()
if (istype(I, /obj/item/weapon/card/id) && usr.unEquip(I))
- I.loc = src
+ I.forceMove(src)
giver = I
updateUsrDialog()
diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm
index 5af56409e32..0ef10a19461 100644
--- a/code/game/machinery/computer/medical.dm
+++ b/code/game/machinery/computer/medical.dm
@@ -29,7 +29,7 @@
if(scan)
usr << "You remove \the [scan] from \the [src]."
- scan.loc = get_turf(src)
+ scan.forceMove(get_turf(src))
if(!usr.get_active_hand() && istype(usr,/mob/living/carbon/human))
usr.put_in_hands(scan)
scan = null
@@ -39,7 +39,7 @@
/obj/machinery/computer/med_data/attackby(var/obj/item/O, var/mob/user)
if(istype(O, /obj/item/weapon/card/id) && !scan && user.unEquip(O))
- O.loc = src
+ O.forceMove(src)
scan = O
user << "You insert \the [O]."
else
@@ -173,7 +173,7 @@
if (src.scan)
if(ishuman(usr))
- scan.loc = usr.loc
+ scan.forceMove(usr.loc)
if(!usr.get_active_hand())
usr.put_in_hands(scan)
@@ -181,14 +181,13 @@
scan = null
else
- src.scan.loc = src.loc
+ src.scan.forceMove(src.loc)
src.scan = null
else
var/obj/item/I = usr.get_active_hand()
if (istype(I, /obj/item/weapon/card/id))
- usr.drop_item()
- I.loc = src
+ usr.drop_from_inventory(I,src)
src.scan = I
else if (href_list["logout"])
diff --git a/code/game/machinery/computer/message.dm b/code/game/machinery/computer/message.dm
index 3a3e77cf8be..04a17553b98 100644
--- a/code/game/machinery/computer/message.dm
+++ b/code/game/machinery/computer/message.dm
@@ -62,7 +62,7 @@
screen = 2
src.spark_system.queue()
var/obj/item/weapon/paper/monitorkey/MK = new/obj/item/weapon/paper/monitorkey
- MK.loc = src.loc
+ MK.forceMove(src.loc)
// Will help make emagging the console not so easy to get away with.
MK.info += "
£%@%(*$%&(£&?*(%&£/{}"
addtimer(CALLBACK(src, .proc/UnmagConsole), 100 * length(linkedServer.decryptkey))
diff --git a/code/game/machinery/computer/pod.dm b/code/game/machinery/computer/pod.dm
index b8e09200390..4ef59b62ea0 100644
--- a/code/game/machinery/computer/pod.dm
+++ b/code/game/machinery/computer/pod.dm
@@ -73,7 +73,7 @@
M = new /obj/item/weapon/circuitboard/pod( A )
for (var/obj/C in src)
- C.loc = loc
+ C.forceMove(loc)
M.id = id
A.circuit = M
A.state = 3
@@ -96,7 +96,7 @@
M = new /obj/item/weapon/circuitboard/pod( A )
for (var/obj/C in src)
- C.loc = loc
+ C.forceMove(loc)
M.id = id
A.circuit = M
A.state = 4
diff --git a/code/game/machinery/computer/prisonshuttle.dm b/code/game/machinery/computer/prisonshuttle.dm
index 4b3a5a90b08..60107416305 100644
--- a/code/game/machinery/computer/prisonshuttle.dm
+++ b/code/game/machinery/computer/prisonshuttle.dm
@@ -33,7 +33,7 @@ var/prison_shuttle_timeleft = 0
var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc )
var/obj/item/weapon/circuitboard/prison_shuttle/M = new /obj/item/weapon/circuitboard/prison_shuttle( A )
for (var/obj/C in src)
- C.loc = src.loc
+ C.forceMove(src.loc)
A.circuit = M
A.anchored = 1
diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm
index e331cb0e2ea..f7cc4e625ed 100644
--- a/code/game/machinery/computer/security.dm
+++ b/code/game/machinery/computer/security.dm
@@ -37,7 +37,7 @@
if(scan)
usr << "You remove \the [scan] from \the [src]."
- scan.loc = get_turf(src)
+ scan.forceMove(get_turf(src))
if(!usr.get_active_hand() && istype(usr,/mob/living/carbon/human))
usr.put_in_hands(scan)
scan = null
@@ -47,8 +47,7 @@
/obj/machinery/computer/secure_data/attackby(obj/item/O as obj, user as mob)
if(istype(O, /obj/item/weapon/card/id) && !scan)
- usr.drop_item()
- O.loc = src
+ usr.drop_from_inventory(O,src)
scan = O
user << "You insert [O]."
..()
@@ -272,12 +271,12 @@ What a mess.*/
if(istype(usr,/mob/living/carbon/human) && !usr.get_active_hand())
usr.put_in_hands(scan)
else
- scan.loc = get_turf(src)
+ scan.forceMove(get_turf(src))
scan = null
else
var/obj/item/I = usr.get_active_hand()
if (istype(I, /obj/item/weapon/card/id) && usr.unEquip(I))
- I.loc = src
+ I.forceMove(src)
scan = I
if("Log Out")
diff --git a/code/game/machinery/computer/sentencing.dm b/code/game/machinery/computer/sentencing.dm
index c3845c05642..7dd92033b96 100644
--- a/code/game/machinery/computer/sentencing.dm
+++ b/code/game/machinery/computer/sentencing.dm
@@ -29,8 +29,7 @@
/obj/machinery/computer/sentencing/attackby(obj/item/O as obj, user as mob)
if( istype( O, /obj/item/weapon/paper/incident ) && menu_screen == "import_incident" )
- usr.drop_item()
- O.loc = src
+ usr.drop_from_inventory(O,src)
if( import( O ))
ping( "\The [src] pings, \"Successfully imported incident report!\"" )
diff --git a/code/game/machinery/computer/skills.dm b/code/game/machinery/computer/skills.dm
index f60ab34fcb0..99dcc5f8af2 100644
--- a/code/game/machinery/computer/skills.dm
+++ b/code/game/machinery/computer/skills.dm
@@ -27,7 +27,7 @@
/obj/machinery/computer/skills/attackby(obj/item/O as obj, var/mob/user)
if(istype(O, /obj/item/weapon/card/id) && !scan && user.unEquip(O))
- O.loc = src
+ O.forceMove(src)
scan = O
user << "You insert [O]."
else
@@ -46,7 +46,7 @@
if(scan)
usr << "You remove \the [scan] from \the [src]."
- scan.loc = get_turf(src)
+ scan.forceMove(get_turf(src))
if(!usr.get_active_hand() && istype(usr,/mob/living/carbon/human))
usr.put_in_hands(scan)
scan = null
@@ -226,7 +226,7 @@ What a mess.*/
else
var/obj/item/I = usr.get_active_hand()
if (istype(I, /obj/item/weapon/card/id) && usr.unEquip(I))
- I.loc = src
+ I.forceMove(src)
scan = I
if("Log Out")
diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm
index 01dfd29e3d2..b38521bd5be 100644
--- a/code/game/machinery/constructable_frame.dm
+++ b/code/game/machinery/constructable_frame.dm
@@ -55,8 +55,7 @@
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
user << "You add the circuit board to the frame."
circuit = P
- user.drop_item()
- P.loc = src
+ user.drop_from_inventory(P,src)
icon_state = "box_2"
state = 3
components = list()
@@ -85,14 +84,14 @@
if(iscrowbar(P))
playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1)
state = 2
- circuit.loc = src.loc
+ circuit.forceMove(src.loc)
circuit = null
if(components.len == 0)
user << "You remove the circuit board."
else
user << "You remove the circuit board and other components."
for(var/obj/item/weapon/W in components)
- W.loc = src.loc
+ W.forceMove(src.loc)
desc = initial(desc)
req_components = null
components = null
@@ -146,8 +145,7 @@
req_components[I] -= camt
update_desc()
break
- user.drop_item()
- P.loc = src
+ user.drop_from_inventory(P,src)
components += P
req_components[I]--
update_desc()
diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm
index 6986773af2f..e1a9a4c73c9 100644
--- a/code/game/machinery/cryo.dm
+++ b/code/game/machinery/cryo.dm
@@ -30,7 +30,7 @@
var/turf/T = loc
T.contents += contents
if(beaker)
- beaker.loc = get_step(loc, SOUTH) //Beaker is carefully ejected from the wreckage of the cryotube
+ beaker.forceMove(get_step(loc, SOUTH)) //Beaker is carefully ejected from the wreckage of the cryotube
return ..()
/obj/machinery/atmospherics/unary/cryo_cell/atmos_init()
@@ -159,7 +159,7 @@
if(href_list["ejectBeaker"])
if(beaker)
- beaker.loc = get_step(loc, SOUTH)
+ beaker.forceMove(get_step(loc, SOUTH))
beaker = null
if(href_list["ejectOccupant"])
@@ -177,8 +177,7 @@
return
beaker = G
- user.drop_item()
- G.loc = src
+ user.drop_from_inventory(G,src)
user.visible_message("[user] adds \a [G] to \the [src]!", "You add \a [G] to \the [src]!")
else if(istype(G, /obj/item/weapon/grab))
var/obj/item/weapon/grab/grab = G
@@ -322,11 +321,11 @@
if(!( occupant ))
return
//for(var/obj/O in src)
- // O.loc = loc
+ // O.forceMove(loc)
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.forceMove(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
@@ -355,7 +354,7 @@
M.client.perspective = EYE_PERSPECTIVE
M.client.eye = src
M.stop_pulling()
- M.loc = src
+ M.forceMove(src)
M.ExtinguishMob()
if(M.health > -100 && (M.health < 0 || M.sleeping))
M << "You feel a cold liquid surround you. Your skin starts to freeze up."
diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm
index fa415c78411..d26d5e894a7 100644
--- a/code/game/machinery/cryopod.dm
+++ b/code/game/machinery/cryopod.dm
@@ -279,8 +279,7 @@
/obj/machinery/cryopod/proc/despawn_occupant()
//Drop all items into the pod.
for(var/obj/item/W in occupant)
- occupant.drop_from_inventory(W)
- W.forceMove(src)
+ occupant.drop_from_inventory(W,src)
if(W.contents.len) //Make sure we catch anything not handled by qdel() on the items.
for(var/obj/item/O in W.contents)
@@ -313,7 +312,7 @@
else
if(control_computer && control_computer.allow_items)
control_computer.frozen_items += W
- W.loc = null
+ W.forceMove(null)
else
W.forceMove(src.loc)
@@ -417,7 +416,7 @@
if(do_after(user, 20))
if(!L) return
- L.loc = src
+ L.forceMove(src)
if(L.client)
L.client.perspective = EYE_PERSPECTIVE
diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index 74550353ae5..e8df832dd8d 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -1245,7 +1245,7 @@ About the new airlock wires panel:
assembly_type = assembly.type
electronics = assembly.electronics
- electronics.loc = src
+ electronics.forceMove(src)
//update the door's access to match the electronics'
secured_wires = electronics.secure
diff --git a/code/game/machinery/doors/brigdoors.dm b/code/game/machinery/doors/brigdoors.dm
index 40341b7b66e..7ebb7e1de87 100644
--- a/code/game/machinery/doors/brigdoors.dm
+++ b/code/game/machinery/doors/brigdoors.dm
@@ -263,15 +263,13 @@
return .
-/obj/machinery/door_timer/attackby(obj/item/O as obj, user as mob)
+/obj/machinery/door_timer/attackby(obj/item/O as obj, var/mob/user as mob)
if( istype( O, /obj/item/weapon/paper/incident ))
if( !incident )
if( import( O, user ))
- usr.drop_item()
- O.loc = src
-
ping( "\The [src] pings, \"Successfully imported incident report!\"" )
- qdel( O )
+ user.drop_from_inventory(O,get_turf(src))
+ qdel(O)
src.updateUsrDialog()
else
user << "\The [src] buzzes, \"There's already an active sentence!\""
diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm
index 328a70a778b..74dc071e0bd 100644
--- a/code/game/machinery/doors/door.dm
+++ b/code/game/machinery/doors/door.dm
@@ -287,7 +287,7 @@
else
repairing = stack.split(amount_needed)
if (repairing)
- repairing.loc = src
+ repairing.forceMove(src)
transfer = repairing.amount
if (transfer)
@@ -315,7 +315,7 @@
if(repairing && iscrowbar(I))
user << "You remove \the [repairing]."
playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1)
- repairing.loc = user.loc
+ repairing.forceMove(user.loc)
repairing = null
return
diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm
index 12de52ba07e..c48598269ad 100644
--- a/code/game/machinery/doors/windowdoor.dm
+++ b/code/game/machinery/doors/windowdoor.dm
@@ -42,7 +42,7 @@
else
ae = electronics
electronics = null
- ae.loc = src.loc
+ ae.forceMove(src.loc)
if(operating == -1)
ae.icon_state = "door_electronics_smoked"
operating = 0
@@ -209,7 +209,7 @@
else
ae = electronics
electronics = null
- ae.loc = src.loc
+ ae.forceMove(src.loc)
ae.icon_state = "door_electronics_smoked"
operating = 0
diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm
index 94c7095cf81..58c9b6eec38 100644
--- a/code/game/machinery/firealarm.dm
+++ b/code/game/machinery/firealarm.dm
@@ -123,7 +123,7 @@
playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1)
spawn(20)
var/obj/item/weapon/firealarm_electronics/circuit = new /obj/item/weapon/firealarm_electronics()
- circuit.loc = user.loc
+ circuit.forceMove(user.loc)
buildstage = 0
update_icon()
if(0)
diff --git a/code/game/machinery/floodlight.dm b/code/game/machinery/floodlight.dm
index bffd75ba29c..1d4f9183ab3 100644
--- a/code/game/machinery/floodlight.dm
+++ b/code/game/machinery/floodlight.dm
@@ -78,9 +78,9 @@
if(ishuman(user))
if(!user.get_active_hand())
user.put_in_hands(cell)
- cell.loc = user.loc
+ cell.forceMove(user.loc)
else
- cell.loc = loc
+ cell.forceMove(loc)
cell.add_fingerprint(user)
cell.update_icon()
@@ -127,8 +127,7 @@
if(cell)
user << "There is a power cell already installed."
else
- user.drop_item()
- W.loc = src
+ user.drop_from_inventory(W,src)
cell = W
user << "You insert the power cell."
update_icon()
diff --git a/code/game/machinery/floorlayer.dm b/code/game/machinery/floorlayer.dm
index 93cc7566a3a..491015d51e6 100644
--- a/code/game/machinery/floorlayer.dm
+++ b/code/game/machinery/floorlayer.dm
@@ -56,7 +56,7 @@
var/obj/item/stack/tile/E = input("Choose remove tile type.", "Tiles") as null|anything in contents
if(E)
user << "You remove the [E] from /the [src]."
- E.loc = src.loc
+ E.forceMove(src.loc)
T = null
return
@@ -114,7 +114,7 @@
/obj/machinery/floorlayer/proc/TakeTile(var/obj/item/stack/tile/tile)
if(!T) T = tile
- tile.loc = src
+ tile.forceMove(src)
SortStacks()
diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm
index fa11f745638..fc74a03b5f7 100644
--- a/code/game/machinery/hologram.dm
+++ b/code/game/machinery/hologram.dm
@@ -235,7 +235,7 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/
var/tempicon = getFlatIcon(caller_id)
hologram.name = "[caller_id.name] (Hologram)"
- hologram.loc = get_step(src,1)
+ hologram.forceMove(get_step(src,1))
masters[caller_id] = hologram
hologram.icon = getHologramIcon(icon(tempicon)) // Add the callers image as an overlay to keep coloration!
else
diff --git a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm
index 072510eea27..29e4cc70a77 100644
--- a/code/game/machinery/iv_drip.dm
+++ b/code/game/machinery/iv_drip.dm
@@ -61,8 +61,7 @@
user << "There is already a reagent container loaded!"
return
- user.drop_item()
- W.loc = src
+ user.drop_from_inventory(W,src)
src.beaker = W
user << "You attach \the [W] to \the [src]."
src.update_icon()
@@ -132,7 +131,7 @@
if (isAI(user))
return
if(src.beaker)
- src.beaker.loc = get_turf(src)
+ src.beaker.forceMove(get_turf(src))
src.beaker = null
update_icon()
else
diff --git a/code/game/machinery/kitchen/cooking_machines/_appliance.dm b/code/game/machinery/kitchen/cooking_machines/_appliance.dm
index d95119f7446..953c5dcdc1c 100644
--- a/code/game/machinery/kitchen/cooking_machines/_appliance.dm
+++ b/code/game/machinery/kitchen/cooking_machines/_appliance.dm
@@ -391,20 +391,20 @@
var/obj/temp = new /obj(src) //To prevent infinite loops, all results will be moved into a temporary location so they're not considered as inputs for other recipes
for (var/atom/movable/AM in results)
- AM.loc = temp
+ AM.forceMove(temp)
//making multiple copies of a recipe from one container. For example, tons of fries
while (select_recipe(RECIPE_LIST(appliancetype), C) == recipe)
var/list/TR = list()
TR += recipe.make_food(C)
for (var/atom/movable/AM in TR) //Move results to buffer
- AM.loc = temp
+ AM.forceMove(temp)
results += TR
for (var/r in results)
var/obj/item/weapon/reagent_containers/food/snacks/R = r
- R.loc = C //Move everything from the buffer back to the container
+ R.forceMove(C) //Move everything from the buffer back to the container
R.cooked |= cook_type
QDEL_NULL(temp) //delete buffer object
diff --git a/code/game/machinery/kitchen/gibber.dm b/code/game/machinery/kitchen/gibber.dm
index 24f60c8b640..44f7c8ed71d 100644
--- a/code/game/machinery/kitchen/gibber.dm
+++ b/code/game/machinery/kitchen/gibber.dm
@@ -45,7 +45,7 @@
if(M.loc == input_plate
)
- M.loc = src
+ M.forceMove(src)
M.gib()
@@ -99,6 +99,7 @@
else if(istype(W, /obj/item/organ))
user.drop_from_inventory(W)
+ //TODO: Gibber Animations
qdel(W)
user.visible_message("\The [user] feeds \the [W] into \the [src], obliterating it.")
@@ -147,7 +148,7 @@
if(victim.client)
victim.client.perspective = EYE_PERSPECTIVE
victim.client.eye = src
- victim.loc = src
+ victim.forceMove(src)
src.occupant = victim
update_icon()
@@ -166,11 +167,11 @@
if(operating || !src.occupant)
return
for(var/obj/O in src)
- O.loc = src.loc
+ O.forceMove(src.loc)
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.forceMove(src.loc)
src.occupant = null
update_icon()
return
@@ -234,7 +235,7 @@
if(istype(thing,/obj/item/organ) && prob(80))
qdel(thing)
continue
- thing.loc = get_turf(thing) // Drop it onto the turf for throwing.
+ thing.forceMove(get_turf(thing)) // Drop it onto the turf for throwing.
thing.throw_at(get_edge_target_turf(src,gib_throw_dir),rand(0,3),emagged ? 100 : 50) // Being pelted with bits of meat and bone would hurt.
update_icon()
diff --git a/code/game/machinery/kitchen/microwave.dm b/code/game/machinery/kitchen/microwave.dm
index 3eb0797de31..b94f422d23c 100644
--- a/code/game/machinery/kitchen/microwave.dm
+++ b/code/game/machinery/kitchen/microwave.dm
@@ -116,8 +116,7 @@
return
else
// user.remove_from_mob(O) //This just causes problems so far as I can tell. -Pete
- user.drop_item()
- O.loc = src
+ user.drop_from_inventory(O,src)
user.visible_message( \
"\The [user] has added \the [O] to \the [src].", \
"You add \the [O] to \the [src].")
@@ -259,7 +258,7 @@
wzhzhzh(16)
muck_finish()
cooked = fail()
- cooked.loc = src.loc
+ cooked.forceMove(src.loc)
return
else if (has_extra_item())
if (!wzhzhzh(16))
@@ -267,7 +266,7 @@
return
broke()
cooked = fail()
- cooked.loc = src.loc
+ cooked.forceMove(src.loc)
return
else
if (!wzhzhzh(40))
@@ -275,7 +274,7 @@
return
stop()
cooked = fail()
- cooked.loc = src.loc
+ cooked.forceMove(src.loc)
return
else
var/halftime = round((recipe.time*4)/10/2)
@@ -285,7 +284,7 @@
if (!wzhzhzh(halftime))
abort()
cooked = fail()
- cooked.loc = src.loc
+ cooked.forceMove(src.loc)
return
@@ -300,7 +299,7 @@
cooked_items += things
//Move cooked things to the buffer so they're not considered as ingredients
for (var/atom/movable/AM in things)
- AM.loc = temp
+ AM.forceMove(temp)
valid = 0
recipe = select_recipe(RECIPE_LIST(appliancetype),src)
@@ -310,7 +309,7 @@
for (var/r in cooked_items)
var/atom/movable/R = r
- R.loc = src //Move everything from the buffer back to the container
+ R.forceMove(src) //Move everything from the buffer back to the container
qdel(temp)//Delete buffer object
temp = null
diff --git a/code/game/machinery/kitchen/smartfridge.dm b/code/game/machinery/kitchen/smartfridge.dm
index c60d4e97db0..fc4eba83e2a 100644
--- a/code/game/machinery/kitchen/smartfridge.dm
+++ b/code/game/machinery/kitchen/smartfridge.dm
@@ -148,7 +148,7 @@
item_quants[S.name]--
S.name = "dried [S.name]"
S.color = "#AAAAAA"
- S.loc = loc
+ S.forceMove(loc)
else
var/D = S.dried_type
new D(loc)
@@ -206,7 +206,7 @@
return 1
else
user.remove_from_mob(O)
- O.loc = src
+ O.forceMove(src)
if(item_quants[O.name])
item_quants[O.name]++
else
@@ -314,7 +314,7 @@
var/i = amount
for(var/obj/O in contents)
if(O.name == K)
- O.loc = loc
+ O.forceMove(loc)
i--
if(i <= 0)
return 1
@@ -335,7 +335,7 @@
item_quants[O]--
for(var/obj/T in contents)
if(T.name == O)
- T.loc = src.loc
+ T.forceMove(src.loc)
throw_item = T
break
break
diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm
index 97f31919a7e..cc2a61dd7fc 100644
--- a/code/game/machinery/machinery.dm
+++ b/code/game/machinery/machinery.dm
@@ -359,7 +359,7 @@ Class Procs:
R.handle_item_insertion(G, 1)
component_parts -= G
component_parts += B
- B.loc = src
+ B.forceMove(src)
user << "[G.name] replaced with [B.name]."
break
for(var/obj/item/weapon/stock_parts/A in component_parts)
@@ -375,7 +375,7 @@ Class Procs:
R.handle_item_insertion(A, 1)
component_parts -= A
component_parts += B
- B.loc = src
+ B.forceMove(src)
user << "[A.name] replaced with [B.name]."
break
RefreshParts()
@@ -393,7 +393,7 @@ Class Procs:
M.state = 2
M.icon_state = "box_1"
for(var/obj/I in component_parts)
- I.loc = loc
+ I.forceMove(loc)
qdel(src)
return 1
diff --git a/code/game/machinery/megavend.dm b/code/game/machinery/megavend.dm
index 85423e03b6f..2ee1ffd745a 100644
--- a/code/game/machinery/megavend.dm
+++ b/code/game/machinery/megavend.dm
@@ -45,7 +45,6 @@
if(W.autodrobe_no_remove)
continue
H.drop_from_inventory(W,gearbox)
- W.forceMove(gearbox)
H.put_in_any_hand_if_possible(gearbox)
H << "You feel a pleasant breeze as the autolocker whisks away all of your clothes, packing them neatly in a box."
diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm
index 7c3de6a7647..8bddbef8585 100644
--- a/code/game/machinery/newscaster.dm
+++ b/code/game/machinery/newscaster.dm
@@ -752,15 +752,14 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
/obj/machinery/newscaster/proc/AttachPhoto(mob/user as mob)
if(photo_data)
if(!photo_data.is_synth)
- photo_data.photo.loc = src.loc
+ photo_data.photo.forceMove(src.loc)
if(!issilicon(user))
user.put_in_inactive_hand(photo_data.photo)
qdel(photo_data)
if(istype(user.get_active_hand(), /obj/item/weapon/photo))
var/obj/item/photo = user.get_active_hand()
- user.drop_item()
- photo.loc = src
+ user.drop_from_inventory(photo,src)
photo_data = new(photo, 0)
else if(istype(user,/mob/living/silicon))
var/mob/living/silicon/tempAI = user
@@ -964,7 +963,7 @@ obj/item/weapon/newspaper/attackby(obj/item/weapon/W as obj, mob/user as mob)
NEWSPAPER.news_content += FC
if(SSnews.wanted_issue)
NEWSPAPER.important_message = SSnews.wanted_issue
- NEWSPAPER.loc = get_turf(src)
+ NEWSPAPER.forceMove(get_turf(src))
src.paper_remaining--
return
diff --git a/code/game/machinery/nuclear_bomb.dm b/code/game/machinery/nuclear_bomb.dm
index 15ba07f297e..4af6c560a68 100644
--- a/code/game/machinery/nuclear_bomb.dm
+++ b/code/game/machinery/nuclear_bomb.dm
@@ -73,8 +73,7 @@ var/bomb_set
if (src.extended)
if (istype(O, /obj/item/weapon/disk/nuclear))
- usr.drop_item()
- O.loc = src
+ usr.drop_from_inventory(O,src)
src.auth = O
src.add_fingerprint(user)
return attack_hand(user)
@@ -231,14 +230,13 @@ var/bomb_set
if (href_list["auth"])
if (auth)
- auth.loc = loc
+ auth.forceMove(loc)
yes_code = 0
auth = null
else
var/obj/item/I = usr.get_active_hand()
if (istype(I, /obj/item/weapon/disk/nuclear))
- usr.drop_item()
- I.loc = src
+ usr.drop_from_inventory(I,src)
auth = I
if (is_auth(usr))
if (href_list["type"])
diff --git a/code/game/machinery/pipe/pipe_dispenser.dm b/code/game/machinery/pipe/pipe_dispenser.dm
index 68e462045f3..bd332e4373e 100644
--- a/code/game/machinery/pipe/pipe_dispenser.dm
+++ b/code/game/machinery/pipe/pipe_dispenser.dm
@@ -102,7 +102,7 @@
src.add_fingerprint(usr)
if (istype(W, /obj/item/pipe) || istype(W, /obj/item/pipe_meter))
usr << "You put [W] back to [src]."
- user.drop_item()
+ user.drop_from_inventory(W,get_turf(src))
qdel(W)
return
else if (iswrench(W))
diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm
index af1744d1553..6155150cf1b 100644
--- a/code/game/machinery/portable_turret.dm
+++ b/code/game/machinery/portable_turret.dm
@@ -740,8 +740,7 @@
user << "\the [I] is stuck to your hand, you cannot put it in \the [src]"
return
user << "You install [I] into the turret."
- user.drop_item()
- E.loc = src
+ user.drop_from_inventory(E,src)
target_type = /obj/machinery/porta_turret
installation = I.type //installation becomes I.type
build_step = 4
@@ -879,7 +878,7 @@
if(!installation)
return
build_step = 3
- E.loc = src.loc
+ E.forceMove(src.loc)
installation = null
cut_overlays()
icon_state = "turret_frame_3_[case_sprite_set]"
diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm
index 4af804821e3..32bef4e12d7 100644
--- a/code/game/machinery/recharger.dm
+++ b/code/game/machinery/recharger.dm
@@ -77,8 +77,7 @@
user << "\The [name] blinks red as you try to insert the item!"
return
- user.drop_item()
- G.forceMove(src)
+ user.drop_from_inventory(G,src)
charging = G
update_icon()
diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm
index 52bc152ca30..f4cf3f5334e 100644
--- a/code/game/machinery/requests_console.dm
+++ b/code/game/machinery/requests_console.dm
@@ -357,7 +357,7 @@ var/list/obj/machinery/requests_console/allConsoles = list()
if(lid) //More of that restocking business
var/obj/item/weapon/paper_bundle/C = O
paperstock += C.amount
- user.drop_item(C)
+ user.drop_from_inventory(C,get_turf(src))
qdel(C)
for (var/mob/U in hearers(4, src.loc))
U.show_message(text("\icon[src] *The Requests Console beeps: 'Paper added.'"))
@@ -366,7 +366,7 @@ var/list/obj/machinery/requests_console/allConsoles = list()
else if (istype(O, /obj/item/weapon/paper))
if(lid) //Stocking them papers
var/obj/item/weapon/paper/C = O
- user.drop_item(C)
+ user.drop_from_inventory(C,get_turf(src))
qdel(C)
paperstock++
for (var/mob/U in hearers(4, src.loc))
diff --git a/code/game/machinery/robot_fabricator.dm b/code/game/machinery/robot_fabricator.dm
index 006d5553751..07e6c1cde3a 100644
--- a/code/game/machinery/robot_fabricator.dm
+++ b/code/game/machinery/robot_fabricator.dm
@@ -126,7 +126,7 @@ Please wait until completion...
spawn (build_time)
if (!isnull(src.being_built))
- src.being_built.loc = get_turf(src)
+ src.being_built.forceMove(get_turf(src))
src.being_built = null
src.update_use_power(1)
src.operating = 0
diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm
index aef72a14373..15c0f14c1b7 100644
--- a/code/game/machinery/spaceheater.dm
+++ b/code/game/machinery/spaceheater.dm
@@ -56,9 +56,8 @@
// insert cell
var/obj/item/weapon/cell/C = usr.get_active_hand()
if(istype(C))
- user.drop_item()
+ user.drop_from_inventory(C,src)
cell = C
- C.loc = src
C.add_fingerprint(usr)
user.visible_message("[user] inserts a power cell into [src].", "You insert the power cell into [src].")
@@ -139,9 +138,8 @@
if(panel_open && !cell)
var/obj/item/weapon/cell/C = usr.get_active_hand()
if(istype(C))
- usr.drop_item()
+ usr.drop_from_inventory(C,src)
cell = C
- C.loc = src
C.add_fingerprint(usr)
power_change()
usr.visible_message("[usr] inserts \the [C] into \the [src].", "You insert \the [C] into \the [src].")
diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm
index 5389842e608..4ccc338be6e 100644
--- a/code/game/machinery/suit_storage_unit.dm
+++ b/code/game/machinery/suit_storage_unit.dm
@@ -250,7 +250,7 @@
if(!src.HELMET)
return //Do I even need this sanity check? Nyoro~n
else
- src.HELMET.loc = src.loc
+ src.HELMET.forceMove(src.loc)
src.HELMET = null
return
@@ -259,7 +259,7 @@
if(!src.SUIT)
return
else
- src.SUIT.loc = src.loc
+ src.SUIT.forceMove(src.loc)
src.SUIT = null
return
@@ -268,7 +268,7 @@
if(!src.MASK)
return
else
- src.MASK.loc = src.loc
+ src.MASK.forceMove(src.loc)
src.MASK = null
return
@@ -276,13 +276,13 @@
/obj/machinery/suit_storage_unit/proc/dump_everything()
src.islocked = 0 //locks go free
if(src.SUIT)
- src.SUIT.loc = src.loc
+ src.SUIT.forceMove(src.loc)
src.SUIT = null
if(src.HELMET)
- src.HELMET.loc = src.loc
+ src.HELMET.forceMove(src.loc)
src.HELMET = null
if(src.MASK)
- src.MASK.loc = src.loc
+ src.MASK.forceMove(src.loc)
src.MASK = null
if(src.OCCUPANT)
src.eject_occupant(OCCUPANT)
@@ -405,7 +405,7 @@
if (!src.OCCUPANT)
return
// for(var/obj/O in src)
-// O.loc = src.loc
+// O.forceMove(src.loc
if (src.OCCUPANT.client)
if(user != OCCUPANT)
@@ -415,7 +415,7 @@
src.OCCUPANT.client.eye = src.OCCUPANT.client.mob
src.OCCUPANT.client.perspective = MOB_PERSPECTIVE
- src.OCCUPANT.loc = src.loc
+ src.OCCUPANT.forceMove(src.loc)
src.OCCUPANT = null
if(!src.isopen)
src.isopen = 1
@@ -458,7 +458,7 @@
usr.stop_pulling()
usr.client.perspective = EYE_PERSPECTIVE
usr.client.eye = src
- usr.loc = src
+ usr.forceMove(src)
// usr.metabslow = 1
src.OCCUPANT = usr
src.isopen = 0 //Close the thing after the guy gets inside
@@ -504,12 +504,12 @@
if (M.client)
M.client.perspective = EYE_PERSPECTIVE
M.client.eye = src
- M.loc = src
+ M.forceMove(src)
src.OCCUPANT = M
src.isopen = 0 //close ittt
//for(var/obj/O in src)
- // O.loc = src.loc
+ // O.forceMove(src.loc
src.add_fingerprint(user)
qdel(G)
src.updateUsrDialog()
@@ -524,8 +524,7 @@
user << "The unit already contains a suit."
return
user << "You load the [S.name] into the storage compartment."
- user.drop_item()
- S.loc = src
+ user.drop_from_inventory(S,src)
src.SUIT = S
src.update_icon()
src.updateUsrDialog()
@@ -538,8 +537,7 @@
user << "The unit already contains a helmet."
return
user << "You load the [H.name] into the storage compartment."
- user.drop_item()
- H.loc = src
+ user.drop_from_inventory(H,src)
src.HELMET = H
src.update_icon()
src.updateUsrDialog()
@@ -552,8 +550,7 @@
user << "The unit already contains a mask."
return
user << "You load the [M.name] into the storage compartment."
- user.drop_item()
- M.loc = src
+ user.drop_from_inventory(M,src)
src.MASK = M
src.update_icon()
src.updateUsrDialog()
@@ -703,7 +700,7 @@
if (M.client)
M.client.perspective = EYE_PERSPECTIVE
M.client.eye = src
- M.loc = src
+ M.forceMove(src)
src.occupant = M
src.add_fingerprint(user)
@@ -734,8 +731,7 @@
return
user << "You fit \the [I] into the suit cycler."
- user.drop_item()
- I.loc = src
+ user.drop_from_inventory(I,src)
helmet = I
src.update_icon()
@@ -757,8 +753,7 @@
return
user << "You fit \the [I] into the suit cycler."
- user.drop_item()
- I.loc = src
+ user.drop_from_inventory(I,src)
suit = I
src.update_icon()
@@ -835,11 +830,11 @@
/obj/machinery/suit_cycler/Topic(href, href_list)
if(href_list["eject_suit"])
if(!suit) return
- suit.loc = get_turf(src)
+ suit.forceMove(get_turf(src))
suit = null
else if(href_list["eject_helmet"])
if(!helmet) return
- helmet.loc = get_turf(src)
+ helmet.forceMove(get_turf(src))
helmet = null
else if(href_list["select_department"])
var/choice = input("Please select the target department paintjob.","Suit cycler",null) as null|anything in departments
@@ -986,7 +981,7 @@
occupant.client.eye = occupant.client.mob
occupant.client.perspective = MOB_PERSPECTIVE
- occupant.loc = get_turf(occupant)
+ occupant.forceMove(get_turf(occupant))
occupant = null
add_fingerprint(usr)
diff --git a/code/game/machinery/telecomms/logbrowser.dm b/code/game/machinery/telecomms/logbrowser.dm
index 384e592a072..9da6e5bf723 100644
--- a/code/game/machinery/telecomms/logbrowser.dm
+++ b/code/game/machinery/telecomms/logbrowser.dm
@@ -198,7 +198,7 @@
new /obj/item/weapon/material/shard( src.loc )
var/obj/item/weapon/circuitboard/comm_server/M = new /obj/item/weapon/circuitboard/comm_server( A )
for (var/obj/C in src)
- C.loc = src.loc
+ C.forceMove(src.loc)
A.circuit = M
A.state = 3
A.icon_state = "3"
@@ -209,7 +209,7 @@
var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc )
var/obj/item/weapon/circuitboard/comm_server/M = new /obj/item/weapon/circuitboard/comm_server( A )
for (var/obj/C in src)
- C.loc = src.loc
+ C.forceMove(src.loc)
A.circuit = M
A.state = 4
A.icon_state = "4"
diff --git a/code/game/machinery/telecomms/machine_interactions.dm b/code/game/machinery/telecomms/machine_interactions.dm
index 38291cdf0c9..96c839426e3 100644
--- a/code/game/machinery/telecomms/machine_interactions.dm
+++ b/code/game/machinery/telecomms/machine_interactions.dm
@@ -76,7 +76,7 @@
// Drop all the component stuff
if(contents.len > 0)
for(var/obj/x in src)
- x.loc = user.loc
+ x.forceMove(user.loc)
else
// If the machine wasn't made during runtime, probably doesn't have components:
@@ -87,17 +87,17 @@
for(var/i = 1, i <= C.req_components[I], i++)
newpath = text2path(I)
var/obj/item/s = new newpath
- s.loc = user.loc
+ s.forceMove(user.loc)
if(iscoil(P))
var/obj/item/stack/cable_coil/A = P
A.amount = 1
// Drop a circuit board too
- C.loc = user.loc
+ C.forceMove(user.loc)
// Create a machine frame and delete the current machine
var/obj/machinery/constructable_frame/machine_frame/F = new
- F.loc = src.loc
+ F.forceMove(src.loc)
qdel(src)
update_icon()
diff --git a/code/game/machinery/telecomms/telemonitor.dm b/code/game/machinery/telecomms/telemonitor.dm
index 0b80e0db77a..f44bcfcc4d5 100644
--- a/code/game/machinery/telecomms/telemonitor.dm
+++ b/code/game/machinery/telecomms/telemonitor.dm
@@ -133,7 +133,7 @@
new /obj/item/weapon/material/shard( src.loc )
var/obj/item/weapon/circuitboard/comm_monitor/M = new /obj/item/weapon/circuitboard/comm_monitor( A )
for (var/obj/C in src)
- C.loc = src.loc
+ C.forceMove(src.loc)
A.circuit = M
A.state = 3
A.icon_state = "3"
@@ -144,7 +144,7 @@
var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc )
var/obj/item/weapon/circuitboard/comm_monitor/M = new /obj/item/weapon/circuitboard/comm_monitor( A )
for (var/obj/C in src)
- C.loc = src.loc
+ C.forceMove(src.loc)
A.circuit = M
A.state = 4
A.icon_state = "4"
diff --git a/code/game/machinery/telecomms/traffic_control.dm b/code/game/machinery/telecomms/traffic_control.dm
index bd1b31e0317..30517713ba2 100644
--- a/code/game/machinery/telecomms/traffic_control.dm
+++ b/code/game/machinery/telecomms/traffic_control.dm
@@ -216,7 +216,7 @@
new /obj/item/weapon/material/shard( src.loc )
var/obj/item/weapon/circuitboard/comm_traffic/M = new /obj/item/weapon/circuitboard/comm_traffic( A )
for (var/obj/C in src)
- C.loc = src.loc
+ C.forceMove(src.loc)
A.circuit = M
A.state = 3
A.icon_state = "3"
@@ -227,7 +227,7 @@
var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc )
var/obj/item/weapon/circuitboard/comm_traffic/M = new /obj/item/weapon/circuitboard/comm_traffic( A )
for (var/obj/C in src)
- C.loc = src.loc
+ C.forceMove(src.loc)
A.circuit = M
A.state = 4
A.icon_state = "4"
diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm
index 6390bd2f0cb..7b792cac661 100644
--- a/code/game/machinery/teleporter.dm
+++ b/code/game/machinery/teleporter.dm
@@ -52,7 +52,7 @@
if(istype(L, /obj/effect/landmark/) && istype(L.loc, /turf))
usr << "You insert the coordinates into the machine."
usr << "A message flashes across the screen reminding the traveller that the nuclear authentication disk is to remain on the station at all times."
- user.drop_item()
+ user.drop_from_inventory(I,get_turf(src))
qdel(I)
if(C.data == "Clown Land")
@@ -293,7 +293,7 @@
if(tmploc==null)
return
- M.loc = tmploc
+ M.forceMove(tmploc)
sleep(2)
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
diff --git a/code/game/machinery/transformer.dm b/code/game/machinery/transformer.dm
index 8f2cf8fe15d..39b59111f02 100644
--- a/code/game/machinery/transformer.dm
+++ b/code/game/machinery/transformer.dm
@@ -42,7 +42,7 @@
var/move_dir = get_dir(loc, AM.loc)
var/mob/living/carbon/human/H = AM
if((transform_standing || H.lying) && move_dir == EAST)
- AM.loc = src.loc
+ AM.forceMove(src.loc)
make_robot(AM)
/obj/machinery/transformer/proc/make_robot(var/mob/living/carbon/human/H)
diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm
index cdf2d3bb5af..62a2511916f 100644
--- a/code/game/machinery/vending.dm
+++ b/code/game/machinery/vending.dm
@@ -228,8 +228,7 @@
attack_hand(user)
return
else if(istype(W, /obj/item/weapon/coin) && premium.len > 0)
- user.drop_item()
- W.loc = src
+ user.drop_from_inventory(W,src)
coin = W
categories |= CAT_COIN
user << "You insert \the [W] into \the [src]."
@@ -308,7 +307,7 @@
cashmoney_bundle.worth -= currently_vending.price
if(cashmoney_bundle.worth <= 0)
- usr.drop_from_inventory(cashmoney_bundle)
+ usr.drop_from_inventory(cashmoney_bundle,get_turf(src))
qdel(cashmoney_bundle)
else
cashmoney_bundle.update_icon()
@@ -320,7 +319,7 @@
visible_message("\The [usr] inserts a bill into \the [src].")
var/left = cashmoney.worth - currently_vending.price
- usr.drop_from_inventory(cashmoney)
+ usr.drop_from_inventory(cashmoney,get_turf(src))
qdel(cashmoney)
if(left)
@@ -505,7 +504,7 @@
usr << "There is no coin in this machine."
return
- coin.loc = src.loc
+ coin.forceMove(src.loc)
if(!usr.get_active_hand())
usr.put_in_hands(coin)
usr << "You remove the [coin] from the [src]"
diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm
index 2ee21bea444..e87c4fec05b 100644
--- a/code/game/machinery/washing_machine.dm
+++ b/code/game/machinery/washing_machine.dm
@@ -66,7 +66,7 @@
sleep(20)
if(state in list(1,3,6) )
- usr.loc = src.loc
+ usr.forceMove(src.loc)
/obj/machinery/washing_machine/update_icon()
@@ -79,9 +79,8 @@
if(istype(W,/obj/item/weapon/pen/crayon) || istype(W,/obj/item/weapon/stamp))
if( state in list( 1, 3, 6 ) )
if(!crayon)
- user.drop_item()
+ user.drop_from_inventory(W,src)
crayon = W
- crayon.loc = src
else
..()
else
@@ -90,7 +89,7 @@
if( (state == 1) && hacked)
var/obj/item/weapon/grab/G = W
if(ishuman(G.assailant) && iscorgi(G.affecting))
- G.affecting.loc = src
+ G.affecting.forceMove(src)
qdel(G)
state = 3
else
@@ -144,8 +143,7 @@
if(contents.len < 5)
if ( state in list(1, 3) )
- user.drop_item()
- W.loc = src
+ user.drop_from_inventory(W,src)
state = 3
else
user << "You can't put the item in right now."
@@ -162,13 +160,13 @@
if(2)
state = 1
for(var/atom/movable/O in contents)
- O.loc = src.loc
+ O.forceMove(src.loc)
if(3)
state = 4
if(4)
state = 3
for(var/atom/movable/O in contents)
- O.loc = src.loc
+ O.forceMove(src.loc)
crayon = null
state = 1
if(5)
@@ -182,7 +180,7 @@
var/mob/M = locate(/mob,contents)
M.gib()
for(var/atom/movable/O in contents)
- O.loc = src.loc
+ O.forceMove(src.loc)
crayon = null
state = 1
diff --git a/code/game/mecha/combat/marauder.dm b/code/game/mecha/combat/marauder.dm
index 539efd7b095..6b91f57e478 100644
--- a/code/game/mecha/combat/marauder.dm
+++ b/code/game/mecha/combat/marauder.dm
@@ -83,7 +83,7 @@
/obj/mecha/combat/marauder/relaymove(mob/user,direction)
if(user != src.occupant) //While not "realistic", this piece is player friendly.
- user.loc = get_turf(src)
+ user.forceMove(get_turf(src))
user << "You climb out from [src]"
return 0
if(!can_move)
diff --git a/code/game/mecha/combat/phazon.dm b/code/game/mecha/combat/phazon.dm
index 73a80068196..6fa906cdeac 100644
--- a/code/game/mecha/combat/phazon.dm
+++ b/code/game/mecha/combat/phazon.dm
@@ -35,7 +35,7 @@
if(can_move)
can_move = 0
flick("phazon-phase", src)
- src.loc = get_step(src,src.dir)
+ src.forceMove(get_step(src,src.dir))
src.use_power(phasing_energy_drain)
sleep(step_in*3)
can_move = 1
diff --git a/code/game/mecha/equipment/mecha_equipment.dm b/code/game/mecha/equipment/mecha_equipment.dm
index 64ab23b1349..ccbe83468bb 100644
--- a/code/game/mecha/equipment/mecha_equipment.dm
+++ b/code/game/mecha/equipment/mecha_equipment.dm
@@ -99,7 +99,7 @@
/obj/item/mecha_parts/mecha_equipment/proc/attach(obj/mecha/M as obj)
M.equipment += src
chassis = M
- src.loc = M
+ src.forceMove(M)
M.log_message("[src] initialized.")
if(!M.selected)
M.selected = src
diff --git a/code/game/mecha/equipment/tools/tools.dm b/code/game/mecha/equipment/tools/tools.dm
index 39ac8c4132f..e6f44601f79 100644
--- a/code/game/mecha/equipment/tools/tools.dm
+++ b/code/game/mecha/equipment/tools/tools.dm
@@ -41,7 +41,7 @@
if(do_after_cooldown(target))
if(T == chassis.loc && src == chassis.selected)
cargo_holder.cargo += O
- O.loc = chassis
+ O.forceMove(chassis)
O.anchored = 0
occupant_message("[target] succesfully loaded.")
log_message("Loaded [O]. Cargo compartment capacity: [cargo_holder.cargo_capacity - cargo_holder.cargo.len]")
diff --git a/code/game/mecha/equipment/tools/unused_tools.dm b/code/game/mecha/equipment/tools/unused_tools.dm
index 1b6d8c9e23d..60f65a45a8c 100644
--- a/code/game/mecha/equipment/tools/unused_tools.dm
+++ b/code/game/mecha/equipment/tools/unused_tools.dm
@@ -68,7 +68,7 @@
if(chassis.occupant)
for(var/obj/effect/speech_bubble/B in range(1, chassis))
if(B.parent == chassis.occupant)
- B.loc = chassis.loc
+ B.forceMove(chassis.loc)
if(move_result)
wait = 1
chassis.use_power(energy_drain)
diff --git a/code/game/mecha/equipment/tracking_beacon.dm b/code/game/mecha/equipment/tracking_beacon.dm
index 9ca1db9917e..6892b2443ac 100644
--- a/code/game/mecha/equipment/tracking_beacon.dm
+++ b/code/game/mecha/equipment/tracking_beacon.dm
@@ -72,8 +72,7 @@
user << span("warning", "[M] already has a tracker installed. Please remove the existing one.")
return
- user.drop_from_inventory(src)
- src.forceMove(M)
+ user.drop_from_inventory(src,M)
playsound(get_turf(user), 'sound/items/Deconstruct.ogg', 50, 1)
exo_beacons.Add(src)
user.visible_message("[user] installs [src] in [M].", "You install [src] in [M]")
diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index a8372feb28f..43526742259 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -754,7 +754,7 @@
var/obj/item/mecha_parts/mecha_equipment/E = W
spawn()
if(E.can_attach(src))
- user.drop_item()
+ user.drop_item() //TODO: Look into attach
E.attach(src)
user.visible_message("[user] attaches [W] to [src]", "You attach [W] to [src]")
else
@@ -830,8 +830,7 @@
if(state==3)
if(!src.cell)
user << "You install the powercell"
- user.drop_item()
- W.forceMove(src)
+ user.drop_from_inventory(W,src)
src.cell = W
src.log_message("Powercell installed")
else
@@ -1278,7 +1277,7 @@
if(istype(mob_container, /obj/item/device/mmi))
var/obj/item/device/mmi/mmi = mob_container
if(mmi.brainmob)
- occupant.loc = mmi
+ occupant.forceMove(mmi)
mmi.mecha = null
src.occupant.canmove = 0
src.verbs += /obj/mecha/verb/eject
diff --git a/code/game/mecha/mecha_construction_paths.dm b/code/game/mecha/mecha_construction_paths.dm
index 74fa4b6d357..91b974d4fdb 100644
--- a/code/game/mecha/mecha_construction_paths.dm
+++ b/code/game/mecha/mecha_construction_paths.dm
@@ -566,7 +566,7 @@
custom_action(step, atom/used_atom, mob/user)
user.visible_message("[user] has connected [used_atom] to [holder].", "You connect [used_atom] to [holder]")
holder.add_overlay("[used_atom.icon_state]+o")
- user.drop_item()
+ user.drop_from_inventory(used_atom,get_turf(holder))
qdel(used_atom)
return 1
diff --git a/code/game/mecha/mecha_wreckage.dm b/code/game/mecha/mecha_wreckage.dm
index c83e6964f0a..0eb7428c474 100644
--- a/code/game/mecha/mecha_wreckage.dm
+++ b/code/game/mecha/mecha_wreckage.dm
@@ -65,7 +65,7 @@
if(!isemptylist(crowbar_salvage))
var/obj/S = pick(crowbar_salvage)
if(S)
- S.loc = get_turf(user)
+ S.forceMove(get_turf(user))
crowbar_salvage -= S
user.visible_message("[user] pries [S] from [src].", "You pry [S] from [src].")
return
diff --git a/code/game/mecha/working/ripley.dm b/code/game/mecha/working/ripley.dm
index 68c00d13721..280dd8abeb8 100644
--- a/code/game/mecha/working/ripley.dm
+++ b/code/game/mecha/working/ripley.dm
@@ -13,7 +13,7 @@
/obj/mecha/working/ripley/Destroy()
for(var/atom/movable/A in src.cargo)
- A.loc = loc
+ A.forceMove(loc)
var/turf/T = loc
if(istype(T))
T.Entered(A)
diff --git a/code/game/mecha/working/working.dm b/code/game/mecha/working/working.dm
index ad1faf8b102..62551b42d4f 100644
--- a/code/game/mecha/working/working.dm
+++ b/code/game/mecha/working/working.dm
@@ -14,11 +14,11 @@
for(var/mob/M in src)
if(M==src.occupant)
continue
- M.loc = get_turf(src)
+ M.forceMove(get_turf(src))
M.loc.Entered(M)
step_rand(M)
for(var/atom/movable/A in src.cargo)
- A.loc = get_turf(src)
+ A.forceMove(get_turf(src))
var/turf/T = get_turf(A)
if(T)
T.Entered(A)
@@ -32,7 +32,7 @@
var/obj/O = locate(href_list["drop_from_cargo"])
if(O && O in src.cargo)
src.occupant_message("You unload [O].")
- O.loc = get_turf(src)
+ O.forceMove(get_turf(src))
src.cargo -= O
var/turf/T = get_turf(O)
if(T)
diff --git a/code/game/objects/effects/bump_teleporter.dm b/code/game/objects/effects/bump_teleporter.dm
index 17664fcf51d..be745ad730f 100644
--- a/code/game/objects/effects/bump_teleporter.dm
+++ b/code/game/objects/effects/bump_teleporter.dm
@@ -21,11 +21,11 @@ var/list/obj/effect/bump_teleporter/BUMP_TELEPORTERS = list()
/obj/effect/bump_teleporter/CollidedWith(atom/user)
if(!ismob(user))
- //user.loc = src.loc //Stop at teleporter location
+ //user.forceMove(src.loc) //Stop at teleporter location
return
if(!id_target)
- //user.loc = src.loc //Stop at teleporter location, there is nowhere to teleport to.
+ //user.forceMove(src.loc) //Stop at teleporter location, there is nowhere to teleport to.
return
for(var/obj/effect/bump_teleporter/BT in BUMP_TELEPORTERS)
diff --git a/code/game/objects/effects/chem/foam.dm b/code/game/objects/effects/chem/foam.dm
index f242dd85a90..5198b3f93eb 100644
--- a/code/game/objects/effects/chem/foam.dm
+++ b/code/game/objects/effects/chem/foam.dm
@@ -167,7 +167,7 @@
/obj/structure/foamedmetal/attackby(var/obj/item/I, var/mob/user)
if(istype(I, /obj/item/weapon/grab))
var/obj/item/weapon/grab/G = I
- G.affecting.loc = src.loc
+ G.affecting.forceMove(src.loc)
visible_message("[G.assailant] smashes [G.affecting] through the foamed metal wall.")
qdel(I)
qdel(src)
diff --git a/code/game/objects/effects/decals/contraband.dm b/code/game/objects/effects/decals/contraband.dm
index af5dce5b33a..3c6f5c60bb2 100644
--- a/code/game/objects/effects/decals/contraband.dm
+++ b/code/game/objects/effects/decals/contraband.dm
@@ -155,8 +155,8 @@
/obj/structure/sign/poster/proc/roll_and_drop(turf/newloc)
var/obj/item/weapon/contraband/poster/P = new(src, serial_number)
- P.loc = newloc
- src.loc = P
+ P.forceMove(newloc)
+ src.forceMove(P)
qdel(src)
/datum/poster
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index 97d44f5aeb1..719fcfae9f8 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -133,7 +133,7 @@
I.loc = null
- I.loc = T
+ I.forceMove(T)
/obj/item/examine(mob/user, var/distance = -1)
var/size
diff --git a/code/game/objects/items/airbubble.dm b/code/game/objects/items/airbubble.dm
index 6ef19411f97..c9b1e525fdf 100644
--- a/code/game/objects/items/airbubble.dm
+++ b/code/game/objects/items/airbubble.dm
@@ -349,8 +349,7 @@
)
var/obj/item/weapon/tank/T = W
internal_tank = T
- user.drop_from_inventory(T)
- T.forceMove(src)
+ user.drop_from_inventory(T,src)
use_internal_tank = 1
START_PROCESSING(SSfast_process, src)
return
diff --git a/code/game/objects/items/blueprints.dm b/code/game/objects/items/blueprints.dm
index 511bd214024..3a11df365d8 100644
--- a/code/game/objects/items/blueprints.dm
+++ b/code/game/objects/items/blueprints.dm
@@ -136,7 +136,7 @@ move an amendment to the drawing.
/obj/item/blueprints/proc/move_turfs_to_area(var/list/turf/turfs, var/area/A)
A.contents.Add(turfs)
//oldarea.contents.Remove(usr.loc) // not needed
- //T.loc = A //error: cannot change constant value
+ //T.forceMove(A) //error: cannot change constant value
/obj/item/blueprints/proc/edit_area()
diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm
index ef28c269670..49ea7809c13 100644
--- a/code/game/objects/items/devices/PDA/PDA.dm
+++ b/code/game/objects/items/devices/PDA/PDA.dm
@@ -870,7 +870,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
if("2") // Eject pAI device
var/turf/T = get_turf_or_move(src.loc)
if(T)
- pai.loc = T
+ pai.forceMove(T)
pai = null
else
@@ -1197,14 +1197,14 @@ var/global/list/obj/item/device/pda/PDAs = list()
else
var/obj/item/I = user.get_active_hand()
if (istype(I, /obj/item/weapon/card/id) && user.unEquip(I))
- I.loc = src
+ I.forceMove(src)
id = I
return 1
else
var/obj/item/weapon/card/I = user.get_active_hand()
if (istype(I, /obj/item/weapon/card/id) && I:registered_name && user.unEquip(I))
var/obj/old_id = id
- I.loc = src
+ I.forceMove(src)
id = I
user.put_in_hands(old_id)
return 1
@@ -1215,8 +1215,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
..()
if(istype(C, /obj/item/weapon/cartridge) && !cartridge)
cartridge = C
- user.drop_item()
- cartridge.loc = src
+ user.drop_from_inventory(cartridge,src)
user << "You insert [cartridge] into [src]."
SSnanoui.update_uis(src) // update all UIs attached to src
if(cartridge.radio)
@@ -1243,8 +1242,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
return //Return in case of failed check or when successful.
updateSelfDialog()//For the non-input related code.
else if(istype(C, /obj/item/device/paicard) && !src.pai)
- user.drop_item()
- C.loc = src
+ user.drop_from_inventory(C,src)
pai = C
pai.update_location()//This notifies the pAI that they've been slotted into a PDA
user << "You slot \the [C] into [src]."
@@ -1253,8 +1251,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
if(pen)
user << "There is already a pen in \the [src]."
else
- user.drop_item()
- C.forceMove(src)
+ user.drop_from_inventory(C,src)
pen = C
user << "You slide \the [C] into \the [src]."
return
@@ -1402,7 +1399,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
/obj/item/device/pda/Destroy()
PDAs -= src
if (src.id && prob(90)) //IDs are kept in 90% of the cases
- src.id.loc = get_turf(src.loc)
+ src.id.forceMove(get_turf(src.loc))
QDEL_NULL(pen)
if (LAZYLEN(linked_consoles))
for(var/A in linked_consoles)
diff --git a/code/game/objects/items/devices/aicard.dm b/code/game/objects/items/devices/aicard.dm
index ec147a9ba72..8e4b1452985 100644
--- a/code/game/objects/items/devices/aicard.dm
+++ b/code/game/objects/items/devices/aicard.dm
@@ -108,7 +108,7 @@
admin_attack_log(user, ai, "Carded with [src.name]", "Was carded with [src.name]", "used the [src.name] to card")
src.name = "[initial(name)] - [ai.name]"
- ai.loc = src
+ ai.forceMove(src)
ai.destroy_eyeobj(src)
ai.cancel_camera()
ai.control_disabled = 1
diff --git a/code/game/objects/items/devices/chameleonproj.dm b/code/game/objects/items/devices/chameleonproj.dm
index c5c9965da09..c45a542448c 100644
--- a/code/game/objects/items/devices/chameleonproj.dm
+++ b/code/game/objects/items/devices/chameleonproj.dm
@@ -75,7 +75,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_view(null)
@@ -95,7 +95,7 @@
icon_state = new_iconstate
overlays = new_overlays
set_dir(O.dir)
- M.loc = src
+ M.forceMove(src)
master = C
master.active_dummy = src
diff --git a/code/game/objects/items/devices/flash.dm b/code/game/objects/items/devices/flash.dm
index 0020ae62fd4..b1ecd9611a7 100644
--- a/code/game/objects/items/devices/flash.dm
+++ b/code/game/objects/items/devices/flash.dm
@@ -17,7 +17,7 @@
/obj/item/device/flash/proc/clown_check(var/mob/user)
if(user && (CLUMSY in user.mutations) && prob(50))
user << "\The [src] slips out of your hand."
- user.drop_item()
+ user.drop_from_inventory(src)
return 0
return 1
diff --git a/code/game/objects/items/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm
index f248158be33..2d944c5a9a4 100644
--- a/code/game/objects/items/devices/lightreplacer.dm
+++ b/code/game/objects/items/devices/lightreplacer.dm
@@ -98,7 +98,7 @@
if(uses < max_uses)
AddUses(1)
to_chat(user, "You insert \the [L.name] into \the [src.name]. You have [uses] light\s remaining.")
- user.drop_item()
+ user.drop_from_inventory(L,get_turf(src))
qdel(L)
return
else
diff --git a/code/game/objects/items/devices/magnetic_lock.dm b/code/game/objects/items/devices/magnetic_lock.dm
index fdb81290131..5bb5ebbf895 100644
--- a/code/game/objects/items/devices/magnetic_lock.dm
+++ b/code/game/objects/items/devices/magnetic_lock.dm
@@ -183,8 +183,7 @@
if (istype(I, /obj/item/weapon/cell))
if (!powercell)
user << span("notice","You place the [I] inside \the [src].")
- user.drop_item()
- I.loc = src
+ user.drop_from_inventory(I,src)
powercell = I
setconstructionstate(1)
return
@@ -302,7 +301,7 @@
break
user.visible_message("[user] attached [src] onto [newtarget] and flicks it on. The magnetic lock now seals [newtarget].", "You attached [src] onto [newtarget] and switched on the magnetic lock.")
- user.drop_item()
+ user.drop_item() //TODO: Look into this
forceMove(get_step(newtarget.loc, reverse_direction(direction)))
set_dir(reverse_direction(direction))
diff --git a/code/game/objects/items/devices/modkit.dm b/code/game/objects/items/devices/modkit.dm
index 92c1814299c..29f3b89f851 100644
--- a/code/game/objects/items/devices/modkit.dm
+++ b/code/game/objects/items/devices/modkit.dm
@@ -23,7 +23,7 @@
if(!parts)
user << "This kit has no parts for this modification left."
- user.drop_from_inventory(src)
+ user.drop_from_inventory(src,O)
qdel(src)
return
@@ -59,7 +59,7 @@
parts &= ~MODKIT_SUIT
if(!parts)
- user.drop_from_inventory(src)
+ user.drop_from_inventory(src,O)
qdel(src)
/obj/item/device/modkit/examine(mob/user)
diff --git a/code/game/objects/items/devices/radio/electropack.dm b/code/game/objects/items/devices/radio/electropack.dm
index bfa7f90cb08..547dd8ad795 100644
--- a/code/game/objects/items/devices/radio/electropack.dm
+++ b/code/game/objects/items/devices/radio/electropack.dm
@@ -27,13 +27,11 @@
var/obj/item/assembly/shock_kit/A = new /obj/item/assembly/shock_kit( user )
A.icon = 'icons/obj/assemblies.dmi'
- user.drop_from_inventory(W)
- W.loc = A
+ user.drop_from_inventory(W,A)
W.master = A
A.part1 = W
- user.drop_from_inventory(src)
- loc = A
+ user.drop_from_inventory(src,A)
master = A
A.part2 = src
diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm
index a282e3c0a0f..e00c09b87f6 100644
--- a/code/game/objects/items/devices/radio/headset.dm
+++ b/code/game/objects/items/devices/radio/headset.dm
@@ -244,7 +244,7 @@
if(keyslot1)
var/turf/T = get_turf(user)
if(T)
- keyslot1.loc = T
+ keyslot1.forceMove(T)
keyslot1 = null
@@ -252,7 +252,7 @@
if(keyslot2)
var/turf/T = get_turf(user)
if(T)
- keyslot2.loc = T
+ keyslot2.forceMove(T)
keyslot2 = null
recalculateChannels()
@@ -267,13 +267,11 @@
return
if(!keyslot1)
- user.drop_item()
- W.loc = src
+ user.drop_from_inventory(W,src)
keyslot1 = W
else
- user.drop_item()
- W.loc = src
+ user.drop_from_inventory(W,src)
keyslot2 = W
diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm
index 0b105496528..e409bc90dee 100644
--- a/code/game/objects/items/devices/radio/radio.dm
+++ b/code/game/objects/items/devices/radio/radio.dm
@@ -614,7 +614,7 @@ var/global/list/default_medbay_channels = list(
if(keyslot)
var/turf/T = get_turf(user)
if(T)
- keyslot.loc = T
+ keyslot.forceMove(T)
keyslot = null
recalculateChannels()
@@ -629,8 +629,7 @@ var/global/list/default_medbay_channels = list(
return
if(!keyslot)
- user.drop_item()
- W.loc = src
+ user.drop_from_inventory(W,src)
keyslot = W
recalculateChannels()
diff --git a/code/game/objects/items/devices/suit_cooling.dm b/code/game/objects/items/devices/suit_cooling.dm
index f07adaae262..c9b6eac2b0e 100644
--- a/code/game/objects/items/devices/suit_cooling.dm
+++ b/code/game/objects/items/devices/suit_cooling.dm
@@ -127,7 +127,7 @@
if(ishuman(user))
user.put_in_hands(cell)
else
- cell.loc = get_turf(loc)
+ cell.forceMove(get_turf(loc))
cell.add_fingerprint(user)
cell.update_icon()
@@ -161,8 +161,7 @@
if(cell)
user << "There is a [cell] already installed here."
else
- user.drop_item()
- W.loc = src
+ user.drop_from_inventory(W,src)
cell = W
user << "You insert the [cell]."
update_icon()
diff --git a/code/game/objects/items/devices/transfer_valve.dm b/code/game/objects/items/devices/transfer_valve.dm
index cd2fa517bc3..bf6bd5ccaca 100644
--- a/code/game/objects/items/devices/transfer_valve.dm
+++ b/code/game/objects/items/devices/transfer_valve.dm
@@ -25,13 +25,11 @@
if(!tank_one)
tank_one = item
- user.drop_item()
- item.loc = src
+ user.drop_from_inventory(item,src)
user << "You attach the tank to the transfer valve."
else if(!tank_two)
tank_two = item
- user.drop_item()
- item.loc = src
+ user.drop_from_inventory(item,src)
user << "You attach the tank to the transfer valve."
message_admins("[key_name_admin(user)] attached both tanks to a transfer valve. (JMP)")
log_game("[key_name_admin(user)] attached both tanks to a transfer valve.",ckey=key_name(user))
@@ -49,7 +47,7 @@
return
user.remove_from_mob(item)
attached_device = A
- A.loc = src
+ A.forceMove(src)
user << "You attach the [item] to the valve controls and secure it."
A.holder = src
A.toggle_secure() //this calls update_icon(), which calls update_icon() on the holder (i.e. the bomb).
@@ -107,7 +105,7 @@
toggle_valve()
else if(attached_device)
if(href_list["rem_device"])
- attached_device.loc = get_turf(src)
+ attached_device.forceMove(get_turf(src))
attached_device:holder = null
attached_device = null
update_icon()
@@ -151,7 +149,7 @@
else
return
- T.loc = get_turf(src)
+ T.forceMove(get_turf(src))
update_icon()
/obj/item/device/transfer_valve/proc/merge_gases()
diff --git a/code/game/objects/items/glassjar.dm b/code/game/objects/items/glassjar.dm
index 97852d9232c..3952e6c2d22 100644
--- a/code/game/objects/items/glassjar.dm
+++ b/code/game/objects/items/glassjar.dm
@@ -43,21 +43,21 @@
switch(contains)
if(1)
for(var/obj/O in src)
- O.loc = user.loc
+ O.forceMove(user.loc)
user << "You take money out of \the [src]."
contains = 0
update_icon()
return
if(2)
for(var/mob/M in src)
- M.loc = user.loc
+ M.forceMove(user.loc)
user.visible_message("[user] releases [M] from \the [src].", "You release [M] from \the [src].")
contains = 0
update_icon()
return
if(3)
for(var/obj/effect/spider/spiderling/S in src)
- S.loc = user.loc
+ S.forceMove(user.loc)
user.visible_message("[user] releases [S] from \the [src].", "You release [S] from \the [src].")
START_PROCESSING(SSprocessing, S) // They can grow after being let out though
contains = 0
@@ -72,8 +72,7 @@
return
var/obj/item/weapon/spacecash/S = W
user.visible_message("[user] puts [S.worth] [S.worth > 1 ? "credits" : "credit"] into \the [src].")
- user.drop_from_inventory(S)
- S.forceMove(src)
+ user.drop_from_inventory(S,src)
update_icon()
/obj/item/glass_jar/update_icon() // Also updates name and desc
diff --git a/code/game/objects/items/paintkit.dm b/code/game/objects/items/paintkit.dm
index d4fd9819663..72bcb73d62f 100644
--- a/code/game/objects/items/paintkit.dm
+++ b/code/game/objects/items/paintkit.dm
@@ -15,7 +15,7 @@
uses -= amt
playsound(get_turf(user), 'sound/items/Screwdriver.ogg', 50, 1)
if(uses<1)
- user.drop_item()
+ user.drop_from_inventory(src,get_turf(src))
qdel(src)
// Root voidsuit kit defines.
diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm
index f00f70237f1..4725c86c405 100644
--- a/code/game/objects/items/robot/robot_parts.dm
+++ b/code/game/objects/items/robot/robot_parts.dm
@@ -118,7 +118,7 @@
var/obj/item/stack/material/M = W
if (M.use(1))
var/obj/item/weapon/secbot_assembly/ed209_assembly/B = new /obj/item/weapon/secbot_assembly/ed209_assembly
- B.loc = get_turf(src)
+ B.forceMove(get_turf(src))
user << "You armed the robot frame."
if (user.get_inactive_hand()==src)
user.remove_from_mob(src)
@@ -128,37 +128,32 @@
user << "You need one sheet of metal to arm the robot frame."
if(istype(W, /obj/item/robot_parts/l_leg))
if(src.l_leg) return
- user.drop_item()
- W.loc = src
+ user.drop_from_inventory(W,src)
src.l_leg = W
src.updateicon()
if(istype(W, /obj/item/robot_parts/r_leg))
if(src.r_leg) return
- user.drop_item()
- W.loc = src
+ user.drop_from_inventory(W,src)
src.r_leg = W
src.updateicon()
if(istype(W, /obj/item/robot_parts/l_arm))
if(src.l_arm) return
- user.drop_item()
- W.loc = src
+ user.drop_from_inventory(W,src)
src.l_arm = W
src.updateicon()
if(istype(W, /obj/item/robot_parts/r_arm))
if(src.r_arm) return
- user.drop_item()
- W.loc = src
+ user.drop_from_inventory(W,src)
src.r_arm = W
src.updateicon()
if(istype(W, /obj/item/robot_parts/chest))
if(src.chest) return
if(W:wires && W:cell)
- user.drop_item()
- W.loc = src
+ user.drop_from_inventory(W,src)
src.chest = W
src.updateicon()
else if(!W:wires)
@@ -169,8 +164,7 @@
if(istype(W, /obj/item/robot_parts/head))
if(src.head) return
if(W:flash2 && W:flash1)
- user.drop_item()
- W.loc = src
+ user.drop_from_inventory(W,src)
src.head = W
src.updateicon()
else
@@ -229,7 +223,7 @@
var/mob/living/silicon/robot/O = new /mob/living/silicon/robot(get_turf(loc), TRUE)
if(!O) return
- user.drop_item()
+ user.drop_item() //TODO: Look into this.
O.mmi = W
O.invisibility = 0
@@ -244,8 +238,8 @@
O.job = "Cyborg"
O.cell = chest.cell
- O.cell.loc = O
- W.loc = O//Should fix cybros run time erroring when blown up. It got deleted before, along with the frame.
+ O.cell.forceMove(O)
+ W.forceMove(O)//Should fix cybros run time erroring when blown up. It got deleted before, along with the frame.
// Since we "magically" installed a cell, we also have to update the correct component.
if(O.cell)
@@ -279,8 +273,7 @@
user << "You have already inserted a cell!"
return
else
- user.drop_item()
- W.loc = src
+ user.drop_from_inventory(W,src)
src.cell = W
user << "You insert the cell!"
if(iscoil(W))
@@ -316,8 +309,11 @@
add_flashes(W,user)
else if(istype(W, /obj/item/weapon/stock_parts/manipulator))
user << "You install some manipulators and modify the head, creating a functional spider-bot!"
+
+
+
new /mob/living/simple_animal/spiderbot(get_turf(loc))
- user.drop_item()
+ user.drop_from_inventory(W,get_turf(loc))
qdel(W)
qdel(src)
return
@@ -328,13 +324,11 @@
user << "You have already inserted the eyes!"
return
else if(src.flash1)
- user.drop_item()
- W.loc = src
+ user.drop_from_inventory(W,src)
src.flash2 = W
user << "You insert the flash into the eye socket!"
else
- user.drop_item()
- W.loc = src
+ user.drop_from_inventory(W,src)
src.flash1 = W
user << "You insert the flash into the eye socket!"
diff --git a/code/game/objects/items/shoe_cover.dm b/code/game/objects/items/shoe_cover.dm
index 12e023534a2..1938b371c42 100644
--- a/code/game/objects/items/shoe_cover.dm
+++ b/code/game/objects/items/shoe_cover.dm
@@ -13,5 +13,5 @@
user << "You attahed the [src] to [S] making movement silent"
S.silent = 1
S.desc += " They appear to have some type of fabric soles"
- user.drop_from_inventory(src)
+ user.drop_from_inventory(src,A)
qdel(src)
diff --git a/code/game/objects/items/shooting_range.dm b/code/game/objects/items/shooting_range.dm
index 69146381fa1..c1e5802e611 100644
--- a/code/game/objects/items/shooting_range.dm
+++ b/code/game/objects/items/shooting_range.dm
@@ -23,7 +23,7 @@
// After target moves, check for nearby stakes. If associated, move to target
for(var/obj/structure/target_stake/M in view(3,src))
if(M.density == 0 && M.pinned_target == src)
- M.loc = loc
+ M.forceMove(loc)
// This may seem a little counter-intuitive but I assure you that's for a purpose.
// Stakes are the ones that carry targets, yes, but in the stake code we set
@@ -61,7 +61,7 @@
user.put_in_hands(src)
user << "You take the target out of the stake."
else
- src.loc = get_turf(user)
+ src.forceMove(get_turf(user))
user << "You take the target out of the stake."
stake.pinned_target = null
diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm
index ef168fb1da3..f47502c4026 100644
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -156,7 +156,7 @@
attackby(obj/item/I as obj, mob/user as mob)
if(istype(I, /obj/item/toy/ammo/crossbow))
if(bullets <= 4)
- user.drop_item()
+ user.drop_from_inventory(I,src)
qdel(I)
bullets++
user << "You load the foam dart into the crossbow."
diff --git a/code/game/objects/items/weapons/RCD.dm b/code/game/objects/items/weapons/RCD.dm
index 5022dbdf1d1..48894ecc745 100644
--- a/code/game/objects/items/weapons/RCD.dm
+++ b/code/game/objects/items/weapons/RCD.dm
@@ -49,7 +49,8 @@
if((stored_matter + 10) > 30)
user << "The RCD can't hold any more matter-units."
return
- user.drop_from_inventory(W)
+ //TODO: Possible better animation
+ user.drop_from_inventory(W,src)
qdel(W)
stored_matter += 10
playsound(src.loc, 'sound/machines/click.ogg', 50, 1)
diff --git a/code/game/objects/items/weapons/RSF.dm b/code/game/objects/items/weapons/RSF.dm
index b96d53c2a87..c4b5eb848d5 100644
--- a/code/game/objects/items/weapons/RSF.dm
+++ b/code/game/objects/items/weapons/RSF.dm
@@ -95,7 +95,7 @@ RSF
used_energy = 200
user << "Dispensing [product ? product : "product"]..."
- product.loc = get_turf(A)
+ product.forceMove(get_turf(A))
if(isrobot(user))
var/mob/living/silicon/robot/R = user
diff --git a/code/game/objects/items/weapons/RTF.dm b/code/game/objects/items/weapons/RTF.dm
index 31c828aa5c8..eb98297b90b 100644
--- a/code/game/objects/items/weapons/RTF.dm
+++ b/code/game/objects/items/weapons/RTF.dm
@@ -32,7 +32,7 @@ var/malftransformermade = 0
if(do_after(user, 30 SECONDS, act_target = src))
var/obj/product = new /obj/machinery/transformer
malftransformermade = 1
- product.loc = get_turf(A)
+ product.forceMove(get_turf(A))
if(isrobot(user))
var/mob/living/silicon/robot/R = user
diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm
index 19f50e7af2e..000a79727e4 100644
--- a/code/game/objects/items/weapons/cards_ids.dm
+++ b/code/game/objects/items/weapons/cards_ids.dm
@@ -83,9 +83,9 @@ var/const/NO_EMAG_ACT = -50
if(uses<1)
user.visible_message("\The [src] fizzles and sparks - it seems it's been used once too often, and is now spent.")
- user.drop_item()
var/obj/item/weapon/card/emag_broken/junk = new(user.loc)
junk.add_fingerprint(user)
+ user.drop_from_inventory(src,get_turf(junk))
qdel(src)
return 1
diff --git a/code/game/objects/items/weapons/cloaking_device.dm b/code/game/objects/items/weapons/cloaking_device.dm
index 7f5fb0b3692..84bdf419b3f 100644
--- a/code/game/objects/items/weapons/cloaking_device.dm
+++ b/code/game/objects/items/weapons/cloaking_device.dm
@@ -125,8 +125,7 @@
/obj/item/weapon/cloaking_device/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/cell))
if(!cell)
- user.drop_item()
- W.forceMove(src)
+ user.drop_from_inventory(W,src)
cell = W
user << "You install a cell in [src]."
update_icon()
diff --git a/code/game/objects/items/weapons/explosives.dm b/code/game/objects/items/weapons/explosives.dm
index 6b76a31b321..5235055ef0e 100644
--- a/code/game/objects/items/weapons/explosives.dm
+++ b/code/game/objects/items/weapons/explosives.dm
@@ -49,7 +49,7 @@
user.do_attack_animation(target)
if(do_after(user, 50) && in_range(user, target))
- user.drop_item()
+ user.drop_item() //TODO: Look into this
src.target = target
loc = null
diff --git a/code/game/objects/items/weapons/flamethrower.dm b/code/game/objects/items/weapons/flamethrower.dm
index 39578b0be9b..a0115199368 100644
--- a/code/game/objects/items/weapons/flamethrower.dm
+++ b/code/game/objects/items/weapons/flamethrower.dm
@@ -74,13 +74,13 @@
if(iswrench(W) && !status)//Taking this apart
var/turf/T = get_turf(src)
if(weldtool)
- weldtool.loc = T
+ weldtool.forceMove(T)
weldtool = null
if(igniter)
- igniter.loc = T
+ igniter.forceMove(T)
igniter = null
if(ptank)
- ptank.loc = T
+ ptank.forceMove(T)
ptank = null
new /obj/item/stack/rods(T)
qdel(src)
@@ -96,8 +96,7 @@
var/obj/item/device/assembly/igniter/I = W
if(I.secured) return
if(igniter) return
- user.drop_item()
- I.loc = src
+ user.drop_from_inventory(I,src)
igniter = I
update_icon()
return
@@ -106,9 +105,8 @@
if(ptank)
user << "There appears to already be a phoron tank loaded in [src]!"
return
- user.drop_item()
+ user.drop_from_inventory(W,src)
ptank = W
- W.loc = src
update_icon()
return
diff --git a/code/game/objects/items/weapons/gift_wrappaper.dm b/code/game/objects/items/weapons/gift_wrappaper.dm
index e87682eddb6..b9fd028d2d6 100644
--- a/code/game/objects/items/weapons/gift_wrappaper.dm
+++ b/code/game/objects/items/weapons/gift_wrappaper.dm
@@ -54,7 +54,7 @@
user << "You cut open the present."
for(var/mob/M in src) //Should only be one but whatever.
- M.loc = src.loc
+ M.forceMove(src.loc)
if (M.client)
M.client.eye = M.client.mob
M.client.perspective = MOB_PERSPECTIVE
@@ -146,7 +146,7 @@
G.w_class = G.size + 1
G.icon_state = text("gift[]", G.size)
G.gift = W
- W.loc = G
+ W.forceMove(G)
G.add_fingerprint(user)
W.add_fingerprint(user)
src.add_fingerprint(user)
@@ -178,7 +178,7 @@
H.client.perspective = EYE_PERSPECTIVE
H.client.eye = present
- H.loc = present
+ H.forceMove(present)
H.attack_log += text("\[[time_stamp()]\] Has been wrapped with [src.name] by [user.name] ([user.ckey])")
user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to wrap [H.name] ([H.ckey])")
diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm
index 98c26e9f71d..c066182d7d3 100644
--- a/code/game/objects/items/weapons/grenades/chem_grenade.dm
+++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm
@@ -61,7 +61,7 @@
user << "You add [W] to the metal casing."
playsound(src.loc, 'sound/items/Screwdriver2.ogg', 25, -3)
user.remove_from_mob(det)
- det.loc = src
+ det.forceMove(src)
detonator = det
if(istimer(detonator.a_left))
var/obj/item/device/assembly/timer/T = detonator.a_left
@@ -104,8 +104,7 @@
else
if(W.reagents.total_volume)
user << "You add \the [W] to the assembly."
- user.drop_item()
- W.forceMove(src)
+ user.drop_from_inventory(W,src)
beakers += W
stage = 1
name = "unsecured grenade with [beakers.len] containers[detonator?" and detonator":""]"
diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm
index d6d02e4ef1e..f2e361beac9 100644
--- a/code/game/objects/items/weapons/handcuffs.dm
+++ b/code/game/objects/items/weapons/handcuffs.dm
@@ -71,10 +71,9 @@
// Apply cuffs.
var/obj/item/weapon/handcuffs/cuffs = src
if(dispenser)
- cuffs = new(get_turf(user))
+ cuffs = new(target)
else
- user.drop_from_inventory(cuffs)
- cuffs.loc = target
+ user.drop_from_inventory(cuffs,target)
target.handcuffed = cuffs
target.update_inv_handcuffed()
return 1
diff --git a/code/game/objects/items/weapons/hydroponics.dm b/code/game/objects/items/weapons/hydroponics.dm
index 8160c14cd88..db5e46dd35c 100644
--- a/code/game/objects/items/weapons/hydroponics.dm
+++ b/code/game/objects/items/weapons/hydroponics.dm
@@ -93,14 +93,14 @@
item_quants[N] -= 1
for(var/obj/O in contents)
if(O.name == N)
- O.loc = get_turf(src)
+ O.forceMove(get_turf(src))
usr.put_in_hands(O)
break
else if ( href_list["unload"] )
item_quants.Cut()
for(var/obj/O in contents )
- O.loc = get_turf(src)
+ O.forceMove(get_turf(src))
src.updateUsrDialog()
return
diff --git a/code/game/objects/items/weapons/implants/implant.dm b/code/game/objects/items/weapons/implants/implant.dm
index 961cc831217..cf8af3dad57 100644
--- a/code/game/objects/items/weapons/implants/implant.dm
+++ b/code/game/objects/items/weapons/implants/implant.dm
@@ -532,7 +532,7 @@ the implant may become unstable and either pre-maturely inject the subject or si
if (imp_in)
imp_in.put_in_hands(scanned)
else
- scanned.loc = t
+ scanned.forceMove(t)
qdel(src)
/obj/item/weapon/implant/compressed/implanted(mob/source as mob)
diff --git a/code/game/objects/items/weapons/implants/implantcase.dm b/code/game/objects/items/weapons/implants/implantcase.dm
index 13a76e44558..4cf6521f0a2 100644
--- a/code/game/objects/items/weapons/implants/implantcase.dm
+++ b/code/game/objects/items/weapons/implants/implantcase.dm
@@ -45,7 +45,7 @@
if (M.imp)
if ((src.imp || M.imp.implanted))
return
- M.imp.loc = src
+ M.imp.forceMove(src)
src.imp = M.imp
M.imp = null
src.update()
@@ -54,7 +54,7 @@
if (src.imp)
if (M.imp)
return
- src.imp.loc = M
+ src.imp.forceMove(M)
M.imp = src.imp
src.imp = null
update()
diff --git a/code/game/objects/items/weapons/implants/implantchair.dm b/code/game/objects/items/weapons/implants/implantchair.dm
index 66080882be7..8799fd15d7e 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.forceMove(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.forceMove(src)
src.occupant = M
src.add_fingerprint(usr)
icon_state = "implantchair_on"
@@ -135,7 +135,7 @@
O.show_message("\The [M] has been implanted by \the [src].", 1)
if(imp.implanted(M))
- imp.loc = M
+ imp.forceMove(M)
imp.imp_in = M
imp.implanted = 1
implant_list -= imp
diff --git a/code/game/objects/items/weapons/implants/implanter.dm b/code/game/objects/items/weapons/implants/implanter.dm
index f91f442b667..2025834139e 100644
--- a/code/game/objects/items/weapons/implants/implanter.dm
+++ b/code/game/objects/items/weapons/implants/implanter.dm
@@ -11,7 +11,7 @@
/obj/item/weapon/implanter/attack_self(var/mob/user)
if(!imp)
return ..()
- imp.loc = get_turf(src)
+ imp.forceMove(get_turf(src))
user.put_in_hands(imp)
user << "You remove \the [imp] from \the [src]."
name = "implanter"
@@ -43,7 +43,7 @@
admin_attack_log(user, M, "Implanted using \the [src.name] ([src.imp.name])", "Implanted with \the [src.name] ([src.imp.name])", "used an implanter, [src.name] ([src.imp.name]), on")
if(src.imp.implanted(M))
- src.imp.loc = M
+ src.imp.forceMove(M)
src.imp.imp_in = M
src.imp.implanted = 1
if (ishuman(M))
@@ -197,6 +197,5 @@
return
ipc_tag = new_tag
- user.drop_item()
- new_tag.loc = src
+ user.drop_from_inventory(new_tag,src)
update()
diff --git a/code/game/objects/items/weapons/implants/implantfreedom.dm b/code/game/objects/items/weapons/implants/implantfreedom.dm
index 5131961060c..507624939c0 100644
--- a/code/game/objects/items/weapons/implants/implantfreedom.dm
+++ b/code/game/objects/items/weapons/implants/implantfreedom.dm
@@ -29,7 +29,7 @@
if (source.client)
source.client.screen -= W
if (W)
- W.loc = source.loc
+ W.forceMove(source.loc)
dropped(source)
if (W)
W.layer = initial(W.layer)
@@ -40,7 +40,7 @@
if (source.client)
source.client.screen -= W
if (W)
- W.loc = source.loc
+ W.forceMove(source.loc)
dropped(source)
if (W)
W.layer = initial(W.layer)
diff --git a/code/game/objects/items/weapons/implants/implantpad.dm b/code/game/objects/items/weapons/implants/implantpad.dm
index 476ed726cd9..7ab9113c984 100644
--- a/code/game/objects/items/weapons/implants/implantpad.dm
+++ b/code/game/objects/items/weapons/implants/implantpad.dm
@@ -42,8 +42,7 @@
..()
if(istype(C, /obj/item/weapon/implantcase))
if(!( src.case ))
- user.drop_item()
- C.loc = src
+ user.drop_from_inventory(C,src)
src.case = C
else
return
diff --git a/code/game/objects/items/weapons/improvised_components.dm b/code/game/objects/items/weapons/improvised_components.dm
index 41e716867d5..241d6cae522 100644
--- a/code/game/objects/items/weapons/improvised_components.dm
+++ b/code/game/objects/items/weapons/improvised_components.dm
@@ -63,8 +63,9 @@
finished = new /obj/item/weapon/melee/baton/cattleprod(get_turf(user))
user << "You fasten the wirecutters to the top of the rod with the cable, prongs outward."
if(finished)
- user.drop_from_inventory(src)
- user.drop_from_inventory(I)
+ user.drop_from_inventory(src,finished)
+ user.drop_from_inventory(I,finished)
+ //TODO: Possible better animation here.
qdel(I)
qdel(src)
user.put_in_hands(finished)
@@ -91,10 +92,11 @@
finished = new /obj/item/weapon/material/twohanded/pike(get_turf(user), tip.material.name)
user << "You attach \the [I] to the top of \the [src]."
if(finished)
- user.drop_from_inventory(src)
- user.drop_from_inventory(I)
+ user.drop_from_inventory(src,finished)
+ user.drop_from_inventory(I,finished)
qdel(I)
qdel(src)
+ //TODO: Possible better animation here.
user.put_in_hands(finished)
update_icon(user)
diff --git a/code/game/objects/items/weapons/material/ashtray.dm b/code/game/objects/items/weapons/material/ashtray.dm
index fbc429b0c60..f1b2b013eb2 100644
--- a/code/game/objects/items/weapons/material/ashtray.dm
+++ b/code/game/objects/items/weapons/material/ashtray.dm
@@ -46,7 +46,7 @@
user << "\The [src] is full."
return
user.remove_from_mob(W)
- W.loc = src
+ W.forceMove(src)
if (istype(W,/obj/item/clothing/mask/smokable/cigarette))
var/obj/item/clothing/mask/smokable/cigarette/cig = W
@@ -80,7 +80,7 @@
if (contents.len)
src.visible_message("\The [src] slams into [hit_atom], spilling its contents!")
for (var/obj/item/clothing/mask/smokable/cigarette/O in contents)
- O.loc = src.loc
+ O.forceMove(src.loc)
if (health < 1)
shatter()
return
diff --git a/code/game/objects/items/weapons/material/material_armor.dm b/code/game/objects/items/weapons/material/material_armor.dm
index 427df6b9aad..7a5e0828b7d 100644
--- a/code/game/objects/items/weapons/material/material_armor.dm
+++ b/code/game/objects/items/weapons/material/material_armor.dm
@@ -73,9 +73,10 @@ Protectiveness | Armor %
if(second_plate.material != src.material)
to_chat(user, "Both plates need to be the same type of material.")
return
- user.drop_from_inventory(src)
- user.drop_from_inventory(second_plate)
- var/obj/item/clothing/suit/armor/material/makeshift/new_armor = new(null, src.material.name)
+ //TODO: Possible better animations
+ var/obj/item/clothing/suit/armor/material/makeshift/new_armor = new(src.loc, src.material.name)
+ user.drop_from_inventory(src,new_armor)
+ user.drop_from_inventory(second_plate,new_armor)
user.put_in_hands(new_armor)
qdel(second_plate)
qdel(src)
diff --git a/code/game/objects/items/weapons/material/twohanded.dm b/code/game/objects/items/weapons/material/twohanded.dm
index cef365a7f96..6a1a36507c3 100644
--- a/code/game/objects/items/weapons/material/twohanded.dm
+++ b/code/game/objects/items/weapons/material/twohanded.dm
@@ -243,8 +243,7 @@
var/obj/structure/headspear/HS = new /obj/structure/headspear(user.loc)
var/matrix/M = matrix()
I.transform = M
- usr.drop_item()
- I.forceMove(HS)
+ usr.drop_from_inventory(I,HS)
var/mutable_appearance/MA = new(I)
MA.layer = FLOAT_LAYER
HS.add_overlay(MA)
@@ -310,7 +309,7 @@
user.visible_message("[user] kicks over \the [src]!", "You kick down \the [src]!")
new /obj/item/weapon/material/twohanded/spear(user.loc, material)
for(var/obj/item/organ/external/head/H in src)
- H.loc = user.loc
+ H.forceMove(user.loc)
qdel(src)
// Chainsaws!
diff --git a/code/game/objects/items/weapons/paiwire.dm b/code/game/objects/items/weapons/paiwire.dm
index 990453f423b..38821998abd 100644
--- a/code/game/objects/items/weapons/paiwire.dm
+++ b/code/game/objects/items/weapons/paiwire.dm
@@ -1,8 +1,7 @@
/obj/item/weapon/pai_cable/proc/plugin(obj/machinery/M as obj, mob/user as mob)
if(istype(M, /obj/machinery/door) || istype(M, /obj/machinery/camera))
user.visible_message("[user] inserts [src] into a data port on [M].", "You insert [src] into a data port on [M].", "You hear the satisfying click of a wire jack fastening into place.")
- user.drop_item()
- src.loc = M
+ user.drop_from_inventory(src,M)
src.machine = M
else
user.visible_message("[user] dumbly fumbles to find a place on [M] to plug in [src].", "There aren't any ports on [M] that match the jack belonging to [src].")
diff --git a/code/game/objects/items/weapons/policetape.dm b/code/game/objects/items/weapons/policetape.dm
index c896f995533..ebb8b390310 100644
--- a/code/game/objects/items/weapons/policetape.dm
+++ b/code/game/objects/items/weapons/policetape.dm
@@ -115,7 +115,7 @@ var/list/tape_roll_applications = list()
if (istype(A, /obj/machinery/door/airlock))
var/turf/T = get_turf(A)
var/obj/item/tape/P = new tape_type(T.x,T.y,T.z)
- P.loc = locate(T.x,T.y,T.z)
+ P.forceMove(locate(T.x,T.y,T.z))
P.icon_state = "[src.icon_base]_door"
P.layer = 3.2
user << span("notice", "You finish placing the [src].")
diff --git a/code/game/objects/items/weapons/scrolls.dm b/code/game/objects/items/weapons/scrolls.dm
index a3d27af6acf..ef0bd39436b 100644
--- a/code/game/objects/items/weapons/scrolls.dm
+++ b/code/game/objects/items/weapons/scrolls.dm
@@ -103,7 +103,7 @@
break
if(!success)
- user.loc = pick(L)
+ user.forceMove(pick(L))
smoke.start()
src.uses -= 1
diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm
index 7b12addf238..27946ef33f8 100644
--- a/code/game/objects/items/weapons/storage/bags.dm
+++ b/code/game/objects/items/weapons/storage/bags.dm
@@ -205,7 +205,7 @@
if(!S.amount)
qdel(S)
else
- S.loc = src
+ S.forceMove(src)
orient2hud(usr)
if(usr.s_active)
diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm
index 63fba26cc5b..54506720140 100644
--- a/code/game/objects/items/weapons/storage/storage.dm
+++ b/code/game/objects/items/weapons/storage/storage.dm
@@ -80,10 +80,10 @@
switch(over_object.name)
if("r_hand")
usr.u_equip(src)
- usr.put_in_r_hand(src)
+ usr.put_in_r_hand(src,FALSE)
if("l_hand")
usr.u_equip(src)
- usr.put_in_l_hand(src)
+ usr.put_in_l_hand(src,FALSE)
src.add_fingerprint(usr)
@@ -422,9 +422,9 @@
W.layer = 20
else
W.layer = initial(W.layer)
- W.loc = new_location
+ W.forceMove(new_location)
else
- W.loc = get_turf(src)
+ W.forceMove(get_turf(src))
if(usr)
src.orient2hud(usr)
diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm
index 07b2efa79f6..c920bd46b06 100644
--- a/code/game/objects/items/weapons/stunbaton.dm
+++ b/code/game/objects/items/weapons/stunbaton.dm
@@ -66,8 +66,7 @@
/obj/item/weapon/melee/baton/attackby(obj/item/weapon/W, mob/user)
if(istype(W, /obj/item/weapon/cell))
if(!bcell)
- user.drop_item()
- W.forceMove(src)
+ user.drop_from_inventory(W,src)
bcell = W
user << "You install a cell in [src]."
update_icon()
diff --git a/code/game/objects/items/weapons/tanks/tank_types.dm b/code/game/objects/items/weapons/tanks/tank_types.dm
index 0410a68f6a1..2603598295a 100644
--- a/code/game/objects/items/weapons/tanks/tank_types.dm
+++ b/code/game/objects/items/weapons/tanks/tank_types.dm
@@ -95,7 +95,7 @@
src.master = F
F.ptank = src
user.remove_from_mob(src)
- src.loc = F
+ src.forceMove(F)
return
/*
diff --git a/code/game/objects/items/weapons/tanks/watertank.dm b/code/game/objects/items/weapons/tanks/watertank.dm
index 45b29dc2d0e..86825e8ad44 100644
--- a/code/game/objects/items/weapons/tanks/watertank.dm
+++ b/code/game/objects/items/weapons/tanks/watertank.dm
@@ -18,7 +18,7 @@
noz = make_noz()
noz.tank = src
noz.reagents = reagents
- noz.loc = src
+ noz.forceMove(src)
/obj/item/watertank/ui_action_click()
toggle_mister()
@@ -44,14 +44,14 @@
noz = make_noz()
noz.tank = src
noz.reagents = reagents
- noz.loc = src
+ noz.forceMove(src)
//Detach the nozzle into the user's hands
if(!user.put_in_hands(noz))
on = FALSE
to_chat(user, "You need a free hand to hold the mister!")
return
- noz.loc = user
+ noz.forceMove(user)
else
//Remove from their hands and put back "into" the tank
remove_noz()
@@ -70,11 +70,10 @@
noz = make_noz()
noz.tank = src
noz.reagents = reagents
- noz.loc = src
+ noz.forceMove(src)
if(ismob(noz.loc))
var/mob/M = noz.loc
- M.drop_from_inventory(noz)
- noz.loc = src
+ M.drop_from_inventory(noz,src)
return
/obj/item/watertank/Destroy()
diff --git a/code/game/objects/items/weapons/tape.dm b/code/game/objects/items/weapons/tape.dm
index f1e758692c7..48fa9bf99db 100644
--- a/code/game/objects/items/weapons/tape.dm
+++ b/code/game/objects/items/weapons/tape.dm
@@ -79,6 +79,7 @@
if(!istype(W, /obj/item/weapon/paper))
return
user.drop_from_inventory(W)
+ //TODO: Possible animation? No clue
var/obj/item/weapon/ducttape/tape = new(get_turf(src))
tape.attach(W)
user.put_in_hands(tape)
@@ -113,7 +114,7 @@
return
user << "You remove \the [initial(name)] from [stuck]."
-
+ //TODO: Find out what the fuck is going on here
user.drop_from_inventory(src)
stuck.forceMove(get_turf(src))
user.put_in_hands(stuck)
@@ -136,9 +137,8 @@
user << "You cannot reach that from here." // can only place stuck papers in cardinal directions, to
return // reduce papers around corners issue.
- user.drop_from_inventory(src)
+ user.drop_from_inventory(src,source_turf)
playsound(src, 'sound/items/tape.ogg',25)
- forceMove(source_turf)
if(params)
var/list/mouse_control = params2list(params)
diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm
index 86d48a949ff..b9967eb1834 100644
--- a/code/game/objects/items/weapons/tools.dm
+++ b/code/game/objects/items/weapons/tools.dm
@@ -239,7 +239,7 @@
var/obj/item/stack/rods/R = W
R.use(1)
var/obj/item/weapon/flamethrower/F = new/obj/item/weapon/flamethrower(user.loc)
- src.loc = F
+ src.forceMove(F)
F.weldtool = src
if (user.client)
user.client.screen -= src
@@ -252,7 +252,7 @@
user.remove_from_mob(src)
if (user.client)
user.client.screen -= src
- src.loc = F
+ src.forceMove(F)
src.add_fingerprint(user)
return
diff --git a/code/game/objects/items/weapons/trays.dm b/code/game/objects/items/weapons/trays.dm
index 146da1364e9..a9458048bae 100644
--- a/code/game/objects/items/weapons/trays.dm
+++ b/code/game/objects/items/weapons/trays.dm
@@ -257,7 +257,7 @@
var/turf/dropspot = loc
for(var/obj/item/I in carrying)
- I.loc = dropspot
+ I.forceMove(dropspot)
carrying -= I
cut_overlays()
@@ -273,7 +273,7 @@
dropspot = loc
for(var/obj/item/I in carrying)
- I.loc = dropspot
+ I.forceMove(dropspot)
carrying -= I
cut_overlays()
@@ -297,7 +297,7 @@
for(var/obj/item/I in carrying)
- I.loc = dropspot
+ I.forceMove(dropspot)
carrying.Remove(I)
spawn()
for(var/i = 1, i <= rand(1,2), i++)
diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm
index 6b880a11e7b..042b84180dd 100644
--- a/code/game/objects/items/weapons/weaponry.dm
+++ b/code/game/objects/items/weapons/weaponry.dm
@@ -229,7 +229,7 @@
affecting.visible_message("[affecting] vanishes in a flare of light!")
if(holdingfacility.len)
- affecting.loc = pick(holdingfacility)
+ affecting.forceMove(pick(holdingfacility))
affecting << "You appear in a strange place!"
diff --git a/code/game/objects/structures/alien/egg.dm b/code/game/objects/structures/alien/egg.dm
index be0ec7b9f0c..177df22bf7d 100644
--- a/code/game/objects/structures/alien/egg.dm
+++ b/code/game/objects/structures/alien/egg.dm
@@ -67,7 +67,7 @@
/obj/structure/alien/egg/proc/givefacehugger(var/kill = 1)
var/obj/item/clothing/mask/facehugger/child = GetFacehugger()
status = BURST
- child.loc = get_turf(src)
+ child.forceMove(get_turf(src))
if(kill && istype(child))
child.Die()
diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm
index 0fe3361db14..0cf42a1f041 100644
--- a/code/game/objects/structures/bedsheet_bin.dm
+++ b/code/game/objects/structures/bedsheet_bin.dm
@@ -117,14 +117,12 @@ LINEN BINS
/obj/structure/bedsheetbin/attackby(obj/item/I as obj, mob/user as mob)
if(istype(I, /obj/item/weapon/bedsheet))
- user.drop_item()
- I.loc = src
+ user.drop_from_inventory(I,src)
sheets.Add(I)
amount++
user << "You put [I] in [src]."
else if(amount && !hidden && I.w_class < 4) //make sure there's sheets to hide it among, make sure nothing else is hidden in there.
- user.drop_item()
- I.loc = src
+ user.drop_from_inventory(I,src)
hidden = I
user << "You hide [I] among the sheets."
@@ -140,12 +138,12 @@ LINEN BINS
else
B = new /obj/item/weapon/bedsheet(loc)
- B.loc = user.loc
+ B.forceMove(user.loc)
user.put_in_hands(B)
user << "You take [B] out of [src]."
if(hidden)
- hidden.loc = user.loc
+ hidden.forceMove(user.loc)
user << "[hidden] falls out of [B]!"
hidden = null
@@ -164,12 +162,12 @@ LINEN BINS
else
B = new /obj/item/weapon/bedsheet(loc)
- B.loc = loc
+ B.forceMove(loc)
user << "You telekinetically remove [B] from [src]."
update_icon()
if(hidden)
- hidden.loc = loc
+ hidden.forceMove(loc)
hidden = null
diff --git a/code/game/objects/structures/coathanger.dm b/code/game/objects/structures/coathanger.dm
index 392511ad9a6..e0af6833baa 100644
--- a/code/game/objects/structures/coathanger.dm
+++ b/code/game/objects/structures/coathanger.dm
@@ -42,7 +42,7 @@
if (can_hang && !coat)
src.visible_message("[mover] lands on \the [src].")
coat = mover
- coat.loc = src
+ coat.forceMove(src)
update_icon()
return 0
else
diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm
index 5ec2c2a26d0..360df1db39f 100644
--- a/code/game/objects/structures/crates_lockers/closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets.dm
@@ -256,9 +256,10 @@
return
if(!dropsafety(W))
return
- usr.drop_item()
if(W)
- W.forceMove(loc)
+ user.drop_from_inventory(W,loc)
+ else
+ user.drop_item()
else if(istype(W, /obj/item/weapon/packageWrap))
return
else if(iswelder(W))
diff --git a/code/game/objects/structures/crates_lockers/closets/coffin.dm b/code/game/objects/structures/crates_lockers/closets/coffin.dm
index 644013716fc..c127cc5cc8b 100644
--- a/code/game/objects/structures/crates_lockers/closets/coffin.dm
+++ b/code/game/objects/structures/crates_lockers/closets/coffin.dm
@@ -15,9 +15,10 @@
return 0
if(!dropsafety(W))
return
- user.drop_item()
if(W)
- W.forceMove(loc)
+ user.drop_from_inventory(W,loc)
+ else
+ user.drop_item()
else if(istype(W, /obj/item/weapon/packageWrap))
return
else
diff --git a/code/game/objects/structures/crates_lockers/closets/gimmick.dm b/code/game/objects/structures/crates_lockers/closets/gimmick.dm
index 9932ac48196..1e3a0cacd01 100644
--- a/code/game/objects/structures/crates_lockers/closets/gimmick.dm
+++ b/code/game/objects/structures/crates_lockers/closets/gimmick.dm
@@ -22,9 +22,10 @@
return 0
if(!dropsafety(W))
return
- user.drop_item()
if(W)
- W.forceMove(loc)
+ user.drop_from_inventory(W,loc)
+ else
+ user.drop_item()
else if(istype(W, /obj/item/weapon/packageWrap))
return
else
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/bar.dm b/code/game/objects/structures/crates_lockers/closets/secure/bar.dm
index 1d5a04d83ef..bb57ca06d1b 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/bar.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/bar.dm
@@ -34,9 +34,10 @@
return
else if(W.loc != user) // This should stop mounted modules ending up outside the module.
return
- user.drop_item()
if(W)
- W.forceMove(loc)
+ user.drop_from_inventory(W,loc)
+ else
+ user.drop_item()
else if(!opened)
if(istype(W, /obj/item/weapon/melee/energy/blade))//Attempt to cut open locker if locked
if(emag_act(INFINITY, user, "The locker has been sliced open by [user] with \an [W]!", "You hear metal being sliced and sparks flying."))
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm
index 7b2d4c104cf..f0bd320de98 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm
@@ -48,8 +48,10 @@
if (opened)
if (istype(W, /obj/item/weapon/grab))
MouseDrop_T(W:affecting, user) //act like they were dragged onto the closet
- user.drop_item()
- if (W) W.forceMove(loc)
+ if(W)
+ user.drop_from_inventory(W,loc)
+ else
+ user.drop_item()
else if(W.GetID())
var/obj/item/weapon/card/id/I = W.GetID()
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm
index 96cb4d1db17..b4284df6b81 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm
@@ -104,9 +104,10 @@
return
else if(W.loc != user) // This should stop mounted modules ending up outside the module.
return
- user.drop_item()
if(W)
- W.forceMove(loc)
+ user.drop_from_inventory(W,loc)
+ else
+ user.drop_item()
else if(isscrewdriver(W) && canbemoved)
if(screwed)
user << "You start to unscrew the locker from the floor..."
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
index 8f4f4a71054..1231c3a473a 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
@@ -366,9 +366,7 @@
return
else if(W.loc != user) // This should stop mounted modules ending up outside the module.
return
- user.drop_item()
- if(W)
- W.forceMove(loc)
+ user.drop_from_inventory(W,loc)
else if(!opened)
if(istype(W, /obj/item/weapon/melee/energy/blade))//Attempt to cut open locker if locked
if(emag_act(INFINITY, user, "The locker has been sliced open by [user] with \an [W]!", "You hear metal being sliced and sparks flying."))
diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm
index 4349345c0bf..bb92fdc0ead 100644
--- a/code/game/objects/structures/crates_lockers/crates.dm
+++ b/code/game/objects/structures/crates_lockers/crates.dm
@@ -105,8 +105,7 @@
else if(istype(W, /obj/item/device/radio/electropack))
if(rigged)
user << "You attach [W] to [src]."
- user.drop_item()
- W.forceMove(src)
+ user.drop_from_inventory(W,src)
return
else if(iswirecutter(W))
if(rigged)
diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm
index 10905378d62..9d80256c56f 100644
--- a/code/game/objects/structures/door_assembly.dm
+++ b/code/game/objects/structures/door_assembly.dm
@@ -232,8 +232,7 @@
if(do_after(user, 40))
EL.inuse = 0
if(!src) return
- user.drop_item()
- EL.forceMove(src)
+ user.drop_from_inventory(EL,src)
user << "You installed the airlock electronics!"
src.state = 2
src.name = "Near finished Airlock Assembly"
@@ -256,7 +255,7 @@
user << "You removed the airlock electronics!"
src.state = 1
src.name = "Wired Airlock Assembly"
- electronics.loc = src.loc
+ electronics.forceMove(src.loc)
electronics = null
else if(istype(W, /obj/item/stack/material) && !glass)
diff --git a/code/game/objects/structures/extinguisher.dm b/code/game/objects/structures/extinguisher.dm
index 3c9ea96225d..0d4181561c0 100644
--- a/code/game/objects/structures/extinguisher.dm
+++ b/code/game/objects/structures/extinguisher.dm
@@ -52,7 +52,7 @@
/obj/structure/extinguisher_cabinet/attack_tk(mob/user)
if(has_extinguisher)
- has_extinguisher.loc = loc
+ has_extinguisher.forceMove(loc)
user << "You telekinetically remove [has_extinguisher] from [src]."
has_extinguisher = null
opened = 1
diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm
index c5ac1c50308..54fc6dc55ab 100644
--- a/code/game/objects/structures/flora.dm
+++ b/code/game/objects/structures/flora.dm
@@ -104,8 +104,7 @@
if(do_after(user, 20, act_target = src))
if(!stored_item)
if(W.w_class <= ITEMSIZE_NORMAL)
- user.drop_from_inventory(W)
- W.forceMove(src)
+ user.drop_from_inventory(W,src)
stored_item = W
to_chat(user,"You hide \the [W] in [src].")
return
diff --git a/code/game/objects/structures/janicart.dm b/code/game/objects/structures/janicart.dm
index 6579b662053..dac58f86e51 100644
--- a/code/game/objects/structures/janicart.dm
+++ b/code/game/objects/structures/janicart.dm
@@ -50,7 +50,7 @@
/obj/structure/janitorialcart/MouseDrop_T(atom/movable/O as mob|obj, mob/living/user as mob)
if (istype(O, /obj/structure/mopbucket) && !mybucket)
- O.loc = src
+ O.forceMove(src)
mybucket = O
user << "You mount the [O] on the janicart."
update_icon()
@@ -65,9 +65,8 @@
var/obj/I = usr.get_active_hand()
if(istype(I, /obj/item/weapon/mop))
if(!mymop)
- usr.drop_item()
+ usr.drop_from_inventory(I,src)
mymop = I
- I.forceMove(src)
update_icon()
updateUsrDialog()
usr << "You put [I] into [src]."
@@ -100,25 +99,23 @@
return 1
else if(istype(I, /obj/item/weapon/reagent_containers/spray) && !myspray)
- user.drop_item()
+ user.drop_from_inventory(I,src)
myspray = I
- I.forceMove(src)
update_icon()
updateUsrDialog()
user << "You put [I] into [src]."
return 1
else if(istype(I, /obj/item/device/lightreplacer) && !myreplacer)
- user.drop_item()
+ user.drop_from_inventory(I,src)
myreplacer = I
- I.forceMove(src)
update_icon()
updateUsrDialog()
user << "You put [I] into [src]."
return 1
else if(istype(I, /obj/item/weapon/storage/bag/trash) && !mybag)
- user.drop_item()
+ user.drop_from_inventory(I,src)
mybag = I
I.forceMove(src)
update_icon()
@@ -128,8 +125,7 @@
else if(istype(I, /obj/item/weapon/caution))
if(signs < 4)
- user.drop_item()
- I.forceMove(src)
+ user.drop_from_inventory(I,src)
signs++
update_icon()
updateUsrDialog()
diff --git a/code/game/objects/structures/noticeboard.dm b/code/game/objects/structures/noticeboard.dm
index 7d9978afbeb..7f7c6fdffd2 100644
--- a/code/game/objects/structures/noticeboard.dm
+++ b/code/game/objects/structures/noticeboard.dm
@@ -12,7 +12,7 @@
for(var/obj/item/I in loc)
if(notices > 4) break
if(istype(I, /obj/item/weapon/paper))
- I.loc = src
+ I.forceMove(src)
notices++
icon_state = "nboard0[notices]"
@@ -22,8 +22,7 @@
if(notices < 5)
O.add_fingerprint(user)
add_fingerprint(user)
- user.drop_from_inventory(O)
- O.loc = src
+ user.drop_from_inventory(O,src)
notices++
icon_state = "nboard0[notices]" //update sprite
user << "You pin the paper to the noticeboard."
@@ -55,7 +54,7 @@
return
var/obj/item/P = locate(href_list["remove"])
if(P && P.loc == src)
- P.loc = get_turf(src) //dump paper on the floor because you're a clumsy fuck
+ P.forceMove(get_turf(src)) //dump paper on the floor because you're a clumsy fuck
P.add_fingerprint(usr)
add_fingerprint(usr)
notices--
diff --git a/code/game/objects/structures/safe.dm b/code/game/objects/structures/safe.dm
index 5c2cab0ac35..537d51bd4fe 100644
--- a/code/game/objects/structures/safe.dm
+++ b/code/game/objects/structures/safe.dm
@@ -37,7 +37,7 @@ FLOOR SAFES
return
if(I.w_class + space <= maxspace)
space += I.w_class
- I.loc = src
+ I.forceMove(src)
/obj/structure/safe/proc/check_unlocked(mob/user as mob, canhear)
@@ -147,8 +147,7 @@ FLOOR SAFES
if(open)
if(I.w_class + space <= maxspace)
space += I.w_class
- user.drop_item()
- I.loc = src
+ user.drop_from_inventory(I,src)
user << "You put [I] in [src]."
updateUsrDialog()
return
diff --git a/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm b/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm
index 977a3939d96..ab560225907 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm
@@ -62,7 +62,7 @@
"[user.name] drenches you in a foul-smelling resin, trapping you in the [src]!",\
"You hear squelching...")
M.buckled = src
- M.loc = src.loc
+ M.forceMove(src.loc)
M.set_dir(src.dir)
M.update_canmove()
M.pixel_y = 6
diff --git a/code/game/objects/structures/stool_bed_chair_nest/bed.dm b/code/game/objects/structures/stool_bed_chair_nest/bed.dm
index c574018d9dc..05926d9207d 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm
@@ -101,7 +101,6 @@
return
var/obj/item/stack/C = W
if(C.get_amount() < 1) // How??
- user.drop_from_inventory(C)
qdel(C)
return
var/padding_type //This is awful but it needs to be like this until tiles are given a material var.
@@ -117,7 +116,7 @@
C.use(1)
if(!istype(src.loc, /turf))
user.drop_from_inventory(src)
- src.loc = get_turf(src)
+ src.forceMove(get_turf(src))
user << "You add padding to \the [src]."
add_padding(padding_type)
return
@@ -135,7 +134,7 @@
var/mob/living/affecting = G.affecting
user.visible_message("[user] attempts to buckle [affecting] into \the [src]!")
if(do_after(user, 20))
- affecting.loc = loc
+ affecting.forceMove(loc)
spawn(0)
if(buckle_mob(affecting))
affecting.visible_message(\
@@ -224,7 +223,7 @@
var/obj/item/roller_holder/RH = W
if(!RH.held)
user << "You collect the roller bed."
- src.loc = RH
+ src.forceMove(RH)
RH.held = src
return
@@ -258,7 +257,7 @@
..()
if(buckled_mob)
if(buckled_mob.buckled == src)
- buckled_mob.loc = src.loc
+ buckled_mob.forceMove(src.loc)
else
buckled_mob = null
diff --git a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm
index f442a56564d..a38b9a969c7 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm
@@ -15,12 +15,11 @@
if(!SK.status)
user << "\The [SK] is not ready to be attached!"
return
- user.drop_item()
var/obj/structure/bed/chair/e_chair/E = new (src.loc, material.name)
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
E.set_dir(dir)
E.part = SK
- SK.loc = E
+ user.drop_from_inventory(SK,E)
SK.master = E
qdel(src)
diff --git a/code/game/objects/structures/stool_bed_chair_nest/stools.dm b/code/game/objects/structures/stool_bed_chair_nest/stools.dm
index f26f8930673..49155c531b7 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/stools.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/stools.dm
@@ -122,7 +122,6 @@
return
var/obj/item/stack/C = W
if(C.get_amount() < 1) // How??
- user.drop_from_inventory(C)
qdel(C)
return
var/padding_type //This is awful but it needs to be like this until tiles are given a material var.
@@ -138,7 +137,7 @@
C.use(1)
if(!istype(src.loc, /turf))
user.drop_from_inventory(src)
- src.loc = get_turf(src)
+ src.forceMove(get_turf(src))
user << "You add padding to \the [src]."
add_padding(padding_type)
return
diff --git a/code/game/objects/structures/tank_dispenser.dm b/code/game/objects/structures/tank_dispenser.dm
index e9271426973..32ce1566b8d 100644
--- a/code/game/objects/structures/tank_dispenser.dm
+++ b/code/game/objects/structures/tank_dispenser.dm
@@ -24,14 +24,14 @@
/obj/structure/dispenser/update_icon()
cut_overlays()
switch(oxygentanks)
- if(1 to 3)
+ if(1 to 3)
add_overlay("oxygen-[oxygentanks]")
- if(4 to INFINITY)
+ if(4 to INFINITY)
add_overlay("oxygen-4")
switch(phorontanks)
if(1 to 4)
add_overlay("phoron-[phorontanks]")
- if(5 to INFINITY)
+ if(5 to INFINITY)
add_overlay("phoron-5")
/obj/structure/dispenser/attack_ai(mob/user as mob)
@@ -52,8 +52,7 @@
/obj/structure/dispenser/attackby(obj/item/I as obj, mob/user as mob)
if(istype(I, /obj/item/weapon/tank/oxygen) || istype(I, /obj/item/weapon/tank/air) || istype(I, /obj/item/weapon/tank/anesthetic))
if(oxygentanks < 10)
- user.drop_item()
- I.loc = src
+ user.drop_from_inventory(I,src)
oxytanks.Add(I)
oxygentanks++
user << "You put [I] in [src]."
@@ -65,8 +64,7 @@
return
if(istype(I, /obj/item/weapon/tank/phoron))
if(phorontanks < 10)
- user.drop_item()
- I.loc = src
+ user.drop_from_inventory(I,src)
platanks.Add(I)
phorontanks++
user << "You put [I] in [src]."
@@ -98,7 +96,7 @@
oxytanks.Remove(O)
else
O = new /obj/item/weapon/tank/oxygen(loc)
- O.loc = loc
+ O.forceMove(loc)
usr << "You take [O] out of [src]."
oxygentanks--
update_icon()
@@ -110,7 +108,7 @@
platanks.Remove(P)
else
P = new /obj/item/weapon/tank/phoron(loc)
- P.loc = loc
+ P.forceMove(loc)
usr << "You take [P] out of [src]."
phorontanks--
update_icon()
diff --git a/code/game/objects/structures/target_stake.dm b/code/game/objects/structures/target_stake.dm
index 68b10ccf7a4..0f11b7ee9d4 100644
--- a/code/game/objects/structures/target_stake.dm
+++ b/code/game/objects/structures/target_stake.dm
@@ -13,7 +13,7 @@
..()
// Move the pinned target along with the stake
if(pinned_target in view(3, src))
- pinned_target.loc = loc
+ pinned_target.forceMove(loc)
else // Sanity check: if the pinned target can't be found in immediate view
pinned_target = null
@@ -28,7 +28,7 @@
density = 0
W.density = 1
user.remove_from_mob(W)
- W.loc = loc
+ W.forceMove(loc)
W.layer = 3.1
pinned_target = W
user << "You slide the target into the stake."
@@ -41,13 +41,13 @@
pinned_target.density = 0
pinned_target.layer = OBJ_LAYER
- pinned_target.loc = user.loc
+ pinned_target.forceMove(user.loc)
if(ishuman(user))
if(!user.get_active_hand())
user.put_in_hands(pinned_target)
user << "You take the target out of the stake."
else
- pinned_target.loc = get_turf(user)
+ pinned_target.forceMove(get_turf(user))
user << "You take the target out of the stake."
pinned_target = null
diff --git a/code/game/objects/structures/transit_tubes.dm b/code/game/objects/structures/transit_tubes.dm
index c34e92f07ea..0bb47bc7a3c 100644
--- a/code/game/objects/structures/transit_tubes.dm
+++ b/code/game/objects/structures/transit_tubes.dm
@@ -49,7 +49,7 @@
/obj/structure/transit_tube_pod/Destroy()
for(var/atom/movable/AM in contents)
- AM.loc = loc
+ AM.forceMove(loc)
return ..()
@@ -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.forceMove(loc)
AM.ex_act(severity++)
qdel(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.forceMove(loc)
AM.ex_act(severity++)
qdel(src)
@@ -104,7 +104,7 @@ obj/structure/ex_act(severity)
AM << "The tube's support pylons block your way."
return ..()
else
- AM.loc = src.loc
+ AM.forceMove(src.loc)
AM << "You slip under the tube."
@@ -120,7 +120,7 @@ obj/structure/ex_act(severity)
AM << "The pod is already occupied."
return
else if(!pod.moving && pod.dir in directions())
- AM.loc = pod
+ AM.forceMove(pod)
return
@@ -380,7 +380,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.forceMove(loc)
mob.client.Move(get_step(loc, direction), direction)
//if(moving && istype(loc, /turf/space))
@@ -393,7 +393,7 @@ obj/structure/ex_act(severity)
if(!station.pod_moving)
if(direction == station.dir)
if(station.icon_state == "open")
- mob.loc = loc
+ mob.forceMove(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 b79518a17b3..4f59e26688d 100644
--- a/code/game/objects/structures/watercloset.dm
+++ b/code/game/objects/structures/watercloset.dm
@@ -33,7 +33,7 @@
if(ishuman(user))
user.put_in_hands(I)
else
- I.loc = get_turf(src)
+ I.forceMove(get_turf(src))
user << "You find \an [I] in the cistern."
w_items -= I.w_class
return
@@ -87,8 +87,7 @@
if(w_items + I.w_class > 5)
user << "The cistern is full."
return
- user.drop_item()
- I.loc = src
+ user.drop_from_inventory(I,src)
w_items += I.w_class
user << "You carefully place \the [I] into the cistern."
return
diff --git a/code/game/objects/structures/windoor_assembly.dm b/code/game/objects/structures/windoor_assembly.dm
index c5fd4a91d4f..941a4505188 100644
--- a/code/game/objects/structures/windoor_assembly.dm
+++ b/code/game/objects/structures/windoor_assembly.dm
@@ -175,8 +175,7 @@ obj/structure/windoor_assembly/Destroy()
if(do_after(user, 40))
EL.inuse = 0
if(!src) return
- user.drop_item()
- EL.forceMove(src)
+ user.drop_from_inventory(EL,src)
user << "You've installed the airlock electronics!"
src.name = "Near finished Windoor Assembly"
src.electronics = EL
@@ -197,7 +196,7 @@ obj/structure/windoor_assembly/Destroy()
src.name = "Wired Windoor Assembly"
var/obj/item/weapon/airlock_electronics/ae = electronics
electronics = null
- ae.loc = src.loc
+ ae.forceMove(src.loc)
//Crowbar to complete the assembly, Step 7 complete.
else if(iscrowbar(W))
@@ -232,7 +231,7 @@ obj/structure/windoor_assembly/Destroy()
else
windoor.req_access = src.electronics.conf_access
windoor.electronics = src.electronics
- src.electronics.loc = windoor
+ src.electronics.forceMove(windoor)
else
var/obj/machinery/door/window/windoor = new /obj/machinery/door/window(src.loc)
if(src.facing == "l")
@@ -250,7 +249,7 @@ obj/structure/windoor_assembly/Destroy()
else
windoor.req_access = src.electronics.conf_access
windoor.electronics = src.electronics
- src.electronics.loc = windoor
+ src.electronics.forceMove(windoor)
qdel(src)
diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm
index 69aa5cc6735..486c624130b 100644
--- a/code/game/turfs/simulated/walls.dm
+++ b/code/game/turfs/simulated/walls.dm
@@ -178,7 +178,7 @@
var/obj/structure/sign/poster/P = O
P.roll_and_drop(src)
else
- O.loc = src
+ O.forceMove(src)
clear_plants()
material = get_material_by_name("placeholder")
diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm
index af5a439fa82..39d7d8fd9b7 100644
--- a/code/modules/admin/admin.dm
+++ b/code/modules/admin/admin.dm
@@ -919,7 +919,7 @@ proc/admin_notice(var/message, var/rights)
set name = "Unprison"
if (M.z == 2)
if (config.allow_admin_jump)
- M.loc = pick(latejoin)
+ M.forceMove(pick(latejoin))
message_admins("[key_name_admin(usr)] has unprisoned [key_name_admin(M)]", 1)
log_admin("[key_name(usr)] has unprisoned [key_name(M)]")
else
diff --git a/code/modules/admin/secrets/admin_secrets/prison_warp.dm b/code/modules/admin/secrets/admin_secrets/prison_warp.dm
index c8b02ec7a90..89eac0161b7 100644
--- a/code/modules/admin/secrets/admin_secrets/prison_warp.dm
+++ b/code/modules/admin/secrets/admin_secrets/prison_warp.dm
@@ -29,10 +29,10 @@
//don't strip organs
H.drop_from_inventory(W)
//teleport person to cell
- H.loc = pick(prisonwarp)
+ H.forceMove(pick(prisonwarp))
H.equip_to_slot_or_del(new /obj/item/clothing/under/color/orange(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/orange(H), slot_shoes)
else
//teleport security person
- H.loc = pick(prisonsecuritywarp)
+ H.forceMove(pick(prisonsecuritywarp))
prisonwarped += H
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index ef3ce2cc1a3..358f3e3e032 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -639,7 +639,7 @@
sleep(5)
if(!M) return
- M.loc = prison_cell
+ M.forceMove(prison_cell)
if(istype(M, /mob/living/carbon/human))
var/mob/living/carbon/human/prisoner = M
prisoner.equip_to_slot_or_del(new /obj/item/clothing/under/color/orange(prisoner), slot_w_uniform)
@@ -668,7 +668,7 @@
M.Paralyse(5)
sleep(5)
- M.loc = pick(tdome1)
+ M.forceMove(pick(tdome1))
spawn(50)
M << "You have been sent to the Thunderdome."
log_admin("[key_name(usr)] has sent [key_name(M)] to the thunderdome. (Team 1)",admin_key=key_name(usr),ckey=key_name(M))
@@ -693,7 +693,7 @@
M.Paralyse(5)
sleep(5)
- M.loc = pick(tdome2)
+ M.forceMove(pick(tdome2))
spawn(50)
M << "You have been sent to the Thunderdome."
log_admin("[key_name(usr)] has sent [key_name(M)] to the thunderdome. (Team 2)",admin_key=key_name(usr),ckey=key_name(M))
@@ -715,7 +715,7 @@
M.Paralyse(5)
sleep(5)
- M.loc = pick(tdomeadmin)
+ M.forceMove(pick(tdomeadmin))
spawn(50)
M << "You have been sent to the Thunderdome."
log_admin("[key_name(usr)] has sent [key_name(M)] to the thunderdome. (Admin.)",admin_key=key_name(usr),ckey=key_name(M))
@@ -744,7 +744,7 @@
observer.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(observer), slot_shoes)
M.Paralyse(5)
sleep(5)
- M.loc = pick(tdomeobserve)
+ M.forceMove(pick(tdomeobserve))
spawn(50)
M << "You have been sent to the Thunderdome."
log_admin("[key_name(usr)] has sent [key_name(M)] to the thunderdome. (Observer.)",admin_key=key_name(usr),ckey=key_name(M))
diff --git a/code/modules/admin/verbs/adminjump.dm b/code/modules/admin/verbs/adminjump.dm
index 1a8e2f7805b..c98ee084808 100644
--- a/code/modules/admin/verbs/adminjump.dm
+++ b/code/modules/admin/verbs/adminjump.dm
@@ -13,7 +13,7 @@
if(config.allow_admin_jump)
usr.on_mob_jump()
- usr.loc = pick(get_area_turfs(A))
+ usr.forceMove(pick(get_area_turfs(A)))
log_admin("[key_name(usr)] jumped to [A]", admin_key=key_name(usr))
message_admins("[key_name_admin(usr)] jumped to [A]", 1)
@@ -30,7 +30,7 @@
log_admin("[key_name(usr)] jumped to [T.x],[T.y],[T.z] in [T.loc]",admin_key=key_name(usr))
message_admins("[key_name_admin(usr)] jumped to [T.x],[T.y],[T.z] in [T.loc]", 1)
usr.on_mob_jump()
- usr.loc = T
+ usr.forceMove(T)
feedback_add_details("admin_verb","JT") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
else
alert("Admin jumping disabled")
@@ -52,7 +52,7 @@
if(isturf(T))
feedback_add_details("admin_verb","JM") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
A.on_mob_jump()
- A.loc = T
+ A.forceMove(T)
else
A << "This mob is not located in the game world."
else
@@ -97,7 +97,7 @@
log_admin("[key_name(usr)] jumped to [key_name(M)]",admin_key=key_name(usr),ckey=key_name(M))
message_admins("[key_name_admin(usr)] jumped to [key_name_admin(M)]", 1)
usr.on_mob_jump()
- usr.loc = M.loc
+ usr.forceMove(M.loc)
feedback_add_details("admin_verb","JK") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
else
alert("Admin jumping disabled")
@@ -112,7 +112,7 @@
log_admin("[key_name(usr)] teleported [key_name(M)]",admin_key=key_name(usr),ckey=key_name(M))
message_admins("[key_name_admin(usr)] teleported [key_name_admin(M)]", 1)
M.on_mob_jump()
- M.loc = get_turf(usr)
+ M.forceMove(get_turf(usr))
feedback_add_details("admin_verb","GM") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
else
alert("Admin jumping disabled")
@@ -140,7 +140,7 @@
message_admins("[key_name_admin(usr)] teleported [key_name(M)]", 1)
if(M)
M.on_mob_jump()
- M.loc = get_turf(usr)
+ M.forceMove(get_turf(usr))
feedback_add_details("admin_verb","GK") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
else
alert("Admin jumping disabled")
@@ -154,7 +154,7 @@
if(A)
if(config.allow_admin_jump)
M.on_mob_jump()
- M.loc = pick(get_area_turfs(A))
+ M.forceMove(pick(get_area_turfs(A)))
feedback_add_details("admin_verb","SMOB") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
log_admin("[key_name(usr)] teleported [key_name(M)] to [A]",admin_key=key_name(usr),ckey=key_name(M))
diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm
index ceab0a3cd20..880475b28db 100644
--- a/code/modules/admin/verbs/debug.dm
+++ b/code/modules/admin/verbs/debug.dm
@@ -910,7 +910,7 @@
Phoron.air_contents.gas["phoron"] = 70
Rad.drainratio = 0
Rad.P = Phoron
- Phoron.loc = Rad
+ Phoron.forceMove(Rad)
if(!Rad.active)
Rad.toggle_power()
diff --git a/code/modules/admin/verbs/diagnostics.dm b/code/modules/admin/verbs/diagnostics.dm
index cdd50e26542..bf315e55c36 100644
--- a/code/modules/admin/verbs/diagnostics.dm
+++ b/code/modules/admin/verbs/diagnostics.dm
@@ -135,7 +135,7 @@
if (!group.group_processing)
dead_groups += group
var/datum/air_group/dest_group = pick(dead_groups)
- usr.loc = pick(dest_group.members)
+ usr.forceMove(pick(dest_group.members))
feedback_add_details("admin_verb","JDAG") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
return
*/
diff --git a/code/modules/admin/verbs/possess.dm b/code/modules/admin/verbs/possess.dm
index 0a4e1995be6..1d63606dba6 100644
--- a/code/modules/admin/verbs/possess.dm
+++ b/code/modules/admin/verbs/possess.dm
@@ -19,7 +19,7 @@
if(!usr.control_object) //If you're not already possessing something...
usr.name_archive = usr.real_name
- usr.loc = O
+ usr.forceMove(O)
usr.real_name = O.name
usr.name = O.name
usr.client.eye = O
@@ -29,7 +29,7 @@
/proc/release(obj/O as obj in range(world.view))
set name = "Release Obj"
set category = "Object"
- //usr.loc = get_turf(usr)
+ //usr.forceMove(get_turf(usr)
if(usr.control_object && usr.name_archive) //if you have a name archived and if you are actually relassing an object
usr.real_name = usr.name_archive
@@ -39,7 +39,7 @@
H.name = H.get_visible_name()
// usr.regenerate_icons() //So the name is updated properly
- usr.loc = O.loc // Appear where the object you were controlling is -- TLE
+ usr.forceMove(O.loc) // Appear where the object you were controlling is -- TLE
usr.client.eye = usr
usr.control_object = null
feedback_add_details("admin_verb","RO") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm
index f9ecf73f0e2..174950b7ddd 100644
--- a/code/modules/admin/verbs/randomverbs.dm
+++ b/code/modules/admin/verbs/randomverbs.dm
@@ -32,7 +32,7 @@
//teleport person to cell
M.Paralyse(5)
sleep(5) //so they black out before warping
- M.loc = pick(prisonwarp)
+ M.forceMove(pick(prisonwarp))
if(istype(M, /mob/living/carbon/human))
var/mob/living/carbon/human/prisoner = M
prisoner.equip_to_slot_or_del(new /obj/item/clothing/under/color/orange(prisoner), slot_w_uniform)
diff --git a/code/modules/assembly/bomb.dm b/code/modules/assembly/bomb.dm
index 8c314292f8a..d1b03654dbf 100644
--- a/code/modules/assembly/bomb.dm
+++ b/code/modules/assembly/bomb.dm
@@ -30,11 +30,11 @@
user << "You disassemble [src]."
- bombassembly.loc = user.loc
+ bombassembly.forceMove(user.loc)
bombassembly.master = null
bombassembly = null
- bombtank.loc = user.loc
+ bombtank.forceMove(user.loc)
bombtank.master = null
bombtank = null
@@ -84,13 +84,14 @@
var/obj/item/device/onetankbomb/R = new /obj/item/device/onetankbomb(loc)
+ //this is really bad code, TODO: Make it better
M.drop_item() //Remove the assembly from your hands
M.remove_from_mob(src) //Remove the tank from your character,in case you were holding it
M.put_in_hands(R) //Equips the bomb if possible, or puts it on the floor.
R.bombassembly = S //Tell the bomb about its assembly part
S.master = R //Tell the assembly about its new owner
- S.loc = R //Move the assembly out of the fucking way
+ S.forceMove(R) //Move the assembly out of the fucking way
R.bombtank = src //Same for tank
master = R
diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm
index 073e8ad2a8c..b3767dc7d94 100644
--- a/code/modules/assembly/holder.dm
+++ b/code/modules/assembly/holder.dm
@@ -40,8 +40,8 @@
user.remove_from_mob(D2)
D:holder = src
D2:holder = src
- D.loc = src
- D2.loc = src
+ D.forceMove(src)
+ D2.forceMove(src)
a_left = D
a_right = D2
name = "[D.name]-[D2.name] assembly"
@@ -185,10 +185,10 @@
if(!T) 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_IN(src, 0)
return
diff --git a/code/modules/assembly/shock_kit.dm b/code/modules/assembly/shock_kit.dm
index 766db9acf10..ebd5e465b2f 100644
--- a/code/modules/assembly/shock_kit.dm
+++ b/code/modules/assembly/shock_kit.dm
@@ -19,8 +19,8 @@
var/turf/T = loc
if(ismob(T))
T = T.loc
- part1.loc = T
- part2.loc = T
+ part1.forceMove(T)
+ part2.forceMove(T)
part1.master = null
part2.master = null
part1 = null
diff --git a/code/modules/awaymissions/gateway.dm b/code/modules/awaymissions/gateway.dm
index 10bd2a33aae..c2800c9c878 100644
--- a/code/modules/awaymissions/gateway.dm
+++ b/code/modules/awaymissions/gateway.dm
@@ -121,13 +121,13 @@ obj/machinery/gateway/centerstation/process()
return
if(awaygate.calibrated)
- M.loc = get_step(awaygate.loc, SOUTH)
+ M.forceMove(get_step(awaygate.loc, SOUTH))
M.set_dir(SOUTH)
return
else
var/obj/effect/landmark/dest = pick(awaydestinations)
if(dest)
- M.loc = dest.loc
+ M.forceMove(dest.loc)
M.set_dir(SOUTH)
use_power(5000)
return
@@ -225,7 +225,7 @@ obj/machinery/gateway/centerstation/process()
if(E.imp_in == M)//Checking that it's actually implanted vs just in their pocket
M << "\black The station gate has detected your exile implant and is blocking your entry."
return
- M.loc = get_step(stationgate.loc, SOUTH)
+ M.forceMove(get_step(stationgate.loc, SOUTH))
M.set_dir(SOUTH)
diff --git a/code/modules/blob/blob.dm b/code/modules/blob/blob.dm
index 7a1fa727b14..b11a3a2df34 100644
--- a/code/modules/blob/blob.dm
+++ b/code/modules/blob/blob.dm
@@ -236,8 +236,7 @@
if("brute")
if(prob(30) && !issilicon(user))
visible_message("\The [W] gets caught in the gelatinous folds of \the [src]")
- user.drop_from_inventory(W)
- W.forceMove(src.loc)
+ user.drop_from_inventory(W,get_turf(src))
return
damage = (W.force / brute_resist)
diff --git a/code/modules/cciaa/cciaa_items.dm b/code/modules/cciaa/cciaa_items.dm
index 6a94f878718..ed6497335e6 100644
--- a/code/modules/cciaa/cciaa_items.dm
+++ b/code/modules/cciaa/cciaa_items.dm
@@ -204,7 +204,7 @@
var/pname = "[firstLine]"
var/info = "[dat]"
P.set_content_unsafe(pname, info)
- P.loc = get_turf(src.loc)
+ P.forceMove(get_turf(src.loc))
return
diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm
index 20dde813400..adb9ab2ab67 100644
--- a/code/modules/clothing/clothing.dm
+++ b/code/modules/clothing/clothing.dm
@@ -178,12 +178,11 @@
T.visible_message("\The [src] [material.destruction_desc]!")
if(istype(loc, /mob/living))
var/mob/living/M = loc
- M.drop_from_inventory(src)
if(material.shard_type == SHARD_SHARD) // Wearing glass armor is a bad idea.
var/obj/item/weapon/material/shard/S = material.place_shard(T)
M.embed(S)
- playsound(src, "shatter", 70, 1)
+ playsound(src.loc, "shatter", 70, 1)
qdel(src)
/obj/item/clothing/suit/armor/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack")
@@ -390,8 +389,7 @@
to_chat(user, "You are unable to wear \the [src] as \the [H.gloves] are in the way.")
ring = null
return 0
- H.drop_from_inventory(ring) //Remove the ring (or other under-glove item in the hand slot?) so you can put on the gloves.
- ring.forceMove(src)
+ H.drop_from_inventory(ring,src)
if(!..())
if(ring) //Put the ring back on if the check fails.
diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm
index 83373fbc9b2..1262c4ce600 100644
--- a/code/modules/clothing/glasses/glasses.dm
+++ b/code/modules/clothing/glasses/glasses.dm
@@ -179,7 +179,6 @@ BLIND // can't see anything
user << "You attach a set of medical HUDs to your glasses."
var/turf/T = get_turf(src)
new /obj/item/clothing/glasses/hud/health/prescription(T)
- user.drop_from_inventory(src)
qdel(src)
if(istype(W, /obj/item/clothing/glasses/hud/security))
user.drop_item()
@@ -187,7 +186,6 @@ BLIND // can't see anything
user << "You attach a set of security HUDs to your glasses."
var/turf/T = get_turf(src)
new /obj/item/clothing/glasses/hud/security/prescription(T)
- user.drop_from_inventory(src)
qdel(src)
/obj/item/clothing/glasses/regular/scanners
diff --git a/code/modules/clothing/gloves/stungloves.dm b/code/modules/clothing/gloves/stungloves.dm
index 97cec70427f..4f96c4f53ac 100644
--- a/code/modules/clothing/gloves/stungloves.dm
+++ b/code/modules/clothing/gloves/stungloves.dm
@@ -35,8 +35,7 @@
if(!wired)
user << "The [src] need to be wired first."
else if(!cell)
- user.drop_item()
- W.loc = src
+ user.drop_from_inventory(W,src)
cell = W
w_class = 3.0
user << "You attach the [cell] to the [src]."
@@ -51,7 +50,7 @@
if(cell)
cell.update_icon()
user << "You cut the [cell] away from the [src]."
- cell.loc = get_turf(src.loc)
+ cell.forceMove(get_turf(src.loc))
cell = null
w_class = 2.0
update_icon()
diff --git a/code/modules/clothing/shoes/colour.dm b/code/modules/clothing/shoes/colour.dm
index 8b8cfc61d62..bd27ebaad3e 100644
--- a/code/modules/clothing/shoes/colour.dm
+++ b/code/modules/clothing/shoes/colour.dm
@@ -101,8 +101,7 @@
/obj/item/clothing/shoes/orange/proc/attach_cuffs(var/obj/item/weapon/handcuffs/cuffs, mob/user as mob)
if (src.chained) return
- user.drop_item()
- cuffs.loc = src
+ user.drop_from_inventory(cuffs,src)
src.chained = cuffs
src.slowdown = 15
src.icon_state = "orange1"
diff --git a/code/modules/clothing/shoes/magboots.dm b/code/modules/clothing/shoes/magboots.dm
index 94f21e508cc..06facebaa04 100644
--- a/code/modules/clothing/shoes/magboots.dm
+++ b/code/modules/clothing/shoes/magboots.dm
@@ -62,8 +62,7 @@
user << "You are unable to wear \the [src] as \the [H.shoes] are in the way."
shoes = null
return 0
- H.drop_from_inventory(shoes) //Remove the old shoes so you can put on the magboots.
- shoes.forceMove(src)
+ H.drop_from_inventory(shoes,src) //Remove the old shoes so you can put on the magboots.
if(!..())
if(shoes) //Put the old shoes back on if the check fails.
diff --git a/code/modules/clothing/spacesuits/rig/modules/combat.dm b/code/modules/clothing/spacesuits/rig/modules/combat.dm
index ffddb786256..dad7f0d1202 100644
--- a/code/modules/clothing/spacesuits/rig/modules/combat.dm
+++ b/code/modules/clothing/spacesuits/rig/modules/combat.dm
@@ -55,7 +55,6 @@
return 0
user << "You slot \the [input_device] into the suit module."
- user.drop_from_inventory(input_device)
qdel(input_device)
accepted_item.charges++
return 1
@@ -297,7 +296,6 @@
return
for(var/obj/item/weapon/melee/energy/blade/blade in M.contents)
- M.drop_from_inventory(blade)
qdel(blade)
/obj/item/rig_module/fabricator
diff --git a/code/modules/clothing/spacesuits/rig/modules/computer.dm b/code/modules/clothing/spacesuits/rig/modules/computer.dm
index 124b546449c..bf16d7ff593 100644
--- a/code/modules/clothing/spacesuits/rig/modules/computer.dm
+++ b/code/modules/clothing/spacesuits/rig/modules/computer.dm
@@ -212,8 +212,7 @@
else
return 0
else
- user.drop_from_inventory(ai)
- ai.forceMove(src)
+ user.drop_from_inventory(ai,src)
ai_card = ai
ai_mob << "You have been transferred to \the [holder]'s [src]."
user << "You load [ai_mob] into \the [holder]'s [src]."
diff --git a/code/modules/clothing/spacesuits/rig/rig.dm b/code/modules/clothing/spacesuits/rig/rig.dm
index 94d0d37a4bf..2fc8d19e797 100644
--- a/code/modules/clothing/spacesuits/rig/rig.dm
+++ b/code/modules/clothing/spacesuits/rig/rig.dm
@@ -156,9 +156,6 @@
/obj/item/weapon/rig/Destroy()
for(var/obj/item/piece in list(gloves,boots,helmet,chest))
- var/mob/living/M = piece.loc
- if(istype(M))
- M.drop_from_inventory(piece)
qdel(piece)
STOP_PROCESSING(SSprocessing, src)
qdel(wires)
@@ -324,8 +321,9 @@
if(piece.loc != src && !(wearer && piece.loc == wearer))
if(istype(piece.loc, /mob/living))
M = piece.loc
- M.drop_from_inventory(piece)
- piece.forceMove(src)
+ M.drop_from_inventory(piece,src)
+ else
+ piece.forceMove(src)
if(!istype(wearer) || loc != wearer || wearer.back != src || canremove || !cell || cell.charge <= 0)
if(!cell || cell.charge <= 0)
@@ -636,8 +634,7 @@
if(use_obj && check_slot == use_obj)
wearer << "Your [use_obj.name] [use_obj.gender == PLURAL ? "retract" : "retracts"] swiftly."
use_obj.canremove = 1
- holder.drop_from_inventory(use_obj)
- use_obj.forceMove(get_turf(src))
+ holder.drop_from_inventory(use_obj,get_turf(src)) //TODO: TEST THIS CODE!
use_obj.dropped()
use_obj.canremove = 0
use_obj.forceMove(src)
@@ -669,25 +666,21 @@
if(sealed)
if(H.head)
var/obj/item/garbage = H.head
- H.drop_from_inventory(garbage)
H.head = null
qdel(garbage)
if(H.gloves)
var/obj/item/garbage = H.gloves
- H.drop_from_inventory(garbage)
H.gloves = null
qdel(garbage)
if(H.shoes)
var/obj/item/garbage = H.shoes
- H.drop_from_inventory(garbage)
H.shoes = null
qdel(garbage)
if(H.wear_suit)
var/obj/item/garbage = H.wear_suit
- H.drop_from_inventory(garbage)
H.wear_suit = null
qdel(garbage)
diff --git a/code/modules/clothing/spacesuits/void/void.dm b/code/modules/clothing/spacesuits/void/void.dm
index 24939fcf64f..8ae9fa0cf38 100644
--- a/code/modules/clothing/spacesuits/void/void.dm
+++ b/code/modules/clothing/spacesuits/void/void.dm
@@ -112,16 +112,14 @@
H = helmet.loc
if(istype(H))
if(helmet && H.head == helmet)
- H.drop_from_inventory(helmet)
- helmet.forceMove(src)
+ H.drop_from_inventory(helmet,src)
if(boots)
boots.canremove = 1
H = boots.loc
if(istype(H))
if(boots && H.shoes == boots)
- H.drop_from_inventory(boots)
- boots.forceMove(src)
+ H.drop_from_inventory(boots,src)
if(tank)
tank.canremove = 1
@@ -156,8 +154,7 @@
if(H.head == helmet)
H << "You retract your suit helmet."
helmet.canremove = 1
- H.drop_from_inventory(helmet)
- helmet.forceMove(src)
+ H.drop_from_inventory(helmet,src)
else
if(H.head)
H << "You cannot deploy your helmet while wearing \the [H.head]."
@@ -227,8 +224,7 @@
user << "\The [src] already has a helmet installed."
else
user << "You attach \the [W] to \the [src]'s helmet mount."
- user.drop_item()
- W.forceMove(src)
+ user.drop_from_inventory(W,src)
src.helmet = W
return
else if(istype(W,/obj/item/clothing/shoes/magboots))
@@ -236,8 +232,7 @@
user << "\The [src] already has magboots installed."
else
user << "You attach \the [W] to \the [src]'s boot mounts."
- user.drop_item()
- W.forceMove(src)
+ user.drop_from_inventory(W,src)
boots = W
return
else if(istype(W,/obj/item/weapon/tank))
@@ -247,8 +242,7 @@
user << "\The [W] cannot be inserted into \the [src]'s storage compartment."
else
user << "You insert \the [W] into \the [src]'s storage compartment."
- user.drop_item()
- W.forceMove(src)
+ user.drop_from_inventory(W,src)
tank = W
return
diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm
index 1b9343e7695..4a580b914d0 100644
--- a/code/modules/clothing/suits/armor.dm
+++ b/code/modules/clothing/suits/armor.dm
@@ -229,7 +229,7 @@
spark(user, 5)
playsound(user.loc, "sparks", 50, 1)
- user.loc = picked
+ user.forceMove(picked)
return PROJECTILE_FORCE_MISS
return 0
diff --git a/code/modules/clothing/suits/utility.dm b/code/modules/clothing/suits/utility.dm
index 8f561cbbbe7..1751acad15b 100644
--- a/code/modules/clothing/suits/utility.dm
+++ b/code/modules/clothing/suits/utility.dm
@@ -94,8 +94,9 @@
if(!do_after(H,50))
if(H && H.wear_suit == src)
H.wear_suit = null
- H.drop_from_inventory(src)
- src.forceMove(get_turf(H))
+ H.drop_from_inventory(src,get_turf(H))
+ else
+ src.forceMove(get_turf(H))
return
wearer = user
diff --git a/code/modules/clothing/under/accessories/holster.dm b/code/modules/clothing/under/accessories/holster.dm
index 6b3e2ed5432..64d05f37ec7 100644
--- a/code/modules/clothing/under/accessories/holster.dm
+++ b/code/modules/clothing/under/accessories/holster.dm
@@ -22,8 +22,7 @@
if(istype(user))
user.stop_aiming(no_message=1)
holstered = I
- user.drop_from_inventory(holstered)
- holstered.loc = src
+ user.drop_from_inventory(holstered,src)
holstered.add_fingerprint(user)
w_class = max(w_class, holstered.w_class)
user.visible_message("[user] holsters \the [holstered].", "You holster \the [holstered].")
diff --git a/code/modules/clothing/under/accessories/lockets.dm b/code/modules/clothing/under/accessories/lockets.dm
index 7643bd6e712..552deac2c69 100644
--- a/code/modules/clothing/under/accessories/lockets.dm
+++ b/code/modules/clothing/under/accessories/lockets.dm
@@ -24,7 +24,7 @@
icon_state = "[base_icon]_open"
if(held)
user << "\The [held] falls out!"
- held.loc = get_turf(user)
+ held.forceMove(get_turf(user))
src.held = null
else
icon_state = "[base_icon]"
@@ -39,8 +39,7 @@
usr << "\The [src] already has something inside it."
else
usr << "You slip [O] into [src]."
- user.drop_item()
- O.loc = src
+ user.drop_from_inventory(O,src)
src.held = O
return
..()
diff --git a/code/modules/custom_ka/core.dm b/code/modules/custom_ka/core.dm
index fc3f2a988b5..6b29181f46c 100644
--- a/code/modules/custom_ka/core.dm
+++ b/code/modules/custom_ka/core.dm
@@ -424,7 +424,7 @@
var/obj/item/custom_ka_upgrade/cells/tempvar = I
installed_cell = tempvar
user.remove_from_mob(installed_cell)
- installed_cell.loc = src
+ installed_cell.forceMove(src)
update_stats()
update_icon()
playsound(src,'sound/items/Wirecutter.ogg', 50, 0)
@@ -437,7 +437,7 @@
var/obj/item/custom_ka_upgrade/barrels/tempvar = I
installed_barrel = tempvar
user.remove_from_mob(installed_barrel)
- installed_barrel.loc = src
+ installed_barrel.forceMove(src)
update_stats()
update_icon()
playsound(src,'sound/items/Wirecutter.ogg', 50, 0)
@@ -454,7 +454,7 @@
var/obj/item/custom_ka_upgrade/upgrade_chips/tempvar = I
installed_upgrade_chip = tempvar
user.remove_from_mob(installed_upgrade_chip)
- installed_upgrade_chip.loc = src
+ installed_upgrade_chip.forceMove(src)
update_stats()
update_icon()
playsound(src,'sound/items/Wirecutter.ogg', 50, 0)
diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm
index f23a8b2f1ef..d42a8af5751 100644
--- a/code/modules/customitems/item_defines.dm
+++ b/code/modules/customitems/item_defines.dm
@@ -79,8 +79,7 @@ All custom items with worn sprites must follow the contained sprite system: http
/obj/item/clothing/glasses/fluff/nebula_glasses/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/disk/fluff/nebula_chip) && !chip)
//user.u_equip(W)
- user.drop_from_inventory(W)
- W.forceMove(src)
+ user.drop_from_inventory(W,src)
chip = W
W.add_fingerprint(user)
add_fingerprint(user)
@@ -816,9 +815,7 @@ All custom items with worn sprites must follow the contained sprite system: http
/obj/item/clothing/head/beret/engineering/fluff/ikrad_beret/attack_self(var/mob/user)
if(letter)
user << "You remove \the [letter] from inside the [src]'s flap."
- user.drop_from_inventory(src)
user.put_in_hands(letter)
- user.put_in_hands(src)
letter = null
else
..()
@@ -826,8 +823,7 @@ All custom items with worn sprites must follow the contained sprite system: http
/obj/item/clothing/head/beret/engineering/fluff/ikrad_beret/attackby(var/obj/item/fluff/ikrad_letter/W, var/mob/user)
if(!src.letter && istype(W))
user << "You place \the [W] back inside the [src]'s flap."
- user.drop_from_inventory(W)
- W.forceMove(src)
+ user.drop_from_inventory(W,src)
src.letter = W
else
..()
diff --git a/code/modules/customitems/item_spawning.dm b/code/modules/customitems/item_spawning.dm
index f09a8a5e84f..d10c2fb5015 100644
--- a/code/modules/customitems/item_spawning.dm
+++ b/code/modules/customitems/item_spawning.dm
@@ -247,5 +247,5 @@
if(M.equip_to_storage(newitem))
return newitem
- newitem.loc = get_turf(M.loc)
+ newitem.forceMove(get_turf(M.loc))
return newitem
diff --git a/code/modules/detectivework/microscope/dnascanner.dm b/code/modules/detectivework/microscope/dnascanner.dm
index 70a1279e482..432e0dce50a 100644
--- a/code/modules/detectivework/microscope/dnascanner.dm
+++ b/code/modules/detectivework/microscope/dnascanner.dm
@@ -29,7 +29,7 @@
if(istype(swab) && swab.is_used())
user.unEquip(W)
src.bloodsamp = swab
- swab.loc = src
+ swab.forceMove(src)
user << "You insert \the [W] into \the [src]."
else
user << "\The [src] only accepts used swabs."
diff --git a/code/modules/detectivework/microscope/slides.dm b/code/modules/detectivework/microscope/slides.dm
index 8226e6a51e5..7921975c241 100644
--- a/code/modules/detectivework/microscope/slides.dm
+++ b/code/modules/detectivework/microscope/slides.dm
@@ -25,7 +25,7 @@
if(has_swab || has_sample)
user << "You remove \the sample from \the [src]."
if(has_swab)
- has_swab.loc = get_turf(src)
+ has_swab.forceMove(get_turf(src))
has_swab = null
if(has_sample)
has_sample.forceMove(get_turf(src))
diff --git a/code/modules/detectivework/tools/evidencebag.dm b/code/modules/detectivework/tools/evidencebag.dm
index b886c2a36b8..fc9674a26cb 100644
--- a/code/modules/detectivework/tools/evidencebag.dm
+++ b/code/modules/detectivework/tools/evidencebag.dm
@@ -65,7 +65,7 @@
add_overlay(list(MA, "evidence"))
desc = "An evidence bag containing [I]."
- I.loc = src
+ I.forceMove(src)
stored_item = I
w_class = I.w_class
return
diff --git a/code/modules/economy/ATM.dm b/code/modules/economy/ATM.dm
index 3b61ebe9e35..04b2b4b1958 100644
--- a/code/modules/economy/ATM.dm
+++ b/code/modules/economy/ATM.dm
@@ -60,7 +60,7 @@ log transactions
number_incorrect_tries = 0
for(var/obj/item/weapon/spacecash/S in src)
- S.loc = src.loc
+ S.forceMove(src.loc)
if(prob(50))
playsound(loc, 'sound/items/polaroid1.ogg', 50, 1)
else
@@ -95,8 +95,7 @@ log transactions
var/obj/item/weapon/card/id/idcard = I
if(!held_card)
- usr.drop_item()
- idcard.loc = src
+ usr.drop_from_inventory(idcard,src)
held_card = idcard
if(authenticated_account && held_card.associated_account_number != authenticated_account.account_number)
authenticated_account = null
@@ -434,8 +433,7 @@ log transactions
else
var/obj/item/I = usr.get_active_hand()
if (istype(I, /obj/item/weapon/card/id))
- usr.drop_item()
- I.loc = src
+ usr.drop_from_inventory(I,src)
held_card = I
else
release_held_id(usr)
@@ -499,7 +497,7 @@ log transactions
if(human_user.stat || human_user.lying || human_user.restrained() || !Adjacent(human_user)) return
- held_card.loc = src.loc
+ held_card.forceMove(src.loc)
authenticated_account = null
if(!human_user.get_active_hand())
diff --git a/code/modules/economy/Accounts_DB.dm b/code/modules/economy/Accounts_DB.dm
index f3c5fddf54c..48ff6f8c4a4 100644
--- a/code/modules/economy/Accounts_DB.dm
+++ b/code/modules/economy/Accounts_DB.dm
@@ -49,8 +49,7 @@
return ..()
if(!held_card)
- user.drop_item()
- O.loc = src
+ user.drop_from_inventory(O,src)
held_card = O
SSnanoui.update_uis(src)
@@ -161,7 +160,7 @@
creating_new_account = 0
if("insert_card")
if(held_card)
- held_card.loc = src.loc
+ held_card.forceMove(src.loc)
if(ishuman(usr) && !usr.get_active_hand())
usr.put_in_hands(held_card)
@@ -171,8 +170,7 @@
var/obj/item/I = usr.get_active_hand()
if (istype(I, /obj/item/weapon/card/id))
var/obj/item/weapon/card/id/C = I
- usr.drop_item()
- C.loc = src
+ usr.drop_from_inventory(C,src)
held_card = C
if("view_account_detail")
diff --git a/code/modules/economy/EFTPOS.dm b/code/modules/economy/EFTPOS.dm
index 4206bd438d6..dc9aa62c7e3 100644
--- a/code/modules/economy/EFTPOS.dm
+++ b/code/modules/economy/EFTPOS.dm
@@ -79,7 +79,7 @@
R.add_overlay(stampoverlay)
R.stamps += "
This paper has been stamped by the EFTPOS device."
var/obj/item/smallDelivery/D = new(R.loc)
- R.loc = D
+ R.forceMove(D)
D.wrapped = R
D.name = "small parcel - 'EFTPOS access code'"
diff --git a/code/modules/economy/cash.dm b/code/modules/economy/cash.dm
index 050e84f964b..d0ec6c64324 100644
--- a/code/modules/economy/cash.dm
+++ b/code/modules/economy/cash.dm
@@ -23,8 +23,7 @@
var/obj/item/weapon/spacecash/bundle/bundle
if(!istype(W, /obj/item/weapon/spacecash/bundle))
var/obj/item/weapon/spacecash/cash = W
- user.drop_from_inventory(cash)
- bundle = new (src.loc)
+ bundle = new(src.loc)
bundle.worth += cash.worth
qdel(cash)
else //is bundle
@@ -33,6 +32,7 @@
bundle.update_icon()
if(istype(user, /mob/living/carbon/human))
var/mob/living/carbon/human/h_user = user
+ //TODO: Find out a better way to do this
h_user.drop_from_inventory(src)
h_user.drop_from_inventory(bundle)
h_user.put_in_hands(bundle)
@@ -82,6 +82,7 @@
src.update_icon()
if(!worth)
usr.drop_from_inventory(src)
+
if(amount in list(1000,500,200,100,50,20,1))
var/cashtype = text2path("/obj/item/weapon/spacecash/c[amount]")
var/obj/cash = new cashtype (usr.loc)
@@ -91,6 +92,7 @@
bundle.worth = amount
bundle.update_icon()
usr.put_in_hands(bundle)
+
if(!worth)
qdel(src)
diff --git a/code/modules/food/recipes_oven.dm b/code/modules/food/recipes_oven.dm
index cd14c6cbd91..7aa205c8ba1 100644
--- a/code/modules/food/recipes_oven.dm
+++ b/code/modules/food/recipes_oven.dm
@@ -287,7 +287,7 @@
for (var/obj/item/weapon/reagent_containers/food/snacks/fortunecookie/being_cooked in .)
- paper.loc = being_cooked
+ paper.forceMove(being_cooked)
being_cooked.trash = paper //so the paper is left behind as trash without special-snowflake(TM Nodrak) code ~carn
return
diff --git a/code/modules/games/boardgame.dm b/code/modules/games/boardgame.dm
index 1df0ee5ff9f..3f1c7e1a4f5 100644
--- a/code/modules/games/boardgame.dm
+++ b/code/modules/games/boardgame.dm
@@ -46,8 +46,7 @@ obj/item/weapon/board/attackby(obj/item/I as obj, mob/user as mob)
if(!user.Adjacent(src))
return 0
- user.drop_from_inventory(I)
- I.forceMove(src)
+ user.drop_from_inventory(I,src)
num++
diff --git a/code/modules/games/cards.dm b/code/modules/games/cards.dm
index 4457fe258dc..d57c8bd933b 100644
--- a/code/modules/games/cards.dm
+++ b/code/modules/games/cards.dm
@@ -145,7 +145,6 @@
for(var/datum/playingcard/P in cards)
H.cards += P
H.concealed = src.concealed
- user.drop_from_inventory(src,user.loc)
qdel(src)
H.update_icon()
return
@@ -190,11 +189,10 @@
H.cards += cards
cards.Cut();
- user.drop_item()
- qdel(src)
-
+ user.drop_from_inventory(src,get_turf(src))
H.update_icon()
user.put_in_active_hand(H)
+ qdel(src)
/obj/item/weapon/hand
name = "hand of cards"
@@ -229,7 +227,7 @@
H.update_icon()
src.update_icon()
usr.visible_message("\The [usr] plays \the [discarding].")
- H.loc = get_step(usr,usr.dir)
+ H.forceMove(get_step(usr,usr.dir))
if(!cards.len)
qdel(src)
diff --git a/code/modules/holodeck/HolodeckObjects.dm b/code/modules/holodeck/HolodeckObjects.dm
index 4b643b015f2..f230dc345ae 100644
--- a/code/modules/holodeck/HolodeckObjects.dm
+++ b/code/modules/holodeck/HolodeckObjects.dm
@@ -322,13 +322,13 @@
if(G.state<2)
user << "You need a better grip to do that!"
return
- G.affecting.loc = src.loc
+ G.affecting.forceMove(src.loc)
G.affecting.Weaken(5)
visible_message("[G.assailant] dunks [G.affecting] into the [src]!", range = 3)
qdel(W)
return
else if (istype(W, /obj/item) && get_dist(src,user)<2)
- user.drop_item(src.loc)
+ user.drop_from_inventory(W,get_turf(src))
visible_message("[user] dunks [W] into the [src]!", range = 3)
return
@@ -338,7 +338,7 @@
if(istype(I, /obj/item/projectile))
return
if(prob(50))
- I.loc = src.loc
+ I.forceMove(src.loc)
visible_message("Swish! \the [I] lands in \the [src].", range = 3)
else
visible_message("\The [I] bounces off of \the [src]'s rim!", range = 3)
diff --git a/code/modules/hydroponics/beekeeping/beehive.dm b/code/modules/hydroponics/beekeeping/beehive.dm
index d4b21f241ab..222ebcd8854 100644
--- a/code/modules/hydroponics/beekeeping/beehive.dm
+++ b/code/modules/hydroponics/beekeeping/beehive.dm
@@ -64,7 +64,6 @@
++frames
user.visible_message("[user] loads \the [I] into \the [src].", "You load \the [I] into \the [src].")
update_icon()
- user.drop_from_inventory(I)
qdel(I)
return
else if(istype(I, /obj/item/bee_pack))
@@ -270,7 +269,6 @@
if(do_after(user, 30))
user.visible_message("[user] constructs a beehive.", "You construct a beehive.")
new /obj/machinery/beehive(get_turf(user))
- user.drop_from_inventory(src)
qdel(src)
return
diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm
index 20c0974d364..639a4a31720 100644
--- a/code/modules/hydroponics/grown.dm
+++ b/code/modules/hydroponics/grown.dm
@@ -250,7 +250,6 @@
if(prob(35))
if(user)
user << "\The [src] has fallen to bits."
- user.drop_from_inventory(src)
qdel(src)
/obj/item/weapon/reagent_containers/food/snacks/grown/attack_self(mob/user as mob)
diff --git a/code/modules/hydroponics/seed.dm b/code/modules/hydroponics/seed.dm
index 1682913b9dc..60e89146ee7 100644
--- a/code/modules/hydroponics/seed.dm
+++ b/code/modules/hydroponics/seed.dm
@@ -327,7 +327,7 @@
spark(target, 3, alldirs)
var/turf/picked = get_turf(pick(turfs)) // Just in case...
new/obj/effect/decal/cleanable/molten_item(get_turf(target)) // Leave a pile of goo behind for dramatic effect...
- target.loc = picked // And teleport them to the chosen location.
+ target.forceMove(picked) // And teleport them to the chosen location.
impact = 1
diff --git a/code/modules/hydroponics/seed_machines.dm b/code/modules/hydroponics/seed_machines.dm
index be8dab943ea..2f1faf30698 100644
--- a/code/modules/hydroponics/seed_machines.dm
+++ b/code/modules/hydroponics/seed_machines.dm
@@ -75,7 +75,7 @@
if(eject_disk)
eject_disk = 0
if(loaded_disk)
- loaded_disk.loc = get_turf(src)
+ loaded_disk.forceMove(get_turf(src))
visible_message("\icon[src] [src] beeps and spits out [loaded_disk].")
loaded_disk = null
@@ -88,8 +88,7 @@
if(S.seed && S.seed.get_trait(TRAIT_IMMUTABLE) > 0)
user << "That seed is not compatible with our genetics technology."
else
- user.drop_from_inventory(W)
- W.loc = src
+ user.drop_from_inventory(W,src)
seed = W
user << "You load [W] into [src]."
return
@@ -120,8 +119,7 @@
user << "That disk does not have any gene data loaded."
return
- user.drop_from_inventory(W)
- W.loc = src
+ user.drop_from_inventory(W,src)
loaded_disk = W
user << "You load [W] into [src]."
@@ -184,7 +182,7 @@
if(href_list["eject_packet"])
if(!seed) return
- seed.loc = get_turf(src)
+ seed.forceMove(get_turf(src))
if(seed.seed.name == "new line" || isnull(SSplants.seeds[seed.seed.name]))
seed.seed.uid = SSplants.seeds.len + 1
@@ -198,7 +196,7 @@
if(href_list["eject_disk"])
if(!loaded_disk) return
- loaded_disk.loc = get_turf(src)
+ loaded_disk.forceMove(get_turf(src))
visible_message("\icon[src] [src] beeps and spits out [loaded_disk].")
loaded_disk = null
diff --git a/code/modules/hydroponics/seed_storage.dm b/code/modules/hydroponics/seed_storage.dm
index 167194619c5..fd842dee65b 100644
--- a/code/modules/hydroponics/seed_storage.dm
+++ b/code/modules/hydroponics/seed_storage.dm
@@ -275,7 +275,7 @@
if (N.amount <= 0 || N.seeds.len <= 0)
piles -= N
qdel(N)
- O.loc = src.loc
+ O.forceMove(src.loc)
else
piles -= N
qdel(N)
@@ -316,7 +316,7 @@
var/obj/item/weapon/storage/S = O.loc
S.remove_from_storage(O, src)
- O.loc = src
+ O.forceMove(src)
var/newID = 0
for (var/datum/seed_pile/N in piles)
diff --git a/code/modules/hydroponics/spreading/spreading_response.dm b/code/modules/hydroponics/spreading/spreading_response.dm
index 7da0ca811f8..559f251b952 100644
--- a/code/modules/hydroponics/spreading/spreading_response.dm
+++ b/code/modules/hydroponics/spreading/spreading_response.dm
@@ -76,7 +76,7 @@
can_grab = 0
if(can_grab)
src.visible_message("Tendrils lash out from \the [src] and drag \the [victim] in!")
- victim.loc = src.loc
+ victim.forceMove(src.loc)
//entangling people
if(victim.loc == src.loc)
diff --git a/code/modules/hydroponics/trays/tray_apiary.dm b/code/modules/hydroponics/trays/tray_apiary.dm
index 8069f88eb51..3302d821d36 100644
--- a/code/modules/hydroponics/trays/tray_apiary.dm
+++ b/code/modules/hydroponics/trays/tray_apiary.dm
@@ -50,14 +50,15 @@
else
health = 10
nutrilevel += 10
- user.drop_item()
+ user.drop_from_inventory(O,get_turf(src))
qdel(O)
user << "You carefully insert the queen into [src], she gets busy making a hive."
bees_in_hive = 0
else if(istype(O, /obj/item/beezeez))
beezeez += 100
nutrilevel += 10
- user.drop_item()
+ user.drop_from_inventory(O,get_turf(src))
+ qdel(O)
if(health > 0)
user << "You insert [O] into [src]. A relaxed humming appears to pick up."
else
diff --git a/code/modules/integrated_electronics/core/assemblies.dm b/code/modules/integrated_electronics/core/assemblies.dm
index 48dd447f36d..d853bb1897e 100644
--- a/code/modules/integrated_electronics/core/assemblies.dm
+++ b/code/modules/integrated_electronics/core/assemblies.dm
@@ -278,8 +278,7 @@
return FALSE
var/obj/item/weapon/cell/device/cell = I
- user.drop_item(cell)
- cell.forceMove(src)
+ user.drop_from_inventory(cell,src)
battery = cell
playsound(get_turf(src), 'sound/items/Deconstruct.ogg', 50, 1)
to_chat(user, "You slot \the [cell] inside \the [src]'s power supply.")
diff --git a/code/modules/integrated_electronics/core/integrated_circuit.dm b/code/modules/integrated_electronics/core/integrated_circuit.dm
index 29257e45a4c..264d1a3311c 100644
--- a/code/modules/integrated_electronics/core/integrated_circuit.dm
+++ b/code/modules/integrated_electronics/core/integrated_circuit.dm
@@ -262,7 +262,7 @@ a creative player the means to solve many problems. Circuits are held inside an
if(!circuit)
return
circuit.loc = null
- circuit.loc = assy
+ circuit.forceMove(assy)
. = 1
update_to_assembly = 1
diff --git a/code/modules/integrated_electronics/subtypes/insert_slot.dm b/code/modules/integrated_electronics/subtypes/insert_slot.dm
index 931303f0a44..a9ed2ae7791 100644
--- a/code/modules/integrated_electronics/subtypes/insert_slot.dm
+++ b/code/modules/integrated_electronics/subtypes/insert_slot.dm
@@ -41,8 +41,7 @@
to_chat(user, "\The [src] is too full to add [O].")
return FALSE
items_contained += O
- user.drop_item(O)
- O.forceMove(src)
+ user.drop_from_inventory(O,src)
to_chat(user, "You add [O] to \the [src].")
set_pin_data(IC_OUTPUT, 1, TRUE)
return TRUE
diff --git a/code/modules/integrated_electronics/subtypes/manipulation.dm b/code/modules/integrated_electronics/subtypes/manipulation.dm
index 43e0b72d54c..4987fbc64cb 100644
--- a/code/modules/integrated_electronics/subtypes/manipulation.dm
+++ b/code/modules/integrated_electronics/subtypes/manipulation.dm
@@ -34,10 +34,9 @@
if(installed_gun)
user << "There's already a weapon installed."
return
- user.drop_from_inventory(gun)
+ user.drop_from_inventory(gun,src)
installed_gun = gun
size += gun.w_class
- gun.forceMove(src)
user << "You slide \the [gun] into the firing mechanism."
playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1)
else
diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm
index ade79edff93..71663b4dcd0 100644
--- a/code/modules/library/lib_items.dm
+++ b/code/modules/library/lib_items.dm
@@ -23,13 +23,12 @@
. = ..()
for(var/obj/item/I in loc)
if(istype(I, /obj/item/weapon/book))
- I.loc = src
+ I.forceMove(src)
update_icon()
/obj/structure/bookcase/attackby(obj/O as obj, mob/user as mob)
if(istype(O, /obj/item/weapon/book))
- user.drop_item()
- O.loc = src
+ user.drop_from_inventory(O,src)
update_icon()
else if(istype(O, /obj/item/weapon/pen))
var/newname = sanitizeSafe(input("What would you like to title this bookshelf?"), MAX_NAME_LEN)
@@ -48,7 +47,7 @@
user << "You dismantle \the [src]."
new /obj/item/stack/material/wood(get_turf(src), 3)
for(var/obj/item/weapon/book/b in contents)
- b.loc = (get_turf(src))
+ b.forceMove((get_turf(src)))
qdel(src)
else
@@ -64,7 +63,7 @@
if(!user.get_active_hand())
user.put_in_hands(choice)
else
- choice.loc = get_turf(src)
+ choice.forceMove(get_turf(src))
update_icon()
/obj/structure/bookcase/ex_act(severity)
@@ -76,14 +75,14 @@
return
if(2.0)
for(var/obj/item/weapon/book/b in contents)
- if (prob(50)) b.loc = (get_turf(src))
+ if (prob(50)) b.forceMove(get_turf(src))
else qdel(b)
qdel(src)
return
if(3.0)
if (prob(50))
for(var/obj/item/weapon/book/b in contents)
- b.loc = (get_turf(src))
+ b.forceMove(get_turf(src))
qdel(src)
return
else
@@ -207,7 +206,7 @@
if(carved)
if(store)
user << "[store] falls out of [title]!"
- store.loc = get_turf(src.loc)
+ store.forceMove(get_turf(src.loc))
store = null
return
else
@@ -224,8 +223,7 @@
if(carved)
if(!store)
if(W.w_class < 3)
- user.drop_item()
- W.loc = src
+ user.drop_from_inventory(W,src)
store = W
user << "You put [W] in [title]."
return
diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm
index 6e115bcc821..84b34f516ff 100644
--- a/code/modules/library/lib_machines.dm
+++ b/code/modules/library/lib_machines.dm
@@ -410,8 +410,7 @@ datum/borrowbook // Datum used to keep track of who has borrowed what when and f
/obj/machinery/libraryscanner/attackby(var/obj/O as obj, var/mob/user as mob)
if(istype(O, /obj/item/weapon/book))
- user.drop_item()
- O.loc = src
+ user.drop_from_inventory(O,src)
/obj/machinery/libraryscanner/attack_hand(var/mob/user as mob)
usr.set_machine(src)
@@ -442,7 +441,7 @@ datum/borrowbook // Datum used to keep track of who has borrowed what when and f
cache = null
if(href_list["eject"])
for(var/obj/item/weapon/book/B in contents)
- B.loc = src.loc
+ B.forceMove(src.loc)
src.add_fingerprint(usr)
src.updateUsrDialog()
return
@@ -460,8 +459,7 @@ datum/borrowbook // Datum used to keep track of who has borrowed what when and f
/obj/machinery/bookbinder/attackby(var/obj/O as obj, var/mob/user as mob)
if(istype(O, /obj/item/weapon/paper))
- user.drop_item()
- O.loc = src
+ user.drop_from_inventory(O,src)
user.visible_message("[user] loads some paper into [src].", "You load some paper into [src].")
src.visible_message("[src] begins to hum as it warms up its printing drums.")
sleep(rand(200,400))
diff --git a/code/modules/martial_arts/plasma_fist.dm b/code/modules/martial_arts/plasma_fist.dm
index edc24186354..2665468173c 100644
--- a/code/modules/martial_arts/plasma_fist.dm
+++ b/code/modules/martial_arts/plasma_fist.dm
@@ -120,7 +120,7 @@
var/datum/martial_art/plasma_fist/F = new/datum/martial_art/plasma_fist(null)
F.teach(H)
to_chat(H, "You have learned the ancient martial art of Plasma Fist.")
- user.drop_item()
visible_message("[src] lights up in fire and quickly burns to ash.")
new /obj/effect/decal/cleanable/ash(get_turf(src))
+ user.drop_from_inventory(src,get_turf(src))
qdel(src)
\ No newline at end of file
diff --git a/code/modules/martial_arts/sleeping_carp.dm b/code/modules/martial_arts/sleeping_carp.dm
index 88cc96e6f2f..c389ccaf86e 100644
--- a/code/modules/martial_arts/sleeping_carp.dm
+++ b/code/modules/martial_arts/sleeping_carp.dm
@@ -139,7 +139,7 @@
var/datum/martial_art/the_sleeping_carp/theSleepingCarp = new(null)
theSleepingCarp.teach(user)
- user.drop_item()
visible_message("[src] lights up in fire and quickly burns to ash.")
new /obj/effect/decal/cleanable/ash(get_turf(src))
+ user.drop_from_inventory(src,get_turf(src))
qdel(src)
\ No newline at end of file
diff --git a/code/modules/mining/drilling/drill.dm b/code/modules/mining/drilling/drill.dm
index dcacd45c1b8..adfc7cba3e5 100644
--- a/code/modules/mining/drilling/drill.dm
+++ b/code/modules/mining/drilling/drill.dm
@@ -168,8 +168,7 @@
if(cell)
user << "The drill already has a cell installed."
else
- user.drop_item()
- O.loc = src
+ user.drop_from_inventory(O,src)
cell = O
component_parts += O
user << "You install \the [O]."
@@ -323,7 +322,7 @@
var/obj/structure/ore_box/B = locate() in orange(1)
if(B)
for(var/obj/item/weapon/ore/O in contents)
- O.loc = B
+ O.forceMove(B)
usr << "You unload the drill's storage cache into the ore box."
else
for(var/obj/item/weapon/ore/O in contents)
diff --git a/code/modules/mining/machine_processing.dm b/code/modules/mining/machine_processing.dm
index 009d2e1a500..05e1cff8785 100644
--- a/code/modules/mining/machine_processing.dm
+++ b/code/modules/mining/machine_processing.dm
@@ -95,7 +95,7 @@
if(href_list["choice"])
if(istype(inserted_id))
if(href_list["choice"] == "eject")
- inserted_id.loc = loc
+ inserted_id.forceMove(loc)
if(!usr.get_active_hand())
usr.put_in_hands(inserted_id)
inserted_id = null
@@ -113,8 +113,7 @@
else if(href_list["choice"] == "insert")
var/obj/item/weapon/card/id/I = usr.get_active_hand()
if(istype(I))
- usr.drop_item()
- I.loc = src
+ usr.drop_from_inventory(I,src)
inserted_id = I
else usr << "No valid ID."
diff --git a/code/modules/mining/machine_unloading.dm b/code/modules/mining/machine_unloading.dm
index 8f10b4309b0..8bc006e5272 100644
--- a/code/modules/mining/machine_unloading.dm
+++ b/code/modules/mining/machine_unloading.dm
@@ -31,7 +31,7 @@
var/i = 0
for (var/obj/item/weapon/ore/O in BOX.contents)
BOX.contents -= O
- O.loc = output.loc
+ O.forceMove(output.loc)
i++
if (i>=10)
return
@@ -41,7 +41,7 @@
for (i = 0; i<10; i++)
O = locate(/obj/item, input.loc)
if (O)
- O.loc = src.output.loc
+ O.forceMove(src.output.loc)
else
return
return
diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm
index 45d77b2de04..a724b7b980b 100644
--- a/code/modules/mining/machine_vending.dm
+++ b/code/modules/mining/machine_vending.dm
@@ -135,7 +135,7 @@ var/global/list/minevendor_list = list( //keep in order of price
if(href_list["choice"])
if(istype(inserted_id))
if(href_list["choice"] == "eject")
- inserted_id.loc = loc
+ inserted_id.forceMove(loc)
if(ishuman(usr))
if(!usr.get_active_hand())
usr.put_in_hands(inserted_id)
@@ -145,8 +145,7 @@ var/global/list/minevendor_list = list( //keep in order of price
else if(href_list["choice"] == "insert")
var/obj/item/weapon/card/id/I = usr.get_active_hand()
if(istype(I))
- usr.drop_item()
- I.loc = src
+ usr.drop_from_inventory(I,src)
inserted_id = I
else usr << "No valid ID."
if(href_list["purchase"])
@@ -210,8 +209,7 @@ var/global/list/minevendor_list = list( //keep in order of price
if(istype(I,/obj/item/weapon/card/id))
var/obj/item/weapon/card/id/C = usr.get_active_hand()
if(istype(C) && !istype(inserted_id))
- usr.drop_item()
- C.loc = src
+ usr.drop_from_inventory(C,src)
inserted_id = C
interact(user)
return
diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm
index 2da5bf340a7..fe9ed58c725 100644
--- a/code/modules/mining/mine_items.dm
+++ b/code/modules/mining/mine_items.dm
@@ -606,8 +606,7 @@
/obj/vehicle/train/cargo/engine/mining/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/key/minecarts))
if(!key)
- user.drop_item()
- W.forceMove(src)
+ user.drop_from_inventory(W,src)
key = W
verbs += /obj/vehicle/train/cargo/engine/verb/remove_key
return
@@ -941,7 +940,7 @@ var/list/total_extraction_beacons = list()
var/list/flooring_near_beacon = list()
for(var/turf/simulated/floor/floor in orange(1, beacon))
flooring_near_beacon += floor
- A.loc = pick(flooring_near_beacon)
+ A.forceMove(pick(flooring_near_beacon))
single_spark(A.loc)
if(uses_left <= 0)
qdel(src)
@@ -1289,7 +1288,7 @@ var/list/total_extraction_beacons = list()
icon_state = "fitnessweight-c"
user.dir = SOUTH
user.Stun(4)
- user.loc = src.loc
+ user.forceMove(src.loc)
var/image/W = image('icons/obj/mining.dmi',"fitnessweight-w")
W.layer = 5.1
add_overlay(W)
diff --git a/code/modules/mining/money_bag.dm b/code/modules/mining/money_bag.dm
index fdac621ae07..5812cfcd93a 100644
--- a/code/modules/mining/money_bag.dm
+++ b/code/modules/mining/money_bag.dm
@@ -48,6 +48,7 @@
/obj/item/weapon/moneybag/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
+ //TODO: Check this code
if (istype(W, /obj/item/weapon/coin))
var/obj/item/weapon/coin/C = W
user << "You add the [C.name] into the bag."
@@ -82,7 +83,7 @@
COIN = locate(/obj/item/weapon/coin/uranium,src.contents)
if(!COIN)
return
- COIN.loc = src.loc
+ COIN.forceMove(src.loc)
return
diff --git a/code/modules/mining/satchel_ore_boxdm.dm b/code/modules/mining/satchel_ore_boxdm.dm
index f0dd6e5d770..2e100d09985 100644
--- a/code/modules/mining/satchel_ore_boxdm.dm
+++ b/code/modules/mining/satchel_ore_boxdm.dm
@@ -92,7 +92,7 @@
for (var/obj/item/weapon/ore/O in contents)
contents -= O
- O.loc = src.loc
+ O.forceMove(src.loc)
usr << "You empty the ore box"
return
@@ -100,7 +100,7 @@
/obj/structure/ore_box/ex_act(severity)
if(severity == 1.0 || (severity < 3.0 && prob(50)))
for (var/obj/item/weapon/ore/O in contents)
- O.loc = src.loc
+ O.forceMove(src.loc)
O.ex_act(severity++)
CHECK_TICK
diff --git a/code/modules/mob/abstract/new_player/new_player.dm b/code/modules/mob/abstract/new_player/new_player.dm
index c046df081cf..28e544b9e91 100644
--- a/code/modules/mob/abstract/new_player/new_player.dm
+++ b/code/modules/mob/abstract/new_player/new_player.dm
@@ -134,7 +134,7 @@ INITIALIZE_IMMEDIATE(/mob/abstract/new_player)
var/obj/O = locate("landmark*Observer-Start")
if(istype(O))
src << "Now teleporting."
- observer.loc = O.loc
+ observer.forceMove(O.loc)
else
src << "Could not locate an observer spawn point. Use the Teleport verb to jump to the station map."
observer.timeofdeath = world.time // Set the time of death so that the respawn timer works correctly.
@@ -316,7 +316,7 @@ INITIALIZE_IMMEDIATE(/mob/abstract/new_player)
var/obj/structure/AIcore/deactivated/C = empty_playable_ai_cores[1]
empty_playable_ai_cores -= C
- character.loc = C.loc
+ character.forceMove(C.loc)
AnnounceCyborg(character, rank, "has been downloaded to the empty core in \the [character.loc.loc]")
SSticker.mode.handle_latejoin(character)
@@ -331,7 +331,7 @@ INITIALIZE_IMMEDIATE(/mob/abstract/new_player)
character.lastarea = get_area(loc)
// Moving wheelchair if they have one
if(character.buckled && istype(character.buckled, /obj/structure/bed/chair/wheelchair))
- character.buckled.loc = character.loc
+ character.buckled.forceMove(character.loc)
character.buckled.set_dir(character.dir)
SSticker.mode.handle_latejoin(character)
diff --git a/code/modules/mob/holder.dm b/code/modules/mob/holder.dm
index 623ab45cc33..d4f63e90f24 100644
--- a/code/modules/mob/holder.dm
+++ b/code/modules/mob/holder.dm
@@ -102,19 +102,12 @@ var/list/holder_mob_icon_cache = list()
M.Released()
contained = null
- var/mob/L = get_holding_mob()
- if (L)
- L.drop_from_inventory(src)
-
qdel(src)
//Similar to above function, but will not deposit things in any container, only directly on a turf.
//Can be called safely anywhere. Notably on holders held or worn on a mob
/obj/item/weapon/holder/proc/release_to_floor()
var/turf/T = get_turf(src)
- var/mob/L = get_holding_mob()
- if (L)
- L.drop_from_inventory(src)
for(var/mob/M in contents)
M.forceMove(T) //if the holder was placed into a disposal, this should place the animal in the disposal
diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm
index 938537518bd..d92ba5f775a 100644
--- a/code/modules/mob/inventory.dm
+++ b/code/modules/mob/inventory.dm
@@ -142,32 +142,30 @@ var/list/slot_equipment_priority = list( \
// Removes an item from inventory and places it in the target atom.
// If canremove or other conditions need to be checked then use unEquip instead.
-/mob/proc/drop_from_inventory(var/obj/item/W, var/atom/Target = null)
-
+/mob/proc/drop_from_inventory(var/obj/item/W, var/atom/target = null)
if(W)
- if(!Target)
- Target = loc
-
+ if(!target)
+ target = loc
remove_from_mob(W)
- if(!(W && W.loc)) return 1 // self destroying objects (tk, grabs)
-
- W.forceMove(Target)
+ if(!(W && W.loc))
+ return 1
+ W.forceMove(target)
update_icons()
return 1
return 0
//Drops the item in our left hand
-/mob/proc/drop_l_hand(var/atom/Target)
- return drop_from_inventory(l_hand, Target)
+/mob/proc/drop_l_hand(var/atom/target)
+ return drop_from_inventory(l_hand, target)
//Drops the item in our right hand
-/mob/proc/drop_r_hand(var/atom/Target)
- return drop_from_inventory(r_hand, Target)
+/mob/proc/drop_r_hand(var/atom/target)
+ return drop_from_inventory(r_hand, target)
//Drops the item in our active hand. TODO: rename this to drop_active_hand or something
-/mob/proc/drop_item(var/atom/Target)
- if(hand) return drop_l_hand(Target)
- else return drop_r_hand(Target)
+/mob/proc/drop_item(var/atom/target)
+ if(hand) return drop_l_hand(target)
+ else return drop_r_hand(target)
/*
Removes the object from any slots the mob might have, calling the appropriate icon update proc.
diff --git a/code/modules/mob/living/bot/cleanbot.dm b/code/modules/mob/living/bot/cleanbot.dm
index 7b358cbed0b..4e054df7925 100644
--- a/code/modules/mob/living/bot/cleanbot.dm
+++ b/code/modules/mob/living/bot/cleanbot.dm
@@ -379,13 +379,12 @@ var/list/cleanbot_types // Going to use this to generate a list of types once th
/obj/item/weapon/bucket_sensor/attackby(var/obj/item/O, var/mob/user)
..()
if(istype(O, /obj/item/robot_parts/l_arm) || istype(O, /obj/item/robot_parts/r_arm))
- user.drop_item()
+ user.drop_from_inventory(O,get_turf(src))
qdel(O)
var/turf/T = get_turf(loc)
var/mob/living/bot/cleanbot/A = new /mob/living/bot/cleanbot(T)
A.name = created_name
user << "You add the robot arm to the bucket and sensor assembly. Beep boop!"
- user.drop_from_inventory(src)
qdel(src)
else if(istype(O, /obj/item/weapon/pen))
diff --git a/code/modules/mob/living/bot/ed209bot.dm b/code/modules/mob/living/bot/ed209bot.dm
index 3650373a9e9..8a778073971 100644
--- a/code/modules/mob/living/bot/ed209bot.dm
+++ b/code/modules/mob/living/bot/ed209bot.dm
@@ -88,7 +88,7 @@
switch(build_step)
if(0, 1)
if(istype(W, /obj/item/robot_parts/l_leg) || istype(W, /obj/item/robot_parts/r_leg))
- user.drop_item()
+ user.drop_from_inventory(W,get_turf(src))
qdel(W)
build_step++
user << "You add the robot leg to [src]."
@@ -103,7 +103,7 @@
if(2)
if(istype(W, /obj/item/clothing/suit/storage/vest))
- user.drop_item()
+ user.drop_from_inventory(W,get_turf(src))
qdel(W)
build_step++
user << "You add the armor to [src]."
@@ -122,7 +122,7 @@
return 1
if(4)
if(istype(W, /obj/item/clothing/head/helmet))
- user.drop_item()
+ user.drop_from_inventory(W,get_turf(src))
qdel(W)
build_step++
user << "You add the helmet to [src]."
@@ -133,7 +133,7 @@
if(5)
if(isprox(W))
- user.drop_item()
+ user.drop_from_inventory(W,get_turf(src))
qdel(W)
build_step++
user << "You add the prox sensor to [src]."
@@ -163,7 +163,7 @@
user << "You add [W] to [src]."
item_state = "ed209_taser"
icon_state = "ed209_taser"
- user.drop_item()
+ user.drop_from_inventory(W,get_turf(src))
qdel(W)
return 1
@@ -184,8 +184,7 @@
user << "You complete the ED-209."
var/turf/T = get_turf(src)
new /mob/living/bot/secbot/ed209(T,created_name,lasercolor)
- user.drop_item()
+ user.drop_from_inventory(W,get_turf(src))
qdel(W)
- user.drop_from_inventory(src)
qdel(src)
return 1
diff --git a/code/modules/mob/living/bot/farmbot.dm b/code/modules/mob/living/bot/farmbot.dm
index c434b05c989..b9649637850 100644
--- a/code/modules/mob/living/bot/farmbot.dm
+++ b/code/modules/mob/living/bot/farmbot.dm
@@ -266,7 +266,7 @@
new /obj/item/device/analyzer/plant_analyzer(Tsec)
if(tank)
- tank.loc = Tsec
+ tank.forceMove(Tsec)
if(prob(50))
new /obj/item/robot_parts/l_arm(Tsec)
@@ -324,7 +324,6 @@
user << "You add the robot arm to [src]."
loc = A //Place the water tank into the assembly, it will be needed for the finished bot
- user.drop_from_inventory(S)
qdel(S)
/obj/item/weapon/farmbot_arm_assembly/attackby(obj/item/weapon/W as obj, mob/user as mob)
@@ -333,7 +332,6 @@
build_step++
user << "You add the plant analyzer to [src]."
name = "farmbot assembly"
- user.remove_from_mob(W)
qdel(W)
return 1
@@ -341,7 +339,6 @@
build_step++
user << "You add a bucket to [src]."
name = "farmbot assembly with bucket"
- user.remove_from_mob(W)
qdel(W)
return 1//Prevents the object's afterattack from executing and causing runtime errors
@@ -358,7 +355,7 @@
user << "You complete the Farmbot! Beep boop."
var/mob/living/bot/farmbot/S = new /mob/living/bot/farmbot(get_turf(src))
for(var/obj/structure/reagent_dispensers/watertank/wTank in contents)
- wTank.loc = S
+ wTank.forceMove(S)
S.tank = wTank
S.name = created_name
user.remove_from_mob(W)
diff --git a/code/modules/mob/living/bot/floorbot.dm b/code/modules/mob/living/bot/floorbot.dm
index 127a1066dec..e26a8e7f569 100644
--- a/code/modules/mob/living/bot/floorbot.dm
+++ b/code/modules/mob/living/bot/floorbot.dm
@@ -314,7 +314,6 @@
var/obj/item/weapon/toolbox_tiles/B = new /obj/item/weapon/toolbox_tiles
user.put_in_hands(B)
user << "You add the tiles into the empty toolbox. They protrude from the top."
- user.drop_from_inventory(src)
qdel(src)
else
user << "You need 10 floor tiles for a floorbot."
@@ -340,7 +339,6 @@
B.created_name = created_name
user.put_in_hands(B)
user << "You add the sensor to the toolbox and tiles!"
- user.drop_from_inventory(src)
qdel(src)
return 1
else if (istype(W, /obj/item/weapon/pen))
@@ -371,7 +369,6 @@
var/mob/living/bot/floorbot/A = new /mob/living/bot/floorbot(T)
A.name = created_name
user << "You add the robot arm to the odd looking toolbox assembly! Boop beep!"
- user.drop_from_inventory(src)
qdel(src)
return 1
else if(istype(W, /obj/item/weapon/pen))
diff --git a/code/modules/mob/living/bot/medbot.dm b/code/modules/mob/living/bot/medbot.dm
index b73c563a54a..442b0cf5ce1 100644
--- a/code/modules/mob/living/bot/medbot.dm
+++ b/code/modules/mob/living/bot/medbot.dm
@@ -171,8 +171,7 @@
user << "There is already a beaker loaded."
return
- user.drop_item()
- O.loc = src
+ user.drop_from_inventory(O,src)
reagent_glass = O
user << "You insert [O]."
return 1
@@ -216,7 +215,7 @@
else if (href_list["eject"] && (!isnull(reagent_glass)))
if(!locked)
- reagent_glass.loc = get_turf(src)
+ reagent_glass.forceMove(get_turf(src))
reagent_glass = null
else
usr << "You cannot eject the beaker because the panel is locked."
@@ -257,7 +256,7 @@
new /obj/item/robot_parts/l_arm(Tsec)
if(reagent_glass)
- reagent_glass.loc = Tsec
+ reagent_glass.forceMove(Tsec)
reagent_glass = null
spark(src, 3, alldirs)
@@ -329,7 +328,6 @@
qdel(S)
user.put_in_hands(A)
user << "You add the robot arm to the first aid kit."
- user.drop_from_inventory(src)
qdel(src)
/obj/item/weapon/firstaid_arm_assembly
@@ -360,7 +358,7 @@
switch(build_step)
if(0)
if(istype(W, /obj/item/device/healthanalyzer))
- user.drop_item()
+ user.drop_from_inventory(W,get_turf(src))
qdel(W)
build_step++
user << "You add the health sensor to [src]."
@@ -370,13 +368,12 @@
if(1)
if(isprox(W))
- user.drop_item()
+ user.drop_from_inventory(W,get_turf(src))
qdel(W)
user << "You complete the Medibot! Beep boop."
var/turf/T = get_turf(src)
var/mob/living/bot/medbot/S = new /mob/living/bot/medbot(T)
S.skin = skin
S.name = created_name
- user.drop_from_inventory(src)
qdel(src)
return 1
diff --git a/code/modules/mob/living/bot/secbot.dm b/code/modules/mob/living/bot/secbot.dm
index 2ba8d73bf97..088cb96f434 100644
--- a/code/modules/mob/living/bot/secbot.dm
+++ b/code/modules/mob/living/bot/secbot.dm
@@ -552,28 +552,28 @@
return 1
else if(isprox(O) && (build_step == 1))
- user.drop_item()
build_step = 2
user << "You add \the [O] to [src]."
add_overlay("hs_eye")
name = "helmet/signaler/prox sensor assembly"
+ user.drop_from_inventory(O,get_turf(src))
qdel(O)
return 1
else if((istype(O, /obj/item/robot_parts/l_arm) || istype(O, /obj/item/robot_parts/r_arm)) && build_step == 2)
- user.drop_item()
build_step = 3
user << "You add \the [O] to [src]."
name = "helmet/signaler/prox sensor/robot arm assembly"
add_overlay("hs_arm")
+ user.drop_from_inventory(O,get_turf(src))
qdel(O)
return 1
else if(istype(O, /obj/item/weapon/melee/baton) && build_step == 3)
- user.drop_item()
user << "You complete the Securitron! Beep boop."
var/mob/living/bot/secbot/S = new /mob/living/bot/secbot(get_turf(src))
S.name = created_name
+ user.drop_from_inventory(O,get_turf(src))
qdel(O)
qdel(src)
return 1
diff --git a/code/modules/mob/living/carbon/alien/diona/diona_attacks.dm b/code/modules/mob/living/carbon/alien/diona/diona_attacks.dm
index 18e08cfbc2b..a9d235bf6d5 100644
--- a/code/modules/mob/living/carbon/alien/diona/diona_attacks.dm
+++ b/code/modules/mob/living/carbon/alien/diona/diona_attacks.dm
@@ -19,7 +19,7 @@
get_scooped(H)
return
else if(H.a_intent == "grab" && hat && !(H.l_hand && H.r_hand))
- hat.loc = get_turf(src)
+ hat.forceMove(get_turf(src))
H.put_in_hands(hat)
H.visible_message("\The [H] removes \the [src]'s [hat].")
hat = null
diff --git a/code/modules/mob/living/carbon/alien/diona/diona_nymph.dm b/code/modules/mob/living/carbon/alien/diona/diona_nymph.dm
index 47a05557692..db82dc24658 100644
--- a/code/modules/mob/living/carbon/alien/diona/diona_nymph.dm
+++ b/code/modules/mob/living/carbon/alien/diona/diona_nymph.dm
@@ -127,7 +127,7 @@
return
/mob/living/carbon/alien/diona/put_in_hands(var/obj/item/W) // No hands.
- W.loc = get_turf(src)
+ W.forceMove(get_turf(src))
return 1
diff --git a/code/modules/mob/living/carbon/alien/diona/diona_powers.dm b/code/modules/mob/living/carbon/alien/diona/diona_powers.dm
index 3a88fd50146..d4ae0b12af1 100644
--- a/code/modules/mob/living/carbon/alien/diona/diona_powers.dm
+++ b/code/modules/mob/living/carbon/alien/diona/diona_powers.dm
@@ -137,7 +137,7 @@
src << "You feel your being twine with that of \the [D] as it merges with your biomass."
for(var/obj/O in D.contents)
D.drop_from_inventory(O)
- D.loc = src
+ D.forceMove(src)
D.stat = CONSCIOUS
status_flags |= PASSEMOTES
@@ -175,7 +175,7 @@
gestalt.nutrition -= NYMPH_ABSORB_NUTRITION//Preventing an exploit with repeatedly absorbing and splitting
split_languages(gestalt)
- src.loc = get_turf(src)
+ src.forceMove(get_turf(src))
stat = CONSCIOUS
gestalt = null
update_verbs()
diff --git a/code/modules/mob/living/carbon/alien/diona/progression.dm b/code/modules/mob/living/carbon/alien/diona/progression.dm
index f86e50b2761..923df7dbce4 100644
--- a/code/modules/mob/living/carbon/alien/diona/progression.dm
+++ b/code/modules/mob/living/carbon/alien/diona/progression.dm
@@ -12,7 +12,7 @@
if(istype(loc,/obj/item/weapon/holder/diona))
var/obj/item/weapon/holder/diona/L = loc
- src.loc = L.loc
+ src.forceMove(L.loc)
qdel(L)
return "Diona"
@@ -76,7 +76,6 @@
//Although we are still host, these nymphs become neighbors, not contents
for(var/mob/living/carbon/alien/diona/D in contents)
D.forceMove(adult)
- D.loc = adult
D.gestalt = adult
D.stat = CONSCIOUS
@@ -84,7 +83,6 @@
//Our mind is already in the gestalt, this is really just transferring our empty body
src.nutrition = 0
src.forceMove(adult)
- src.loc = adult
src.stat = CONSCIOUS
src.gestalt = adult
diff --git a/code/modules/mob/living/carbon/alien/larva/powers.dm b/code/modules/mob/living/carbon/alien/larva/powers.dm
index 57e3427163f..1e2089d4eb8 100644
--- a/code/modules/mob/living/carbon/alien/larva/powers.dm
+++ b/code/modules/mob/living/carbon/alien/larva/powers.dm
@@ -52,7 +52,7 @@
var/obj/item/organ/external/E = pick(H.organs)
src << "You burrow deeply into \the [H]'s [E.name]!"
var/obj/item/weapon/holder/holder = new (loc)
- src.loc = holder
+ src.forceMove(holder)
holder.name = src.name
E.embed(holder,0,"\The [src] burrows deeply into \the [H]'s [E.name]!")
@@ -102,9 +102,9 @@
affected = organ
break
affected.implants -= holder
- holder.loc = get_turf(holder)
+ holder.forceMove(get_turf(holder))
else
- src.loc = get_turf(src)
+ src.forceMove(get_turf(src))
if(affected)
src << "You crawl out of \the [H]'s [affected.name] and plop to the ground."
else
diff --git a/code/modules/mob/living/carbon/brain/MMI.dm b/code/modules/mob/living/carbon/brain/MMI.dm
index 312f96c64aa..be9c061081a 100644
--- a/code/modules/mob/living/carbon/brain/MMI.dm
+++ b/code/modules/mob/living/carbon/brain/MMI.dm
@@ -51,15 +51,15 @@
brainmob = B.brainmob
B.brainmob = null
- brainmob.loc = src
+ brainmob.forceMove(src)
brainmob.container = src
brainmob.stat = 0
dead_mob_list -= brainmob//Update dem lists
living_mob_list += brainmob
- user.drop_item()
+
brainobj = B
- brainobj.loc = src
+ user.drop_from_inventory(brainobj,src)
name = "Man-Machine Interface: [brainmob.real_name]"
icon_state = "mmi_full"
@@ -92,13 +92,13 @@
user << "You upend the MMI, spilling the brain onto the floor."
var/obj/item/organ/brain/brain
if (brainobj) //Pull brain organ out of MMI.
- brainobj.loc = user.loc
+ brainobj.forceMove(user.loc)
brain = brainobj
brainobj = null
else //Or make a new one if empty.
brain = new(user.loc)
brainmob.container = null//Reset brainmob mmi var.
- brainmob.loc = brain//Throw mob into brain.
+ brainmob.forceMove(brain)//Throw mob into brain.
living_mob_list -= brainmob//Get outta here
brain.brainmob = brainmob//Set the brain to use the brainmob
brainmob = null//Set mmi brainmob var to null
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index 93262fd261f..efd09c3e4e3 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -68,7 +68,7 @@
if(prob(src.getBruteLoss() - 50))
for(var/atom/movable/A in stomach_contents)
- A.loc = loc
+ A.forceMove(loc)
LAZYREMOVE(stomach_contents, A)
src.gib()
@@ -76,7 +76,7 @@
for(var/mob/M in src)
if(M in src.stomach_contents)
LAZYREMOVE(src.stomach_contents, M)
- M.loc = src.loc
+ M.forceMove(src.loc)
for(var/mob/N in viewers(src, null))
if(N.client)
N.show_message(text("[M] bursts out of [src]!"), 2)
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index ee12c3b512e..3b864eeafb1 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -1524,7 +1524,7 @@
"You pop [S]'s [current_limb.joint] back in!")
current_limb.undislocate()
-/mob/living/carbon/human/drop_from_inventory(var/obj/item/W, var/atom/Target = null)
+/mob/living/carbon/human/drop_from_inventory(var/obj/item/W, var/atom/target = null)
if(W in organs)
return
..()
diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm
index c3ffa2139cd..6e459f2cffb 100644
--- a/code/modules/mob/living/carbon/human/human_defense.dm
+++ b/code/modules/mob/living/carbon/human/human_defense.dm
@@ -41,7 +41,7 @@ emp_act
var/obj/item/weapon/SP = new P.shrapnel_type()
SP.name = (P.name != "shrapnel")? "[P.name] shrapnel" : "shrapnel"
SP.desc = "[SP.desc] It looks like it was fired from [P.shot_from]."
- SP.loc = organ
+ SP.forceMove(organ)
organ.embed(SP)
return (..(P , def_zone))
@@ -400,7 +400,7 @@ emp_act
var/turf/T = near_wall(dir,2)
if(T)
- src.loc = T
+ src.forceMove(T)
visible_message("[src] is pinned to the wall by [O]!","You are pinned to the wall by [O]!")
src.anchored = 1
src.pinned += O
diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm
index a4e7c484789..4d0d56c8270 100644
--- a/code/modules/mob/living/carbon/human/inventory.dm
+++ b/code/modules/mob/living/carbon/human/inventory.dm
@@ -408,7 +408,6 @@ This saves us from having to call add_fingerprint() any time something is put in
/mob/living/carbon/human/put_in_l_hand(var/obj/item/W)
if(!..() || l_hand)
return 0
-
W.forceMove(src)
l_hand = W
W.equipped(src,slot_l_hand)
@@ -419,7 +418,6 @@ This saves us from having to call add_fingerprint() any time something is put in
/mob/living/carbon/human/put_in_r_hand(var/obj/item/W)
if(!..() || r_hand)
return 0
-
W.forceMove(src)
r_hand = W
W.equipped(src,slot_r_hand)
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index d70c5c73fe7..1a04a5f5cb2 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -736,7 +736,7 @@ default behaviour is:
layer = UNDERDOOR
underdoor = 1
-/mob/living/carbon/drop_from_inventory(var/obj/item/W, var/atom/Target = null)
+/mob/living/carbon/drop_from_inventory(var/obj/item/W, var/atom/target = null)
if(W in internal_organs)
return
..()
diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm
index 010b6c8d612..db6c88b9645 100644
--- a/code/modules/mob/living/living_defense.dm
+++ b/code/modules/mob/living/living_defense.dm
@@ -214,13 +214,13 @@
var/turf/T = near_wall(dir,2)
if(T)
- src.loc = T
+ src.forceMove(T)
visible_message("[src] is pinned to the wall by [O]!","You are pinned to the wall by [O]!")
src.anchored = 1
src.pinned += O
/mob/living/proc/embed(var/obj/O, var/def_zone=null)
- O.loc = src
+ O.forceMove(src)
src.embedded += O
src.verbs += /mob/proc/yank_out_object
diff --git a/code/modules/mob/living/parasite/meme.dm b/code/modules/mob/living/parasite/meme.dm
index c99bedb6762..8c8ea30c86c 100644
--- a/code/modules/mob/living/parasite/meme.dm
+++ b/code/modules/mob/living/parasite/meme.dm
@@ -35,7 +35,7 @@ var/controlling
return 0
src.host = host
- src.loc = host
+ src.forceMove(host)
host.parasites.Add(src)
if(client) client.eye = host
@@ -96,7 +96,8 @@ var/controlling
/mob/living/parasite/meme/death()
// make sure the mob is on the actual map before gibbing
- if(host) src.loc = host.loc
+ if(host)
+ src.forceMove(host.loc)
src.stat = 2
..()
qdel(src)
diff --git a/code/modules/mob/living/silicon/pai/death.dm b/code/modules/mob/living/silicon/pai/death.dm
index 920a3a1658d..5462e75f4c4 100644
--- a/code/modules/mob/living/silicon/pai/death.dm
+++ b/code/modules/mob/living/silicon/pai/death.dm
@@ -2,7 +2,7 @@
if(card)
card.removePersonality()
if(gibbed)
- src.loc = get_turf(card)
+ src.forceMove(get_turf(card))
qdel(card)
else
close_up()
diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm
index 7158d92bf9a..179c57fd414 100644
--- a/code/modules/mob/living/silicon/pai/pai.dm
+++ b/code/modules/mob/living/silicon/pai/pai.dm
@@ -462,15 +462,14 @@
if(istype(H))
var/mob/living/M = H.loc
if(istype(M))
- M.drop_from_inventory(H)
- H.loc = get_turf(src)
- src.loc = get_turf(H)
+ M.drop_from_inventory(H,get_turf(src))
+ else
+ H.forceMove(get_turf(src))
+ src.forceMove(get_turf(H))
// Move us into the card and move the card to the ground.
- src.loc = card
- card.loc = get_turf(card)
src.forceMove(card)
- card.forceMove(card.loc)
+ card.forceMove(get_turf(card))
canmove = 1
resting = 0
icon_state = "[chassis]"
diff --git a/code/modules/mob/living/silicon/robot/component.dm b/code/modules/mob/living/silicon/robot/component.dm
index 32fc6d2057d..83a1e3efd98 100644
--- a/code/modules/mob/living/silicon/robot/component.dm
+++ b/code/modules/mob/living/silicon/robot/component.dm
@@ -99,7 +99,7 @@
..()
tank = new/obj/item/weapon/tank/jetpack/carbondioxide/synthetic
owner.internals = tank
- tank.loc = owner
+ tank.forceMove(owner)
owner.jetpack = tank
/datum/robot_component/jetpack/uninstall()
diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm
index 6dc135453c0..cd6058c8f1c 100644
--- a/code/modules/mob/living/silicon/robot/drone/drone.dm
+++ b/code/modules/mob/living/silicon/robot/drone/drone.dm
@@ -89,7 +89,7 @@
/mob/living/silicon/robot/drone/Destroy()
if(hat)
- hat.loc = get_turf(src)
+ hat.forceMove(get_turf(src))
return ..()
/mob/living/silicon/robot/drone/construction
diff --git a/code/modules/mob/living/silicon/robot/drone/drone_abilities.dm b/code/modules/mob/living/silicon/robot/drone/drone_abilities.dm
index 295e0456e07..f3d902834ea 100644
--- a/code/modules/mob/living/silicon/robot/drone/drone_abilities.dm
+++ b/code/modules/mob/living/silicon/robot/drone/drone_abilities.dm
@@ -26,7 +26,7 @@
get_scooped(H)
return
else if(H.a_intent == "grab" && hat && !(H.l_hand && H.r_hand))
- hat.loc = get_turf(src)
+ hat.forceMove(get_turf(src))
H.put_in_hands(hat)
H.visible_message("\The [H] removes \the [src]'s [hat].")
hat = null
diff --git a/code/modules/mob/living/silicon/robot/gripper.dm b/code/modules/mob/living/silicon/robot/gripper.dm
index 7b0af48a663..8d85ff26b98 100644
--- a/code/modules/mob/living/silicon/robot/gripper.dm
+++ b/code/modules/mob/living/silicon/robot/gripper.dm
@@ -63,7 +63,7 @@
if(istype(I,typepath))
if (feedback)
user << "You collect \the [I]."
- I.loc = src
+ I.forceMove(src)
wrapped = I
update_icon()
return 1
diff --git a/code/modules/mob/living/silicon/robot/inventory.dm b/code/modules/mob/living/silicon/robot/inventory.dm
index cc046635d4a..a356a3b682c 100644
--- a/code/modules/mob/living/silicon/robot/inventory.dm
+++ b/code/modules/mob/living/silicon/robot/inventory.dm
@@ -270,20 +270,20 @@
//If our active module is a gripper, drop the thing in it.
//Otherwise do nothing. We don't drop our modules
-/mob/living/silicon/robot/drop_item(var/atom/Target)
+/mob/living/silicon/robot/drop_item(var/atom/target)
if (istype(module_active, /obj/item/weapon/gripper))
var/obj/item/weapon/gripper/G = module_active
- G.drop(Target)
+ G.drop(target)
-/mob/living/silicon/robot/drop_from_inventory(var/obj/item/W, var/atom/Target = null)
+/mob/living/silicon/robot/drop_from_inventory(var/obj/item/W, var/atom/target = null)
if(W)
- if(!Target)
- Target = loc
+ if(!target)
+ target = loc
if (istype(W.loc, /obj/item/weapon/gripper))
var/obj/item/weapon/gripper/G = W.loc
- G.drop(Target)
+ G.drop(target)
return 1
return 0
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index bdc2d4ca67b..4e0417abb3a 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -243,7 +243,8 @@
/mob/living/silicon/robot/Destroy()
if(mmi && mind)//Safety for when a cyborg gets dust()ed. Or there is no MMI inside.
var/turf/T = get_turf(loc)//To hopefully prevent run time errors.
- if(T) mmi.loc = T
+ if(T)
+ mmi.forceMove(T)
if(mmi.brainmob)
mind.transfer_to(mmi.brainmob)
else
@@ -665,7 +666,7 @@
I.brute = C.brute_damage
I.burn = C.electronics_damage
- I.loc = src.loc
+ I.forceMove(src.loc)
if(C.installed == 1)
C.uninstall()
@@ -687,9 +688,9 @@
storage = null
else
user << "You install \the [W]"
- user.drop_item()
+
storage = W
- W.forceMove(src)
+ user.drop_from_inventory(W,src)
recalculate_synth_capacities()
else if (istype(W, /obj/item/weapon/cell) && opened) // trying to put a cell inside
@@ -701,8 +702,7 @@
else if(W.w_class != 3)
user << "\The [W] is too [W.w_class < 3? "small" : "large"] to fit here."
else
- user.drop_item()
- W.loc = src
+ user.drop_from_inventory(W,src)
cell = W
user << "You insert the power cell."
@@ -762,8 +762,7 @@
else
if(U.action(src))
usr << "You apply the upgrade to [src]!"
- usr.drop_item()
- U.loc = src
+ user.drop_from_inventory(U,src)
else
usr << "Upgrade error!"
diff --git a/code/modules/mob/living/silicon/robot/robot_items.dm b/code/modules/mob/living/silicon/robot/robot_items.dm
index cbc477f6491..736c484d67c 100644
--- a/code/modules/mob/living/silicon/robot/robot_items.dm
+++ b/code/modules/mob/living/silicon/robot/robot_items.dm
@@ -69,7 +69,7 @@
playsound(src.loc, 'sound/machines/buzz-two.ogg', 50, 1)
if(response == "Eject")
if(loaded_item)
- loaded_item.loc = get_turf(src)
+ loaded_item.forceMove(get_turf(src))
desc = initial(desc)
icon_state = initial(icon_state)
loaded_item = null
diff --git a/code/modules/mob/living/simple_animal/borer/borer.dm b/code/modules/mob/living/simple_animal/borer/borer.dm
index 9081ddcd713..4258b3c587e 100644
--- a/code/modules/mob/living/simple_animal/borer/borer.dm
+++ b/code/modules/mob/living/simple_animal/borer/borer.dm
@@ -161,7 +161,7 @@
if(host.mind)
borers.remove_antagonist(host.mind)
- src.loc = get_turf(host)
+ src.forceMove(get_turf(host))
reset_view(null)
machine = null
diff --git a/code/modules/mob/living/simple_animal/borer/borer_powers.dm b/code/modules/mob/living/simple_animal/borer/borer_powers.dm
index bba3c6fdada..6d12d222a94 100644
--- a/code/modules/mob/living/simple_animal/borer/borer_powers.dm
+++ b/code/modules/mob/living/simple_animal/borer/borer_powers.dm
@@ -109,7 +109,7 @@
src.host = M
src.host.status_flags |= PASSEMOTES
- src.loc = M
+ src.forceMove(M)
//Update their traitor status.
if(host.mind)
diff --git a/code/modules/mob/living/simple_animal/constructs/soulstone.dm b/code/modules/mob/living/simple_animal/constructs/soulstone.dm
index 6ee8aeff0fe..2629fc1ee2a 100644
--- a/code/modules/mob/living/simple_animal/constructs/soulstone.dm
+++ b/code/modules/mob/living/simple_animal/constructs/soulstone.dm
@@ -132,7 +132,7 @@
qdel(animation)
var/mob/living/simple_animal/shade/S = new /mob/living/simple_animal/shade( T.loc )
- S.loc = src //put shade in stone
+ S.forceMove(src) //put shade in stone
S.status_flags |= GODMODE //So they won't die inside the stone somehow
S.canmove = 0//Can't move out of the soul stone
S.name = "Shade of [T.real_name]"
@@ -168,7 +168,7 @@
U << "Capture failed!: The soul stone has already been imprinted with [src.imprinted]'s mind!"
return
- T.loc = src //put shade in stone
+ T.forceMove(src) //put shade in stone
T.status_flags |= GODMODE
T.canmove = 0
T.health = T.maxHealth
diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm
index 4d6de6246af..6e63528b6e5 100644
--- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm
+++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm
@@ -262,7 +262,7 @@
span("notice", "\The [user] feeds \the [O] to \the [name]! It clucks happily."),
span("notice", "You feed \the [O] to \the [name]! It clucks happily."),
"You hear a cluck.")
- user.drop_item()
+ user.drop_from_inventory(O,get_turf(src))
qdel(O)
eggsleft += rand(1, 4)
else
diff --git a/code/modules/mob/living/simple_animal/friendly/spiderbot.dm b/code/modules/mob/living/simple_animal/friendly/spiderbot.dm
index 6cdaa078c3a..0b7391080ee 100644
--- a/code/modules/mob/living/simple_animal/friendly/spiderbot.dm
+++ b/code/modules/mob/living/simple_animal/friendly/spiderbot.dm
@@ -84,11 +84,10 @@
positronic = 1
add_language("Robot Talk")
- user.drop_item()
src.mmi = O
src.transfer_personality(O)
- O.loc = src
+ user.drop_from_inventory(O,src)
src.update_icon()
return 1
@@ -123,7 +122,7 @@
user << "You swipe your access card and pop the brain out of \the [src]."
eject_brain()
if(held_item)
- held_item.loc = src.loc
+ held_item.forceMove(src.loc)
held_item = null
return 1
else
@@ -172,7 +171,7 @@
if(mmi)
var/turf/T = get_turf(loc)
if(T)
- mmi.loc = T
+ mmi.forceMove(T)
if(mind) mind.transfer_to(mmi.brainmob)
mmi = null
real_name = initial(real_name)
@@ -203,7 +202,7 @@
camera.status = 0
if (held_item)
- held_item.loc = src.loc
+ held_item.forceMove(src.loc)
held_item = null
eject_brain()
@@ -229,7 +228,7 @@
"You launch \the [held_item]!", \
"You hear a skittering noise and a thump!")
var/obj/item/weapon/grenade/G = held_item
- G.loc = src.loc
+ G.forceMove(src.loc)
G.prime()
held_item = null
return 1
@@ -238,7 +237,7 @@
"You drop \the [held_item].", \
"You hear a skittering noise and a soft thump.")
- held_item.loc = src.loc
+ held_item.forceMove(src.loc)
held_item = null
return 1
@@ -267,7 +266,7 @@
for(var/obj/item/I in view(1, src))
if(selection == I)
held_item = selection
- selection.loc = src
+ selection.forceMove(src)
visible_message("\The [src] scoops up \the [held_item].", \
"You grab \the [held_item].", \
"You hear a skittering noise and a clink.")
diff --git a/code/modules/mob/living/simple_animal/hostile/mimic.dm b/code/modules/mob/living/simple_animal/hostile/mimic.dm
index 7a212a20e66..3e5a0805a40 100644
--- a/code/modules/mob/living/simple_animal/hostile/mimic.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mimic.dm
@@ -65,7 +65,7 @@
/mob/living/simple_animal/hostile/mimic/crate/Initialize()
. = ..()
for(var/obj/item/I in loc)
- I.loc = src
+ I.forceMove(src)
/mob/living/simple_animal/hostile/mimic/crate/DestroySurroundings()
..()
@@ -111,7 +111,7 @@
var/obj/structure/closet/crate/C = new(get_turf(src))
// Put loot in crate
for(var/obj/O in src)
- O.loc = C
+ O.forceMove(C)
..()
/mob/living/simple_animal/hostile/mimic/crate/AttackingTarget()
@@ -143,7 +143,7 @@ var/global/list/protected_objects = list(/obj/structure/table, /obj/structure/ca
/mob/living/simple_animal/hostile/mimic/copy/death()
for(var/atom/movable/M in src)
- M.loc = get_turf(src)
+ M.forceMove(get_turf(src))
..()
/mob/living/simple_animal/hostile/mimic/copy/ListTargets()
diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm
index 67acba3fb80..45f1d61980e 100644
--- a/code/modules/mob/living/simple_animal/parrot.dm
+++ b/code/modules/mob/living/simple_animal/parrot.dm
@@ -110,7 +110,7 @@
/mob/living/simple_animal/parrot/death()
if(held_item)
- held_item.loc = src.loc
+ held_item.forceMove(src.loc)
held_item = null
walk(src,0)
..()
@@ -155,7 +155,7 @@
src.say("[pick(available_channels)] BAWWWWWK LEAVE THE HEADSET BAWKKKKK!")
else
src.say("BAWWWWWK LEAVE THE HEADSET BAWKKKKK!")
- ears.loc = src.loc
+ ears.forceMove(src.loc)
ears = null
for(var/possible_phrase in speak)
if(copytext(possible_phrase,1,3) in department_radio_keys)
@@ -186,8 +186,7 @@
var/obj/item/device/radio/headset/headset_to_add = item_to_add
- usr.drop_item()
- headset_to_add.loc = src
+ usr.drop_from_inventory(headset_to_add,src)
src.ears = headset_to_add
usr << "You fit the headset onto [src]."
@@ -408,7 +407,7 @@
else //This should ensure that we only grab the item we want, and make sure it's not already collected on our perch
if(!parrot_perch || parrot_interest.loc != parrot_perch.loc)
held_item = parrot_interest
- parrot_interest.loc = src
+ parrot_interest.forceMove(src)
visible_message("[src] grabs the [held_item]!", "You grab the [held_item]!", "You hear the sounds of wings flapping furiously.")
parrot_interest = null
@@ -427,7 +426,7 @@
return
if(in_range(src, parrot_perch))
- src.loc = parrot_perch.loc
+ src.forceMove(parrot_perch.loc)
drop_held_item()
parrot_state = PARROT_PERCH
icon_state = "parrot_sit"
@@ -581,7 +580,7 @@
continue
held_item = I
- I.loc = src
+ I.forceMove(src)
visible_message("[src] grabs the [held_item]!", "You grab the [held_item]!", "You hear the sounds of wings flapping furiously.")
return held_item
@@ -612,7 +611,7 @@
if(stolen_item)
C.remove_from_mob(stolen_item)
held_item = stolen_item
- stolen_item.loc = src
+ stolen_item.forceMove(src)
visible_message("[src] grabs the [held_item] out of [C]'s hand!", "You snag the [held_item] out of [C]'s hand!", "You hear the sounds of wings flapping furiously.")
return held_item
@@ -646,7 +645,7 @@
if(!drop_gently)
if(istype(held_item, /obj/item/weapon/grenade))
var/obj/item/weapon/grenade/G = held_item
- G.loc = src.loc
+ G.forceMove(src.loc)
G.prime()
src << "You let go of the [held_item]!"
held_item = null
@@ -654,7 +653,7 @@
src << "You drop the [held_item]."
- held_item.loc = src.loc
+ held_item.forceMove(src.loc)
held_item = null
return 1
@@ -670,7 +669,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 = "parrot_sit"
return
src << "There is no perch nearby to sit on."
diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm
index 435f5810477..3291c183036 100644
--- a/code/modules/mob/living/simple_animal/simple_animal.dm
+++ b/code/modules/mob/living/simple_animal/simple_animal.dm
@@ -514,7 +514,7 @@ mob/living/simple_animal/bullet_act(var/obj/item/projectile/Proj)
return verb
/mob/living/simple_animal/put_in_hands(var/obj/item/W) // No hands.
- W.loc = get_turf(src)
+ W.forceMove(get_turf(src))
return 1
// Harvest an animal's delicious byproducts
diff --git a/code/modules/mob/mob_grab.dm b/code/modules/mob/mob_grab.dm
index e58b8d01acd..83bcb600d54 100644
--- a/code/modules/mob/mob_grab.dm
+++ b/code/modules/mob/mob_grab.dm
@@ -210,12 +210,12 @@
shift = -10
adir = assailant.dir
affecting.set_dir(assailant.dir)
- affecting.loc = assailant.loc
+ affecting.forceMove(assailant.loc)
if(GRAB_KILL)
shift = 0
adir = 1
affecting.set_dir(SOUTH) //face up
- affecting.loc = assailant.loc
+ affecting.forceMove(assailant.loc)
switch(adir)
if(NORTH)
diff --git a/code/modules/mob/mob_grab_specials.dm b/code/modules/mob/mob_grab_specials.dm
index d40f2ecfb77..bdfdd060612 100644
--- a/code/modules/mob/mob_grab_specials.dm
+++ b/code/modules/mob/mob_grab_specials.dm
@@ -107,8 +107,6 @@
target.attack_log += text("\[[time_stamp()]\] Headbutted by [attacker.name] ([attacker.ckey])")
msg_admin_attack("[key_name(attacker)] has headbutted [key_name(target)]",ckey=key_name(attacker),ckey_target=key_name(target))
- attacker.drop_from_inventory(src)
- src.loc = null
qdel(src)
return
diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm
index da847ae536d..3c27f1c560d 100644
--- a/code/modules/mob/transform_procs.dm
+++ b/code/modules/mob/transform_procs.dm
@@ -136,7 +136,7 @@
if (sloc.name == "AI")
loc_landmark = sloc
- O.loc = loc_landmark.loc
+ O.forceMove(loc_landmark.loc)
O.on_mob_init()
@@ -181,7 +181,7 @@
else
O.key = key
- O.loc = loc
+ O.forceMove(loc)
O.job = "Cyborg"
if(O.mind.assigned_role == "Cyborg")
if(O.mind.role_alt_title == "Android")
diff --git a/code/modules/modular_computers/computers/modular_computer/hardware.dm b/code/modules/modular_computers/computers/modular_computer/hardware.dm
index 10546640abb..aa141552ed5 100644
--- a/code/modules/modular_computers/computers/modular_computer/hardware.dm
+++ b/code/modules/modular_computers/computers/modular_computer/hardware.dm
@@ -61,8 +61,7 @@
if(found)
to_chat(user, "You install \the [H] into \the [src]")
H.holder2 = src
- user.drop_from_inventory(H)
- H.forceMove(src)
+ user.drop_from_inventory(H,src)
update_icon()
// Uninstalls component. Found and Critical vars may be passed by parent types, if they have additional hardware.
diff --git a/code/modules/modular_computers/computers/modular_computer/interaction.dm b/code/modules/modular_computers/computers/modular_computer/interaction.dm
index 2e521f099cb..7ea42aec6b6 100644
--- a/code/modules/modular_computers/computers/modular_computer/interaction.dm
+++ b/code/modules/modular_computers/computers/modular_computer/interaction.dm
@@ -133,9 +133,8 @@
if(card_slot.stored_card)
to_chat(user, "You try to insert \the [I] into \the [src], but it's ID card slot is occupied.")
return
- user.drop_from_inventory(I)
+ user.drop_from_inventory(I,src)
card_slot.stored_card = I
- I.forceMove(src)
update_uis()
to_chat(user, "You insert \the [I] into \the [src].")
return
diff --git a/code/modules/modular_computers/hardware/ai_slot.dm b/code/modules/modular_computers/hardware/ai_slot.dm
index 3c99626e0e0..dad134e0228 100644
--- a/code/modules/modular_computers/hardware/ai_slot.dm
+++ b/code/modules/modular_computers/hardware/ai_slot.dm
@@ -24,9 +24,8 @@
if(stored_card)
user << "\The [src] is already occupied."
return
- user.drop_from_inventory(W)
+ user.drop_from_inventory(W,src)
stored_card = W
- W.forceMove(src)
update_power_usage()
if(isscrewdriver(W))
user << "You manually remove \the [stored_card] from \the [src]."
diff --git a/code/modules/multiz/mobile_ladders.dm b/code/modules/multiz/mobile_ladders.dm
index dc72a644317..31ac4cfa3a0 100644
--- a/code/modules/multiz/mobile_ladders.dm
+++ b/code/modules/multiz/mobile_ladders.dm
@@ -28,7 +28,7 @@
new /obj/structure/ladder/mobile(A)
- user.drop_item()
+ user.drop_from_inventory(src,get_turf(src))
qdel(src)
else if (istype(A, /turf/simulated/floor)) //Place onto Floor
@@ -46,7 +46,7 @@
new /obj/structure/ladder/mobile(upper_loc)
- user.drop_item()
+ user.drop_from_inventory(src,get_turf(src))
qdel(src)
/obj/item/weapon/ladder_mobile/afterattack(atom/A, mob/user,proximity)
diff --git a/code/modules/orbit/orbit.dm b/code/modules/orbit/orbit.dm
index 79d3df233c3..ffdec2f7e14 100644
--- a/code/modules/orbit/orbit.dm
+++ b/code/modules/orbit/orbit.dm
@@ -49,7 +49,7 @@
if (!targetloc || (!lock && orbiter.loc != lastloc && orbiter.loc != targetloc))
orbiter.stop_orbit()
return
- orbiter.loc = targetloc
+ orbiter.forceMove(targetloc)
lastloc = orbiter.loc
/atom/movable/var/datum/orbit/orbiting = null
diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm
index 3f67275dc75..e04ed4ad057 100644
--- a/code/modules/organs/organ_external.dm
+++ b/code/modules/organs/organ_external.dm
@@ -96,7 +96,7 @@
removable_objects |= I
if(removable_objects.len)
var/obj/item/I = pick(removable_objects)
- I.loc = get_turf(user) //just in case something was embedded that is not an item
+ I.forceMove(get_turf(user)) //just in case something was embedded that is not an item
if(istype(I))
if(!(user.l_hand && user.r_hand))
user.put_in_hands(I)
@@ -129,7 +129,7 @@
if(istype(W,/obj/item/weapon/hemostat))
if(contents.len)
var/obj/item/removing = pick(contents)
- removing.loc = get_turf(user.loc)
+ removing.forceMove(get_turf(user.loc))
if(!(user.l_hand && user.r_hand))
user.put_in_hands(removing)
user.visible_message("[user] extracts [removing] from [src] with [W]!")
@@ -395,7 +395,7 @@ This function completely restores a damaged organ to perfect condition.
// remove embedded objects and drop them on the floor
for(var/obj/implanted_object in implants)
if(!istype(implanted_object,/obj/item/weapon/implant)) // We don't want to remove REAL implants. Just shrapnel etc.
- implanted_object.loc = owner.loc
+ implanted_object.forceMove(owner.loc)
implants -= implanted_object
owner.updatehealth()
@@ -805,7 +805,7 @@ Note that amputating the affected organ does in fact remove the infection from t
new /obj/effect/decal/cleanable/ash(get_turf(victim))
for(var/obj/item/I in src)
if(I.w_class > 2 && !istype(I,/obj/item/organ))
- I.loc = get_turf(src)
+ I.forceMove(get_turf(src))
qdel(src)
if(DROPLIMB_BLUNT)
var/obj/effect/decal/cleanable/blood/gibs/gore = new victim.species.single_gib_type(get_turf(victim))
@@ -1034,8 +1034,9 @@ Note that amputating the affected organ does in fact remove the infection from t
W.add_blood(owner)
if(ismob(W.loc))
var/mob/living/H = W.loc
- H.drop_from_inventory(W)
- W.loc = owner
+ H.drop_from_inventory(W,owner)
+ else
+ W.forceMove(owner)
/obj/item/organ/external/removed(var/mob/living/user, var/ignore_children = 0)
@@ -1052,9 +1053,9 @@ Note that amputating the affected organ does in fact remove the infection from t
//large items and non-item objs fall to the floor, everything else stays
var/obj/item/I = implant
if(istype(I) && I.w_class < 3)
- implant.loc = get_turf(victim.loc)
+ implant.forceMove(get_turf(victim.loc))
else
- implant.loc = src
+ implant.forceMove(src)
implants.Cut()
// Attached organs also fly off.
@@ -1062,14 +1063,14 @@ Note that amputating the affected organ does in fact remove the infection from t
for(var/obj/item/organ/external/O in children)
O.removed()
if(O)
- O.loc = src
+ O.forceMove(src)
for(var/obj/item/I in O.contents)
- I.loc = src
+ I.forceMove(src)
// Grab all the internal giblets too.
for(var/obj/item/organ/organ in internal_organs)
organ.removed()
- organ.loc = src
+ organ.forceMove(src)
// Remove parent references
parent.children -= src
diff --git a/code/modules/organs/subtypes/machine.dm b/code/modules/organs/subtypes/machine.dm
index 11de83c4629..bbf3d0c8330 100644
--- a/code/modules/organs/subtypes/machine.dm
+++ b/code/modules/organs/subtypes/machine.dm
@@ -125,7 +125,7 @@
/obj/item/organ/mmi_holder/removed(var/mob/living/user)
if(stored_mmi)
- stored_mmi.loc = get_turf(src)
+ stored_mmi.forceMove(get_turf(src))
if(owner.mind)
owner.mind.transfer_to(stored_mmi.brainmob)
. = ..()
@@ -149,7 +149,7 @@
stored_mmi.icon_state = "posibrain-occupied"
update_from_mmi()
else
- stored_mmi.loc = get_turf(src)
+ stored_mmi.forceMove(get_turf(src))
qdel(src)
//////////////
diff --git a/code/modules/organs/subtypes/standard.dm b/code/modules/organs/subtypes/standard.dm
index abcb2a98958..14deee684ff 100644
--- a/code/modules/organs/subtypes/standard.dm
+++ b/code/modules/organs/subtypes/standard.dm
@@ -96,7 +96,8 @@
maim_bonus = 1
/obj/item/organ/external/foot/removed()
- if(owner) owner.drop_from_inventory(owner.shoes)
+ if(owner)
+ owner.drop_from_inventory(owner.shoes)
..()
/obj/item/organ/external/foot/right
diff --git a/code/modules/overmap/_defines.dm b/code/modules/overmap/_defines.dm
index 6d17d8e3981..080c38a51cf 100644
--- a/code/modules/overmap/_defines.dm
+++ b/code/modules/overmap/_defines.dm
@@ -91,11 +91,11 @@ proc/overmap_spacetravel(var/turf/space/T, var/atom/movable/A)
var/turf/dest = locate(nx,ny,nz)
if(dest)
- A.loc = dest
+ A.forceMove(dest)
if(istype(M, /obj/effect/map/sector/temporary))
var/obj/effect/map/sector/temporary/source = M
if (source.can_die())
testing("Catching [M] for future use")
- source.loc = null
+ source.forceMove(null)
cached_space += source
diff --git a/code/modules/paperwork/clipboard.dm b/code/modules/paperwork/clipboard.dm
index 6b63bfdf10b..fe638d15c05 100644
--- a/code/modules/paperwork/clipboard.dm
+++ b/code/modules/paperwork/clipboard.dm
@@ -49,8 +49,7 @@
/obj/item/weapon/clipboard/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/paper) || istype(W, /obj/item/weapon/photo))
- user.drop_item()
- W.loc = src
+ user.drop_from_inventory(W,src)
if(istype(W, /obj/item/weapon/paper))
toppaper = W
user << "You clip the [W] onto \the [src]."
@@ -95,7 +94,7 @@
if(href_list["pen"])
if(istype(haspen) && (haspen.loc == src))
- haspen.loc = usr.loc
+ haspen.forceMove(usr.loc)
usr.put_in_hands(haspen)
haspen = null
@@ -103,8 +102,7 @@
if(!haspen)
var/obj/item/weapon/pen/W = usr.get_active_hand()
if(istype(W, /obj/item/weapon/pen))
- usr.drop_item()
- W.loc = src
+ usr.drop_from_inventory(W,src)
haspen = W
usr << "You slot the pen into \the [src]."
@@ -124,7 +122,7 @@
if(P && (P.loc == src) && (istype(P, /obj/item/weapon/paper) || istype(P, /obj/item/weapon/photo)) )
- P.loc = usr.loc
+ P.forceMove(usr.loc)
usr.put_in_hands(P)
if(P == toppaper)
toppaper = null
diff --git a/code/modules/paperwork/faxmachine.dm b/code/modules/paperwork/faxmachine.dm
index 689cb19d89a..3fa2c7c0e75 100644
--- a/code/modules/paperwork/faxmachine.dm
+++ b/code/modules/paperwork/faxmachine.dm
@@ -123,7 +123,7 @@ var/list/admin_departments
else if(href_list["remove"])
if(copyitem)
- copyitem.loc = loc
+ copyitem.forceMove(loc)
if (get_dist(usr, src) < 2)
usr.put_in_hands(copyitem)
usr << "You take \the [copyitem] out of \the [src]."
@@ -135,17 +135,17 @@ var/list/admin_departments
if(href_list["scan"])
if (scan)
if(ishuman(usr))
- scan.loc = usr.loc
+ scan.forceMove(usr.loc)
if(!usr.get_active_hand())
usr.put_in_hands(scan)
scan = null
else
- scan.loc = src.loc
+ scan.forceMove(src.loc)
scan = null
else
var/obj/item/I = usr.get_active_hand()
if (istype(I, /obj/item/weapon/card/id) && usr.unEquip(I))
- I.loc = src
+ I.forceMove(src)
scan = I
authenticated = 0
diff --git a/code/modules/paperwork/filingcabinet.dm b/code/modules/paperwork/filingcabinet.dm
index c7b1a9852d6..96665ce8beb 100644
--- a/code/modules/paperwork/filingcabinet.dm
+++ b/code/modules/paperwork/filingcabinet.dm
@@ -31,14 +31,13 @@
. = ..()
for(var/obj/item/I in loc)
if(istype(I, /obj/item/weapon/paper) || istype(I, /obj/item/weapon/folder) || istype(I, /obj/item/weapon/photo) || istype(I, /obj/item/weapon/paper_bundle))
- I.loc = src
+ I.forceMove(src)
/obj/structure/filingcabinet/attackby(obj/item/P as obj, mob/user as mob)
if(istype(P, /obj/item/weapon/paper) || istype(P, /obj/item/weapon/folder) || istype(P, /obj/item/weapon/photo) || istype(P, /obj/item/weapon/paper_bundle))
user << "You put [P] in [src]."
- user.drop_item()
- P.loc = src
+ user.drop_from_inventory(P,src)
icon_state = "[initial(icon_state)]-open"
sleep(5)
icon_state = initial(icon_state)
@@ -75,7 +74,7 @@
if(contents.len)
if(prob(40 + contents.len * 5))
var/obj/item/I = pick(contents)
- I.loc = loc
+ I.forceMove(loc)
if(prob(25))
step_rand(I)
user << "You pull \a [I] out of [src] at random."
diff --git a/code/modules/paperwork/folders.dm b/code/modules/paperwork/folders.dm
index c1c6a14542e..dda346d96b7 100644
--- a/code/modules/paperwork/folders.dm
+++ b/code/modules/paperwork/folders.dm
@@ -37,8 +37,7 @@
/obj/item/weapon/folder/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/paper) || istype(W, /obj/item/weapon/photo) || istype(W, /obj/item/weapon/paper_bundle))
- user.drop_item()
- W.loc = src
+ user.drop_from_inventory(W,src)
user << "You put the [W] into \the [src]."
update_icon()
else if(istype(W, /obj/item/weapon/pen))
@@ -71,7 +70,7 @@
if(href_list["remove"])
var/obj/item/P = locate(href_list["remove"])
if(P && (P.loc == src) && istype(P))
- P.loc = usr.loc
+ P.forceMove(usr.loc)
usr.put_in_hands(P)
else if(href_list["read"])
diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm
index d44a4108da8..e498b0d3306 100644
--- a/code/modules/paperwork/paper.dm
+++ b/code/modules/paperwork/paper.dm
@@ -322,10 +322,6 @@
if(get_dist(src, user) < 2 && user.get_active_hand() == P)
user.visible_message("[user] burns right through \the [src], turning it to ash. It flutters through the air before settling on the floor in a heap.", \
"You burn right through \the [src], turning it to ash. It flutters through the air before settling on the floor in a heap.")
-
- if(user.get_inactive_hand() == src)
- user.drop_from_inventory(src)
-
new /obj/effect/decal/cleanable/ash(src.loc)
qdel(src)
@@ -419,7 +415,8 @@
B.name = name
else if (P.name != "paper" && P.name != "photo")
B.name = P.name
- user.drop_from_inventory(P)
+ user.drop_from_inventory(P,B)
+ //TODO: Look into this stuff
if (istype(user, /mob/living/carbon/human))
var/mob/living/carbon/human/h_user = user
if (h_user.r_hand == src)
@@ -430,13 +427,13 @@
h_user.put_in_l_hand(B)
else if (h_user.l_store == src)
h_user.drop_from_inventory(src)
- B.loc = h_user
+ B.forceMove(h_user)
B.layer = 20
h_user.l_store = B
h_user.update_inv_pockets()
else if (h_user.r_store == src)
h_user.drop_from_inventory(src)
- B.loc = h_user
+ B.forceMove(h_user)
B.layer = 20
h_user.r_store = B
h_user.update_inv_pockets()
@@ -444,12 +441,11 @@
h_user.u_equip(src)
h_user.put_in_hands(B)
else if (!istype(src.loc, /turf))
- src.loc = get_turf(h_user)
+ src.forceMove(get_turf(h_user))
if(h_user.client) h_user.client.screen -= src
h_user.put_in_hands(B)
user << "You clip the [P.name] to [(src.name == "paper") ? "the paper" : src.name]."
- src.loc = B
- P.loc = B
+ src.forceMove(B)
B.pages.Add(src)
B.pages.Add(P)
diff --git a/code/modules/paperwork/paper_bundle.dm b/code/modules/paperwork/paper_bundle.dm
index 1abd9fdfa41..fd26ccbe525 100644
--- a/code/modules/paperwork/paper_bundle.dm
+++ b/code/modules/paperwork/paper_bundle.dm
@@ -34,9 +34,8 @@
// merging bundles
else if(istype(W, /obj/item/weapon/paper_bundle))
- user.drop_from_inventory(W)
for(var/obj/O in W)
- O.loc = src
+ O.forceMove(src)
O.add_fingerprint(usr)
pages.Add(O)
amount++
@@ -62,8 +61,7 @@
else if(istype(sheet, /obj/item/weapon/photo))
user << "You add [(sheet.name == "photo") ? "the photo" : sheet.name] to [(src.name == "paper bundle") ? "the paper bundle" : src.name]."
- user.drop_from_inventory(sheet)
- sheet.loc = src
+ user.drop_from_inventory(sheet,src)
pages.Insert(index, sheet)
@@ -84,10 +82,6 @@
if(get_dist(src, user) < 2 && user.get_active_hand() == P && P.lit)
user.visible_message("[user] burns right through \the [src], turning it to ash. It flutters through the air before settling on the floor in a heap.", \
"You burn right through \the [src], turning it to ash. It flutters through the air before settling on the floor in a heap.")
-
- if(user.get_inactive_hand() == src)
- user.drop_from_inventory(src)
-
new /obj/effect/decal/cleanable/ash(src.loc)
qdel(src)
@@ -169,10 +163,8 @@
if(pages.len <= 1)
var/obj/item/weapon/paper/P = src[1]
- usr.drop_from_inventory(src)
usr.put_in_hands(P)
qdel(src)
-
return
if(page > pages.len)
@@ -204,10 +196,9 @@
usr << "You loosen the bundle."
for(var/obj/O in src)
- O.loc = usr.loc
+ O.forceMove(usr.loc)
O.layer = initial(O.layer)
O.add_fingerprint(usr)
- usr.drop_from_inventory(src)
qdel(src)
return
diff --git a/code/modules/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm
index 0d5fbf9e3c7..3bfc0aa8bd3 100644
--- a/code/modules/paperwork/paperbin.dm
+++ b/code/modules/paperwork/paperbin.dm
@@ -65,7 +65,7 @@
else if (response == "Carbon-Copy")
P = new /obj/item/weapon/paper/carbon
- P.loc = user.loc
+ P.forceMove(user.loc)
user.put_in_hands(P)
user << "You take [P] out of the [src]."
else
@@ -78,17 +78,16 @@
/obj/item/weapon/paper_bin/attackby(obj/item/weapon/O as obj, mob/user as mob)
if(istype(O, /obj/item/weapon/paper))
var/obj/item/weapon/paper/i = O
- user.drop_item()
- i.loc = src
+ user.drop_from_inventory(i,src)
user << "You put [i] in [src]."
papers.Add(i)
amount++
/* if(istype(O, /obj/item/weapon/paper_pack)) WIP written in.
var/obj/item/weapon/paper_bundle/j = O
- user.drop_item()
amount += j.amount
user << "You add paper from [j] into [src]."
- del(j)
+ user.drop_from_inventory(j,get_turf(src))
+ qdel(j)
*/
diff --git a/code/modules/paperwork/papershredder.dm b/code/modules/paperwork/papershredder.dm
index a03139b4855..3e301a820d1 100644
--- a/code/modules/paperwork/papershredder.dm
+++ b/code/modules/paperwork/papershredder.dm
@@ -45,14 +45,13 @@
return
if (paper_result > 0)
paperamount += paper_result
- user.drop_from_inventory(W)
qdel(W)
playsound(src.loc, 'sound/items/pshred.ogg', 75, 1)
if(paperamount > max_paper)
user <<"\The [src] was too full, and shredded paper goes everywhere!"
for(var/i=(paperamount-max_paper);i>0;i--)
var/obj/item/weapon/shreddedp/SP = get_shredded_paper()
- SP.loc = get_turf(src)
+ SP.forceMove(get_turf(src))
SP.throw_at(get_edge_target_turf(src,pick(alldirs)),1,5)
paperamount = max_paper
update_icon()
@@ -131,9 +130,6 @@
FireBurn()
/obj/item/weapon/shreddedp/proc/FireBurn()
- var/mob/living/M = loc
- if(istype(M))
- M.drop_from_inventory(src)
new /obj/effect/decal/cleanable/ash(get_turf(src))
qdel(src)
diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm
index 9c3d264795b..6f66808edcb 100644
--- a/code/modules/paperwork/photocopier.dm
+++ b/code/modules/paperwork/photocopier.dm
@@ -65,7 +65,7 @@
updateUsrDialog()
else if(href_list["remove"])
if(copyitem)
- copyitem.loc = usr.loc
+ copyitem.forceMove(usr.loc)
usr.put_in_hands(copyitem)
usr << "You take \the [copyitem] out of \the [src]."
copyitem = null
@@ -104,9 +104,8 @@
/obj/machinery/photocopier/attackby(obj/item/O as obj, mob/user as mob)
if(istype(O, /obj/item/weapon/paper) || istype(O, /obj/item/weapon/photo) || istype(O, /obj/item/weapon/paper_bundle))
if(!copyitem)
- user.drop_item()
+ user.drop_from_inventory(O,src)
copyitem = O
- O.loc = src
user << "You insert \the [O] into \the [src]."
flick(insert_anim, src)
updateUsrDialog()
@@ -114,10 +113,10 @@
user << "There is already something in \the [src]."
else if(istype(O, /obj/item/device/toner))
if(toner <= 10) //allow replacing when low toner is affecting the print darkness
- user.drop_item()
- user << "You insert the toner cartridge into \the [src]."
+ user << "You insert \the [O] into \the [src]."
var/obj/item/device/toner/T = O
toner += T.toner_amount
+ user.drop_from_inventory(O,get_turf(src))
qdel(O)
updateUsrDialog()
else
@@ -191,7 +190,7 @@
/obj/machinery/photocopier/proc/photocopy(var/obj/item/weapon/photo/photocopy)
var/obj/item/weapon/photo/p = photocopy.copy()
- p.loc = src.loc
+ p.forceMove(src.loc)
var/icon/I = icon(photocopy.icon, photocopy.icon_state)
if(toner > 10) //plenty of toner, go straight greyscale
@@ -223,10 +222,10 @@
W = copy(W)
else if(istype(W, /obj/item/weapon/photo))
W = photocopy(W)
- W.loc = p
+ W.forceMove(p)
p.pages += W
- p.loc = src.loc
+ p.forceMove(src.loc)
p.update_icon()
p.icon_state = "paper_words"
p.name = bundle.name
diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm
index 5c77626b075..dd1db92518b 100644
--- a/code/modules/paperwork/photography.dm
+++ b/code/modules/paperwork/photography.dm
@@ -158,7 +158,7 @@ var/global/photo_count = 0
user << "[src] still has some film in it!"
return
user << "You insert [I] into [src]."
- user.drop_item()
+ user.drop_from_inventory(I,get_turf(src))
qdel(I)
pictures_left = pictures_max
return
@@ -250,7 +250,7 @@ var/global/photo_count = 0
return p
/obj/item/device/camera/proc/printpicture(mob/user, obj/item/weapon/photo/p)
- p.loc = user.loc
+ p.forceMove(user.loc)
if(!user.get_inactive_hand())
user.put_in_inactive_hand(p)
diff --git a/code/modules/paperwork/silicon_photography.dm b/code/modules/paperwork/silicon_photography.dm
index ad9d69e362e..8c45f289f9d 100644
--- a/code/modules/paperwork/silicon_photography.dm
+++ b/code/modules/paperwork/silicon_photography.dm
@@ -16,7 +16,7 @@
name = "Drone photo camera"
/obj/item/device/camera/siliconcam/proc/injectaialbum(obj/item/weapon/photo/p, var/sufix = "") //stores image information to a list similar to that of the datacore
- p.loc = src
+ p.forceMove(src)
photos_taken++
p.name = "Image [photos_taken][sufix]"
aipictures += p
diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm
index b7ed8d0a3d7..81f79d11f43 100644
--- a/code/modules/power/apc.dm
+++ b/code/modules/power/apc.dm
@@ -482,12 +482,11 @@
user << "\The [W] is too [W.w_class < 3? "small" : "large"] to fit here."
return
- user.drop_item(src)
- W.forceMove(src)
+ user.drop_from_inventory(W,src)
cell = W
user.visible_message(\
- "[user.name] has inserted the power cell to [src.name]!",\
- "You insert the power cell.")
+ "[user.name] has inserted \the [cell] to [src.name]!",\
+ "You insert \the [cell].")
chargecount = 0
update_icon()
else if (isscrewdriver(W)) // haxing
diff --git a/code/modules/power/batteryrack.dm b/code/modules/power/batteryrack.dm
index 07fca92467d..838c9c6b573 100644
--- a/code/modules/power/batteryrack.dm
+++ b/code/modules/power/batteryrack.dm
@@ -63,7 +63,7 @@
M.state = 2
M.icon_state = "box_1"
for(var/obj/I in component_parts)
- I.loc = src.loc
+ I.forceMove(src.loc)
qdel(src)
return 1
else
@@ -73,9 +73,8 @@
else if ((istype(W, /obj/item/weapon/stock_parts/capacitor) && (capacitors_amount < 5)) || (istype(W, /obj/item/weapon/cell) && (cells_amount < 5)))
if (charge < (capacity / 100))
if (!output_attempt && !input_attempt)
- user.drop_item()
+ user.drop_from_inventory(W,src)
component_parts += W
- W.loc = src
RefreshParts()
user << "You upgrade the [src] with [W.name]."
else
diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm
index 920862033ac..3a72f38214d 100644
--- a/code/modules/power/cell.dm
+++ b/code/modules/power/cell.dm
@@ -106,6 +106,7 @@
else if(istype(W, /obj/item/device/assembly_holder))
var/obj/item/device/assembly_holder/assembly = W
if (istype(assembly.a_left, /obj/item/device/assembly/signaler) && istype(assembly.a_right, /obj/item/device/assembly/signaler))
+ //TODO: Look into this bad code
user.drop_item()
user.drop_from_inventory(src)
diff --git a/code/modules/power/lights/fixtures.dm b/code/modules/power/lights/fixtures.dm
index 75300aed7e1..04184209103 100644
--- a/code/modules/power/lights/fixtures.dm
+++ b/code/modules/power/lights/fixtures.dm
@@ -306,7 +306,7 @@
update()
- user.drop_item() //drop the item to update overlays and such
+ user.drop_from_inventory(L,get_turf(src))
qdel(L)
if(!stat && rigged)
@@ -500,7 +500,7 @@
L.update()
L.add_fingerprint(user)
- L.loc = loc
+ L.forceMove(loc)
inserted_light = null
diff --git a/code/modules/power/pacman2.dm b/code/modules/power/pacman2.dm
index 379e2525355..3f55fe93095 100644
--- a/code/modules/power/pacman2.dm
+++ b/code/modules/power/pacman2.dm
@@ -72,8 +72,7 @@
user << "The generator already has a phoron tank loaded!"
return
P = O
- user.drop_item()
- O.loc = src
+ user.drop_from_inventory(O,src)
user << "You add the phoron tank to the generator."
else if(!active)
if(iswrench(O))
@@ -94,7 +93,7 @@
else if(iscrowbar(O) && !open)
var/obj/machinery/constructable_frame/machine_frame/new_frame = new /obj/machinery/constructable_frame/machine_frame(src.loc)
for(var/obj/item/I in component_parts)
- I.loc = src.loc
+ I.forceMove(src.loc)
new_frame.state = 2
new_frame.icon_state = "box_1"
qdel(src)
diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm
index 72774f783c4..ed04e149973 100644
--- a/code/modules/power/port_gen.dm
+++ b/code/modules/power/port_gen.dm
@@ -289,7 +289,7 @@
else if(iscrowbar(O) && open)
var/obj/machinery/constructable_frame/machine_frame/new_frame = new /obj/machinery/constructable_frame/machine_frame(src.loc)
for(var/obj/item/I in component_parts)
- I.loc = src.loc
+ I.forceMove(src.loc)
while ( sheets > 0 )
DropFuel()
diff --git a/code/modules/power/singularity/collector.dm b/code/modules/power/singularity/collector.dm
index de4608b1962..c14ad9eb8d7 100644
--- a/code/modules/power/singularity/collector.dm
+++ b/code/modules/power/singularity/collector.dm
@@ -62,9 +62,8 @@ var/global/list/rad_collectors = list()
if(src.P)
user << "There's already a phoron tank loaded."
return 1
- user.drop_item()
+ user.drop_from_inventory(W,src)
src.P = W
- W.loc = src
update_icons()
return 1
else if(iscrowbar(W))
@@ -115,7 +114,7 @@ var/global/list/rad_collectors = list()
var/obj/item/weapon/tank/phoron/Z = src.P
if (!Z)
return
- Z.loc = get_turf(src)
+ Z.forceMove(get_turf(src))
Z.layer = initial(Z.layer)
src.P = null
if(active)
diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm
index 5d769a5fced..a20cb67e888 100644
--- a/code/modules/power/singularity/field_generator.dm
+++ b/code/modules/power/singularity/field_generator.dm
@@ -268,7 +268,7 @@ field_generator power level display
CF.set_master(src,G)
fields += CF
G.fields += CF
- CF.loc = T
+ CF.forceMove(T)
CF.set_dir(field_dir)
var/listcheck = 0
for(var/obj/machinery/field_generator/FG in connected_gens)
diff --git a/code/modules/power/singularity/particle_accelerator/particle.dm b/code/modules/power/singularity/particle_accelerator/particle.dm
index 63dc3d21ea7..f4e1344cf53 100644
--- a/code/modules/power/singularity/particle_accelerator/particle.dm
+++ b/code/modules/power/singularity/particle_accelerator/particle.dm
@@ -28,7 +28,7 @@
/obj/effect/accelerated_particle/New(loc, dir = 2)
- src.loc = loc
+ src.forceMove(loc)
src.set_dir(dir)
if(movement_range > 20)
movement_range = 20
@@ -70,15 +70,15 @@
if(target)
if(movetotarget)
if(!step_towards(src,target))
- src.loc = get_step(src, get_dir(src,target))
+ src.forceMove(get_step(src, get_dir(src,target)))
if(get_dist(src,target) < 1)
movetotarget = 0
else
if(!step(src, get_step_away(src,source)))
- src.loc = get_step(src, get_step_away(src,source))
+ src.forceMove(get_step(src, get_step_away(src,source)))
else
if(!step(src,dir))
- src.loc = get_step(src,dir)
+ src.forceMove(get_step(src,dir))
movement_range--
if(movement_range <= 0)
qdel(src)
diff --git a/code/modules/power/smes_construction.dm b/code/modules/power/smes_construction.dm
index 5871e3cfbfa..23c54363bc4 100644
--- a/code/modules/power/smes_construction.dm
+++ b/code/modules/power/smes_construction.dm
@@ -353,7 +353,7 @@
M.state = 2
M.icon_state = "box_1"
for(var/obj/I in component_parts)
- I.loc = src.loc
+ I.forceMove(src.loc)
component_parts -= I
qdel(src)
return
@@ -367,10 +367,9 @@
return
usr << "You install the coil into the SMES unit!"
- user.drop_item()
+ user.drop_from_inventory(W,src)
cur_coils ++
component_parts += W
- W.loc = src
recalc_coils()
else
usr << "You can't insert more coils to this SMES unit!"
diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm
index a392ea044f9..e7056bdcf22 100644
--- a/code/modules/power/solar.dm
+++ b/code/modules/power/solar.dm
@@ -50,7 +50,7 @@
S = new /obj/item/solar_assembly(src)
S.glass_type = /obj/item/stack/material/glass
S.anchored = 1
- S.loc = src
+ S.forceMove(src)
if(S.glass_type == /obj/item/stack/material/glass/reinforced) //if the panel is in reinforced glass
health *= 2 //this need to be placed here, because panels already on the map don't have an assembly linked to
update_icon()
@@ -65,7 +65,7 @@
if(do_after(user, 50))
var/obj/item/solar_assembly/S = locate() in src
if(S)
- S.loc = src.loc
+ S.forceMove(src.loc)
S.give_glass()
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
user.visible_message("[user] takes the glass off the solar panel.")
@@ -254,7 +254,7 @@
if(!tracker)
if(istype(W, /obj/item/weapon/tracker_electronics))
tracker = 1
- user.drop_item()
+ user.drop_from_inventory(W,get_turf(src))
qdel(W)
user.visible_message("[user] inserts the electronics into the solar assembly.")
return 1
@@ -407,7 +407,7 @@
new /obj/item/weapon/material/shard( src.loc )
var/obj/item/weapon/circuitboard/solar_control/M = new /obj/item/weapon/circuitboard/solar_control( A )
for (var/obj/C in src)
- C.loc = src.loc
+ C.forceMove(src.loc)
A.circuit = M
A.state = 3
A.icon_state = "3"
@@ -418,7 +418,7 @@
var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc )
var/obj/item/weapon/circuitboard/solar_control/M = new /obj/item/weapon/circuitboard/solar_control( A )
for (var/obj/C in src)
- C.loc = src.loc
+ C.forceMove(src.loc)
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 66d3fcd6261..dba21204c1e 100644
--- a/code/modules/power/tracker.dm
+++ b/code/modules/power/tracker.dm
@@ -44,7 +44,7 @@
S.glass_type = /obj/item/stack/material/glass
S.tracker = 1
S.anchored = 1
- S.loc = src
+ S.forceMove(src)
update_icon()
//updates the tracker icon and the facing angle for the control computer
@@ -65,7 +65,7 @@
if(do_after(user, 50))
var/obj/item/solar_assembly/S = locate() in src
if(S)
- S.loc = src.loc
+ S.forceMove(src.loc)
S.give_glass()
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
user.visible_message("[user] takes the glass off the tracker.")
diff --git a/code/modules/power/turbine.dm b/code/modules/power/turbine.dm
index 333c3826778..5e19489e971 100644
--- a/code/modules/power/turbine.dm
+++ b/code/modules/power/turbine.dm
@@ -237,7 +237,7 @@
new /obj/item/weapon/material/shard( src.loc )
var/obj/item/weapon/circuitboard/turbine_control/M = new /obj/item/weapon/circuitboard/turbine_control( A )
for (var/obj/C in src)
- C.loc = src.loc
+ C.forceMove(src.loc)
M.id = src.id
A.circuit = M
A.state = 3
@@ -249,7 +249,7 @@
var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc )
var/obj/item/weapon/circuitboard/turbine_control/M = new /obj/item/weapon/circuitboard/turbine_control( A )
for (var/obj/C in src)
- C.loc = src.loc
+ C.forceMove(src.loc)
M.id = src.id
A.circuit = M
A.state = 4
diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm
index 22ff91acea5..3950f845fc3 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -708,9 +708,8 @@ obj/item/weapon/gun/Destroy()
to_chat(user, "There is a bayonet attached to \the [src] already.")
return
- user.drop_from_inventory(I)
+ user.drop_from_inventory(I,src)
bayonet = I
- I.forceMove(src)
to_chat(user, "You attach \the [I] to the front of \the [src].")
update_icon()
diff --git a/code/modules/projectiles/guns/launcher.dm b/code/modules/projectiles/guns/launcher.dm
index 80412f0beeb..7e7d8c032a9 100644
--- a/code/modules/projectiles/guns/launcher.dm
+++ b/code/modules/projectiles/guns/launcher.dm
@@ -24,6 +24,6 @@
/obj/item/weapon/gun/launcher/process_projectile(obj/item/projectile, mob/user, atom/target, var/target_zone, var/params=null, var/pointblank=0, var/reflex=0)
update_release_force(projectile)
- projectile.loc = get_turf(user)
+ projectile.forceMove(get_turf(user))
projectile.throw_at(target, throw_distance, release_force, user)
return 1
diff --git a/code/modules/projectiles/guns/launcher/crossbow.dm b/code/modules/projectiles/guns/launcher/crossbow.dm
index 577c12104a9..1511a384cb8 100644
--- a/code/modules/projectiles/guns/launcher/crossbow.dm
+++ b/code/modules/projectiles/guns/launcher/crossbow.dm
@@ -42,7 +42,7 @@
if(throwforce == 15) // The rod has been superheated - we don't want it to be useable when removed from the bow.
user << "[src] shatters into a scattering of overstressed metal shards as it leaves the crossbow."
var/obj/item/weapon/material/shard/shrapnel/S = new()
- S.loc = get_turf(src)
+ S.forceMove(get_turf(src))
qdel(src)
/obj/item/weapon/gun/launcher/crossbow
@@ -83,7 +83,7 @@
if(tension)
if(bolt)
user.visible_message("[user] relaxes the tension on [src]'s string and removes [bolt].","You relax the tension on [src]'s string and remove [bolt].")
- bolt.loc = get_turf(src)
+ bolt.forceMove(get_turf(src))
var/obj/item/weapon/arrow/A = bolt
bolt = null
A.removed(user)
@@ -147,7 +147,7 @@
if (R.use(1))
bolt = new /obj/item/weapon/arrow/rod(src)
bolt.fingerprintslast = src.fingerprintslast
- bolt.loc = src
+ bolt.forceMove(src)
update_icon()
user.visible_message("[user] jams [bolt] into [src].","You jam [bolt] into [src].")
superheat_rod(user)
@@ -155,9 +155,8 @@
if(istype(W, /obj/item/weapon/cell))
if(!cell)
- user.drop_item()
+ user.drop_from_inventory(cell,src)
cell = W
- cell.loc = src
user << "You jam [cell] into [src] and wire it to the firing coil."
superheat_rod(user)
else
@@ -166,7 +165,7 @@
else if(isscrewdriver(W))
if(cell)
var/obj/item/C = cell
- C.loc = get_turf(user)
+ C.forceMove(get_turf(user))
user << "You jimmy [cell] out of [src] with [W]."
cell = null
else
diff --git a/code/modules/projectiles/guns/launcher/grenade_launcher.dm b/code/modules/projectiles/guns/launcher/grenade_launcher.dm
index 99b99fa85ce..cd1ed76767b 100644
--- a/code/modules/projectiles/guns/launcher/grenade_launcher.dm
+++ b/code/modules/projectiles/guns/launcher/grenade_launcher.dm
@@ -55,7 +55,7 @@
user << "[src] is full."
return
user.remove_from_mob(G)
- G.loc = src
+ G.forceMove(src)
grenades.Insert(1, G) //add to the head of the list, so that it is loaded on the next pump
user.visible_message("[user] inserts \a [G] into [src].", "You insert \a [G] into [src].")
@@ -117,7 +117,7 @@
user << "[src] is already loaded."
return
user.remove_from_mob(G)
- G.loc = src
+ G.forceMove(src)
chambered = G
user.visible_message("[user] load \a [G] into [src].", "You load \a [G] into [src].")
diff --git a/code/modules/projectiles/guns/launcher/pneumatic.dm b/code/modules/projectiles/guns/launcher/pneumatic.dm
index bac888c4521..727f51dd718 100644
--- a/code/modules/projectiles/guns/launcher/pneumatic.dm
+++ b/code/modules/projectiles/guns/launcher/pneumatic.dm
@@ -162,7 +162,6 @@
/obj/item/weapon/cannonframe/attackby(obj/item/W as obj, mob/user as mob)
if(istype(W,/obj/item/pipe))
if(buildstate == 0)
- user.drop_from_inventory(W)
qdel(W)
user << "You secure the piping inside the frame."
buildstate++
@@ -180,7 +179,6 @@
return
else if(istype(W,/obj/item/device/transfer_valve))
if(buildstate == 4)
- user.drop_from_inventory(W)
qdel(W)
user << "You install the transfer valve and connect it to the piping."
buildstate++
diff --git a/code/modules/projectiles/guns/launcher/rocket.dm b/code/modules/projectiles/guns/launcher/rocket.dm
index c74844d7e53..d8c363add4c 100644
--- a/code/modules/projectiles/guns/launcher/rocket.dm
+++ b/code/modules/projectiles/guns/launcher/rocket.dm
@@ -26,8 +26,7 @@
/obj/item/weapon/gun/launcher/rocket/attackby(obj/item/I as obj, mob/user as mob)
if(istype(I, /obj/item/ammo_casing/rocket))
if(rockets.len < max_rockets)
- user.drop_item()
- I.loc = src
+ user.drop_from_inventory(I,src)
rockets += I
user << "You put the rocket in [src]."
user << "[rockets.len] / [max_rockets] rockets."
diff --git a/code/modules/projectiles/guns/launcher/syringe_gun.dm b/code/modules/projectiles/guns/launcher/syringe_gun.dm
index 93236d98bab..f1a150b8f3f 100644
--- a/code/modules/projectiles/guns/launcher/syringe_gun.dm
+++ b/code/modules/projectiles/guns/launcher/syringe_gun.dm
@@ -23,7 +23,7 @@
syringe = I
user << "You carefully insert [syringe] into [src]."
user.remove_from_mob(syringe)
- syringe.loc = src
+ syringe.forceMove(src)
sharp = 1
name = "syringe dart"
update_icon()
@@ -126,7 +126,7 @@
user << "[src] is full!"
return
user.remove_from_mob(C)
- C.loc = src
+ C.forceMove(src)
darts += C //add to the end
user.visible_message("[user] inserts \a [C] into [src].", "You insert \a [C] into [src].")
else
diff --git a/code/modules/projectiles/guns/projectile.dm b/code/modules/projectiles/guns/projectile.dm
index 2160c6e15c0..96ce7011d90 100644
--- a/code/modules/projectiles/guns/projectile.dm
+++ b/code/modules/projectiles/guns/projectile.dm
@@ -96,7 +96,7 @@
switch(handle_casings)
if(EJECT_CASINGS) //eject casing onto ground.
- chambered.loc = get_turf(src)
+ chambered.forceMove(get_turf(src))
if(CYCLE_CASINGS) //cycle the casing back to the end.
if(ammo_magazine)
ammo_magazine.stored_ammo += chambered
@@ -121,7 +121,7 @@
user << "[src] already has a magazine loaded." //already a magazine here
return
user.remove_from_mob(AM)
- AM.loc = src
+ AM.forceMove(src)
ammo_magazine = AM
user.visible_message("[user] inserts [AM] into [src].", "You insert [AM] into [src].")
playsound(src.loc, 'sound/weapons/flipblade.ogg', 50, 1)
@@ -134,7 +134,7 @@
if(loaded.len >= max_shells)
break
if(C.caliber == caliber)
- C.loc = src
+ C.forceMove(src)
loaded += C
AM.stored_ammo -= C //should probably go inside an ammo_magazine proc, but I guess less proc calls this way...
count++
@@ -151,7 +151,7 @@
return
user.remove_from_mob(C)
- C.loc = src
+ C.forceMove(src)
loaded.Insert(1, C) //add to the head of the list
user.visible_message("[user] inserts \a [C] into [src].", "You insert \a [C] into [src].")
playsound(src.loc, 'sound/weapons/empty.ogg', 50, 1)
@@ -173,7 +173,7 @@
var/turf/T = get_turf(user)
if(T)
for(var/obj/item/ammo_casing/C in loaded)
- C.loc = T
+ C.forceMove(T)
count++
loaded.Cut()
if(count)
@@ -212,7 +212,7 @@
/obj/item/weapon/gun/projectile/afterattack(atom/A, mob/living/user)
..()
if(auto_eject && ammo_magazine && ammo_magazine.stored_ammo && !ammo_magazine.stored_ammo.len)
- ammo_magazine.loc = get_turf(src.loc)
+ ammo_magazine.forceMove(get_turf(src.loc))
user.visible_message(
"[ammo_magazine] falls out and clatters on the floor!",
"[ammo_magazine] falls out and clatters on the floor!"
diff --git a/code/modules/projectiles/guns/projectile/dartgun.dm b/code/modules/projectiles/guns/projectile/dartgun.dm
index 2f35826483b..33dd119f9cd 100644
--- a/code/modules/projectiles/guns/projectile/dartgun.dm
+++ b/code/modules/projectiles/guns/projectile/dartgun.dm
@@ -112,8 +112,7 @@
user << "[src] already has [max_beakers] beakers in it - another one isn't going to fit!"
return
var/obj/item/weapon/reagent_containers/glass/beaker/B = I
- user.drop_item()
- B.loc = src
+ user.drop_from_inventory(B,src)
beakers += B
user << "You slot [B] into [src]."
src.updateUsrDialog()
@@ -189,7 +188,7 @@
usr << "You remove [B] from [src]."
mixing -= B
beakers -= B
- B.loc = get_turf(src)
+ B.forceMove(get_turf(src))
else if (href_list["eject_cart"])
unload_ammo(usr)
src.updateUsrDialog()
diff --git a/code/modules/projectiles/guns/projectile/improvised.dm b/code/modules/projectiles/guns/projectile/improvised.dm
index e86b34b9c7b..ef70c822bb0 100644
--- a/code/modules/projectiles/guns/projectile/improvised.dm
+++ b/code/modules/projectiles/guns/projectile/improvised.dm
@@ -101,7 +101,6 @@
/obj/item/weapon/receivergun/attackby(obj/item/W as obj, mob/user as mob)
if(istype(W,/obj/item/pipe))
if(buildstate == 0)
- user.drop_from_inventory(W)
qdel(W)
user << "You place the pipe and the receiver together."
buildstate++
@@ -109,7 +108,6 @@
return
else if(istype(W,/obj/item/weapon/stock))
if(buildstate == 1)
- user.drop_from_inventory(W)
qdel(W)
user << "You add the stock to the assembly."
buildstate++
@@ -117,7 +115,6 @@
return
else if(istype(W,/obj/item/weapon/tape_roll))
if(buildstate == 2)
- user.drop_from_inventory(W)
qdel(W)
user << "You strap the pieces together with tape."
buildstate++
@@ -185,7 +182,6 @@
return
else if(istype(W,/obj/item/weapon/receivergun))
if(buildstate == 1)
- user.drop_from_inventory(W)
qdel(W)
user << "You add the receiver to the assembly."
buildstate++
@@ -193,7 +189,6 @@
return
else if(istype(W,/obj/item/pipe))
if(buildstate == 2)
- user.drop_from_inventory(W)
qdel(W)
user << "You strap the pipe to the assembly."
buildstate++
diff --git a/code/modules/projectiles/guns/projectile/minigun.dm b/code/modules/projectiles/guns/projectile/minigun.dm
index dbe4e0658a4..fa8645c9cd6 100644
--- a/code/modules/projectiles/guns/projectile/minigun.dm
+++ b/code/modules/projectiles/guns/projectile/minigun.dm
@@ -31,7 +31,7 @@
ammo_magazine = new magazine_type(src)
gun.magazine_type = ammo_magazine
gun.ammo_magazine = ammo_magazine
- gun.loc = src
+ gun.forceMove(src)
/obj/item/minigunpack/proc/make_gun()
return new /obj/item/weapon/gun/projectile/automatic/rifle/minigun()
diff --git a/code/modules/projectiles/guns/projectile/pistol.dm b/code/modules/projectiles/guns/projectile/pistol.dm
index 9123be62a02..e78496d65bd 100644
--- a/code/modules/projectiles/guns/projectile/pistol.dm
+++ b/code/modules/projectiles/guns/projectile/pistol.dm
@@ -215,11 +215,10 @@
if(user.l_hand != src && user.r_hand != src) //if we're not in his hands
user << "You'll need [src] in your hands to do that."
return
- user.drop_item()
+ user.drop_from_inventory(I,src)
user << "You screw [I] onto [src]."
silenced = I //dodgy?
w_class = 3
- I.loc = src //put the silencer into the gun
update_icon()
return
..()
diff --git a/code/modules/projectiles/guns/projectile/rifle.dm b/code/modules/projectiles/guns/projectile/rifle.dm
index 2e04d440648..2d62de43cbd 100644
--- a/code/modules/projectiles/guns/projectile/rifle.dm
+++ b/code/modules/projectiles/guns/projectile/rifle.dm
@@ -72,7 +72,7 @@
/obj/item/weapon/gun/projectile/contender/attack_self(mob/user as mob)
if(chambered)
- chambered.loc = get_turf(src)
+ chambered.forceMove(get_turf(src))
chambered = null
var/obj/item/ammo_casing/C = loaded[1]
loaded -= C
@@ -165,7 +165,7 @@
if(chambered)//We have a shell in the chamber
- chambered.loc = get_turf(src)//Eject casing
+ chambered.forceMove(get_turf(src))//Eject casing
chambered = null
if(loaded.len)
@@ -181,8 +181,7 @@
user << "You need to open the bolt of \the [src] first."
return
if(!has_clip)
- user.drop_from_inventory(A)
- A.forceMove(src)
+ user.drop_from_inventory(A,src)
has_clip = A
user << "You load the clip into \the [src]."
if(!has_clip.stored_ammo.len)
diff --git a/code/modules/projectiles/guns/projectile/sniper.dm b/code/modules/projectiles/guns/projectile/sniper.dm
index 2f9383c8269..3f7cc2e5813 100644
--- a/code/modules/projectiles/guns/projectile/sniper.dm
+++ b/code/modules/projectiles/guns/projectile/sniper.dm
@@ -58,7 +58,7 @@
if(bolt_open)
if(chambered)
user << "You work the bolt open, ejecting [chambered]!"
- chambered.loc = get_turf(src)
+ chambered.forceMove(get_turf(src))
loaded -= chambered
chambered = null
else
diff --git a/code/modules/projectiles/modular/laser_base.dm b/code/modules/projectiles/modular/laser_base.dm
index e08e791c37c..97c2befeda6 100644
--- a/code/modules/projectiles/modular/laser_base.dm
+++ b/code/modules/projectiles/modular/laser_base.dm
@@ -151,22 +151,18 @@
return ..()
if(ismodifier(A) && gun_mods.len < modifier_cap)
gun_mods += A
- user.drop_item()
- A.forceMove(src)
+ user.drop_from_inventory(A,src)
else if(islasercapacitor(A) && stage == 1)
capacitor = A
- user.drop_item()
- A.forceMove(src)
+ user.drop_from_inventory(A,src)
stage = 2
else if(isfocusinglens(A) && stage == 2)
focusing_lens = A
- user.drop_item()
- A.forceMove(src)
+ user.drop_from_inventory(A,src)
stage = 3
else if(ismodulator(A) && stage == 3)
modulator = A
- user.drop_item()
- A.forceMove(src)
+ user.drop_from_inventory(A,src)
else
return ..()
user << "You insert \the [A] into the assembly."
diff --git a/code/modules/projectiles/pins.dm b/code/modules/projectiles/pins.dm
index afbeaccfc00..5f724cf3f26 100644
--- a/code/modules/projectiles/pins.dm
+++ b/code/modules/projectiles/pins.dm
@@ -52,8 +52,7 @@ Firing pins as a rule can't be removed without replacing them, blame a really sh
/obj/item/device/firing_pin/proc/gun_insert(mob/living/user, obj/item/weapon/gun/G)
gun = G
- user.drop_from_inventory(src)
- forceMove(gun)
+ user.drop_from_inventory(src,gun)
gun.pin = src
return
diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm
index 507a73ee591..8e6bede85ba 100644
--- a/code/modules/reagents/Chemistry-Machinery.dm
+++ b/code/modules/reagents/Chemistry-Machinery.dm
@@ -53,8 +53,7 @@
user << "A beaker is already loaded into the machine."
return
src.beaker = B
- user.drop_item()
- B.loc = src
+ user.drop_from_inventory(B,src)
user << "You add the beaker to the machine!"
src.updateUsrDialog()
icon_state = "mixer1"
@@ -66,8 +65,7 @@
return
src.loaded_pill_bottle = B
- user.drop_item()
- B.loc = src
+ user.drop_from_inventory(B,src)
user << "You add the pill bottle into the dispenser slot!"
src.updateUsrDialog()
else if(iswrench(B))
@@ -82,7 +80,7 @@
if (href_list["ejectp"])
if(loaded_pill_bottle)
- loaded_pill_bottle.loc = src.loc
+ loaded_pill_bottle.forceMove(src.loc)
loaded_pill_bottle = null
else if(href_list["close"])
usr << browse(null, "window=chemmaster")
@@ -530,8 +528,7 @@
return
src.beaker = I
- user.drop_item()
- I.loc = src
+ user.drop_from_inventory(I,src)
user << "You add the beaker to the machine!"
src.updateUsrDialog()
icon_state = "mixer1"
@@ -583,8 +580,7 @@
return 1
else
src.beaker = O
- user.drop_item()
- O.loc = src
+ user.drop_from_inventory(O,src)
update_icon()
src.updateUsrDialog()
return 0
@@ -625,7 +621,7 @@
return 0
user.remove_from_mob(O)
- O.loc = src
+ O.forceMove(src)
holdingitems += O
src.updateUsrDialog()
return 0
@@ -713,7 +709,7 @@
return
if (!beaker)
return
- beaker.loc = src.loc
+ beaker.forceMove(src.loc)
beaker = null
update_icon()
@@ -725,7 +721,7 @@
return
for(var/obj/item/O in holdingitems)
- O.loc = src.loc
+ O.forceMove(src.loc)
holdingitems -= O
holdingitems.Cut()
diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm
index 25ae0b2c52a..2f7a02bc693 100644
--- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm
+++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm
@@ -602,7 +602,7 @@
qdel(W)
continue
W.layer = initial(W.layer)
- W.loc = M.loc
+ W.forceMove(M.loc)
W.dropped(M)
var/mob/living/carbon/slime/new_mob = new /mob/living/carbon/slime(M.loc)
new_mob.a_intent = "hurt"
diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm
index c34a1793e1e..d7810a7691e 100644
--- a/code/modules/reagents/Chemistry-Recipes.dm
+++ b/code/modules/reagents/Chemistry-Recipes.dm
@@ -1104,7 +1104,7 @@
/datum/chemical_reaction/slime/spawn/on_reaction(var/datum/reagents/holder)
holder.my_atom.visible_message("Infused with phoron, the core begins to quiver and grow, and soon a new baby slime emerges from it!")
var/mob/living/carbon/slime/S = new /mob/living/carbon/slime
- S.loc = get_turf(holder.my_atom)
+ S.forceMove(get_turf(holder.my_atom))
..()
/datum/chemical_reaction/slime/monkey
@@ -1118,7 +1118,7 @@
/datum/chemical_reaction/slime/monkey/on_reaction(var/datum/reagents/holder)
for(var/i = 1, i <= 3, i++)
var /obj/item/weapon/reagent_containers/food/snacks/monkeycube/M = new /obj/item/weapon/reagent_containers/food/snacks/monkeycube
- M.loc = get_turf(holder.my_atom)
+ M.forceMove(get_turf(holder.my_atom))
..()
//Green
@@ -1142,10 +1142,10 @@
/datum/chemical_reaction/slime/metal/on_reaction(var/datum/reagents/holder)
var/obj/item/stack/material/steel/M = new /obj/item/stack/material/steel
M.amount = 15
- M.loc = get_turf(holder.my_atom)
+ M.forceMove(get_turf(holder.my_atom))
var/obj/item/stack/material/plasteel/P = new /obj/item/stack/material/plasteel
P.amount = 5
- P.loc = get_turf(holder.my_atom)
+ P.forceMove(get_turf(holder.my_atom))
..()
//Gold - added back in
@@ -1201,7 +1201,7 @@
var/chosen = pick(critters)
var/mob/living/simple_animal/hostile/C = new chosen
C.faction = "slimesummon"
- C.loc = get_turf(holder.my_atom)
+ C.forceMove(get_turf(holder.my_atom))
if(prob(50))
for(var/j = 1, j <= rand(1, 3), j++)
step(C, pick(NORTH,SOUTH,EAST,WEST))
@@ -1227,7 +1227,7 @@
var/chosen = pick(borks)
var/obj/B = new chosen
if(B)
- B.loc = get_turf(holder.my_atom)
+ B.forceMove(get_turf(holder.my_atom))
if(prob(50))
for(var/j = 1, j <= rand(1, 3), j++)
step(B, pick(NORTH, SOUTH, EAST, WEST))
@@ -1310,7 +1310,7 @@
/datum/chemical_reaction/slime/cell/on_reaction(var/datum/reagents/holder, var/created_volume)
var/obj/item/weapon/cell/slime/P = new /obj/item/weapon/cell/slime
- P.loc = get_turf(holder.my_atom)
+ P.forceMove(get_turf(holder.my_atom))
/datum/chemical_reaction/slime/glow
name = "Slime Glow"
@@ -1324,7 +1324,7 @@
/datum/chemical_reaction/slime/glow/on_reaction(var/datum/reagents/holder, var/created_volume)
..()
var/obj/item/device/flashlight/slime/F = new /obj/item/device/flashlight/slime
- F.loc = get_turf(holder.my_atom)
+ F.forceMove(get_turf(holder.my_atom))
//Purple
/datum/chemical_reaction/slime/psteroid
@@ -1338,7 +1338,7 @@
/datum/chemical_reaction/slime/psteroid/on_reaction(var/datum/reagents/holder, var/created_volume)
..()
var/obj/item/weapon/slimesteroid/P = new /obj/item/weapon/slimesteroid
- P.loc = get_turf(holder.my_atom)
+ P.forceMove(get_turf(holder.my_atom))
/datum/chemical_reaction/slime/jam
name = "Slime Jam"
@@ -1361,7 +1361,7 @@
..()
var/obj/item/stack/material/phoron/P = new /obj/item/stack/material/phoron
P.amount = 10
- P.loc = get_turf(holder.my_atom)
+ P.forceMove(get_turf(holder.my_atom))
//Red
/datum/chemical_reaction/slime/glycerol
@@ -1398,7 +1398,7 @@
/datum/chemical_reaction/slime/ppotion/on_reaction(var/datum/reagents/holder)
..()
var/obj/item/weapon/slimepotion/P = new /obj/item/weapon/slimepotion
- P.loc = get_turf(holder.my_atom)
+ P.forceMove(get_turf(holder.my_atom))
//Black
/datum/chemical_reaction/slime/mutate2
@@ -1436,7 +1436,7 @@
/datum/chemical_reaction/slime/potion2/on_reaction(var/datum/reagents/holder)
..()
var/obj/item/weapon/slimepotion2/P = new /obj/item/weapon/slimepotion2
- P.loc = get_turf(holder.my_atom)
+ P.forceMove(get_turf(holder.my_atom))
//Adamantine
/datum/chemical_reaction/slime/golem
@@ -1450,7 +1450,7 @@
/datum/chemical_reaction/slime/golem/on_reaction(var/datum/reagents/holder)
..()
var/obj/effect/golemrune/Z = new /obj/effect/golemrune
- Z.loc = get_turf(holder.my_atom)
+ Z.forceMove(get_turf(holder.my_atom))
Z.announce_to_ghosts()
/*
diff --git a/code/modules/reagents/dispenser/dispenser2.dm b/code/modules/reagents/dispenser/dispenser2.dm
index 54fe4f758f1..66d77698caf 100644
--- a/code/modules/reagents/dispenser/dispenser2.dm
+++ b/code/modules/reagents/dispenser/dispenser2.dm
@@ -51,10 +51,11 @@
return
if(user)
- user.drop_from_inventory(C)
+ user.drop_from_inventory(C,src)
user << "You add \the [C] to \the [src]."
+ else
+ C.forceMove(src)
- C.loc = src
cartridges[C.label] = C
sortTim(cartridges, /proc/cmp_text_asc)
SSnanoui.update_uis(src)
@@ -86,7 +87,7 @@
var/obj/item/weapon/reagent_containers/chem_disp_cartridge/C = remove_cartridge(label)
if(C)
user << "You remove \the [C] from \the [src]."
- C.loc = loc
+ C.forceMove(loc)
else if(istype(W, /obj/item/weapon/reagent_containers/glass) || istype(W, /obj/item/weapon/reagent_containers/food))
if(container)
@@ -104,8 +105,7 @@
return
container = RC
- user.drop_from_inventory(RC)
- RC.loc = src
+ user.drop_from_inventory(RC,src)
user << "You set \the [RC] on \the [src]."
SSnanoui.update_uis(src) // update all UIs attached to src
@@ -161,7 +161,7 @@
else if(href_list["ejectBeaker"])
if(container)
var/obj/item/weapon/reagent_containers/B = container
- B.loc = loc
+ B.forceMove(loc)
container = null
add_fingerprint(usr)
diff --git a/code/modules/reagents/reagent_containers/food/sandwich.dm b/code/modules/reagents/reagent_containers/food/sandwich.dm
index b88c2391f88..c1e2f601d94 100644
--- a/code/modules/reagents/reagent_containers/food/sandwich.dm
+++ b/code/modules/reagents/reagent_containers/food/sandwich.dm
@@ -27,16 +27,14 @@
return
else if(istype(W,/obj/item/weapon/material/shard))
user << "You hide [W] in \the [src]."
- user.drop_item()
- W.loc = src
+ user.drop_from_inventory(W,src)
update()
return
else if(istype(W,/obj/item/weapon/reagent_containers/food/snacks))
user << "You layer [W] over \the [src]."
var/obj/item/weapon/reagent_containers/F = W
F.reagents.trans_to_obj(src, F.reagents.total_volume)
- user.drop_item()
- W.loc = src
+ user.drop_from_inventory(W,src)
ingredients += W
update()
return
diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm
index e315d450974..44eb28eb993 100644
--- a/code/modules/reagents/reagent_containers/food/snacks.dm
+++ b/code/modules/reagents/reagent_containers/food/snacks.dm
@@ -43,7 +43,7 @@
if (!feeder)
feeder = eater
- feeder.drop_from_inventory(src) //so icons update :[
+ feeder.drop_from_inventory(src) //so icons update :[ //what the fuck is this????
if(trash)
if(ispath(trash,/obj/item))
@@ -60,7 +60,6 @@
/obj/item/weapon/reagent_containers/food/snacks/attack(mob/M as mob, mob/user as mob, def_zone)
if(!reagents.total_volume)
user << "None of [src] left!"
- user.drop_from_inventory(src)
qdel(src)
return 0
@@ -244,7 +243,7 @@
/obj/item/weapon/reagent_containers/food/snacks/Destroy()
if(contents)
for(var/atom/movable/something in contents)
- something.loc = get_turf(src)
+ something.forceMove(get_turf(src))
return ..()
@@ -728,7 +727,6 @@
return
user << "You crack \the [src] into \the [O]."
reagents.trans_to(O, reagents.total_volume)
- user.drop_from_inventory(src)
qdel(src)
/obj/item/weapon/reagent_containers/food/snacks/egg/throw_impact(atom/hit_atom)
@@ -1950,7 +1948,7 @@
user << "You place \the [name] under a stream of water..."
if(istype(user))
user.unEquip(src)
- src.loc = get_turf(src)
+ src.forceMove(get_turf(src))
return Expand()
..()
@@ -3883,9 +3881,7 @@
boxestoadd += i
if( (boxes.len+1) + boxestoadd.len <= 5 )
- user.drop_item()
-
- box.loc = src
+ user.drop_from_inventory(box,src)
box.boxes = list() // Clear the box boxes so we don't have boxes inside boxes. - Xzibit
src.boxes.Add( boxestoadd )
@@ -3903,8 +3899,7 @@
if( istype(I, /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/) ) // Long ass fucking object name
if( src.open )
- user.drop_item()
- I.loc = src
+ user.drop_from_inventory(I,src)
src.pizza = I
update_icon()
@@ -4056,7 +4051,7 @@
//If the bun was in your hands, the result will be too
if (loc == user)
- user.drop_from_inventory(src)
+ user.drop_from_inventory(src) //This has to be here in order to put the pun in the proper place
user.put_in_hands(result)
qdel(W)
diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm
index 09f0296099f..ed01e8550a1 100644
--- a/code/modules/reagents/reagent_containers/glass.dm
+++ b/code/modules/reagents/reagent_containers/glass.dm
@@ -249,13 +249,11 @@
user << "You add [D] to [src]."
qdel(D)
user.put_in_hands(new /obj/item/weapon/bucket_sensor)
- user.drop_from_inventory(src)
qdel(src)
return
else if(istype(D, /obj/item/weapon/wirecutters))
to_chat(user, "You cut a big hole in \the [src] with \the [D].")
user.put_in_hands(new /obj/item/clothing/head/helmet/bucket)
- user.drop_from_inventory(src)
qdel(src)
return
else if(istype(D, /obj/item/weapon/mop))
@@ -290,7 +288,6 @@ obj/item/weapon/reagent_containers/glass/bucket/wood
else if(istype(D, /obj/item/weapon/material/hatchet))
to_chat(user, "You cut a big hole in \the [src] with \the [D].")
user.put_in_hands(new /obj/item/clothing/head/helmet/bucket/wood)
- user.drop_from_inventory(src)
qdel(src)
return
else if(istype(D, /obj/item/weapon/mop))
diff --git a/code/modules/reagents/reagent_containers/inhaler_advanced.dm b/code/modules/reagents/reagent_containers/inhaler_advanced.dm
index 52036facabd..555ef039b08 100644
--- a/code/modules/reagents/reagent_containers/inhaler_advanced.dm
+++ b/code/modules/reagents/reagent_containers/inhaler_advanced.dm
@@ -163,7 +163,7 @@
return
user.remove_from_mob(cartridge)
src.stored_cartridge = cartridge
- cartridge.loc = src
+ cartridge.forceMove(src)
update_icon()
return
. = ..()
diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm
index df2257f58fa..1671567cb77 100644
--- a/code/modules/reagents/reagent_containers/pill.dm
+++ b/code/modules/reagents/reagent_containers/pill.dm
@@ -25,7 +25,6 @@
return
M << "You swallow \the [src]."
- M.drop_from_inventory(src) //icon update
if(reagents.total_volume)
reagents.trans_to_mob(M, reagents.total_volume, CHEM_INGEST)
qdel(src)
@@ -41,7 +40,6 @@
if(!do_mob(user, M))
return
- user.drop_from_inventory(src) //icon update
user.visible_message("[user] forces [M] to swallow \the [src].")
var/contained = reagentlist()
diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm
index 6d1df1fe9f0..8f5c40daa76 100644
--- a/code/modules/reagents/reagent_dispenser.dm
+++ b/code/modules/reagents/reagent_dispenser.dm
@@ -102,7 +102,7 @@
usr.visible_message("[usr] begins to detach [rig] from \the [src].", "You begin to detach [rig] from \the [src]")
if(do_after(usr, 20))
usr.visible_message("[usr] detaches [rig] from \the [src].", "You detach [rig] from \the [src]")
- rig.loc = get_turf(usr)
+ rig.forceMove(get_turf(usr))
rig = null
overlays = new/list()
@@ -130,9 +130,7 @@
log_game("[key_name(user)] rigged fueltank at [loc.loc.name] ([loc.x],[loc.y],[loc.z]) for explosion.",ckey=key_name(user))
rig = W
- user.drop_item()
- W.forceMove(src)
-
+ user.drop_from_inventory(W,src)
var/mutable_appearance/MA = new(W)
MA.pixel_x += 1
MA.pixel_y += 6
diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm
index e7d1b095e57..1b6e825be7a 100644
--- a/code/modules/recycling/disposal.dm
+++ b/code/modules/recycling/disposal.dm
@@ -143,9 +143,7 @@
if(!I)
return
- user.drop_item()
- if(I)
- I.forceMove(src)
+ user.drop_from_inventory(I,src)
user << "You place \the [I] into the [src]."
for(var/mob/M in viewers(src))
diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm
index feb9e72d904..49d6e3d33ae 100755
--- a/code/modules/recycling/sortingmachinery.dm
+++ b/code/modules/recycling/sortingmachinery.dm
@@ -312,13 +312,13 @@
/obj/structure/bigDelivery/Destroy()
if(wrapped) //sometimes items can disappear. For example, bombs. --rastaf0
- wrapped.loc = (get_turf(loc))
+ wrapped.forceMove((get_turf(loc)))
if(istype(wrapped, /obj/structure/closet))
var/obj/structure/closet/O = wrapped
O.welded = 0
var/turf/T = get_turf(src)
for(var/atom/movable/AM in contents)
- AM.loc = T
+ AM.forceMove(T)
return ..()
/obj/item/device/destTagger
diff --git a/code/modules/research/circuitprinter.dm b/code/modules/research/circuitprinter.dm
index 118dec00d44..12d12bed08b 100644
--- a/code/modules/research/circuitprinter.dm
+++ b/code/modules/research/circuitprinter.dm
@@ -201,7 +201,7 @@ using metal and glass, it uses glass and reagents (usually sulphuric acid).
if(D.build_path)
var/obj/new_item = D.Fabricate(src, src)
- new_item.loc = loc
+ new_item.forceMove(loc)
if(mat_efficiency != 1) // No matter out of nowhere
if(new_item.matter && new_item.matter.len > 0)
for(var/i in new_item.matter)
diff --git a/code/modules/research/destructive_analyzer.dm b/code/modules/research/destructive_analyzer.dm
index d818d358ec5..de1eefb2a56 100644
--- a/code/modules/research/destructive_analyzer.dm
+++ b/code/modules/research/destructive_analyzer.dm
@@ -71,8 +71,7 @@ Note: Must be placed within 3 tiles of the R&D Console
return
busy = 1
loaded_item = O
- user.drop_item()
- O.loc = src
+ user.drop_from_inventory(O,src)
user << "You add \the [O] to \the [src]."
flick("d_analyzer_la", src)
spawn(10)
diff --git a/code/modules/research/message_server.dm b/code/modules/research/message_server.dm
index f61d27fa5cb..97eddc0e9b2 100644
--- a/code/modules/research/message_server.dm
+++ b/code/modules/research/message_server.dm
@@ -147,7 +147,7 @@ var/global/list/obj/machinery/message_server/message_servers = list()
if (active && !(stat & (BROKEN|NOPOWER)) && (spamfilter_limit < MESSAGE_SERVER_DEFAULT_SPAM_LIMIT*2) && \
istype(O,/obj/item/weapon/circuitboard/message_monitor))
spamfilter_limit += round(MESSAGE_SERVER_DEFAULT_SPAM_LIMIT / 2)
- user.drop_item()
+ user.drop_from_inventory(O,get_turf(src))
qdel(O)
user << "You install additional memory and processors into message server. Its filtering capabilities been enhanced."
else
diff --git a/code/modules/research/protolathe.dm b/code/modules/research/protolathe.dm
index f56d2047d40..37f789fb649 100644
--- a/code/modules/research/protolathe.dm
+++ b/code/modules/research/protolathe.dm
@@ -199,7 +199,7 @@
if(D.build_path)
var/obj/new_item = D.Fabricate(src, src)
- new_item.loc = loc
+ new_item.forceMove(loc)
if(mat_efficiency != 1) // No matter out of nowhere
if(new_item.matter && new_item.matter.len > 0)
for(var/i in new_item.matter)
diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm
index 32a0febdec9..e88a2c5a56f 100644
--- a/code/modules/research/rdconsole.dm
+++ b/code/modules/research/rdconsole.dm
@@ -119,8 +119,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
else
user << "Machine cannot accept disks in that format."
return
- user.drop_item()
- D.loc = src
+ user.drop_from_inventory(D,src)
user << "You add \the [D] to the machine."
else
//The construction/deconstruction of the console code.
@@ -162,7 +161,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
t_disk.stored = null
else if(href_list["eject_tech"]) //Eject the technology disk.
- t_disk.loc = loc
+ t_disk.forceMove(loc)
t_disk = null
screen = 1.0
@@ -185,7 +184,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
d_disk.blueprint = null
else if(href_list["eject_design"]) //Eject the design disk.
- d_disk.loc = loc
+ d_disk.forceMove(loc)
d_disk = null
screen = 1.0
@@ -202,7 +201,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
usr << "The destructive analyzer is busy at the moment."
else if(linked_destroy.loaded_item)
- linked_destroy.loaded_item.loc = linked_destroy.loc
+ linked_destroy.loaded_item.forceMove(linked_destroy.loc)
linked_destroy.loaded_item = null
linked_destroy.icon_state = "d_analyzer"
screen = 2.1
diff --git a/code/modules/research/xenoarchaeology/artifact/artifact_gigadrill.dm b/code/modules/research/xenoarchaeology/artifact/artifact_gigadrill.dm
index 6fc81d40bf4..718889e7121 100644
--- a/code/modules/research/xenoarchaeology/artifact/artifact_gigadrill.dm
+++ b/code/modules/research/xenoarchaeology/artifact/artifact_gigadrill.dm
@@ -31,6 +31,6 @@
spawn(drill_time)
if(get_turf(src) == drilling_turf && active)
M.GetDrilled()
- src.loc = M
+ src.forceMove(M)
drilling_turf = null
anchored = 0
diff --git a/code/modules/research/xenoarchaeology/artifact/artifact_replicator.dm b/code/modules/research/xenoarchaeology/artifact/artifact_replicator.dm
index b887a891041..53a0f98e337 100644
--- a/code/modules/research/xenoarchaeology/artifact/artifact_replicator.dm
+++ b/code/modules/research/xenoarchaeology/artifact/artifact_replicator.dm
@@ -128,8 +128,7 @@
user << browse(dat, "window=alien_replicator")
/obj/machinery/replicator/attackby(obj/item/weapon/W as obj, mob/living/user as mob)
- user.drop_item()
- W.loc = src
+ user.drop_from_inventory(W,src)
stored_materials.Add(W)
src.visible_message("[user] inserts [W] into [src].")
diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_forcefield.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_forcefield.dm
index 0139ea935fb..af5c2c5a32f 100644
--- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_forcefield.dm
+++ b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_forcefield.dm
@@ -47,34 +47,34 @@
E.invisibility = 0
var/obj/effect/energy_field/E = created_field[1]
- E.loc = locate(T.x + 2,T.y + 2,T.z)
+ E.forceMove(locate(T.x + 2,T.y + 2,T.z))
E = created_field[2]
- E.loc = locate(T.x + 2,T.y + 1,T.z)
+ E.forceMove(locate(T.x + 2,T.y + 1,T.z))
E = created_field[3]
- E.loc = locate(T.x + 2,T.y,T.z)
+ E.forceMove(locate(T.x + 2,T.y,T.z))
E = created_field[4]
- E.loc = locate(T.x + 2,T.y - 1,T.z)
+ E.forceMove(locate(T.x + 2,T.y - 1,T.z))
E = created_field[5]
- E.loc = locate(T.x + 2,T.y - 2,T.z)
+ E.forceMove(locate(T.x + 2,T.y - 2,T.z))
E = created_field[6]
- E.loc = locate(T.x + 1,T.y + 2,T.z)
+ E.forceMove(locate(T.x + 1,T.y + 2,T.z))
E = created_field[7]
- E.loc = locate(T.x + 1,T.y - 2,T.z)
+ E.forceMove(locate(T.x + 1,T.y - 2,T.z))
E = created_field[8]
- E.loc = locate(T.x,T.y + 2,T.z)
+ E.forceMove(locate(T.x,T.y + 2,T.z))
E = created_field[9]
- E.loc = locate(T.x,T.y - 2,T.z)
+ E.forceMove(locate(T.x,T.y - 2,T.z))
E = created_field[10]
- E.loc = locate(T.x - 1,T.y + 2,T.z)
+ E.forceMove(locate(T.x - 1,T.y + 2,T.z))
E = created_field[11]
- E.loc = locate(T.x - 1,T.y - 2,T.z)
+ E.forceMove(locate(T.x - 1,T.y - 2,T.z))
E = created_field[12]
- E.loc = locate(T.x - 2,T.y + 2,T.z)
+ E.forceMove(locate(T.x - 2,T.y + 2,T.z))
E = created_field[13]
- E.loc = locate(T.x - 2,T.y + 1,T.z)
+ E.forceMove(locate(T.x - 2,T.y + 1,T.z))
E = created_field[14]
- E.loc = locate(T.x - 2,T.y,T.z)
+ E.forceMove(locate(T.x - 2,T.y,T.z))
E = created_field[15]
- E.loc = locate(T.x - 2,T.y - 1,T.z)
+ E.forceMove(locate(T.x - 2,T.y - 1,T.z))
E = created_field[16]
- E.loc = locate(T.x - 2,T.y - 2,T.z)
+ E.forceMove(locate(T.x - 2,T.y - 2,T.z))
diff --git a/code/modules/research/xenoarchaeology/finds/finds.dm b/code/modules/research/xenoarchaeology/finds/finds.dm
index aebe9b4343d..af5256ba3b0 100644
--- a/code/modules/research/xenoarchaeology/finds/finds.dm
+++ b/code/modules/research/xenoarchaeology/finds/finds.dm
@@ -51,7 +51,7 @@
if(w.isOn())
if(w.get_fuel() >= 4 && !src.method)
if(inside)
- inside.loc = get_turf(src)
+ inside.forceMove(get_turf(src))
for(var/mob/M in viewers(world.view, user))
M.show_message("[src] burns away revealing [inside].",1)
else
@@ -392,14 +392,14 @@
if(new_gun.loaded.len > num_bullets)
if(I in new_gun.loaded)
new_gun.loaded.Remove(I)
- I.loc = null
+ I.forceMove(null)
else
break
else
for(var/obj/item/I in new_gun)
if(I in new_gun.loaded)
new_gun.loaded.Remove(I)
- I.loc = null
+ I.forceMove(null)
item_type = "gun"
if(28)
diff --git a/code/modules/research/xenoarchaeology/finds/finds_special.dm b/code/modules/research/xenoarchaeology/finds/finds_special.dm
index 85fced2ffc5..9a96a76ea61 100644
--- a/code/modules/research/xenoarchaeology/finds/finds_special.dm
+++ b/code/modules/research/xenoarchaeology/finds/finds_special.dm
@@ -201,7 +201,7 @@
/obj/effect/shadow_wight/process()
if(src.loc)
- src.loc = get_turf(pick(orange(1,src)))
+ src.forceMove(get_turf(pick(orange(1,src))))
var/mob/living/carbon/M = locate() in src.loc
if(M)
playsound(src.loc, pick('sound/hallucinations/behind_you1.ogg',\
diff --git a/code/modules/research/xenoarchaeology/machinery/artifact_harvester.dm b/code/modules/research/xenoarchaeology/machinery/artifact_harvester.dm
index 649eb23c1dd..b55846ed7df 100644
--- a/code/modules/research/xenoarchaeology/machinery/artifact_harvester.dm
+++ b/code/modules/research/xenoarchaeology/machinery/artifact_harvester.dm
@@ -25,8 +25,7 @@
if(istype(I,/obj/item/weapon/anobattery))
if(!inserted_battery)
user << "You insert [I] into [src]."
- user.drop_item()
- I.loc = src
+ user.drop_from_inventory(I,src)
src.inserted_battery = I
updateDialog()
else
@@ -225,7 +224,7 @@
icon_state = "incubator"
if (href_list["ejectbattery"])
- src.inserted_battery.loc = src.loc
+ src.inserted_battery.forceMove(src.loc)
src.inserted_battery = null
if (href_list["drainbattery"])
diff --git a/code/modules/research/xenoarchaeology/machinery/geosample_scanner.dm b/code/modules/research/xenoarchaeology/machinery/geosample_scanner.dm
index 5a00fa34890..2a549b95176 100644
--- a/code/modules/research/xenoarchaeology/machinery/geosample_scanner.dm
+++ b/code/modules/research/xenoarchaeology/machinery/geosample_scanner.dm
@@ -95,8 +95,7 @@
if(scanned_item)
user << "\The [src] already has \a [scanned_item] inside!"
return
- user.drop_item()
- I.loc = src
+ user.drop_from_inventory(I,src)
scanned_item = I
user << "You put \the [I] into \the [src]."
@@ -320,9 +319,9 @@
P.info = "[src] analysis report #[report_num]
"
P.info += "Scanned item: [scanned_item.name]
" + data
last_scan_data = P.info
- P.loc = src.loc
+ P.forceMove(src.loc)
- scanned_item.loc = src.loc
+ scanned_item.forceMove(src.loc)
scanned_item = null
/obj/machinery/radiocarbon_spectrometer/Topic(href, href_list)
@@ -358,7 +357,7 @@
if(href_list["ejectItem"])
if(scanned_item)
- scanned_item.loc = src.loc
+ scanned_item.forceMove(src.loc)
scanned_item = null
add_fingerprint(usr)
diff --git a/code/modules/research/xenoarchaeology/tools/ano_device_battery.dm b/code/modules/research/xenoarchaeology/tools/ano_device_battery.dm
index 601011bc51c..4d1adf8a264 100644
--- a/code/modules/research/xenoarchaeology/tools/ano_device_battery.dm
+++ b/code/modules/research/xenoarchaeology/tools/ano_device_battery.dm
@@ -41,8 +41,7 @@
if(istype(I, /obj/item/weapon/anobattery))
if(!inserted_battery)
user << "You insert the battery."
- user.drop_item()
- I.loc = src
+ user.drop_from_inventory(I,src)
inserted_battery = I
UpdateSprite()
else
@@ -172,7 +171,7 @@
activated = 0
if(href_list["ejectbattery"])
shutdown_emission()
- inserted_battery.loc = get_turf(src)
+ inserted_battery.forceMove(get_turf(src))
inserted_battery = null
UpdateSprite()
if(href_list["close"])
diff --git a/code/modules/research/xenoarchaeology/tools/suspension_generator.dm b/code/modules/research/xenoarchaeology/tools/suspension_generator.dm
index cab006af9b2..d48d9295f99 100644
--- a/code/modules/research/xenoarchaeology/tools/suspension_generator.dm
+++ b/code/modules/research/xenoarchaeology/tools/suspension_generator.dm
@@ -44,7 +44,7 @@
if(!suspension_field.contents.len)
suspension_field.icon_state = "energynet"
suspension_field.add_overlay("shield2")
- I.loc = suspension_field
+ I.forceMove(suspension_field)
for(var/mob/living/simple_animal/M in T)
M.weakened = max(M.weakened, 3)
@@ -128,8 +128,7 @@
else if(href_list["insertcard"])
var/obj/item/I = usr.get_active_hand()
if (istype(I, /obj/item/weapon/card))
- usr.drop_item()
- I.loc = src
+ usr.drop_from_inventory(I,src)
auth_card = I
if(attempt_unlock(I, usr))
usr << "You insert [I], the console flashes \'Access granted.\'"
@@ -138,12 +137,12 @@
else if(href_list["ejectcard"])
if(auth_card)
if(ishuman(usr))
- auth_card.loc = usr.loc
+ auth_card.forceMove(usr.loc)
if(!usr.get_active_hand())
usr.put_in_hands(auth_card)
auth_card = null
else
- auth_card.loc = loc
+ auth_card.forceMove(loc)
auth_card = null
else if(href_list["lock"])
locked = 1
@@ -157,7 +156,7 @@
if(!open)
interact(user)
else if(cell)
- cell.loc = loc
+ cell.forceMove(loc)
cell.add_fingerprint(user)
cell.update_icon()
@@ -207,8 +206,7 @@
if(cell)
user << "There is a power cell already installed."
else
- user.drop_item()
- W.loc = src
+ user.drop_from_inventory(W,src)
cell = W
user << "You insert the power cell."
icon_state = "suspension1"
@@ -286,7 +284,7 @@
icon_state = "suspension3"
for(var/obj/item/I in T)
- I.loc = suspension_field
+ I.forceMove(suspension_field)
collected++
if(collected)
@@ -346,5 +344,5 @@
/obj/effect/suspension_field/Destroy()
for(var/obj/I in src)
- I.loc = src.loc
+ I.forceMove(src.loc)
return ..()
diff --git a/code/modules/research/xenoarchaeology/tools/tools_coresampler.dm b/code/modules/research/xenoarchaeology/tools/tools_coresampler.dm
index b974d16a492..d6f41409b12 100644
--- a/code/modules/research/xenoarchaeology/tools/tools_coresampler.dm
+++ b/code/modules/research/xenoarchaeology/tools/tools_coresampler.dm
@@ -67,7 +67,7 @@
//put in a rock sliver
var/obj/item/weapon/rocksliver/R = new()
R.geological_data = geo_data
- R.loc = filled_bag
+ R.forceMove(filled_bag)
//update the sample bag
filled_bag.icon_state = "evidence"
@@ -88,7 +88,7 @@
var/mob/M = src.loc
success = M.put_in_inactive_hand(filled_bag)
if(!success)
- filled_bag.loc = get_turf(src)
+ filled_bag.forceMove(get_turf(src))
filled_bag = null
icon_state = "sampler0"
else
diff --git a/code/modules/spells/contracts.dm b/code/modules/spells/contracts.dm
index 6ed033b7c43..d5daf7b0430 100644
--- a/code/modules/spells/contracts.dm
+++ b/code/modules/spells/contracts.dm
@@ -34,7 +34,6 @@
for(var/spell_type in contract_spells)
M.add_spell(new spell_type(user), "const_spell_ready")
log_and_message_admins("signed their soul over to \the [contract_master] using \the [src].", user)
- user.drop_from_inventory(src)
qdel(src)
/obj/item/weapon/contract/proc/contract_effect(mob/user as mob)
diff --git a/code/modules/spells/general/area_teleport.dm b/code/modules/spells/general/area_teleport.dm
index 1f13736bdd0..d3ceb529b73 100644
--- a/code/modules/spells/general/area_teleport.dm
+++ b/code/modules/spells/general/area_teleport.dm
@@ -70,7 +70,7 @@
break
if(!success)
- user.loc = pick(L)
+ user.forceMove(pick(L))
return
diff --git a/code/modules/spells/targeted/equip/equip.dm b/code/modules/spells/targeted/equip/equip.dm
index 13811b19a75..05816a8cd5d 100644
--- a/code/modules/spells/targeted/equip/equip.dm
+++ b/code/modules/spells/targeted/equip/equip.dm
@@ -28,7 +28,7 @@
if(delete_old)
qdel(old_item)
else
- old_item.loc = L.loc
+ old_item.forceMove(L.loc)
if(duration)
summoned_items += new_item //we store it in a list to remove later
diff --git a/code/modules/spells/targeted/ethereal_jaunt.dm b/code/modules/spells/targeted/ethereal_jaunt.dm
index 11a45ac26b8..8bae3f98d52 100644
--- a/code/modules/spells/targeted/ethereal_jaunt.dm
+++ b/code/modules/spells/targeted/ethereal_jaunt.dm
@@ -34,12 +34,12 @@
if(target.buckled)
target.buckled = null
jaunt_disappear(animation, target)
- target.loc = holder
+ target.forceMove(holder)
target.transforming=0 //mob is safely inside holder now, no need for protection.
jaunt_steam(mobloc)
sleep(duration)
mobloc = holder.last_valid_turf
- animation.loc = mobloc
+ animation.forceMove(mobloc)
jaunt_steam(mobloc)
target.canmove = 0
holder.reappearing = 1
@@ -93,7 +93,7 @@
/obj/effect/dummy/spell_jaunt/Destroy()
// Eject contents if deleted somehow
for(var/atom/movable/AM in src)
- AM.loc = get_turf(src)
+ AM.forceMove(get_turf(src))
return ..()
/obj/effect/dummy/spell_jaunt/relaymove(var/mob/user, direction)
diff --git a/code/modules/surgery/implant.dm b/code/modules/surgery/implant.dm
index a0f498ff3eb..865a1f82a73 100644
--- a/code/modules/surgery/implant.dm
+++ b/code/modules/surgery/implant.dm
@@ -136,7 +136,7 @@
affected.owner.custom_pain("You feel something rip in your [affected.name]!", 1)
user.drop_item()
affected.implants += tool
- tool.loc = affected
+ tool.forceMove(affected)
affected.cavity = 0
//////////////////////////////////////////////////////////////////
@@ -197,7 +197,7 @@
worm.detatch()
worm.leave_host()
else
- obj.loc = get_turf(target)
+ obj.forceMove(get_turf(target))
obj.add_blood(target)
obj.update_icon()
if(istype(obj,/obj/item/weapon/implant))
diff --git a/code/modules/surgery/robotics.dm b/code/modules/surgery/robotics.dm
index a36ddd88692..a98e7ddc015 100644
--- a/code/modules/surgery/robotics.dm
+++ b/code/modules/surgery/robotics.dm
@@ -424,8 +424,7 @@
var/obj/item/device/mmi/M = tool
var/obj/item/organ/mmi_holder/holder = new(target, 1)
target.internal_organs_by_name["brain"] = holder
- user.drop_from_inventory(tool)
- tool.loc = holder
+ user.drop_from_inventory(tool,holder)
holder.stored_mmi = tool
holder.update_from_mmi()
diff --git a/code/modules/tables/interactions.dm b/code/modules/tables/interactions.dm
index 2d381ead718..21deceec9fc 100644
--- a/code/modules/tables/interactions.dm
+++ b/code/modules/tables/interactions.dm
@@ -107,7 +107,7 @@
user << "You need a better grip to do that!"
return
else
- G.affecting.loc = src.loc
+ G.affecting.forceMove(src.loc)
G.affecting.Weaken(rand(2,4))
visible_message("[G.assailant] puts [G.affecting] on \the [src].")
qdel(W)
diff --git a/code/modules/telesci/telesci_computer.dm b/code/modules/telesci/telesci_computer.dm
index a48e0605680..c4a749d559d 100644
--- a/code/modules/telesci/telesci_computer.dm
+++ b/code/modules/telesci/telesci_computer.dm
@@ -33,7 +33,7 @@
/obj/machinery/computer/telescience/Destroy()
eject()
if(inserted_gps)
- inserted_gps.loc = loc
+ inserted_gps.forceMove(loc)
inserted_gps = null
return ..()
@@ -54,14 +54,14 @@
return
user.drop_item(src)
crystals += W
- W.loc = null
+ W.forceMove(null)
user.visible_message("[user] inserts [W] into \the [src]'s crystal slot.", "You insert [W] into \the [src]'s crystal slot.")
updateDialog()
else if(istype(W, /obj/item/device/gps))
if(!inserted_gps)
inserted_gps = W
user.unEquip(W)
- W.loc = src
+ W.forceMove(src)
user.visible_message("[user] inserts [W] into \the [src]'s GPS device slot.", "You insert [W] into \the [src]'s GPS device slot.")
else if(ismultitool(W))
var/obj/item/device/multitool/M = W
@@ -281,7 +281,7 @@
/obj/machinery/computer/telescience/proc/eject()
for(var/obj/item/I in crystals)
- I.loc = src.loc
+ I.forceMove(src.loc)
crystals -= I
power = 0
@@ -322,7 +322,7 @@
if(href_list["ejectGPS"])
if(inserted_gps)
- inserted_gps.loc = loc
+ inserted_gps.forceMove(loc)
inserted_gps = null
if(href_list["setMemory"])
diff --git a/code/modules/vehicles/cargo_train.dm b/code/modules/vehicles/cargo_train.dm
index ffffa350562..e0178217b22 100644
--- a/code/modules/vehicles/cargo_train.dm
+++ b/code/modules/vehicles/cargo_train.dm
@@ -72,8 +72,7 @@
/obj/vehicle/train/cargo/engine/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/key/cargo_train))
if(!key)
- user.drop_item()
- W.forceMove(src)
+ user.drop_from_inventory(W,src)
key = W
verbs += /obj/vehicle/train/cargo/engine/verb/remove_key
return
diff --git a/code/modules/vehicles/pussywagon.dm b/code/modules/vehicles/pussywagon.dm
index ca19f31ce85..5c6baf95084 100644
--- a/code/modules/vehicles/pussywagon.dm
+++ b/code/modules/vehicles/pussywagon.dm
@@ -27,8 +27,7 @@
/obj/vehicle/train/cargo/engine/pussywagon/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/key/janicart))
if(!key)
- user.drop_item()
- W.forceMove(src)
+ user.drop_from_inventory(W,src)
key = W
verbs += /obj/vehicle/train/cargo/engine/verb/remove_key
return
@@ -137,9 +136,8 @@
/obj/vehicle/train/cargo/trolley/pussywagon/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/reagent_containers) && open)
if(!bucket)
- user.drop_item()
+ user.drop_from_inventory(W,src)
bucket = W
- W.forceMove(src)
user << "You replace \the [src]'s reagent reservoir."
return
diff --git a/code/modules/vehicles/vehicle.dm b/code/modules/vehicles/vehicle.dm
index 6f51c0bb48f..df9ba7d82c6 100644
--- a/code/modules/vehicles/vehicle.dm
+++ b/code/modules/vehicles/vehicle.dm
@@ -245,8 +245,7 @@
if(!istype(C))
return
- H.drop_from_inventory(C)
- C.forceMove(src)
+ H.drop_from_inventory(C,src)
cell = C
powercheck()
usr << "You install [C] in [src]."
diff --git a/code/modules/virus2/analyser.dm b/code/modules/virus2/analyser.dm
index cb14f653136..b903eb50ab8 100644
--- a/code/modules/virus2/analyser.dm
+++ b/code/modules/virus2/analyser.dm
@@ -18,8 +18,7 @@
return
dish = O
- user.drop_item()
- O.loc = src
+ user.drop_from_inventory(O,src)
user.visible_message("[user] adds \a [O] to \the [src]!", "You add \a [O] to \the [src]!")
@@ -48,7 +47,7 @@
dish.info = r
dish.name = "[initial(dish.name)] ([dish.virus2.name()])"
dish.analysed = 1
- dish.loc = src.loc
+ dish.forceMove(src.loc)
dish = null
icon_state = "analyser"
@@ -63,7 +62,7 @@
else
pause = 1
spawn(25)
- dish.loc = src.loc
+ dish.forceMove(src.loc)
dish = null
src.state("\The [src] buzzes, \"Insufficient growth density to complete analysis.\"")
diff --git a/code/modules/virus2/centrifuge.dm b/code/modules/virus2/centrifuge.dm
index 48190061a06..a5e0a77dbd7 100644
--- a/code/modules/virus2/centrifuge.dm
+++ b/code/modules/virus2/centrifuge.dm
@@ -19,8 +19,7 @@
return
sample = O
- user.drop_item()
- O.loc = src
+ user.drop_from_inventory(O,src)
user.visible_message("[user] adds \a [O] to \the [src]!", "You add \a [O] to \the [src]!")
SSnanoui.update_uis(src)
@@ -140,7 +139,7 @@
if("sample")
if(sample)
- sample.loc = src.loc
+ sample.forceMove(src.loc)
sample = null
return 1
diff --git a/code/modules/virus2/curer.dm b/code/modules/virus2/curer.dm
index 91b0b8c0f11..9eab89839ab 100644
--- a/code/modules/virus2/curer.dm
+++ b/code/modules/virus2/curer.dm
@@ -14,8 +14,7 @@
var/mob/living/carbon/C = user
if(!container)
container = I
- C.drop_item()
- I.loc = src
+ C.drop_from_inventory(I,src)
return
if(istype(I,/obj/item/weapon/virusdish))
if(virusing)
@@ -85,7 +84,7 @@
if (href_list["antibody"])
curing = 10
else if(href_list["eject"])
- container.loc = src.loc
+ container.forceMove(src.loc)
container = null
src.add_fingerprint(usr)
diff --git a/code/modules/virus2/diseasesplicer.dm b/code/modules/virus2/diseasesplicer.dm
index cd214acca0b..ac22dffb0b6 100644
--- a/code/modules/virus2/diseasesplicer.dm
+++ b/code/modules/virus2/diseasesplicer.dm
@@ -23,8 +23,7 @@
return
dish = I
- c.drop_item()
- I.loc = src
+ c.drop_from_inventory(I,src)
if(istype(I,/obj/item/weapon/diseasedisk))
user << "You upload the contents of the disk onto the buffer."
@@ -155,7 +154,7 @@
if(href_list["eject"])
if (dish)
- dish.loc = src.loc
+ dish.forceMove(src.loc)
dish = null
return 1
diff --git a/code/modules/virus2/dishincubator.dm b/code/modules/virus2/dishincubator.dm
index b2e15414263..79e90c0f3bb 100644
--- a/code/modules/virus2/dishincubator.dm
+++ b/code/modules/virus2/dishincubator.dm
@@ -22,8 +22,7 @@
return
beaker = O
- user.drop_item()
- O.loc = src
+ user.drop_from_inventory(O,src)
user.visible_message("[user] adds \a [O] to \the [src]!", "You add \a [O] to \the [src]!")
SSnanoui.update_uis(src)
@@ -38,8 +37,7 @@
return
dish = O
- user.drop_item()
- O.loc = src
+ user.drop_from_inventory(O,src)
user.visible_message("[user] adds \a [O] to \the [src]!", "You add \a [O] to \the [src]!")
SSnanoui.update_uis(src)
@@ -161,7 +159,7 @@
if (href_list["ejectchem"])
if(beaker)
- beaker.loc = src.loc
+ beaker.forceMove(src.loc)
beaker = null
return 1
@@ -173,7 +171,7 @@
if (href_list["ejectdish"])
if(dish)
- dish.loc = src.loc
+ dish.forceMove(src.loc)
dish = null
return 1
diff --git a/code/modules/virus2/isolator.dm b/code/modules/virus2/isolator.dm
index 1ab4eab7bef..e184465c492 100644
--- a/code/modules/virus2/isolator.dm
+++ b/code/modules/virus2/isolator.dm
@@ -36,8 +36,7 @@
return
sample = S
- user.drop_item()
- S.loc = src
+ user.drop_from_inventory(S,src)
user.visible_message("[user] adds \a [O] to \the [src]!", "You add \a [O] to \the [src]!")
SSnanoui.update_uis(src)
@@ -163,7 +162,7 @@
return 1
if (href_list["eject"])
- sample.loc = src.loc
+ sample.forceMove(src.loc)
sample = null
update_icon()
return 1