diff --git a/baystation12.dme b/baystation12.dme
index c7b1de5ca8e..088c1ce7b1b 100644
--- a/baystation12.dme
+++ b/baystation12.dme
@@ -578,7 +578,6 @@
#include "code\game\objects\kitchen.dm"
#include "code\game\objects\lamarr.dm"
#include "code\game\objects\mineral_doors.dm"
-#include "code\game\objects\new_year.dm"
#include "code\game\objects\noticeboard.dm"
#include "code\game\objects\object_procs.dm"
#include "code\game\objects\portals.dm"
diff --git a/code/defines/obj.dm b/code/defines/obj.dm
index 2aa379fd695..66b16cbf4b9 100644
--- a/code/defines/obj.dm
+++ b/code/defines/obj.dm
@@ -115,6 +115,7 @@
var/t_loc = null
var/obj/item/item = null
var/place = null
+ var/internalloc = null
/obj/effect/equip_e/human
name = "human"
diff --git a/code/game/machinery/OpTable.dm b/code/game/machinery/OpTable.dm
index d95784d41dd..4aebb8e1e6d 100644
--- a/code/game/machinery/OpTable.dm
+++ b/code/game/machinery/OpTable.dm
@@ -14,135 +14,72 @@
var/obj/machinery/computer/operating/computer = null
var/id = 0.0
-/obj/machinery/optable/New()
- ..()
- for(var/obj/machinery/computer/operating/O in world)
- if(src.id == O.id)
- src.computer = O
- spawn(100)
- process()
+ New()
+ ..()
+ if(id)
+ for(var/obj/machinery/computer/operating/O in world)
+ if(src.id == O.id)
+ src.computer = O
-/obj/machinery/optable/ex_act(severity)
-
- switch(severity)
- if(1.0)
- //SN src = null
- del(src)
- return
- if(2.0)
- if (prob(50))
+ ex_act(severity)
+ switch(severity)
+ if(1.0)
//SN src = null
del(src)
return
- if(3.0)
- if (prob(25))
- src.density = 0
- else
- return
-
-/obj/machinery/optable/blob_act()
- if(prob(75))
- del(src)
-
-/obj/machinery/optable/hand_p(mob/user as mob)
-
- return src.attack_paw(user)
- return
-
-/obj/machinery/optable/attack_paw(mob/user as mob)
- if ((usr.mutations & HULK))
- usr << text("\blue You destroy the operating table.")
- for(var/mob/O in oviewers())
- if ((O.client && !( O.blinded )))
- O << text("\red [usr] destroys the operating table.")
- src.density = 0
- del(src)
- if (!( locate(/obj/machinery/optable, user.loc) ))
- step(user, get_dir(user, src))
- if (user.loc == src.loc)
- user.layer = TURF_LAYER
- for(var/mob/M in viewers(user, null))
- M.show_message("The monkey hides under the table!", 1)
- //Foreach goto(69)
- return
-
-/obj/machinery/optable/attack_hand(mob/user as mob)
- if ((usr.mutations & HULK))
- usr << text("\blue You destroy the table.")
- for(var/mob/O in oviewers())
- if ((O.client && !( O.blinded )))
- O << text("\red [usr] destroys the table.")
- src.density = 0
- del(src)
- return
-
-/obj/machinery/optable/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
- if(air_group || (height==0)) return 1
-
- if(istype(mover) && mover.checkpass(PASSTABLE))
- return 1
- else
- return 0
-
-
-/obj/machinery/optable/MouseDrop_T(obj/O as obj, mob/user as mob)
-
- if ((!( istype(O, /obj/item/weapon) ) || user.equipped() != O))
+ if(2.0)
+ if (prob(50))
+ //SN src = null
+ del(src)
+ return
+ if(3.0)
+ if (prob(25))
+ src.density = 0
+ else
return
- user.drop_item()
- if (O.loc != src.loc)
- step(O, get_dir(O, src))
- return
-/obj/machinery/optable/proc/check_victim()
- if(locate(/mob/living/carbon, src.loc))
- var/mob/M = locate(/mob/living/carbon, src.loc)
- if(M.resting)
- src.victim = M
- icon_state = "table2-active"
+ blob_act()
+ if(prob(75))
+ del(src)
+
+ hand_p(mob/user as mob)
+ return src.attack_paw(user)
+ return
+
+ attack_paw(mob/user as mob)
+ if ((usr.mutations & HULK))
+ usr << text("\blue You destroy the operating table.")
+ for(var/mob/O in oviewers())
+ if ((O.client && !( O.blinded )))
+ O << text("\red [usr] destroys the operating table.")
+ src.density = 0
+ del(src)
+ if (!( locate(/obj/machinery/optable, user.loc) ))
+ step(user, get_dir(user, src))
+ if (user.loc == src.loc)
+ user.layer = TURF_LAYER
+ for(var/mob/M in viewers(user, null))
+ M.show_message("The monkey hides under the table!", 1)
+ //Foreach goto(69)
+ return
+
+ attack_hand(mob/user as mob)
+ if ((usr.mutations & HULK))
+ usr << text("\blue You destroy the table.")
+ for(var/mob/O in oviewers())
+ if ((O.client && !( O.blinded )))
+ O << text("\red [usr] destroys the table.")
+ src.density = 0
+ del(src)
+ return
+
+ CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
+ if(air_group || (height==0)) return 1
+
+ if(istype(mover) && mover.checkpass(PASSTABLE))
return 1
- src.victim = null
- icon_state = "table2-idle"
- return 0
-
-/obj/machinery/optable/process()
- check_victim()
-
-/obj/machinery/optable/attackby(obj/item/weapon/W as obj, mob/user as mob)
-
- if (istype(W, /obj/item/weapon/grab))
- if(ismob(W:affecting))
- var/mob/M = W:affecting
- if (M.client)
- M.client.perspective = EYE_PERSPECTIVE
- M.client.eye = src
- M.resting = 1
- M.loc = src.loc
- for (var/mob/C in viewers(src))
- C.show_message("\red [M] has been laid on the operating table by [user].", 3)
- for(var/obj/O in src)
- O.loc = src.loc
- src.add_fingerprint(user)
- icon_state = "table2-active"
- src.victim = M
- del(W)
- return
- user.drop_item()
- if(W && W.loc)
- W.loc = src.loc
- return
-
-/obj/machinery/optable/portable
- name = "mobile operating Table"
- desc = "Used for advanced medical procedures. Seems to be movable, neat."
- icon = 'rollerbed.dmi'
- icon_state = "up"
- density = 1
- anchored = 0
-
- New()
- ..()
- processing_objects.Remove(src)
+ else
+ return 0
MouseDrop_T(obj/O as obj, mob/user as mob)
if ((!( istype(O, /obj/item/weapon) ) || user.equipped() != O))
@@ -152,9 +89,22 @@
step(O, get_dir(O, src))
return
+ proc/check_victim()
+ if(locate(/mob/living/carbon, src.loc))
+ var/mob/M = locate(/mob/living/carbon, src.loc)
+ if(M.resting)
+ src.victim = M
+ icon_state = "table2-active"
+ return 1
+ src.victim = null
+ icon_state = "table2-idle"
+ processing_objects.Remove(src)
+ return 0
+
+ process()
+ check_victim()
+
attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(!anchored)
- return
if (istype(W, /obj/item/weapon/grab))
if(ismob(W:affecting))
var/mob/M = W:affecting
@@ -168,6 +118,7 @@
for(var/obj/O in src)
O.loc = src.loc
src.add_fingerprint(user)
+ icon_state = "table2-active"
src.victim = M
processing_objects.Add(src)
del(W)
@@ -177,15 +128,22 @@
W.loc = src.loc
return
- check_victim()
- if(locate(/mob/living/carbon/human, src.loc))
- var/mob/M = locate(/mob/living/carbon/human, src.loc)
- if(M.resting)
- src.victim = M
- return 1
- src.victim = null
- processing_objects.Remove(src)
- return 0
+/obj/machinery/optable/portable
+ name = "mobile operating Table"
+ desc = "Used for advanced medical procedures. Seems to be movable, neat."
+ icon = 'rollerbed.dmi'
+ icon_state = "up"
+ density = 1
+ anchored = 0
+ id = null
+
+ New()
+ ..()
+
+ attackby(obj/item/weapon/W as obj, mob/user as mob)
+ if(!anchored)
+ return
+ return ..()
verb/make_deployable()
set category = "Object"
diff --git a/code/game/machinery/telecomms/machine_interactions.dm b/code/game/machinery/telecomms/machine_interactions.dm
index 8c1108ef89b..2fc5a6c975c 100644
--- a/code/game/machinery/telecomms/machine_interactions.dm
+++ b/code/game/machinery/telecomms/machine_interactions.dm
@@ -77,6 +77,9 @@
newpath = text2path(I)
var/obj/item/s = new newpath
s.loc = user.loc
+ if(istype(P, /obj/item/weapon/cable_coil))
+ var/obj/item/weapon/cable_coil/A = P
+ A.amount = 1
// Drop a circuit board too
C.loc = user.loc
@@ -113,13 +116,16 @@
dat += "
Network: [network]"
dat += "
Prefabrication: [autolinkers.len ? "TRUE" : "FALSE"]"
dat += "
Linked Network Entities: