diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm
index 0718548b03..bdd34e8d23 100644
--- a/code/game/machinery/syndicatebomb.dm
+++ b/code/game/machinery/syndicatebomb.dm
@@ -140,7 +140,7 @@
if(open_panel && wires.is_all_cut())
if(payload)
to_chat(user, "You carefully pry out [payload].")
- payload.loc = user.loc
+ payload.forceMove(drop_location())
payload = null
else
to_chat(user, "There isn't anything in here to remove!")
@@ -206,14 +206,14 @@
var/new_timer = input(user, "Please set the timer.", "Timer", "[timer_set]") as num
if(in_range(src, user) && isliving(user)) //No running off and setting bombs from across the station
timer_set = Clamp(new_timer, minimum_timer, maximum_timer)
- src.loc.visible_message("[icon2html(src, viewers(src))] timer set for [timer_set] seconds.")
+ loc.visible_message("[icon2html(src, viewers(src))] timer set for [timer_set] seconds.")
if(alert(user,"Would you like to start the countdown now?",,"Yes","No") == "Yes" && in_range(src, user) && isliving(user))
if(defused || active)
if(defused)
- src.loc.visible_message("[icon2html(src, viewers(src))] Device error: User intervention required.")
+ visible_message("[icon2html(src, viewers(src))] Device error: User intervention required.")
return
else
- src.loc.visible_message("[icon2html(src, viewers(loc))] [timer_set] seconds until detonation, please clear the area.")
+ visible_message("[icon2html(src, viewers(loc))] [timer_set] seconds until detonation, please clear the area.")
activate()
update_icon()
add_fingerprint(user)
@@ -223,7 +223,7 @@
if(payload && !istype(payload, /obj/item/bombcore/training))
message_admins("[ADMIN_LOOKUPFLW(user)] has primed a [name] ([payload]) for detonation at [A.name] [ADMIN_JMP(bombturf)].")
log_game("[key_name(user)] has primed a [name] ([payload]) for detonation at [A.name][COORD(bombturf)]")
- payload.adminlog = "The [src.name] that [key_name(user)] had primed detonated!"
+ payload.adminlog = "The [name] that [key_name(user)] had primed detonated!"
///Bomb Subtypes///
@@ -359,7 +359,7 @@
var/amt_summon = 1
/obj/item/bombcore/badmin/summon/detonate()
- var/obj/machinery/syndicatebomb/B = src.loc
+ var/obj/machinery/syndicatebomb/B = loc
spawn_and_random_walk(summon_path, src, amt_summon, walk_chance=50, admin_spawn=TRUE)
qdel(B)
qdel(src)
@@ -369,7 +369,7 @@
amt_summon = 100
/obj/item/bombcore/badmin/summon/clown/defuse()
- playsound(src.loc, 'sound/misc/sadtrombone.ogg', 50)
+ playsound(src, 'sound/misc/sadtrombone.ogg', 50)
..()
/obj/item/bombcore/large
@@ -454,7 +454,7 @@
if(istype(I, /obj/item/crowbar) && beakers.len > 0)
playsound(loc, I.usesound, 50, 1)
for (var/obj/item/B in beakers)
- B.loc = get_turf(src)
+ B.forceMove(drop_location())
beakers -= B
return
else if(istype(I, /obj/item/reagent_containers/glass/beaker) || istype(I, /obj/item/reagent_containers/glass/bottle))
@@ -485,9 +485,9 @@
for(var/obj/item/slime_extract/S in LG.beakers) // And slime cores.
if(beakers.len < max_beakers)
beakers += S
- S.loc = src
+ S.forceMove(src)
else
- S.loc = get_turf(src)
+ S.forceMove(drop_location())
if(istype(G, /obj/item/grenade/chem_grenade/cryo))
spread_range -= 1 // Reduced range, but increased density.
@@ -502,9 +502,9 @@
for(var/obj/item/reagent_containers/glass/B in G)
if(beakers.len < max_beakers)
beakers += B
- B.loc = src
+ B.forceMove(src)
else
- B.loc = get_turf(src)
+ B.forceMove(drop_location())
qdel(G)
diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm
index bd93975f46..89fc1260f8 100644
--- a/code/game/machinery/vending.dm
+++ b/code/game/machinery/vending.dm
@@ -259,7 +259,7 @@
cut_overlays()
if(panel_open)
add_overlay("[initial(icon_state)]-panel")
- playsound(src.loc, W.usesound, 50, 1)
+ playsound(src, W.usesound, 50, 1)
updateUsrDialog()
else
to_chat(user, "You must first secure [src].")
@@ -403,7 +403,7 @@
var/datum/browser/popup = new(user, "vending", (name))
popup.set_content(dat)
- popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state))
+ popup.set_title_image(user.browse_rsc_icon(icon, icon_state))
popup.open()
@@ -443,7 +443,7 @@
dish_quants[N] = max(dish_quants[N] - 1, 0)
for(var/obj/O in contents)
if(O.name == N)
- O.loc = src.loc
+ O.forceMove(drop_location())
break
vend_ready = 1
updateUsrDialog()
@@ -510,7 +510,7 @@
if(icon_vend) //Show the vending animation if needed
flick(icon_vend,src)
new R.product_path(get_turf(src))
- SSblackbox.add_details("vending_machine_usage","[src.type]|[R.product_path]")
+ SSblackbox.add_details("vending_machine_usage","[type]|[R.product_path]")
vend_ready = 1
return
diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm
index f6e2023943..238c83725b 100644
--- a/code/game/objects/structures/bedsheet_bin.dm
+++ b/code/game/objects/structures/bedsheet_bin.dm
@@ -309,13 +309,13 @@ LINEN BINS
else
B = new /obj/item/bedsheet(loc)
- B.loc = user.loc
+ B.forceMove(drop_location())
user.put_in_hands(B)
to_chat(user, "You take [B] out of [src].")
update_icon()
if(hidden)
- hidden.loc = user.loc
+ hidden.forceMove(drop_location())
to_chat(user, "[hidden] falls out of [B]!")
hidden = null
@@ -333,12 +333,12 @@ LINEN BINS
else
B = new /obj/item/bedsheet(loc)
- B.loc = loc
+ B.forceMove(drop_location())
to_chat(user, "You telekinetically remove [B] from [src].")
update_icon()
if(hidden)
- hidden.loc = loc
+ hidden.forceMove(drop_location())
hidden = null
diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm
index 61aab75efc..c6af589cb5 100644
--- a/code/game/objects/structures/door_assembly.dm
+++ b/code/game/objects/structures/door_assembly.dm
@@ -1,3 +1,8 @@
+
+#define AIRLOCK_ASSEMBLY_NEEDS_WIRES 0
+#define AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS 1
+#define AIRLOCK_ASSEMBLY_NEEDS_SCREWDRIVER 2
+
/obj/structure/door_assembly
name = "airlock assembly"
icon = 'icons/obj/doors/airlocks/station/public.dmi'
@@ -6,8 +11,7 @@
anchored = FALSE
density = TRUE
max_integrity = 200
- desc = "The mechanical framework for an airlock."
- var/state = 0
+ var/state = AIRLOCK_ASSEMBLY_NEEDS_WIRES
var/mineral = null
var/typetext = ""
var/icontext = ""
@@ -26,7 +30,7 @@
name = "airlock assembly"
airlock_type = /obj/machinery/door/airlock
anchored = TRUE
- state = 1
+ state = AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS
/obj/structure/door_assembly/door_assembly_com
name = "command airlock assembly"
@@ -36,7 +40,7 @@
glass_type = /obj/machinery/door/airlock/glass_command
airlock_type = /obj/machinery/door/airlock/command
anchored = TRUE
- state = 1
+ state = AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS
/obj/structure/door_assembly/door_assembly_com/glass
mineral = "glass"
@@ -50,7 +54,7 @@
glass_type = /obj/machinery/door/airlock/glass_security
airlock_type = /obj/machinery/door/airlock/security
anchored = TRUE
- state = 1
+ state = AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS
/obj/structure/door_assembly/door_assembly_sec/glass
mineral = "glass"
@@ -64,7 +68,7 @@
glass_type = /obj/machinery/door/airlock/glass_engineering
airlock_type = /obj/machinery/door/airlock/engineering
anchored = TRUE
- state = 1
+ state = AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS
/obj/structure/door_assembly/door_assembly_eng/glass
mineral = "glass"
@@ -78,7 +82,7 @@
glass_type = /obj/machinery/door/airlock/glass_mining
airlock_type = /obj/machinery/door/airlock/mining
anchored = TRUE
- state = 1
+ state = AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS
/obj/structure/door_assembly/door_assembly_min/glass
mineral = "glass"
@@ -92,7 +96,7 @@
glass_type = /obj/machinery/door/airlock/glass_atmos
airlock_type = /obj/machinery/door/airlock/atmos
anchored = TRUE
- state = 1
+ state = AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS
/obj/structure/door_assembly/door_assembly_atmo/glass
mineral = "glass"
@@ -106,7 +110,7 @@
glass_type = /obj/machinery/door/airlock/glass_research
airlock_type = /obj/machinery/door/airlock/research
anchored = TRUE
- state = 1
+ state = AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS
/obj/structure/door_assembly/door_assembly_research/glass
mineral = "glass"
@@ -120,7 +124,7 @@
glass_type = /obj/machinery/door/airlock/glass_science
airlock_type = /obj/machinery/door/airlock/science
anchored = TRUE
- state = 1
+ state = AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS
/obj/structure/door_assembly/door_assembly_science/glass
mineral = "glass"
@@ -134,7 +138,7 @@
glass_type = /obj/machinery/door/airlock/glass_medical
airlock_type = /obj/machinery/door/airlock/medical
anchored = TRUE
- state = 1
+ state = AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS
/obj/structure/door_assembly/door_assembly_med/glass
mineral = "glass"
@@ -148,7 +152,7 @@
glass_type = /obj/machinery/door/airlock/glass_maintenance
airlock_type = /obj/machinery/door/airlock/maintenance
anchored = TRUE
- state = 1
+ state = AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS
/obj/structure/door_assembly/door_assembly_mai/glass
mineral = "glass"
@@ -163,7 +167,7 @@
glass_type = /obj/machinery/door/airlock/glass_external
airlock_type = /obj/machinery/door/airlock/external
anchored = TRUE
- state = 1
+ state = AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS
/obj/structure/door_assembly/door_assembly_ext/glass
mineral = "glass"
@@ -176,7 +180,7 @@
icontext = "fre"
airlock_type = /obj/machinery/door/airlock/freezer
anchored = TRUE
- state = 1
+ state = AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS
/obj/structure/door_assembly/door_assembly_hatch
name = "airtight hatch assembly"
@@ -186,7 +190,7 @@
icontext = "hatch"
airlock_type = /obj/machinery/door/airlock/hatch
anchored = TRUE
- state = 1
+ state = AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS
/obj/structure/door_assembly/door_assembly_mhatch
name = "maintenance hatch assembly"
@@ -196,7 +200,7 @@
icontext = "mhatch"
airlock_type = /obj/machinery/door/airlock/maintenance_hatch
anchored = TRUE
- state = 1
+ state = AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS
/obj/structure/door_assembly/door_assembly_glass
name = "glass airlock assembly"
@@ -204,7 +208,7 @@
overlays_file = 'icons/obj/doors/airlocks/station2/overlays.dmi'
airlock_type = /obj/machinery/door/airlock/glass
anchored = TRUE
- state = 1
+ state = AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS
mineral = "glass"
material = "glass"
@@ -213,7 +217,7 @@
icon = 'icons/obj/doors/airlocks/station/gold.dmi'
airlock_type = /obj/machinery/door/airlock/gold
anchored = TRUE
- state = 1
+ state = AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS
mineral = "gold"
/obj/structure/door_assembly/door_assembly_silver
@@ -221,7 +225,7 @@
icon = 'icons/obj/doors/airlocks/station/silver.dmi'
airlock_type = /obj/machinery/door/airlock/silver
anchored = TRUE
- state = 1
+ state = AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS
mineral = "silver"
/obj/structure/door_assembly/door_assembly_diamond
@@ -229,7 +233,7 @@
icon = 'icons/obj/doors/airlocks/station/diamond.dmi'
airlock_type = /obj/machinery/door/airlock/diamond
anchored = TRUE
- state = 1
+ state = AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS
mineral = "diamond"
/obj/structure/door_assembly/door_assembly_uranium
@@ -237,7 +241,7 @@
icon = 'icons/obj/doors/airlocks/station/uranium.dmi'
airlock_type = /obj/machinery/door/airlock/uranium
anchored = TRUE
- state = 1
+ state = AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS
mineral = "uranium"
/obj/structure/door_assembly/door_assembly_plasma
@@ -245,7 +249,7 @@
icon = 'icons/obj/doors/airlocks/station/plasma.dmi'
airlock_type = /obj/machinery/door/airlock/plasma
anchored = TRUE
- state = 1
+ state = AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS
mineral = "plasma"
/obj/structure/door_assembly/door_assembly_clown
@@ -254,7 +258,7 @@
icon = 'icons/obj/doors/airlocks/station/bananium.dmi'
airlock_type = /obj/machinery/door/airlock/clown
anchored = TRUE
- state = 1
+ state = AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS
mineral = "bananium"
/obj/structure/door_assembly/door_assembly_sandstone
@@ -262,7 +266,7 @@
icon = 'icons/obj/doors/airlocks/station/sandstone.dmi'
airlock_type = /obj/machinery/door/airlock/sandstone
anchored = TRUE
- state = 1
+ state = AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS
mineral = "sandstone"
/obj/structure/door_assembly/door_assembly_titanium
@@ -274,7 +278,7 @@
glass_type = /obj/machinery/door/airlock/glass_titanium
airlock_type = /obj/machinery/door/airlock/titanium
anchored = TRUE
- state = 1
+ state = AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS
mineral = "titanium"
/obj/structure/door_assembly/door_assembly_titanium/glass
@@ -289,7 +293,7 @@
icontext = "highsec"
airlock_type = /obj/machinery/door/airlock/highsecurity
anchored = TRUE
- state = 1
+ state = AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS
/obj/structure/door_assembly/door_assembly_vault
name = "vault door assembly"
@@ -299,7 +303,7 @@
icontext = "vault"
airlock_type = /obj/machinery/door/airlock/vault
anchored = TRUE
- state = 1
+ state = AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS
/obj/structure/door_assembly/door_assembly_shuttle
name = "shuttle airlock assembly"
@@ -309,7 +313,7 @@
icontext = "shuttle"
airlock_type = /obj/machinery/door/airlock/shuttle
anchored = TRUE
- state = 1
+ state = AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS
/obj/structure/door_assembly/door_assembly_cult
name = "cult airlock assembly"
@@ -319,7 +323,7 @@
icontext = "cult"
airlock_type = /obj/machinery/door/airlock/cult
anchored = TRUE
- state = 1
+ state = AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS
/obj/structure/door_assembly/door_assembly_cult/glass
mineral = "glass"
@@ -338,7 +342,7 @@
icon = 'icons/obj/doors/airlocks/station/wood.dmi'
airlock_type = /obj/machinery/door/airlock/wood
anchored = TRUE
- state = 1
+ state = AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS
mineral = "wood"
/obj/structure/door_assembly/door_assembly_viro
@@ -349,7 +353,7 @@
glass_type = /obj/machinery/door/airlock/glass_virology
airlock_type = /obj/machinery/door/airlock/virology
anchored = TRUE
- state = 1
+ state = AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS
/obj/structure/door_assembly/door_assembly_viro/glass
mineral = "glass"
@@ -362,7 +366,7 @@
icontext = "ele"
airlock_type = /obj/machinery/door/airlock/centcom
anchored = TRUE
- state = 1
+ state = AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS
/obj/structure/door_assembly/examine(mob/user)
..()
@@ -383,10 +387,10 @@
/obj/structure/door_assembly/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/pen))
- var/t = stripped_input(user, "Enter the name for the door.", src.name, src.created_name,MAX_NAME_LEN)
+ var/t = stripped_input(user, "Enter the name for the door.", name, created_name,MAX_NAME_LEN)
if(!t)
return
- if(!in_range(src, usr) && src.loc != usr)
+ if(!in_range(src, usr) && loc != usr)
return
created_name = t
@@ -410,7 +414,7 @@
icontype = input(user, "Please select a paintjob for this airlock.") in optionlist
- if((!in_range(src, usr) && src.loc != usr) || !WT.use(user))
+ if((!in_range(src, usr) && loc != usr) || !WT.use(user))
return
var/has_solid = FALSE
var/has_glass = FALSE
@@ -525,7 +529,7 @@
if(WT.remove_fuel(0,user))
user.visible_message("[user] disassembles the airlock assembly.", \
"You start to disassemble the airlock assembly...")
- playsound(src.loc, 'sound/items/welder2.ogg', 50, 1)
+ playsound(src, 'sound/items/welder2.ogg', 50, 1)
if(do_after(user, 40*W.toolspeed, target = src))
if( !WT.isOn() )
@@ -542,22 +546,22 @@
break
if(door_check)
- playsound(src.loc, W.usesound, 100, 1)
+ playsound(src, W.usesound, 100, 1)
user.visible_message("[user] secures the airlock assembly to the floor.", \
"You start to secure the airlock assembly to the floor...", \
"You hear wrenching.")
if(do_after(user, 40*W.toolspeed, target = src))
- if( src.anchored )
+ if(anchored)
return
to_chat(user, "You secure the airlock assembly.")
- src.name = "secured airlock assembly"
- src.anchored = TRUE
+ name = "secured airlock assembly"
+ anchored = TRUE
else
to_chat(user, "There is another door here!")
else
- playsound(src.loc, W.usesound, 100, 1)
+ playsound(src, W.usesound, 100, 1)
user.visible_message("[user] unsecures the airlock assembly from the floor.", \
"You start to unsecure the airlock assembly from the floor...", \
"You hear wrenching.")
@@ -579,63 +583,63 @@
if(C.get_amount() < 1 || state != 0)
return
C.use(1)
- src.state = 1
+ state = AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS
to_chat(user, "You wire the airlock assembly.")
- src.name = "wired airlock assembly"
+ name = "wired airlock assembly"
else if(istype(W, /obj/item/wirecutters) && state == 1 )
- playsound(src.loc, W.usesound, 100, 1)
+ playsound(src, W.usesound, 100, 1)
user.visible_message("[user] cuts the wires from the airlock assembly.", \
"You start to cut the wires from the airlock assembly...")
if(do_after(user, 40*W.toolspeed, target = src))
- if( src.state != 1 )
+ if(state != 1)
return
to_chat(user, "You cut the wires from the airlock assembly.")
new/obj/item/stack/cable_coil(get_turf(user), 1)
- src.state = 0
- src.name = "secured airlock assembly"
+ state = AIRLOCK_ASSEMBLY_NEEDS_WIRES
+ name = "secured airlock assembly"
else if(istype(W, /obj/item/electronics/airlock) && state == 1 )
- playsound(src.loc, W.usesound, 100, 1)
+ playsound(src, W.usesound, 100, 1)
user.visible_message("[user] installs the electronics into the airlock assembly.", \
"You start to install electronics into the airlock assembly...")
if(do_after(user, 40, target = src))
- if( src.state != 1 )
+ if( state != 1 )
return
if(!user.transferItemToLoc(W, src))
return
to_chat(user, "You install the airlock electronics.")
- src.state = 2
- src.name = "near finished airlock assembly"
- src.electronics = W
+ state = AIRLOCK_ASSEMBLY_NEEDS_SCREWDRIVER
+ name = "near finished airlock assembly"
+ electronics = W
else if(istype(W, /obj/item/crowbar) && state == 2 )
- playsound(src.loc, W.usesound, 100, 1)
+ playsound(src, W.usesound, 100, 1)
user.visible_message("[user] removes the electronics from the airlock assembly.", \
"You start to remove electronics from the airlock assembly...")
if(do_after(user, 40*W.toolspeed, target = src))
- if( src.state != 2 )
+ if(state != 2)
return
to_chat(user, "You remove the airlock electronics.")
- src.state = 1
- src.name = "wired airlock assembly"
+ state = AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS
+ name = "wired airlock assembly"
var/obj/item/electronics/airlock/ae
if (!electronics)
- ae = new/obj/item/electronics/airlock( src.loc )
+ ae = new/obj/item/electronics/airlock( loc )
else
ae = electronics
electronics = null
- ae.loc = src.loc
+ ae.forceMove(src.loc)
else if(istype(W, /obj/item/stack/sheet) && !mineral)
var/obj/item/stack/sheet/G = W
if(G)
if(G.get_amount() >= 1)
if(is_glass_sheet(G))
- playsound(src.loc, 'sound/items/crowbar.ogg', 100, 1)
+ playsound(src, 'sound/items/crowbar.ogg', 100, 1)
user.visible_message("[user] adds [G.name] to the airlock assembly.", \
"You start to install [G.name] into the airlock assembly...")
if(do_after(user, 40, target = src))
@@ -653,8 +657,8 @@
material = "glass"
//This list contains the airlock paintjobs that have a glass version:
if(icontext in list("eng", "atmo", "sec", "com", "med", "res", "min"))
- src.airlock_type = text2path("/obj/machinery/door/airlock/[typetext]")
- src.glass_type = text2path("/obj/machinery/door/airlock/glass_[typetext]")
+ airlock_type = text2path("/obj/machinery/door/airlock/[typetext]")
+ glass_type = text2path("/obj/machinery/door/airlock/glass_[typetext]")
else
//This airlock is default or does not have a glass version, so we revert to the default glass airlock. |- Ricotez
airlock_type = /obj/machinery/door/airlock
@@ -664,7 +668,7 @@
else if(istype(G, /obj/item/stack/sheet/mineral))
var/M = G.sheettype
if(G.get_amount() >= 2)
- playsound(src.loc, 'sound/items/crowbar.ogg', 100, 1)
+ playsound(src, 'sound/items/crowbar.ogg', 100, 1)
user.visible_message("[user] adds [G.name] to the airlock assembly.", \
"You start to install [G.name] into the airlock assembly...")
if(do_after(user, 40, target = src))
@@ -678,28 +682,28 @@
glass_type = /obj/machinery/door/airlock/glass
else if(istype(W, /obj/item/screwdriver) && state == 2 )
- playsound(src.loc, W.usesound, 100, 1)
+ playsound(src, W.usesound, 100, 1)
user.visible_message("[user] finishes the airlock.", \
"You start finishing the airlock...")
if(do_after(user, 40*W.toolspeed, target = src))
- if(src.loc && state == 2)
+ if(loc && state == 2)
to_chat(user, "You finish the airlock.")
var/obj/machinery/door/airlock/door
if(mineral == "glass")
- door = new src.glass_type( src.loc )
+ door = new glass_type( loc )
else
- door = new src.airlock_type( src.loc )
- //door.req_access = src.req_access
- door.electronics = src.electronics
- door.heat_proof = src.heat_proof_finished
- if(src.electronics.one_access)
- door.req_one_access = src.electronics.accesses
+ door = new airlock_type( loc )
+ //door.req_access = req_access
+ door.electronics = electronics
+ door.heat_proof = heat_proof_finished
+ if(electronics.one_access)
+ door.req_one_access = electronics.accesses
else
- door.req_access = src.electronics.accesses
+ door.req_access = electronics.accesses
if(created_name)
door.name = created_name
- src.electronics.loc = door
+ electronics.forceMove(door)
qdel(src)
else
return ..()
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index 3e3e853ae7..48e2a52801 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -167,7 +167,7 @@
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
+ mmi.forceMove(T)
if(mmi.brainmob)
if(mmi.brainmob.stat == DEAD)
mmi.brainmob.stat = CONSCIOUS
@@ -770,24 +770,24 @@
/mob/living/silicon/robot/proc/deconstruct()
var/turf/T = get_turf(src)
if (robot_suit)
- robot_suit.loc = T
- robot_suit.l_leg.loc = T
+ robot_suit.forceMove(T)
+ robot_suit.l_leg.forceMove(T)
robot_suit.l_leg = null
- robot_suit.r_leg.loc = T
+ robot_suit.r_leg.forceMove(T)
robot_suit.r_leg = null
new /obj/item/stack/cable_coil(T, robot_suit.chest.wired)
- robot_suit.chest.loc = T
+ robot_suit.chest.forceMove(T)
robot_suit.chest.wired = 0
robot_suit.chest = null
- robot_suit.l_arm.loc = T
+ robot_suit.l_arm.forceMove(T)
robot_suit.l_arm = null
- robot_suit.r_arm.loc = T
+ robot_suit.r_arm.forceMove(T)
robot_suit.r_arm = null
- robot_suit.head.loc = T
- robot_suit.head.flash1.loc = T
+ robot_suit.head.forceMove(T)
+ robot_suit.head.flash1.forceMove(T)
robot_suit.head.flash1.burn_out()
robot_suit.head.flash1 = null
- robot_suit.head.flash2.loc = T
+ robot_suit.head.flash2.forceMove(T)
robot_suit.head.flash2.burn_out()
robot_suit.head.flash2 = null
robot_suit.head = null
@@ -806,7 +806,7 @@
var/obj/item/device/assembly/flash/handheld/F = new /obj/item/device/assembly/flash/handheld(T)
F.burn_out()
if (cell) //Sanity check.
- cell.loc = T
+ cell.forceMove(T)
cell = null
qdel(src)
diff --git a/code/modules/shuttle/on_move.dm b/code/modules/shuttle/on_move.dm
index d68777c84a..a67434ea5f 100644
--- a/code/modules/shuttle/on_move.dm
+++ b/code/modules/shuttle/on_move.dm
@@ -317,7 +317,7 @@ All ShuttleMove procs go here
var/turf/T = loc
if(level==1)
hide(T.intact)
-
+
/obj/structure/shuttle/beforeShuttleMove(turf/newT, rotation, move_mode)
. = ..()
if(. & MOVE_AREA)
diff --git a/code/modules/spells/spell_types/area_teleport.dm b/code/modules/spells/spell_types/area_teleport.dm
index 7381cdf48f..23fdc1ee54 100644
--- a/code/modules/spells/spell_types/area_teleport.dm
+++ b/code/modules/spells/spell_types/area_teleport.dm
@@ -66,7 +66,7 @@
tempL.Remove(attempt)
if(!success)
- target.loc = pick(L)
+ target.forceMove(L)
playsound(get_turf(user), sound2, 50,1)
return
diff --git a/code/modules/spells/spell_types/devil.dm b/code/modules/spells/spell_types/devil.dm
index b1867413a3..733d0a3270 100644
--- a/code/modules/spells/spell_types/devil.dm
+++ b/code/modules/spells/spell_types/devil.dm
@@ -142,31 +142,23 @@
/mob/living/proc/infernalphaseout()
dust_animation()
spawn_dust()
- src.visible_message("[src] disappears in a flashfire!")
+ visible_message("[src] disappears in a flashfire!")
playsound(get_turf(src), 'sound/magic/enter_blood.ogg', 100, 1, -1)
var/obj/effect/dummy/slaughter/holder = new /obj/effect/dummy/slaughter(loc)
- src.ExtinguishMob()
- if(buckled)
- buckled.unbuckle_mob(src,force=1)
- if(has_buckled_mobs())
- unbuckle_all_mobs(force=1)
- if(pulledby)
- pulledby.stop_pulling()
- if(pulling)
- stop_pulling()
- src.loc = holder
- src.holder = holder
- src.notransform = 0
+ ExtinguishMob()
+ forceMove(holder)
+ holder = holder
+ notransform = 0
fakefireextinguish()
/mob/living/proc/infernalphasein()
- if(src.notransform)
+ if(notransform)
to_chat(src, "You're too busy to jaunt in.")
- return 0
+ return FALSE
fakefire()
- src.loc = get_turf(src)
- src.client.eye = src
- src.visible_message("[src] appears in a fiery blaze!")
+ forceMove(drop_location())
+ client.eye = src
+ visible_message("[src] appears in a fiery blaze!")
playsound(get_turf(src), 'sound/magic/exit_blood.ogg', 100, 1, -1)
addtimer(CALLBACK(src, .proc/fakefireextinguish), 15, TIMER_UNIQUE)
diff --git a/code/modules/spells/spell_types/dumbfire.dm b/code/modules/spells/spell_types/dumbfire.dm
index a028ec36bd..bb6e4480f5 100644
--- a/code/modules/spells/spell_types/dumbfire.dm
+++ b/code/modules/spells/spell_types/dumbfire.dm
@@ -57,14 +57,14 @@
var/current_loc = user.loc
- projectile.loc = current_loc
+ projectile.forceMove(current_loc)
for(var/i = 0,i < proj_lifespan,i++)
if(!projectile)
break
if(proj_insubstantial)
- projectile.loc = get_step(projectile, projectile.dir)
+ projectile.forceMove(get_step(projectile, projectile.dir))
else
step(projectile, projectile.dir)
diff --git a/code/modules/spells/spell_types/ethereal_jaunt.dm b/code/modules/spells/spell_types/ethereal_jaunt.dm
index 2b4974ec5e..0754ddb230 100644
--- a/code/modules/spells/spell_types/ethereal_jaunt.dm
+++ b/code/modules/spells/spell_types/ethereal_jaunt.dm
@@ -28,14 +28,7 @@
var/obj/effect/dummy/spell_jaunt/holder = new /obj/effect/dummy/spell_jaunt(mobloc)
new jaunt_out_type(mobloc, target.dir)
target.ExtinguishMob()
- if(target.buckled)
- target.buckled.unbuckle_mob(target,force=1)
- if(target.pulledby)
- target.pulledby.stop_pulling()
- target.stop_pulling()
- if(target.has_buckled_mobs())
- target.unbuckle_all_mobs(force=1)
- target.loc = holder
+ target.forceMove(holder)
target.reset_perspective(holder)
target.notransform=0 //mob is safely inside holder now, no need for protection.
jaunt_steam(mobloc)
@@ -92,7 +85,7 @@
var/turf/newLoc = get_step(src,direction)
setDir(direction)
if(!(newLoc.flags_1 & NOJAUNT_1))
- loc = newLoc
+ forceMove(newLoc)
else
to_chat(user, "Some strange aura is blocking the way!")
movedelay = world.time + movespeed
diff --git a/code/modules/spells/spell_types/projectile.dm b/code/modules/spells/spell_types/projectile.dm
index 1a682639eb..19e44ffa83 100644
--- a/code/modules/spells/spell_types/projectile.dm
+++ b/code/modules/spells/spell_types/projectile.dm
@@ -47,7 +47,7 @@
var/current_loc = user.loc
- projectile.loc = current_loc
+ projectile.forceMove(current_loc)
for(var/i = 0,i < proj_lifespan,i++)
if(!projectile)
@@ -56,12 +56,12 @@
if(proj_homing)
if(proj_insubstantial)
projectile.setDir(get_dir(projectile,target))
- projectile.loc = get_step_to(projectile,target)
+ projectile.forceMove(get_step_to(projectile,target))
else
step_to(projectile,target)
else
if(proj_insubstantial)
- projectile.loc = get_step(projectile,dir)
+ projectile.forceMove(get_step(projectile,dir))
else
step(projectile,dir)
diff --git a/code/modules/spells/spell_types/summonitem.dm b/code/modules/spells/spell_types/summonitem.dm
index 0f956b3dc9..7f5fc337b1 100644
--- a/code/modules/spells/spell_types/summonitem.dm
+++ b/code/modules/spells/spell_types/summonitem.dm
@@ -66,7 +66,7 @@
if(issilicon(M)) //Items in silicons warp the whole silicon
M.loc.visible_message("[M] suddenly disappears!")
- M.loc = L.loc
+ M.forceMove(L.loc)
M.loc.visible_message("[M] suddenly appears!")
item_to_retrieve = null
break
@@ -101,7 +101,7 @@
if(item_to_retrieve.loc)
item_to_retrieve.loc.visible_message("The [item_to_retrieve.name] suddenly disappears!")
if(!L.put_in_hands(item_to_retrieve))
- item_to_retrieve.loc = L.loc
+ item_to_retrieve.forceMove(L.loc)
item_to_retrieve.loc.visible_message("The [item_to_retrieve.name] suddenly appears!")
playsound(get_turf(L), 'sound/magic/summonitems_generic.ogg', 50, 1)
else
diff --git a/code/modules/spells/spell_types/turf_teleport.dm b/code/modules/spells/spell_types/turf_teleport.dm
index 0b378fbaaa..093285b74d 100644
--- a/code/modules/spells/spell_types/turf_teleport.dm
+++ b/code/modules/spells/spell_types/turf_teleport.dm
@@ -41,9 +41,5 @@
return
if(!target.Move(picked))
- if(target.buckled)
- target.buckled.unbuckle_mob(target,force=1)
- if(target.has_buckled_mobs())
- target.unbuckle_all_mobs(force=1)
- target.loc = picked
+ target.forceMove(picked)
playsound(get_turf(user), sound2, 50,1)
diff --git a/code/modules/surgery/implant_removal.dm b/code/modules/surgery/implant_removal.dm
index 4a1a8f98eb..b9881d0e37 100644
--- a/code/modules/surgery/implant_removal.dm
+++ b/code/modules/surgery/implant_removal.dm
@@ -1,56 +1,56 @@
-/datum/surgery/implant_removal
- name = "implant removal"
- steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/retract_skin, /datum/surgery_step/extract_implant, /datum/surgery_step/close)
- species = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
- possible_locs = list("chest")
-
-
-//extract implant
-/datum/surgery_step/extract_implant
- name = "extract implant"
- implements = list(/obj/item/hemostat = 100, /obj/item/crowbar = 65)
- time = 64
- var/obj/item/implant/I = null
-
-/datum/surgery_step/extract_implant/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- for(var/obj/item/O in target.implants)
- I = O
- break
- if(I)
- user.visible_message("[user] begins to extract [I] from [target]'s [target_zone].", "You begin to extract [I] from [target]'s [target_zone]...")
- else
- user.visible_message("[user] looks for an implant in [target]'s [target_zone].", "You look for an implant in [target]'s [target_zone]...")
-
-/datum/surgery_step/extract_implant/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- if(I)
- user.visible_message("[user] successfully removes [I] from [target]'s [target_zone]!", "You successfully remove [I] from [target]'s [target_zone].")
- I.removed(target)
-
- var/obj/item/implantcase/case
- for(var/obj/item/implantcase/ic in user.held_items)
- case = ic
- break
- if(!case)
- case = locate(/obj/item/implantcase) in get_turf(target)
- if(case && !case.imp)
- case.imp = I
- I.loc = case
- case.update_icon()
- user.visible_message("[user] places [I] into [case]!", "You place [I] into [case].")
- else
- qdel(I)
-
- else
- to_chat(user, "You can't find anything in [target]'s [target_zone]!")
- return 1
-
-/datum/surgery/implant_removal/mechanic
- name = "implant removal"
- requires_bodypart_type = BODYPART_ROBOTIC
- steps = list(
- /datum/surgery_step/mechanic_open,
- /datum/surgery_step/open_hatch,
- /datum/surgery_step/mechanic_unwrench,
- /datum/surgery_step/extract_implant,
- /datum/surgery_step/mechanic_wrench,
- /datum/surgery_step/mechanic_close)
+/datum/surgery/implant_removal
+ name = "implant removal"
+ steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/retract_skin, /datum/surgery_step/extract_implant, /datum/surgery_step/close)
+ species = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
+ possible_locs = list("chest")
+
+
+//extract implant
+/datum/surgery_step/extract_implant
+ name = "extract implant"
+ implements = list(/obj/item/hemostat = 100, /obj/item/crowbar = 65)
+ time = 64
+ var/obj/item/implant/I = null
+
+/datum/surgery_step/extract_implant/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
+ for(var/obj/item/O in target.implants)
+ I = O
+ break
+ if(I)
+ user.visible_message("[user] begins to extract [I] from [target]'s [target_zone].", "You begin to extract [I] from [target]'s [target_zone]...")
+ else
+ user.visible_message("[user] looks for an implant in [target]'s [target_zone].", "You look for an implant in [target]'s [target_zone]...")
+
+/datum/surgery_step/extract_implant/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
+ if(I)
+ user.visible_message("[user] successfully removes [I] from [target]'s [target_zone]!", "You successfully remove [I] from [target]'s [target_zone].")
+ I.removed(target)
+
+ var/obj/item/implantcase/case
+ for(var/obj/item/implantcase/ic in user.held_items)
+ case = ic
+ break
+ if(!case)
+ case = locate(/obj/item/implantcase) in get_turf(target)
+ if(case && !case.imp)
+ case.imp = I
+ I.loc = case
+ case.update_icon()
+ user.visible_message("[user] places [I] into [case]!", "You place [I] into [case].")
+ else
+ qdel(I)
+
+ else
+ to_chat(user, "You can't find anything in [target]'s [target_zone]!")
+ return 1
+
+/datum/surgery/implant_removal/mechanic
+ name = "implant removal"
+ requires_bodypart_type = BODYPART_ROBOTIC
+ steps = list(
+ /datum/surgery_step/mechanic_open,
+ /datum/surgery_step/open_hatch,
+ /datum/surgery_step/mechanic_unwrench,
+ /datum/surgery_step/extract_implant,
+ /datum/surgery_step/mechanic_wrench,
+ /datum/surgery_step/mechanic_close)
diff --git a/code/modules/surgery/lipoplasty.dm b/code/modules/surgery/lipoplasty.dm
index 816590610f..488f2e81b1 100644
--- a/code/modules/surgery/lipoplasty.dm
+++ b/code/modules/surgery/lipoplasty.dm
@@ -1,53 +1,53 @@
-/datum/surgery/lipoplasty
- name = "lipoplasty"
- steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/cut_fat, /datum/surgery_step/remove_fat, /datum/surgery_step/close)
- possible_locs = list("chest")
-
-/datum/surgery/lipoplasty/can_start(mob/user, mob/living/carbon/target)
- if(target.disabilities & FAT)
- return 1
- return 0
-
-
-//cut fat
-/datum/surgery_step/cut_fat
- name = "cut excess fat"
+/datum/surgery/lipoplasty
+ name = "lipoplasty"
+ steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/cut_fat, /datum/surgery_step/remove_fat, /datum/surgery_step/close)
+ possible_locs = list("chest")
+
+/datum/surgery/lipoplasty/can_start(mob/user, mob/living/carbon/target)
+ if(target.disabilities & FAT)
+ return 1
+ return 0
+
+
+//cut fat
+/datum/surgery_step/cut_fat
+ name = "cut excess fat"
implements = list(/obj/item/circular_saw = 100, /obj/item/melee/transforming/energy/sword/cyborg/saw = 100, /obj/item/hatchet = 35, /obj/item/kitchen/knife/butcher = 25)
- time = 64
-
-/datum/surgery_step/cut_fat/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- user.visible_message("[user] begins to cut away [target]'s excess fat.", "You begin to cut away [target]'s excess fat...")
-
-/datum/surgery_step/cut_fat/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- user.visible_message("[user] cuts [target]'s excess fat loose!", "You cut [target]'s excess fat loose.")
- return 1
-
-//remove fat
-/datum/surgery_step/remove_fat
- name = "remove loose fat"
- implements = list(/obj/item/retractor = 100, /obj/item/screwdriver = 45, /obj/item/wirecutters = 35)
- time = 32
-
-/datum/surgery_step/remove_fat/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- user.visible_message("[user] begins to extract [target]'s loose fat!", "You begin to extract [target]'s loose fat...")
-
-/datum/surgery_step/remove_fat/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- user.visible_message("[user] extracts [target]'s fat!", "You extract [target]'s fat.")
- target.overeatduration = 0 //patient is unfatted
- var/removednutriment = target.nutrition
- target.nutrition = NUTRITION_LEVEL_WELL_FED
- removednutriment -= 450 //whatever was removed goes into the meat
- var/mob/living/carbon/human/H = target
- var/typeofmeat = /obj/item/reagent_containers/food/snacks/meat/slab/human
-
- if(H.dna && H.dna.species)
- typeofmeat = H.dna.species.meat
-
- var/obj/item/reagent_containers/food/snacks/meat/slab/human/newmeat = new typeofmeat
- newmeat.name = "fatty meat"
- newmeat.desc = "Extremely fatty tissue taken from a patient."
- newmeat.subjectname = H.real_name
- newmeat.subjectjob = H.job
- newmeat.reagents.add_reagent ("nutriment", (removednutriment / 15)) //To balance with nutriment_factor of nutriment
- newmeat.loc = target.loc
- return 1
\ No newline at end of file
+ time = 64
+
+/datum/surgery_step/cut_fat/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
+ user.visible_message("[user] begins to cut away [target]'s excess fat.", "You begin to cut away [target]'s excess fat...")
+
+/datum/surgery_step/cut_fat/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
+ user.visible_message("[user] cuts [target]'s excess fat loose!", "You cut [target]'s excess fat loose.")
+ return 1
+
+//remove fat
+/datum/surgery_step/remove_fat
+ name = "remove loose fat"
+ implements = list(/obj/item/retractor = 100, /obj/item/screwdriver = 45, /obj/item/wirecutters = 35)
+ time = 32
+
+/datum/surgery_step/remove_fat/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
+ user.visible_message("[user] begins to extract [target]'s loose fat!", "You begin to extract [target]'s loose fat...")
+
+/datum/surgery_step/remove_fat/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
+ user.visible_message("[user] extracts [target]'s fat!", "You extract [target]'s fat.")
+ target.overeatduration = 0 //patient is unfatted
+ var/removednutriment = target.nutrition
+ target.nutrition = NUTRITION_LEVEL_WELL_FED
+ removednutriment -= 450 //whatever was removed goes into the meat
+ var/mob/living/carbon/human/H = target
+ var/typeofmeat = /obj/item/reagent_containers/food/snacks/meat/slab/human
+
+ if(H.dna && H.dna.species)
+ typeofmeat = H.dna.species.meat
+
+ var/obj/item/reagent_containers/food/snacks/meat/slab/human/newmeat = new typeofmeat
+ newmeat.name = "fatty meat"
+ newmeat.desc = "Extremely fatty tissue taken from a patient."
+ newmeat.subjectname = H.real_name
+ newmeat.subjectjob = H.job
+ newmeat.reagents.add_reagent ("nutriment", (removednutriment / 15)) //To balance with nutriment_factor of nutriment
+ newmeat.forceMove(target.loc)
+ return 1
diff --git a/code/modules/vehicles/pimpin_ride.dm b/code/modules/vehicles/pimpin_ride.dm
index 0d97cb63c1..f8f80819dd 100644
--- a/code/modules/vehicles/pimpin_ride.dm
+++ b/code/modules/vehicles/pimpin_ride.dm
@@ -77,7 +77,7 @@
if(..())
return 1
else if(mybag)
- mybag.loc = get_turf(user)
+ mybag.forceMove(get_turf(user))
user.put_in_hands(mybag)
mybag = null
update_icon()
diff --git a/code/modules/vehicles/speedbike.dm b/code/modules/vehicles/speedbike.dm
index b14dd28d70..9200a3d696 100644
--- a/code/modules/vehicles/speedbike.dm
+++ b/code/modules/vehicles/speedbike.dm
@@ -41,7 +41,7 @@
/obj/vehicle/space/speedbike/speedwagon/Collide(atom/movable/A)
. = ..()
if(A.density && has_buckled_mobs())
- var/atom/throw_target = get_edge_target_turf(A, src.dir)
+ var/atom/throw_target = get_edge_target_turf(A, dir)
if(crash_all)
A.throw_at(throw_target, 4, 3)
visible_message("[src] crashes into [A]!")
@@ -62,7 +62,7 @@
/obj/vehicle/space/speedbike/speedwagon/Moved()
. = ..()
- if(src.has_buckled_mobs())
+ if(has_buckled_mobs())
for(var/atom/A in range(2, src))
- if(!(A in src.buckled_mobs))
+ if(!(A in buckled_mobs))
Collide(A)
diff --git a/code/modules/vehicles/vehicle.dm b/code/modules/vehicles/vehicle.dm
index 0debce8a5d..e538599754 100644
--- a/code/modules/vehicles/vehicle.dm
+++ b/code/modules/vehicles/vehicle.dm
@@ -42,7 +42,7 @@
if(A.density)
if(A != src && A != M)
return
- M.loc = get_turf(src)
+ M.forceMove(get_turf(src))
..()
if(user.client)
user.client.change_view(view_range)