From 7f90427a40a84e83acb5e569f407cd6a1f972ae1 Mon Sep 17 00:00:00 2001 From: vuonojenmustaturska Date: Wed, 13 Dec 2017 21:56:39 +0200 Subject: [PATCH 1/5] Replaces a bunch of loc assignments with forcemoves and moves to nullspace --- code/_onclick/observer.dm | 2 +- code/game/atoms_movable.dm | 31 ++---- .../gamemodes/miniantags/abduction/gland.dm | 2 +- code/game/machinery/Beacon.dm | 13 +-- code/game/machinery/computer/_computer.dm | 2 +- .../machinery/computer/camera_advanced.dm | 5 +- code/game/machinery/computer/message.dm | 3 +- code/game/machinery/computer/prisoner.dm | 2 +- code/game/machinery/firealarm.dm | 2 +- code/game/machinery/recharger.dm | 4 +- code/game/mecha/mecha.dm | 4 +- code/game/mecha/mecha_construction_paths.dm | 2 +- code/game/mecha/working/ripley.dm | 8 +- code/game/objects/effects/anomalies.dm | 2 +- code/game/objects/effects/countdown.dm | 2 +- code/game/objects/effects/decals/misc.dm | 2 +- code/game/objects/effects/proximity.dm | 2 +- code/game/objects/effects/spiders.dm | 6 +- code/game/objects/items/airlock_painter.dm | 2 +- .../items/circuitboards/circuitboard.dm | 2 +- code/game/objects/items/defib.dm | 2 +- code/game/objects/items/handcuffs.dm | 4 +- code/game/objects/items/implants/implant.dm | 100 ++++++++++++++++++ code/game/objects/items/melee/misc.dm | 2 +- code/game/objects/items/pneumaticCannon.dm | 4 +- code/game/objects/items/shooting_range.dm | 2 +- code/game/objects/items/storage/bags.dm | 2 +- code/game/objects/items/tanks/watertank.dm | 6 +- .../objects/structures/beds_chairs/bed.dm | 2 +- .../structures/crates_lockers/crates/bins.dm | 48 +++++++++ code/game/objects/structures/morgue.dm | 2 +- code/game/objects/structures/safe.dm | 6 +- .../transit_tubes/transit_tube_pod.dm | 2 +- code/game/objects/structures/watercloset.dm | 2 +- code/game/turfs/simulated/wall/misc_walls.dm | 2 +- code/modules/admin/verbs/manipulate_organs.dm | 2 +- code/modules/assembly/bomb.dm | 26 ++--- code/modules/cargo/order.dm | 33 ++++++ .../modules/clothing/spacesuits/chronosuit.dm | 44 ++++---- code/modules/food_and_drinks/food/snacks.dm | 2 +- .../kitchen_machinery/food_cart.dm | 2 +- .../kitchen_machinery/microwave.dm | 2 +- .../kitchen_machinery/processor.dm | 4 +- .../kitchen_machinery/smartfridge.dm | 4 +- code/modules/mining/machine_vending.dm | 2 +- code/modules/mining/minebot.dm | 6 +- code/modules/mining/mint.dm | 2 +- code/modules/mob/living/brain/brain.dm | 15 ++- code/modules/mob/living/brain/brain_item.dm | 2 +- code/modules/mob/living/living.dm | 12 +++ .../mob/living/silicon/ai/freelook/eye.dm | 5 +- code/modules/mob/living/silicon/pai/pai.dm | 2 +- .../mob/living/simple_animal/bot/mulebot.dm | 6 +- .../simple_animal/friendly/drone/inventory.dm | 2 +- .../living/simple_animal/guardian/guardian.dm | 2 +- .../simple_animal/guardian/types/explosive.dm | 2 +- .../living/simple_animal/hostile/headcrab.dm | 2 +- .../mob/living/simple_animal/hostile/mimic.dm | 14 +-- .../mob/living/simple_animal/parrot.dm | 6 +- code/modules/paperwork/contract.dm | 4 +- code/modules/paperwork/filingcabinet.dm | 9 +- code/modules/paperwork/paper_cutter.dm | 2 +- code/modules/paperwork/paperbin.dm | 8 +- .../projectiles/guns/grenade_launcher.dm | 2 +- code/modules/projectiles/pins.dm | 2 +- code/modules/projectiles/projectile/magic.dm | 4 +- code/modules/recycling/sortingmachinery.dm | 2 +- .../research/xenobiology/xenobio_camera.dm | 4 +- code/modules/shuttle/emergency.dm | 2 +- .../surgery/bodyparts/dismemberment.dm | 14 +-- code/modules/surgery/bodyparts/head.dm | 4 +- code/modules/surgery/bodyparts/helpers.dm | 2 +- code/modules/surgery/organ_manipulation.dm | 2 +- code/modules/surgery/organs/organ_internal.dm | 2 +- .../modules/surgery/remove_embedded_object.dm | 4 +- code/modules/surgery/tools.dm | 2 +- 76 files changed, 373 insertions(+), 179 deletions(-) diff --git a/code/_onclick/observer.dm b/code/_onclick/observer.dm index 5ca74b8eee..f124e2779b 100644 --- a/code/_onclick/observer.dm +++ b/code/_onclick/observer.dm @@ -14,7 +14,7 @@ // Otherwise jump else if(A.loc) - loc = get_turf(A) + forceMove(get_turf(A)) update_parallax_contents() /mob/dead/observer/ClickOn(var/atom/A, var/params) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 3d77ed4260..4d7a417e53 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -200,7 +200,7 @@ loc.handle_atom_del(src) for(var/atom/movable/AM in contents) qdel(AM) - loc = null + moveToNullspace() invisibility = INVISIBILITY_ABSTRACT if(pulledby) pulledby.stop_pulling() @@ -268,31 +268,14 @@ //If no destination, move the atom into nullspace (don't do this unless you know what you're doing) else . = TRUE - var/atom/oldloc = loc - var/area/old_area = get_area(oldloc) - oldloc.Exited(src, null) - if(old_area) - old_area.Exited(src, null) + if (loc) + var/atom/oldloc = loc + var/area/old_area = get_area(oldloc) + oldloc.Exited(src, null) + if(old_area) + old_area.Exited(src, null) loc = null -/mob/living/forceMove(atom/destination) - stop_pulling() - if(buckled) - buckled.unbuckle_mob(src, force = TRUE) - if(has_buckled_mobs()) - unbuckle_all_mobs(force = TRUE) - . = ..() - if(.) - if(client) - reset_perspective(destination) - update_canmove() //if the mob was asleep inside a container and then got forceMoved out we need to make them fall. - -/mob/living/brain/forceMove(atom/destination) - if(container) - return container.forceMove(destination) - else //something went very wrong. - CRASH("Brainmob without container.") - //Called whenever an object moves and by mobs when they attempt to move themselves through space //And when an object or action applies a force on src, see newtonian_move() below //Return 0 to have src start/keep drifting in a no-grav area and 1 to stop/not start drifting diff --git a/code/game/gamemodes/miniantags/abduction/gland.dm b/code/game/gamemodes/miniantags/abduction/gland.dm index 759dfc46dc..22edb79c80 100644 --- a/code/game/gamemodes/miniantags/abduction/gland.dm +++ b/code/game/gamemodes/miniantags/abduction/gland.dm @@ -225,7 +225,7 @@ STOP_PROCESSING(SSobj, src) for(var/mob/M in contents) src.visible_message("[src] hatches!") - M.loc = src.loc + M.forceMove(drop_location()) qdel(src) diff --git a/code/game/machinery/Beacon.dm b/code/game/machinery/Beacon.dm index 48eafce3c5..937742930c 100644 --- a/code/game/machinery/Beacon.dm +++ b/code/game/machinery/Beacon.dm @@ -14,9 +14,8 @@ /obj/machinery/bluespace_beacon/Initialize() . = ..() var/turf/T = loc - Beacon = new /obj/item/device/radio/beacon + Beacon = new(T) Beacon.invisibility = INVISIBILITY_MAXIMUM - Beacon.loc = T hide(T.intact) @@ -42,13 +41,9 @@ /obj/machinery/bluespace_beacon/process() if(!Beacon) var/turf/T = loc - Beacon = new /obj/item/device/radio/beacon + Beacon = new(T) Beacon.invisibility = INVISIBILITY_MAXIMUM - Beacon.forceMove(T) - if(Beacon) - if(Beacon.loc != loc) - Beacon.forceMove(loc) + else if (Beacon.loc != loc) + Beacon.forceMove(loc) updateicon() - - diff --git a/code/game/machinery/computer/_computer.dm b/code/game/machinery/computer/_computer.dm index cab6c98536..44c39d8096 100644 --- a/code/game/machinery/computer/_computer.dm +++ b/code/game/machinery/computer/_computer.dm @@ -22,7 +22,7 @@ if(!QDELETED(C)) qdel(circuit) circuit = C - C.loc = null + C.moveToNullspace() /obj/machinery/computer/Destroy() QDEL_NULL(circuit) diff --git a/code/game/machinery/computer/camera_advanced.dm b/code/game/machinery/computer/camera_advanced.dm index c8850975f1..44d6d5abe4 100644 --- a/code/game/machinery/computer/camera_advanced.dm +++ b/code/game/machinery/computer/camera_advanced.dm @@ -154,7 +154,10 @@ if(!isturf(eye_user.loc)) return T = get_turf(T) - loc = T + if (T) + forceMove(T) + else + moveToNullspace() if(use_static) GLOB.cameranet.visibility(src) if(visible_icon) diff --git a/code/game/machinery/computer/message.dm b/code/game/machinery/computer/message.dm index 750551abda..a3ec6ba6ec 100644 --- a/code/game/machinery/computer/message.dm +++ b/code/game/machinery/computer/message.dm @@ -46,8 +46,7 @@ screen = 2 spark_system.set_up(5, 0, src) src.spark_system.start() - var/obj/item/paper/monitorkey/MK = new/obj/item/paper/monitorkey - MK.loc = src.loc + var/obj/item/paper/monitorkey/MK = new(loc) // Will help make emagging the console not so easy to get away with. MK.info += "

�%@%(*$%&(�&?*(%&�/{}" var/time = 100 * length(src.linkedServer.decryptkey) diff --git a/code/game/machinery/computer/prisoner.dm b/code/game/machinery/computer/prisoner.dm index d2005d0a55..5068955849 100644 --- a/code/game/machinery/computer/prisoner.dm +++ b/code/game/machinery/computer/prisoner.dm @@ -100,7 +100,7 @@ else if(inserted_id) switch(href_list["id"]) if("eject") - inserted_id.loc = get_turf(src) + inserted_id.forceMove(drop_location()) inserted_id.verb_pickup() inserted_id = null if("reset") diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm index 41c0fabcae..ae4af4072d 100644 --- a/code/game/machinery/firealarm.dm +++ b/code/game/machinery/firealarm.dm @@ -237,7 +237,7 @@ user.visible_message("[user] removes the fire alarm assembly from the wall.", \ "You remove the fire alarm assembly from the wall.") var/obj/item/wallframe/firealarm/frame = new /obj/item/wallframe/firealarm() - frame.loc = user.loc + frame.forceMove(user.drop_location()) playsound(src.loc, W.usesound, 50, 1) qdel(src) return diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index fa4a31cfc3..5a863e85da 100755 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -79,7 +79,7 @@ add_fingerprint(user) if(charging) charging.update_icon() - charging.loc = loc + charging.forceMove(drop_location()) user.put_in_hands(charging) charging = null use_power = IDLE_POWER_USE @@ -91,7 +91,7 @@ /obj/machinery/recharger/attack_tk(mob/user) if(charging) charging.update_icon() - charging.loc = loc + charging.forceMove(drop_location()) charging = null use_power = IDLE_POWER_USE update_icon() diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index ba41609fca..da56834fd9 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -750,7 +750,7 @@ icon_state = initial(icon_state) occupant = pilot_mob pilot_mob.mecha = src - pilot_mob.loc = src + pilot_mob.forceMove(src) GrantActions(pilot_mob)//needed for checks, and incase a badmin puts somebody in the mob /obj/mecha/proc/aimob_exit_mech(mob/living/simple_animal/hostile/syndicate/mecha_pilot/pilot_mob) @@ -961,7 +961,7 @@ if(istype(mob_container, /obj/item/device/mmi)) var/obj/item/device/mmi/mmi = mob_container if(mmi.brainmob) - L.loc = mmi + L.forceMove(mmi) L.reset_perspective() mmi.mecha = null mmi.update_icon() diff --git a/code/game/mecha/mecha_construction_paths.dm b/code/game/mecha/mecha_construction_paths.dm index c8de01badc..272d3530a6 100644 --- a/code/game/mecha/mecha_construction_paths.dm +++ b/code/game/mecha/mecha_construction_paths.dm @@ -524,7 +524,7 @@ else user.visible_message("[user] removes the advanced scanner module from the [holder].", "You remove the scanner module from the [holder].") var/obj/item/I = locate(/obj/item/stock_parts/scanning_module) in holder - I.loc = get_turf(holder) + I.forceMove(get_turf(holder)) holder.icon_state = "gygax10" if(11) if(diff==FORWARD) diff --git a/code/game/mecha/working/ripley.dm b/code/game/mecha/working/ripley.dm index 0da64c3e4d..5688214044 100644 --- a/code/game/mecha/working/ripley.dm +++ b/code/game/mecha/working/ripley.dm @@ -34,7 +34,7 @@ for(var/i=1, i <= hides, i++) new /obj/item/stack/sheet/animalhide/goliath_hide(loc) //If a goliath-plated ripley gets killed, all the plates drop for(var/atom/movable/A in cargo) - A.forceMove(loc) + A.forceMove(drop_location()) step_rand(A) cargo.Cut() return ..() @@ -130,7 +130,7 @@ var/obj/O = locate(href_list["drop_from_cargo"]) if(O && O in src.cargo) src.occupant_message("You unload [O].") - O.forceMove(loc) + O.forceMove(drop_location()) src.cargo -= O src.log_message("Unloaded [O]. Cargo compartment capacity: [cargo_capacity - src.cargo.len]") return @@ -141,7 +141,7 @@ var/obj/O = X if(prob(30/severity)) cargo -= O - O.forceMove(loc) + O.forceMove(drop_location()) . = ..() /obj/mecha/working/ripley/get_stats_part() @@ -173,7 +173,7 @@ if(!user || user.stat != CONSCIOUS || user.loc != src || O.loc != src ) return to_chat(user, "You successfully pushed [O] out of [src]!") - O.loc = loc + O.forceMove(drop_location()) cargo -= O else if(user.loc == src) //so we don't get the message if we resisted multiple times and succeeded. diff --git a/code/game/objects/effects/anomalies.dm b/code/game/objects/effects/anomalies.dm index e471efcf96..04737f2e4c 100644 --- a/code/game/objects/effects/anomalies.dm +++ b/code/game/objects/effects/anomalies.dm @@ -67,7 +67,7 @@ new /obj/effect/particle_effect/smoke/bad(loc) for(var/atom/movable/O in src) - O.loc = src.loc + O.forceMove(drop_location()) qdel(src) diff --git a/code/game/objects/effects/countdown.dm b/code/game/objects/effects/countdown.dm index 8448e2a7e7..2ed2105db3 100644 --- a/code/game/objects/effects/countdown.dm +++ b/code/game/objects/effects/countdown.dm @@ -24,7 +24,7 @@ /obj/effect/countdown/proc/attach(atom/A) attached_to = A - loc = get_turf(A) + forceMove(get_turf(A)) /obj/effect/countdown/proc/start() if(!started) diff --git a/code/game/objects/effects/decals/misc.dm b/code/game/objects/effects/decals/misc.dm index 2187bc6311..b32cb79313 100644 --- a/code/game/objects/effects/decals/misc.dm +++ b/code/game/objects/effects/decals/misc.dm @@ -8,7 +8,7 @@ /obj/effect/temp_visual/point/Initialize(mapload, set_invis = 0) . = ..() var/atom/old_loc = loc - loc = get_turf(src) + forceMove(get_turf(src)) pixel_x = old_loc.pixel_x pixel_y = old_loc.pixel_y invisibility = set_invis diff --git a/code/game/objects/effects/proximity.dm b/code/game/objects/effects/proximity.dm index 70128be7ee..51fb690ed0 100644 --- a/code/game/objects/effects/proximity.dm +++ b/code/game/objects/effects/proximity.dm @@ -63,7 +63,7 @@ for(var/I in 1 to old_checkers_len) if(I <= old_checkers_used) var/obj/effect/abstract/proximity_checker/pc = checkers_local[I] - pc.loc = turfs[I] + pc.forceMove(turfs[I]) else qdel(checkers_local[I]) //delete the leftovers diff --git a/code/game/objects/effects/spiders.dm b/code/game/objects/effects/spiders.dm index 0b1432e61c..89a5ce7353 100644 --- a/code/game/objects/effects/spiders.dm +++ b/code/game/objects/effects/spiders.dm @@ -121,7 +121,7 @@ /obj/structure/spider/spiderling/Collide(atom/user) if(istype(user, /obj/structure/table)) - src.loc = user.loc + forceMove(user.loc) else ..() @@ -145,7 +145,7 @@ "You hear something scampering through the ventilation ducts.") spawn(rand(20,60)) - loc = exit_vent + forceMove(exit_vent) var/travel_time = round(get_dist(loc, exit_vent.loc) / 2) spawn(travel_time) @@ -159,7 +159,7 @@ sleep(travel_time) if(!exit_vent || exit_vent.welded) - loc = entry_vent + forceMove(entry_vent) entry_vent = null return loc = exit_vent.loc diff --git a/code/game/objects/items/airlock_painter.dm b/code/game/objects/items/airlock_painter.dm index 8dece8461b..6c2c8e58b4 100644 --- a/code/game/objects/items/airlock_painter.dm +++ b/code/game/objects/items/airlock_painter.dm @@ -119,7 +119,7 @@ /obj/item/airlock_painter/attack_self(mob/user) if(ink) playsound(src.loc, 'sound/machines/click.ogg', 50, 1) - ink.loc = user.loc + ink.forceMove(user.drop_location()) user.put_in_hands(ink) to_chat(user, "You remove [ink] from [src].") ink = null diff --git a/code/game/objects/items/circuitboards/circuitboard.dm b/code/game/objects/items/circuitboards/circuitboard.dm index 4cdc0fc48a..82350e37f9 100644 --- a/code/game/objects/items/circuitboards/circuitboard.dm +++ b/code/game/objects/items/circuitboards/circuitboard.dm @@ -35,7 +35,7 @@ micro-manipulator, console screen, beaker, Microlaser, matter bin, power cells. return M.component_parts = list(src) // List of components always contains a board - loc = null + moveToNullspace() for(var/comp_path in req_components) var/comp_amt = req_components[comp_path] diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm index 777ec0318e..bbeed24168 100644 --- a/code/game/objects/items/defib.dm +++ b/code/game/objects/items/defib.dm @@ -302,7 +302,7 @@ ..() if(check_defib_exists(mainunit, src) && req_defib) defib = mainunit - loc = defib + forceMove(defib) busy = FALSE update_icon() diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm index f21c2a879d..886a248c8c 100644 --- a/code/game/objects/items/handcuffs.dm +++ b/code/game/objects/items/handcuffs.dm @@ -292,7 +292,7 @@ def_zone = pick("l_leg", "r_leg") if(!C.legcuffed && C.get_num_legs() >= 2) //beartrap can't cuff your leg if there's already a beartrap or legcuffs, or you don't have two legs. C.legcuffed = src - src.loc = C + forceMove(C) C.update_inv_legcuffed() SSblackbox.record_feedback("tally", "handcuffs", 1, type) else if(isanimal(L)) @@ -352,7 +352,7 @@ if(!C.legcuffed && C.get_num_legs() >= 2) visible_message("\The [src] ensnares [C]!") C.legcuffed = src - src.loc = C + forceMove(C) C.update_inv_legcuffed() SSblackbox.record_feedback("tally", "handcuffs", 1, type) to_chat(C, "\The [src] ensnares you!") diff --git a/code/game/objects/items/implants/implant.dm b/code/game/objects/items/implants/implant.dm index 315985adef..8b65341d02 100644 --- a/code/game/objects/items/implants/implant.dm +++ b/code/game/objects/items/implants/implant.dm @@ -1,3 +1,4 @@ +<<<<<<< HEAD /obj/item/implant name = "implant" icon = 'icons/obj/implants.dmi' @@ -95,3 +96,102 @@ /obj/item/implant/dropped(mob/user) . = 1 ..() +======= +/obj/item/implant + name = "implant" + icon = 'icons/obj/implants.dmi' + icon_state = "generic" //Shows up as the action button icon + actions_types = list(/datum/action/item_action/hands_free/activate) + var/activated = 1 //1 for implant types that can be activated, 0 for ones that are "always on" like mindshield implants + var/mob/living/imp_in = null + item_color = "b" + var/allow_multiple = FALSE + var/uses = -1 + flags_1 = DROPDEL_1 + + +/obj/item/implant/proc/trigger(emote, mob/living/carbon/source) + return + +/obj/item/implant/proc/activate() + return + +/obj/item/implant/ui_action_click() + activate("action_button") + +/obj/item/implant/proc/can_be_implanted_in(mob/living/target) // for human-only and other special requirements + return TRUE + +/mob/living/proc/can_be_implanted() + return TRUE + +/mob/living/silicon/can_be_implanted() + return FALSE + +/mob/living/simple_animal/can_be_implanted() + return healable //Applies to robots and most non-organics, exceptions can override. + + + +//What does the implant do upon injection? +//return 1 if the implant injects +//return 0 if there is no room for implant / it fails +/obj/item/implant/proc/implant(mob/living/target, mob/user, silent = 0) + LAZYINITLIST(target.implants) + if(!target.can_be_implanted() || !can_be_implanted_in(target)) + return 0 + for(var/X in target.implants) + if(istype(X, type)) + var/obj/item/implant/imp_e = X + if(!allow_multiple) + if(imp_e.uses < initial(imp_e.uses)*2) + if(uses == -1) + imp_e.uses = -1 + else + imp_e.uses = min(imp_e.uses + uses, initial(imp_e.uses)*2) + qdel(src) + return 1 + else + return 0 + + forceMove(target) + imp_in = target + target.implants += src + if(activated) + for(var/X in actions) + var/datum/action/A = X + A.Grant(target) + if(ishuman(target)) + var/mob/living/carbon/human/H = target + H.sec_hud_set_implants() + + if(user) + add_logs(user, target, "implanted", object="[name]") + + return 1 + +/obj/item/implant/proc/removed(mob/living/source, silent = 0, special = 0) + moveToNullspace() + imp_in = null + source.implants -= src + for(var/X in actions) + var/datum/action/A = X + A.Grant(source) + if(ishuman(source)) + var/mob/living/carbon/human/H = source + H.sec_hud_set_implants() + + return 1 + +/obj/item/implant/Destroy() + if(imp_in) + removed(imp_in) + return ..() + +/obj/item/implant/proc/get_data() + return "No information available" + +/obj/item/implant/dropped(mob/user) + . = 1 + ..() +>>>>>>> a162837... Replaces a bunch of loc assignments with forcemoves and moves to nullspace (#33465) diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm index 53814d9af6..6e21251b6e 100644 --- a/code/game/objects/items/melee/misc.dm +++ b/code/game/objects/items/melee/misc.dm @@ -220,7 +220,7 @@ return if(!isturf(src.loc)) var/atom/target = src.loc - loc = target.loc + forceMove(target.loc) consume_everything(target) else var/turf/T = get_turf(src) diff --git a/code/game/objects/items/pneumaticCannon.dm b/code/game/objects/items/pneumaticCannon.dm index b3960d1e5f..9bf0b949c0 100644 --- a/code/game/objects/items/pneumaticCannon.dm +++ b/code/game/objects/items/pneumaticCannon.dm @@ -216,7 +216,7 @@ if(!src.tank) return to_chat(user, "You detach \the [thetank] from \the [src].") - src.tank.loc = get_turf(user) + src.tank.forceMove(user.drop_location()) user.put_in_hands(tank) src.tank = null if(!removing) @@ -265,7 +265,7 @@ /obj/item/pneumatic_cannon/pie/Initialize() . = ..() allowed_typecache = pie_typecache - + /obj/item/pneumatic_cannon/pie/selfcharge automatic = TRUE selfcharge = TRUE diff --git a/code/game/objects/items/shooting_range.dm b/code/game/objects/items/shooting_range.dm index 6803d6bb7b..586d21555c 100644 --- a/code/game/objects/items/shooting_range.dm +++ b/code/game/objects/items/shooting_range.dm @@ -23,7 +23,7 @@ /obj/item/target/Move() ..() if(pinnedLoc) - pinnedLoc.loc = loc + pinnedLoc.forceMove(loc) /obj/item/target/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/weldingtool)) diff --git a/code/game/objects/items/storage/bags.dm b/code/game/objects/items/storage/bags.dm index afeffe0f1e..917ec898ad 100644 --- a/code/game/objects/items/storage/bags.dm +++ b/code/game/objects/items/storage/bags.dm @@ -199,7 +199,7 @@ else if(S.pulledby) S.pulledby.stop_pulling() - S.loc = src + S.forceMove(src) orient2hud(usr) if(usr.s_active) diff --git a/code/game/objects/items/tanks/watertank.dm b/code/game/objects/items/tanks/watertank.dm index 5f0345aa40..58aadadce0 100644 --- a/code/game/objects/items/tanks/watertank.dm +++ b/code/game/objects/items/tanks/watertank.dm @@ -49,7 +49,7 @@ 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() @@ -124,7 +124,7 @@ if(check_tank_exists(parent_tank, src)) tank = parent_tank reagents = tank.reagents //This mister is really just a proxy for the tank's reagents - loc = tank + forceMove(tank) return /obj/item/reagent_containers/spray/mister/dropped(mob/user) @@ -146,7 +146,7 @@ /obj/item/reagent_containers/spray/mister/Move() ..() if(loc != tank.loc) - loc = tank.loc + forceMove(tank.loc) /obj/item/reagent_containers/spray/mister/afterattack(obj/target, mob/user, proximity) if(target.loc == loc) //Safety check so you don't fill your mister with mutagen or something and then blast yourself in the face with it diff --git a/code/game/objects/structures/beds_chairs/bed.dm b/code/game/objects/structures/beds_chairs/bed.dm index ab285cbbd6..1a09c9c4c2 100644 --- a/code/game/objects/structures/beds_chairs/bed.dm +++ b/code/game/objects/structures/beds_chairs/bed.dm @@ -150,7 +150,7 @@ /obj/item/roller/robo/deploy_roller(mob/user, atom/location) if(loaded) var/obj/structure/bed/roller/R = loaded - R.loc = location + R.forceMove(location) user.visible_message("[user] deploys [loaded].", "You deploy [loaded].") loaded = null else diff --git a/code/game/objects/structures/crates_lockers/crates/bins.dm b/code/game/objects/structures/crates_lockers/crates/bins.dm index eb1b989ecd..a0e3902abe 100644 --- a/code/game/objects/structures/crates_lockers/crates/bins.dm +++ b/code/game/objects/structures/crates_lockers/crates/bins.dm @@ -1,3 +1,4 @@ +<<<<<<< HEAD /obj/structure/closet/crate/bin desc = "A trash bin, place your trash here for the janitor to collect." name = "trash bin" @@ -43,3 +44,50 @@ spawn(13) playsound(loc, close_sound, 15, 1, -3) update_icon() +======= +/obj/structure/closet/crate/bin + desc = "A trash bin, place your trash here for the janitor to collect." + name = "trash bin" + icon_state = "largebins" + open_sound = 'sound/effects/bin_open.ogg' + close_sound = 'sound/effects/bin_close.ogg' + anchored = TRUE + horizontal = FALSE + delivery_icon = null + +/obj/structure/closet/crate/bin/New() + ..() + update_icon() + +/obj/structure/closet/crate/bin/update_icon() + ..() + cut_overlays() + if(contents.len == 0) + add_overlay("largebing") + else if(contents.len >= storage_capacity) + add_overlay("largebinr") + else + add_overlay("largebino") + +/obj/structure/closet/crate/bin/attackby(obj/item/W, mob/user, params) + if(istype(W, /obj/item/storage/bag/trash)) + var/obj/item/storage/bag/trash/T = W + to_chat(user, "You fill the bag.") + for(var/obj/item/O in src) + if(T.can_be_inserted(O, 1)) + O.forceMove(T) + T.update_icon() + do_animate() + else if(istype(W, /obj/item/wrench)) + anchored = !anchored + playsound(src.loc, W.usesound, 75, 1) + else + return ..() + +/obj/structure/closet/crate/bin/proc/do_animate() + playsound(loc, open_sound, 15, 1, -3) + flick("animate_largebins", src) + spawn(13) + playsound(loc, close_sound, 15, 1, -3) + update_icon() +>>>>>>> a162837... Replaces a bunch of loc assignments with forcemoves and moves to nullspace (#33465) diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm index 8b3d2981e2..717b624839 100644 --- a/code/game/objects/structures/morgue.dm +++ b/code/game/objects/structures/morgue.dm @@ -301,7 +301,7 @@ GLOBAL_LIST_EMPTY(crematoriums) return if(!ismob(user) || user.lying || user.incapacitated()) return - O.loc = src.loc + O.forceMove(src.loc) if (user != O) visible_message("[user] stuffs [O] into [src].") return diff --git a/code/game/objects/structures/safe.dm b/code/game/objects/structures/safe.dm index 733dcf646d..9df47743a4 100644 --- a/code/game/objects/structures/safe.dm +++ b/code/game/objects/structures/safe.dm @@ -43,7 +43,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, canhear) @@ -97,10 +97,10 @@ FLOOR SAFES if(!ishuman(usr)) return var/mob/living/carbon/human/user = usr - + if(!user.canUseTopic(src)) return - + var/canhear = 0 if(user.is_holding_item_of_type(/obj/item/clothing/neck/stethoscope)) canhear = 1 diff --git a/code/game/objects/structures/transit_tubes/transit_tube_pod.dm b/code/game/objects/structures/transit_tubes/transit_tube_pod.dm index e93372b831..eabe4499a4 100644 --- a/code/game/objects/structures/transit_tubes/transit_tube_pod.dm +++ b/code/game/objects/structures/transit_tubes/transit_tube_pod.dm @@ -136,7 +136,7 @@ last_delay = current_tube.enter_delay(src, next_dir) sleep(last_delay) setDir(next_dir) - loc = next_loc // When moving from one tube to another, skip collision and such. + forceMove(next_loc) // When moving from one tube to another, skip collision and such. density = current_tube.density if(current_tube && current_tube.should_stop_pod(src, next_dir)) diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index 0e5675a5a0..9009a7171d 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -59,7 +59,7 @@ if(ishuman(user)) user.put_in_hands(I) else - I.loc = get_turf(src) + I.forceMove(drop_location()) to_chat(user, "You find [I] in the cistern.") w_items -= I.w_class else diff --git a/code/game/turfs/simulated/wall/misc_walls.dm b/code/game/turfs/simulated/wall/misc_walls.dm index 4d48c86934..ecc389af88 100644 --- a/code/game/turfs/simulated/wall/misc_walls.dm +++ b/code/game/turfs/simulated/wall/misc_walls.dm @@ -101,7 +101,7 @@ var/obj/structure/sign/poster/P = O P.roll_and_drop(src) else - O.loc = src + O.forceMove(src) /turf/closed/wall/clockwork/devastate_wall() for(var/i in 1 to 2) diff --git a/code/modules/admin/verbs/manipulate_organs.dm b/code/modules/admin/verbs/manipulate_organs.dm index 5edb1e7bca..3ff0ff75ac 100644 --- a/code/modules/admin/verbs/manipulate_organs.dm +++ b/code/modules/admin/verbs/manipulate_organs.dm @@ -55,5 +55,5 @@ else if(I) // Put the implant in case. var/obj/item/implantcase/case = new(get_turf(C)) case.imp = I - I.loc = case + I.forceMove(case) case.update_icon() diff --git a/code/modules/assembly/bomb.dm b/code/modules/assembly/bomb.dm index 1502b88718..18fda04a1b 100644 --- a/code/modules/assembly/bomb.dm +++ b/code/modules/assembly/bomb.dm @@ -115,13 +115,16 @@ air_contents.assert_gases(/datum/gas/plasma, /datum/gas/oxygen) var/fuel_moles = air_contents.gases[/datum/gas/plasma][MOLES] + air_contents.gases[/datum/gas/oxygen][MOLES]/6 air_contents.garbage_collect() - + var/datum/gas_mixture/bomb_mixture = air_contents.copy() var/strength = 1 var/turf/ground_zero = get_turf(loc) - loc = null - if(air_contents.temperature > (T0C + 400)) + if(master) + qdel(master) + qdel(src) + + if(bomb_mixture.temperature > (T0C + 400)) strength = (fuel_moles/15) if(strength >=1) @@ -131,10 +134,10 @@ else if(strength >=0.2) explosion(ground_zero, -1, 0, 1, 2) else - ground_zero.assume_air(air_contents) + ground_zero.assume_air(bomb_mixture) ground_zero.hotspot_expose(1000, 125) - else if(air_contents.temperature > (T0C + 250)) + else if(bomb_mixture.temperature > (T0C + 250)) strength = (fuel_moles/20) if(strength >=1) @@ -142,26 +145,23 @@ else if (strength >=0.5) explosion(ground_zero, -1, 0, 1, 2) else - ground_zero.assume_air(air_contents) + ground_zero.assume_air(bomb_mixture) ground_zero.hotspot_expose(1000, 125) - else if(air_contents.temperature > (T0C + 100)) + else if(bomb_mixture.temperature > (T0C + 100)) strength = (fuel_moles/25) if (strength >=1) explosion(ground_zero, -1, 0, round(strength,1), round(strength*3,1)) else - ground_zero.assume_air(air_contents) + ground_zero.assume_air(bomb_mixture) ground_zero.hotspot_expose(1000, 125) else - ground_zero.assume_air(air_contents) + ground_zero.assume_air(bomb_mixture) ground_zero.hotspot_expose(1000, 125) - air_update_turf() - if(master) - qdel(master) - qdel(src) + ground_zero.air_update_turf() /obj/item/tank/proc/release() //This happens when the bomb is not welded. Tank contents are just spat out. var/datum/gas_mixture/removed = air_contents.remove(air_contents.total_moles()) diff --git a/code/modules/cargo/order.dm b/code/modules/cargo/order.dm index 5fb6cee2b7..1b31c8f4c2 100644 --- a/code/modules/cargo/order.dm +++ b/code/modules/cargo/order.dm @@ -55,6 +55,7 @@ /datum/supply_order/proc/generateManifest(obj/structure/closet/crate/C) var/obj/item/paper/fluff/jobs/cargo/manifest/P = new(C, id, pack.cost) +<<<<<<< HEAD var/station_name = (P.errors & MANIFEST_ERROR_NAME) ? new_station_name() : station_name() @@ -85,6 +86,38 @@ /datum/supply_order/proc/generate(turf/T) var/obj/structure/closet/crate/C = pack.generate(T) +======= + + var/station_name = (P.errors & MANIFEST_ERROR_NAME) ? new_station_name() : station_name() + + P.name = "shipping manifest - #[id] ([pack.name])" + P.info += "

[command_name()] Shipping Manifest

" + P.info += "
" + P.info += "Order #[id]
" + P.info += "Destination: [station_name]
" + P.info += "Item: [pack.name]
" + P.info += "Contents:
" + P.info += "" + P.info += "

Stamp below to confirm receipt of goods:

" + + P.update_icon() + P.forceMove(C) + C.manifest = P + C.update_icon() + + return P + +/datum/supply_order/proc/generate(turf/T) + var/obj/structure/closet/crate/C = pack.generate(T) +>>>>>>> a162837... Replaces a bunch of loc assignments with forcemoves and moves to nullspace (#33465) var/obj/item/paper/fluff/jobs/cargo/manifest/M = generateManifest(C) if(M.errors & MANIFEST_ERROR_ITEM) diff --git a/code/modules/clothing/spacesuits/chronosuit.dm b/code/modules/clothing/spacesuits/chronosuit.dm index a2b5a864c4..1715636b57 100644 --- a/code/modules/clothing/spacesuits/chronosuit.dm +++ b/code/modules/clothing/spacesuits/chronosuit.dm @@ -271,29 +271,29 @@ target_ui = null /obj/effect/chronos_cam/relaymove(var/mob/user, direction) - if(holder) - if(user == holder) - if(loc == user) - loc = get_turf(user) - if(user.client && user.client.eye != src) - src.loc = get_turf(user) - user.reset_perspective(src) - user.set_machine(src) - var/atom/step = get_step(src, direction) - if(step) - if((step.x <= TRANSITIONEDGE) || (step.x >= (world.maxx - TRANSITIONEDGE - 1)) || (step.y <= TRANSITIONEDGE) || (step.y >= (world.maxy - TRANSITIONEDGE - 1))) - if(!src.Move(step)) - src.loc = step - else - src.loc = step - if((x == holder.x) && (y == holder.y) && (z == holder.z)) - remove_target_ui() - loc = user - else if(!target_ui) - create_target_ui() - phase_time = world.time + phase_time_length - else + if(!holder) qdel(src) + return + if(user == holder) + if(loc == user) + forceMove(get_turf(user)) + if(user.client && user.client.eye != src) + src.loc = get_turf(user) + user.reset_perspective(src) + user.set_machine(src) + var/atom/step = get_step(src, direction) + if(step) + if((step.x <= TRANSITIONEDGE) || (step.x >= (world.maxx - TRANSITIONEDGE - 1)) || (step.y <= TRANSITIONEDGE) || (step.y >= (world.maxy - TRANSITIONEDGE - 1))) + if(!src.Move(step)) + src.loc = step + else + src.loc = step + if((x == holder.x) && (y == holder.y) && (z == holder.z)) + remove_target_ui() + loc = user + else if(!target_ui) + create_target_ui() + phase_time = world.time + phase_time_length /obj/effect/chronos_cam/check_eye(mob/user) if(user != holder) diff --git a/code/modules/food_and_drinks/food/snacks.dm b/code/modules/food_and_drinks/food/snacks.dm index a8ea51a99c..49f85a882d 100644 --- a/code/modules/food_and_drinks/food/snacks.dm +++ b/code/modules/food_and_drinks/food/snacks.dm @@ -276,7 +276,7 @@ /obj/item/reagent_containers/food/snacks/Destroy() if(contents) for(var/atom/movable/something in contents) - something.loc = get_turf(src) + something.forceMove(drop_location()) return ..() /obj/item/reagent_containers/food/snacks/attack_animal(mob/M) diff --git a/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm b/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm index 765b5ff891..8573a84c9b 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm @@ -119,7 +119,7 @@ else for(var/obj/O in contents) if(sanitize(O.name) == href_list["dispense"]) - O.loc = src.loc + O.forceMove(drop_location()) break if(href_list["portion"]) diff --git a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm index 9d7b6cb203..9f76139151 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm @@ -284,7 +284,7 @@ /obj/machinery/microwave/proc/dispose() for (var/obj/O in contents) - O.loc = src.loc + O.forceMove(drop_location()) to_chat(usr, "You dispose of the microwave contents.") updateUsrDialog() diff --git a/code/modules/food_and_drinks/kitchen_machinery/processor.dm b/code/modules/food_and_drinks/kitchen_machinery/processor.dm index 8b10bdf2a6..6d8797b7a8 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/processor.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/processor.dm @@ -178,9 +178,9 @@ /obj/machinery/processor/proc/empty() for (var/obj/O in src) - O.loc = src.loc + O.forceMove(drop_location()) for (var/mob/M in src) - M.loc = src.loc + M.forceMove(drop_location()) return /obj/machinery/processor/slime diff --git a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm index 46e2f3ea5f..750b5524bb 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm @@ -301,10 +301,10 @@ if(S.dried_type == S.type)//if the dried type is the same as the object's type, don't bother creating a whole new item... S.add_atom_colour("#ad7257", FIXED_COLOUR_PRIORITY) S.dry = TRUE - S.loc = get_turf(src) + S.forceMove(drop_location()) else var/dried = S.dried_type - new dried(src.loc) + new dried(drop_location()) qdel(S) return TRUE for(var/obj/item/stack/sheet/wetleather/WL in contents) diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm index 339a6efb33..1e298604eb 100644 --- a/code/modules/mining/machine_vending.dm +++ b/code/modules/mining/machine_vending.dm @@ -110,7 +110,7 @@ if(istype(inserted_id)) if(href_list["choice"] == "eject") to_chat(usr, "You eject the ID from [src]'s card slot.") - inserted_id.loc = loc + inserted_id.forceMove(loc) inserted_id.verb_pickup() inserted_id = null else if(href_list["choice"] == "insert") diff --git a/code/modules/mining/minebot.dm b/code/modules/mining/minebot.dm index dbefd0419d..7caf57b0a6 100644 --- a/code/modules/mining/minebot.dm +++ b/code/modules/mining/minebot.dm @@ -132,11 +132,11 @@ /mob/living/simple_animal/hostile/mining_drone/proc/CollectOre() var/obj/item/ore/O for(O in src.loc) - O.loc = src + O.forceMove(src) for(var/dir in GLOB.alldirs) var/turf/T = get_step(src,dir) for(O in T) - O.loc = src + O.forceMove(src) return /mob/living/simple_animal/hostile/mining_drone/proc/DropOre(message = 1) @@ -148,7 +148,7 @@ to_chat(src, "You dump your stored ore.") for(var/obj/item/ore/O in contents) contents -= O - O.loc = src.loc + O.forceMove(drop_location()) return /mob/living/simple_animal/hostile/mining_drone/adjustHealth(amount) diff --git a/code/modules/mining/mint.dm b/code/modules/mining/mint.dm index fef21757d1..fe4c2fab84 100644 --- a/code/modules/mining/mint.dm +++ b/code/modules/mining/mint.dm @@ -100,4 +100,4 @@ if(!M) M = new /obj/item/storage/bag/money(src) unload_mineral(M) - O.loc = M \ No newline at end of file + O.forceMove(M) diff --git a/code/modules/mob/living/brain/brain.dm b/code/modules/mob/living/brain/brain.dm index c175acf9d6..365fe5cb01 100644 --- a/code/modules/mob/living/brain/brain.dm +++ b/code/modules/mob/living/brain/brain.dm @@ -12,8 +12,8 @@ stored_dna.initialize_dna(random_blood_type()) if(isturf(loc)) //not spawned in an MMI or brain organ (most likely adminspawned) var/obj/item/organ/brain/OB = new(loc) //we create a new brain organ for it. - loc = OB OB.brainmob = src + forceMove(OB) /mob/living/brain/proc/create_dna() @@ -71,3 +71,16 @@ var/obj/mecha/M = MMI.mecha if((src == MMI.brainmob) && istype(M)) return M.click_action(A,src,params) + +/mob/living/brain/forceMove(atom/destination) + if(container) + return container.forceMove(destination) + else if (istype(loc, /obj/item/organ/brain)) + var/obj/item/organ/brain/B = loc + B.forceMove(destination) + else if (istype(destination, /obj/item/organ/brain)) + doMove(destination) + else if (istype(destination, /obj/item/device/mmi)) + doMove(destination) + else + CRASH("Brainmob without a container [src] attempted to move to [destination].") diff --git a/code/modules/mob/living/brain/brain_item.dm b/code/modules/mob/living/brain/brain_item.dm index 335d088f92..db48302f49 100644 --- a/code/modules/mob/living/brain/brain_item.dm +++ b/code/modules/mob/living/brain/brain_item.dm @@ -27,7 +27,7 @@ if(C.mind && C.mind.has_antag_datum(/datum/antagonist/changeling) && !no_id_transfer) //congrats, you're trapped in a body you don't control if(brainmob && !(C.stat == DEAD || (C.status_flags & FAKEDEATH))) to_chat(brainmob, "You can't feel your body! You're still just a brain!") - loc = C + forceMove(C) C.update_hair() return diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 7c91dd1ce6..3ca234434c 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1028,3 +1028,15 @@ if(mind && mind.linglink) return LINGHIVE_LINK return LINGHIVE_NONE + +/mob/living/forceMove(atom/destination) + stop_pulling() + if(buckled) + buckled.unbuckle_mob(src, force = TRUE) + if(has_buckled_mobs()) + unbuckle_all_mobs(force = TRUE) + . = ..() + if(.) + if(client) + reset_perspective(destination) + update_canmove() //if the mob was asleep inside a container and then got forceMoved out we need to make them fall. \ No newline at end of file diff --git a/code/modules/mob/living/silicon/ai/freelook/eye.dm b/code/modules/mob/living/silicon/ai/freelook/eye.dm index a42a2f7890..1d2598c63d 100644 --- a/code/modules/mob/living/silicon/ai/freelook/eye.dm +++ b/code/modules/mob/living/silicon/ai/freelook/eye.dm @@ -21,7 +21,10 @@ if(!isturf(ai.loc)) return T = get_turf(T) - loc = T + if (T) + forceMove(T) + else + moveToNullspace() // ???? if(use_static) GLOB.cameranet.visibility(src) if(ai.client) diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index 8853b07445..b12430d26d 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -99,7 +99,7 @@ var/newcardloc = P P = new /obj/item/device/paicard(newcardloc) P.setPersonality(src) - loc = P + forceMove(P) card = P sradio = new(src) if(!radio) diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm index e7116db53e..fda0e31851 100644 --- a/code/modules/mob/living/simple_animal/bot/mulebot.dm +++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm @@ -93,7 +93,7 @@ "You insert the new cell into [src].") else if(istype(I, /obj/item/crowbar) && open && cell) cell.add_fingerprint(usr) - cell.loc = loc + cell.forceMove(loc) cell = null visible_message("[user] crowbars out the power cell from [src].", "You pry the powercell out of [src].") @@ -363,7 +363,7 @@ if(!load_mob(AM)) return else - AM.loc = src + AM.forceMove(src) load = AM mode = BOT_IDLE @@ -402,7 +402,7 @@ unbuckle_all_mobs() if(load) - load.loc = loc + load.forceMove(loc) load.pixel_y = initial(load.pixel_y) load.layer = initial(load.layer) load.plane = initial(load.plane) diff --git a/code/modules/mob/living/simple_animal/friendly/drone/inventory.dm b/code/modules/mob/living/simple_animal/friendly/drone/inventory.dm index 378a5cce2d..aac87829bc 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/inventory.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/inventory.dm @@ -58,7 +58,7 @@ I.pulledby.stop_pulling() I.screen_loc = null // will get moved if inventory is visible - I.loc = src + I.forceMove(src) I.layer = ABOVE_HUD_LAYER I.plane = ABOVE_HUD_PLANE diff --git a/code/modules/mob/living/simple_animal/guardian/guardian.dm b/code/modules/mob/living/simple_animal/guardian/guardian.dm index 222369dd55..577eba1858 100644 --- a/code/modules/mob/living/simple_animal/guardian/guardian.dm +++ b/code/modules/mob/living/simple_animal/guardian/guardian.dm @@ -257,7 +257,7 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians I.pulledby.stop_pulling() I.screen_loc = null // will get moved if inventory is visible - I.loc = src + I.forceMove(src) I.equipped(src, slot) I.layer = ABOVE_HUD_LAYER I.plane = ABOVE_HUD_PLANE diff --git a/code/modules/mob/living/simple_animal/guardian/types/explosive.dm b/code/modules/mob/living/simple_animal/guardian/types/explosive.dm index 1353293484..54ef51ad5a 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/explosive.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/explosive.dm @@ -54,7 +54,7 @@ /obj/guardian_bomb/proc/disguise(obj/A) - A.loc = src + A.forceMove(src) stored_obj = A opacity = A.opacity anchored = A.anchored diff --git a/code/modules/mob/living/simple_animal/hostile/headcrab.dm b/code/modules/mob/living/simple_animal/hostile/headcrab.dm index 530a1d3ffe..a42a79e02a 100644 --- a/code/modules/mob/living/simple_animal/hostile/headcrab.dm +++ b/code/modules/mob/living/simple_animal/hostile/headcrab.dm @@ -32,7 +32,7 @@ else if(mind) // Let's make this a feature egg.origin = mind for(var/obj/item/organ/I in src) - I.loc = egg + I.forceMove(egg) visible_message("[src] plants something in [victim]'s flesh!", \ "We inject our egg into [victim]'s body!") egg_lain = 1 diff --git a/code/modules/mob/living/simple_animal/hostile/mimic.dm b/code/modules/mob/living/simple_animal/hostile/mimic.dm index dd96c87371..670d571d4d 100644 --- a/code/modules/mob/living/simple_animal/hostile/mimic.dm +++ b/code/modules/mob/living/simple_animal/hostile/mimic.dm @@ -43,7 +43,7 @@ . = ..() if(mapload) //eat shit for(var/obj/item/I in loc) - I.loc = src + I.forceMove(src) /mob/living/simple_animal/hostile/mimic/crate/DestroyPathToTarget() ..() @@ -89,7 +89,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) ..() GLOBAL_LIST_INIT(protected_objects, list(/obj/structure/table, /obj/structure/cable, /obj/structure/window)) @@ -116,7 +116,7 @@ GLOBAL_LIST_INIT(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() @@ -136,7 +136,7 @@ GLOBAL_LIST_INIT(protected_objects, list(/obj/structure/table, /obj/structure/ca /mob/living/simple_animal/hostile/mimic/copy/proc/CopyObject(obj/O, mob/living/user, destroy_original = 0) if(destroy_original || CheckObject(O)) - O.loc = src + O.forceMove(src) name = O.name desc = O.desc icon = O.icon @@ -249,15 +249,15 @@ GLOBAL_LIST_INIT(protected_objects, list(/obj/structure/table, /obj/structure/ca ..() else visible_message("The [src] clears a jam!") - Pewgun.chambered.loc = loc //rip revolver immersions, blame shotgun snowflake procs + Pewgun.chambered.forceMove(loc) //rip revolver immersions, blame shotgun snowflake procs Pewgun.chambered = null if(Pewgun.magazine && Pewgun.magazine.stored_ammo.len) Pewgun.chambered = Pewgun.magazine.get_round(0) - Pewgun.chambered.loc = Pewgun + Pewgun.chambered.forceMove(Pewgun) Pewgun.update_icon() else if(Pewgun.magazine && Pewgun.magazine.stored_ammo.len) //only true for pumpguns i think Pewgun.chambered = Pewgun.magazine.get_round(0) - Pewgun.chambered.loc = Pewgun + Pewgun.chambered.forceMove(Pewgun) visible_message("The [src] cocks itself!") else ranged = 0 //BANZAIIII diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index de5d38e0bb..681f36e6d9 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -213,7 +213,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 GLOB.department_radio_keys) @@ -504,7 +504,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 [held_item]!", "You grab [held_item]!", "You hear the sounds of wings flapping furiously.") parrot_interest = null @@ -526,7 +526,7 @@ return if(Adjacent(parrot_perch)) - src.loc = parrot_perch.loc + forceMove(parrot_perch.loc) drop_held_item() parrot_state = PARROT_PERCH icon_state = icon_sit diff --git a/code/modules/paperwork/contract.dm b/code/modules/paperwork/contract.dm index 867c33e32a..3f23b8ba22 100644 --- a/code/modules/paperwork/contract.dm +++ b/code/modules/paperwork/contract.dm @@ -302,11 +302,11 @@ if(istype(worn, /obj/item/device/pda)) var/obj/item/device/pda/PDA = worn PDA.id = id - id.loc = worn + id.forceMove(worn) else if(istype(worn, /obj/item/storage/wallet)) var/obj/item/storage/wallet/W = worn W.front_id = id - id.loc = worn + id.forceMove(worn) worn.update_icon() var/datum/round_event/ion_storm/add_law_only/ion = new() ion.announceEvent = -1 diff --git a/code/modules/paperwork/filingcabinet.dm b/code/modules/paperwork/filingcabinet.dm index 21d157a33c..d1641d8add 100644 --- a/code/modules/paperwork/filingcabinet.dm +++ b/code/modules/paperwork/filingcabinet.dm @@ -36,7 +36,7 @@ if(mapload) for(var/obj/item/I in loc) if(istype(I, /obj/item/paper) || istype(I, /obj/item/folder) || istype(I, /obj/item/photo)) - I.loc = src + I.forceMove(src) /obj/structure/filingcabinet/deconstruct(disassembled = TRUE) if(!(flags_1 & NODECONSTRUCT_1)) @@ -90,7 +90,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) to_chat(user, "You pull \a [I] out of [src] at random.") @@ -184,7 +184,12 @@ GLOBAL_LIST_EMPTY(employmentCabinets) icon_state = "employmentcabinet" var/virgin = 1 +<<<<<<< HEAD /obj/structure/filingcabinet/employment/New() +======= +/obj/structure/filingcabinet/employment/Initialize() + . = ..() +>>>>>>> a162837... Replaces a bunch of loc assignments with forcemoves and moves to nullspace (#33465) GLOB.employmentCabinets += src return ..() diff --git a/code/modules/paperwork/paper_cutter.dm b/code/modules/paperwork/paper_cutter.dm index 4a85d03df7..fbf6e7b6e4 100644 --- a/code/modules/paperwork/paper_cutter.dm +++ b/code/modules/paperwork/paper_cutter.dm @@ -55,7 +55,7 @@ if(!user.transferItemToLoc(P, src)) return to_chat(user, "You replace [src]'s [P].") - P.loc = src + P.forceMove(src) storedcutter = P update_icon() return diff --git a/code/modules/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm index 962802aa6d..87dc0506f2 100644 --- a/code/modules/paperwork/paperbin.dm +++ b/code/modules/paperwork/paperbin.dm @@ -22,7 +22,7 @@ return var/obj/item/pen/P = locate(/obj/item/pen) in src.loc if(P && !bin_pen) - P.loc = src + P.forceMove(src) bin_pen = P update_icon() @@ -69,7 +69,7 @@ user.changeNext_move(CLICK_CD_MELEE) if(bin_pen) var/obj/item/pen/P = bin_pen - P.loc = user.loc + P.forceMove(user.loc) user.put_in_hands(P) to_chat(user, "You take [P] out of \the [src].") bin_pen = null @@ -90,7 +90,7 @@ P.rigged = 1 P.updateinfolinks() - P.loc = user.loc + P.forceMove(user.loc) user.put_in_hands(P) to_chat(user, "You take [P] out of \the [src].") else @@ -169,4 +169,4 @@ CHECK_TICK qdel(src) else - ..() \ No newline at end of file + ..() diff --git a/code/modules/projectiles/guns/grenade_launcher.dm b/code/modules/projectiles/guns/grenade_launcher.dm index d87a657710..771c0091e3 100644 --- a/code/modules/projectiles/guns/grenade_launcher.dm +++ b/code/modules/projectiles/guns/grenade_launcher.dm @@ -42,7 +42,7 @@ "You fire the grenade launcher!") var/obj/item/grenade/F = grenades[1] //Now with less copypasta! grenades -= F - F.loc = user.loc + F.forceMove(user.loc) F.throw_at(target, 30, 2, user) message_admins("[key_name_admin(user)] fired a grenade ([F.name]) from a grenade launcher ([src.name]).") log_game("[key_name(user)] fired a grenade ([F.name]) from a grenade launcher ([src.name]).") diff --git a/code/modules/projectiles/pins.dm b/code/modules/projectiles/pins.dm index 22f60c1609..faf7de9010 100644 --- a/code/modules/projectiles/pins.dm +++ b/code/modules/projectiles/pins.dm @@ -24,7 +24,7 @@ if(istype(target, /obj/item/gun)) var/obj/item/gun/G = target if(G.pin && (force_replace || G.pin.pin_removeable)) - G.pin.loc = get_turf(G) + G.pin.forceMove(get_turf(G)) G.pin.gun_remove(user) to_chat(user, "You remove [G]'s old pin.") diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index a10c264b9a..9b4842d644 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -285,7 +285,7 @@ to_chat(new_mob, poly_msg) M.transfer_observers_to(new_mob) - + qdel(M) return new_mob @@ -319,7 +319,7 @@ L.mind.transfer_to(S) if(owner) to_chat(S, "You are an animate statue. You cannot move when monitored, but are nearly invincible and deadly when unobserved! Do not harm [owner], your creator.") - P.loc = S + P.forceMove(S) return else var/obj/O = src diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm index 0bafcba54d..e7410685f7 100644 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -61,7 +61,7 @@ if(!user || user.stat != CONSCIOUS || user.loc != O || O.loc != src ) return to_chat(user, "You successfully removed [O]'s wrapping !") - O.loc = loc + O.forceMove(loc) playsound(src.loc, 'sound/items/poster_ripped.ogg', 50, 1) qdel(src) else diff --git a/code/modules/research/xenobiology/xenobio_camera.dm b/code/modules/research/xenobiology/xenobio_camera.dm index 576ba6fe8c..ca929e5e9a 100644 --- a/code/modules/research/xenobiology/xenobio_camera.dm +++ b/code/modules/research/xenobiology/xenobio_camera.dm @@ -99,7 +99,7 @@ if(GLOB.cameranet.checkTurfVis(remote_eye.loc)) for(var/mob/living/simple_animal/slime/S in X.stored_slimes) - S.loc = remote_eye.loc + S.forceMove(remote_eye.loc) S.visible_message("[S] warps in!") X.stored_slimes -= S else @@ -125,7 +125,7 @@ if(S.buckled) S.Feedstop(silent=1) S.visible_message("[S] vanishes in a flash of light!") - S.loc = X + S.forceMove(X) X.stored_slimes += S else to_chat(owner, "Target is not near a camera. Cannot proceed.") diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm index d573f9ce13..c4eb16305a 100644 --- a/code/modules/shuttle/emergency.dm +++ b/code/modules/shuttle/emergency.dm @@ -473,7 +473,7 @@ turfs -= T T = pick(turfs) else - src.loc = T + forceMove(T) break //Pod suits/pickaxes diff --git a/code/modules/surgery/bodyparts/dismemberment.dm b/code/modules/surgery/bodyparts/dismemberment.dm index 9784dd115c..4daeb9ea45 100644 --- a/code/modules/surgery/bodyparts/dismemberment.dm +++ b/code/modules/surgery/bodyparts/dismemberment.dm @@ -102,7 +102,7 @@ for(var/obj/item/I in embedded_objects) embedded_objects -= I - I.loc = src + I.forceMove(src) if(!C.has_embedded_objects()) C.clear_alert("embeddedobject") @@ -151,7 +151,7 @@ if(brainmob) LB.brainmob = brainmob brainmob = null - LB.brainmob.loc = LB + LB.brainmob.forceMove(LB) LB.brainmob.container = LB LB.brainmob.stat = DEAD @@ -167,7 +167,7 @@ ..() if(C && !special) if(C.handcuffed) - C.handcuffed.loc = C.loc + C.handcuffed.forceMove(C.loc) C.handcuffed.dropped(C) C.handcuffed = null C.update_handcuffed() @@ -185,7 +185,7 @@ ..() if(C && !special) if(C.handcuffed) - C.handcuffed.loc = C.loc + C.handcuffed.forceMove(C.loc) C.handcuffed.dropped(C) C.handcuffed = null C.update_handcuffed() @@ -201,7 +201,7 @@ /obj/item/bodypart/r_leg/drop_limb(special) if(owner && !special) if(owner.legcuffed) - owner.legcuffed.loc = owner.loc + owner.legcuffed.forceMove(owner.loc) owner.legcuffed.dropped(owner) owner.legcuffed = null owner.update_inv_legcuffed() @@ -212,7 +212,7 @@ /obj/item/bodypart/l_leg/drop_limb(special) //copypasta if(owner && !special) if(owner.legcuffed) - owner.legcuffed.loc = owner.loc + owner.legcuffed.forceMove(owner.loc) owner.legcuffed.dropped(owner) owner.legcuffed = null owner.update_inv_legcuffed() @@ -306,7 +306,7 @@ if(brain) if(brainmob) brainmob.container = null //Reset brainmob head var. - brainmob.loc = brain //Throw mob into brain. + brainmob.forceMove(brain) //Throw mob into brain. brain.brainmob = brainmob //Set the brain to use the brainmob brainmob = null //Set head brainmob var to null brain.Insert(C) //Now insert the brain proper diff --git a/code/modules/surgery/bodyparts/head.dm b/code/modules/surgery/bodyparts/head.dm index a4d317ad2a..f631400bee 100644 --- a/code/modules/surgery/bodyparts/head.dm +++ b/code/modules/surgery/bodyparts/head.dm @@ -41,10 +41,10 @@ user.visible_message("[user] saws [src] open and pulls out a brain!", "You saw [src] open and pull out a brain.") if(brainmob) brainmob.container = null - brainmob.loc = brain + brainmob.forceMove(brain) brain.brainmob = brainmob brainmob = null - brain.loc = T + brain.forceMove(T) brain = null update_icon_dropped() else diff --git a/code/modules/surgery/bodyparts/helpers.dm b/code/modules/surgery/bodyparts/helpers.dm index e460a8c97f..7ac387b4d8 100644 --- a/code/modules/surgery/bodyparts/helpers.dm +++ b/code/modules/surgery/bodyparts/helpers.dm @@ -118,7 +118,7 @@ var/obj/item/bodypart/L = X for(var/obj/item/I in L.embedded_objects) L.embedded_objects -= I - I.loc = T + I.forceMove(T) clear_alert("embeddedobject") diff --git a/code/modules/surgery/organ_manipulation.dm b/code/modules/surgery/organ_manipulation.dm index f477535dab..dc8b3543fa 100644 --- a/code/modules/surgery/organ_manipulation.dm +++ b/code/modules/surgery/organ_manipulation.dm @@ -176,7 +176,7 @@ "You successfully extract [I] from [target]'s [parse_zone(target_zone)].") add_logs(user, target, "surgically removed [I.name] from", addition="INTENT: [uppertext(user.a_intent)]") I.Remove(target) - I.loc = get_turf(target) + I.forceMove(get_turf(target)) else user.visible_message("[user] can't seem to extract anything from [target]'s [parse_zone(target_zone)]!", "You can't extract anything from [target]'s [parse_zone(target_zone)]!") diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm index 75d30ec352..a384845281 100644 --- a/code/modules/surgery/organs/organ_internal.dm +++ b/code/modules/surgery/organs/organ_internal.dm @@ -28,7 +28,7 @@ owner = M M.internal_organs |= src M.internal_organs_slot[slot] = src - loc = null + moveToNullspace() for(var/X in actions) var/datum/action/A = X A.Grant(M) diff --git a/code/modules/surgery/remove_embedded_object.dm b/code/modules/surgery/remove_embedded_object.dm index e116c23303..577541e6c4 100644 --- a/code/modules/surgery/remove_embedded_object.dm +++ b/code/modules/surgery/remove_embedded_object.dm @@ -26,7 +26,7 @@ var/objects = 0 for(var/obj/item/I in L.embedded_objects) objects++ - I.loc = get_turf(H) + I.forceMove(get_turf(H)) L.embedded_objects -= I if(!H.has_embedded_objects()) H.clear_alert("embeddedobject") @@ -39,4 +39,4 @@ else to_chat(user, "You can't find [target]'s [parse_zone(user.zone_selected)], let alone any objects embedded in it!") - return 1 \ No newline at end of file + return 1 diff --git a/code/modules/surgery/tools.dm b/code/modules/surgery/tools.dm index 78f29c1fc8..310513326a 100644 --- a/code/modules/surgery/tools.dm +++ b/code/modules/surgery/tools.dm @@ -212,7 +212,7 @@ add_overlay(img) add_overlay("evidence") desc = "An organ storage container holding [I]." - I.loc = src + I.forceMove(src) w_class = I.w_class /obj/item/organ_storage/attack_self(mob/user) From 08af4665b4cfe8f78215a0f40fa7cd8f05d6b742 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Wed, 13 Dec 2017 16:45:54 -0500 Subject: [PATCH 2/5] Update implant.dm --- code/game/objects/items/implants/implant.dm | 100 -------------------- 1 file changed, 100 deletions(-) diff --git a/code/game/objects/items/implants/implant.dm b/code/game/objects/items/implants/implant.dm index 8b65341d02..7ca82c1236 100644 --- a/code/game/objects/items/implants/implant.dm +++ b/code/game/objects/items/implants/implant.dm @@ -1,102 +1,3 @@ -<<<<<<< HEAD -/obj/item/implant - name = "implant" - icon = 'icons/obj/implants.dmi' - icon_state = "generic" //Shows up as the action button icon - actions_types = list(/datum/action/item_action/hands_free/activate) - var/activated = 1 //1 for implant types that can be activated, 0 for ones that are "always on" like mindshield implants - var/mob/living/imp_in = null - item_color = "b" - var/allow_multiple = FALSE - var/uses = -1 - flags_1 = DROPDEL_1 - - -/obj/item/implant/proc/trigger(emote, mob/living/carbon/source) - return - -/obj/item/implant/proc/activate() - return - -/obj/item/implant/ui_action_click() - activate("action_button") - -/obj/item/implant/proc/can_be_implanted_in(mob/living/target) // for human-only and other special requirements - return TRUE - -/mob/living/proc/can_be_implanted() - return TRUE - -/mob/living/silicon/can_be_implanted() - return FALSE - -/mob/living/simple_animal/can_be_implanted() - return healable //Applies to robots and most non-organics, exceptions can override. - - - -//What does the implant do upon injection? -//return 1 if the implant injects -//return 0 if there is no room for implant / it fails -/obj/item/implant/proc/implant(mob/living/target, mob/user, silent = 0) - LAZYINITLIST(target.implants) - if(!target.can_be_implanted() || !can_be_implanted_in(target)) - return 0 - for(var/X in target.implants) - if(istype(X, type)) - var/obj/item/implant/imp_e = X - if(!allow_multiple) - if(imp_e.uses < initial(imp_e.uses)*2) - if(uses == -1) - imp_e.uses = -1 - else - imp_e.uses = min(imp_e.uses + uses, initial(imp_e.uses)*2) - qdel(src) - return 1 - else - return 0 - - src.loc = target - imp_in = target - target.implants += src - if(activated) - for(var/X in actions) - var/datum/action/A = X - A.Grant(target) - if(ishuman(target)) - var/mob/living/carbon/human/H = target - H.sec_hud_set_implants() - - if(user) - add_logs(user, target, "implanted", object="[name]") - - return 1 - -/obj/item/implant/proc/removed(mob/living/source, silent = 0, special = 0) - src.loc = null - imp_in = null - source.implants -= src - for(var/X in actions) - var/datum/action/A = X - A.Grant(source) - if(ishuman(source)) - var/mob/living/carbon/human/H = source - H.sec_hud_set_implants() - - return 1 - -/obj/item/implant/Destroy() - if(imp_in) - removed(imp_in) - return ..() - -/obj/item/implant/proc/get_data() - return "No information available" - -/obj/item/implant/dropped(mob/user) - . = 1 - ..() -======= /obj/item/implant name = "implant" icon = 'icons/obj/implants.dmi' @@ -194,4 +95,3 @@ /obj/item/implant/dropped(mob/user) . = 1 ..() ->>>>>>> a162837... Replaces a bunch of loc assignments with forcemoves and moves to nullspace (#33465) From bd2010eabbcb5678e861a69d462f66aafd0722b8 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Wed, 13 Dec 2017 16:46:18 -0500 Subject: [PATCH 3/5] Update bins.dm --- .../structures/crates_lockers/crates/bins.dm | 48 ------------------- 1 file changed, 48 deletions(-) diff --git a/code/game/objects/structures/crates_lockers/crates/bins.dm b/code/game/objects/structures/crates_lockers/crates/bins.dm index a0e3902abe..4f385f43a5 100644 --- a/code/game/objects/structures/crates_lockers/crates/bins.dm +++ b/code/game/objects/structures/crates_lockers/crates/bins.dm @@ -1,50 +1,3 @@ -<<<<<<< HEAD -/obj/structure/closet/crate/bin - desc = "A trash bin, place your trash here for the janitor to collect." - name = "trash bin" - icon_state = "largebins" - open_sound = 'sound/effects/bin_open.ogg' - close_sound = 'sound/effects/bin_close.ogg' - anchored = TRUE - horizontal = FALSE - delivery_icon = null - -/obj/structure/closet/crate/bin/New() - ..() - update_icon() - -/obj/structure/closet/crate/bin/update_icon() - ..() - cut_overlays() - if(contents.len == 0) - add_overlay("largebing") - else if(contents.len >= storage_capacity) - add_overlay("largebinr") - else - add_overlay("largebino") - -/obj/structure/closet/crate/bin/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/storage/bag/trash)) - var/obj/item/storage/bag/trash/T = W - to_chat(user, "You fill the bag.") - for(var/obj/item/O in src) - if(T.can_be_inserted(O, 1)) - O.loc = T - T.update_icon() - do_animate() - else if(istype(W, /obj/item/wrench)) - anchored = !anchored - playsound(src.loc, W.usesound, 75, 1) - else - return ..() - -/obj/structure/closet/crate/bin/proc/do_animate() - playsound(loc, open_sound, 15, 1, -3) - flick("animate_largebins", src) - spawn(13) - playsound(loc, close_sound, 15, 1, -3) - update_icon() -======= /obj/structure/closet/crate/bin desc = "A trash bin, place your trash here for the janitor to collect." name = "trash bin" @@ -90,4 +43,3 @@ spawn(13) playsound(loc, close_sound, 15, 1, -3) update_icon() ->>>>>>> a162837... Replaces a bunch of loc assignments with forcemoves and moves to nullspace (#33465) From da0ecad1eebc8ca63b7ce51ce9a09d2b9066a78d Mon Sep 17 00:00:00 2001 From: deathride58 Date: Wed, 13 Dec 2017 16:47:00 -0500 Subject: [PATCH 4/5] Update order.dm --- code/modules/cargo/order.dm | 155 ++++++++++++++---------------------- 1 file changed, 61 insertions(+), 94 deletions(-) diff --git a/code/modules/cargo/order.dm b/code/modules/cargo/order.dm index 1b31c8f4c2..de8966bd3a 100644 --- a/code/modules/cargo/order.dm +++ b/code/modules/cargo/order.dm @@ -1,92 +1,60 @@ /obj/item/paper/fluff/jobs/cargo/manifest - var/order_cost = 0 - var/order_id = 0 - var/errors = 0 - + var/order_cost = 0 + var/order_id = 0 + var/errors = 0 + /obj/item/paper/fluff/jobs/cargo/manifest/New(atom/A, id, cost) - ..() - order_id = id - order_cost = cost - - if(prob(MANIFEST_ERROR_CHANCE)) - errors |= MANIFEST_ERROR_NAME - if(prob(MANIFEST_ERROR_CHANCE)) - errors |= MANIFEST_ERROR_CONTENTS - if(prob(MANIFEST_ERROR_CHANCE)) - errors |= MANIFEST_ERROR_ITEM - + ..() + order_id = id + order_cost = cost + + if(prob(MANIFEST_ERROR_CHANCE)) + errors |= MANIFEST_ERROR_NAME + if(prob(MANIFEST_ERROR_CHANCE)) + errors |= MANIFEST_ERROR_CONTENTS + if(prob(MANIFEST_ERROR_CHANCE)) + errors |= MANIFEST_ERROR_ITEM + /obj/item/paper/fluff/jobs/cargo/manifest/proc/is_approved() - return stamped && stamped.len && !is_denied() - + return stamped && stamped.len && !is_denied() + /obj/item/paper/fluff/jobs/cargo/manifest/proc/is_denied() - return stamped && ("stamp-deny" in stamped) - -/datum/supply_order - var/id - var/orderer - var/orderer_rank - var/orderer_ckey - var/reason - var/datum/supply_pack/pack - -/datum/supply_order/New(datum/supply_pack/pack, orderer, orderer_rank, orderer_ckey, reason) - id = SSshuttle.ordernum++ - src.pack = pack - src.orderer = orderer - src.orderer_rank = orderer_rank - src.orderer_ckey = orderer_ckey - src.reason = reason - -/datum/supply_order/proc/generateRequisition(turf/T) - var/obj/item/paper/P = new(T) - - P.name = "requisition form - #[id] ([pack.name])" - P.info += "

[station_name()] Supply Requisition

" - P.info += "
" - P.info += "Order #[id]
" - P.info += "Item: [pack.name]
" - P.info += "Access Restrictions: [get_access_desc(pack.access)]
" - P.info += "Requested by: [orderer]
" - P.info += "Rank: [orderer_rank]
" - P.info += "Comment: [reason]
" - - P.update_icon() - return P - -/datum/supply_order/proc/generateManifest(obj/structure/closet/crate/C) + return stamped && ("stamp-deny" in stamped) + +/datum/supply_order + var/id + var/orderer + var/orderer_rank + var/orderer_ckey + var/reason + var/datum/supply_pack/pack + +/datum/supply_order/New(datum/supply_pack/pack, orderer, orderer_rank, orderer_ckey, reason) + id = SSshuttle.ordernum++ + src.pack = pack + src.orderer = orderer + src.orderer_rank = orderer_rank + src.orderer_ckey = orderer_ckey + src.reason = reason + +/datum/supply_order/proc/generateRequisition(turf/T) + var/obj/item/paper/P = new(T) + + P.name = "requisition form - #[id] ([pack.name])" + P.info += "

[station_name()] Supply Requisition

" + P.info += "
" + P.info += "Order #[id]
" + P.info += "Item: [pack.name]
" + P.info += "Access Restrictions: [get_access_desc(pack.access)]
" + P.info += "Requested by: [orderer]
" + P.info += "Rank: [orderer_rank]
" + P.info += "Comment: [reason]
" + + P.update_icon() + return P + +/datum/supply_order/proc/generateManifest(obj/structure/closet/crate/C) var/obj/item/paper/fluff/jobs/cargo/manifest/P = new(C, id, pack.cost) -<<<<<<< HEAD - - var/station_name = (P.errors & MANIFEST_ERROR_NAME) ? new_station_name() : station_name() - - P.name = "shipping manifest - #[id] ([pack.name])" - P.info += "

[command_name()] Shipping Manifest

" - P.info += "
" - P.info += "Order #[id]
" - P.info += "Destination: [station_name]
" - P.info += "Item: [pack.name]
" - P.info += "Contents:
" - P.info += "
    " - for(var/atom/movable/AM in C.contents - P) - if((P.errors & MANIFEST_ERROR_CONTENTS)) - if(prob(50)) - P.info += "
  • [AM.name]
  • " - else - continue - P.info += "
  • [AM.name]
  • " - P.info += "
" - P.info += "

Stamp below to confirm receipt of goods:

" - - P.update_icon() - P.loc = C - C.manifest = P - C.update_icon() - - return P - -/datum/supply_order/proc/generate(turf/T) - var/obj/structure/closet/crate/C = pack.generate(T) -======= var/station_name = (P.errors & MANIFEST_ERROR_NAME) ? new_station_name() : station_name() @@ -117,14 +85,13 @@ /datum/supply_order/proc/generate(turf/T) var/obj/structure/closet/crate/C = pack.generate(T) ->>>>>>> a162837... Replaces a bunch of loc assignments with forcemoves and moves to nullspace (#33465) var/obj/item/paper/fluff/jobs/cargo/manifest/M = generateManifest(C) - - if(M.errors & MANIFEST_ERROR_ITEM) - if(istype(C, /obj/structure/closet/crate/secure) || istype(C, /obj/structure/closet/crate/large)) - M.errors &= ~MANIFEST_ERROR_ITEM - else - var/lost = max(round(C.contents.len / 10), 1) - while(--lost >= 0) - qdel(pick(C.contents)) - return C + + if(M.errors & MANIFEST_ERROR_ITEM) + if(istype(C, /obj/structure/closet/crate/secure) || istype(C, /obj/structure/closet/crate/large)) + M.errors &= ~MANIFEST_ERROR_ITEM + else + var/lost = max(round(C.contents.len / 10), 1) + while(--lost >= 0) + qdel(pick(C.contents)) + return C From a6220057bea038c015630c8ecf9cdf90ab1770d3 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Wed, 13 Dec 2017 16:47:29 -0500 Subject: [PATCH 5/5] Update filingcabinet.dm --- code/modules/paperwork/filingcabinet.dm | 4 ---- 1 file changed, 4 deletions(-) diff --git a/code/modules/paperwork/filingcabinet.dm b/code/modules/paperwork/filingcabinet.dm index d1641d8add..0d963d4be8 100644 --- a/code/modules/paperwork/filingcabinet.dm +++ b/code/modules/paperwork/filingcabinet.dm @@ -184,12 +184,8 @@ GLOBAL_LIST_EMPTY(employmentCabinets) icon_state = "employmentcabinet" var/virgin = 1 -<<<<<<< HEAD -/obj/structure/filingcabinet/employment/New() -======= /obj/structure/filingcabinet/employment/Initialize() . = ..() ->>>>>>> a162837... Replaces a bunch of loc assignments with forcemoves and moves to nullspace (#33465) GLOB.employmentCabinets += src return ..()