Improved capabilities to set someone else's internals.

Improved the operating table again.
Grabbed another TG update for telecomms.
This commit is contained in:
SkyMarshal
2012-01-22 15:31:13 -07:00
parent e201bcbe0e
commit 201046c3bf
5 changed files with 119 additions and 150 deletions
+91 -133
View File
@@ -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"
@@ -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 += "<br>Network: <a href='?src=\ref[src];input=network'>[network]</a>"
dat += "<br>Prefabrication: [autolinkers.len ? "TRUE" : "FALSE"]"
dat += "<br>Linked Network Entities: <ol>"
var/i = 0
for(var/obj/machinery/telecomms/T in links)
dat += "<li>\ref[T] [T.name] ([T.id]) (<a href='?src=\ref[src];remove=[T.id]'>X</a>)</li>"
i++
dat += "<li>\ref[T] [T.name] ([T.id]) <a href='?src=\ref[src];unlink=[i]'>\[X\]</a></li>"
dat += "</ol>"
dat += "<br>Filtering Frequencies: "
var/i = 0
i = 0
if(length(freq_listening))
for(var/x in freq_listening)
i++
@@ -197,6 +203,16 @@
temp = "<font color = #666633>-% Removed frequency filter [x] %-</font color>"
freq_listening.Remove(x)
if(href_list["unlink"])
var/obj/machinery/telecomms/T = links[text2num(href_list["unlink"])]
temp = "<font color = #666633>-% Removed \ref[T] [T.name] from linked entities. %-</font color>"
// 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 = "<font color = #666633>-% Buffer successfully flushed. %-</font color>"
P.buffer = null
if(href_list["remove"])
temp = "<font color = #666633>-% Link successfully removed. %-</font color>"
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)