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