mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-13 11:43:31 +00:00
Cleaned up PDA code a litte more. Can again resize window. The close button is in the menu.
Toilets now work more like actual toilets. They will auto-flush when you insert a small object. You can also dunk people's heads into the toilet and try to choke them if you have a good grip. Fixed wiring near detective's office. Fixed larva and monkeys not being able to move on tables. Fixed larva not being able to crawl through vents. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1535 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
// Once full (~1 atm), uses air resv to flush items into the pipes
|
||||
// Automatically recharges air (unless off), will flush when ready if pre-set
|
||||
// Can hold items and human size things, no other draggables
|
||||
// Toilets are a type of disposal bin for small objects only and work on magic. By magic, I mean torque rotation
|
||||
|
||||
/obj/machinery/disposal
|
||||
name = "disposal unit"
|
||||
@@ -59,7 +60,6 @@
|
||||
C.show_message("\red [GM.name] has been placed in the [src] by [user].", 3)
|
||||
del(G)
|
||||
|
||||
|
||||
else
|
||||
user.drop_item()
|
||||
|
||||
@@ -273,10 +273,6 @@
|
||||
// otherwise charge
|
||||
use_power(500) // charging power usage
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var/atom/L = loc // recharging from loc turf
|
||||
|
||||
var/datum/gas_mixture/env = L.return_air()
|
||||
@@ -350,7 +346,92 @@
|
||||
H.vent_gas(loc)
|
||||
del(H)
|
||||
|
||||
//The toilet does not need to pressurized but can only handle small items.
|
||||
//You can also choke people by dunking them into the toilet.
|
||||
/obj/machinery/disposal/toilet
|
||||
name = "toilet"
|
||||
desc = "A torque rotation-based, waste disposal unit for small matter."
|
||||
icon_state = "toilet"
|
||||
density = 0//So you can stand on it.
|
||||
mode = 2
|
||||
|
||||
attackby(var/obj/item/I, var/mob/user)
|
||||
if( !(stat & BROKEN) )
|
||||
if(istype(I, /obj/item/weapon/grab))
|
||||
var/obj/item/weapon/grab/G = I
|
||||
if(istype(G)) // handle grabbed mob
|
||||
if(ismob(G.affecting))
|
||||
var/mob/GM = G.affecting
|
||||
for (var/mob/V in viewers(usr))
|
||||
V.show_message("[user] dunks [GM.name] into the toilet!", 3)
|
||||
if(do_after(user, 30))
|
||||
if(G.state>1&&!GM.internal)
|
||||
GM.oxyloss += 5
|
||||
|
||||
else if(I.w_class < 4)
|
||||
user.drop_item()
|
||||
I.loc = src
|
||||
user << "You place \the [I] into the [src]."
|
||||
for(var/mob/M in viewers(src))
|
||||
if(M == user)
|
||||
continue
|
||||
M.show_message("[user.name] places \the [I] into the [src].", 3)
|
||||
else
|
||||
user << "\red That item cannot be placed into the toilet."
|
||||
return
|
||||
|
||||
MouseDrop_T(mob/target, mob/user)
|
||||
if (!istype(target) || target.buckled || get_dist(user, src) > 1 || get_dist(user, target) > 1 || user.stat || istype(user, /mob/living/silicon/ai))
|
||||
return//Damn that list is long
|
||||
|
||||
for (var/mob/V in viewers(usr))
|
||||
if(target == user && !user.stat)
|
||||
V.show_message("[user] sits on the toilet.", 3)
|
||||
if(target != user && !user.restrained())
|
||||
V.show_message("[user] places [target.name] on the toilet.", 3)
|
||||
target.loc = loc
|
||||
return
|
||||
|
||||
interact(mob/user)
|
||||
add_fingerprint(user)
|
||||
for (var/mob/V in viewers(user))
|
||||
V.show_message("[user] eagerly drinks the toilet water!", 3)//Yum yum yum
|
||||
return
|
||||
|
||||
update()
|
||||
overlays = null
|
||||
if( !(stat & BROKEN) )
|
||||
if(flush)
|
||||
overlays += image('disposal.dmi',src,"toilet-handle",,dir)
|
||||
if( !(stat & NOPOWER) )
|
||||
overlays += image('disposal.dmi',src,"toilet-ready",,dir)
|
||||
else
|
||||
icon_state = "toilet-broken"
|
||||
mode = 0
|
||||
flush = 0
|
||||
return
|
||||
|
||||
process()
|
||||
if( !((stat & BROKEN)||(stat & NOPOWER)) )// nothing can happen if broken or not powered.
|
||||
updateDialog()
|
||||
if(!flush&&contents.len)
|
||||
flush++
|
||||
flush()
|
||||
use_power(100)// base power usage
|
||||
update()
|
||||
return
|
||||
|
||||
flush()
|
||||
flick("toilet-flush", src)
|
||||
var/obj/disposalholder/H = new()
|
||||
H.init(src)
|
||||
sleep(10)
|
||||
playsound(src, 'disposalflush.ogg', 50, 0, 0)
|
||||
sleep(30) // To prevent spam.
|
||||
H.start(src)
|
||||
flush--
|
||||
update()
|
||||
return
|
||||
|
||||
// virtual disposal object
|
||||
// travels through pipes in lieu of actual items
|
||||
@@ -369,8 +450,8 @@
|
||||
|
||||
// initialize a holder from the contents of a disposal unit
|
||||
proc/init(var/obj/machinery/disposal/D)
|
||||
gas = D.air_contents // transfer gas resv. into holder object
|
||||
|
||||
if(!istype(D, /obj/machinery/disposal/toilet))//So it does not drain gas from a toilet which does not function on it.
|
||||
gas = D.air_contents// transfer gas resv. into holder object
|
||||
|
||||
// now everything inside the disposal gets put into the holder
|
||||
// note AM since can contain mobs or objs
|
||||
@@ -388,8 +469,6 @@
|
||||
src.destinationTag = T.sortTag
|
||||
|
||||
|
||||
|
||||
|
||||
// start the movement process
|
||||
// argument is the disposal unit the holder started in
|
||||
proc/start(var/obj/machinery/disposal/D)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/mob/living/carbon/alien/larva
|
||||
name = "alien larva"
|
||||
icon_state = "larva"
|
||||
//flags = 258.0
|
||||
flags = 258.0
|
||||
|
||||
health = 25
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
icon = 'monkey.dmi'
|
||||
icon_state = "monkey1"
|
||||
gender = NEUTER
|
||||
//flags = 258.0
|
||||
flags = 258.0
|
||||
|
||||
var/obj/item/weapon/card/id/wear_id = null // Fix for station bounced radios -- Skie
|
||||
|
||||
|
||||
@@ -248,19 +248,6 @@
|
||||
dat += "<img src=sos_11.png> Smoke Bombs: [sbombs]<br>"
|
||||
dat += "<br>"
|
||||
|
||||
/*
|
||||
HOW TO USE OR ADAPT THIS CODE:
|
||||
The menu structure should not need to be altered to add new entries. Simply place them after what is already there.
|
||||
As an exception, if there are multiple-tiered windows, for instance, going into medical alerts and then to DNA testing or something,
|
||||
those menus should be added below their parents but have a greater value. The second sub-menu of menu 2 would have the number 22.
|
||||
Another sub-menu of menu 2 would be 23, then 24, and up to 29. If those menus have their own sub-menus a similar format follows.
|
||||
Sub-menu 1 of sub-menu 2(of menu 2) would be 221. Sub-menu 5 of sub-menu 2(of menu 2) would be 225. Menu 0 is a special case (it's the menu hub); you are free to use menus 1-9 (sub menus can be 0-9)
|
||||
to create your own data paths.
|
||||
The Return button, when used, simply removes the final number and navigates to the menu prior. Menu 334, the fourth sub-menu of sub-menu
|
||||
3, in menu 3, would navigate to sub menu 3 in menu 3. Or 33.
|
||||
It is possible to go to a different menu/sub-menu from anywhere. When creating new menus don't forget to add them to Topic proc or else the game
|
||||
will interpret you using the messenger function (the else clause in the switch).
|
||||
Other buttons and functions should be named according to what they do.*/
|
||||
switch(spideros)
|
||||
if(0)
|
||||
/*
|
||||
@@ -335,13 +322,12 @@
|
||||
for (var/obj/item/device/pda/P in world)
|
||||
if (!P.owner||P.toff)
|
||||
continue
|
||||
dat += "<li><a href='byond://?src=\ref[src];choice=\ref[P]'>[P]</a>"
|
||||
dat += "<li><a href='byond://?src=\ref[src];choice=Message;target=\ref[P]'>[P]</a>"
|
||||
dat += "</li>"
|
||||
count++
|
||||
dat += "</ul>"
|
||||
if (count == 0)
|
||||
dat += "None detected.<br>"
|
||||
//dat += "<a href='byond://?src=\ref[src];choice=31'> Send Virus</a>
|
||||
if(32)
|
||||
dat += "<h4><img src=sos_1.png> Hidden Menu:</h4>"
|
||||
dat += "Please input password: "
|
||||
@@ -385,30 +371,6 @@
|
||||
dat += "</ul>"
|
||||
dat += "That is all you will need to know. The rest will come with practice and talent. Good luck!"
|
||||
dat += "<h4>Master /N</h4>"
|
||||
/*
|
||||
//Sub-menu testing stuff.
|
||||
dat += "<li><a href='byond://?src=\ref[src];choice=49'> To sub-menu 49</a></li>"
|
||||
if(31)
|
||||
dat += "<h4><img src=sos_12.png> Send Virus:</h4>"
|
||||
dat += "<h4><img src=sos_6.png> Detected PDAs:</h4>"
|
||||
dat += "<ul>"
|
||||
var/count = 0
|
||||
for (var/obj/item/device/pda/P in world)
|
||||
if (!P.owner||P.toff)
|
||||
continue
|
||||
dat += "<li><a href='byond://?src=\ref[src];choice=\ref[P]'><i>[P]</i></a>"
|
||||
dat += "</li>"
|
||||
count++
|
||||
dat += "</ul>"
|
||||
if (count == 0)
|
||||
dat += "None detected.<br>"
|
||||
if(49)
|
||||
dat += "<h4><img src=sos_6.png> Other Functions 49:</h4>"
|
||||
dat += "<a href='byond://?src=\ref[src];choice=491'> To sub-menu 491</a>"
|
||||
if(491)
|
||||
dat += "<h4><img src=sos_6.png> Other Functions 491:</h4>"
|
||||
dat += "<a href='byond://?src=\ref[src];choice=0'> To main menu</a>"
|
||||
*/
|
||||
dat += "</body></html>"
|
||||
|
||||
U << browse(dat,"window=spideros;size=400x444;border=1;can_resize=0;can_close=0;can_minimize=0")
|
||||
@@ -493,13 +455,23 @@
|
||||
spideros=32
|
||||
if("4")
|
||||
spideros=4
|
||||
/*Sub-menu testing stuff.
|
||||
if("31")
|
||||
spideros=31
|
||||
if("49")
|
||||
spideros=49
|
||||
if("491")
|
||||
spideros=491 */
|
||||
if("Message")
|
||||
var/obj/item/device/pda/P = locate(href_list["target"])
|
||||
var/t = input(U, "Please enter untraceable message.") as text
|
||||
t = copytext(sanitize(t), 1, MAX_MESSAGE_LEN)
|
||||
if(!t||U.stat||U.wear_suit!=src||!initialize)//Wow, another one of these. Man...
|
||||
return
|
||||
if(isnull(P)||P.toff)//So it doesn't freak out if the object no-longer exists.
|
||||
U << "\red Error: unable to deliver message."
|
||||
spideros()
|
||||
return
|
||||
P.tnote += "<i><b>← From unknown source:</b></i><br>[t]<br>"
|
||||
if (!P.silent)
|
||||
playsound(P.loc, 'twobeep.ogg', 50, 1)
|
||||
for (var/mob/O in hearers(3, P.loc))
|
||||
O.show_message(text("\icon[P] *[P.ttone]*"))
|
||||
P.overlays = null
|
||||
P.overlays += image('pda.dmi', "pda-r")
|
||||
if("Unlock Kamikaze")
|
||||
if(input(U)=="Divine Wind")
|
||||
if( !(U.stat||U.wear_suit!=src||!initialize) )
|
||||
@@ -583,38 +555,6 @@
|
||||
reagents.trans_id_to(U, "nutriment", 5)
|
||||
U << "You feel a tiny prick and a sudden rush of substance in to your veins."
|
||||
|
||||
else
|
||||
/*Leaving this for the messenger because it's an awesome solution. For switch to work, the variable has to be static.
|
||||
Not the case when P is a specific object. The downside, of course, is that there is only one slot.
|
||||
The following switch moves data to the appropriate function based on what screen it was clicked on. For now only uses screen 3.
|
||||
As an example, I added screen 31 to send the silence virus to people in the commented bits.
|
||||
You can do the same with functions that require dynamic tracking.
|
||||
*/
|
||||
switch(spideros)
|
||||
if(3)
|
||||
var/obj/item/device/pda/P = locate(href_list["choice"])
|
||||
var/t = input(U, "Please enter untraceable message.") as text
|
||||
t = copytext(sanitize(t), 1, MAX_MESSAGE_LEN)
|
||||
if(!t||U.stat||U.wear_suit!=src||!initialize)//Wow, another one of these. Man...
|
||||
return
|
||||
if(isnull(P)||P.toff)//So it doesn't freak out if the object no-longer exists.
|
||||
U << "\red Error: unable to deliver message."
|
||||
spideros()
|
||||
return
|
||||
P.tnote += "<i><b>← From unknown source:</b></i><br>[t]<br>"
|
||||
if (!P.silent)
|
||||
playsound(P.loc, 'twobeep.ogg', 50, 1)
|
||||
for (var/mob/O in hearers(3, P.loc))
|
||||
O.show_message(text("\icon[P] *[P.ttone]*"))
|
||||
P.overlays = null
|
||||
P.overlays += image('pda.dmi', "pda-r")
|
||||
/* if(31)
|
||||
var/obj/item/device/pda/P = locate(href_list["choice"])
|
||||
if (!P.toff)
|
||||
U.show_message("\blue Virus sent!", 1)
|
||||
P.silent = 1
|
||||
P.ttone = "silence" */
|
||||
|
||||
spideros()//Refreshes the screen by calling it again (which replaces current screen with new screen).
|
||||
return
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
var/ttone = "beep" //The ringtone!
|
||||
var/honkamt = 0 //How many honks left when infected with honk.exe
|
||||
var/mimeamt = 0 //How many silence left when infected with mime.exe
|
||||
var/note = "Congratulations, your station has chosen the Thinktronic 5100 Personal Data Assistant!" //Current note in the notepad function.
|
||||
var/note = "Congratulations, your station has chosen the Thinktronic 5230 Personal Data Assistant!" //Current note in the notepad function.
|
||||
var/cart = "" //A place to stick cartridge menu information
|
||||
|
||||
var/obj/item/weapon/integrated_uplink/uplink = null
|
||||
@@ -135,7 +135,7 @@
|
||||
else
|
||||
switch (mode)
|
||||
if (0)
|
||||
dat += "<h2>PERSONAL DATA ASSISTANT</h2>"
|
||||
dat += "<h2>PERSONAL DATA ASSISTANT v.1.2</h2>"
|
||||
dat += "Owner: [owner], [ownjob]<br>"
|
||||
dat += text("ID: <A href='?src=\ref[];choice=Authenticate'>[]</A><br>", src, (id ? "[id.registered], [id.assignment]" : "----------"))
|
||||
dat += "Station Time: [round(world.time / 36000)+12]:[(world.time / 600 % 60) < 10 ? add_zero(world.time / 600 % 60, 1) : world.time / 600 % 60]"//:[world.time / 100 % 6][world.time / 100 % 10]"
|
||||
@@ -214,13 +214,11 @@
|
||||
dat += "<a href='byond://?src=\ref[src];choice=21'><img src=pda_mail.png> Messages</a><br>"
|
||||
|
||||
if (istype(cartridge, /obj/item/weapon/cartridge/syndicate))
|
||||
dat += "<h4><a href='byond://?src=\ref[src];choice=22'> Hidden Menu</a><h4>"
|
||||
|
||||
dat += "<b>[cartridge:shock_charges] detonation charges left.</b><HR>"
|
||||
if (istype(cartridge, /obj/item/weapon/cartridge/clown))
|
||||
dat += "<h4><a href='byond://?src=\ref[src];choice=23'> Hidden Menu</a><h4>"
|
||||
|
||||
dat += "<b>[cartridge:honk_charges] viral files left.</b><HR>"
|
||||
if (istype(cartridge, /obj/item/weapon/cartridge/mime))
|
||||
dat += "<h4><a href='byond://?src=\ref[src];choice=24'> Hidden Menu</a><h4>"
|
||||
dat += "<b>[cartridge:mime_charges] viral files left.</b><HR>"
|
||||
|
||||
dat += "<h4><img src=pda_menu.png> Detected PDAs</h4>"
|
||||
|
||||
@@ -231,7 +229,13 @@
|
||||
if (!toff)
|
||||
for (var/obj/item/device/pda/P in world)
|
||||
if (!P.owner||P.toff||P == src) continue
|
||||
dat += "<li><a href='byond://?src=\ref[src];choice=\ref[P]'>[P]</a>"
|
||||
dat += "<li><a href='byond://?src=\ref[src];choice=Message;target=\ref[P]'>[P]</a>"
|
||||
if (istype(cartridge, /obj/item/weapon/cartridge/syndicate))
|
||||
dat += " (<a href='byond://?src=\ref[src];choice=Detonate;target=\ref[P]'><img src=pda_boom.png>*Detonate*</a>)"
|
||||
if (istype(cartridge, /obj/item/weapon/cartridge/clown))
|
||||
dat += " (<a href='byond://?src=\ref[src];choice=Send Honk;target=\ref[P]'><img src=pda_honk.png>*Send Virus*</a>)"
|
||||
if (istype(cartridge, /obj/item/weapon/cartridge/mime))
|
||||
dat += " (<a href='byond://?src=\ref[src];choice=Send Silence;target=\ref[P]'>*Send Virus*</a>)"
|
||||
dat += "</li>"
|
||||
count++
|
||||
dat += "</ul>"
|
||||
@@ -247,51 +251,6 @@
|
||||
dat += tnote
|
||||
dat += "<br>"
|
||||
|
||||
if(22)
|
||||
dat += "<h4><img src=pda_mail.png> Datomatix</h4>"
|
||||
dat += "<b>[cartridge:shock_charges] detonation charges left.</b><HR>"
|
||||
dat += "<h4><img src=pda_menu.png> Detected PDAs</h4>"
|
||||
dat += "<ul>"
|
||||
var/count = 0
|
||||
for (var/obj/item/device/pda/P in world)
|
||||
if (!P.owner||P.toff||P == src) continue
|
||||
dat += " (<a href='byond://?src=\ref[src];choice=\ref[P]'><img src=pda_boom.png> <i>[P]</i> *Detonate*</a>)"
|
||||
dat += "</li>"
|
||||
count++
|
||||
dat += "</ul>"
|
||||
if (count == 0)
|
||||
dat += "None detected.<br>"
|
||||
|
||||
if(23)
|
||||
dat += "<h4><img src=pda_mail.png> Honk Attack!!</h4>"
|
||||
dat += "<b>[cartridge:honk_charges] viral files left.</b><HR>"
|
||||
dat += "<h4><img src=pda_menu.png> Detected PDAs</h4>"
|
||||
dat += "<ul>"
|
||||
var/count = 0
|
||||
for (var/obj/item/device/pda/P in world)
|
||||
if (!P.owner||P.toff||P == src) continue
|
||||
dat += " (<a href='byond://?src=\ref[src];choice=\ref[P]'><img src=pda_honk.png> <i>[P]</i> *Send Virus*</a>)"
|
||||
dat += "</li>"
|
||||
count++
|
||||
dat += "</ul>"
|
||||
if (count == 0)
|
||||
dat += "None detected.<br>"
|
||||
|
||||
if(24)
|
||||
dat += "<h4><img src=pda_mail.png> Silent but Deadly...</h4>"
|
||||
dat += "<b>[cartridge:mime_charges] viral files left.</b><HR>"
|
||||
dat += "<h4><img src=pda_menu.png> Detected PDAs</h4>"
|
||||
dat += "<ul>"
|
||||
var/count = 0
|
||||
for (var/obj/item/device/pda/P in world)
|
||||
if (!P.owner||P.toff||P == src) continue
|
||||
dat += " (<a href='byond://?src=\ref[src];choice=\ref[P]'> <i>[P]</i> *Send Virus*</a>)"
|
||||
dat += "</li>"
|
||||
count++
|
||||
dat += "</ul>"
|
||||
if (count == 0)
|
||||
dat += "None detected.<br>"
|
||||
|
||||
if (3)
|
||||
dat += "<h4><img src=pda_atmos.png> Atmospheric Readings</h4>"
|
||||
|
||||
@@ -324,7 +283,7 @@
|
||||
dat += cart
|
||||
|
||||
dat += "</body></html>"
|
||||
user << browse(dat, "window=pda;size=400x444;border=1;can_resize=0;can_close=0;can_minimize=0")
|
||||
user << browse(dat, "window=pda;size=400x444;border=1;can_resize=1;can_close=0;can_minimize=0")
|
||||
onclose(user, "pda", src)
|
||||
|
||||
/obj/item/device/pda/Topic(href, href_list)
|
||||
@@ -353,7 +312,7 @@
|
||||
mode = round(mode/10)
|
||||
if(mode==4)//Fix for cartridges. Redirects to hub.
|
||||
mode = 0
|
||||
else if(mode==44||mode==45)//Fix for cartridges. Redirects to refresh the menu.
|
||||
else if(mode >= 40 && mode <= 49)//Fix for cartridges. Redirects to refresh the menu.
|
||||
cartridge.mode = mode
|
||||
cartridge.unlock()
|
||||
if ("Authenticate")//Checks for ID
|
||||
@@ -395,12 +354,6 @@
|
||||
mode = 2
|
||||
if("21")//Read messeges
|
||||
mode = 21
|
||||
if("22")//Detonate PDAs
|
||||
mode = 22
|
||||
if("23")//Send honk virus
|
||||
mode = 23
|
||||
if("24")//Send silence virus
|
||||
mode = 24
|
||||
if("3")//Atmos scan
|
||||
mode = 3
|
||||
if("4")//Redirects to hub
|
||||
@@ -473,34 +426,7 @@
|
||||
else
|
||||
U << browse(null, "window=pda")
|
||||
return
|
||||
|
||||
//SYNDICATE FUNCTIONS===================================
|
||||
|
||||
if("Door")
|
||||
if(!isnull(cartridge) && cartridge.access_remote_door)
|
||||
for(var/obj/machinery/door/poddoor/M in machines)
|
||||
if(M.id == cartridge.remote_door_id)
|
||||
if(M.density)
|
||||
spawn(0)
|
||||
M.open()
|
||||
else
|
||||
spawn(0)
|
||||
M.close()
|
||||
if("Lock")
|
||||
if(uplink)
|
||||
uplink.active = 0
|
||||
note = uplink.orignote
|
||||
updateUsrDialog()
|
||||
|
||||
//LINK FUNCTIONS===================================
|
||||
|
||||
else//Else, redirects based on current menu
|
||||
switch(mode)
|
||||
if(0)//Cartridge menu linking
|
||||
mode = text2num(href_list["choice"])
|
||||
cartridge.mode = mode
|
||||
cartridge.unlock()
|
||||
if(2)//Message people.
|
||||
if("Message")
|
||||
var/t = input(U, "Please enter message", name, null) as text
|
||||
t = copytext(sanitize(t), 1, MAX_MESSAGE_LEN)
|
||||
if (!t)
|
||||
@@ -508,7 +434,7 @@
|
||||
if (!in_range(src, U) && loc != U)
|
||||
return
|
||||
|
||||
var/obj/item/device/pda/P = locate(href_list["choice"])
|
||||
var/obj/item/device/pda/P = locate(href_list["target"])
|
||||
|
||||
if (isnull(P)||P.toff || toff)
|
||||
return
|
||||
@@ -535,9 +461,56 @@
|
||||
|
||||
P.overlays = null
|
||||
P.overlays += image('pda.dmi', "pda-r")
|
||||
if(22)//Detonate PDA
|
||||
if("Send Honk")//Honk virus
|
||||
if(istype(cartridge, /obj/item/weapon/cartridge/clown))
|
||||
var/obj/item/device/pda/P = locate(href_list["target"])
|
||||
if(!isnull(P))
|
||||
if (!P.toff && cartridge:honk_charges > 0)
|
||||
cartridge:honk_charges--
|
||||
U.show_message("\blue Virus sent!", 1)
|
||||
P.honkamt = (rand(15,20))
|
||||
updateUsrDialog()
|
||||
else
|
||||
U << "PDA not found."
|
||||
else
|
||||
U << browse(null, "window=pda")
|
||||
return
|
||||
if("Send Silence")//Silent virus
|
||||
if(istype(cartridge, /obj/item/weapon/cartridge/mime))
|
||||
var/obj/item/device/pda/P = locate(href_list["target"])
|
||||
if(!isnull(P))
|
||||
if (!P.toff && cartridge:mime_charges > 0)
|
||||
cartridge:mime_charges--
|
||||
U.show_message("\blue Virus sent!", 1)
|
||||
P.silent = 1
|
||||
P.ttone = "silence"
|
||||
updateUsrDialog()
|
||||
else
|
||||
U << "PDA not found."
|
||||
else
|
||||
U << browse(null, "window=pda")
|
||||
return
|
||||
|
||||
//SYNDICATE FUNCTIONS===================================
|
||||
|
||||
if("Door")
|
||||
if(!isnull(cartridge) && cartridge.access_remote_door)
|
||||
for(var/obj/machinery/door/poddoor/M in machines)
|
||||
if(M.id == cartridge.remote_door_id)
|
||||
if(M.density)
|
||||
spawn(0)
|
||||
M.open()
|
||||
else
|
||||
spawn(0)
|
||||
M.close()
|
||||
if("Lock")
|
||||
if(uplink)
|
||||
uplink.active = 0
|
||||
note = uplink.orignote
|
||||
updateUsrDialog()
|
||||
if("Detonate")//Detonate PDA
|
||||
if(istype(cartridge, /obj/item/weapon/cartridge/syndicate))
|
||||
var/obj/item/device/pda/P = locate(href_list["choice"])
|
||||
var/obj/item/device/pda/P = locate(href_list["target"])
|
||||
if(!isnull(P))
|
||||
if (!P.toff && cartridge:shock_charges > 0)
|
||||
cartridge:shock_charges--
|
||||
@@ -568,35 +541,13 @@
|
||||
else
|
||||
U << browse(null, "window=pda")
|
||||
return
|
||||
if(23)//Honk virus
|
||||
if(istype(cartridge, /obj/item/weapon/cartridge/clown))
|
||||
var/obj/item/device/pda/P = locate(href_list["choice"])
|
||||
if(!isnull(P))
|
||||
if (!P.toff && cartridge:honk_charges > 0)
|
||||
cartridge:honk_charges--
|
||||
U.show_message("\blue Virus sent!", 1)
|
||||
P.honkamt = (rand(15,20))
|
||||
updateUsrDialog()
|
||||
else
|
||||
U << "PDA not found."
|
||||
else
|
||||
U << browse(null, "window=pda")
|
||||
return
|
||||
if(24)//Silent virus
|
||||
if(istype(cartridge, /obj/item/weapon/cartridge/mime))
|
||||
var/obj/item/device/pda/P = locate(href_list["choice"])
|
||||
if(!isnull(P))
|
||||
if (!P.toff && cartridge:mime_charges > 0)
|
||||
cartridge:mime_charges--
|
||||
U.show_message("\blue Virus sent!", 1)
|
||||
P.silent = 1
|
||||
P.ttone = "silence"
|
||||
updateUsrDialog()
|
||||
else
|
||||
U << "PDA not found."
|
||||
else
|
||||
U << browse(null, "window=pda")
|
||||
return
|
||||
|
||||
//LINK FUNCTIONS===================================
|
||||
|
||||
else//Cartridge menu linking
|
||||
mode = text2num(href_list["choice"])
|
||||
cartridge.mode = mode
|
||||
cartridge.unlock()
|
||||
|
||||
//EXTRA FUNCTIONS===================================
|
||||
|
||||
@@ -610,7 +561,6 @@
|
||||
for (var/mob/M in viewers(1, loc))
|
||||
if (M.client && M.machine == src)
|
||||
attack_self(M)
|
||||
// attack_self(U)
|
||||
return
|
||||
|
||||
// access to status display signals
|
||||
|
||||
@@ -124,10 +124,8 @@
|
||||
if (!istype(loc, /obj/item/device/pda))
|
||||
return
|
||||
|
||||
// loc:mode = "cart" //Switch right to the notes program
|
||||
|
||||
src.generate_menu()
|
||||
src.print_to_host(src.menu)
|
||||
src.print_to_host(menu)
|
||||
return
|
||||
|
||||
proc/print_to_host(var/text)
|
||||
@@ -167,20 +165,20 @@
|
||||
menu = "<h4><img src=pda_signaler.png> Remote Signaling System</h4>"
|
||||
|
||||
menu += {"
|
||||
<a href='byond://?src=\ref[src];ssend=1'>Send Signal</A><BR>
|
||||
<a href='byond://?src=\ref[src];choice=Send Signal'>Send Signal</A><BR>
|
||||
Frequency:
|
||||
<a href='byond://?src=\ref[src];sfreq=-10'>-</a>
|
||||
<a href='byond://?src=\ref[src];sfreq=-2'>-</a>
|
||||
<a href='byond://?src=\ref[src];choice=Signal Frequency;sfreq=-10'>-</a>
|
||||
<a href='byond://?src=\ref[src];choice=Signal Frequency;sfreq=-2'>-</a>
|
||||
[format_frequency(src.radio:frequency)]
|
||||
<a href='byond://?src=\ref[src];sfreq=2'>+</a>
|
||||
<a href='byond://?src=\ref[src];sfreq=10'>+</a><br>
|
||||
<a href='byond://?src=\ref[src];choice=Signal Frequency;sfreq=2'>+</a>
|
||||
<a href='byond://?src=\ref[src];choice=Signal Frequency;sfreq=10'>+</a><br>
|
||||
<br>
|
||||
Code:
|
||||
<a href='byond://?src=\ref[src];scode=-5'>-</a>
|
||||
<a href='byond://?src=\ref[src];scode=-1'>-</a>
|
||||
<a href='byond://?src=\ref[src];choice=Signal Code;scode=-5'>-</a>
|
||||
<a href='byond://?src=\ref[src];choice=Signal Code;scode=-1'>-</a>
|
||||
[src.radio:code]
|
||||
<a href='byond://?src=\ref[src];scode=1'>+</a>
|
||||
<a href='byond://?src=\ref[src];scode=5'>+</a><br>"}
|
||||
<a href='byond://?src=\ref[src];choice=Signal Code;scode=1'>+</a>
|
||||
<a href='byond://?src=\ref[src];choice=Signal Code;scode=5'>+</a><br>"}
|
||||
if (41) //crew manifest
|
||||
|
||||
menu = "<h4><img src=pda_notes.png> Crew Manifest</h4>"
|
||||
@@ -194,15 +192,15 @@ Code:
|
||||
if (42) //status displays
|
||||
menu = "<h4><img src=pda_status.png> Station Status Display Interlink</h4>"
|
||||
|
||||
menu += "\[ <A HREF='?src=\ref[src];statdisp=blank'>Clear</A> \]<BR>"
|
||||
menu += "\[ <A HREF='?src=\ref[src];statdisp=shuttle'>Shuttle ETA</A> \]<BR>"
|
||||
menu += "\[ <A HREF='?src=\ref[src];statdisp=message'>Message</A> \]"
|
||||
menu += "<ul><li> Line 1: <A HREF='?src=\ref[src];statdisp=setmsg1'>[ message1 ? message1 : "(none)"]</A>"
|
||||
menu += "<li> Line 2: <A HREF='?src=\ref[src];statdisp=setmsg2'>[ message2 ? message2 : "(none)"]</A></ul><br>"
|
||||
menu += "\[ Alert: <A HREF='?src=\ref[src];statdisp=alert;alert=default'>None</A> |"
|
||||
menu += " <A HREF='?src=\ref[src];statdisp=alert;alert=redalert'>Red Alert</A> |"
|
||||
menu += " <A HREF='?src=\ref[src];statdisp=alert;alert=lockdown'>Lockdown</A> |"
|
||||
menu += " <A HREF='?src=\ref[src];statdisp=alert;alert=biohazard'>Biohazard</A> \]<BR>"
|
||||
menu += "\[ <A HREF='?src=\ref[src];choice=Status;statdisp=blank'>Clear</A> \]<BR>"
|
||||
menu += "\[ <A HREF='?src=\ref[src];choice=Status;statdisp=shuttle'>Shuttle ETA</A> \]<BR>"
|
||||
menu += "\[ <A HREF='?src=\ref[src];choice=Status;statdisp=message'>Message</A> \]"
|
||||
menu += "<ul><li> Line 1: <A HREF='?src=\ref[src];choice=Status;statdisp=setmsg1'>[ message1 ? message1 : "(none)"]</A>"
|
||||
menu += "<li> Line 2: <A HREF='?src=\ref[src];choice=Status;statdisp=setmsg2'>[ message2 ? message2 : "(none)"]</A></ul><br>"
|
||||
menu += "\[ Alert: <A HREF='?src=\ref[src];choice=Status;statdisp=alert;alert=default'>None</A> |"
|
||||
menu += " <A HREF='?src=\ref[src];choice=Status;statdisp=alert;alert=redalert'>Red Alert</A> |"
|
||||
menu += " <A HREF='?src=\ref[src];choice=Status;statdisp=alert;alert=lockdown'>Lockdown</A> |"
|
||||
menu += " <A HREF='?src=\ref[src];choice=Status;statdisp=alert;alert=biohazard'>Biohazard</A> \]<BR>"
|
||||
|
||||
if (43) //Muskets' power monitor
|
||||
menu = "<h4><img src=pda_power.png> Power Monitor</h4>"
|
||||
@@ -235,7 +233,7 @@ Code:
|
||||
if (44) //medical records //This thing only displays a single screen so it's hard to really get the sub-menu stuff working.
|
||||
menu = "<h4><img src=pda_medical.png> Medical Record List</h4>"
|
||||
for (var/datum/data/record/R in data_core.general)
|
||||
menu += "<a href='byond://?src=\ref[src];d_rec=\ref[R]'>[R.fields["id"]]: [R.fields["name"]]<br>"
|
||||
menu += "<a href='byond://?src=\ref[src];choice=Medical Records;target=\ref[R]'>[R.fields["id"]]: [R.fields["name"]]<br>"
|
||||
menu += "<br>"
|
||||
if(441)
|
||||
menu = "<h4><img src=pda_medical.png> Medical Record</h4>"
|
||||
@@ -277,7 +275,7 @@ Code:
|
||||
menu = "<h4><img src=pda_cuffs.png> Security Record List</h4>"
|
||||
|
||||
for (var/datum/data/record/R in data_core.general)
|
||||
menu += "<a href='byond://?src=\ref[src];d_rec=\ref[R]'>[R.fields["id"]]: [R.fields["name"]]<br>"
|
||||
menu += "<a href='byond://?src=\ref[src];choice=Security Records;target=\ref[R]'>[R.fields["id"]]: [R.fields["name"]]<br>"
|
||||
|
||||
menu += "<br>"
|
||||
if(451)
|
||||
@@ -499,14 +497,10 @@ Code:
|
||||
if (usr.stat || usr.restrained() || !in_range(loc, usr))
|
||||
return
|
||||
|
||||
if (href_list["d_rec"])
|
||||
|
||||
var/datum/data/record/R = locate(href_list["d_rec"])
|
||||
var/datum/data/record/M = locate(href_list["d_rec"])
|
||||
var/datum/data/record/S = locate(href_list["d_rec"])
|
||||
|
||||
switch(mode)
|
||||
if(44)
|
||||
switch(href_list["choice"])
|
||||
if("Medical Records")
|
||||
var/datum/data/record/R = locate(href_list["target"])
|
||||
var/datum/data/record/M = locate(href_list["target"])
|
||||
loc:mode = 441
|
||||
mode = 441
|
||||
if (data_core.general.Find(R))
|
||||
@@ -516,8 +510,10 @@ Code:
|
||||
break
|
||||
active1 = R
|
||||
active2 = M
|
||||
active3 = S
|
||||
if(45)
|
||||
|
||||
if("Security Records")
|
||||
var/datum/data/record/R = locate(href_list["target"])
|
||||
var/datum/data/record/S = locate(href_list["target"])
|
||||
loc:mode = 451
|
||||
mode = 451
|
||||
if (data_core.general.Find(R))
|
||||
@@ -526,10 +522,9 @@ Code:
|
||||
S = E
|
||||
break
|
||||
active1 = R
|
||||
active2 = M
|
||||
active3 = S
|
||||
|
||||
else if ((href_list["ssend"]) && (istype(src,/obj/item/weapon/cartridge/signal)))
|
||||
if("Send Signal")
|
||||
for(var/obj/item/assembly/r_i_ptank/R in world) //Bomblist stuff
|
||||
if((R.part1.code == src/radio:code) && (R.part1.frequency == src.radio:frequency))
|
||||
bombers += "[key_name(usr)] has activated a radio bomb (Freq: [format_frequency(src.radio:frequency)], Code: [src.radio:code]). Temp = [R.part3.air_contents.temperature-T0C]."
|
||||
@@ -537,24 +532,22 @@ Code:
|
||||
src.radio:send_signal("ACTIVATE")
|
||||
return
|
||||
|
||||
else if ((href_list["sfreq"]) && (istype(src,/obj/item/weapon/cartridge/signal)))
|
||||
if("Signal Frequency")
|
||||
var/new_frequency = sanitize_frequency(src.radio:frequency + text2num(href_list["sfreq"]))
|
||||
src.radio:set_frequency(new_frequency)
|
||||
|
||||
else if ((href_list["scode"]) && (istype(src,/obj/item/weapon/cartridge/signal)))
|
||||
if("Signal Code")
|
||||
radio:code += text2num(href_list["scode"])
|
||||
radio:code = round(src.radio:code)
|
||||
radio:code = min(100, src.radio:code)
|
||||
radio:code = max(1, src.radio:code)
|
||||
|
||||
else if (href_list["statdisp"] && access_status_display)
|
||||
|
||||
if("Status")
|
||||
switch(href_list["statdisp"])
|
||||
if("message")
|
||||
post_status("message", message1, message2)
|
||||
if("alert")
|
||||
post_status("alert", href_list["alert"])
|
||||
|
||||
if("setmsg1")
|
||||
message1 = input("Line 1", "Enter Message Text", message1) as text|null
|
||||
src.updateSelfDialog()
|
||||
@@ -564,5 +557,5 @@ Code:
|
||||
else
|
||||
post_status(href_list["statdisp"])
|
||||
|
||||
src.generate_menu()
|
||||
src.print_to_host(menu)
|
||||
generate_menu()
|
||||
print_to_host(menu)
|
||||
|
||||
@@ -133,6 +133,8 @@ I kind of like the right click only--the window version can get a little confusi
|
||||
for(var/obj/machinery/atmospherics/unary/vent_pump/v in range(1,src))
|
||||
if(!v.welded)
|
||||
vent_found = v
|
||||
else
|
||||
src << "\red That vent is welded."
|
||||
if(vent_found)
|
||||
var/list/vents = list()
|
||||
for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in world)
|
||||
|
||||
@@ -8,8 +8,11 @@
|
||||
if(powerc())
|
||||
var/vent_found = 0
|
||||
for(var/obj/machinery/atmospherics/unary/vent_pump/v in range(1,src))
|
||||
vent_found = 1
|
||||
if(!vent_found)
|
||||
if(!v.welded)
|
||||
vent_found = v
|
||||
else
|
||||
src << "\red That vent is welded."
|
||||
if(vent_found)
|
||||
var/list/vents = list()
|
||||
for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in world)
|
||||
if(temp_vent.loc == loc)
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 18 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 78 KiB |
14960
maps/tgstation.2.0.7.dmm
14960
maps/tgstation.2.0.7.dmm
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user