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:
    " + + var/i = 0 for(var/obj/machinery/telecomms/T in links) - dat += "
  1. \ref[T] [T.name] ([T.id]) (X)
  2. " + i++ + dat += "
  3. \ref[T] [T.name] ([T.id]) \[X\]
  4. " dat += "
" dat += "
Filtering Frequencies: " - var/i = 0 + i = 0 if(length(freq_listening)) for(var/x in freq_listening) i++ @@ -197,6 +203,16 @@ temp = "-% Removed frequency filter [x] %-" freq_listening.Remove(x) + if(href_list["unlink"]) + + var/obj/machinery/telecomms/T = links[text2num(href_list["unlink"])] + temp = "-% Removed \ref[T] [T.name] from linked entities. %-" + + // Remove link entries from both T and src. + if(src in T.links) + T.links.Remove(src) + links.Remove(T) + if(href_list["link"]) if(P.buffer) @@ -222,13 +238,6 @@ temp = "-% Buffer successfully flushed. %-" P.buffer = null - if(href_list["remove"]) - - temp = "-% Link successfully removed. %-" - for(var/obj/machinery/telecomms/T in links) - if(T.id == href_list["remove"]) - src.links.Remove(T) - break usr.machine = src src.add_fingerprint(usr) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 60500eef49a..33d4eb0dcee 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -2118,11 +2118,11 @@ It can still be worn/put on as normal. if (!( istype(target.wear_mask, /obj/item/clothing/mask) )) return else - if (istype(target.back, /obj/item/weapon/tank)) + if (istype(target.back, /obj/item/weapon/tank) && internalloc == "back") target.internal = target.back - else if (istype(target.s_store, /obj/item/weapon/tank)) + else if (istype(target.s_store, /obj/item/weapon/tank) && internalloc == "store") target.internal = target.s_store - else if (istype(target.belt, /obj/item/weapon/tank)) + else if (istype(target.belt, /obj/item/weapon/tank) && internalloc == "belt") target.internal = target.belt if (target.internal) for(var/mob/M in viewers(target, 1)) @@ -2160,14 +2160,14 @@ It can still be worn/put on as normal.
Right Ear: [(r_ear ? r_ear : "Nothing")]
Head: [(head ? head : "Nothing")]
Shoes: [(shoes ? shoes : "Nothing")] -
Belt: [(belt ? belt : "Nothing")] +
Belt: [(belt ? belt : "Nothing")] [(istype(wear_mask, /obj/item/clothing/mask) && istype(belt, /obj/item/weapon/tank) && !( internal )) ? text(" Set Internal", src) : ""]
Uniform: [(w_uniform ? w_uniform : "Nothing")]
(Exo)Suit: [(wear_suit ? wear_suit : "Nothing")] -
Back: [(back ? back : "Nothing")] +
Back: [(back ? back : "Nothing")][(istype(wear_mask, /obj/item/clothing/mask) && istype(back, /obj/item/weapon/tank) && !( internal )) ? text(" Set Internal", src) : ""]
ID: [(wear_id ? wear_id : "Nothing")] -
Suit Storage: [(s_store ? s_store : "Nothing")] +
Suit Storage: [(s_store ? s_store : "Nothing")] [(istype(wear_mask, /obj/item/clothing/mask) && istype(s_store, /obj/item/weapon/tank) && !( internal )) ? text(" Set Internal", src) : ""]
[(handcuffed ? text("Handcuffed") : text("Not Handcuffed"))] -
[(internal ? text("Remove Internal") : ((istype(wear_mask, /obj/item/clothing/mask) && (istype(back, /obj/item/weapon/tank) || istype(belt, /obj/item/weapon/tank) || istype(s_store, /obj/item/weapon/tank)) && !( internal )) ? text(" Set Internal", src) : ""))] +
[(internal ? text("Remove Internal") : "")]
Empty Pockets
Empty Hat
Refresh @@ -2341,6 +2341,8 @@ It can still be worn/put on as normal. O.s_loc = usr.loc O.t_loc = loc O.place = href_list["item"] + if(href_list["loc"]) + O.internalloc = href_list["loc"] requests += O spawn( 0 ) O.process()