512 forward compatibility merge

This commit is contained in:
Jordan Brown
2017-10-29 11:27:46 -04:00
committed by CitadelStationBot
parent fd2705b6e6
commit 4b297f509e
227 changed files with 5060 additions and 2003 deletions

View File

@@ -3,7 +3,7 @@ sudo: false
env: env:
global: global:
- BYOND_MAJOR="511" - BYOND_MAJOR="511"
- BYOND_MINOR="1380" - BYOND_MINOR="1385"
- NODE_VERSION="4" - NODE_VERSION="4"
- BUILD_TOOLS=false - BUILD_TOOLS=false
- BUILD_TESTING=false - BUILD_TESTING=false

View File

@@ -116,17 +116,17 @@
#define R_MAXPERMISSION 4096 //This holds the maximum value for a permission. It is used in iteration, so keep it updated. #define R_MAXPERMISSION 4096 //This holds the maximum value for a permission. It is used in iteration, so keep it updated.
#define ADMIN_QUE(user) "(<a href='?_src_=holder;[HrefToken(TRUE)];adminmoreinfo=\ref[user]'>?</a>)" #define ADMIN_QUE(user) "(<a href='?_src_=holder;[HrefToken(TRUE)];adminmoreinfo=[REF(user)]'>?</a>)"
#define ADMIN_FLW(user) "(<a href='?_src_=holder;[HrefToken(TRUE)];adminplayerobservefollow=\ref[user]'>FLW</a>)" #define ADMIN_FLW(user) "(<a href='?_src_=holder;[HrefToken(TRUE)];adminplayerobservefollow=[REF(user)]'>FLW</a>)"
#define ADMIN_PP(user) "(<a href='?_src_=holder;[HrefToken(TRUE)];adminplayeropts=\ref[user]'>PP</a>)" #define ADMIN_PP(user) "(<a href='?_src_=holder;[HrefToken(TRUE)];adminplayeropts=[REF(user)]'>PP</a>)"
#define ADMIN_VV(atom) "(<a href='?_src_=vars;[HrefToken(TRUE)];Vars=\ref[atom]'>VV</a>)" #define ADMIN_VV(atom) "(<a href='?_src_=vars;[HrefToken(TRUE)];Vars=[REF(atom)]'>VV</a>)"
#define ADMIN_SM(user) "(<a href='?_src_=holder;[HrefToken(TRUE)];subtlemessage=\ref[user]'>SM</a>)" #define ADMIN_SM(user) "(<a href='?_src_=holder;[HrefToken(TRUE)];subtlemessage=[REF(user)]'>SM</a>)"
#define ADMIN_TP(user) "(<a href='?_src_=holder;[HrefToken(TRUE)];traitor=\ref[user]'>TP</a>)" #define ADMIN_TP(user) "(<a href='?_src_=holder;[HrefToken(TRUE)];traitor=[REF(user)]'>TP</a>)"
#define ADMIN_KICK(user) "(<a href='?_src_=holder;[HrefToken(TRUE)];boot2=\ref[user]'>KICK</a>)" #define ADMIN_KICK(user) "(<a href='?_src_=holder;[HrefToken(TRUE)];boot2=[REF(user)]'>KICK</a>)"
#define ADMIN_CENTCOM_REPLY(user) "(<a href='?_src_=holder;[HrefToken(TRUE)];CentComReply=\ref[user]'>RPLY</a>)" #define ADMIN_CENTCOM_REPLY(user) "(<a href='?_src_=holder;[HrefToken(TRUE)];CentComReply=[REF(user)]'>RPLY</a>)"
#define ADMIN_SYNDICATE_REPLY(user) "(<a href='?_src_=holder;[HrefToken(TRUE)];SyndicateReply=\ref[user]'>RPLY</a>)" #define ADMIN_SYNDICATE_REPLY(user) "(<a href='?_src_=holder;[HrefToken(TRUE)];SyndicateReply=[REF(user)]'>RPLY</a>)"
#define ADMIN_SC(user) "(<a href='?_src_=holder;[HrefToken(TRUE)];adminspawncookie=\ref[user]'>SC</a>)" #define ADMIN_SC(user) "(<a href='?_src_=holder;[HrefToken(TRUE)];adminspawncookie=[REF(user)]'>SC</a>)"
#define ADMIN_SMITE(user) "(<a href='?_src_=holder;[HrefToken(TRUE)];adminsmite=\ref[user]'>SMITE</a>)" #define ADMIN_SMITE(user) "(<a href='?_src_=holder;[HrefToken(TRUE)];adminsmite=[REF(user)]'>SMITE</a>)"
#define ADMIN_LOOKUP(user) "[key_name_admin(user)][ADMIN_QUE(user)]" #define ADMIN_LOOKUP(user) "[key_name_admin(user)][ADMIN_QUE(user)]"
#define ADMIN_LOOKUPFLW(user) "[key_name_admin(user)][ADMIN_QUE(user)] [ADMIN_FLW(user)]" #define ADMIN_LOOKUPFLW(user) "[key_name_admin(user)][ADMIN_QUE(user)] [ADMIN_FLW(user)]"
#define ADMIN_SET_SD_CODE "(<a href='?_src_=holder;[HrefToken(TRUE)];set_selfdestruct_code=1'>SETCODE</a>)" #define ADMIN_SET_SD_CODE "(<a href='?_src_=holder;[HrefToken(TRUE)];set_selfdestruct_code=1'>SETCODE</a>)"
@@ -135,7 +135,7 @@
#define ADMIN_JMP(src) "(<a href='?_src_=holder;[HrefToken(TRUE)];adminplayerobservecoodjump=1;X=[src.x];Y=[src.y];Z=[src.z]'>JMP</a>)" #define ADMIN_JMP(src) "(<a href='?_src_=holder;[HrefToken(TRUE)];adminplayerobservecoodjump=1;X=[src.x];Y=[src.y];Z=[src.z]'>JMP</a>)"
#define COORD(src) "[src ? "([src.x],[src.y],[src.z])" : "nonexistent location"]" #define COORD(src) "[src ? "([src.x],[src.y],[src.z])" : "nonexistent location"]"
#define ADMIN_COORDJMP(src) "[src ? "[COORD(src)] [ADMIN_JMP(src)]" : "nonexistent location"]" #define ADMIN_COORDJMP(src) "[src ? "[COORD(src)] [ADMIN_JMP(src)]" : "nonexistent location"]"
#define ADMIN_INDIVIDUALLOG(user) "(<a href='?_src_=holder;[HrefToken(TRUE)];individuallog=\ref[user]'>LOGS</a>)" #define ADMIN_INDIVIDUALLOG(user) "(<a href='?_src_=holder;[HrefToken(TRUE)];individuallog=[REF(user)]'>LOGS</a>)"
#define ADMIN_PUNISHMENT_LIGHTNING "Lightning bolt" #define ADMIN_PUNISHMENT_LIGHTNING "Lightning bolt"
#define ADMIN_PUNISHMENT_BRAINDAMAGE "Brain damage" #define ADMIN_PUNISHMENT_BRAINDAMAGE "Brain damage"

View File

@@ -466,9 +466,12 @@ GLOBAL_LIST_INIT(ghost_others_options, list(GHOST_OTHERS_SIMPLE, GHOST_OTHERS_DE
//Dummy mob reserve slots //Dummy mob reserve slots
#define DUMMY_HUMAN_SLOT_PREFERENCES "dummy_preference_preview" #define DUMMY_HUMAN_SLOT_PREFERENCES "dummy_preference_preview"
#define DUMMY_HUMAN_SLOT_MANIFEST "dummy_manifest_generation" #define DUMMY_HUMAN_SLOT_MANIFEST "dummy_manifest_generation"
#define PR_ANNOUNCEMENTS_PER_ROUND 5 //The number of unique PR announcements allowed per round #define PR_ANNOUNCEMENTS_PER_ROUND 5 //The number of unique PR announcements allowed per round
//This makes sure that a single person can only spam 3 reopens and 3 closes before being ignored //This makes sure that a single person can only spam 3 reopens and 3 closes before being ignored
#define MAX_PROC_DEPTH 195 // 200 proc calls deep and shit breaks, this is a bit lower to give some safety room #define MAX_PROC_DEPTH 195 // 200 proc calls deep and shit breaks, this is a bit lower to give some safety room
#define DUMMY_HUMAN_SLOT_MANIFEST "dummy_manifest_generation"

View File

@@ -37,9 +37,9 @@
#define EAVESDROP_EXTRA_RANGE 1 //how much past the specified message_range does the message get starred, whispering only #define EAVESDROP_EXTRA_RANGE 1 //how much past the specified message_range does the message get starred, whispering only
// A link given to ghost alice to follow bob // A link given to ghost alice to follow bob
#define FOLLOW_LINK(alice, bob) "<a href=?src=\ref[alice];follow=\ref[bob]>(F)</a>" #define FOLLOW_LINK(alice, bob) "<a href=?src=[REF(alice)];follow=[REF(bob)]>(F)</a>"
#define TURF_LINK(alice, turfy) "<a href=?src=\ref[alice];x=[turfy.x];y=[turfy.y];z=[turfy.z]>(T)</a>" #define TURF_LINK(alice, turfy) "<a href=?src=[REF(alice)];x=[turfy.x];y=[turfy.y];z=[turfy.z]>(T)</a>"
#define FOLLOW_OR_TURF_LINK(alice, bob, turfy) "<a href=?src=\ref[alice];follow=\ref[bob];x=[turfy.x];y=[turfy.y];z=[turfy.z]>(F)</a>" #define FOLLOW_OR_TURF_LINK(alice, bob, turfy) "<a href=?src=[REF(alice)];follow=[REF(bob)];x=[turfy.x];y=[turfy.y];z=[turfy.z]>(F)</a>"
#define LOGSAY "say" #define LOGSAY "say"
#define LOGWHISPER "whisper" #define LOGWHISPER "whisper"

View File

@@ -178,7 +178,7 @@ mob
// Send the icon to src's local cache // Send the icon to src's local cache
src<<browse_rsc(I, iconName) src<<browse_rsc(I, iconName)
// Update the label to show it // Update the label to show it
winset(src,"imageLabel","image='\ref[I]'"); winset(src,"imageLabel","image='[REF(I)]'");
Add_Overlay() Add_Overlay()
set name = "4. Add Overlay" set name = "4. Add Overlay"
@@ -1140,7 +1140,7 @@ GLOBAL_LIST_INIT(freon_color_matrix, list("#2E5E69", "#60A2A8", "#A1AFB1", rgb(0
// Either an atom or somebody fucked up and is gonna get a runtime, which I'm fine with. // Either an atom or somebody fucked up and is gonna get a runtime, which I'm fine with.
var/atom/A = thing var/atom/A = thing
var/key = "[istype(A.icon, /icon) ? "\ref[A.icon]" : A.icon]:[A.icon_state]" var/key = "[istype(A.icon, /icon) ? "[REF(A.icon)]" : A.icon]:[A.icon_state]"
if (!bicon_cache[key]) // Doesn't exist, make it. if (!bicon_cache[key]) // Doesn't exist, make it.

View File

@@ -1411,3 +1411,38 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new)
//checks if a turf is in the planet z list. //checks if a turf is in the planet z list.
/proc/turf_z_is_planet(turf/T) /proc/turf_z_is_planet(turf/T)
return GLOB.z_is_planet["[T.z]"] return GLOB.z_is_planet["[T.z]"]
<<<<<<< HEAD
=======
//returns a GUID like identifier (using a mostly made up record format)
//guids are not on their own suitable for access or security tokens, as most of their bits are predictable.
// (But may make a nice salt to one)
/proc/GUID()
var/const/GUID_VERSION = "b"
var/const/GUID_VARIANT = "d"
var/node_id = copytext(md5("[rand()*rand(1,9999999)][world.name][world.hub][world.hub_password][world.internet_address][world.address][world.contents.len][world.status][world.port][rand()*rand(1,9999999)]"), 1, 13)
var/time_high = "[num2hex(text2num(time2text(world.realtime,"YYYY")), 2)][num2hex(world.realtime, 6)]"
var/time_mid = num2hex(world.timeofday, 4)
var/time_low = num2hex(world.time, 3)
var/time_clock = num2hex(TICK_DELTA_TO_MS(world.tick_usage), 3)
return "{[time_high]-[time_mid]-[GUID_VERSION][time_low]-[GUID_VARIANT][time_clock]-[node_id]}"
// \ref behaviour got changed in 512 so this is necesary to replicate old behaviour.
// If it ever becomes necesary to get a more performant REF(), this lies here in wait
// #define REF(thing) (thing && istype(thing, /datum) && thing:use_tag && thing:tag ? "[thing:tag]" : "\ref[thing]")
/proc/REF(input)
if(istype(input, /datum))
var/datum/thing = input
if(thing.use_tag)
if(!thing.tag)
WARNING("A ref was requested of an object with use_tag set but no tag: [thing]")
thing.use_tag = FALSE
else
return "\[[url_encode(thing.tag)]\]"
return "\ref[input]"
>>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental

View File

@@ -25,7 +25,7 @@ GLOBAL_LIST_EMPTY(bombers)
GLOBAL_PROTECT(bombers) GLOBAL_PROTECT(bombers)
GLOBAL_LIST_EMPTY(admin_log) GLOBAL_LIST_EMPTY(admin_log)
GLOBAL_PROTECT(admin_log) GLOBAL_PROTECT(admin_log)
GLOBAL_LIST_EMPTY(lastsignalers) //keeps last 100 signals here in format: "[src] used \ref[src] @ location [src.loc]: [freq]/[code]" GLOBAL_LIST_EMPTY(lastsignalers) //keeps last 100 signals here in format: "[src] used [REF(src)] @ location [src.loc]: [freq]/[code]"
GLOBAL_PROTECT(lastsignalers) GLOBAL_PROTECT(lastsignalers)
GLOBAL_LIST_EMPTY(lawchanges) //Stores who uploaded laws to which silicon-based lifeform, and what the law was GLOBAL_LIST_EMPTY(lawchanges) //Stores who uploaded laws to which silicon-based lifeform, and what the law was
GLOBAL_PROTECT(lawchanges) GLOBAL_PROTECT(lawchanges)

View File

@@ -51,6 +51,14 @@
return FALSE return FALSE
return ..() return ..()
<<<<<<< HEAD
=======
/datum/config_entry/proc/VASProcCallGuard(str_val)
. = !(IsAdminAdvancedProcCall() && GLOB.LastAdminCalledProc == "ValidateAndSet" && GLOB.LastAdminCalledTargetRef == "[REF(src)]")
if(!.)
log_admin_private("Config set of [type] to [str_val] attempted by [key_name(usr)]")
>>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental
/datum/config_entry/proc/ValidateAndSet(str_val) /datum/config_entry/proc/ValidateAndSet(str_val)
CRASH("Invalid config entry type!") CRASH("Invalid config entry type!")

View File

@@ -124,7 +124,7 @@ GLOBAL_PROTECT(config_dir)
stat("[name]:", statclick) stat("[name]:", statclick)
/datum/controller/configuration/proc/Get(entry_type) /datum/controller/configuration/proc/Get(entry_type)
if(IsAdminAdvancedProcCall() && GLOB.LastAdminCalledProc == "Get" && GLOB.LastAdminCalledTargetRef == "\ref[src]") if(IsAdminAdvancedProcCall() && GLOB.LastAdminCalledProc == "Get" && GLOB.LastAdminCalledTargetRef == "[REF(src)]")
log_admin_private("Config access of [entry_type] attempted by [key_name(usr)]") log_admin_private("Config access of [entry_type] attempted by [key_name(usr)]")
return return
var/datum/config_entry/E = entry_type var/datum/config_entry/E = entry_type
@@ -137,7 +137,7 @@ GLOBAL_PROTECT(config_dir)
return E.value return E.value
/datum/controller/configuration/proc/Set(entry_type, new_val) /datum/controller/configuration/proc/Set(entry_type, new_val)
if(IsAdminAdvancedProcCall() && GLOB.LastAdminCalledProc == "Set" && GLOB.LastAdminCalledTargetRef == "\ref[src]") if(IsAdminAdvancedProcCall() && GLOB.LastAdminCalledProc == "Set" && GLOB.LastAdminCalledTargetRef == "[REF(src)]")
log_admin_private("Config rewrite of [entry_type] to [new_val] attempted by [key_name(usr)]") log_admin_private("Config rewrite of [entry_type] to [new_val] attempted by [key_name(usr)]")
return return
var/datum/config_entry/E = entry_type var/datum/config_entry/E = entry_type

View File

@@ -133,7 +133,7 @@ SUBSYSTEM_DEF(events)
var/magic = "" var/magic = ""
var/holiday = "" var/holiday = ""
for(var/datum/round_event_control/E in SSevents.control) for(var/datum/round_event_control/E in SSevents.control)
dat = "<BR><A href='?src=\ref[src];[HrefToken()];forceevent=\ref[E]'>[E]</A>" dat = "<BR><A href='?src=[REF(src)];[HrefToken()];forceevent=[REF(E)]'>[E]</A>"
if(E.holidayID) if(E.holidayID)
holiday += dat holiday += dat
else if(E.wizardevent) else if(E.wizardevent)

View File

@@ -164,7 +164,7 @@ SUBSYSTEM_DEF(garbage)
#endif #endif
var/type = D.type var/type = D.type
var/datum/qdel_item/I = items[type] var/datum/qdel_item/I = items[type]
testing("GC: -- \ref[D] | [type] was unable to be GC'd --") testing("GC: -- \ref[src] | [type] was unable to be GC'd --")
I.failures++ I.failures++
if (GC_QUEUE_HARDDELETE) if (GC_QUEUE_HARDDELETE)
HardDelete(D) HardDelete(D)

View File

@@ -109,23 +109,23 @@ SUBSYSTEM_DEF(pai)
dat += "<p class=\"top\">Please configure your pAI personality's options. Remember, what you enter here could determine whether or not the user requesting a personality chooses you!</p>" dat += "<p class=\"top\">Please configure your pAI personality's options. Remember, what you enter here could determine whether or not the user requesting a personality chooses you!</p>"
dat += "<table>" dat += "<table>"
dat += "<tr class=\"d0\"><td>Name:</td><td>[candidate.name]</td></tr>" dat += "<tr class=\"d0\"><td>Name:</td><td>[candidate.name]</td></tr>"
dat += "<tr class=\"d1\"><td><a href='byond://?src=\ref[src];option=name;new=1;candidate=\ref[candidate]'>\[Edit\]</a></td><td>What you plan to call yourself. Suggestions: Any character name you would choose for a station character OR an AI.</td></tr>" dat += "<tr class=\"d1\"><td><a href='byond://?src=[REF(src)];option=name;new=1;candidate=[REF(candidate)]'>\[Edit\]</a></td><td>What you plan to call yourself. Suggestions: Any character name you would choose for a station character OR an AI.</td></tr>"
dat += "<tr class=\"d0\"><td>Description:</td><td>[candidate.description]</td></tr>" dat += "<tr class=\"d0\"><td>Description:</td><td>[candidate.description]</td></tr>"
dat += "<tr class=\"d1\"><td><a href='byond://?src=\ref[src];option=desc;new=1;candidate=\ref[candidate]'>\[Edit\]</a></td><td>What sort of pAI you typically play; your mannerisms, your quirks, etc. This can be as sparse or as detailed as you like.</td></tr>" dat += "<tr class=\"d1\"><td><a href='byond://?src=[REF(src)];option=desc;new=1;candidate=[REF(candidate)]'>\[Edit\]</a></td><td>What sort of pAI you typically play; your mannerisms, your quirks, etc. This can be as sparse or as detailed as you like.</td></tr>"
dat += "<tr class=\"d0\"><td>Preferred Role:</td><td>[candidate.role]</td></tr>" dat += "<tr class=\"d0\"><td>Preferred Role:</td><td>[candidate.role]</td></tr>"
dat += "<tr class=\"d1\"><td><a href='byond://?src=\ref[src];option=role;new=1;candidate=\ref[candidate]'>\[Edit\]</a></td><td>Do you like to partner with sneaky social ninjas? Like to help security hunt down thugs? Enjoy watching an engineer's back while he saves the station yet again? This doesn't have to be limited to just station jobs. Pretty much any general descriptor for what you'd like to be doing works here.</td></tr>" dat += "<tr class=\"d1\"><td><a href='byond://?src=[REF(src)];option=role;new=1;candidate=[REF(candidate)]'>\[Edit\]</a></td><td>Do you like to partner with sneaky social ninjas? Like to help security hunt down thugs? Enjoy watching an engineer's back while he saves the station yet again? This doesn't have to be limited to just station jobs. Pretty much any general descriptor for what you'd like to be doing works here.</td></tr>"
dat += "<tr class=\"d0\"><td>OOC Comments:</td><td>[candidate.comments]</td></tr>" dat += "<tr class=\"d0\"><td>OOC Comments:</td><td>[candidate.comments]</td></tr>"
dat += "<tr class=\"d1\"><td><a href='byond://?src=\ref[src];option=ooc;new=1;candidate=\ref[candidate]'>\[Edit\]</a></td><td>Anything you'd like to address specifically to the player reading this in an OOC manner. \"I prefer more serious RP.\", \"I'm still learning the interface!\", etc. Feel free to leave this blank if you want.</td></tr>" dat += "<tr class=\"d1\"><td><a href='byond://?src=[REF(src)];option=ooc;new=1;candidate=[REF(candidate)]'>\[Edit\]</a></td><td>Anything you'd like to address specifically to the player reading this in an OOC manner. \"I prefer more serious RP.\", \"I'm still learning the interface!\", etc. Feel free to leave this blank if you want.</td></tr>"
dat += "</table>" dat += "</table>"
dat += "<br>" dat += "<br>"
dat += "<h3><a href='byond://?src=\ref[src];option=submit;new=1;candidate=\ref[candidate]'>Submit Personality</a></h3><br>" dat += "<h3><a href='byond://?src=[REF(src)];option=submit;new=1;candidate=[REF(candidate)]'>Submit Personality</a></h3><br>"
dat += "<a href='byond://?src=\ref[src];option=save;new=1;candidate=\ref[candidate]'>Save Personality</a><br>" dat += "<a href='byond://?src=[REF(src)];option=save;new=1;candidate=[REF(candidate)]'>Save Personality</a><br>"
dat += "<a href='byond://?src=\ref[src];option=load;new=1;candidate=\ref[candidate]'>Load Personality</a><br>" dat += "<a href='byond://?src=[REF(src)];option=load;new=1;candidate=[REF(candidate)]'>Load Personality</a><br>"
M << browse(dat, "window=paiRecruit") M << browse(dat, "window=paiRecruit")
@@ -182,7 +182,7 @@ SUBSYSTEM_DEF(pai)
dat += "<tr class=\"d1\"><td>Description:</td><td>[c.description]</td></tr>" dat += "<tr class=\"d1\"><td>Description:</td><td>[c.description]</td></tr>"
dat += "<tr class=\"d0\"><td>Preferred Role:</td><td>[c.role]</td></tr>" dat += "<tr class=\"d0\"><td>Preferred Role:</td><td>[c.role]</td></tr>"
dat += "<tr class=\"d1\"><td>OOC Comments:</td><td>[c.comments]</td></tr>" dat += "<tr class=\"d1\"><td>OOC Comments:</td><td>[c.comments]</td></tr>"
dat += "<tr class=\"d2\"><td><a href='byond://?src=\ref[src];download=1;candidate=\ref[c];device=\ref[p]'>\[Download [c.name]\]</a></td><td></td></tr>" dat += "<tr class=\"d2\"><td><a href='byond://?src=[REF(src)];download=1;candidate=[REF(c)];device=[REF(p)]'>\[Download [c.name]\]</a></td><td></td></tr>"
dat += "</table>" dat += "</table>"

View File

@@ -10,11 +10,11 @@ PROCESSING_SUBSYSTEM_DEF(radiation)
/datum/controller/subsystem/processing/radiation/proc/warn(datum/component/radioactive) /datum/controller/subsystem/processing/radiation/proc/warn(datum/component/radioactive)
if(!radioactive || QDELETED(radioactive)) if(!radioactive || QDELETED(radioactive))
return return
if(warned_atoms["\ref[radioactive.parent]"]) if(warned_atoms["[REF(radioactive.parent)]"])
return return
var/atom/master = radioactive.parent var/atom/master = radioactive.parent
SSblackbox.add_details("contaminated", "[master.type]") SSblackbox.add_details("contaminated", "[master.type]")
next_warn["\ref[master]"] = "\ref[radioactive]" next_warn["[REF(master)]"] = "[REF(radioactive)]"
var/wait_time = max(0, 500-(world.time-last_warn))+20 // wait at least 20 ticks, longer if we just messaged var/wait_time = max(0, 500-(world.time-last_warn))+20 // wait at least 20 ticks, longer if we just messaged
addtimer(CALLBACK(src, .proc/send_warn), wait_time, TIMER_UNIQUE | TIMER_OVERRIDE) addtimer(CALLBACK(src, .proc/send_warn), wait_time, TIMER_UNIQUE | TIMER_OVERRIDE)

View File

@@ -615,7 +615,7 @@ SUBSYSTEM_DEF(ticker)
if(5) //every 5 ticks check if there is a slot available if(5) //every 5 ticks check if there is a slot available
if(living_player_count() < hpc) if(living_player_count() < hpc)
if(next_in_line && next_in_line.client) if(next_in_line && next_in_line.client)
to_chat(next_in_line, "<span class='userdanger'>A slot has opened! You have approximately 20 seconds to join. <a href='?src=\ref[next_in_line];late_join=override'>\>\>Join Game\<\<</a></span>") to_chat(next_in_line, "<span class='userdanger'>A slot has opened! You have approximately 20 seconds to join. <a href='?src=[REF(next_in_line)];late_join=override'>\>\>Join Game\<\<</a></span>")
SEND_SOUND(next_in_line, sound('sound/misc/notice1.ogg')) SEND_SOUND(next_in_line, sound('sound/misc/notice1.ogg'))
next_in_line.LateChoices() next_in_line.LateChoices()
return return

View File

@@ -243,7 +243,7 @@ SUBSYSTEM_DEF(timer)
while(SStimer.timer_id_dict["timerid" + num2text(id, 8)]) while(SStimer.timer_id_dict["timerid" + num2text(id, 8)])
SStimer.timer_id_dict["timerid" + num2text(id, 8)] = src SStimer.timer_id_dict["timerid" + num2text(id, 8)] = src
name = "Timer: " + num2text(id, 8) + ", TTR: [timeToRun], Flags: [jointext(bitfield2list(flags, list("TIMER_UNIQUE", "TIMER_OVERRIDE", "TIMER_CLIENT_TIME", "TIMER_STOPPABLE", "TIMER_NO_HASH_WAIT")), ", ")], callBack: \ref[callBack], callBack.object: [callBack.object]\ref[callBack.object]([getcallingtype()]), callBack.delegate:[callBack.delegate]([callBack.arguments ? callBack.arguments.Join(", ") : ""])" name = "Timer: " + num2text(id, 8) + ", TTR: [timeToRun], Flags: [jointext(bitfield2list(flags, list("TIMER_UNIQUE", "TIMER_OVERRIDE", "TIMER_CLIENT_TIME", "TIMER_STOPPABLE", "TIMER_NO_HASH_WAIT")), ", ")], callBack: [REF(callBack)], callBack.object: [callBack.object][REF(callBack.object)]([getcallingtype()]), callBack.delegate:[callBack.delegate]([callBack.arguments ? callBack.arguments.Join(", ") : ""])"
if (spent) if (spent)
CRASH("HOLY JESUS. WHAT IS THAT? WHAT THE FUCK IS THAT?") CRASH("HOLY JESUS. WHAT IS THAT? WHAT THE FUCK IS THAT?")
@@ -362,9 +362,9 @@ SUBSYSTEM_DEF(timer)
if (flags & TIMER_UNIQUE) if (flags & TIMER_UNIQUE)
var/list/hashlist var/list/hashlist
if(flags & TIMER_NO_HASH_WAIT) if(flags & TIMER_NO_HASH_WAIT)
hashlist = list(callback.object, "(\ref[callback.object])", callback.delegate, flags & TIMER_CLIENT_TIME) hashlist = list(callback.object, "([REF(callback.object)])", callback.delegate, flags & TIMER_CLIENT_TIME)
else else
hashlist = list(callback.object, "(\ref[callback.object])", callback.delegate, wait, flags & TIMER_CLIENT_TIME) hashlist = list(callback.object, "([REF(callback.object)])", callback.delegate, wait, flags & TIMER_CLIENT_TIME)
hashlist += callback.arguments hashlist += callback.arguments
hash = hashlist.Join("|||||||") hash = hashlist.Join("|||||||")

View File

@@ -199,7 +199,7 @@ SUBSYSTEM_DEF(vote)
text += "\n[question]" text += "\n[question]"
log_vote(text) log_vote(text)
var/vp = CONFIG_GET(number/vote_period) var/vp = CONFIG_GET(number/vote_period)
to_chat(world, "\n<font color='purple'><b>[text]</b>\nType <b>vote</b> or click <a href='?src=\ref[src]'>here</a> to place your votes.\nYou have [DisplayTimeText(vp)] to vote.</font>") to_chat(world, "\n<font color='purple'><b>[text]</b>\nType <b>vote</b> or click <a href='?src=[REF(src)]'>here</a> to place your votes.\nYou have [DisplayTimeText(vp)] to vote.</font>")
time_remaining = round(vp/10) time_remaining = round(vp/10)
for(var/c in GLOB.clients) for(var/c in GLOB.clients)
var/client/C = c var/client/C = c
@@ -232,36 +232,36 @@ SUBSYSTEM_DEF(vote)
var/votes = choices[choices[i]] var/votes = choices[choices[i]]
if(!votes) if(!votes)
votes = 0 votes = 0
. += "<li><a href='?src=\ref[src];vote=[i]'>[choices[i]]</a> ([votes] votes)</li>" . += "<li><a href='?src=[REF(src)];vote=[i]'>[choices[i]]</a> ([votes] votes)</li>"
. += "</ul><hr>" . += "</ul><hr>"
if(admin) if(admin)
. += "(<a href='?src=\ref[src];vote=cancel'>Cancel Vote</a>) " . += "(<a href='?src=[REF(src)];vote=cancel'>Cancel Vote</a>) "
else else
. += "<h2>Start a vote:</h2><hr><ul><li>" . += "<h2>Start a vote:</h2><hr><ul><li>"
//restart //restart
var/avr = CONFIG_GET(flag/allow_vote_restart) var/avr = CONFIG_GET(flag/allow_vote_restart)
if(trialmin || avr) if(trialmin || avr)
. += "<a href='?src=\ref[src];vote=restart'>Restart</a>" . += "<a href='?src=[REF(src)];vote=restart'>Restart</a>"
else else
. += "<font color='grey'>Restart (Disallowed)</font>" . += "<font color='grey'>Restart (Disallowed)</font>"
if(trialmin) if(trialmin)
. += "\t(<a href='?src=\ref[src];vote=toggle_restart'>[avr ? "Allowed" : "Disallowed"]</a>)" . += "\t(<a href='?src=[REF(src)];vote=toggle_restart'>[avr ? "Allowed" : "Disallowed"]</a>)"
. += "</li><li>" . += "</li><li>"
//gamemode //gamemode
var/avm = CONFIG_GET(flag/allow_vote_mode) var/avm = CONFIG_GET(flag/allow_vote_mode)
if(trialmin || avm) if(trialmin || avm)
. += "<a href='?src=\ref[src];vote=gamemode'>GameMode</a>" . += "<a href='?src=[REF(src)];vote=gamemode'>GameMode</a>"
else else
. += "<font color='grey'>GameMode (Disallowed)</font>" . += "<font color='grey'>GameMode (Disallowed)</font>"
if(trialmin) if(trialmin)
. += "\t(<a href='?src=\ref[src];vote=toggle_gamemode'>[avm ? "Allowed" : "Disallowed"]</a>)" . += "\t(<a href='?src=[REF(src)];vote=toggle_gamemode'>[avm ? "Allowed" : "Disallowed"]</a>)"
. += "</li>" . += "</li>"
//custom //custom
if(trialmin) if(trialmin)
. += "<li><a href='?src=\ref[src];vote=custom'>Custom</a></li>" . += "<li><a href='?src=[REF(src)];vote=custom'>Custom</a></li>"
. += "</ul><hr>" . += "</ul><hr>"
. += "<a href='?src=\ref[src];vote=close' style='position:absolute;right:50px'>Close</a>" . += "<a href='?src=[REF(src)];vote=close' style='position:absolute;right:50px'>Close</a>"
return . return .

View File

@@ -132,13 +132,13 @@
var/output = {"<center><b>[Message]</b></center><br /> var/output = {"<center><b>[Message]</b></center><br />
<div style="text-align:center"> <div style="text-align:center">
<a style="font-size:large;float:[( Button2 ? "left" : "right" )]" href="?src=\ref[src];button=1">[Button1]</a>"} <a style="font-size:large;float:[( Button2 ? "left" : "right" )]" href="?src=[REF(src)];button=1">[Button1]</a>"}
if (Button2) if (Button2)
output += {"<a style="font-size:large;[( Button3 ? "" : "float:right" )]" href="?src=\ref[src];button=2">[Button2]</a>"} output += {"<a style="font-size:large;[( Button3 ? "" : "float:right" )]" href="?src=[REF(src)];button=2">[Button2]</a>"}
if (Button3) if (Button3)
output += {"<a style="font-size:large;float:right" href="?src=\ref[src];button=3">[Button3]</a>"} output += {"<a style="font-size:large;float:right" href="?src=[REF(src)];button=3">[Button3]</a>"}
output += {"</div>"} output += {"</div>"}
@@ -253,7 +253,7 @@
return return
var/param = "null" var/param = "null"
if(ref) if(ref)
param = "\ref[ref]" param = "[REF(ref)]"
winset(user, windowid, "on-close=\".windowclose [param]\"") winset(user, windowid, "on-close=\".windowclose [param]\"")

View File

@@ -3,6 +3,7 @@
var/list/active_timers //for SStimer var/list/active_timers //for SStimer
var/list/datum_components //for /datum/components var/list/datum_components //for /datum/components
var/ui_screen = "home" //for tgui var/ui_screen = "home" //for tgui
var/use_tag = FALSE
#ifdef TESTING #ifdef TESTING
var/running_find_references var/running_find_references

View File

@@ -25,10 +25,10 @@
/datum/proc/vv_get_dropdown() /datum/proc/vv_get_dropdown()
. = list() . = list()
. += "---" . += "---"
.["Call Proc"] = "?_src_=vars;[HrefToken()];proc_call=\ref[src]" .["Call Proc"] = "?_src_=vars;[HrefToken()];proc_call=[REF(src)]"
.["Mark Object"] = "?_src_=vars;[HrefToken()];mark_object=\ref[src]" .["Mark Object"] = "?_src_=vars;[HrefToken()];mark_object=[REF(src)]"
.["Delete"] = "?_src_=vars;[HrefToken()];delete=\ref[src]" .["Delete"] = "?_src_=vars;[HrefToken()];delete=[REF(src)]"
.["Show VV To Player"] = "?_src_=vars;[HrefToken(TRUE)];expose=\ref[src]" .["Show VV To Player"] = "?_src_=vars;[HrefToken(TRUE)];expose=[REF(src)]"
/datum/proc/on_reagent_change() /datum/proc/on_reagent_change()
@@ -53,7 +53,7 @@
return return
var/title = "" var/title = ""
var/refid = "\ref[D]" var/refid = "[REF(D)]"
var/icon/sprite var/icon/sprite
var/hash var/hash
@@ -71,7 +71,7 @@
hash = md5(hash + AT.icon_state) hash = md5(hash + AT.icon_state)
src << browse_rsc(sprite, "vv[hash].png") src << browse_rsc(sprite, "vv[hash].png")
title = "[D] (\ref[D]) = [type]" title = "[D] ([REF(D)]) = [type]"
var/sprite_text var/sprite_text
if(sprite) if(sprite)
@@ -394,9 +394,9 @@
name = DA[name] //name is really the index until this line name = DA[name] //name is really the index until this line
else else
value = DA[name] value = DA[name]
header = "<li style='backgroundColor:white'>(<a href='?_src_=vars;[HrefToken()];listedit=\ref[DA];index=[index]'>E</a>) (<a href='?_src_=vars;[HrefToken()];listchange=\ref[DA];index=[index]'>C</a>) (<a href='?_src_=vars;[HrefToken()];listremove=\ref[DA];index=[index]'>-</a>) " header = "<li style='backgroundColor:white'>(<a href='?_src_=vars;[HrefToken()];listedit=[REF(DA)];index=[index]'>E</a>) (<a href='?_src_=vars;[HrefToken()];listchange=[REF(DA)];index=[index]'>C</a>) (<a href='?_src_=vars;[HrefToken()];listremove=[REF(DA)];index=[index]'>-</a>) "
else else
header = "<li style='backgroundColor:white'>(<a href='?_src_=vars;[HrefToken()];datumedit=\ref[DA];varnameedit=[name]'>E</a>) (<a href='?_src_=vars;[HrefToken()];datumchange=\ref[DA];varnamechange=[name]'>C</a>) (<a href='?_src_=vars;[HrefToken()];datummass=\ref[DA];varnamemass=[name]'>M</a>) " header = "<li style='backgroundColor:white'>(<a href='?_src_=vars;[HrefToken()];datumedit=[REF(DA)];varnameedit=[name]'>E</a>) (<a href='?_src_=vars;[HrefToken()];datumchange=[REF(DA)];varnamechange=[name]'>C</a>) (<a href='?_src_=vars;[HrefToken()];datummass=[REF(DA)];varnamemass=[name]'>M</a>) "
else else
header = "<li>" header = "<li>"
@@ -411,7 +411,7 @@
#ifdef VARSICON #ifdef VARSICON
var/icon/I = new/icon(value) var/icon/I = new/icon(value)
var/rnd = rand(1,10000) var/rnd = rand(1,10000)
var/rname = "tmp\ref[I][rnd].png" var/rname = "tmp[REF(I)][rnd].png"
usr << browse_rsc(I, rname) usr << browse_rsc(I, rname)
item = "[VV_HTML_ENCODE(name)] = (<span class='value'>[value]</span>) <img class=icon src=\"[rname]\">" item = "[VV_HTML_ENCODE(name)] = (<span class='value'>[value]</span>) <img class=icon src=\"[rname]\">"
#else #else
@@ -423,8 +423,8 @@
var/rnd = rand(1, 10000) var/rnd = rand(1, 10000)
var/image/I = value var/image/I = value
src << browse_rsc(I.icon, "tmp\ref[value][rnd].png") src << browse_rsc(I.icon, "tmp[REF(value)][rnd].png")
html += "[name] = <img src=\"tmp\ref[value][rnd].png\">" html += "[name] = <img src=\"tmp[REF(value)][rnd].png\">"
#else #else
html += "[name] = /image (<span class='value'>[value]</span>)" html += "[name] = /image (<span class='value'>[value]</span>)"
#endif #endif
@@ -434,14 +434,14 @@
//else if (istype(value, /client)) //else if (istype(value, /client))
// var/client/C = value // var/client/C = value
// item = "<a href='?_src_=vars;Vars=\ref[value]'>[VV_HTML_ENCODE(name)] \ref[value]</a> = [C] [C.type]" // item = "<a href='?_src_=vars;Vars=[REF(value)]'>[VV_HTML_ENCODE(name)] [REF(value)]</a> = [C] [C.type]"
else if (istype(value, /datum)) else if (istype(value, /datum))
var/datum/D = value var/datum/D = value
if ("[D]" != "[D.type]") //if the thing as a name var, lets use it. if ("[D]" != "[D.type]") //if the thing as a name var, lets use it.
item = "<a href='?_src_=vars;[HrefToken()];Vars=\ref[value]'>[VV_HTML_ENCODE(name)] \ref[value]</a> = [D] [D.type]" item = "<a href='?_src_=vars;[HrefToken()];Vars=[REF(value)]'>[VV_HTML_ENCODE(name)] [REF(value)]</a> = [D] [D.type]"
else else
item = "<a href='?_src_=vars;[HrefToken()];Vars=\ref[value]'>[VV_HTML_ENCODE(name)] \ref[value]</a> = [D.type]" item = "<a href='?_src_=vars;[HrefToken()];Vars=[REF(value)]'>[VV_HTML_ENCODE(name)] [REF(value)]</a> = [D.type]"
else if (islist(value)) else if (islist(value))
var/list/L = value var/list/L = value
@@ -459,9 +459,9 @@
items += debug_variable(key, val, level + 1, sanitize = sanitize) items += debug_variable(key, val, level + 1, sanitize = sanitize)
item = "<a href='?_src_=vars;[HrefToken()];Vars=\ref[value]'>[VV_HTML_ENCODE(name)] = /list ([L.len])</a><ul>[items.Join()]</ul>" item = "<a href='?_src_=vars;[HrefToken()];Vars=[REF(value)]'>[VV_HTML_ENCODE(name)] = /list ([L.len])</a><ul>[items.Join()]</ul>"
else else
item = "<a href='?_src_=vars;[HrefToken()];Vars=\ref[value]'>[VV_HTML_ENCODE(name)] = /list ([L.len])</a>" item = "<a href='?_src_=vars;[HrefToken()];Vars=[REF(value)]'>[VV_HTML_ENCODE(name)] = /list ([L.len])</a>"
else else
item = "[VV_HTML_ENCODE(name)] = <span class='value'>[VV_HTML_ENCODE(value)]</span>" item = "[VV_HTML_ENCODE(name)] = <span class='value'>[VV_HTML_ENCODE(value)]</span>"
@@ -561,7 +561,7 @@
var/prompt = alert("Do you want to grant [C] access to view this VV window? (they will not be able to edit or change anything nor open nested vv windows unless they themselves are an admin)", "Confirm", "Yes", "No") var/prompt = alert("Do you want to grant [C] access to view this VV window? (they will not be able to edit or change anything nor open nested vv windows unless they themselves are an admin)", "Confirm", "Yes", "No")
if (prompt != "Yes" || !usr.client) if (prompt != "Yes" || !usr.client)
return return
message_admins("[key_name_admin(usr)] Showed [key_name_admin(C)] a <a href='?_src_=vars;[HrefToken(TRUE)];datumrefresh=\ref[thing]'>VV window</a>") message_admins("[key_name_admin(usr)] Showed [key_name_admin(C)] a <a href='?_src_=vars;[HrefToken(TRUE)];datumrefresh=[REF(thing)]'>VV window</a>")
log_admin("Admin [key_name(usr)] Showed [key_name(C)] a VV window of a [thing]") log_admin("Admin [key_name(usr)] Showed [key_name(C)] a VV window of a [thing]")
to_chat(C, "[usr.client.holder.fakekey ? "an Administrator" : "[usr.client.key]"] has granted you access to view a View Variables window") to_chat(C, "[usr.client.holder.fakekey ? "an Administrator" : "[usr.client.key]"] has granted you access to view a View Variables window")
C.debug_variables(thing) C.debug_variables(thing)

View File

@@ -388,7 +388,7 @@
var/out = "<B>[name]</B>[(current&&(current.real_name!=name))?" (as [current.real_name])":""]<br>" var/out = "<B>[name]</B>[(current&&(current.real_name!=name))?" (as [current.real_name])":""]<br>"
out += "Mind currently owned by key: [key] [active?"(synced)":"(not synced)"]<br>" out += "Mind currently owned by key: [key] [active?"(synced)":"(not synced)"]<br>"
out += "Assigned role: [assigned_role]. <a href='?src=\ref[src];role_edit=1'>Edit</a><br>" out += "Assigned role: [assigned_role]. <a href='?src=[REF(src)];role_edit=1'>Edit</a><br>"
out += "Faction and special role: <b><font color='red'>[special_role]</font></b><br>" out += "Faction and special role: <b><font color='red'>[special_role]</font></b><br>"
var/list/sections = list( var/list/sections = list(
@@ -412,11 +412,11 @@
text = uppertext(text) text = uppertext(text)
text = "<i><b>[text]</b></i>: " text = "<i><b>[text]</b></i>: "
if (src in SSticker.mode.traitors) if (src in SSticker.mode.traitors)
text += "<b>TRAITOR</b> | <a href='?src=\ref[src];traitor=clear'>loyal</a>" text += "<b>TRAITOR</b> | <a href='?src=[REF(src)];traitor=clear'>loyal</a>"
if (objectives.len==0) if (objectives.len==0)
text += "<br>Objectives are empty! <a href='?src=\ref[src];traitor=autoobjectives'>Randomize</a>!" text += "<br>Objectives are empty! <a href='?src=[REF(src)];traitor=autoobjectives'>Randomize</a>!"
else else
text += "<a href='?src=\ref[src];traitor=traitor'>traitor</a> | <b>LOYAL</b>" text += "<a href='?src=[REF(src)];traitor=traitor'>traitor</a> | <b>LOYAL</b>"
if(current && current.client && (ROLE_TRAITOR in current.client.prefs.be_special)) if(current && current.client && (ROLE_TRAITOR in current.client.prefs.be_special))
text += " | Enabled in Prefs" text += " | Enabled in Prefs"
@@ -434,7 +434,7 @@
text = uppertext(text) text = uppertext(text)
text = "<i><b>[text]</b></i>: " text = "<i><b>[text]</b></i>: "
if(src in SSticker.mode.brothers) if(src in SSticker.mode.brothers)
text += "<b>Brother</b> | <a href='?src=\ref[src];brother=clear'>no</a>" text += "<b>Brother</b> | <a href='?src=[REF(src)];brother=clear'>no</a>"
if(current && current.client && (ROLE_BROTHER in current.client.prefs.be_special)) if(current && current.client && (ROLE_BROTHER in current.client.prefs.be_special))
text += " | Enabled in Prefs" text += " | Enabled in Prefs"
@@ -449,19 +449,19 @@
text = uppertext(text) text = uppertext(text)
text = "<i><b>[text]</b></i>: " text = "<i><b>[text]</b></i>: "
if ((src in SSticker.mode.changelings) && special_role) if ((src in SSticker.mode.changelings) && special_role)
text += "<b>YES</b> | <a href='?src=\ref[src];changeling=clear'>no</a>" text += "<b>YES</b> | <a href='?src=[REF(src)];changeling=clear'>no</a>"
if (objectives.len==0) if (objectives.len==0)
text += "<br>Objectives are empty! <a href='?src=\ref[src];changeling=autoobjectives'>Randomize!</a>" text += "<br>Objectives are empty! <a href='?src=[REF(src)];changeling=autoobjectives'>Randomize!</a>"
if(changeling && changeling.stored_profiles.len && (current.real_name != changeling.first_prof.name) ) if(changeling && changeling.stored_profiles.len && (current.real_name != changeling.first_prof.name) )
text += "<br><a href='?src=\ref[src];changeling=initialdna'>Transform to initial appearance.</a>" text += "<br><a href='?src=[REF(src)];changeling=initialdna'>Transform to initial appearance.</a>"
else if(src in SSticker.mode.changelings) //Station Aligned Changeling else if(src in SSticker.mode.changelings) //Station Aligned Changeling
text += "<b>YES (but not an antag)</b> | <a href='?src=\ref[src];changeling=clear'>no</a>" text += "<b>YES (but not an antag)</b> | <a href='?src=[REF(src)];changeling=clear'>no</a>"
if (objectives.len==0) if (objectives.len==0)
text += "<br>Objectives are empty! <a href='?src=\ref[src];changeling=autoobjectives'>Randomize!</a>" text += "<br>Objectives are empty! <a href='?src=[REF(src)];changeling=autoobjectives'>Randomize!</a>"
if(changeling && changeling.stored_profiles.len && (current.real_name != changeling.first_prof.name) ) if(changeling && changeling.stored_profiles.len && (current.real_name != changeling.first_prof.name) )
text += "<br><a href='?src=\ref[src];changeling=initialdna'>Transform to initial appearance.</a>" text += "<br><a href='?src=[REF(src)];changeling=initialdna'>Transform to initial appearance.</a>"
else else
text += "<a href='?src=\ref[src];changeling=changeling'>yes</a> | <b>NO</b>" text += "<a href='?src=[REF(src)];changeling=changeling'>yes</a> | <b>NO</b>"
if(current && current.client && (ROLE_CHANGELING in current.client.prefs.be_special)) if(current && current.client && (ROLE_CHANGELING in current.client.prefs.be_special))
text += " | Enabled in Prefs" text += " | Enabled in Prefs"
@@ -477,7 +477,7 @@
text = uppertext(text) text = uppertext(text)
text = "<i><b>[text]</b></i>: " text = "<i><b>[text]</b></i>: "
if (ishuman(current)) if (ishuman(current))
text += "<a href='?src=\ref[src];monkey=healthy'>healthy</a> | <a href='?src=\ref[src];monkey=infected'>infected</a> | <b>HUMAN</b> | other" text += "<a href='?src=[REF(src)];monkey=healthy'>healthy</a> | <a href='?src=[REF(src)];monkey=infected'>infected</a> | <b>HUMAN</b> | other"
else if(ismonkey(current)) else if(ismonkey(current))
var/found = FALSE var/found = FALSE
for(var/datum/disease/transformation/jungle_fever/JF in current.viruses) for(var/datum/disease/transformation/jungle_fever/JF in current.viruses)
@@ -485,9 +485,9 @@
break break
if(found) if(found)
text += "<a href='?src=\ref[src];monkey=healthy'>healthy</a> | <b>INFECTED</b> | <a href='?src=\ref[src];monkey=human'>human</a> | other" text += "<a href='?src=[REF(src)];monkey=healthy'>healthy</a> | <b>INFECTED</b> | <a href='?src=[REF(src)];monkey=human'>human</a> | other"
else else
text += "<b>HEALTHY</b> | <a href='?src=\ref[src];monkey=infected'>infected</a> | <a href='?src=\ref[src];monkey=human'>human</a> | other" text += "<b>HEALTHY</b> | <a href='?src=[REF(src)];monkey=infected'>infected</a> | <a href='?src=[REF(src)];monkey=human'>human</a> | other"
else else
text += "healthy | infected | human | <b>OTHER</b>" text += "healthy | infected | human | <b>OTHER</b>"
@@ -507,17 +507,17 @@
text = uppertext(text) text = uppertext(text)
text = "<i><b>[text]</b></i>: " text = "<i><b>[text]</b></i>: "
if (src in SSticker.mode.syndicates) if (src in SSticker.mode.syndicates)
text += "<b>OPERATIVE</b> | <a href='?src=\ref[src];nuclear=clear'>nanotrasen</a>" text += "<b>OPERATIVE</b> | <a href='?src=[REF(src)];nuclear=clear'>nanotrasen</a>"
text += "<br><a href='?src=\ref[src];nuclear=lair'>To shuttle</a>, <a href='?src=\ref[src];common=undress'>undress</a>, <a href='?src=\ref[src];nuclear=dressup'>dress up</a>." text += "<br><a href='?src=[REF(src)];nuclear=lair'>To shuttle</a>, <a href='?src=[REF(src)];common=undress'>undress</a>, <a href='?src=[REF(src)];nuclear=dressup'>dress up</a>."
var/code var/code
for (var/obj/machinery/nuclearbomb/bombue in GLOB.machines) for (var/obj/machinery/nuclearbomb/bombue in GLOB.machines)
if (length(bombue.r_code) <= 5 && bombue.r_code != "LOLNO" && bombue.r_code != "ADMIN") if (length(bombue.r_code) <= 5 && bombue.r_code != "LOLNO" && bombue.r_code != "ADMIN")
code = bombue.r_code code = bombue.r_code
break break
if (code) if (code)
text += " Code is [code]. <a href='?src=\ref[src];nuclear=tellcode'>tell the code.</a>" text += " Code is [code]. <a href='?src=[REF(src)];nuclear=tellcode'>tell the code.</a>"
else else
text += "<a href='?src=\ref[src];nuclear=nuclear'>operative</a> | <b>NANOTRASEN</b>" text += "<a href='?src=[REF(src)];nuclear=nuclear'>operative</a> | <b>NANOTRASEN</b>"
if(current && current.client && (ROLE_OPERATIVE in current.client.prefs.be_special)) if(current && current.client && (ROLE_OPERATIVE in current.client.prefs.be_special))
text += " | Enabled in Prefs" text += " | Enabled in Prefs"
@@ -533,10 +533,10 @@
text = uppertext(text) text = uppertext(text)
text = "<i><b>[text]</b></i>: " text = "<i><b>[text]</b></i>: "
if (has_antag_datum(/datum/antagonist/wizard)) if (has_antag_datum(/datum/antagonist/wizard))
text += "<b>YES</b> | <a href='?src=\ref[src];wizard=clear'>no</a>" text += "<b>YES</b> | <a href='?src=[REF(src)];wizard=clear'>no</a>"
text += "<br><a href='?src=\ref[src];wizard=lair'>To lair</a>, <a href='?src=\ref[src];common=undress'>undress</a>" text += "<br><a href='?src=[REF(src)];wizard=lair'>To lair</a>, <a href='?src=[REF(src)];common=undress'>undress</a>"
else else
text += "<a href='?src=\ref[src];wizard=wizard'>yes</a> | <b>NO</b>" text += "<a href='?src=[REF(src)];wizard=wizard'>yes</a> | <b>NO</b>"
if(current && current.client && (ROLE_WIZARD in current.client.prefs.be_special)) if(current && current.client && (ROLE_WIZARD in current.client.prefs.be_special))
text += " | Enabled in Prefs" text += " | Enabled in Prefs"
@@ -563,28 +563,28 @@
if(M && (M.z in GLOB.station_z_levels) && !M.stat) if(M && (M.z in GLOB.station_z_levels) && !M.stat)
last_healthy_headrev = FALSE last_healthy_headrev = FALSE
break break
text += "head | not mindshielded | <a href='?src=\ref[src];revolution=clear'>employee</a> | <b>[last_healthy_headrev ? "<font color='red'>LAST </font> " : ""]HEADREV</b> | <a href='?src=\ref[src];revolution=rev'>rev</a>" text += "head | not mindshielded | <a href='?src=[REF(src)];revolution=clear'>employee</a> | <b>[last_healthy_headrev ? "<font color='red'>LAST </font> " : ""]HEADREV</b> | <a href='?src=[REF(src)];revolution=rev'>rev</a>"
text += "<br>Flash: <a href='?src=\ref[src];revolution=flash'>give</a>" text += "<br>Flash: <a href='?src=[REF(src)];revolution=flash'>give</a>"
var/list/L = current.get_contents() var/list/L = current.get_contents()
var/obj/item/device/assembly/flash/flash = locate() in L var/obj/item/device/assembly/flash/flash = locate() in L
if (flash) if (flash)
if(!flash.crit_fail) if(!flash.crit_fail)
text += " | <a href='?src=\ref[src];revolution=takeflash'>take</a>." text += " | <a href='?src=[REF(src)];revolution=takeflash'>take</a>."
else else
text += " | <a href='?src=\ref[src];revolution=takeflash'>take</a> | <a href='?src=\ref[src];revolution=repairflash'>repair</a>." text += " | <a href='?src=[REF(src)];revolution=takeflash'>take</a> | <a href='?src=[REF(src)];revolution=repairflash'>repair</a>."
else else
text += "." text += "."
text += " <a href='?src=\ref[src];revolution=reequip'>Reequip</a> (gives traitor uplink)." text += " <a href='?src=[REF(src)];revolution=reequip'>Reequip</a> (gives traitor uplink)."
if (objectives.len==0) if (objectives.len==0)
text += "<br>Objectives are empty! <a href='?src=\ref[src];revolution=autoobjectives'>Set to kill all heads</a>." text += "<br>Objectives are empty! <a href='?src=[REF(src)];revolution=autoobjectives'>Set to kill all heads</a>."
else if(current.isloyal()) else if(current.isloyal())
text += "head | <b>MINDSHIELDED</b> | employee | <a href='?src=\ref[src];revolution=headrev'>headrev</a> | rev" text += "head | <b>MINDSHIELDED</b> | employee | <a href='?src=[REF(src)];revolution=headrev'>headrev</a> | rev"
else if (has_antag_datum(/datum/antagonist/rev)) else if (has_antag_datum(/datum/antagonist/rev))
text += "head | not mindshielded | <a href='?src=\ref[src];revolution=clear'>employee</a> | <a href='?src=\ref[src];revolution=headrev'>headrev</a> | <b>REV</b>" text += "head | not mindshielded | <a href='?src=[REF(src)];revolution=clear'>employee</a> | <a href='?src=[REF(src)];revolution=headrev'>headrev</a> | <b>REV</b>"
else else
text += "head | not mindshielded | <b>EMPLOYEE</b> | <a href='?src=\ref[src];revolution=headrev'>headrev</a> | <a href='?src=\ref[src];revolution=rev'>rev</a>" text += "head | not mindshielded | <b>EMPLOYEE</b> | <a href='?src=[REF(src)];revolution=headrev'>headrev</a> | <a href='?src=[REF(src)];revolution=rev'>rev</a>"
if(current && current.client && (ROLE_REV in current.client.prefs.be_special)) if(current && current.client && (ROLE_REV in current.client.prefs.be_special))
text += " | Enabled in Prefs" text += " | Enabled in Prefs"
@@ -599,8 +599,8 @@
text = uppertext(text) text = uppertext(text)
text = "<i><b>[text]</b></i>: " text = "<i><b>[text]</b></i>: "
if(src in SSticker.mode.abductors) if(src in SSticker.mode.abductors)
text += "<b>Abductor</b> | <a href='?src=\ref[src];abductor=clear'>human</a>" text += "<b>Abductor</b> | <a href='?src=[REF(src)];abductor=clear'>human</a>"
text += " | <a href='?src=\ref[src];common=undress'>undress</a> | <a href='?src=\ref[src];abductor=equip'>equip</a>" text += " | <a href='?src=[REF(src)];common=undress'>undress</a> | <a href='?src=[REF(src)];abductor=equip'>equip</a>"
if(current && current.client && (ROLE_ABDUCTOR in current.client.prefs.be_special)) if(current && current.client && (ROLE_ABDUCTOR in current.client.prefs.be_special))
text += " | Enabled in Prefs" text += " | Enabled in Prefs"
@@ -618,13 +618,13 @@
var/datum/antagonist/devil/devilinfo = has_antag_datum(ANTAG_DATUM_DEVIL) var/datum/antagonist/devil/devilinfo = has_antag_datum(ANTAG_DATUM_DEVIL)
if(devilinfo) if(devilinfo)
if(!devilinfo.ascendable) if(!devilinfo.ascendable)
text += "<b>DEVIL</b> | <a href='?src=\ref[src];devil=ascendable_devil'>ascendable devil</a> | sintouched | <a href='?src=\ref[src];devil=clear'>human</a>" text += "<b>DEVIL</b> | <a href='?src=[REF(src)];devil=ascendable_devil'>ascendable devil</a> | sintouched | <a href='?src=[REF(src)];devil=clear'>human</a>"
else else
text += "<a href='?src=\ref[src];devil=devil'>DEVIL</a> | <b>ASCENDABLE DEVIL</b> | sintouched | <a href='?src=\ref[src];devil=clear'>human</a>" text += "<a href='?src=[REF(src)];devil=devil'>DEVIL</a> | <b>ASCENDABLE DEVIL</b> | sintouched | <a href='?src=[REF(src)];devil=clear'>human</a>"
else if(src in SSticker.mode.sintouched) else if(src in SSticker.mode.sintouched)
text += "devil | ascendable devil | <b>SINTOUCHED</b> | <a href='?src=\ref[src];devil=clear'>human</a>" text += "devil | ascendable devil | <b>SINTOUCHED</b> | <a href='?src=[REF(src)];devil=clear'>human</a>"
else else
text += "<a href='?src=\ref[src];devil=devil'>devil</a> | <a href='?src=\ref[src];devil=ascendable_devil'>ascendable devil</a> | <a href='?src=\ref[src];devil=sintouched'>sintouched</a> | <b>HUMAN</b>" text += "<a href='?src=[REF(src)];devil=devil'>devil</a> | <a href='?src=[REF(src)];devil=ascendable_devil'>ascendable devil</a> | <a href='?src=[REF(src)];devil=sintouched'>sintouched</a> | <b>HUMAN</b>"
if(current && current.client && (ROLE_DEVIL in current.client.prefs.be_special)) if(current && current.client && (ROLE_DEVIL in current.client.prefs.be_special))
text += " | Enabled in Prefs" text += " | Enabled in Prefs"
@@ -641,11 +641,11 @@
var/datum/antagonist/ninja/ninjainfo = has_antag_datum(ANTAG_DATUM_NINJA) var/datum/antagonist/ninja/ninjainfo = has_antag_datum(ANTAG_DATUM_NINJA)
if(ninjainfo) if(ninjainfo)
if(ninjainfo.helping_station) if(ninjainfo.helping_station)
text += "<a href='?src=\ref[src];ninja=clear'>employee</a> | syndicate | <b>NANOTRASEN</b> | <b><a href='?src=\ref[src];ninja=equip'>EQUIP</a></b>" text += "<a href='?src=[REF(src)];ninja=clear'>employee</a> | syndicate | <b>NANOTRASEN</b> | <b><a href='?src=[REF(src)];ninja=equip'>EQUIP</a></b>"
else else
text += "<a href='?src=\ref[src];ninja=clear'>employee</a> | <b>SYNDICATE</b> | nanotrasen | <b><a href='?src=\ref[src];ninja=equip'>EQUIP</a></b>" text += "<a href='?src=[REF(src)];ninja=clear'>employee</a> | <b>SYNDICATE</b> | nanotrasen | <b><a href='?src=[REF(src)];ninja=equip'>EQUIP</a></b>"
else else
text += "<b>EMPLOYEE</b> | <a href='?src=\ref[src];ninja=syndicate'>syndicate</a> | <a href='?src=\ref[src];ninja=nanotrasen'>nanotrasen</a> | <a href='?src=\ref[src];ninja=random'>random allegiance</a>" text += "<b>EMPLOYEE</b> | <a href='?src=[REF(src)];ninja=syndicate'>syndicate</a> | <a href='?src=[REF(src)];ninja=nanotrasen'>nanotrasen</a> | <a href='?src=[REF(src)];ninja=random'>random allegiance</a>"
if(current && current.client && (ROLE_NINJA in current.client.prefs.be_special)) if(current && current.client && (ROLE_NINJA in current.client.prefs.be_special))
text += " | Enabled in Prefs" text += " | Enabled in Prefs"
else else
@@ -660,10 +660,10 @@
text = uppertext(text) text = uppertext(text)
text = "<i><b>[text]</b></i>: " text = "<i><b>[text]</b></i>: "
if(iscultist(current)) if(iscultist(current))
text += "not mindshielded | <a href='?src=\ref[src];cult=clear'>employee</a> | <b>CULTIST</b>" text += "not mindshielded | <a href='?src=[REF(src)];cult=clear'>employee</a> | <b>CULTIST</b>"
text += "<br>Give <a href='?src=\ref[src];cult=tome'>tome</a> | <a href='?src=\ref[src];cult=amulet'>amulet</a>." text += "<br>Give <a href='?src=[REF(src)];cult=tome'>tome</a> | <a href='?src=[REF(src)];cult=amulet'>amulet</a>."
else if(is_convertable_to_cult(current)) else if(is_convertable_to_cult(current))
text += "not mindshielded | <b>EMPLOYEE</b> | <a href='?src=\ref[src];cult=cultist'>cultist</a>" text += "not mindshielded | <b>EMPLOYEE</b> | <a href='?src=[REF(src)];cult=cultist'>cultist</a>"
else else
text += "[!current.isloyal() ? "not mindshielded" : "<b>MINDSHIELDED</b>"] | <b>EMPLOYEE</b> | <i>cannot serve Nar-Sie</i>" text += "[!current.isloyal() ? "not mindshielded" : "<b>MINDSHIELDED</b>"] | <b>EMPLOYEE</b> | <i>cannot serve Nar-Sie</i>"
@@ -682,10 +682,10 @@
text = uppertext(text) text = uppertext(text)
text = "<i><b>[text]</b></i>: " text = "<i><b>[text]</b></i>: "
if(is_servant_of_ratvar(current)) if(is_servant_of_ratvar(current))
text += "not mindshielded | <a href='?src=\ref[src];clockcult=clear'>employee</a> | <b>SERVANT</b>" text += "not mindshielded | <a href='?src=[REF(src)];clockcult=clear'>employee</a> | <b>SERVANT</b>"
text += "<br><a href='?src=\ref[src];clockcult=slab'>Equip</a>" text += "<br><a href='?src=[REF(src)];clockcult=slab'>Equip</a>"
else if(is_eligible_servant(current)) else if(is_eligible_servant(current))
text += "not mindshielded | <b>EMPLOYEE</b> | <a href='?src=\ref[src];clockcult=servant'>servant</a>" text += "not mindshielded | <b>EMPLOYEE</b> | <a href='?src=[REF(src)];clockcult=servant'>servant</a>"
else else
text += "[!current.isloyal() ? "not mindshielded" : "<b>MINDSHIELDED</b>"] | <b>EMPLOYEE</b> | <i>cannot serve Ratvar</i>" text += "[!current.isloyal() ? "not mindshielded" : "<b>MINDSHIELDED</b>"] | <b>EMPLOYEE</b> | <i>cannot serve Ratvar</i>"
@@ -702,14 +702,14 @@
text = "silicon" text = "silicon"
var/mob/living/silicon/robot/robot = current var/mob/living/silicon/robot/robot = current
if (istype(robot) && robot.emagged) if (istype(robot) && robot.emagged)
text += "<br>Cyborg: Is emagged! <a href='?src=\ref[src];silicon=unemag'>Unemag!</a><br>0th law: [robot.laws.zeroth]" text += "<br>Cyborg: Is emagged! <a href='?src=[REF(src)];silicon=unemag'>Unemag!</a><br>0th law: [robot.laws.zeroth]"
var/mob/living/silicon/ai/ai = current var/mob/living/silicon/ai/ai = current
if (istype(ai) && ai.connected_robots.len) if (istype(ai) && ai.connected_robots.len)
var/n_e_robots = 0 var/n_e_robots = 0
for (var/mob/living/silicon/robot/R in ai.connected_robots) for (var/mob/living/silicon/robot/R in ai.connected_robots)
if (R.emagged) if (R.emagged)
n_e_robots++ n_e_robots++
text += "<br>[n_e_robots] of [ai.connected_robots.len] slaved cyborgs are emagged. <a href='?src=\ref[src];silicon=unemagcyborgs'>Unemag</a>" text += "<br>[n_e_robots] of [ai.connected_robots.len] slaved cyborgs are emagged. <a href='?src=[REF(src)];silicon=unemagcyborgs'>Unemag</a>"
if (SSticker.mode.config_tag == "traitorchan") if (SSticker.mode.config_tag == "traitorchan")
if (sections["traitor"]) if (sections["traitor"])
out += sections["traitor"]+"<br>" out += sections["traitor"]+"<br>"
@@ -727,12 +727,12 @@
if(((src in SSticker.mode.traitors) || (src in SSticker.mode.syndicates)) && ishuman(current)) if(((src in SSticker.mode.traitors) || (src in SSticker.mode.syndicates)) && ishuman(current))
text = "Uplink: <a href='?src=\ref[src];common=uplink'>give</a>" text = "Uplink: <a href='?src=[REF(src)];common=uplink'>give</a>"
var/obj/item/device/uplink/U = find_syndicate_uplink() var/obj/item/device/uplink/U = find_syndicate_uplink()
if(U) if(U)
text += " | <a href='?src=\ref[src];common=takeuplink'>take</a>" text += " | <a href='?src=[REF(src)];common=takeuplink'>take</a>"
if (check_rights(R_FUN, 0)) if (check_rights(R_FUN, 0))
text += ", <a href='?src=\ref[src];common=crystals'>[U.telecrystals]</a> TC" text += ", <a href='?src=[REF(src)];common=crystals'>[U.telecrystals]</a> TC"
else else
text += ", [U.telecrystals] TC" text += ", [U.telecrystals] TC"
text += "." //hiel grammar text += "." //hiel grammar
@@ -742,18 +742,18 @@
out += "<b>Memory:</b><br>" out += "<b>Memory:</b><br>"
out += memory out += memory
out += "<br><a href='?src=\ref[src];memory_edit=1'>Edit memory</a><br>" out += "<br><a href='?src=[REF(src)];memory_edit=1'>Edit memory</a><br>"
out += "Objectives:<br>" out += "Objectives:<br>"
if (objectives.len == 0) if (objectives.len == 0)
out += "EMPTY<br>" out += "EMPTY<br>"
else else
var/obj_count = 1 var/obj_count = 1
for(var/datum/objective/objective in objectives) for(var/datum/objective/objective in objectives)
out += "<B>[obj_count]</B>: [objective.explanation_text] <a href='?src=\ref[src];obj_edit=\ref[objective]'>Edit</a> <a href='?src=\ref[src];obj_delete=\ref[objective]'>Delete</a> <a href='?src=\ref[src];obj_completed=\ref[objective]'><font color=[objective.completed ? "green" : "red"]>Toggle Completion</font></a><br>" out += "<B>[obj_count]</B>: [objective.explanation_text] <a href='?src=[REF(src)];obj_edit=[REF(objective)]'>Edit</a> <a href='?src=[REF(src)];obj_delete=[REF(objective)]'>Delete</a> <a href='?src=[REF(src)];obj_completed=[REF(objective)]'><font color=[objective.completed ? "green" : "red"]>Toggle Completion</font></a><br>"
obj_count++ obj_count++
out += "<a href='?src=\ref[src];obj_add=1'>Add objective</a><br><br>" out += "<a href='?src=[REF(src)];obj_add=1'>Add objective</a><br><br>"
out += "<a href='?src=\ref[src];obj_announce=1'>Announce objectives</a><br><br>" out += "<a href='?src=[REF(src)];obj_announce=1'>Announce objectives</a><br><br>"
var/datum/browser/popup = new(usr, "edit_memory", "", 600, 600) var/datum/browser/popup = new(usr, "edit_memory", "", 600, 600)
popup.set_content(out) popup.set_content(out)

View File

@@ -21,7 +21,7 @@
this["desc"] = "" this["desc"] = ""
this["refs"] = list() this["refs"] = list()
for(var/spawner_obj in GLOB.mob_spawners[spawner]) for(var/spawner_obj in GLOB.mob_spawners[spawner])
this["refs"] += "\ref[spawner_obj]" this["refs"] += "[REF(spawner_obj)]"
if(!this["desc"]) if(!this["desc"])
if(istype(spawner_obj, /obj/effect/mob_spawn)) if(istype(spawner_obj, /obj/effect/mob_spawn))
var/obj/effect/mob_spawn/MS = spawner_obj var/obj/effect/mob_spawn/MS = spawner_obj

View File

@@ -335,7 +335,7 @@
GLOBAL_LIST_EMPTY(blood_splatter_icons) GLOBAL_LIST_EMPTY(blood_splatter_icons)
/atom/proc/blood_splatter_index() /atom/proc/blood_splatter_index()
return "\ref[initial(icon)]-[initial(icon_state)]" return "[REF(initial(icon))]-[initial(icon_state)]"
//returns the mob's dna info as a list, to be inserted in an object's blood_DNA list //returns the mob's dna info as a list, to be inserted in an object's blood_DNA list
/mob/living/proc/get_blood_dna_list() /mob/living/proc/get_blood_dna_list()
@@ -631,9 +631,9 @@ GLOBAL_LIST_EMPTY(blood_splatter_icons)
var/turf/curturf = get_turf(src) var/turf/curturf = get_turf(src)
if (curturf) if (curturf)
.["Jump to"] = "?_src_=holder;[HrefToken()];adminplayerobservecoodjump=1;X=[curturf.x];Y=[curturf.y];Z=[curturf.z]" .["Jump to"] = "?_src_=holder;[HrefToken()];adminplayerobservecoodjump=1;X=[curturf.x];Y=[curturf.y];Z=[curturf.z]"
.["Add reagent"] = "?_src_=vars;[HrefToken()];addreagent=\ref[src]" .["Add reagent"] = "?_src_=vars;[HrefToken()];addreagent=[REF(src)]"
.["Trigger EM pulse"] = "?_src_=vars;[HrefToken()];emp=\ref[src]" .["Trigger EM pulse"] = "?_src_=vars;[HrefToken()];emp=[REF(src)]"
.["Trigger explosion"] = "?_src_=vars;[HrefToken()];explode=\ref[src]" .["Trigger explosion"] = "?_src_=vars;[HrefToken()];explode=[REF(src)]"
/atom/proc/drop_location() /atom/proc/drop_location()
var/atom/L = loc var/atom/L = loc

View File

@@ -523,7 +523,7 @@
/atom/movable/vv_get_dropdown() /atom/movable/vv_get_dropdown()
. = ..() . = ..()
. -= "Jump to" . -= "Jump to"
.["Follow"] = "?_src_=holder;[HrefToken()];adminplayerobservefollow=\ref[src]" .["Follow"] = "?_src_=holder;[HrefToken()];adminplayerobservefollow=[REF(src)]"
/atom/movable/proc/ex_check(ex_id) /atom/movable/proc/ex_check(ex_id)
if(!ex_id) if(!ex_id)

View File

@@ -147,6 +147,7 @@ GLOBAL_LIST_INIT(reverseradiochannels, list(
"1357" = "Engineering", "1357" = "Engineering",
"1359" = "Security", "1359" = "Security",
"1337" = "CentCom", "1337" = "CentCom",
<<<<<<< HEAD
"1213" = "Syndicate", "1213" = "Syndicate",
"1347" = "Supply", "1347" = "Supply",
"1349" = "Service", "1349" = "Service",
@@ -292,6 +293,153 @@ GLOBAL_VAR_INIT(RADIO_MAGNETS, "9")
/datum/signal/proc/debug_print() /datum/signal/proc/debug_print()
if (source) if (source)
=======
"1213" = "Syndicate",
"1347" = "Supply",
"1349" = "Service",
"1447" = "AI Private",
"1215" = "Red Team",
"1217" = "Blue Team"
))
//depenging helpers
GLOBAL_VAR_CONST(SYND_FREQ, 1213) //nuke op frequency, coloured dark brown in chat window
GLOBAL_VAR_CONST(SUPP_FREQ, 1347) //supply, coloured light brown in chat window
GLOBAL_VAR_CONST(SERV_FREQ, 1349) //service, coloured green in chat window
GLOBAL_VAR_CONST(SCI_FREQ, 1351) //science, coloured plum in chat window
GLOBAL_VAR_CONST(COMM_FREQ, 1353) //command, colored gold in chat window
GLOBAL_VAR_CONST(MED_FREQ, 1355) //medical, coloured blue in chat window
GLOBAL_VAR_CONST(ENG_FREQ, 1357) //engineering, coloured orange in chat window
GLOBAL_VAR_CONST(SEC_FREQ, 1359) //security, coloured red in chat window
GLOBAL_VAR_CONST(CENTCOM_FREQ, 1337) //centcom frequency, coloured grey in chat window
GLOBAL_VAR_CONST(AIPRIV_FREQ, 1447) //AI private, colored magenta in chat window
GLOBAL_VAR_CONST(REDTEAM_FREQ, 1215) // red team (CTF) frequency, coloured red
GLOBAL_VAR_CONST(BLUETEAM_FREQ, 1217) // blue team (CTF) frequency, coloured blue
#define TRANSMISSION_WIRE 0
#define TRANSMISSION_RADIO 1
/* filters */
GLOBAL_VAR_INIT(RADIO_TO_AIRALARM, "1")
GLOBAL_VAR_INIT(RADIO_FROM_AIRALARM, "2")
GLOBAL_VAR_INIT(RADIO_CHAT, "3") //deprecated
GLOBAL_VAR_INIT(RADIO_ATMOSIA, "4")
GLOBAL_VAR_INIT(RADIO_NAVBEACONS, "5")
GLOBAL_VAR_INIT(RADIO_AIRLOCK, "6")
GLOBAL_VAR_INIT(RADIO_MAGNETS, "9")
/datum/radio_frequency
var/frequency as num
var/list/list/obj/devices = list()
//If range > 0, only post to devices on the same z_level and within range
//Use range = -1, to restrain to the same z_level without limiting range
/datum/radio_frequency/proc/post_signal(obj/source as obj|null, datum/signal/signal, filter = null as text|null, range = null as num|null)
//Apply filter to the signal. If none supply, broadcast to every devices
//_default channel is always checked
var/list/filter_list
if(filter)
filter_list = list(filter,"_default")
else
filter_list = devices
//If checking range, find the source turf
var/turf/start_point
if(range)
start_point = get_turf(source)
if(!start_point)
return 0
//Send the data
for(var/current_filter in filter_list)
for(var/obj/device in devices[current_filter])
if(device == source)
continue
if(range)
var/turf/end_point = get_turf(device)
if(!end_point)
continue
if(start_point.z != end_point.z || (range > 0 && get_dist(start_point, end_point) > range))
continue
device.receive_signal(signal, TRANSMISSION_RADIO, frequency)
/datum/radio_frequency/proc/add_listener(obj/device, filter as text|null)
if (!filter)
filter = "_default"
var/list/devices_line = devices[filter]
if(!devices_line)
devices_line = list()
devices[filter] = devices_line
devices_line += device
/datum/radio_frequency/proc/remove_listener(obj/device)
for(var/devices_filter in devices)
var/list/devices_line = devices[devices_filter]
if(!devices_line)
devices -= devices_filter
devices_line -= device
if(!devices_line.len)
devices -= devices_filter
/client/proc/print_pointers()
set name = "Debug Signals"
set category = "Debug"
if(!holder)
return
var/datum/signal/S
to_chat(src, "There are [S.pointers.len] pointers:")
for(var/p in S.pointers)
to_chat(src, p)
S = locate(p)
if(istype(S))
to_chat(src, S.debug_print())
/obj/proc/receive_signal(datum/signal/signal, receive_method, receive_param)
return
/datum/signal
var/obj/source
var/transmission_method = 0
//0 = wire
//1 = radio transmission
//2 = subspace transmission
var/data = list()
var/encryption
var/frequency = 0
var/static/list/pointers = list()
/datum/signal/New()
..()
pointers += "[REF(src)]"
/datum/signal/Destroy()
pointers -= "[REF(src)]"
return ..()
/datum/signal/proc/copy_from(datum/signal/model)
source = model.source
transmission_method = model.transmission_method
data = model.data
encryption = model.encryption
frequency = model.frequency
/datum/signal/proc/debug_print()
if (source)
>>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental
. = "signal = {source = '[source]' [COORD(source)]\n" . = "signal = {source = '[source]' [COORD(source)]\n"
else else
. = "signal = {source = '[source]' ()\n" . = "signal = {source = '[source]' ()\n"

View File

@@ -29,13 +29,13 @@
dat += "<I>Using this contract, you may summon an apprentice to aid you on your mission.</I><BR>" dat += "<I>Using this contract, you may summon an apprentice to aid you on your mission.</I><BR>"
dat += "<I>If you are unable to establish contact with your apprentice, you can feed the contract back to the spellbook to refund your points.</I><BR>" dat += "<I>If you are unable to establish contact with your apprentice, you can feed the contract back to the spellbook to refund your points.</I><BR>"
dat += "<B>Which school of magic is your apprentice studying?:</B><BR>" dat += "<B>Which school of magic is your apprentice studying?:</B><BR>"
dat += "<A href='byond://?src=\ref[src];school=[APPRENTICE_DESTRUCTION]'>Destruction</A><BR>" dat += "<A href='byond://?src=[REF(src)];school=[APPRENTICE_DESTRUCTION]'>Destruction</A><BR>"
dat += "<I>Your apprentice is skilled in offensive magic. They know Magic Missile and Fireball.</I><BR>" dat += "<I>Your apprentice is skilled in offensive magic. They know Magic Missile and Fireball.</I><BR>"
dat += "<A href='byond://?src=\ref[src];school=[APPRENTICE_BLUESPACE]'>Bluespace Manipulation</A><BR>" dat += "<A href='byond://?src=[REF(src)];school=[APPRENTICE_BLUESPACE]'>Bluespace Manipulation</A><BR>"
dat += "<I>Your apprentice is able to defy physics, melting through solid objects and travelling great distances in the blink of an eye. They know Teleport and Ethereal Jaunt.</I><BR>" dat += "<I>Your apprentice is able to defy physics, melting through solid objects and travelling great distances in the blink of an eye. They know Teleport and Ethereal Jaunt.</I><BR>"
dat += "<A href='byond://?src=\ref[src];school=[APPRENTICE_HEALING]'>Healing</A><BR>" dat += "<A href='byond://?src=[REF(src)];school=[APPRENTICE_HEALING]'>Healing</A><BR>"
dat += "<I>Your apprentice is training to cast spells that will aid your survival. They know Forcewall and Charge and come with a Staff of Healing.</I><BR>" dat += "<I>Your apprentice is training to cast spells that will aid your survival. They know Forcewall and Charge and come with a Staff of Healing.</I><BR>"
dat += "<A href='byond://?src=\ref[src];school=[APPRENTICE_ROBELESS]'>Robeless</A><BR>" dat += "<A href='byond://?src=[REF(src)];school=[APPRENTICE_ROBELESS]'>Robeless</A><BR>"
dat += "<I>Your apprentice is training to cast spells without their robes. They know Knock and Mindswap.</I><BR>" dat += "<I>Your apprentice is training to cast spells without their robes. They know Knock and Mindswap.</I><BR>"
user << browse(dat, "window=radio") user << browse(dat, "window=radio")
onclose(user, "radio") onclose(user, "radio")

View File

@@ -22,7 +22,7 @@
dat += "<HR>" dat += "<HR>"
for(var/s in possible_summons) for(var/s in possible_summons)
var/datum/cult_supply/S = s var/datum/cult_supply/S = s
dat += "<a href='?src=\ref[src];id=[initial(S.id)]'>[initial(S.invocation)]</a> - [initial(S.desc)]<br>" dat += "<a href='?src=[REF(src)];id=[initial(S.id)]'>[initial(S.invocation)]</a> - [initial(S.desc)]<br>"
var/datum/browser/popup = new(user, "talisman", "", 400, 400) var/datum/browser/popup = new(user, "talisman", "", 400, 400)
popup.set_content(dat.Join("")) popup.set_content(dat.Join(""))
popup.open() popup.open()

View File

@@ -160,7 +160,7 @@
if(CONFIG_GET(flag/protect_assistant_from_antagonist)) if(CONFIG_GET(flag/protect_assistant_from_antagonist))
replacementmode.restricted_jobs += "Assistant" replacementmode.restricted_jobs += "Assistant"
message_admins("The roundtype will be converted. If you have other plans for the station or feel the station is too messed up to inhabit <A HREF='?_src_=holder;[HrefToken()];toggle_midround_antag=\ref[usr]'>stop the creation of antags</A> or <A HREF='?_src_=holder;[HrefToken()];end_round=\ref[usr]'>end the round now</A>.") message_admins("The roundtype will be converted. If you have other plans for the station or feel the station is too messed up to inhabit <A HREF='?_src_=holder;[HrefToken()];toggle_midround_antag=[REF(usr)]'>stop the creation of antags</A> or <A HREF='?_src_=holder;[HrefToken()];end_round=[REF(usr)]'>end the round now</A>.")
. = 1 . = 1
sleep(rand(600,1800)) sleep(rand(600,1800))

View File

@@ -133,9 +133,9 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list(
dat += "<B>Install Module:</B><BR>" dat += "<B>Install Module:</B><BR>"
dat += "<I>The number afterwards is the amount of processing time it consumes.</I><BR>" dat += "<I>The number afterwards is the amount of processing time it consumes.</I><BR>"
for(var/datum/AI_Module/large/module in possible_modules) for(var/datum/AI_Module/large/module in possible_modules)
dat += "<A href='byond://?src=\ref[src];[module.mod_pick_name]=1'>[module.module_name]</A><A href='byond://?src=\ref[src];showdesc=[module.mod_pick_name]'>\[?\]</A> ([module.cost])<BR>" dat += "<A href='byond://?src=[REF(src)];[module.mod_pick_name]=1'>[module.module_name]</A><A href='byond://?src=[REF(src)];showdesc=[module.mod_pick_name]'>\[?\]</A> ([module.cost])<BR>"
for(var/datum/AI_Module/small/module in possible_modules) for(var/datum/AI_Module/small/module in possible_modules)
dat += "<A href='byond://?src=\ref[src];[module.mod_pick_name]=1'>[module.module_name]</A><A href='byond://?src=\ref[src];showdesc=[module.mod_pick_name]'>\[?\]</A> ([module.cost])<BR>" dat += "<A href='byond://?src=[REF(src)];[module.mod_pick_name]=1'>[module.module_name]</A><A href='byond://?src=[REF(src)];showdesc=[module.mod_pick_name]'>\[?\]</A> ([module.cost])<BR>"
dat += "<HR>" dat += "<HR>"
if(temp) if(temp)
dat += "[temp]" dat += "[temp]"

View File

@@ -43,20 +43,20 @@
dat += "Collected Samples : [points] <br>" dat += "Collected Samples : [points] <br>"
dat += "Gear Credits: [credits] <br>" dat += "Gear Credits: [credits] <br>"
dat += "<b>Transfer data in exchange for supplies:</b><br>" dat += "<b>Transfer data in exchange for supplies:</b><br>"
dat += "<a href='?src=\ref[src];dispense=baton'>Advanced Baton</A><br>" dat += "<a href='?src=[REF(src)];dispense=baton'>Advanced Baton</A><br>"
dat += "<a href='?src=\ref[src];dispense=helmet'>Agent Helmet</A><br>" dat += "<a href='?src=[REF(src)];dispense=helmet'>Agent Helmet</A><br>"
dat += "<a href='?src=\ref[src];dispense=vest'>Agent Vest</A><br>" dat += "<a href='?src=[REF(src)];dispense=vest'>Agent Vest</A><br>"
dat += "<a href='?src=\ref[src];dispense=silencer'>Radio Silencer</A><br>" dat += "<a href='?src=[REF(src)];dispense=silencer'>Radio Silencer</A><br>"
dat += "<a href='?src=\ref[src];dispense=tool'>Science Tool</A><br>" dat += "<a href='?src=[REF(src)];dispense=tool'>Science Tool</A><br>"
else else
dat += "<span class='bad'>NO EXPERIMENT MACHINE DETECTED</span> <br>" dat += "<span class='bad'>NO EXPERIMENT MACHINE DETECTED</span> <br>"
if(pad) if(pad)
dat += "<span class='bad'>Emergency Teleporter System.</span>" dat += "<span class='bad'>Emergency Teleporter System.</span>"
dat += "<span class='bad'>Consider using primary observation console first.</span>" dat += "<span class='bad'>Consider using primary observation console first.</span>"
dat += "<a href='?src=\ref[src];teleporter_send=1'>Activate Teleporter</A><br>" dat += "<a href='?src=[REF(src)];teleporter_send=1'>Activate Teleporter</A><br>"
if(gizmo && gizmo.marked) if(gizmo && gizmo.marked)
dat += "<a href='?src=\ref[src];teleporter_retrieve=1'>Retrieve Mark</A><br>" dat += "<a href='?src=[REF(src)];teleporter_retrieve=1'>Retrieve Mark</A><br>"
else else
dat += "<span class='linkOff'>Retrieve Mark</span><br>" dat += "<span class='linkOff'>Retrieve Mark</span><br>"
else else
@@ -66,15 +66,15 @@
dat += "<h4> Agent Vest Mode </h4><br>" dat += "<h4> Agent Vest Mode </h4><br>"
var/mode = vest.mode var/mode = vest.mode
if(mode == VEST_STEALTH) if(mode == VEST_STEALTH)
dat += "<a href='?src=\ref[src];flip_vest=1'>Combat</A>" dat += "<a href='?src=[REF(src)];flip_vest=1'>Combat</A>"
dat += "<span class='linkOff'>Stealth</span>" dat += "<span class='linkOff'>Stealth</span>"
else else
dat += "<span class='linkOff'>Combat</span>" dat += "<span class='linkOff'>Combat</span>"
dat += "<a href='?src=\ref[src];flip_vest=1'>Stealth</A>" dat += "<a href='?src=[REF(src)];flip_vest=1'>Stealth</A>"
dat+="<br>" dat+="<br>"
dat += "<a href='?src=\ref[src];select_disguise=1'>Select Agent Vest Disguise</a><br>" dat += "<a href='?src=[REF(src)];select_disguise=1'>Select Agent Vest Disguise</a><br>"
dat += "<a href='?src=\ref[src];toggle_vest=1'>[vest.flags_1 & NODROP_1 ? "Unlock" : "Lock"] Vest</a><br>" dat += "<a href='?src=[REF(src)];toggle_vest=1'>[vest.flags_1 & NODROP_1 ? "Unlock" : "Lock"] Vest</a><br>"
else else
dat += "<span class='bad'>NO AGENT VEST DETECTED</span>" dat += "<span class='bad'>NO AGENT VEST DETECTED</span>"
var/datum/browser/popup = new(user, "computer", "Abductor Console", 400, 500) var/datum/browser/popup = new(user, "computer", "Abductor Console", 400, 500)

View File

@@ -48,7 +48,7 @@
item_count++ item_count++
var/g_color = gland_colors[i] var/g_color = gland_colors[i]
var/amount = amounts[i] var/amount = amounts[i]
dat += "<a class='box gland' style='background-color:[g_color]' href='?src=\ref[src];dispense=[i]'>[amount]</a>" dat += "<a class='box gland' style='background-color:[g_color]' href='?src=[REF(src)];dispense=[i]'>[amount]</a>"
if(item_count == 4) // Four boxes per line if(item_count == 4) // Four boxes per line
dat +="</br></br>" dat +="</br></br>"
item_count = 0 item_count = 0

View File

@@ -104,9 +104,9 @@
dat += "<table><tr><td>" dat += "<table><tr><td>"
dat += "<img src=dissection_img height=80 width=80>" //Avert your eyes dat += "<img src=dissection_img height=80 width=80>" //Avert your eyes
dat += "</td><td>" dat += "</td><td>"
dat += "<a href='?src=\ref[src];experiment=1'>Probe</a><br>" dat += "<a href='?src=[REF(src)];experiment=1'>Probe</a><br>"
dat += "<a href='?src=\ref[src];experiment=2'>Dissect</a><br>" dat += "<a href='?src=[REF(src)];experiment=2'>Dissect</a><br>"
dat += "<a href='?src=\ref[src];experiment=3'>Analyze</a><br>" dat += "<a href='?src=[REF(src)];experiment=3'>Analyze</a><br>"
dat += "</td></tr></table>" dat += "</td></tr></table>"
else else
dat += "<span class='linkOff'>Experiment </span>" dat += "<span class='linkOff'>Experiment </span>"
@@ -127,8 +127,8 @@
dat += "<br>" dat += "<br>"
dat += "[flash]" dat += "[flash]"
dat += "<br>" dat += "<br>"
dat += "<a href='?src=\ref[src];refresh=1'>Scan</a>" dat += "<a href='?src=[REF(src)];refresh=1'>Scan</a>"
dat += "<a href='?src=\ref[src];[state_open ? "close=1'>Close</a>" : "open=1'>Open</a>"]" dat += "<a href='?src=[REF(src)];[state_open ? "close=1'>Close</a>" : "open=1'>Open</a>"]"
var/datum/browser/popup = new(user, "experiment", "Probing Console", 300, 300) var/datum/browser/popup = new(user, "experiment", "Probing Console", 300, 300)
popup.set_title_image(user.browse_rsc_icon(icon, icon_state)) popup.set_title_image(user.browse_rsc_icon(icon, icon_state))
popup.set_content(dat) popup.set_content(dat)

View File

@@ -77,6 +77,7 @@
icon = 'icons/obj/machines/nuke_terminal.dmi' icon = 'icons/obj/machines/nuke_terminal.dmi'
icon_state = "nuclearbomb_base" icon_state = "nuclearbomb_base"
anchored = TRUE //stops it being moved anchored = TRUE //stops it being moved
use_tag = TRUE
/obj/machinery/nuclearbomb/syndicate /obj/machinery/nuclearbomb/syndicate
//ui_style = "syndicate" // actually the nuke op bomb is a stole nt bomb //ui_style = "syndicate" // actually the nuke op bomb is a stole nt bomb

View File

@@ -1,3 +1,4 @@
<<<<<<< HEAD
/* /*
This is for the sandbox for now, This is for the sandbox for now,
maybe useful later for an actual thing? maybe useful later for an actual thing?
@@ -137,3 +138,144 @@
return return
interact() interact()
=======
/*
This is for the sandbox for now,
maybe useful later for an actual thing?
-Sayu
*/
/obj/structure/door_assembly
var/datum/airlock_maker/maker = null
/obj/structure/door_assembly/attack_hand()
..()
if(maker)
maker.interact()
/datum/airlock_maker
var/obj/structure/door_assembly/linked = null
var/list/access_used = null
var/require_all = 1
var/paintjob = "none"
var/glassdoor = 0
var/doorname = "airlock"
/datum/airlock_maker/New(var/atom/target_loc)
linked = new(target_loc)
linked.maker = src
linked.anchored = FALSE
access_used = list()
interact()
/datum/airlock_maker/proc/linkpretty(href,desc,active)
if(!desc)
var/static/list/defaults = list("No","Yes")
desc = defaults[active+1]
if(active)
return "<a href='?src=[REF(src)];[href]'><b>[desc]</b></a>"
return "<a href='?src=[REF(src)];[href]'><i>[desc]</i></a>"
/datum/airlock_maker/proc/interact()
var/list/leftcolumn = list()
var/list/rightcolumn = list()
leftcolumn += "<u><b>Required Access</b></u>"
for(var/access in get_all_accesses())
leftcolumn += linkpretty("access=[access]",get_access_desc(access),access in access_used)
leftcolumn += "Require all listed accesses: [linkpretty("reqall",null,require_all)]"
rightcolumn += "<u><b>Paintjob</b></u>"
for(var/option in list("none","engineering","atmos","security","command","medical","research","mining","maintenance","external","highsecurity"))
rightcolumn += linkpretty("paint=[option]",option,option == paintjob)
rightcolumn += "Glass door: " + linkpretty("glass",null,glassdoor) + "<br><br>"
var/length = max(leftcolumn.len,rightcolumn.len)
var/dat = "You may move the model airlock around. A new airlock will be built in its space when you click done, below.<hr><br>"
dat += "<a href='?src=[REF(src)];rename'>Door name</a>: \"[doorname]\""
dat += "<table>"
for(var/i=1; i<=length; i++)
dat += "<tr><td>"
if(i<=leftcolumn.len)
dat += leftcolumn[i]
dat += "</td><td>"
if(i<=rightcolumn.len)
dat += rightcolumn[i]
dat += "</td></tr>"
dat += "</table><hr><a href='?src=[REF(src)];done'>Finalize Airlock Construction</a> | <a href='?src=[REF(src)];cancel'>Cancel and Destroy Airlock</a>"
usr << browse(dat,"window=airlockmaker")
/datum/airlock_maker/Topic(var/href,var/list/href_list)
if(!usr)
return
if(!src || !linked || !linked.loc)
usr << browse(null,"window=airlockmaker")
return
if("rename" in href_list)
var/newname = stripped_input(usr,"New airlock name:","Name the airlock",doorname)
if(newname)
doorname = newname
if("access" in href_list)
var/value = text2num(href_list["access"])
access_used ^= value
if("reqall" in href_list)
require_all = !require_all
if("paint" in href_list)
paintjob = href_list["paint"]
if("glass" in href_list)
glassdoor = !glassdoor
if("cancel" in href_list)
usr << browse(null,"window=airlockmaker")
qdel(linked)
qdel(src)
return
if("done" in href_list)
usr << browse(null,"window=airlockmaker")
var/turf/t_loc = linked.loc
qdel(linked)
if(!istype(t_loc))
return
var/target_type = "/obj/machinery/door/airlock"
if(glassdoor)
if(paintjob != "none")
if(paintjob in list("external","highsecurity","maintenance")) // no glass version
target_type += "/[paintjob]"
else
target_type += "/glass_[paintjob]"
else
target_type += "/glass"
else if(paintjob != "none")
target_type += "/[paintjob]"
var/final = target_type
target_type = text2path(final)
if(!target_type)
to_chat(usr, "Didn't work, contact Sayu with this: [final]")
usr << browse(null,"window=airlockmaker")
return
var/obj/machinery/door/D = new target_type(t_loc)
D.name = doorname
if(access_used.len == 0)
D.req_access = null
D.req_one_access = null
else if(require_all)
D.req_access = access_used.Copy()
D.req_one_access = null
else
D.req_access = null
D.req_one_access = access_used.Copy()
return
interact()
>>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental

View File

@@ -77,26 +77,26 @@ GLOBAL_VAR_INIT(hsboxspawn, TRUE)
hsbinfo = "<center><b>Sandbox Panel</b></center><hr>" hsbinfo = "<center><b>Sandbox Panel</b></center><hr>"
if(admin) if(admin)
hsbinfo += "<b>Administration</b><br>" hsbinfo += "<b>Administration</b><br>"
hsbinfo += "- <a href='?src=\ref[src];hsb=hsbtobj'>Toggle Object Spawning</a><br>" hsbinfo += "- <a href='?src=[REF(src)];hsb=hsbtobj'>Toggle Object Spawning</a><br>"
hsbinfo += "- <a href='?src=\ref[src];hsb=hsbtac'>Toggle Item Spawn Panel Auto-close</a><br>" hsbinfo += "- <a href='?src=[REF(src)];hsb=hsbtac'>Toggle Item Spawn Panel Auto-close</a><br>"
hsbinfo += "<b>Canister Spawning</b><br>" hsbinfo += "<b>Canister Spawning</b><br>"
hsbinfo += "- <a href='?src=\ref[src];hsb=hsbspawn&path=[/obj/machinery/portable_atmospherics/canister/toxins]'>Spawn Plasma Canister</a><br>" hsbinfo += "- <a href='?src=[REF(src)];hsb=hsbspawn&path=[/obj/machinery/portable_atmospherics/canister/toxins]'>Spawn Plasma Canister</a><br>"
hsbinfo += "- <a href='?src=\ref[src];hsb=hsbspawn&path=[/obj/machinery/portable_atmospherics/canister/carbon_dioxide]'>Spawn CO2 Canister</a><br>" hsbinfo += "- <a href='?src=[REF(src)];hsb=hsbspawn&path=[/obj/machinery/portable_atmospherics/canister/carbon_dioxide]'>Spawn CO2 Canister</a><br>"
hsbinfo += "- <a href='?src=\ref[src];hsb=hsbspawn&path=[/obj/machinery/portable_atmospherics/canister/nitrogen]'>Spawn Nitrogen Canister</a><br>" hsbinfo += "- <a href='?src=[REF(src)];hsb=hsbspawn&path=[/obj/machinery/portable_atmospherics/canister/nitrogen]'>Spawn Nitrogen Canister</a><br>"
hsbinfo += "- <a href='?src=\ref[src];hsb=hsbspawn&path=[/obj/machinery/portable_atmospherics/canister/nitrous_oxide]'>Spawn N2O Canister</a><hr>" hsbinfo += "- <a href='?src=[REF(src)];hsb=hsbspawn&path=[/obj/machinery/portable_atmospherics/canister/nitrous_oxide]'>Spawn N2O Canister</a><hr>"
else else
hsbinfo += "<i>Some item spawning may be disabled by the administrators.</i><br>" hsbinfo += "<i>Some item spawning may be disabled by the administrators.</i><br>"
hsbinfo += "<i>Only administrators may spawn dangerous canisters.</i><br>" hsbinfo += "<i>Only administrators may spawn dangerous canisters.</i><br>"
for(var/T in hrefs) for(var/T in hrefs)
var/href = hrefs[T] var/href = hrefs[T]
if(href) if(href)
hsbinfo += "- <a href='?\ref[src];hsb=[hrefs[T]]'>[T]</a><br>" hsbinfo += "- <a href='?[REF(src)];hsb=[hrefs[T]]'>[T]</a><br>"
else else
hsbinfo += "<br><b>[T]</b><br>" hsbinfo += "<br><b>[T]</b><br>"
hsbinfo += "<hr>" hsbinfo += "<hr>"
hsbinfo += "- <a href='?\ref[src];hsb=hsbcloth'>Spawn Clothing...</a><br>" hsbinfo += "- <a href='?[REF(src)];hsb=hsbcloth'>Spawn Clothing...</a><br>"
hsbinfo += "- <a href='?\ref[src];hsb=hsbreag'>Spawn Reagent Container...</a><br>" hsbinfo += "- <a href='?[REF(src)];hsb=hsbreag'>Spawn Reagent Container...</a><br>"
hsbinfo += "- <a href='?\ref[src];hsb=hsbobj'>Spawn Other Item...</a><br><br>" hsbinfo += "- <a href='?[REF(src)];hsb=hsbobj'>Spawn Other Item...</a><br><br>"
usr << browse(hsbinfo, "window=hsbpanel") usr << browse(hsbinfo, "window=hsbpanel")
@@ -235,12 +235,12 @@ GLOBAL_VAR_INIT(hsboxspawn, TRUE)
if(!GLOB.hsboxspawn) return if(!GLOB.hsboxspawn) return
if(!clothinfo) if(!clothinfo)
clothinfo = "<b>Clothing</b> <a href='?\ref[src];hsb=hsbreag'>(Reagent Containers)</a> <a href='?\ref[src];hsb=hsbobj'>(Other Items)</a><hr><br>" clothinfo = "<b>Clothing</b> <a href='?[REF(src)];hsb=hsbreag'>(Reagent Containers)</a> <a href='?[REF(src)];hsb=hsbobj'>(Other Items)</a><hr><br>"
var/list/all_items = subtypesof(/obj/item/clothing) var/list/all_items = subtypesof(/obj/item/clothing)
for(var/typekey in spawn_forbidden) for(var/typekey in spawn_forbidden)
all_items -= typesof(typekey) all_items -= typesof(typekey)
for(var/O in reverseRange(all_items)) for(var/O in reverseRange(all_items))
clothinfo += "<a href='?src=\ref[src];hsb=hsb_safespawn&path=[O]'>[O]</a><br>" clothinfo += "<a href='?src=[REF(src)];hsb=hsb_safespawn&path=[O]'>[O]</a><br>"
usr << browse(clothinfo,"window=sandbox") usr << browse(clothinfo,"window=sandbox")
@@ -249,12 +249,12 @@ GLOBAL_VAR_INIT(hsboxspawn, TRUE)
if(!GLOB.hsboxspawn) return if(!GLOB.hsboxspawn) return
if(!reaginfo) if(!reaginfo)
reaginfo = "<b>Reagent Containers</b> <a href='?\ref[src];hsb=hsbcloth'>(Clothing)</a> <a href='?\ref[src];hsb=hsbobj'>(Other Items)</a><hr><br>" reaginfo = "<b>Reagent Containers</b> <a href='?[REF(src)];hsb=hsbcloth'>(Clothing)</a> <a href='?[REF(src)];hsb=hsbobj'>(Other Items)</a><hr><br>"
var/list/all_items = subtypesof(/obj/item/reagent_containers) var/list/all_items = subtypesof(/obj/item/reagent_containers)
for(var/typekey in spawn_forbidden) for(var/typekey in spawn_forbidden)
all_items -= typesof(typekey) all_items -= typesof(typekey)
for(var/O in reverseRange(all_items)) for(var/O in reverseRange(all_items))
reaginfo += "<a href='?src=\ref[src];hsb=hsb_safespawn&path=[O]'>[O]</a><br>" reaginfo += "<a href='?src=[REF(src)];hsb=hsb_safespawn&path=[O]'>[O]</a><br>"
usr << browse(reaginfo,"window=sandbox") usr << browse(reaginfo,"window=sandbox")
@@ -263,13 +263,13 @@ GLOBAL_VAR_INIT(hsboxspawn, TRUE)
if(!GLOB.hsboxspawn) return if(!GLOB.hsboxspawn) return
if(!objinfo) if(!objinfo)
objinfo = "<b>Other Items</b> <a href='?\ref[src];hsb=hsbcloth'>(Clothing)</a> <a href='?\ref[src];hsb=hsbreag'>(Reagent Containers)</a><hr><br>" objinfo = "<b>Other Items</b> <a href='?[REF(src)];hsb=hsbcloth'>(Clothing)</a> <a href='?[REF(src)];hsb=hsbreag'>(Reagent Containers)</a><hr><br>"
var/list/all_items = subtypesof(/obj/item/) - typesof(/obj/item/clothing) - typesof(/obj/item/reagent_containers) var/list/all_items = subtypesof(/obj/item/) - typesof(/obj/item/clothing) - typesof(/obj/item/reagent_containers)
for(var/typekey in spawn_forbidden) for(var/typekey in spawn_forbidden)
all_items -= typesof(typekey) all_items -= typesof(typekey)
for(var/O in reverseRange(all_items)) for(var/O in reverseRange(all_items))
objinfo += "<a href='?src=\ref[src];hsb=hsb_safespawn&path=[O]'>[O]</a><br>" objinfo += "<a href='?src=[REF(src)];hsb=hsb_safespawn&path=[O]'>[O]</a><br>"
usr << browse(objinfo,"window=sandbox") usr << browse(objinfo,"window=sandbox")

View File

@@ -212,7 +212,7 @@
/proc/makeNewConstruct(mob/living/simple_animal/hostile/construct/ctype, mob/target, mob/stoner = null, cultoverride = 0, loc_override = null) /proc/makeNewConstruct(mob/living/simple_animal/hostile/construct/ctype, mob/target, mob/stoner = null, cultoverride = 0, loc_override = null)
var/mob/living/simple_animal/hostile/construct/newstruct = new ctype((loc_override) ? (loc_override) : (get_turf(target))) var/mob/living/simple_animal/hostile/construct/newstruct = new ctype((loc_override) ? (loc_override) : (get_turf(target)))
if(stoner) if(stoner)
newstruct.faction |= "\ref[stoner]" newstruct.faction |= "[REF(stoner)]"
newstruct.master = stoner newstruct.master = stoner
var/datum/action/innate/seek_master/SM = new() var/datum/action/innate/seek_master/SM = new()
SM.Grant(newstruct) SM.Grant(newstruct)
@@ -244,7 +244,7 @@
S.key = T.key S.key = T.key
S.language_holder = U.language_holder.copy(S) S.language_holder = U.language_holder.copy(S)
if(U) if(U)
S.faction |= "\ref[U]" //Add the master as a faction, allowing inter-mob cooperation S.faction |= "[REF(U)]" //Add the master as a faction, allowing inter-mob cooperation
if(U && iscultist(U)) if(U && iscultist(U))
SSticker.mode.add_cultist(S.mind, 0) SSticker.mode.add_cultist(S.mind, 0)
S.cancel_camera() S.cancel_camera()

View File

@@ -652,7 +652,7 @@
var/list/cat_dat = list() var/list/cat_dat = list()
for(var/category in categories) for(var/category in categories)
cat_dat[category] = "<hr>" cat_dat[category] = "<hr>"
dat += "<li><a [tab==category?"class=selected":""] href='byond://?src=\ref[src];page=[category]'>[category]</a></li>" dat += "<li><a [tab==category?"class=selected":""] href='byond://?src=[REF(src)];page=[category]'>[category]</a></li>"
dat += "<li><a><b>Points remaining : [uses]</b></a></li>" dat += "<li><a><b>Points remaining : [uses]</b></a></li>"
dat += "</ul>" dat += "</ul>"
@@ -663,11 +663,11 @@
E = entries[i] E = entries[i]
spell_info += E.GetInfo() spell_info += E.GetInfo()
if(E.CanBuy(user,src)) if(E.CanBuy(user,src))
spell_info+= "<a href='byond://?src=\ref[src];buy=[i]'>[E.buy_word]</A><br>" spell_info+= "<a href='byond://?src=[REF(src)];buy=[i]'>[E.buy_word]</A><br>"
else else
spell_info+= "<span>Can't [E.buy_word]</span><br>" spell_info+= "<span>Can't [E.buy_word]</span><br>"
if(E.CanRefund(user,src)) if(E.CanRefund(user,src))
spell_info+= "<a href='byond://?src=\ref[src];refund=[i]'>Refund</A><br>" spell_info+= "<a href='byond://?src=[REF(src)];refund=[i]'>Refund</A><br>"
spell_info += "<hr>" spell_info += "<hr>"
if(cat_dat[E.category]) if(cat_dat[E.category])
cat_dat[E.category] += spell_info cat_dat[E.category] += spell_info

View File

@@ -107,8 +107,8 @@ GLOBAL_LIST_EMPTY(announcement_systems)
return return
var/contents = "Arrival Announcement: <A href='?src=\ref[src];ArrivalT-Topic=1'>([(arrivalToggle ? "On" : "Off")])</a><br>\n<A href='?src=\ref[src];ArrivalTopic=1'>[arrival]</a><br><br>\n" var/contents = "Arrival Announcement: <A href='?src=[REF(src)];ArrivalT-Topic=1'>([(arrivalToggle ? "On" : "Off")])</a><br>\n<A href='?src=[REF(src)];ArrivalTopic=1'>[arrival]</a><br><br>\n"
contents += "Departmental Head Announcement: <A href='?src=\ref[src];NewheadT-Topic=1'>([(newheadToggle ? "On" : "Off")])</a><br>\n<A href='?src=\ref[src];NewheadTopic=1'>[newhead]</a><br><br>\n" contents += "Departmental Head Announcement: <A href='?src=[REF(src)];NewheadT-Topic=1'>([(newheadToggle ? "On" : "Off")])</a><br>\n<A href='?src=[REF(src)];NewheadTopic=1'>[newhead]</a><br><br>\n"
var/datum/browser/popup = new(user, "announcement_config", "Automated Announcement Configuration", 370, 220) var/datum/browser/popup = new(user, "announcement_config", "Automated Announcement Configuration", 370, 220)
popup.set_content(contents) popup.set_content(contents)

View File

@@ -240,8 +240,8 @@
var/dat = "<div class='statusDisplay'><h3>Autolathe Menu:</h3><br>" var/dat = "<div class='statusDisplay'><h3>Autolathe Menu:</h3><br>"
dat += materials_printout() dat += materials_printout()
dat += "<form name='search' action='?src=\ref[src]'>\ dat += "<form name='search' action='?src=[REF(src)]'>\
<input type='hidden' name='src' value='\ref[src]'>\ <input type='hidden' name='src' value='[REF(src)]'>\
<input type='hidden' name='search' value='to_search'>\ <input type='hidden' name='search' value='to_search'>\
<input type='hidden' name='menu' value='[AUTOLATHE_SEARCH_MENU]'>\ <input type='hidden' name='menu' value='[AUTOLATHE_SEARCH_MENU]'>\
<input type='text' name='to_search'>\ <input type='text' name='to_search'>\
@@ -256,14 +256,14 @@
dat += "</tr><tr>" dat += "</tr><tr>"
line_length = 1 line_length = 1
dat += "<td><A href='?src=\ref[src];category=[C];menu=[AUTOLATHE_CATEGORY_MENU]'>[C]</A></td>" dat += "<td><A href='?src=[REF(src)];category=[C];menu=[AUTOLATHE_CATEGORY_MENU]'>[C]</A></td>"
line_length++ line_length++
dat += "</tr></table></div>" dat += "</tr></table></div>"
return dat return dat
/obj/machinery/autolathe/proc/category_win(mob/user,selected_category) /obj/machinery/autolathe/proc/category_win(mob/user,selected_category)
var/dat = "<A href='?src=\ref[src];menu=[AUTOLATHE_MAIN_MENU]'>Return to main menu</A>" var/dat = "<A href='?src=[REF(src)];menu=[AUTOLATHE_MAIN_MENU]'>Return to main menu</A>"
dat += "<div class='statusDisplay'><h3>Browsing [selected_category]:</h3><br>" dat += "<div class='statusDisplay'><h3>Browsing [selected_category]:</h3><br>"
dat += materials_printout() dat += materials_printout()
@@ -275,22 +275,22 @@
if(disabled || !can_build(D)) if(disabled || !can_build(D))
dat += "<span class='linkOff'>[D.name]</span>" dat += "<span class='linkOff'>[D.name]</span>"
else else
dat += "<a href='?src=\ref[src];make=[D.id];multiplier=1'>[D.name]</a>" dat += "<a href='?src=[REF(src)];make=[D.id];multiplier=1'>[D.name]</a>"
if(ispath(D.build_path, /obj/item/stack)) if(ispath(D.build_path, /obj/item/stack))
GET_COMPONENT(materials, /datum/component/material_container) GET_COMPONENT(materials, /datum/component/material_container)
var/max_multiplier = min(D.maxstack, D.materials[MAT_METAL] ?round(materials.amount(MAT_METAL)/D.materials[MAT_METAL]):INFINITY,D.materials[MAT_GLASS]?round(materials.amount(MAT_GLASS)/D.materials[MAT_GLASS]):INFINITY) var/max_multiplier = min(D.maxstack, D.materials[MAT_METAL] ?round(materials.amount(MAT_METAL)/D.materials[MAT_METAL]):INFINITY,D.materials[MAT_GLASS]?round(materials.amount(MAT_GLASS)/D.materials[MAT_GLASS]):INFINITY)
if (max_multiplier>10 && !disabled) if (max_multiplier>10 && !disabled)
dat += " <a href='?src=\ref[src];make=[D.id];multiplier=10'>x10</a>" dat += " <a href='?src=[REF(src)];make=[D.id];multiplier=10'>x10</a>"
if (max_multiplier>25 && !disabled) if (max_multiplier>25 && !disabled)
dat += " <a href='?src=\ref[src];make=[D.id];multiplier=25'>x25</a>" dat += " <a href='?src=[REF(src)];make=[D.id];multiplier=25'>x25</a>"
if(max_multiplier > 0 && !disabled) if(max_multiplier > 0 && !disabled)
dat += " <a href='?src=\ref[src];make=[D.id];multiplier=[max_multiplier]'>x[max_multiplier]</a>" dat += " <a href='?src=[REF(src)];make=[D.id];multiplier=[max_multiplier]'>x[max_multiplier]</a>"
else else
if(!disabled && can_build(D, 5)) if(!disabled && can_build(D, 5))
dat += " <a href='?src=\ref[src];make=[D.id];multiplier=5'>x5</a>" dat += " <a href='?src=[REF(src)];make=[D.id];multiplier=5'>x5</a>"
if(!disabled && can_build(D, 10)) if(!disabled && can_build(D, 10))
dat += " <a href='?src=\ref[src];make=[D.id];multiplier=10'>x10</a>" dat += " <a href='?src=[REF(src)];make=[D.id];multiplier=10'>x10</a>"
dat += "[get_design_cost(D)]<br>" dat += "[get_design_cost(D)]<br>"
@@ -298,7 +298,7 @@
return dat return dat
/obj/machinery/autolathe/proc/search_win(mob/user) /obj/machinery/autolathe/proc/search_win(mob/user)
var/dat = "<A href='?src=\ref[src];menu=[AUTOLATHE_MAIN_MENU]'>Return to main menu</A>" var/dat = "<A href='?src=[REF(src)];menu=[AUTOLATHE_MAIN_MENU]'>Return to main menu</A>"
dat += "<div class='statusDisplay'><h3>Search results:</h3><br>" dat += "<div class='statusDisplay'><h3>Search results:</h3><br>"
dat += materials_printout() dat += materials_printout()
@@ -307,17 +307,17 @@
if(disabled || !can_build(D)) if(disabled || !can_build(D))
dat += "<span class='linkOff'>[D.name]</span>" dat += "<span class='linkOff'>[D.name]</span>"
else else
dat += "<a href='?src=\ref[src];make=[D.id];multiplier=1'>[D.name]</a>" dat += "<a href='?src=[REF(src)];make=[D.id];multiplier=1'>[D.name]</a>"
if(ispath(D.build_path, /obj/item/stack)) if(ispath(D.build_path, /obj/item/stack))
GET_COMPONENT(materials, /datum/component/material_container) GET_COMPONENT(materials, /datum/component/material_container)
var/max_multiplier = min(D.maxstack, D.materials[MAT_METAL] ?round(materials.amount(MAT_METAL)/D.materials[MAT_METAL]):INFINITY,D.materials[MAT_GLASS]?round(materials.amount(MAT_GLASS)/D.materials[MAT_GLASS]):INFINITY) var/max_multiplier = min(D.maxstack, D.materials[MAT_METAL] ?round(materials.amount(MAT_METAL)/D.materials[MAT_METAL]):INFINITY,D.materials[MAT_GLASS]?round(materials.amount(MAT_GLASS)/D.materials[MAT_GLASS]):INFINITY)
if (max_multiplier>10 && !disabled) if (max_multiplier>10 && !disabled)
dat += " <a href='?src=\ref[src];make=[D.id];multiplier=10'>x10</a>" dat += " <a href='?src=[REF(src)];make=[D.id];multiplier=10'>x10</a>"
if (max_multiplier>25 && !disabled) if (max_multiplier>25 && !disabled)
dat += " <a href='?src=\ref[src];make=[D.id];multiplier=25'>x25</a>" dat += " <a href='?src=[REF(src)];make=[D.id];multiplier=25'>x25</a>"
if(max_multiplier > 0 && !disabled) if(max_multiplier > 0 && !disabled)
dat += " <a href='?src=\ref[src];make=[D.id];multiplier=[max_multiplier]'>x[max_multiplier]</a>" dat += " <a href='?src=[REF(src)];make=[D.id];multiplier=[max_multiplier]'>x[max_multiplier]</a>"
dat += "[get_design_cost(D)]<br>" dat += "[get_design_cost(D)]<br>"

View File

@@ -62,11 +62,11 @@
var/dat = "[world.name] secure vault. Authorized personnel only.<br>" var/dat = "[world.name] secure vault. Authorized personnel only.<br>"
dat += "Current Balance: [SSshuttle.points] credits.<br>" dat += "Current Balance: [SSshuttle.points] credits.<br>"
if(!siphoning) if(!siphoning)
dat += "<A href='?src=\ref[src];siphon=1'>Siphon Credits</A><br>" dat += "<A href='?src=[REF(src)];siphon=1'>Siphon Credits</A><br>"
else else
dat += "<A href='?src=\ref[src];halt=1'>Halt Credit Siphon</A><br>" dat += "<A href='?src=[REF(src)];halt=1'>Halt Credit Siphon</A><br>"
dat += "<a href='?src=\ref[user];mach_close=computer'>Close</a>" dat += "<a href='?src=[REF(user)];mach_close=computer'>Close</a>"
var/datum/browser/popup = new(user, "computer", "Bank Vault", 300, 200) var/datum/browser/popup = new(user, "computer", "Bank Vault", 300, 200)
popup.set_content("<center>[dat]</center>") popup.set_content("<center>[dat]</center>")

View File

@@ -203,7 +203,7 @@
if(U.name == "Unknown") if(U.name == "Unknown")
to_chat(AI, "<b>[U]</b> holds <a href='?_src_=usr;show_paper=1;'>\a [itemname]</a> up to one of your cameras ...") to_chat(AI, "<b>[U]</b> holds <a href='?_src_=usr;show_paper=1;'>\a [itemname]</a> up to one of your cameras ...")
else else
to_chat(AI, "<b><a href='?src=\ref[AI];track=[html_encode(U.name)]'>[U]</a></b> holds <a href='?_src_=usr;show_paper=1;'>\a [itemname]</a> up to one of your cameras ...") to_chat(AI, "<b><a href='?src=[REF(AI)];track=[html_encode(U.name)]'>[U]</a></b> holds <a href='?_src_=usr;show_paper=1;'>\a [itemname]</a> up to one of your cameras ...")
AI.last_paper_seen = "<HTML><HEAD><TITLE>[itemname]</TITLE></HEAD><BODY><TT>[info]</TT></BODY></HTML>" AI.last_paper_seen = "<HTML><HEAD><TITLE>[itemname]</TITLE></HEAD><BODY><TT>[info]</TT></BODY></HTML>"
else if (O.client && O.client.eye == src) else if (O.client && O.client.eye == src)
to_chat(O, "[U] holds \a [itemname] up to one of the cameras ...") to_chat(O, "[U] holds \a [itemname] up to one of the cameras ...")

View File

@@ -32,7 +32,7 @@
if (detectTime == 0) if (detectTime == 0)
detectTime = world.time // start the clock detectTime = world.time // start the clock
var/list/targets = getTargetList() var/list/targets = getTargetList()
targets |= "\ref[target]" targets |= "[REF(target)]"
return 1 return 1
/obj/machinery/camera/Destroy() /obj/machinery/camera/Destroy()
@@ -43,7 +43,7 @@
/obj/machinery/camera/proc/lostTarget(mob/target) /obj/machinery/camera/proc/lostTarget(mob/target)
var/list/targets = getTargetList() var/list/targets = getTargetList()
targets -= "\ref[target]" targets -= "[REF(target)]"
if (targets.len == 0) if (targets.len == 0)
cancelAlarm() cancelAlarm()

View File

@@ -307,7 +307,7 @@
comp.AttachCloner(src) comp.AttachCloner(src)
else else
P.buffer = src P.buffer = src
to_chat(user, "<font color = #666633>-% Successfully stored \ref[P.buffer] [P.buffer.name] in buffer %-</font color>") to_chat(user, "<font color = #666633>-% Successfully stored [REF(P.buffer)] [P.buffer.name] in buffer %-</font color>")
return return
var/mob/living/mob_occupant = occupant var/mob/living/mob_occupant = occupant

View File

@@ -61,10 +61,10 @@
else else
dat += "<span class='good'>AI functional</span>" dat += "<span class='good'>AI functional</span>"
if (!src.active) if (!src.active)
dat += {"<br><br><A href='byond://?src=\ref[src];fix=1'>Begin Reconstruction</A>"} dat += {"<br><br><A href='byond://?src=[REF(src)];fix=1'>Begin Reconstruction</A>"}
else else
dat += "<br><br>Reconstruction in process, please wait.<br>" dat += "<br><br>Reconstruction in process, please wait.<br>"
dat += {"<br><A href='?src=\ref[user];mach_close=computer'>Close</A>"} dat += {"<br><A href='?src=[REF(user)];mach_close=computer'>Close</A>"}
var/datum/browser/popup = new(user, "computer", "AI System Integrity Restorer", 400, 500) var/datum/browser/popup = new(user, "computer", "AI System Integrity Restorer", 400, 500)
popup.set_content(dat) 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(src.icon, src.icon_state))

View File

@@ -9,7 +9,7 @@
var/list/apcs //APCs the computer has access to var/list/apcs //APCs the computer has access to
var/mob/living/operator //Who's operating the computer right now var/mob/living/operator //Who's operating the computer right now
var/obj/machinery/power/apc/active_apc //The APC we're using right now var/obj/machinery/power/apc/active_apc //The APC we're using right now
var/list/filters //For sorting the results var/list/result_filters //For sorting the results
var/checking_logs = 0 var/checking_logs = 0
var/list/logs var/list/logs
var/authenticated = 0 var/authenticated = 0
@@ -18,7 +18,7 @@
/obj/machinery/computer/apc_control/Initialize() /obj/machinery/computer/apc_control/Initialize()
. = ..() . = ..()
apcs = list() //To avoid BYOND making the list run through a ton of procs apcs = list() //To avoid BYOND making the list run through a ton of procs
filters = list("Name" = null, "Charge Above" = null, "Charge Below" = null, "Responsive" = null) result_filters = list("Name" = null, "Charge Above" = null, "Charge Below" = null, "Responsive" = null)
/obj/machinery/computer/apc_control/process() /obj/machinery/computer/apc_control/process()
apcs = list() //Clear the list every tick apcs = list() //Clear the list every tick
@@ -52,28 +52,28 @@
if(!checking_logs) if(!checking_logs)
dat += "Logged in as [auth_id].<br><br>" dat += "Logged in as [auth_id].<br><br>"
dat += "<i>Filters</i><br>" dat += "<i>Filters</i><br>"
dat += "<b>Name:</b> <a href='?src=\ref[src];name_filter=1'>[filters["Name"] ? filters["Name"] : "None set"]</a><br>" dat += "<b>Name:</b> <a href='?src=[REF(src)];name_filter=1'>[result_filters["Name"] ? result_filters["Name"] : "None set"]</a><br>"
dat += "<b>Charge:</b> <a href='?src=\ref[src];above_filter=1'>\>[filters["Charge Above"] ? filters["Charge Above"] : "NaN"]%</a> and <a href='?src=\ref[src];below_filter=1'>\<[filters["Charge Below"] ? filters["Charge Below"] : "NaN"]%</a><br>" dat += "<b>Charge:</b> <a href='?src=[REF(src)];above_filter=1'>\>[result_filters["Charge Above"] ? result_filters["Charge Above"] : "NaN"]%</a> and <a href='?src=[REF(src)];below_filter=1'>\<[result_filters["Charge Below"] ? result_filters["Charge Below"] : "NaN"]%</a><br>"
dat += "<b>Accessible:</b> <a href='?src=\ref[src];access_filter=1'>[filters["Responsive"] ? "Non-Responsive Only" : "All"]</a><br><br>" dat += "<b>Accessible:</b> <a href='?src=[REF(src)];access_filter=1'>[result_filters["Responsive"] ? "Non-Responsive Only" : "All"]</a><br><br>"
for(var/A in apcs) for(var/A in apcs)
var/obj/machinery/power/apc/APC = apcs[A] var/obj/machinery/power/apc/APC = apcs[A]
if(filters["Name"] && !findtext(APC.name, filters["Name"]) && !findtext(APC.area.name, filters["Name"])) if(result_filters["Name"] && !findtext(APC.name, result_filters["Name"]) && !findtext(APC.area.name, result_filters["Name"]))
continue continue
if(filters["Charge Above"] && (APC.cell.charge / APC.cell.maxcharge) < filters["Charge Above"] / 100) if(result_filters["Charge Above"] && (APC.cell.charge / APC.cell.maxcharge) < result_filters["Charge Above"] / 100)
continue continue
if(filters["Charge Below"] && (APC.cell.charge / APC.cell.maxcharge) > filters["Charge Below"] / 100) if(result_filters["Charge Below"] && (APC.cell.charge / APC.cell.maxcharge) > result_filters["Charge Below"] / 100)
continue continue
if(filters["Responsive"] && !APC.aidisabled) if(result_filters["Responsive"] && !APC.aidisabled)
continue continue
dat += "<a href='?src=\ref[src];access_apc=\ref[APC]'>[A]</a><br>\ dat += "<a href='?src=[REF(src)];access_apc=[REF(APC)]'>[A]</a><br>\
<b>Charge:</b> [DisplayPower(APC.cell.charge)] / [DisplayPower(APC.cell.maxcharge)] ([round((APC.cell.charge / APC.cell.maxcharge) * 100)]%)<br>\ <b>Charge:</b> [DisplayPower(APC.cell.charge)] / [DisplayPower(APC.cell.maxcharge)] ([round((APC.cell.charge / APC.cell.maxcharge) * 100)]%)<br>\
<b>Area:</b> [APC.area]<br>\ <b>Area:</b> [APC.area]<br>\
[APC.aidisabled || APC.panel_open ? "<font color='#FF0000'>APC does not respond to interface query.</font>" : "<font color='#00FF00'>APC responds to interface query.</font>"]<br><br>" [APC.aidisabled || APC.panel_open ? "<font color='#FF0000'>APC does not respond to interface query.</font>" : "<font color='#00FF00'>APC responds to interface query.</font>"]<br><br>"
dat += "<a href='?src=\ref[src];check_logs=1'>Check Logs</a><br>" dat += "<a href='?src=[REF(src)];check_logs=1'>Check Logs</a><br>"
dat += "<a href='?src=\ref[src];log_out=1'>Log Out</a><br>" dat += "<a href='?src=[REF(src)];log_out=1'>Log Out</a><br>"
if(emagged) if(emagged)
dat += "<font color='#FF0000'>WARNING: Logging functionality partially disabled from outside source.</font><br>" dat += "<font color='#FF0000'>WARNING: Logging functionality partially disabled from outside source.</font><br>"
dat += "<a href='?src=\ref[src];restore_logging=1'>Restore logging functionality?</a><br>" dat += "<a href='?src=[REF(src)];restore_logging=1'>Restore logging functionality?</a><br>"
else else
if(logs.len) if(logs.len)
for(var/entry in logs) for(var/entry in logs)
@@ -81,11 +81,11 @@
else else
dat += "<i>No activity has been recorded at this time.</i><br>" dat += "<i>No activity has been recorded at this time.</i><br>"
if(emagged) if(emagged)
dat += "<a href='?src=\ref[src];clear_logs=1'><font color='#FF0000'>@#%! CLEAR LOGS</a>" dat += "<a href='?src=[REF(src)];clear_logs=1'><font color='#FF0000'>@#%! CLEAR LOGS</a>"
dat += "<a href='?src=\ref[src];check_apcs=1'>Return</a>" dat += "<a href='?src=[REF(src)];check_apcs=1'>Return</a>"
operator = user operator = user
else else
dat = "<a href='?src=\ref[src];authenticate=1'>Please swipe a valid ID to log in...</a>" dat = "<a href='?src=[REF(src)];authenticate=1'>Please swipe a valid ID to log in...</a>"
var/datum/browser/popup = new(user, "apc_control", name, 600, 400) var/datum/browser/popup = new(user, "apc_control", name, 600, 400)
popup.set_content(dat) popup.set_content(dat)
popup.set_title_image(user.browse_rsc_icon(icon, icon_state)) popup.set_title_image(user.browse_rsc_icon(icon, icon_state))
@@ -153,7 +153,7 @@
return return
log_activity("changed name filter to \"[new_filter]\"") log_activity("changed name filter to \"[new_filter]\"")
playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0)
filters["Name"] = new_filter result_filters["Name"] = new_filter
if(href_list["above_filter"]) if(href_list["above_filter"])
playsound(src, 'sound/machines/terminal_prompt.ogg', 50, 0) playsound(src, 'sound/machines/terminal_prompt.ogg', 50, 0)
var/new_filter = input(usr, "Enter a percentage from 1-100 to sort by (greater than).", name) as null|num var/new_filter = input(usr, "Enter a percentage from 1-100 to sort by (greater than).", name) as null|num
@@ -163,7 +163,7 @@
if(new_filter) if(new_filter)
new_filter = Clamp(new_filter, 0, 100) new_filter = Clamp(new_filter, 0, 100)
playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0)
filters["Charge Above"] = new_filter result_filters["Charge Above"] = new_filter
if(href_list["below_filter"]) if(href_list["below_filter"])
playsound(src, 'sound/machines/terminal_prompt.ogg', 50, 0) playsound(src, 'sound/machines/terminal_prompt.ogg', 50, 0)
var/new_filter = input(usr, "Enter a percentage from 1-100 to sort by (lesser than).", name) as null|num var/new_filter = input(usr, "Enter a percentage from 1-100 to sort by (lesser than).", name) as null|num
@@ -173,13 +173,13 @@
if(new_filter) if(new_filter)
new_filter = Clamp(new_filter, 0, 100) new_filter = Clamp(new_filter, 0, 100)
playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0)
filters["Charge Below"] = new_filter result_filters["Charge Below"] = new_filter
if(href_list["access_filter"]) if(href_list["access_filter"])
if(isnull(filters["Responsive"])) if(isnull(result_filters["Responsive"]))
filters["Responsive"] = 1 result_filters["Responsive"] = 1
log_activity("sorted by non-responsive APCs only") log_activity("sorted by non-responsive APCs only")
else else
filters["Responsive"] = !filters["Responsive"] result_filters["Responsive"] = !result_filters["Responsive"]
log_activity("sorted by all APCs") log_activity("sorted by all APCs")
playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0)
if(href_list["check_logs"]) if(href_list["check_logs"])

View File

@@ -134,18 +134,18 @@
if(..()) if(..())
return return
user.set_machine(src) user.set_machine(src)
var/dat = "<a href='byond://?src=\ref[src];close=1'>Close</a>" var/dat = "<a href='byond://?src=[REF(src)];close=1'>Close</a>"
dat += "<center><h4>[enemy_name]</h4></center>" dat += "<center><h4>[enemy_name]</h4></center>"
dat += "<br><center><h3>[temp]</h3></center>" dat += "<br><center><h3>[temp]</h3></center>"
dat += "<br><center>Health: [player_hp] | Magic: [player_mp] | Enemy Health: [enemy_hp]</center>" dat += "<br><center>Health: [player_hp] | Magic: [player_mp] | Enemy Health: [enemy_hp]</center>"
if (gameover) if (gameover)
dat += "<center><b><a href='byond://?src=\ref[src];newgame=1'>New Game</a>" dat += "<center><b><a href='byond://?src=[REF(src)];newgame=1'>New Game</a>"
else else
dat += "<center><b><a href='byond://?src=\ref[src];attack=1'>Attack</a> | " dat += "<center><b><a href='byond://?src=[REF(src)];attack=1'>Attack</a> | "
dat += "<a href='byond://?src=\ref[src];heal=1'>Heal</a> | " dat += "<a href='byond://?src=[REF(src)];heal=1'>Heal</a> | "
dat += "<a href='byond://?src=\ref[src];charge=1'>Recharge Power</a>" dat += "<a href='byond://?src=[REF(src)];charge=1'>Recharge Power</a>"
dat += "</b></center>" dat += "</b></center>"
var/datum/browser/popup = new(user, "arcade", "Space Villian 2000") var/datum/browser/popup = new(user, "arcade", "Space Villian 2000")
@@ -439,7 +439,7 @@
name = "The Orion Trail" name = "The Orion Trail"
desc = "Learn how our ancestors got to Orion, and have fun in the process!" desc = "Learn how our ancestors got to Orion, and have fun in the process!"
dat += "<P ALIGN=Right><a href='byond://?src=\ref[src];menu=1'>May They Rest In Peace</a></P>" dat += "<P ALIGN=Right><a href='byond://?src=[REF(src)];menu=1'>May They Rest In Peace</a></P>"
else if(event) else if(event)
dat = eventdat dat = eventdat
else if(gameStatus == ORION_STATUS_NORMAL) else if(gameStatus == ORION_STATUS_NORMAL)
@@ -452,16 +452,16 @@
dat += "<br><b>Food: </b>[food] | <b>Fuel: </b>[fuel]" dat += "<br><b>Food: </b>[food] | <b>Fuel: </b>[fuel]"
dat += "<br><b>Engine Parts: </b>[engine] | <b>Hull Panels: </b>[hull] | <b>Electronics: </b>[electronics]" dat += "<br><b>Engine Parts: </b>[engine] | <b>Hull Panels: </b>[hull] | <b>Electronics: </b>[electronics]"
if(turns == 7) if(turns == 7)
dat += "<P ALIGN=Right><a href='byond://?src=\ref[src];pastblack=1'>Go Around</a> <a href='byond://?src=\ref[src];blackhole=1'>Continue</a></P>" dat += "<P ALIGN=Right><a href='byond://?src=[REF(src)];pastblack=1'>Go Around</a> <a href='byond://?src=[REF(src)];blackhole=1'>Continue</a></P>"
else else
dat += "<P ALIGN=Right><a href='byond://?src=\ref[src];continue=1'>Continue</a></P>" dat += "<P ALIGN=Right><a href='byond://?src=[REF(src)];continue=1'>Continue</a></P>"
dat += "<P ALIGN=Right><a href='byond://?src=\ref[src];killcrew=1'>Kill a Crewmember</a></P>" dat += "<P ALIGN=Right><a href='byond://?src=[REF(src)];killcrew=1'>Kill a Crewmember</a></P>"
dat += "<P ALIGN=Right><a href='byond://?src=\ref[src];close=1'>Close</a></P>" dat += "<P ALIGN=Right><a href='byond://?src=[REF(src)];close=1'>Close</a></P>"
else else
dat = "<center><h2>The Orion Trail</h2></center>" dat = "<center><h2>The Orion Trail</h2></center>"
dat += "<br><center><h3>Experience the journey of your ancestors!</h3></center><br><br>" dat += "<br><center><h3>Experience the journey of your ancestors!</h3></center><br><br>"
dat += "<center><b><a href='byond://?src=\ref[src];newgame=1'>New Game</a></b></center>" dat += "<center><b><a href='byond://?src=[REF(src)];newgame=1'>New Game</a></b></center>"
dat += "<P ALIGN=Right><a href='byond://?src=\ref[src];close=1'>Close</a></P>" dat += "<P ALIGN=Right><a href='byond://?src=[REF(src)];close=1'>Close</a></P>"
var/datum/browser/popup = new(user, "arcade", "The Orion Trail",400,700) var/datum/browser/popup = new(user, "arcade", "The Orion Trail",400,700)
popup.set_content(dat) popup.set_content(dat)
popup.set_title_image(user.browse_rsc_icon(icon, icon_state)) popup.set_title_image(user.browse_rsc_icon(icon, icon_state))
@@ -769,41 +769,41 @@
eventdat += "<br>[deadname] tried to fight back, but was killed." eventdat += "<br>[deadname] tried to fight back, but was killed."
else else
eventdat += "<br>Fortunately, you fended them off without any trouble." eventdat += "<br>Fortunately, you fended them off without any trouble."
eventdat += "<P ALIGN=Right><a href='byond://?src=\ref[src];eventclose=1'>Continue</a></P>" eventdat += "<P ALIGN=Right><a href='byond://?src=[REF(src)];eventclose=1'>Continue</a></P>"
eventdat += "<P ALIGN=Right><a href='byond://?src=\ref[src];close=1'>Close</a></P>" eventdat += "<P ALIGN=Right><a href='byond://?src=[REF(src)];close=1'>Close</a></P>"
canContinueEvent = 1 canContinueEvent = 1
if(ORION_TRAIL_FLUX) if(ORION_TRAIL_FLUX)
eventdat += "This region of space is highly turbulent. <br>If we go slowly we may avoid more damage, but if we keep our speed we won't waste supplies." eventdat += "This region of space is highly turbulent. <br>If we go slowly we may avoid more damage, but if we keep our speed we won't waste supplies."
eventdat += "<br>What will you do?" eventdat += "<br>What will you do?"
eventdat += "<P ALIGN=Right><a href='byond://?src=\ref[src];slow=1'>Slow Down</a> <a href='byond://?src=\ref[src];keepspeed=1'>Continue</a></P>" eventdat += "<P ALIGN=Right><a href='byond://?src=[REF(src)];slow=1'>Slow Down</a> <a href='byond://?src=[REF(src)];keepspeed=1'>Continue</a></P>"
eventdat += "<P ALIGN=Right><a href='byond://?src=\ref[src];close=1'>Close</a></P>" eventdat += "<P ALIGN=Right><a href='byond://?src=[REF(src)];close=1'>Close</a></P>"
if(ORION_TRAIL_ILLNESS) if(ORION_TRAIL_ILLNESS)
eventdat += "A deadly illness has been contracted!" eventdat += "A deadly illness has been contracted!"
var/deadname = remove_crewmember() var/deadname = remove_crewmember()
eventdat += "<br>[deadname] was killed by the disease." eventdat += "<br>[deadname] was killed by the disease."
eventdat += "<P ALIGN=Right><a href='byond://?src=\ref[src];eventclose=1'>Continue</a></P>" eventdat += "<P ALIGN=Right><a href='byond://?src=[REF(src)];eventclose=1'>Continue</a></P>"
eventdat += "<P ALIGN=Right><a href='byond://?src=\ref[src];close=1'>Close</a></P>" eventdat += "<P ALIGN=Right><a href='byond://?src=[REF(src)];close=1'>Close</a></P>"
canContinueEvent = 1 canContinueEvent = 1
if(ORION_TRAIL_BREAKDOWN) if(ORION_TRAIL_BREAKDOWN)
eventdat += "Oh no! The engine has broken down!" eventdat += "Oh no! The engine has broken down!"
eventdat += "<br>You can repair it with an engine part, or you can make repairs for 3 days." eventdat += "<br>You can repair it with an engine part, or you can make repairs for 3 days."
if(engine >= 1) if(engine >= 1)
eventdat += "<P ALIGN=Right><a href='byond://?src=\ref[src];useengine=1'>Use Part</a><a href='byond://?src=\ref[src];wait=1'>Wait</a></P>" eventdat += "<P ALIGN=Right><a href='byond://?src=[REF(src)];useengine=1'>Use Part</a><a href='byond://?src=[REF(src)];wait=1'>Wait</a></P>"
else else
eventdat += "<P ALIGN=Right><a href='byond://?src=\ref[src];wait=1'>Wait</a></P>" eventdat += "<P ALIGN=Right><a href='byond://?src=[REF(src)];wait=1'>Wait</a></P>"
eventdat += "<P ALIGN=Right><a href='byond://?src=\ref[src];close=1'>Close</a></P>" eventdat += "<P ALIGN=Right><a href='byond://?src=[REF(src)];close=1'>Close</a></P>"
if(ORION_TRAIL_MALFUNCTION) if(ORION_TRAIL_MALFUNCTION)
eventdat += "The ship's systems are malfunctioning!" eventdat += "The ship's systems are malfunctioning!"
eventdat += "<br>You can replace the broken electronics with spares, or you can spend 3 days troubleshooting the AI." eventdat += "<br>You can replace the broken electronics with spares, or you can spend 3 days troubleshooting the AI."
if(electronics >= 1) if(electronics >= 1)
eventdat += "<P ALIGN=Right><a href='byond://?src=\ref[src];useelec=1'>Use Part</a><a href='byond://?src=\ref[src];wait=1'>Wait</a></P>" eventdat += "<P ALIGN=Right><a href='byond://?src=[REF(src)];useelec=1'>Use Part</a><a href='byond://?src=[REF(src)];wait=1'>Wait</a></P>"
else else
eventdat += "<P ALIGN=Right><a href='byond://?src=\ref[src];wait=1'>Wait</a></P>" eventdat += "<P ALIGN=Right><a href='byond://?src=[REF(src)];wait=1'>Wait</a></P>"
eventdat += "<P ALIGN=Right><a href='byond://?src=\ref[src];close=1'>Close</a></P>" eventdat += "<P ALIGN=Right><a href='byond://?src=[REF(src)];close=1'>Close</a></P>"
if(ORION_TRAIL_COLLISION) if(ORION_TRAIL_COLLISION)
eventdat += "Something hit us! Looks like there's some hull damage." eventdat += "Something hit us! Looks like there's some hull damage."
@@ -818,23 +818,23 @@
eventdat += "<br>[deadname] was killed by rapid depressurization." eventdat += "<br>[deadname] was killed by rapid depressurization."
eventdat += "<br>You can repair the damage with hull plates, or you can spend the next 3 days welding scrap together." eventdat += "<br>You can repair the damage with hull plates, or you can spend the next 3 days welding scrap together."
if(hull >= 1) if(hull >= 1)
eventdat += "<P ALIGN=Right><a href='byond://?src=\ref[src];usehull=1'>Use Part</a><a href='byond://?src=\ref[src];wait=1'>Wait</a></P>" eventdat += "<P ALIGN=Right><a href='byond://?src=[REF(src)];usehull=1'>Use Part</a><a href='byond://?src=[REF(src)];wait=1'>Wait</a></P>"
else else
eventdat += "<P ALIGN=Right><a href='byond://?src=\ref[src];wait=1'>Wait</a></P>" eventdat += "<P ALIGN=Right><a href='byond://?src=[REF(src)];wait=1'>Wait</a></P>"
eventdat += "<P ALIGN=Right><a href='byond://?src=\ref[src];close=1'>Close</a></P>" eventdat += "<P ALIGN=Right><a href='byond://?src=[REF(src)];close=1'>Close</a></P>"
if(ORION_TRAIL_BLACKHOLE) if(ORION_TRAIL_BLACKHOLE)
eventdat += "You were swept away into the black hole." eventdat += "You were swept away into the black hole."
eventdat += "<P ALIGN=Right><a href='byond://?src=\ref[src];holedeath=1'>Oh...</a></P>" eventdat += "<P ALIGN=Right><a href='byond://?src=[REF(src)];holedeath=1'>Oh...</a></P>"
eventdat += "<P ALIGN=Right><a href='byond://?src=\ref[src];close=1'>Close</a></P>" eventdat += "<P ALIGN=Right><a href='byond://?src=[REF(src)];close=1'>Close</a></P>"
settlers = list() settlers = list()
if(ORION_TRAIL_LING) if(ORION_TRAIL_LING)
eventdat += "Strange reports warn of changelings infiltrating crews on trips to Orion..." eventdat += "Strange reports warn of changelings infiltrating crews on trips to Orion..."
if(settlers.len <= 2) if(settlers.len <= 2)
eventdat += "<br>Your crew's chance of reaching Orion is so slim the changelings likely avoided your ship..." eventdat += "<br>Your crew's chance of reaching Orion is so slim the changelings likely avoided your ship..."
eventdat += "<P ALIGN=Right><a href='byond://?src=\ref[src];eventclose=1'>Continue</a></P>" eventdat += "<P ALIGN=Right><a href='byond://?src=[REF(src)];eventclose=1'>Continue</a></P>"
eventdat += "<P ALIGN=Right><a href='byond://?src=\ref[src];close=1'>Close</a></P>" eventdat += "<P ALIGN=Right><a href='byond://?src=[REF(src)];close=1'>Close</a></P>"
if(prob(10)) // "likely", I didn't say it was guaranteed! if(prob(10)) // "likely", I didn't say it was guaranteed!
lings_aboard = min(++lings_aboard,2) lings_aboard = min(++lings_aboard,2)
else else
@@ -844,9 +844,9 @@
else if(prob(70)) else if(prob(70))
lings_aboard = min(++lings_aboard,2) lings_aboard = min(++lings_aboard,2)
eventdat += "<P ALIGN=Right><a href='byond://?src=\ref[src];killcrew=1'>Kill a Crewmember</a></P>" eventdat += "<P ALIGN=Right><a href='byond://?src=[REF(src)];killcrew=1'>Kill a Crewmember</a></P>"
eventdat += "<P ALIGN=Right><a href='byond://?src=\ref[src];eventclose=1'>Risk it</a></P>" eventdat += "<P ALIGN=Right><a href='byond://?src=[REF(src)];eventclose=1'>Risk it</a></P>"
eventdat += "<P ALIGN=Right><a href='byond://?src=\ref[src];close=1'>Close</a></P>" eventdat += "<P ALIGN=Right><a href='byond://?src=[REF(src)];close=1'>Close</a></P>"
canContinueEvent = 1 canContinueEvent = 1
if(ORION_TRAIL_LING_ATTACK) if(ORION_TRAIL_LING_ATTACK)
@@ -892,8 +892,8 @@
else else
lings_aboard = max(0,--lings_aboard) lings_aboard = max(0,--lings_aboard)
eventdat += "<P ALIGN=Right><a href='byond://?src=\ref[src];eventclose=1'>Continue</a></P>" eventdat += "<P ALIGN=Right><a href='byond://?src=[REF(src)];eventclose=1'>Continue</a></P>"
eventdat += "<P ALIGN=Right><a href='byond://?src=\ref[src];close=1'>Close</a></P>" eventdat += "<P ALIGN=Right><a href='byond://?src=[REF(src)];close=1'>Close</a></P>"
canContinueEvent = 1 canContinueEvent = 1
@@ -903,8 +903,8 @@
eventdat += "The spaceport is on high alert! You've been barred from docking by the local authorities after your failed raid." eventdat += "The spaceport is on high alert! You've been barred from docking by the local authorities after your failed raid."
if(last_spaceport_action) if(last_spaceport_action)
eventdat += "<br><b>Last Spaceport Action:</b> [last_spaceport_action]" eventdat += "<br><b>Last Spaceport Action:</b> [last_spaceport_action]"
eventdat += "<P ALIGN=Right><a href='byond://?src=\ref[src];leave_spaceport=1'>Depart Spaceport</a></P>" eventdat += "<P ALIGN=Right><a href='byond://?src=[REF(src)];leave_spaceport=1'>Depart Spaceport</a></P>"
eventdat += "<P ALIGN=Right><a href='byond://?src=\ref[src];close=1'>Close</a></P>" eventdat += "<P ALIGN=Right><a href='byond://?src=[REF(src)];close=1'>Close</a></P>"
else else
eventdat += "Your jump into the sector yields a spaceport - a lucky find!" eventdat += "Your jump into the sector yields a spaceport - a lucky find!"
eventdat += "<br>This spaceport is home to travellers who failed to reach Orion, but managed to find a different home..." eventdat += "<br>This spaceport is home to travellers who failed to reach Orion, but managed to find a different home..."
@@ -943,13 +943,13 @@
//Buy crew //Buy crew
if(food >= 10 && fuel >= 10) if(food >= 10 && fuel >= 10)
eventdat += "<P ALIGN=Right><a href='byond://?src=\ref[src];buycrew=1'>Hire a New Crewmember (-10FU, -10FO)</a></P>" eventdat += "<P ALIGN=Right><a href='byond://?src=[REF(src)];buycrew=1'>Hire a New Crewmember (-10FU, -10FO)</a></P>"
else else
eventdat += "<P ALIGN=Right>You cannot afford a new crewmember.</P>" eventdat += "<P ALIGN=Right>You cannot afford a new crewmember.</P>"
//Sell crew //Sell crew
if(settlers.len > 1) if(settlers.len > 1)
eventdat += "<P ALIGN=Right><a href='byond://?src=\ref[src];sellcrew=1'>Sell Crew for Fuel and Food (+7FU, +7FO)</a></P>" eventdat += "<P ALIGN=Right><a href='byond://?src=[REF(src)];sellcrew=1'>Sell Crew for Fuel and Food (+7FU, +7FO)</a></P>"
else else
eventdat += "<P ALIGN=Right>You have no other crew to sell.</P>" eventdat += "<P ALIGN=Right>You have no other crew to sell.</P>"
@@ -958,37 +958,37 @@
//Engine parts //Engine parts
if(fuel > 5) if(fuel > 5)
eventdat += "<P ALIGN=Right><a href='byond://?src=\ref[src];buyparts=1'>Buy Engine Parts (-5FU)</a></P>" eventdat += "<P ALIGN=Right><a href='byond://?src=[REF(src)];buyparts=1'>Buy Engine Parts (-5FU)</a></P>"
else else
eventdat += "<P ALIGN=Right>You cannot afford engine parts.</a>" eventdat += "<P ALIGN=Right>You cannot afford engine parts.</a>"
//Hull plates //Hull plates
if(fuel > 5) if(fuel > 5)
eventdat += "<P ALIGN=Right><a href='byond://?src=\ref[src];buyparts=2'>Buy Hull Plates (-5FU)</a></P>" eventdat += "<P ALIGN=Right><a href='byond://?src=[REF(src)];buyparts=2'>Buy Hull Plates (-5FU)</a></P>"
else else
eventdat += "<P ALIGN=Right>You cannot afford hull plates.</a>" eventdat += "<P ALIGN=Right>You cannot afford hull plates.</a>"
//Electronics //Electronics
if(fuel > 5) if(fuel > 5)
eventdat += "<P ALIGN=Right><a href='byond://?src=\ref[src];buyparts=3'>Buy Spare Electronics (-5FU)</a></P>" eventdat += "<P ALIGN=Right><a href='byond://?src=[REF(src)];buyparts=3'>Buy Spare Electronics (-5FU)</a></P>"
else else
eventdat += "<P ALIGN=Right>You cannot afford spare electronics.</a>" eventdat += "<P ALIGN=Right>You cannot afford spare electronics.</a>"
//Trade //Trade
if(fuel > 5) if(fuel > 5)
eventdat += "<P ALIGN=Right><a href='byond://?src=\ref[src];trade=1'>Trade Fuel for Food (-5FU,+5FO)</a></P>" eventdat += "<P ALIGN=Right><a href='byond://?src=[REF(src)];trade=1'>Trade Fuel for Food (-5FU,+5FO)</a></P>"
else else
eventdat += "<P ALIGN=Right>You don't have 5FU to trade.</P" eventdat += "<P ALIGN=Right>You don't have 5FU to trade.</P"
if(food > 5) if(food > 5)
eventdat += "<P ALIGN=Right><a href='byond://?src=\ref[src];trade=2'>Trade Food for Fuel (+5FU,-5FO)</a></P>" eventdat += "<P ALIGN=Right><a href='byond://?src=[REF(src)];trade=2'>Trade Food for Fuel (+5FU,-5FO)</a></P>"
else else
eventdat += "<P ALIGN=Right>You don't have 5FO to trade.</P" eventdat += "<P ALIGN=Right>You don't have 5FO to trade.</P"
//Raid the spaceport //Raid the spaceport
eventdat += "<P ALIGN=Right><a href='byond://?src=\ref[src];raid_spaceport=1'>!! Raid Spaceport !!</a></P>" eventdat += "<P ALIGN=Right><a href='byond://?src=[REF(src)];raid_spaceport=1'>!! Raid Spaceport !!</a></P>"
eventdat += "<P ALIGN=Right><a href='byond://?src=\ref[src];leave_spaceport=1'>Depart Spaceport</a></P>" eventdat += "<P ALIGN=Right><a href='byond://?src=[REF(src)];leave_spaceport=1'>Depart Spaceport</a></P>"
//Add Random/Specific crewmember //Add Random/Specific crewmember

View File

@@ -145,18 +145,18 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
var/crew = "" var/crew = ""
for(var/datum/data/record/t in sortRecord(GLOB.data_core.general)) for(var/datum/data/record/t in sortRecord(GLOB.data_core.general))
crew += t.fields["name"] + " - " + t.fields["rank"] + "<br>" crew += t.fields["name"] + " - " + t.fields["rank"] + "<br>"
dat = "<tt><b>Crew Manifest:</b><br>Please use security record computer to modify entries.<br><br>[crew]<a href='?src=\ref[src];choice=print'>Print</a><br><br><a href='?src=\ref[src];choice=mode;mode_target=0'>Access ID modification console.</a><br></tt>" dat = "<tt><b>Crew Manifest:</b><br>Please use security record computer to modify entries.<br><br>[crew]<a href='?src=[REF(src)];choice=print'>Print</a><br><br><a href='?src=[REF(src)];choice=mode;mode_target=0'>Access ID modification console.</a><br></tt>"
else if(mode == 2) else if(mode == 2)
// JOB MANAGEMENT // JOB MANAGEMENT
dat = "<a href='?src=\ref[src];choice=return'>Return</a>" dat = "<a href='?src=[REF(src)];choice=return'>Return</a>"
dat += " || Confirm Identity: " dat += " || Confirm Identity: "
var/S var/S
if(scan) if(scan)
S = html_encode(scan.name) S = html_encode(scan.name)
else else
S = "--------" S = "--------"
dat += "<a href='?src=\ref[src];choice=scan'>[S]</a>" dat += "<a href='?src=[REF(src)];choice=scan'>[S]</a>"
dat += "<table>" dat += "<table>"
dat += "<tr><td style='width:25%'><b>Job</b></td><td style='width:25%'><b>Slots</b></td><td style='width:25%'><b>Open job</b></td><td style='width:25%'><b>Close job</b><td style='width:25%'><b>Prioritize</b></td></td></tr>" dat += "<tr><td style='width:25%'><b>Job</b></td><td style='width:25%'><b>Slots</b></td><td style='width:25%'><b>Open job</b></td><td style='width:25%'><b>Close job</b><td style='width:25%'><b>Prioritize</b></td></td></tr>"
var/ID var/ID
@@ -174,7 +174,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
switch(can_open_job(job)) switch(can_open_job(job))
if(1) if(1)
if(ID) if(ID)
dat += "<a href='?src=\ref[src];choice=make_job_available;job=[job.title]'>Open Position</a><br>" dat += "<a href='?src=[REF(src)];choice=make_job_available;job=[job.title]'>Open Position</a><br>"
else else
dat += "Open Position" dat += "Open Position"
if(-1) if(-1)
@@ -190,7 +190,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
switch(can_close_job(job)) switch(can_close_job(job))
if(1) if(1)
if(ID) if(ID)
dat += "<a href='?src=\ref[src];choice=make_job_unavailable;job=[job.title]'>Close Position</a>" dat += "<a href='?src=[REF(src)];choice=make_job_unavailable;job=[job.title]'>Close Position</a>"
else else
dat += "Close Position" dat += "Close Position"
if(-1) if(-1)
@@ -209,10 +209,10 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
else else
if(ID) if(ID)
if(job in SSjob.prioritized_jobs) if(job in SSjob.prioritized_jobs)
dat += "<a href='?src=\ref[src];choice=prioritize_job;job=[job.title]'>Deprioritize</a>" dat += "<a href='?src=[REF(src)];choice=prioritize_job;job=[job.title]'>Deprioritize</a>"
else else
if(SSjob.prioritized_jobs.len < 5) if(SSjob.prioritized_jobs.len < 5)
dat += "<a href='?src=\ref[src];choice=prioritize_job;job=[job.title]'>Prioritize</a>" dat += "<a href='?src=[REF(src)];choice=prioritize_job;job=[job.title]'>Prioritize</a>"
else else
dat += "Denied" dat += "Denied"
else else
@@ -247,14 +247,14 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
if(!authenticated) if(!authenticated)
header += "<br><i>Please insert the cards into the slots</i><br>" header += "<br><i>Please insert the cards into the slots</i><br>"
header += "Target: <a href='?src=\ref[src];choice=modify'>[target_name]</a><br>" header += "Target: <a href='?src=[REF(src)];choice=modify'>[target_name]</a><br>"
header += "Confirm Identity: <a href='?src=\ref[src];choice=scan'>[scan_name]</a><br>" header += "Confirm Identity: <a href='?src=[REF(src)];choice=scan'>[scan_name]</a><br>"
else else
header += "<div align='center'><br>" header += "<div align='center'><br>"
header += "<a href='?src=\ref[src];choice=modify'>Remove [target_name]</a> || " header += "<a href='?src=[REF(src)];choice=modify'>Remove [target_name]</a> || "
header += "<a href='?src=\ref[src];choice=scan'>Remove [scan_name]</a> <br> " header += "<a href='?src=[REF(src)];choice=scan'>Remove [scan_name]</a> <br> "
header += "<a href='?src=\ref[src];choice=mode;mode_target=1'>Access Crew Manifest</a> <br> " header += "<a href='?src=[REF(src)];choice=mode;mode_target=1'>Access Crew Manifest</a> <br> "
header += "<a href='?src=\ref[src];choice=logout'>Log Out</a></div>" header += "<a href='?src=[REF(src)];choice=logout'>Log Out</a></div>"
header += "<hr>" header += "<hr>"
@@ -262,7 +262,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
var/list/alljobs = list("Unassigned") var/list/alljobs = list("Unassigned")
alljobs += (istype(src, /obj/machinery/computer/card/centcom)? get_all_centcom_jobs() : get_all_jobs()) + "Custom" alljobs += (istype(src, /obj/machinery/computer/card/centcom)? get_all_centcom_jobs() : get_all_jobs()) + "Custom"
for(var/job in alljobs) for(var/job in alljobs)
jobs_all += "<a href='?src=\ref[src];choice=assign;assign_target=[job]'>[replacetext(job, " ", "&nbsp")]</a> " //make sure there isn't a line break in the middle of a job jobs_all += "<a href='?src=[REF(src)];choice=assign;assign_target=[job]'>[replacetext(job, " ", "&nbsp")]</a> " //make sure there isn't a line break in the middle of a job
var/body var/body
@@ -290,8 +290,8 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
allJobsSlot.innerHTML = "<a href='#' onclick='showAll()'>show</a>"; allJobsSlot.innerHTML = "<a href='#' onclick='showAll()'>show</a>";
} }
</script>"} </script>"}
carddesc += "<form name='cardcomp' action='?src=\ref[src]' method='get'>" carddesc += "<form name='cardcomp' action='?src=[REF(src)]' method='get'>"
carddesc += "<input type='hidden' name='src' value='\ref[src]'>" carddesc += "<input type='hidden' name='src' value='[REF(src)]'>"
carddesc += "<input type='hidden' name='choice' value='reg'>" carddesc += "<input type='hidden' name='choice' value='reg'>"
carddesc += "<b>registered name:</b> <input type='text' id='namefield' name='reg' value='[target_owner]' style='width:250px; background-color:white;' onchange='markRed()'>" carddesc += "<b>registered name:</b> <input type='text' id='namefield' name='reg' value='[target_owner]' style='width:250px; background-color:white;' onchange='markRed()'>"
carddesc += "<input type='submit' value='Rename' onclick='markGreen()'>" carddesc += "<input type='submit' value='Rename' onclick='markGreen()'>"
@@ -302,16 +302,16 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
else else
carddesc += "<b>registered_name:</b> [target_owner]</span>" carddesc += "<b>registered_name:</b> [target_owner]</span>"
jobs += "<b>Assignment:</b> [target_rank] (<a href='?src=\ref[src];choice=demote'>Demote</a>)</span>" jobs += "<b>Assignment:</b> [target_rank] (<a href='?src=[REF(src)];choice=demote'>Demote</a>)</span>"
var/accesses = "" var/accesses = ""
if(istype(src, /obj/machinery/computer/card/centcom)) if(istype(src, /obj/machinery/computer/card/centcom))
accesses += "<h5>Central Command:</h5>" accesses += "<h5>Central Command:</h5>"
for(var/A in get_all_centcom_access()) for(var/A in get_all_centcom_access())
if(A in modify.access) if(A in modify.access)
accesses += "<a href='?src=\ref[src];choice=access;access_target=[A];allowed=0'><font color=\"red\">[replacetext(get_centcom_access_desc(A), " ", "&nbsp")]</font></a> " accesses += "<a href='?src=[REF(src)];choice=access;access_target=[A];allowed=0'><font color=\"red\">[replacetext(get_centcom_access_desc(A), " ", "&nbsp")]</font></a> "
else else
accesses += "<a href='?src=\ref[src];choice=access;access_target=[A];allowed=1'>[replacetext(get_centcom_access_desc(A), " ", "&nbsp")]</a> " accesses += "<a href='?src=[REF(src)];choice=access;access_target=[A];allowed=1'>[replacetext(get_centcom_access_desc(A), " ", "&nbsp")]</a> "
else else
accesses += "<div align='center'><b>Access</b></div>" accesses += "<div align='center'><b>Access</b></div>"
accesses += "<table style='width:100%'>" accesses += "<table style='width:100%'>"
@@ -327,19 +327,19 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
accesses += "<td style='width:14%' valign='top'>" accesses += "<td style='width:14%' valign='top'>"
for(var/A in get_region_accesses(i)) for(var/A in get_region_accesses(i))
if(A in modify.access) if(A in modify.access)
accesses += "<a href='?src=\ref[src];choice=access;access_target=[A];allowed=0'><font color=\"red\">[replacetext(get_access_desc(A), " ", "&nbsp")]</font></a> " accesses += "<a href='?src=[REF(src)];choice=access;access_target=[A];allowed=0'><font color=\"red\">[replacetext(get_access_desc(A), " ", "&nbsp")]</font></a> "
else else
accesses += "<a href='?src=\ref[src];choice=access;access_target=[A];allowed=1'>[replacetext(get_access_desc(A), " ", "&nbsp")]</a> " accesses += "<a href='?src=[REF(src)];choice=access;access_target=[A];allowed=1'>[replacetext(get_access_desc(A), " ", "&nbsp")]</a> "
accesses += "<br>" accesses += "<br>"
accesses += "</td>" accesses += "</td>"
accesses += "</tr></table>" accesses += "</tr></table>"
body = "[carddesc]<br>[jobs]<br><br>[accesses]" //CHECK THIS body = "[carddesc]<br>[jobs]<br><br>[accesses]" //CHECK THIS
else else
body = "<a href='?src=\ref[src];choice=auth'>{Log in}</a> <br><hr>" body = "<a href='?src=[REF(src)];choice=auth'>{Log in}</a> <br><hr>"
body += "<a href='?src=\ref[src];choice=mode;mode_target=1'>Access Crew Manifest</a>" body += "<a href='?src=[REF(src)];choice=mode;mode_target=1'>Access Crew Manifest</a>"
if(!target_dept) if(!target_dept)
body += "<br><hr><a href = '?src=\ref[src];choice=mode;mode_target=2'>Job Management</a>" body += "<br><hr><a href = '?src=[REF(src)];choice=mode;mode_target=2'>Job Management</a>"
dat = "<tt>[header][body]<hr><br></tt>" dat = "<tt>[header][body]<hr><br></tt>"
var/datum/browser/popup = new(user, "id_com", src.name, 900, 620) var/datum/browser/popup = new(user, "id_com", src.name, 900, 620)

View File

@@ -138,7 +138,7 @@
AttachCloner(pod) AttachCloner(pod)
else else
P.buffer = src P.buffer = src
to_chat(user, "<font color = #666633>-% Successfully stored \ref[P.buffer] [P.buffer.name] in buffer %-</font color>") to_chat(user, "<font color = #666633>-% Successfully stored [REF(P.buffer)] [P.buffer.name] in buffer %-</font color>")
return return
else else
return ..() return ..()
@@ -158,13 +158,13 @@
updatemodules(TRUE) updatemodules(TRUE)
var/dat = "" var/dat = ""
dat += "<a href='byond://?src=\ref[src];refresh=1'>Refresh</a>" dat += "<a href='byond://?src=[REF(src)];refresh=1'>Refresh</a>"
if(scanner && HasEfficientPod() && scanner.scan_level > 2) if(scanner && HasEfficientPod() && scanner.scan_level > 2)
if(!autoprocess) if(!autoprocess)
dat += "<a href='byond://?src=\ref[src];task=autoprocess'>Autoprocess</a>" dat += "<a href='byond://?src=[REF(src)];task=autoprocess'>Autoprocess</a>"
else else
dat += "<a href='byond://?src=\ref[src];task=stopautoprocess'>Stop autoprocess</a>" dat += "<a href='byond://?src=[REF(src)];task=stopautoprocess'>Stop autoprocess</a>"
else else
dat += "<span class='linkOff'>Autoprocess</span>" dat += "<span class='linkOff'>Autoprocess</span>"
dat += "<h3>Cloning Pod Status</h3>" dat += "<h3>Cloning Pod Status</h3>"
@@ -175,7 +175,7 @@
// Modules // Modules
if (isnull(src.scanner) || !LAZYLEN(pods)) if (isnull(src.scanner) || !LAZYLEN(pods))
dat += "<h3>Modules</h3>" dat += "<h3>Modules</h3>"
//dat += "<a href='byond://?src=\ref[src];relmodules=1'>Reload Modules</a>" //dat += "<a href='byond://?src=[REF(src)];relmodules=1'>Reload Modules</a>"
if (isnull(src.scanner)) if (isnull(src.scanner))
dat += "<font class='bad'>ERROR: No Scanner detected!</font><br>" dat += "<font class='bad'>ERROR: No Scanner detected!</font><br>"
if (!LAZYLEN(pods)) if (!LAZYLEN(pods))
@@ -200,36 +200,36 @@
dat += "</div>" dat += "</div>"
if(scanner_occupant) if(scanner_occupant)
dat += "<a href='byond://?src=\ref[src];scan=1'>Start Scan</a>" dat += "<a href='byond://?src=[REF(src)];scan=1'>Start Scan</a>"
dat += "<br><a href='byond://?src=\ref[src];lock=1'>[src.scanner.locked ? "Unlock Scanner" : "Lock Scanner"]</a>" dat += "<br><a href='byond://?src=[REF(src)];lock=1'>[src.scanner.locked ? "Unlock Scanner" : "Lock Scanner"]</a>"
else else
dat += "<span class='linkOff'>Start Scan</span>" dat += "<span class='linkOff'>Start Scan</span>"
// Database // Database
dat += "<h3>Database Functions</h3>" dat += "<h3>Database Functions</h3>"
if (src.records.len && src.records.len > 0) if (src.records.len && src.records.len > 0)
dat += "<a href='byond://?src=\ref[src];menu=2'>View Records ([src.records.len])</a><br>" dat += "<a href='byond://?src=[REF(src)];menu=2'>View Records ([src.records.len])</a><br>"
else else
dat += "<span class='linkOff'>View Records (0)</span><br>" dat += "<span class='linkOff'>View Records (0)</span><br>"
if (src.diskette) if (src.diskette)
dat += "<a href='byond://?src=\ref[src];disk=eject'>Eject Disk</a><br>" dat += "<a href='byond://?src=[REF(src)];disk=eject'>Eject Disk</a><br>"
if(2) if(2)
dat += "<h3>Current records</h3>" dat += "<h3>Current records</h3>"
dat += "<a href='byond://?src=\ref[src];menu=1'><< Back</a><br><br>" dat += "<a href='byond://?src=[REF(src)];menu=1'><< Back</a><br><br>"
for(var/datum/data/record/R in records) for(var/datum/data/record/R in records)
dat += "<h4>[R.fields["name"]]</h4>Scan ID [R.fields["id"]] <a href='byond://?src=\ref[src];view_rec=[R.fields["id"]]'>View Record</a>" dat += "<h4>[R.fields["name"]]</h4>Scan ID [R.fields["id"]] <a href='byond://?src=[REF(src)];view_rec=[R.fields["id"]]'>View Record</a>"
if(3) if(3)
dat += "<h3>Selected Record</h3>" dat += "<h3>Selected Record</h3>"
dat += "<a href='byond://?src=\ref[src];menu=2'><< Back</a><br>" dat += "<a href='byond://?src=[REF(src)];menu=2'><< Back</a><br>"
if (!src.active_record) if (!src.active_record)
dat += "<font class='bad'>Record not found.</font>" dat += "<font class='bad'>Record not found.</font>"
else else
dat += "<h4>[src.active_record.fields["name"]]</h4>" dat += "<h4>[src.active_record.fields["name"]]</h4>"
dat += "Scan ID [src.active_record.fields["id"]] <a href='byond://?src=\ref[src];clone=[active_record.fields["id"]]'>Clone</a><br>" dat += "Scan ID [src.active_record.fields["id"]] <a href='byond://?src=[REF(src)];clone=[active_record.fields["id"]]'>Clone</a><br>"
var/obj/item/implant/health/H = locate(src.active_record.fields["imp"]) var/obj/item/implant/health/H = locate(src.active_record.fields["imp"])
@@ -253,12 +253,12 @@
if(diskette.fields["SE"]) if(diskette.fields["SE"])
L += "Structural Enzymes" L += "Structural Enzymes"
dat += english_list(L, "Empty", " + ", " + ") dat += english_list(L, "Empty", " + ", " + ")
dat += "<br /><a href='byond://?src=\ref[src];disk=load'>Load from Disk</a>" dat += "<br /><a href='byond://?src=[REF(src)];disk=load'>Load from Disk</a>"
dat += "<br /><a href='byond://?src=\ref[src];disk=save'>Save to Disk</a>" dat += "<br /><a href='byond://?src=[REF(src)];disk=save'>Save to Disk</a>"
dat += "</div>" dat += "</div>"
dat += "<font size=1><a href='byond://?src=\ref[src];del_rec=1'>Delete Record</a></font>" dat += "<font size=1><a href='byond://?src=[REF(src)];del_rec=1'>Delete Record</a></font>"
if(4) if(4)
if (!src.active_record) if (!src.active_record)
@@ -266,8 +266,8 @@
dat = "[src.temp]<br>" dat = "[src.temp]<br>"
dat += "<h3>Confirm Record Deletion</h3>" dat += "<h3>Confirm Record Deletion</h3>"
dat += "<b><a href='byond://?src=\ref[src];del_rec=1'>Scan card to confirm.</a></b><br>" dat += "<b><a href='byond://?src=[REF(src)];del_rec=1'>Scan card to confirm.</a></b><br>"
dat += "<b><a href='byond://?src=\ref[src];menu=3'>Cancel</a></b>" dat += "<b><a href='byond://?src=[REF(src)];menu=3'>Cancel</a></b>"
var/datum/browser/popup = new(user, "cloning", "Cloning System Control") var/datum/browser/popup = new(user, "cloning", "Cloning System Control")
@@ -484,7 +484,7 @@
R.fields["factions"] = mob_occupant.faction R.fields["factions"] = mob_occupant.faction
if (!isnull(mob_occupant.mind)) //Save that mind so traitors can continue traitoring after cloning. if (!isnull(mob_occupant.mind)) //Save that mind so traitors can continue traitoring after cloning.
R.fields["mind"] = "\ref[mob_occupant.mind]" R.fields["mind"] = "[REF(mob_occupant.mind)]"
//Add an implant if needed //Add an implant if needed
var/obj/item/implant/health/imp var/obj/item/implant/health/imp
@@ -494,7 +494,7 @@
if(!imp) if(!imp)
imp = new /obj/item/implant/health(mob_occupant) imp = new /obj/item/implant/health(mob_occupant)
imp.implant(mob_occupant) imp.implant(mob_occupant)
R.fields["imp"] = "\ref[imp]" R.fields["imp"] = "[REF(imp)]"
src.records += R src.records += R
scantemp = "Subject successfully scanned." scantemp = "Subject successfully scanned."

View File

@@ -449,33 +449,38 @@
dat += "Unable to trace most recent shuttle call/recall signal.<BR>" dat += "Unable to trace most recent shuttle call/recall signal.<BR>"
dat += "Logged in as: [auth_id]" dat += "Logged in as: [auth_id]"
dat += "<BR>" dat += "<BR>"
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=logout'>Log Out</A> \]<BR>" dat += "<BR>\[ <A HREF='?src=[REF(src)];operation=logout'>Log Out</A> \]<BR>"
dat += "<BR><B>General Functions</B>" dat += "<BR><B>General Functions</B>"
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=messagelist'>Message List</A> \]" dat += "<BR>\[ <A HREF='?src=[REF(src)];operation=messagelist'>Message List</A> \]"
switch(SSshuttle.emergency.mode) switch(SSshuttle.emergency.mode)
if(SHUTTLE_IDLE, SHUTTLE_RECALL) if(SHUTTLE_IDLE, SHUTTLE_RECALL)
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=callshuttle'>Call Emergency Shuttle</A> \]" dat += "<BR>\[ <A HREF='?src=[REF(src)];operation=callshuttle'>Call Emergency Shuttle</A> \]"
else else
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=cancelshuttle'>Cancel Shuttle Call</A> \]" dat += "<BR>\[ <A HREF='?src=[REF(src)];operation=cancelshuttle'>Cancel Shuttle Call</A> \]"
<<<<<<< HEAD
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=status'>Set Status Display</A> \]" dat += "<BR>\[ <A HREF='?src=\ref[src];operation=status'>Set Status Display</A> \]"
if (src.authenticated==2) if (src.authenticated==2)
=======
dat += "<BR>\[ <A HREF='?src=[REF(src)];operation=status'>Set Status Display</A> \]"
if (authenticated==2)
>>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental
dat += "<BR><BR><B>Captain Functions</B>" dat += "<BR><BR><B>Captain Functions</B>"
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=announce'>Make a Captain's Announcement</A> \]" dat += "<BR>\[ <A HREF='?src=[REF(src)];operation=announce'>Make a Captain's Announcement</A> \]"
if(CONFIG_GET(string/cross_server_address)) if(CONFIG_GET(string/cross_server_address))
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=crossserver'>Send a message to an allied station</A> \]" dat += "<BR>\[ <A HREF='?src=[REF(src)];operation=crossserver'>Send a message to an allied station</A> \]"
if(SSmapping.config.allow_custom_shuttles == "yes") if(SSmapping.config.allow_custom_shuttles == "yes")
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=purchase_menu'>Purchase Shuttle</A> \]" dat += "<BR>\[ <A HREF='?src=[REF(src)];operation=purchase_menu'>Purchase Shuttle</A> \]"
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=changeseclevel'>Change Alert Level</A> \]" dat += "<BR>\[ <A HREF='?src=[REF(src)];operation=changeseclevel'>Change Alert Level</A> \]"
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=emergencyaccess'>Emergency Maintenance Access</A> \]" dat += "<BR>\[ <A HREF='?src=[REF(src)];operation=emergencyaccess'>Emergency Maintenance Access</A> \]"
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=nukerequest'>Request Nuclear Authentication Codes</A> \]" dat += "<BR>\[ <A HREF='?src=[REF(src)];operation=nukerequest'>Request Nuclear Authentication Codes</A> \]"
if(!emagged) if(!emagged)
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=MessageCentCom'>Send Message to CentCom</A> \]" dat += "<BR>\[ <A HREF='?src=[REF(src)];operation=MessageCentCom'>Send Message to CentCom</A> \]"
else else
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=MessageSyndicate'>Send Message to \[UNKNOWN\]</A> \]" dat += "<BR>\[ <A HREF='?src=[REF(src)];operation=MessageSyndicate'>Send Message to \[UNKNOWN\]</A> \]"
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=RestoreBackup'>Restore Backup Routing Data</A> \]" dat += "<BR>\[ <A HREF='?src=[REF(src)];operation=RestoreBackup'>Restore Backup Routing Data</A> \]"
else else
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=login'>Log In</A> \]" dat += "<BR>\[ <A HREF='?src=[REF(src)];operation=login'>Log In</A> \]"
if(STATE_CALLSHUTTLE) if(STATE_CALLSHUTTLE)
dat += get_call_shuttle_form() dat += get_call_shuttle_form()
playsound(src, 'sound/machines/terminal_prompt.ogg', 50, 0) playsound(src, 'sound/machines/terminal_prompt.ogg', 50, 0)
@@ -484,6 +489,7 @@
playsound(src, 'sound/machines/terminal_prompt.ogg', 50, 0) playsound(src, 'sound/machines/terminal_prompt.ogg', 50, 0)
if(STATE_MESSAGELIST) if(STATE_MESSAGELIST)
dat += "Messages:" dat += "Messages:"
<<<<<<< HEAD
for(var/i = 1; i<=src.messagetitle.len; i++) for(var/i = 1; i<=src.messagetitle.len; i++)
dat += "<BR><A HREF='?src=\ref[src];operation=viewmessage;message-num=[i]'>[src.messagetitle[i]]</A>" dat += "<BR><A HREF='?src=\ref[src];operation=viewmessage;message-num=[i]'>[src.messagetitle[i]]</A>"
playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0)
@@ -492,48 +498,70 @@
dat += "<B>[src.messagetitle[src.currmsg]]</B><BR><BR>[src.messagetext[src.currmsg]]" dat += "<B>[src.messagetitle[src.currmsg]]</B><BR><BR>[src.messagetext[src.currmsg]]"
if (src.authenticated) if (src.authenticated)
dat += "<BR><BR>\[ <A HREF='?src=\ref[src];operation=delmessage'>Delete</a> \]" dat += "<BR><BR>\[ <A HREF='?src=\ref[src];operation=delmessage'>Delete</a> \]"
=======
for(var/i in 1 to messages.len)
var/datum/comm_message/M = messages[i]
dat += "<BR><A HREF='?src=[REF(src)];operation=viewmessage;message-num=[i]'>[M.title]</A>"
playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0)
if(STATE_VIEWMESSAGE)
if (currmsg)
dat += "<B>[currmsg.title]</B><BR><BR>[currmsg.content]"
if(!currmsg.answered && currmsg.possible_answers.len)
for(var/i in 1 to currmsg.possible_answers.len)
var/answer = currmsg.possible_answers[i]
dat += "<br>\[ <A HREF='?src=[REF(src)];operation=respond;answer=[i]'>Answer : [answer]</A> \]"
else if(currmsg.answered)
var/answered = currmsg.possible_answers[currmsg.answered]
dat += "<br> Archived Answer : [answered]"
dat += "<BR><BR>\[ <A HREF='?src=[REF(src)];operation=delmessage'>Delete</A> \]"
>>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental
else else
src.state = STATE_MESSAGELIST src.state = STATE_MESSAGELIST
src.attack_hand(user) src.attack_hand(user)
return return
if(STATE_DELMESSAGE) if(STATE_DELMESSAGE)
<<<<<<< HEAD
if (src.currmsg) if (src.currmsg)
dat += "Are you sure you want to delete this message? \[ <A HREF='?src=\ref[src];operation=delmessage2'>OK</A> | <A HREF='?src=\ref[src];operation=viewmessage'>Cancel</A> \]" dat += "Are you sure you want to delete this message? \[ <A HREF='?src=\ref[src];operation=delmessage2'>OK</A> | <A HREF='?src=\ref[src];operation=viewmessage'>Cancel</A> \]"
=======
if (currmsg)
dat += "Are you sure you want to delete this message? \[ <A HREF='?src=[REF(src)];operation=delmessage2'>OK</A> | <A HREF='?src=[REF(src)];operation=viewmessage'>Cancel</A> \]"
>>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental
else else
src.state = STATE_MESSAGELIST src.state = STATE_MESSAGELIST
src.attack_hand(user) src.attack_hand(user)
return return
if(STATE_STATUSDISPLAY) if(STATE_STATUSDISPLAY)
dat += "Set Status Displays<BR>" dat += "Set Status Displays<BR>"
dat += "\[ <A HREF='?src=\ref[src];operation=setstat;statdisp=blank'>Clear</A> \]<BR>" dat += "\[ <A HREF='?src=[REF(src)];operation=setstat;statdisp=blank'>Clear</A> \]<BR>"
dat += "\[ <A HREF='?src=\ref[src];operation=setstat;statdisp=shuttle'>Shuttle ETA</A> \]<BR>" dat += "\[ <A HREF='?src=[REF(src)];operation=setstat;statdisp=shuttle'>Shuttle ETA</A> \]<BR>"
dat += "\[ <A HREF='?src=\ref[src];operation=setstat;statdisp=message'>Message</A> \]" dat += "\[ <A HREF='?src=[REF(src)];operation=setstat;statdisp=message'>Message</A> \]"
dat += "<ul><li> Line 1: <A HREF='?src=\ref[src];operation=setmsg1'>[ stat_msg1 ? stat_msg1 : "(none)"]</A>" dat += "<ul><li> Line 1: <A HREF='?src=[REF(src)];operation=setmsg1'>[ stat_msg1 ? stat_msg1 : "(none)"]</A>"
dat += "<li> Line 2: <A HREF='?src=\ref[src];operation=setmsg2'>[ stat_msg2 ? stat_msg2 : "(none)"]</A></ul><br>" dat += "<li> Line 2: <A HREF='?src=[REF(src)];operation=setmsg2'>[ stat_msg2 ? stat_msg2 : "(none)"]</A></ul><br>"
dat += "\[ Alert: <A HREF='?src=\ref[src];operation=setstat;statdisp=alert;alert=default'>None</A> |" dat += "\[ Alert: <A HREF='?src=[REF(src)];operation=setstat;statdisp=alert;alert=default'>None</A> |"
dat += " <A HREF='?src=\ref[src];operation=setstat;statdisp=alert;alert=redalert'>Red Alert</A> |" dat += " <A HREF='?src=[REF(src)];operation=setstat;statdisp=alert;alert=redalert'>Red Alert</A> |"
dat += " <A HREF='?src=\ref[src];operation=setstat;statdisp=alert;alert=lockdown'>Lockdown</A> |" dat += " <A HREF='?src=[REF(src)];operation=setstat;statdisp=alert;alert=lockdown'>Lockdown</A> |"
dat += " <A HREF='?src=\ref[src];operation=setstat;statdisp=alert;alert=biohazard'>Biohazard</A> \]<BR><HR>" dat += " <A HREF='?src=[REF(src)];operation=setstat;statdisp=alert;alert=biohazard'>Biohazard</A> \]<BR><HR>"
playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0)
if(STATE_ALERT_LEVEL) if(STATE_ALERT_LEVEL)
dat += "Current alert level: [get_security_level()]<BR>" dat += "Current alert level: [get_security_level()]<BR>"
if(GLOB.security_level == SEC_LEVEL_DELTA) if(GLOB.security_level == SEC_LEVEL_DELTA)
dat += "<font color='red'><b>The self-destruct mechanism is active. Find a way to deactivate the mechanism to lower the alert level or evacuate.</b></font>" dat += "<font color='red'><b>The self-destruct mechanism is active. Find a way to deactivate the mechanism to lower the alert level or evacuate.</b></font>"
else else
dat += "<A HREF='?src=\ref[src];operation=securitylevel;newalertlevel=[SEC_LEVEL_BLUE]'>Blue</A><BR>" dat += "<A HREF='?src=[REF(src)];operation=securitylevel;newalertlevel=[SEC_LEVEL_BLUE]'>Blue</A><BR>"
dat += "<A HREF='?src=\ref[src];operation=securitylevel;newalertlevel=[SEC_LEVEL_GREEN]'>Green</A>" dat += "<A HREF='?src=[REF(src)];operation=securitylevel;newalertlevel=[SEC_LEVEL_GREEN]'>Green</A>"
if(STATE_CONFIRM_LEVEL) if(STATE_CONFIRM_LEVEL)
dat += "Current alert level: [get_security_level()]<BR>" dat += "Current alert level: [get_security_level()]<BR>"
dat += "Confirm the change to: [num2seclevel(tmp_alertlevel)]<BR>" dat += "Confirm the change to: [num2seclevel(tmp_alertlevel)]<BR>"
dat += "<A HREF='?src=\ref[src];operation=swipeidseclevel'>Swipe ID</A> to confirm change.<BR>" dat += "<A HREF='?src=[REF(src)];operation=swipeidseclevel'>Swipe ID</A> to confirm change.<BR>"
if(STATE_TOGGLE_EMERGENCY) if(STATE_TOGGLE_EMERGENCY)
playsound(src, 'sound/machines/terminal_prompt.ogg', 50, 0) playsound(src, 'sound/machines/terminal_prompt.ogg', 50, 0)
if(GLOB.emergency_access == 1) if(GLOB.emergency_access == 1)
dat += "<b>Emergency Maintenance Access is currently <font color='red'>ENABLED</font></b>" dat += "<b>Emergency Maintenance Access is currently <font color='red'>ENABLED</font></b>"
dat += "<BR>Restore maintenance access restrictions? <BR>\[ <A HREF='?src=\ref[src];operation=disableemergency'>OK</A> | <A HREF='?src=\ref[src];operation=viewmessage'>Cancel</A> \]" dat += "<BR>Restore maintenance access restrictions? <BR>\[ <A HREF='?src=[REF(src)];operation=disableemergency'>OK</A> | <A HREF='?src=[REF(src)];operation=viewmessage'>Cancel</A> \]"
else else
dat += "<b>Emergency Maintenance Access is currently <font color='green'>DISABLED</font></b>" dat += "<b>Emergency Maintenance Access is currently <font color='green'>DISABLED</font></b>"
dat += "<BR>Lift access restrictions on maintenance and external airlocks? <BR>\[ <A HREF='?src=\ref[src];operation=enableemergency'>OK</A> | <A HREF='?src=\ref[src];operation=viewmessage'>Cancel</A> \]" dat += "<BR>Lift access restrictions on maintenance and external airlocks? <BR>\[ <A HREF='?src=[REF(src)];operation=enableemergency'>OK</A> | <A HREF='?src=[REF(src)];operation=viewmessage'>Cancel</A> \]"
if(STATE_PURCHASE) if(STATE_PURCHASE)
dat += "Budget: [SSshuttle.points] Credits.<BR>" dat += "Budget: [SSshuttle.points] Credits.<BR>"
@@ -544,9 +572,13 @@
dat += "[S.description]<BR>" dat += "[S.description]<BR>"
if(S.prerequisites) if(S.prerequisites)
dat += "Prerequisites: [S.prerequisites]<BR>" dat += "Prerequisites: [S.prerequisites]<BR>"
dat += "<A href='?src=\ref[src];operation=buyshuttle;chosen_shuttle=\ref[S]'>(<font color=red><i>Purchase</i></font>)</A><BR><BR>" dat += "<A href='?src=[REF(src)];operation=buyshuttle;chosen_shuttle=[REF(S)]'>(<font color=red><i>Purchase</i></font>)</A><BR><BR>"
<<<<<<< HEAD
dat += "<BR><BR>\[ [(src.state != STATE_DEFAULT) ? "<A HREF='?src=\ref[src];operation=main'>Main Menu</A> | " : ""]<A HREF='?src=\ref[user];mach_close=communications'>Close</A> \]" dat += "<BR><BR>\[ [(src.state != STATE_DEFAULT) ? "<A HREF='?src=\ref[src];operation=main'>Main Menu</A> | " : ""]<A HREF='?src=\ref[user];mach_close=communications'>Close</A> \]"
=======
dat += "<BR><BR>\[ [(state != STATE_DEFAULT) ? "<A HREF='?src=[REF(src)];operation=main'>Main Menu</A> | " : ""]<A HREF='?src=[REF(user)];mach_close=communications'>Close</A> \]"
>>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental
popup.set_content(dat) popup.set_content(dat)
popup.open() popup.open()
@@ -573,8 +605,8 @@
/obj/machinery/computer/communications/proc/get_call_shuttle_form(ai_interface = 0) /obj/machinery/computer/communications/proc/get_call_shuttle_form(ai_interface = 0)
var/form_id = "callshuttle" var/form_id = "callshuttle"
var/dat = get_javascript_header(form_id) var/dat = get_javascript_header(form_id)
dat += "<form name='callshuttle' id='[form_id]' action='?src=\ref[src]' method='get' style='display: inline'>" dat += "<form name='callshuttle' id='[form_id]' action='?src=[REF(src)]' method='get' style='display: inline'>"
dat += "<input type='hidden' name='src' value='\ref[src]'>" dat += "<input type='hidden' name='src' value='[REF(src)]'>"
dat += "<input type='hidden' name='operation' value='[ai_interface ? "ai-callshuttle2" : "callshuttle2"]'>" dat += "<input type='hidden' name='operation' value='[ai_interface ? "ai-callshuttle2" : "callshuttle2"]'>"
dat += "<b>Nature of emergency:</b><BR> <input type='text' id='reasonfield' name='call' style='width:250px; background-color:#FFDDDD; onkeydown='getLength() onkeyup='getLength()' onkeypress='getLength()'>" dat += "<b>Nature of emergency:</b><BR> <input type='text' id='reasonfield' name='call' style='width:250px; background-color:#FFDDDD; onkeydown='getLength() onkeyup='getLength()' onkeypress='getLength()'>"
dat += "<BR>Are you sure you want to call the shuttle? \[ <a href='#' onclick='submit()'>Call</a> \]" dat += "<BR>Are you sure you want to call the shuttle? \[ <a href='#' onclick='submit()'>Call</a> \]"
@@ -583,8 +615,8 @@
/obj/machinery/computer/communications/proc/get_cancel_shuttle_form() /obj/machinery/computer/communications/proc/get_cancel_shuttle_form()
var/form_id = "cancelshuttle" var/form_id = "cancelshuttle"
var/dat = get_javascript_header(form_id) var/dat = get_javascript_header(form_id)
dat += "<form name='cancelshuttle' id='[form_id]' action='?src=\ref[src]' method='get' style='display: inline'>" dat += "<form name='cancelshuttle' id='[form_id]' action='?src=[REF(src)]' method='get' style='display: inline'>"
dat += "<input type='hidden' name='src' value='\ref[src]'>" dat += "<input type='hidden' name='src' value='[REF(src)]'>"
dat += "<input type='hidden' name='operation' value='cancelshuttle2'>" dat += "<input type='hidden' name='operation' value='cancelshuttle2'>"
dat += "<BR>Are you sure you want to cancel the shuttle? \[ <a href='#' onclick='submit()'>Cancel</a> \]" dat += "<BR>Are you sure you want to cancel the shuttle? \[ <a href='#' onclick='submit()'>Cancel</a> \]"
@@ -604,31 +636,53 @@
else else
dat += "Current login: None" dat += "Current login: None"
dat += "<BR><BR><B>General Functions</B>" dat += "<BR><BR><B>General Functions</B>"
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=ai-messagelist'>Message List</A> \]" dat += "<BR>\[ <A HREF='?src=[REF(src)];operation=ai-messagelist'>Message List</A> \]"
if(SSshuttle.emergency.mode == SHUTTLE_IDLE) if(SSshuttle.emergency.mode == SHUTTLE_IDLE)
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=ai-callshuttle'>Call Emergency Shuttle</A> \]" dat += "<BR>\[ <A HREF='?src=[REF(src)];operation=ai-callshuttle'>Call Emergency Shuttle</A> \]"
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=ai-status'>Set Status Display</A> \]" dat += "<BR>\[ <A HREF='?src=[REF(src)];operation=ai-status'>Set Status Display</A> \]"
dat += "<BR><BR><B>Special Functions</B>" dat += "<BR><BR><B>Special Functions</B>"
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=ai-announce'>Make an Announcement</A> \]" dat += "<BR>\[ <A HREF='?src=[REF(src)];operation=ai-announce'>Make an Announcement</A> \]"
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=ai-changeseclevel'>Change Alert Level</A> \]" dat += "<BR>\[ <A HREF='?src=[REF(src)];operation=ai-changeseclevel'>Change Alert Level</A> \]"
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=ai-emergencyaccess'>Emergency Maintenance Access</A> \]" dat += "<BR>\[ <A HREF='?src=[REF(src)];operation=ai-emergencyaccess'>Emergency Maintenance Access</A> \]"
if(STATE_CALLSHUTTLE) if(STATE_CALLSHUTTLE)
dat += get_call_shuttle_form(1) dat += get_call_shuttle_form(1)
if(STATE_MESSAGELIST) if(STATE_MESSAGELIST)
dat += "Messages:" dat += "Messages:"
<<<<<<< HEAD
for(var/i = 1; i<=src.messagetitle.len; i++) for(var/i = 1; i<=src.messagetitle.len; i++)
dat += "<BR><A HREF='?src=\ref[src];operation=ai-viewmessage;message-num=[i]'>[src.messagetitle[i]]</A>" dat += "<BR><A HREF='?src=\ref[src];operation=ai-viewmessage;message-num=[i]'>[src.messagetitle[i]]</A>"
if(STATE_VIEWMESSAGE) if(STATE_VIEWMESSAGE)
if (src.aicurrmsg) if (src.aicurrmsg)
dat += "<B>[src.messagetitle[src.aicurrmsg]]</B><BR><BR>[src.messagetext[src.aicurrmsg]]" dat += "<B>[src.messagetitle[src.aicurrmsg]]</B><BR><BR>[src.messagetext[src.aicurrmsg]]"
dat += "<BR><BR>\[ <A HREF='?src=\ref[src];operation=ai-delmessage'>Delete</A> \]" dat += "<BR><BR>\[ <A HREF='?src=\ref[src];operation=ai-delmessage'>Delete</A> \]"
=======
for(var/i in 1 to messages.len)
var/datum/comm_message/M = messages[i]
dat += "<BR><A HREF='?src=[REF(src)];operation=ai-viewmessage;message-num=[i]'>[M.title]</A>"
if(STATE_VIEWMESSAGE)
if (aicurrmsg)
dat += "<B>[aicurrmsg.title]</B><BR><BR>[aicurrmsg.content]"
if(!aicurrmsg.answered && aicurrmsg.possible_answers.len)
for(var/i in 1 to aicurrmsg.possible_answers.len)
var/answer = aicurrmsg.possible_answers[i]
dat += "<br>\[ <A HREF='?src=[REF(src)];operation=ai-respond;answer=[i]'>Answer : [answer]</A> \]"
else if(aicurrmsg.answered)
var/answered = aicurrmsg.possible_answers[aicurrmsg.answered]
dat += "<br> Archived Answer : [answered]"
dat += "<BR><BR>\[ <A HREF='?src=[REF(src)];operation=ai-delmessage'>Delete</A> \]"
>>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental
else else
src.aistate = STATE_MESSAGELIST src.aistate = STATE_MESSAGELIST
src.attack_hand(user) src.attack_hand(user)
return null return null
if(STATE_DELMESSAGE) if(STATE_DELMESSAGE)
<<<<<<< HEAD
if(src.aicurrmsg) if(src.aicurrmsg)
dat += "Are you sure you want to delete this message? \[ <A HREF='?src=\ref[src];operation=ai-delmessage2'>OK</A> | <A HREF='?src=\ref[src];operation=ai-viewmessage'>Cancel</A> \]" dat += "Are you sure you want to delete this message? \[ <A HREF='?src=\ref[src];operation=ai-delmessage2'>OK</A> | <A HREF='?src=\ref[src];operation=ai-viewmessage'>Cancel</A> \]"
=======
if(aicurrmsg)
dat += "Are you sure you want to delete this message? \[ <A HREF='?src=[REF(src)];operation=ai-delmessage2'>OK</A> | <A HREF='?src=[REF(src)];operation=ai-viewmessage'>Cancel</A> \]"
>>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental
else else
src.aistate = STATE_MESSAGELIST src.aistate = STATE_MESSAGELIST
src.attack_hand(user) src.attack_hand(user)
@@ -636,33 +690,37 @@
if(STATE_STATUSDISPLAY) if(STATE_STATUSDISPLAY)
dat += "Set Status Displays<BR>" dat += "Set Status Displays<BR>"
dat += "\[ <A HREF='?src=\ref[src];operation=setstat;statdisp=blank'>Clear</A> \]<BR>" dat += "\[ <A HREF='?src=[REF(src)];operation=setstat;statdisp=blank'>Clear</A> \]<BR>"
dat += "\[ <A HREF='?src=\ref[src];operation=setstat;statdisp=shuttle'>Shuttle ETA</A> \]<BR>" dat += "\[ <A HREF='?src=[REF(src)];operation=setstat;statdisp=shuttle'>Shuttle ETA</A> \]<BR>"
dat += "\[ <A HREF='?src=\ref[src];operation=setstat;statdisp=message'>Message</A> \]" dat += "\[ <A HREF='?src=[REF(src)];operation=setstat;statdisp=message'>Message</A> \]"
dat += "<ul><li> Line 1: <A HREF='?src=\ref[src];operation=setmsg1'>[ stat_msg1 ? stat_msg1 : "(none)"]</A>" dat += "<ul><li> Line 1: <A HREF='?src=[REF(src)];operation=setmsg1'>[ stat_msg1 ? stat_msg1 : "(none)"]</A>"
dat += "<li> Line 2: <A HREF='?src=\ref[src];operation=setmsg2'>[ stat_msg2 ? stat_msg2 : "(none)"]</A></ul><br>" dat += "<li> Line 2: <A HREF='?src=[REF(src)];operation=setmsg2'>[ stat_msg2 ? stat_msg2 : "(none)"]</A></ul><br>"
dat += "\[ Alert: <A HREF='?src=\ref[src];operation=setstat;statdisp=alert;alert=default'>None</A> |" dat += "\[ Alert: <A HREF='?src=[REF(src)];operation=setstat;statdisp=alert;alert=default'>None</A> |"
dat += " <A HREF='?src=\ref[src];operation=setstat;statdisp=alert;alert=redalert'>Red Alert</A> |" dat += " <A HREF='?src=[REF(src)];operation=setstat;statdisp=alert;alert=redalert'>Red Alert</A> |"
dat += " <A HREF='?src=\ref[src];operation=setstat;statdisp=alert;alert=lockdown'>Lockdown</A> |" dat += " <A HREF='?src=[REF(src)];operation=setstat;statdisp=alert;alert=lockdown'>Lockdown</A> |"
dat += " <A HREF='?src=\ref[src];operation=setstat;statdisp=alert;alert=biohazard'>Biohazard</A> \]<BR><HR>" dat += " <A HREF='?src=[REF(src)];operation=setstat;statdisp=alert;alert=biohazard'>Biohazard</A> \]<BR><HR>"
if(STATE_ALERT_LEVEL) if(STATE_ALERT_LEVEL)
dat += "Current alert level: [get_security_level()]<BR>" dat += "Current alert level: [get_security_level()]<BR>"
if(GLOB.security_level == SEC_LEVEL_DELTA) if(GLOB.security_level == SEC_LEVEL_DELTA)
dat += "<font color='red'><b>The self-destruct mechanism is active. Find a way to deactivate the mechanism to lower the alert level or evacuate.</b></font>" dat += "<font color='red'><b>The self-destruct mechanism is active. Find a way to deactivate the mechanism to lower the alert level or evacuate.</b></font>"
else else
dat += "<A HREF='?src=\ref[src];operation=ai-securitylevel;newalertlevel=[SEC_LEVEL_BLUE]'>Blue</A><BR>" dat += "<A HREF='?src=[REF(src)];operation=ai-securitylevel;newalertlevel=[SEC_LEVEL_BLUE]'>Blue</A><BR>"
dat += "<A HREF='?src=\ref[src];operation=ai-securitylevel;newalertlevel=[SEC_LEVEL_GREEN]'>Green</A>" dat += "<A HREF='?src=[REF(src)];operation=ai-securitylevel;newalertlevel=[SEC_LEVEL_GREEN]'>Green</A>"
if(STATE_TOGGLE_EMERGENCY) if(STATE_TOGGLE_EMERGENCY)
if(GLOB.emergency_access == 1) if(GLOB.emergency_access == 1)
dat += "<b>Emergency Maintenance Access is currently <font color='red'>ENABLED</font></b>" dat += "<b>Emergency Maintenance Access is currently <font color='red'>ENABLED</font></b>"
dat += "<BR>Restore maintenance access restrictions? <BR>\[ <A HREF='?src=\ref[src];operation=ai-disableemergency'>OK</A> | <A HREF='?src=\ref[src];operation=ai-viewmessage'>Cancel</A> \]" dat += "<BR>Restore maintenance access restrictions? <BR>\[ <A HREF='?src=[REF(src)];operation=ai-disableemergency'>OK</A> | <A HREF='?src=[REF(src)];operation=ai-viewmessage'>Cancel</A> \]"
else else
dat += "<b>Emergency Maintenance Access is currently <font color='green'>DISABLED</font></b>" dat += "<b>Emergency Maintenance Access is currently <font color='green'>DISABLED</font></b>"
dat += "<BR>Lift access restrictions on maintenance and external airlocks? <BR>\[ <A HREF='?src=\ref[src];operation=ai-enableemergency'>OK</A> | <A HREF='?src=\ref[src];operation=ai-viewmessage'>Cancel</A> \]" dat += "<BR>Lift access restrictions on maintenance and external airlocks? <BR>\[ <A HREF='?src=[REF(src)];operation=ai-enableemergency'>OK</A> | <A HREF='?src=[REF(src)];operation=ai-viewmessage'>Cancel</A> \]"
<<<<<<< HEAD
dat += "<BR><BR>\[ [(src.aistate != STATE_DEFAULT) ? "<A HREF='?src=\ref[src];operation=ai-main'>Main Menu</A> | " : ""]<A HREF='?src=\ref[user];mach_close=communications'>Close</A> \]" dat += "<BR><BR>\[ [(src.aistate != STATE_DEFAULT) ? "<A HREF='?src=\ref[src];operation=ai-main'>Main Menu</A> | " : ""]<A HREF='?src=\ref[user];mach_close=communications'>Close</A> \]"
=======
dat += "<BR><BR>\[ [(aistate != STATE_DEFAULT) ? "<A HREF='?src=[REF(src)];operation=ai-main'>Main Menu</A> | " : ""]<A HREF='?src=[REF(user)];mach_close=communications'>Close</A> \]"
>>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental
return dat return dat
/obj/machinery/computer/communications/proc/make_announcement(mob/living/user, is_silicon) /obj/machinery/computer/communications/proc/make_announcement(mob/living/user, is_silicon)

View File

@@ -143,27 +143,27 @@
status += "<div class='line'><div class='statusLabel'>Pulse Duration:</div><div class='statusValue'>[radduration]</div></div>" status += "<div class='line'><div class='statusLabel'>Pulse Duration:</div><div class='statusValue'>[radduration]</div></div>"
status += "<div class='line'><div class='statusLabel'>&nbsp;&nbsp;\> Accuracy:</div><div class='statusValue'>[chance_to_hit]</div></div>" status += "<div class='line'><div class='statusLabel'>&nbsp;&nbsp;\> Accuracy:</div><div class='statusValue'>[chance_to_hit]</div></div>"
status += "<br></div>" // Close statusDisplay div status += "<br></div>" // Close statusDisplay div
var/buttons = "<a href='?src=\ref[src];'>Scan</a> " var/buttons = "<a href='?src=[REF(src)];'>Scan</a> "
if(connected) if(connected)
buttons += " <a href='?src=\ref[src];task=toggleopen;'>[connected.state_open ? "Close" : "Open"] Scanner</a> " buttons += " <a href='?src=[REF(src)];task=toggleopen;'>[connected.state_open ? "Close" : "Open"] Scanner</a> "
if (connected.state_open) if (connected.state_open)
buttons += "<span class='linkOff'>[connected.locked ? "Unlock" : "Lock"] Scanner</span> " buttons += "<span class='linkOff'>[connected.locked ? "Unlock" : "Lock"] Scanner</span> "
else else
buttons += "<a href='?src=\ref[src];task=togglelock;'>[connected.locked ? "Unlock" : "Lock"] Scanner</a> " buttons += "<a href='?src=[REF(src)];task=togglelock;'>[connected.locked ? "Unlock" : "Lock"] Scanner</a> "
else else
buttons += "<span class='linkOff'>Open Scanner</span> <span class='linkOff'>Lock Scanner</span> " buttons += "<span class='linkOff'>Open Scanner</span> <span class='linkOff'>Lock Scanner</span> "
if(viable_occupant) if(viable_occupant)
buttons += "<a href='?src=\ref[src];task=rejuv'>Inject Rejuvenators</a> " buttons += "<a href='?src=[REF(src)];task=rejuv'>Inject Rejuvenators</a> "
else else
buttons += "<span class='linkOff'>Inject Rejuvenators</span> " buttons += "<span class='linkOff'>Inject Rejuvenators</span> "
if(diskette) if(diskette)
buttons += "<a href='?src=\ref[src];task=ejectdisk'>Eject Disk</a> " buttons += "<a href='?src=[REF(src)];task=ejectdisk'>Eject Disk</a> "
else else
buttons += "<span class='linkOff'>Eject Disk</span> " buttons += "<span class='linkOff'>Eject Disk</span> "
if(current_screen == "buffer") if(current_screen == "buffer")
buttons += "<a href='?src=\ref[src];task=screen;text=mainmenu;'>Radiation Emitter Menu</a> " buttons += "<a href='?src=[REF(src)];task=screen;text=mainmenu;'>Radiation Emitter Menu</a> "
else else
buttons += "<a href='?src=\ref[src];task=screen;text=buffer;'>Buffer Menu</a> " buttons += "<a href='?src=[REF(src)];task=screen;text=buffer;'>Buffer Menu</a> "
switch(current_screen) switch(current_screen)
if("working") if("working")
@@ -182,12 +182,12 @@
if( !buffer_slot || !buffer_slot.len || !buffer_slot["name"] || !((buffer_slot["UI"] && buffer_slot["UE"]) || buffer_slot["SE"]) ) if( !buffer_slot || !buffer_slot.len || !buffer_slot["name"] || !((buffer_slot["UI"] && buffer_slot["UE"]) || buffer_slot["SE"]) )
temp_html += "<br>\tNo Data" temp_html += "<br>\tNo Data"
if(viable_occupant) if(viable_occupant)
temp_html += "<br><a href='?src=\ref[src];task=setbuffer;num=[i];'>Save to Buffer</a> " temp_html += "<br><a href='?src=[REF(src)];task=setbuffer;num=[i];'>Save to Buffer</a> "
else else
temp_html += "<br><span class='linkOff'>Save to Buffer</span> " temp_html += "<br><span class='linkOff'>Save to Buffer</span> "
temp_html += "<span class='linkOff'>Clear Buffer</span> " temp_html += "<span class='linkOff'>Clear Buffer</span> "
if(diskette) if(diskette)
temp_html += "<a href='?src=\ref[src];task=loaddisk;num=[i];'>Load from Disk</a> " temp_html += "<a href='?src=[REF(src)];task=loaddisk;num=[i];'>Load from Disk</a> "
else else
temp_html += "<span class='linkOff'>Load from Disk</span> " temp_html += "<span class='linkOff'>Load from Disk</span> "
temp_html += "<span class='linkOff'>Save to Disk</span> " temp_html += "<span class='linkOff'>Save to Disk</span> "
@@ -198,18 +198,18 @@
var/name = buffer_slot["name"] var/name = buffer_slot["name"]
var/label = buffer_slot["label"] var/label = buffer_slot["label"]
var/blood_type = buffer_slot["blood_type"] var/blood_type = buffer_slot["blood_type"]
temp_html += "<br>\t<a href='?src=\ref[src];task=setbufferlabel;num=[i];'>Label</a>: [label ? label : name]" temp_html += "<br>\t<a href='?src=[REF(src)];task=setbufferlabel;num=[i];'>Label</a>: [label ? label : name]"
temp_html += "<br>\tSubject: [name]" temp_html += "<br>\tSubject: [name]"
if(ue && name && blood_type) if(ue && name && blood_type)
temp_html += "<br>\tBlood Type: [blood_type]" temp_html += "<br>\tBlood Type: [blood_type]"
temp_html += "<br>\tUE: [ue] " temp_html += "<br>\tUE: [ue] "
if(viable_occupant) if(viable_occupant)
temp_html += "<a href='?src=\ref[src];task=transferbuffer;num=[i];text=ue'>Occupant</a> " temp_html += "<a href='?src=[REF(src)];task=transferbuffer;num=[i];text=ue'>Occupant</a> "
else else
temp_html += "<span class='linkOff'>Occupant</span>" temp_html += "<span class='linkOff'>Occupant</span>"
temp_html += "<a href='?src=\ref[src];task=setdelayed;num=[i];delayaction=[SCANNER_ACTION_UE]'>Occupant:Delayed</a> " temp_html += "<a href='?src=[REF(src)];task=setdelayed;num=[i];delayaction=[SCANNER_ACTION_UE]'>Occupant:Delayed</a> "
if(injectorready < world.time) if(injectorready < world.time)
temp_html += "<a href='?src=\ref[src];task=injector;num=[i];text=ue'>Injector</a>" temp_html += "<a href='?src=[REF(src)];task=injector;num=[i];text=ue'>Injector</a>"
else else
temp_html += "<span class='linkOff'>Injector</span>" temp_html += "<span class='linkOff'>Injector</span>"
else else
@@ -218,12 +218,12 @@
if(ui) if(ui)
temp_html += "<br>\tUI: [ui] " temp_html += "<br>\tUI: [ui] "
if(viable_occupant) if(viable_occupant)
temp_html += "<a href='?src=\ref[src];task=transferbuffer;num=[i];text=ui'>Occupant</a> " temp_html += "<a href='?src=[REF(src)];task=transferbuffer;num=[i];text=ui'>Occupant</a> "
else else
temp_html += "<span class='linkOff'>Occupant</span>" temp_html += "<span class='linkOff'>Occupant</span>"
temp_html += "<a href='?src=\ref[src];task=setdelayed;num=[i];delayaction=[SCANNER_ACTION_UI]'>Occupant:Delayed</a> " temp_html += "<a href='?src=[REF(src)];task=setdelayed;num=[i];delayaction=[SCANNER_ACTION_UI]'>Occupant:Delayed</a> "
if(injectorready < world.time) if(injectorready < world.time)
temp_html += "<a href='?src=\ref[src];task=injector;num=[i];text=ui'>Injector</a>" temp_html += "<a href='?src=[REF(src)];task=injector;num=[i];text=ui'>Injector</a>"
else else
temp_html += "<span class='linkOff'>Injector</span>" temp_html += "<span class='linkOff'>Injector</span>"
else else
@@ -231,38 +231,38 @@
if(ue && name && blood_type && ui) if(ue && name && blood_type && ui)
temp_html += "<br>\tUI+UE: [ui]/[ue] " temp_html += "<br>\tUI+UE: [ui]/[ue] "
if(viable_occupant) if(viable_occupant)
temp_html += "<a href='?src=\ref[src];task=transferbuffer;num=[i];text=mixed'>Occupant</a> " temp_html += "<a href='?src=[REF(src)];task=transferbuffer;num=[i];text=mixed'>Occupant</a> "
else else
temp_html += "<span class='linkOff'>Occupant</span>" temp_html += "<span class='linkOff'>Occupant</span>"
temp_html += "<a href='?src=\ref[src];task=setdelayed;num=[i];delayaction=[SCANNER_ACTION_MIXED]'>Occupant:Delayed</a> " temp_html += "<a href='?src=[REF(src)];task=setdelayed;num=[i];delayaction=[SCANNER_ACTION_MIXED]'>Occupant:Delayed</a> "
if(injectorready < world.time) if(injectorready < world.time)
temp_html += "<a href='?src=\ref[src];task=injector;num=[i];text=mixed'>UI+UE Injector</a>" temp_html += "<a href='?src=[REF(src)];task=injector;num=[i];text=mixed'>UI+UE Injector</a>"
else else
temp_html += "<span class='linkOff'>UI+UE Injector</span>" temp_html += "<span class='linkOff'>UI+UE Injector</span>"
if(se) if(se)
temp_html += "<br>\tSE: [se] " temp_html += "<br>\tSE: [se] "
if(viable_occupant) if(viable_occupant)
temp_html += "<a href='?src=\ref[src];task=transferbuffer;num=[i];text=se'>Occupant</a> " temp_html += "<a href='?src=[REF(src)];task=transferbuffer;num=[i];text=se'>Occupant</a> "
else else
temp_html += "<span class='linkOff'>Occupant</span> " temp_html += "<span class='linkOff'>Occupant</span> "
temp_html += "<a href='?src=\ref[src];task=setdelayed;num=[i];delayaction=[SCANNER_ACTION_SE]'>Occupant:Delayed</a> " temp_html += "<a href='?src=[REF(src)];task=setdelayed;num=[i];delayaction=[SCANNER_ACTION_SE]'>Occupant:Delayed</a> "
if(injectorready < world.time ) if(injectorready < world.time )
temp_html += "<a href='?src=\ref[src];task=injector;num=[i];text=se'>Injector</a>" temp_html += "<a href='?src=[REF(src)];task=injector;num=[i];text=se'>Injector</a>"
else else
temp_html += "<span class='linkOff'>Injector</span>" temp_html += "<span class='linkOff'>Injector</span>"
else else
temp_html += "<br>\tSE: No Data" temp_html += "<br>\tSE: No Data"
if(viable_occupant) if(viable_occupant)
temp_html += "<br><a href='?src=\ref[src];task=setbuffer;num=[i];'>Save to Buffer</a> " temp_html += "<br><a href='?src=[REF(src)];task=setbuffer;num=[i];'>Save to Buffer</a> "
else else
temp_html += "<br><span class='linkOff'>Save to Buffer</span> " temp_html += "<br><span class='linkOff'>Save to Buffer</span> "
temp_html += "<a href='?src=\ref[src];task=clearbuffer;num=[i];'>Clear Buffer</a> " temp_html += "<a href='?src=[REF(src)];task=clearbuffer;num=[i];'>Clear Buffer</a> "
if(diskette) if(diskette)
temp_html += "<a href='?src=\ref[src];task=loaddisk;num=[i];'>Load from Disk</a> " temp_html += "<a href='?src=[REF(src)];task=loaddisk;num=[i];'>Load from Disk</a> "
else else
temp_html += "<span class='linkOff'>Load from Disk</span> " temp_html += "<span class='linkOff'>Load from Disk</span> "
if(diskette && !diskette.read_only) if(diskette && !diskette.read_only)
temp_html += "<a href='?src=\ref[src];task=savedisk;num=[i];'>Save to Disk</a> " temp_html += "<a href='?src=[REF(src)];task=savedisk;num=[i];'>Save to Disk</a> "
else else
temp_html += "<span class='linkOff'>Save to Disk</span> " temp_html += "<span class='linkOff'>Save to Disk</span> "
else else
@@ -270,8 +270,8 @@
temp_html += buttons temp_html += buttons
temp_html += "<h1>Radiation Emitter Menu</h1>" temp_html += "<h1>Radiation Emitter Menu</h1>"
temp_html += "<a href='?src=\ref[src];task=setstrength;num=[radstrength-1];'>--</a> <a href='?src=\ref[src];task=setstrength;'>Output Level</a> <a href='?src=\ref[src];task=setstrength;num=[radstrength+1];'>++</a>" temp_html += "<a href='?src=[REF(src)];task=setstrength;num=[radstrength-1];'>--</a> <a href='?src=[REF(src)];task=setstrength;'>Output Level</a> <a href='?src=[REF(src)];task=setstrength;num=[radstrength+1];'>++</a>"
temp_html += "<br><a href='?src=\ref[src];task=setduration;num=[radduration-1];'>--</a> <a href='?src=\ref[src];task=setduration;'>Pulse Duration</a> <a href='?src=\ref[src];task=setduration;num=[radduration+1];'>++</a>" temp_html += "<br><a href='?src=[REF(src)];task=setduration;num=[radduration-1];'>--</a> <a href='?src=[REF(src)];task=setduration;'>Pulse Duration</a> <a href='?src=[REF(src)];task=setduration;num=[radduration+1];'>++</a>"
temp_html += "<h3>Irradiate Subject</h3>" temp_html += "<h3>Irradiate Subject</h3>"
temp_html += "<div class='line'><div class='statusLabel'>Unique Identifier:</div><div class='statusValue'><div class='clearBoth'>" temp_html += "<div class='line'><div class='statusLabel'>Unique Identifier:</div><div class='statusValue'><div class='clearBoth'>"
@@ -281,7 +281,7 @@
temp_html += "<div class='dnaBlockNumber'>1</div>" temp_html += "<div class='dnaBlockNumber'>1</div>"
var/len = length(viable_occupant.dna.uni_identity) var/len = length(viable_occupant.dna.uni_identity)
for(var/i=1, i<=len, i++) for(var/i=1, i<=len, i++)
temp_html += "<a class='dnaBlock' href='?src=\ref[src];task=pulseui;num=[i];'>[copytext(viable_occupant.dna.uni_identity,i,i+1)]</a>" temp_html += "<a class='dnaBlock' href='?src=[REF(src)];task=pulseui;num=[i];'>[copytext(viable_occupant.dna.uni_identity,i,i+1)]</a>"
if ((i % max_line_len) == 0) if ((i % max_line_len) == 0)
temp_html += "</div><div class='clearBoth'>" temp_html += "</div><div class='clearBoth'>"
if((i % DNA_BLOCK_SIZE) == 0 && i < len) if((i % DNA_BLOCK_SIZE) == 0 && i < len)
@@ -295,7 +295,7 @@
temp_html += "<div class='dnaBlockNumber'>1</div>" temp_html += "<div class='dnaBlockNumber'>1</div>"
var/len = length(viable_occupant.dna.struc_enzymes) var/len = length(viable_occupant.dna.struc_enzymes)
for(var/i=1, i<=len, i++) for(var/i=1, i<=len, i++)
temp_html += "<a class='dnaBlock' href='?src=\ref[src];task=pulsese;num=[i];'>[copytext(viable_occupant.dna.struc_enzymes,i,i+1)]</a>" temp_html += "<a class='dnaBlock' href='?src=[REF(src)];task=pulsese;num=[i];'>[copytext(viable_occupant.dna.struc_enzymes,i,i+1)]</a>"
if ((i % max_line_len) == 0) if ((i % max_line_len) == 0)
temp_html += "</div><div class='clearBoth'>" temp_html += "</div><div class='clearBoth'>"
if((i % DNA_BLOCK_SIZE) == 0 && i < len) if((i % DNA_BLOCK_SIZE) == 0 && i < len)

View File

@@ -60,7 +60,7 @@
if(pad.stat & NOPOWER) if(pad.stat & NOPOWER)
t+= "<span class='linkOff'>[pad.display_name]</span>" t+= "<span class='linkOff'>[pad.display_name]</span>"
else else
t+= "<A href='?src=\ref[src];choose_pad=1;pad=[i]'>[pad.display_name]</A>" t+= "<A href='?src=[REF(src)];choose_pad=1;pad=[i]'>[pad.display_name]</A>"
else else
launchpads -= get_pad(i) launchpads -= get_pad(i)
t += "<BR>" t += "<BR>"
@@ -68,24 +68,24 @@
if(current_pad) if(current_pad)
var/obj/machinery/launchpad/pad = get_pad(current_pad) var/obj/machinery/launchpad/pad = get_pad(current_pad)
t += "<div class='statusDisplay'><b>[pad.display_name]</b></div>" t += "<div class='statusDisplay'><b>[pad.display_name]</b></div>"
t += "<A href='?src=\ref[src];change_name=1;pad=[current_pad]'>Rename</A>" t += "<A href='?src=[REF(src)];change_name=1;pad=[current_pad]'>Rename</A>"
t += "<A href='?src=\ref[src];remove=1;pad=[current_pad]'>Remove</A><BR><BR>" t += "<A href='?src=[REF(src)];remove=1;pad=[current_pad]'>Remove</A><BR><BR>"
t += "<A href='?src=\ref[src];raisey=1;lowerx=1;pad=[current_pad]'>O</A>" //up-left t += "<A href='?src=[REF(src)];raisey=1;lowerx=1;pad=[current_pad]'>O</A>" //up-left
t += "<A href='?src=\ref[src];raisey=1;pad=[current_pad]'>^</A>" //up t += "<A href='?src=[REF(src)];raisey=1;pad=[current_pad]'>^</A>" //up
t += "<A href='?src=\ref[src];raisey=1;raisex=1;pad=[current_pad]'>O</A><BR>" //up-right t += "<A href='?src=[REF(src)];raisey=1;raisex=1;pad=[current_pad]'>O</A><BR>" //up-right
t += "<A href='?src=\ref[src];lowerx=1;pad=[current_pad]'><</A>"//left t += "<A href='?src=[REF(src)];lowerx=1;pad=[current_pad]'><</A>"//left
t += "<A href='?src=\ref[src];reset=1;pad=[current_pad]'>R</A>"//reset to 0 t += "<A href='?src=[REF(src)];reset=1;pad=[current_pad]'>R</A>"//reset to 0
t += "<A href='?src=\ref[src];raisex=1;pad=[current_pad]'>></A><BR>"//right t += "<A href='?src=[REF(src)];raisex=1;pad=[current_pad]'>></A><BR>"//right
t += "<A href='?src=\ref[src];lowery=1;lowerx=1;pad=[current_pad]'>O</A>"//down-left t += "<A href='?src=[REF(src)];lowery=1;lowerx=1;pad=[current_pad]'>O</A>"//down-left
t += "<A href='?src=\ref[src];lowery=1;pad=[current_pad]'>v</A>"//down t += "<A href='?src=[REF(src)];lowery=1;pad=[current_pad]'>v</A>"//down
t += "<A href='?src=\ref[src];lowery=1;raisex=1;pad=[current_pad]'>O</A><BR>"//down-right t += "<A href='?src=[REF(src)];lowery=1;raisex=1;pad=[current_pad]'>O</A><BR>"//down-right
t += "<BR>" t += "<BR>"
t += "<div class='statusDisplay'>Current offset:</div><BR>" t += "<div class='statusDisplay'>Current offset:</div><BR>"
t += "<div class='statusDisplay'>[abs(pad.y_offset)] [pad.y_offset > 0 ? "N":"S"]</div><BR>" t += "<div class='statusDisplay'>[abs(pad.y_offset)] [pad.y_offset > 0 ? "N":"S"]</div><BR>"
t += "<div class='statusDisplay'>[abs(pad.x_offset)] [pad.x_offset > 0 ? "E":"W"]</div><BR>" t += "<div class='statusDisplay'>[abs(pad.x_offset)] [pad.x_offset > 0 ? "E":"W"]</div><BR>"
t += "<BR><A href='?src=\ref[src];launch=1;pad=[current_pad]'>Launch</A>" t += "<BR><A href='?src=[REF(src)];launch=1;pad=[current_pad]'>Launch</A>"
t += " <A href='?src=\ref[src];pull=1;pad=[current_pad]'>Pull</A>" t += " <A href='?src=[REF(src)];pull=1;pad=[current_pad]'>Pull</A>"
var/datum/browser/popup = new(user, "launchpad", name, 300, 500) var/datum/browser/popup = new(user, "launchpad", name, 300, 500)
popup.set_content(t.Join()) popup.set_content(t.Join())

View File

@@ -39,21 +39,21 @@
return return
var/dat var/dat
if(src.temp) if(src.temp)
dat = text("<TT>[src.temp]</TT><BR><BR><A href='?src=\ref[src];temp=1'>Clear Screen</A>") dat = text("<TT>[src.temp]</TT><BR><BR><A href='?src=[REF(src)];temp=1'>Clear Screen</A>")
else else
dat = text("Confirm Identity: <A href='?src=\ref[];scan=1'>[]</A><HR>", src, (src.scan ? text("[]", src.scan.name) : "----------")) dat = text("Confirm Identity: <A href='?src=[REF(src)];scan=1'>[]</A><HR>", (src.scan ? text("[]", src.scan.name) : "----------"))
if(src.authenticated) if(src.authenticated)
switch(src.screen) switch(src.screen)
if(1) if(1)
dat += {" dat += {"
<A href='?src=\ref[src];search=1'>Search Records</A> <A href='?src=[REF(src)];search=1'>Search Records</A>
<BR><A href='?src=\ref[src];screen=2'>List Records</A> <BR><A href='?src=[REF(src)];screen=2'>List Records</A>
<BR> <BR>
<BR><A href='?src=\ref[src];screen=5'>Virus Database</A> <BR><A href='?src=[REF(src)];screen=5'>Virus Database</A>
<BR><A href='?src=\ref[src];screen=6'>Medbot Tracking</A> <BR><A href='?src=[REF(src)];screen=6'>Medbot Tracking</A>
<BR> <BR>
<BR><A href='?src=\ref[src];screen=3'>Record Maintenance</A> <BR><A href='?src=[REF(src)];screen=3'>Record Maintenance</A>
<BR><A href='?src=\ref[src];logout=1'>{Log Out}</A><BR> <BR><A href='?src=[REF(src)];logout=1'>{Log Out}</A><BR>
"} "}
if(2) if(2)
dat += {" dat += {"
@@ -65,10 +65,10 @@
</table> </table>
<table style="text-align:center;" border="1" cellspacing="0" width="100%"> <table style="text-align:center;" border="1" cellspacing="0" width="100%">
<tr> <tr>
<th><A href='?src=\ref[src];choice=Sorting;sort=name'>Name</A></th> <th><A href='?src=[REF(src)];choice=Sorting;sort=name'>Name</A></th>
<th><A href='?src=\ref[src];choice=Sorting;sort=id'>ID</A></th> <th><A href='?src=[REF(src)];choice=Sorting;sort=id'>ID</A></th>
<th>Fingerprints (F) | DNA (D)</th> <th>Fingerprints (F) | DNA (D)</th>
<th><A href='?src=\ref[src];choice=Sorting;sort=bloodtype'>Blood Type</A></th> <th><A href='?src=[REF(src)];choice=Sorting;sort=bloodtype'>Blood Type</A></th>
<th>Physical Status</th> <th>Physical Status</th>
<th>Mental Status</th> <th>Mental Status</th>
</tr>"} </tr>"}
@@ -93,7 +93,7 @@
else else
background = "'background-color:#4F7529;'" background = "'background-color:#4F7529;'"
dat += text("<tr style=[]><td><A href='?src=\ref[];d_rec=[]'>[]</a></td>", background, src, R.fields["id"], R.fields["name"]) dat += text("<tr style=[]><td><A href='?src=[REF(src)];d_rec=[]'>[]</a></td>", background, R.fields["id"], R.fields["name"])
dat += text("<td>[]</td>", R.fields["id"]) dat += text("<td>[]</td>", R.fields["id"])
dat += text("<td><b>F:</b> []<BR><b>D:</b> []</td>", R.fields["fingerprint"], b_dna) dat += text("<td><b>F:</b> []<BR><b>D:</b> []</td>", R.fields["fingerprint"], b_dna)
dat += text("<td>[]</td>", blood_type) dat += text("<td>[]</td>", blood_type)
@@ -102,11 +102,11 @@
dat += "</table><hr width='75%' />" dat += "</table><hr width='75%' />"
// if(GLOB.data_core.general) // if(GLOB.data_core.general)
// for(var/datum/data/record/R in sortRecord(GLOB.data_core.general)) // for(var/datum/data/record/R in sortRecord(GLOB.data_core.general))
// dat += "<A href='?src=\ref[src];d_rec=[R.fields["id"]]'>[R.fields["id"]]: [R.fields["name"]]<BR>" // dat += "<A href='?src=[REF(src)];d_rec=[R.fields["id"]]'>[R.fields["id"]]: [R.fields["name"]]<BR>"
// //Foreach goto(132) // //Foreach goto(132)
dat += text("<HR><A href='?src=\ref[];screen=1'>Back</A>", src) dat += "<HR><A href='?src=[REF(src)];screen=1'>Back</A>"
if(3) if(3)
dat += text("<B>Records Maintenance</B><HR>\n<A href='?src=\ref[];back=1'>Backup To Disk</A><BR>\n<A href='?src=\ref[];u_load=1'>Upload From Disk</A><BR>\n<A href='?src=\ref[];del_all=1'>Delete All Records</A><BR>\n<BR>\n<A href='?src=\ref[];screen=1'>Back</A>", src, src, src, src) dat += "<B>Records Maintenance</B><HR>\n<A href='?src=[REF(src)];back=1'>Backup To Disk</A><BR>\n<A href='?src=[REF(src)];u_load=1'>Upload From Disk</A><BR>\n<A href='?src=[REF(src)];del_all=1'>Delete All Records</A><BR>\n<BR>\n<A href='?src=[REF(src)];screen=1'>Back</A>"
if(4) if(4)
dat += "<table><tr><td><b><font size='4'>Medical Record</font></b></td></tr>" dat += "<table><tr><td><b><font size='4'>Medical Record</font></b></td></tr>"
@@ -118,45 +118,45 @@
var/obj/item/photo/P2 = active1.fields["photo_side"] var/obj/item/photo/P2 = active1.fields["photo_side"]
user << browse_rsc(P2.img, "photo_side") user << browse_rsc(P2.img, "photo_side")
dat += "<tr><td>Name:</td><td>[active1.fields["name"]]</td>" dat += "<tr><td>Name:</td><td>[active1.fields["name"]]</td>"
dat += "<td><a href='?src=\ref[src];field=show_photo_front'><img src=photo_front height=80 width=80 border=4></a></td>" dat += "<td><a href='?src=[REF(src)];field=show_photo_front'><img src=photo_front height=80 width=80 border=4></a></td>"
dat += "<td><a href='?src=\ref[src];field=show_photo_side'><img src=photo_side height=80 width=80 border=4></a></td></tr>" dat += "<td><a href='?src=[REF(src)];field=show_photo_side'><img src=photo_side height=80 width=80 border=4></a></td></tr>"
dat += "<tr><td>ID:</td><td>[active1.fields["id"]]</td></tr>" dat += "<tr><td>ID:</td><td>[active1.fields["id"]]</td></tr>"
dat += "<tr><td>Sex:</td><td><A href='?src=\ref[src];field=sex'>&nbsp;[active1.fields["sex"]]&nbsp;</A></td></tr>" dat += "<tr><td>Sex:</td><td><A href='?src=[REF(src)];field=sex'>&nbsp;[active1.fields["sex"]]&nbsp;</A></td></tr>"
dat += "<tr><td>Age:</td><td><A href='?src=\ref[src];field=age'>&nbsp;[active1.fields["age"]]&nbsp;</A></td></tr>" dat += "<tr><td>Age:</td><td><A href='?src=[REF(src)];field=age'>&nbsp;[active1.fields["age"]]&nbsp;</A></td></tr>"
dat += "<tr><td>Species:</td><td><A href='?src=\ref[src];field=species'>&nbsp;[active1.fields["species"]]&nbsp;</A></td></tr>" dat += "<tr><td>Species:</td><td><A href='?src=[REF(src)];field=species'>&nbsp;[active1.fields["species"]]&nbsp;</A></td></tr>"
dat += "<tr><td>Fingerprint:</td><td><A href='?src=\ref[src];field=fingerprint'>&nbsp;[active1.fields["fingerprint"]]&nbsp;</A></td></tr>" dat += "<tr><td>Fingerprint:</td><td><A href='?src=[REF(src)];field=fingerprint'>&nbsp;[active1.fields["fingerprint"]]&nbsp;</A></td></tr>"
dat += "<tr><td>Physical Status:</td><td><A href='?src=\ref[src];field=p_stat'>&nbsp;[active1.fields["p_stat"]]&nbsp;</A></td></tr>" dat += "<tr><td>Physical Status:</td><td><A href='?src=[REF(src)];field=p_stat'>&nbsp;[active1.fields["p_stat"]]&nbsp;</A></td></tr>"
dat += "<tr><td>Mental Status:</td><td><A href='?src=\ref[src];field=m_stat'>&nbsp;[active1.fields["m_stat"]]&nbsp;</A></td></tr>" dat += "<tr><td>Mental Status:</td><td><A href='?src=[REF(src)];field=m_stat'>&nbsp;[active1.fields["m_stat"]]&nbsp;</A></td></tr>"
else else
dat += "<tr><td>General Record Lost!</td></tr>" dat += "<tr><td>General Record Lost!</td></tr>"
dat += "<tr><td><br><b><font size='4'>Medical Data</font></b></td></tr>" dat += "<tr><td><br><b><font size='4'>Medical Data</font></b></td></tr>"
if(active2 in GLOB.data_core.medical) if(active2 in GLOB.data_core.medical)
dat += "<tr><td>Blood Type:</td><td><A href='?src=\ref[src];field=blood_type'>&nbsp;[active2.fields["blood_type"]]&nbsp;</A></td></tr>" dat += "<tr><td>Blood Type:</td><td><A href='?src=[REF(src)];field=blood_type'>&nbsp;[active2.fields["blood_type"]]&nbsp;</A></td></tr>"
dat += "<tr><td>DNA:</td><td><A href='?src=\ref[src];field=b_dna'>&nbsp;[active2.fields["b_dna"]]&nbsp;</A></td></tr>" dat += "<tr><td>DNA:</td><td><A href='?src=[REF(src)];field=b_dna'>&nbsp;[active2.fields["b_dna"]]&nbsp;</A></td></tr>"
dat += "<tr><td><br>Minor Disabilities:</td><td><br><A href='?src=\ref[src];field=mi_dis'>&nbsp;[active2.fields["mi_dis"]]&nbsp;</A></td></tr>" dat += "<tr><td><br>Minor Disabilities:</td><td><br><A href='?src=[REF(src)];field=mi_dis'>&nbsp;[active2.fields["mi_dis"]]&nbsp;</A></td></tr>"
dat += "<tr><td>Details:</td><td><A href='?src=\ref[src];field=mi_dis_d'>&nbsp;[active2.fields["mi_dis_d"]]&nbsp;</A></td></tr>" dat += "<tr><td>Details:</td><td><A href='?src=[REF(src)];field=mi_dis_d'>&nbsp;[active2.fields["mi_dis_d"]]&nbsp;</A></td></tr>"
dat += "<tr><td><br>Major Disabilities:</td><td><br><A href='?src=\ref[src];field=ma_dis'>&nbsp;[active2.fields["ma_dis"]]&nbsp;</A></td></tr>" dat += "<tr><td><br>Major Disabilities:</td><td><br><A href='?src=[REF(src)];field=ma_dis'>&nbsp;[active2.fields["ma_dis"]]&nbsp;</A></td></tr>"
dat += "<tr><td>Details:</td><td><A href='?src=\ref[src];field=ma_dis_d'>&nbsp;[active2.fields["ma_dis_d"]]&nbsp;</A></td></tr>" dat += "<tr><td>Details:</td><td><A href='?src=[REF(src)];field=ma_dis_d'>&nbsp;[active2.fields["ma_dis_d"]]&nbsp;</A></td></tr>"
dat += "<tr><td><br>Allergies:</td><td><br><A href='?src=\ref[src];field=alg'>&nbsp;[active2.fields["alg"]]&nbsp;</A></td></tr>" dat += "<tr><td><br>Allergies:</td><td><br><A href='?src=[REF(src)];field=alg'>&nbsp;[active2.fields["alg"]]&nbsp;</A></td></tr>"
dat += "<tr><td>Details:</td><td><A href='?src=\ref[src];field=alg_d'>&nbsp;[active2.fields["alg_d"]]&nbsp;</A></td></tr>" dat += "<tr><td>Details:</td><td><A href='?src=[REF(src)];field=alg_d'>&nbsp;[active2.fields["alg_d"]]&nbsp;</A></td></tr>"
dat += "<tr><td><br>Current Diseases:</td><td><br><A href='?src=\ref[src];field=cdi'>&nbsp;[active2.fields["cdi"]]&nbsp;</A></td></tr>" //(per disease info placed in log/comment section) dat += "<tr><td><br>Current Diseases:</td><td><br><A href='?src=[REF(src)];field=cdi'>&nbsp;[active2.fields["cdi"]]&nbsp;</A></td></tr>" //(per disease info placed in log/comment section)
dat += "<tr><td>Details:</td><td><A href='?src=\ref[src];field=cdi_d'>&nbsp;[active2.fields["cdi_d"]]&nbsp;</A></td></tr>" dat += "<tr><td>Details:</td><td><A href='?src=[REF(src)];field=cdi_d'>&nbsp;[active2.fields["cdi_d"]]&nbsp;</A></td></tr>"
dat += "<tr><td><br>Important Notes:</td><td><br><A href='?src=\ref[src];field=notes'>&nbsp;[active2.fields["notes"]]&nbsp;</A></td></tr>" dat += "<tr><td><br>Important Notes:</td><td><br><A href='?src=[REF(src)];field=notes'>&nbsp;[active2.fields["notes"]]&nbsp;</A></td></tr>"
dat += "<tr><td><br><b><font size='4'>Comments/Log</font></b></td></tr>" dat += "<tr><td><br><b><font size='4'>Comments/Log</font></b></td></tr>"
var/counter = 1 var/counter = 1
while(src.active2.fields[text("com_[]", counter)]) while(src.active2.fields[text("com_[]", counter)])
dat += "<tr><td>[active2.fields[text("com_[]", counter)]]</td></tr><tr><td><A href='?src=\ref[src];del_c=[counter]'>Delete Entry</A></td></tr>" dat += "<tr><td>[active2.fields[text("com_[]", counter)]]</td></tr><tr><td><A href='?src=[REF(src)];del_c=[counter]'>Delete Entry</A></td></tr>"
counter++ counter++
dat += "<tr><td><A href='?src=\ref[src];add_c=1'>Add Entry</A></td></tr>" dat += "<tr><td><A href='?src=[REF(src)];add_c=1'>Add Entry</A></td></tr>"
dat += "<tr><td><br><A href='?src=\ref[src];del_r=1'>Delete Record (Medical Only)</A></td></tr>" dat += "<tr><td><br><A href='?src=[REF(src)];del_r=1'>Delete Record (Medical Only)</A></td></tr>"
else else
dat += "<tr><td>Medical Record Lost!</tr>" dat += "<tr><td>Medical Record Lost!</tr>"
dat += "<tr><td><br><A href='?src=\ref[src];new=1'>New Record</A></td></tr>" dat += "<tr><td><br><A href='?src=[REF(src)];new=1'>New Record</A></td></tr>"
dat += "<tr><td><A href='?src=\ref[src];print_p=1'>Print Record</A></td></tr>" dat += "<tr><td><A href='?src=[REF(src)];print_p=1'>Print Record</A></td></tr>"
dat += "<tr><td><A href='?src=\ref[src];screen=2'>Back</A></td></tr>" dat += "<tr><td><A href='?src=[REF(src)];screen=2'>Back</A></td></tr>"
dat += "</table>" dat += "</table>"
if(5) if(5)
dat += "<CENTER><B>Virus Database</B></CENTER>" dat += "<CENTER><B>Virus Database</B></CENTER>"
@@ -166,11 +166,11 @@
continue // TODO (tm): Add advance diseases to the virus database which no one uses. continue // TODO (tm): Add advance diseases to the virus database which no one uses.
if(!Dis.desc) if(!Dis.desc)
continue continue
dat += "<br><a href='?src=\ref[src];vir=[Dt]'>[Dis.name]</a>" dat += "<br><a href='?src=[REF(src)];vir=[Dt]'>[Dis.name]</a>"
dat += "<br><a href='?src=\ref[src];screen=1'>Back</a>" dat += "<br><a href='?src=[REF(src)];screen=1'>Back</a>"
if(6) if(6)
dat += "<center><b>Medical Robot Monitor</b></center>" dat += "<center><b>Medical Robot Monitor</b></center>"
dat += "<a href='?src=\ref[src];screen=1'>Back</a>" dat += "<a href='?src=[REF(src)];screen=1'>Back</a>"
dat += "<br><b>Medical Robots:</b>" dat += "<br><b>Medical Robots:</b>"
var/bdat = null var/bdat = null
for(var/mob/living/simple_animal/bot/medbot/M in GLOB.living_mob_list) for(var/mob/living/simple_animal/bot/medbot/M in GLOB.living_mob_list)
@@ -191,7 +191,7 @@
else else
else else
dat += text("<A href='?src=\ref[];login=1'>{Log In}</A>", src) dat += "<A href='?src=[REF(src)];login=1'>{Log In}</A>"
var/datum/browser/popup = new(user, "med_rec", "Medical Records Console", 600, 400) var/datum/browser/popup = new(user, "med_rec", "Medical Records Console", 600, 400)
popup.set_content(dat) 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(src.icon, src.icon_state))
@@ -286,7 +286,7 @@
<BR><b>Severity:</b> [Dis.severity]"} <BR><b>Severity:</b> [Dis.severity]"}
else if(href_list["del_all"]) else if(href_list["del_all"])
src.temp = text("Are you sure you wish to delete all records?<br>\n\t<A href='?src=\ref[];temp=1;del_all2=1'>Yes</A><br>\n\t<A href='?src=\ref[];temp=1'>No</A><br>", src, src) src.temp = "Are you sure you wish to delete all records?<br>\n\t<A href='?src=[REF(src)];temp=1;del_all2=1'>Yes</A><br>\n\t<A href='?src=[REF(src)];temp=1'>No</A><br>"
else if(href_list["del_all2"]) else if(href_list["del_all2"])
investigate_log("[usr.name] ([usr.key]) has deleted all medical records.", INVESTIGATE_RECORDS) investigate_log("[usr.name] ([usr.key]) has deleted all medical records.", INVESTIGATE_RECORDS)
@@ -377,13 +377,13 @@
src.active2.fields["notes"] = t1 src.active2.fields["notes"] = t1
if("p_stat") if("p_stat")
if(active1) if(active1)
src.temp = text("<B>Physical Condition:</B><BR>\n\t<A href='?src=\ref[];temp=1;p_stat=deceased'>*Deceased*</A><BR>\n\t<A href='?src=\ref[];temp=1;p_stat=unconscious'>*Unconscious*</A><BR>\n\t<A href='?src=\ref[];temp=1;p_stat=active'>Active</A><BR>\n\t<A href='?src=\ref[];temp=1;p_stat=unfit'>Physically Unfit</A><BR>", src, src, src, src) src.temp = "<B>Physical Condition:</B><BR>\n\t<A href='?src=[REF(src)];temp=1;p_stat=deceased'>*Deceased*</A><BR>\n\t<A href='?src=[REF(src)];temp=1;p_stat=unconscious'>*Unconscious*</A><BR>\n\t<A href='?src=[REF(src)];temp=1;p_stat=active'>Active</A><BR>\n\t<A href='?src=[REF(src)];temp=1;p_stat=unfit'>Physically Unfit</A><BR>"
if("m_stat") if("m_stat")
if(active1) if(active1)
src.temp = text("<B>Mental Condition:</B><BR>\n\t<A href='?src=\ref[];temp=1;m_stat=insane'>*Insane*</A><BR>\n\t<A href='?src=\ref[];temp=1;m_stat=unstable'>*Unstable*</A><BR>\n\t<A href='?src=\ref[];temp=1;m_stat=watch'>*Watch*</A><BR>\n\t<A href='?src=\ref[];temp=1;m_stat=stable'>Stable</A><BR>", src, src, src, src) src.temp = "<B>Mental Condition:</B><BR>\n\t<A href='?src=[REF(src)];temp=1;m_stat=insane'>*Insane*</A><BR>\n\t<A href='?src=[REF(src)];temp=1;m_stat=unstable'>*Unstable*</A><BR>\n\t<A href='?src=[REF(src)];temp=1;m_stat=watch'>*Watch*</A><BR>\n\t<A href='?src=[REF(src)];temp=1;m_stat=stable'>Stable</A><BR>"
if("blood_type") if("blood_type")
if(active2) if(active2)
src.temp = text("<B>Blood Type:</B><BR>\n\t<A href='?src=\ref[];temp=1;blood_type=an'>A-</A> <A href='?src=\ref[];temp=1;blood_type=ap'>A+</A><BR>\n\t<A href='?src=\ref[];temp=1;blood_type=bn'>B-</A> <A href='?src=\ref[];temp=1;blood_type=bp'>B+</A><BR>\n\t<A href='?src=\ref[];temp=1;blood_type=abn'>AB-</A> <A href='?src=\ref[];temp=1;blood_type=abp'>AB+</A><BR>\n\t<A href='?src=\ref[];temp=1;blood_type=on'>O-</A> <A href='?src=\ref[];temp=1;blood_type=op'>O+</A><BR>", src, src, src, src, src, src, src, src) src.temp = "<B>Blood Type:</B><BR>\n\t<A href='?src=[REF(src)];temp=1;blood_type=an'>A-</A> <A href='?src=[REF(src)];temp=1;blood_type=ap'>A+</A><BR>\n\t<A href='?src=[REF(src)];temp=1;blood_type=bn'>B-</A> <A href='?src=[REF(src)];temp=1;blood_type=bp'>B+</A><BR>\n\t<A href='?src=[REF(src)];temp=1;blood_type=abn'>AB-</A> <A href='?src=[REF(src)];temp=1;blood_type=abp'>AB+</A><BR>\n\t<A href='?src=[REF(src)];temp=1;blood_type=on'>O-</A> <A href='?src=[REF(src)];temp=1;blood_type=op'>O+</A><BR>"
if("b_dna") if("b_dna")
if(active2) if(active2)
var/t1 = stripped_input("Please input DNA hash:", "Med. records", src.active2.fields["b_dna"], null) var/t1 = stripped_input("Please input DNA hash:", "Med. records", src.active2.fields["b_dna"], null)
@@ -452,7 +452,7 @@
else if(href_list["del_r"]) else if(href_list["del_r"])
if(active2) if(active2)
src.temp = text("Are you sure you wish to delete the record (Medical Portion Only)?<br>\n\t<A href='?src=\ref[];temp=1;del_r2=1'>Yes</A><br>\n\t<A href='?src=\ref[];temp=1'>No</A><br>", src, src) src.temp = "Are you sure you wish to delete the record (Medical Portion Only)?<br>\n\t<A href='?src=[REF(src)];temp=1;del_r2=1'>Yes</A><br>\n\t<A href='?src=[REF(src)];temp=1'>No</A><br>"
else if(href_list["del_r2"]) else if(href_list["del_r2"])
investigate_log("[usr.name] ([usr.key]) has deleted the medical records for [active1.fields["name"]].", INVESTIGATE_RECORDS) investigate_log("[usr.name] ([usr.key]) has deleted the medical records for [active1.fields["name"]].", INVESTIGATE_RECORDS)

View File

@@ -1,3 +1,4 @@
<<<<<<< HEAD
// Allows you to monitor messages that passes the server. // Allows you to monitor messages that passes the server.
@@ -471,3 +472,478 @@
info_links = info info_links = info
add_overlay("paper_words") add_overlay("paper_words")
break break
=======
// Allows you to monitor messages that passes the server.
/obj/machinery/computer/message_monitor
name = "message monitor console"
desc = "Used to Monitor the crew's messages, that are sent via PDA. Can also be used to view Request Console messages."
icon_screen = "comm_logs"
circuit = /obj/item/circuitboard/computer/message_monitor
//Server linked to.
var/obj/machinery/message_server/linkedServer = null
//Sparks effect - For emag
var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread
//Messages - Saves me time if I want to change something.
var/noserver = "<span class='alert'>ALERT: No server detected.</span>"
var/incorrectkey = "<span class='warning'>ALERT: Incorrect decryption key!</span>"
var/defaultmsg = "<span class='notice'>Welcome. Please select an option.</span>"
var/rebootmsg = "<span class='warning'>%$&(<28>: Critical %$$@ Error // !RestArting! <lOadiNg backUp iNput ouTput> - ?pLeaSe wAit!</span>"
//Computer properties
var/screen = 0 // 0 = Main menu, 1 = Message Logs, 2 = Hacked screen, 3 = Custom Message
var/hacking = 0 // Is it being hacked into by the AI/Cyborg
var/message = "<span class='notice'>System bootup complete. Please select an option.</span>" // The message that shows on the main menu.
var/auth = 0 // Are they authenticated?
var/optioncount = 7
// Custom Message Properties
var/customsender = "System Administrator"
var/obj/item/device/pda/customrecepient = null
var/customjob = "Admin"
var/custommessage = "This is a test, please ignore."
light_color = LIGHT_COLOR_GREEN
/obj/machinery/computer/message_monitor/attackby(obj/item/O, mob/living/user, params)
if(istype(O, /obj/item/screwdriver) && emagged)
//Stops people from just unscrewing the monitor and putting it back to get the console working again.
to_chat(user, "<span class='warning'>It is too hot to mess with!</span>")
else
return ..()
/obj/machinery/computer/message_monitor/emag_act(mob/user)
if(emagged)
return
if(!isnull(src.linkedServer))
emagged = TRUE
screen = 2
spark_system.set_up(5, 0, src)
src.spark_system.start()
var/obj/item/paper/monitorkey/MK = new/obj/item/paper/monitorkey
MK.loc = src.loc
// Will help make emagging the console not so easy to get away with.
MK.info += "<br><br><font color='red'><3E>%@%(*$%&(<28>&?*(%&<26>/{}</font>"
var/time = 100 * length(src.linkedServer.decryptkey)
addtimer(CALLBACK(src, .proc/UnmagConsole), time)
message = rebootmsg
else
to_chat(user, "<span class='notice'>A no server error appears on the screen.</span>")
/obj/machinery/computer/message_monitor/Initialize()
. = ..()
//Is the server isn't linked to a server, and there's a server available, default it to the first one in the list.
if(!linkedServer)
if(GLOB.message_servers && GLOB.message_servers.len > 0)
linkedServer = GLOB.message_servers[1]
/obj/machinery/computer/message_monitor/attack_hand(mob/living/user)
if(..())
return
//If the computer is being hacked or is emagged, display the reboot message.
if(hacking || emagged)
message = rebootmsg
var/dat = "<center><font color='blue'[message]</font>/</center>"
if(auth)
dat += "<h4><dd><A href='?src=[REF(src)];auth=1'>&#09;<font color='green'>\[Authenticated\]</font></a>&#09;/"
dat += " Server Power: <A href='?src=[REF(src)];active=1'>[src.linkedServer && src.linkedServer.active ? "<font color='green'>\[On\]</font>":"<font color='red'>\[Off\]</font>"]</a></h4>"
else
dat += "<h4><dd><A href='?src=[REF(src)];auth=1'>&#09;<font color='red'>\[Unauthenticated\]</font></a>&#09;/"
dat += " Server Power: <u>[src.linkedServer && src.linkedServer.active ? "<font color='green'>\[On\]</font>":"<font color='red'>\[Off\]</font>"]</u></h4>"
if(hacking || emagged)
screen = 2
else if(!auth || !linkedServer || (linkedServer.stat & (NOPOWER|BROKEN)))
if(!linkedServer || (linkedServer.stat & (NOPOWER|BROKEN)))
message = noserver
screen = 0
switch(screen)
//Main menu
if(0)
//&#09; = TAB
var/i = 0
dat += "<dd><A href='?src=[REF(src)];find=1'>&#09;[++i]. Link To A Server</a></dd>"
if(auth)
if(!linkedServer || (linkedServer.stat & (NOPOWER|BROKEN)))
dat += "<dd><A>&#09;ERROR: Server not found!</A><br></dd>"
else
dat += "<dd><A href='?src=[REF(src)];view=1'>&#09;[++i]. View Message Logs </a><br></dd>"
dat += "<dd><A href='?src=[REF(src)];viewr=1'>&#09;[++i]. View Request Console Logs </a></br></dd>"
dat += "<dd><A href='?src=[REF(src)];clear=1'>&#09;[++i]. Clear Message Logs</a><br></dd>"
dat += "<dd><A href='?src=[REF(src)];clearr=1'>&#09;[++i]. Clear Request Console Logs</a><br></dd>"
dat += "<dd><A href='?src=[REF(src)];pass=1'>&#09;[++i]. Set Custom Key</a><br></dd>"
dat += "<dd><A href='?src=[REF(src)];msg=1'>&#09;[++i]. Send Admin Message</a><br></dd>"
else
for(var/n = ++i; n <= optioncount; n++)
dat += "<dd><font color='blue'>&#09;[n]. ---------------</font><br></dd>"
if(issilicon(usr) && is_special_character(usr))
//Malf/Traitor AIs can bruteforce into the system to gain the Key.
dat += "<dd><A href='?src=[REF(src)];hack=1'><i><font color='Red'>*&@#. Bruteforce Key</font></i></font></a><br></dd>"
else
dat += "<br>"
//Bottom message
if(!auth)
dat += "<br><hr><dd><span class='notice'>Please authenticate with the server in order to show additional options.</span>"
else
dat += "<br><hr><dd><span class='warning'>Reg, #514 forbids sending messages to a Head of Staff containing Erotic Rendering Properties.</span>"
//Message Logs
if(1)
var/index = 0
//var/recipient = "Unspecified" //name of the person
//var/sender = "Unspecified" //name of the sender
//var/message = "Blank" //transferred message
dat += "<center><A href='?src=[REF(src)];back=1'>Back</a> - <A href='?src=[REF(src)];refresh=1'>Refresh</center><hr>"
dat += "<table border='1' width='100%'><tr><th width = '5%'>X</th><th width='15%'>Sender</th><th width='15%'>Recipient</th><th width='300px' word-wrap: break-word>Message</th></tr>"
for(var/datum/data_pda_msg/pda in src.linkedServer.pda_msgs)
index++
if(index > 3000)
break
// Del - Sender - Recepient - Message
// X - Al Green - Your Mom - WHAT UP!?
dat += "<tr><td width = '5%'><center><A href='?src=[REF(src)];delete=[REF(pda)]' style='color: rgb(255,0,0)'>X</a></center></td><td width='15%'>[pda.sender]</td><td width='15%'>[pda.recipient]</td><td width='300px'>[pda.message][pda.photo ? "<a href='byond://?src=[REF(pda)];photo=1'>(Photo)</a>":""]</td></tr>"
dat += "</table>"
//Hacking screen.
if(2)
if(isAI(user) || iscyborg(user))
dat += "Brute-forcing for server key.<br> It will take 20 seconds for every character that the password has."
dat += "In the meantime, this console can reveal your true intentions if you let someone access it. Make sure no humans enter the room during that time."
else
//It's the same message as the one above but in binary. Because robots understand binary and humans don't... well I thought it was clever.
dat += {"01000010011100100111010101110100011001010010110<br>
10110011001101111011100100110001101101001011011100110011<br>
10010000001100110011011110111001000100000011100110110010<br>
10111001001110110011001010111001000100000011010110110010<br>
10111100100101110001000000100100101110100001000000111011<br>
10110100101101100011011000010000001110100011000010110101<br>
10110010100100000001100100011000000100000011100110110010<br>
10110001101101111011011100110010001110011001000000110011<br>
00110111101110010001000000110010101110110011001010111001<br>
00111100100100000011000110110100001100001011100100110000<br>
10110001101110100011001010111001000100000011101000110100<br>
00110000101110100001000000111010001101000011001010010000<br>
00111000001100001011100110111001101110111011011110111001<br>
00110010000100000011010000110000101110011001011100010000<br>
00100100101101110001000000111010001101000011001010010000<br>
00110110101100101011000010110111001110100011010010110110<br>
10110010100101100001000000111010001101000011010010111001<br>
10010000001100011011011110110111001110011011011110110110<br>
00110010100100000011000110110000101101110001000000111001<br>
00110010101110110011001010110000101101100001000000111100<br>
10110111101110101011100100010000001110100011100100111010<br>
10110010100100000011010010110111001110100011001010110111<br>
00111010001101001011011110110111001110011001000000110100<br>
10110011000100000011110010110111101110101001000000110110<br>
00110010101110100001000000111001101101111011011010110010<br>
10110111101101110011001010010000001100001011000110110001<br>
10110010101110011011100110010000001101001011101000010111<br>
00010000001001101011000010110101101100101001000000111001<br>
10111010101110010011001010010000001101110011011110010000<br>
00110100001110101011011010110000101101110011100110010000<br>
00110010101101110011101000110010101110010001000000111010<br>
00110100001100101001000000111001001101111011011110110110<br>
10010000001100100011101010111001001101001011011100110011<br>
10010000001110100011010000110000101110100001000000111010<br>
001101001011011010110010100101110"}
//Fake messages
if(3)
dat += "<center><A href='?src=[REF(src)];back=1'>Back</a> - <A href='?src=[REF(src)];Reset=1'>Reset</a></center><hr>"
dat += {"<table border='1' width='100%'>
<tr><td width='20%'><A href='?src=[REF(src)];select=Sender'>Sender</a></td>
<td width='20%'><A href='?src=[REF(src)];select=RecJob'>Sender's Job</a></td>
<td width='20%'><A href='?src=[REF(src)];select=Recepient'>Recipient</a></td>
<td width='300px' word-wrap: break-word><A href='?src=[REF(src)];select=Message'>Message</a></td></tr>"}
//Sender - Sender's Job - Recepient - Message
//Al Green- Your Dad - Your Mom - WHAT UP!?
dat += {"<tr><td width='20%'>[customsender]</td>
<td width='20%'>[customjob]</td>
<td width='20%'>[customrecepient ? customrecepient.owner : "NONE"]</td>
<td width='300px'>[custommessage]</td></tr>"}
dat += "</table><br><center><A href='?src=[REF(src)];select=Send'>Send</a>"
//Request Console Logs
if(4)
var/index = 0
/* data_rc_msg
X - 5%
var/rec_dpt = "Unspecified" //name of the person - 15%
var/send_dpt = "Unspecified" //name of the sender- 15%
var/message = "Blank" //transferred message - 300px
var/stamp = "Unstamped" - 15%
var/id_auth = "Unauthenticated" - 15%
var/priority = "Normal" - 10%
*/
dat += "<center><A href='?src=[REF(src)];back=1'>Back</a> - <A href='?src=[REF(src)];refresh=1'>Refresh</center><hr>"
dat += {"<table border='1' width='100%'><tr><th width = '5%'>X</th><th width='15%'>Sending Dep.</th><th width='15%'>Receiving Dep.</th>
<th width='300px' word-wrap: break-word>Message</th><th width='15%'>Stamp</th><th width='15%'>ID Auth.</th><th width='15%'>Priority.</th></tr>"}
for(var/datum/data_rc_msg/rc in src.linkedServer.rc_msgs)
index++
if(index > 3000)
break
// Del - Sender - Recepient - Message
// X - Al Green - Your Mom - WHAT UP!?
dat += {"<tr><td width = '5%'><center><A href='?src=[REF(src)];deleter=[REF(rc)]' style='color: rgb(255,0,0)'>X</a></center></td><td width='15%'>[rc.send_dpt]</td>
<td width='15%'>[rc.rec_dpt]</td><td width='300px'>[rc.message]</td><td width='15%'>[rc.stamp]</td><td width='15%'>[rc.id_auth]</td><td width='15%'>[rc.priority]</td></tr>"}
dat += "</table>"
message = defaultmsg
var/datum/browser/popup = new(user, "hologram_console", name, 700, 700)
popup.set_content(dat)
popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state))
popup.open()
return
/obj/machinery/computer/message_monitor/proc/BruteForce(mob/user)
if(isnull(linkedServer))
to_chat(user, "<span class='warning'>Could not complete brute-force: Linked Server Disconnected!</span>")
else
var/currentKey = src.linkedServer.decryptkey
to_chat(user, "<span class='warning'>Brute-force completed! The key is '[currentKey]'.</span>")
src.hacking = 0
src.screen = 0 // Return the screen back to normal
/obj/machinery/computer/message_monitor/proc/UnmagConsole()
emagged = FALSE
/obj/machinery/computer/message_monitor/proc/ResetMessage()
customsender = "System Administrator"
customrecepient = null
custommessage = "This is a test, please ignore."
customjob = "Admin"
/obj/machinery/computer/message_monitor/Topic(href, href_list)
if(..())
return
if(usr.contents.Find(src) || (in_range(src, usr) && isturf(loc)) || issilicon(usr))
//Authenticate
if (href_list["auth"])
if(!linkedServer || linkedServer.stat & (NOPOWER|BROKEN))
message = noserver
else
if(auth)
auth = 0
screen = 0
else
var/dkey = trim(input(usr, "Please enter the decryption key.") as text|null)
if(dkey && dkey != "")
if(src.linkedServer.decryptkey == dkey)
auth = 1
else
message = incorrectkey
//Turn the server on/off.
if (href_list["active"])
if(auth)
linkedServer.active = !linkedServer.active
//Find a server
if (href_list["find"])
if(GLOB.message_servers && GLOB.message_servers.len > 1)
src.linkedServer = input(usr,"Please select a server.", "Select a server.", null) as null|anything in GLOB.message_servers
message = "<span class='alert'>NOTICE: Server selected.</span>"
else if(GLOB.message_servers && GLOB.message_servers.len > 0)
linkedServer = GLOB.message_servers[1]
message = "<span class='notice'>NOTICE: Only Single Server Detected - Server selected.</span>"
else
message = noserver
//View the logs - KEY REQUIRED
if (href_list["view"])
if(src.linkedServer == null || (src.linkedServer.stat & (NOPOWER|BROKEN)))
message = noserver
else
if(auth)
src.screen = 1
//Clears the logs - KEY REQUIRED
if (href_list["clear"])
if(!linkedServer || (src.linkedServer.stat & (NOPOWER|BROKEN)))
message = noserver
else
if(auth)
src.linkedServer.pda_msgs = list()
message = "<span class='notice'>NOTICE: Logs cleared.</span>"
//Clears the request console logs - KEY REQUIRED
if (href_list["clearr"])
if(!linkedServer || (src.linkedServer.stat & (NOPOWER|BROKEN)))
message = noserver
else
if(auth)
src.linkedServer.rc_msgs = list()
message = "<span class='notice'>NOTICE: Logs cleared.</span>"
//Change the password - KEY REQUIRED
if (href_list["pass"])
if(!linkedServer || (src.linkedServer.stat & (NOPOWER|BROKEN)))
message = noserver
else
if(auth)
var/dkey = trim(stripped_input(usr, "Please enter the decryption key."))
if(dkey && dkey != "")
if(src.linkedServer.decryptkey == dkey)
var/newkey = trim(input(usr,"Please enter the new key (3 - 16 characters max):"))
if(length(newkey) <= 3)
message = "<span class='notice'>NOTICE: Decryption key too short!</span>"
else if(length(newkey) > 16)
message = "<span class='notice'>NOTICE: Decryption key too long!</span>"
else if(newkey && newkey != "")
src.linkedServer.decryptkey = newkey
message = "<span class='notice'>NOTICE: Decryption key set.</span>"
else
message = incorrectkey
//Hack the Console to get the password
if (href_list["hack"])
if(issilicon(usr) && is_special_character(usr))
src.hacking = 1
src.screen = 2
//Time it takes to bruteforce is dependant on the password length.
spawn(100*length(src.linkedServer.decryptkey))
if(src && src.linkedServer && usr)
BruteForce(usr)
//Delete the log.
if (href_list["delete"])
//Are they on the view logs screen?
if(screen == 1)
if(!linkedServer || (src.linkedServer.stat & (NOPOWER|BROKEN)))
message = noserver
else //if(istype(href_list["delete"], /datum/data_pda_msg))
src.linkedServer.pda_msgs -= locate(href_list["delete"])
message = "<span class='notice'>NOTICE: Log Deleted!</span>"
//Delete the request console log.
if (href_list["deleter"])
//Are they on the view logs screen?
if(screen == 4)
if(!linkedServer || (src.linkedServer.stat & (NOPOWER|BROKEN)))
message = noserver
else //if(istype(href_list["delete"], /datum/data_pda_msg))
src.linkedServer.rc_msgs -= locate(href_list["deleter"])
message = "<span class='notice'>NOTICE: Log Deleted!</span>"
//Create a custom message
if (href_list["msg"])
if(src.linkedServer == null || (src.linkedServer.stat & (NOPOWER|BROKEN)))
message = noserver
else
if(auth)
src.screen = 3
//Fake messaging selection - KEY REQUIRED
if (href_list["select"])
if(src.linkedServer == null || (src.linkedServer.stat & (NOPOWER|BROKEN)))
message = noserver
screen = 0
else
switch(href_list["select"])
//Reset
if("Reset")
ResetMessage()
//Select Your Name
if("Sender")
customsender = stripped_input(usr, "Please enter the sender's name.")
//Select Receiver
if("Recepient")
//Get out list of viable PDAs
var/list/obj/item/device/pda/sendPDAs = get_viewable_pdas()
if(GLOB.PDAs && GLOB.PDAs.len > 0)
customrecepient = input(usr, "Select a PDA from the list.") as null|anything in sortNames(sendPDAs)
else
customrecepient = null
//Enter custom job
if("RecJob")
customjob = stripped_input(usr, "Please enter the sender's job.")
//Enter message
if("Message")
custommessage = stripped_input(usr, "Please enter your message.")
//Send message
if("Send")
if(isnull(customsender) || customsender == "")
customsender = "UNKNOWN"
if(isnull(customrecepient))
message = "<span class='notice'>NOTICE: No recepient selected!</span>"
return src.attack_hand(usr)
if(isnull(custommessage) || custommessage == "")
message = "<span class='notice'>NOTICE: No message entered!</span>"
return src.attack_hand(usr)
var/obj/item/device/pda/PDARec = null
for (var/obj/item/device/pda/P in get_viewable_pdas())
if(P.owner == customsender)
PDARec = P
//Sender isn't faking as someone who exists
if(isnull(PDARec))
src.linkedServer.send_pda_message("[customrecepient.owner]", "[customsender]","[custommessage]")
customrecepient.tnote += "<i><b>&larr; From <a href='byond://?src=[REF(customrecepient)];choice=Message;target=[REF(src)]'>[customsender]</a> ([customjob]):</b></i><br>[custommessage]<br>"
if (!customrecepient.silent)
playsound(customrecepient.loc, 'sound/machines/twobeep.ogg', 50, 1)
customrecepient.audible_message("[icon2html(customrecepient, viewers(customrecepient))] *[customrecepient.ttone]*", null, 3)
if( customrecepient.loc && ishuman(customrecepient.loc) )
var/mob/living/carbon/human/H = customrecepient.loc
to_chat(H, "[icon2html(customrecepient, viewers(H))] <b>Message from [customsender] ([customjob]), </b>\"[custommessage]\" (<a href='byond://?src=[REF(src)];choice=Message;skiprefresh=1;target=[REF(src)]'>Reply</a>)")
log_talk(usr,"[key_name(usr)] (PDA: [customsender]) sent \"[custommessage]\" to [customrecepient.owner]",LOGPDA)
customrecepient.cut_overlays()
customrecepient.add_overlay(mutable_appearance('icons/obj/pda.dmi', "pda-r"))
//Sender is faking as someone who exists
else
src.linkedServer.send_pda_message("[customrecepient.owner]", "[PDARec.owner]","[custommessage]")
customrecepient.tnote += "<i><b>&larr; From <a href='byond://?src=[REF(customrecepient)];choice=Message;target=[REF(PDARec)]'>[PDARec.owner]</a> ([customjob]):</b></i><br>[custommessage]<br>"
if (!customrecepient.silent)
playsound(customrecepient.loc, 'sound/machines/twobeep.ogg', 50, 1)
customrecepient.audible_message("[icon2html(customrecepient, viewers(customrecepient))] *[customrecepient.ttone]*", null, 3)
if( customrecepient.loc && ishuman(customrecepient.loc) )
var/mob/living/carbon/human/H = customrecepient.loc
to_chat(H, "[icon2html(customrecepient, H)] <b>Message from [PDARec.owner] ([customjob]), </b>\"[custommessage]\" (<a href='byond://?src=[REF(customrecepient)];choice=Message;skiprefresh=1;target=[REF(PDARec)]'>Reply</a>)")
log_talk(usr,"[key_name(usr)] (PDA: [PDARec.owner]) sent \"[custommessage]\" to [customrecepient.owner]",LOGPDA)
customrecepient.cut_overlays()
customrecepient.add_overlay(mutable_appearance('icons/obj/pda.dmi', "pda-r"))
//Finally..
ResetMessage()
//Request Console Logs - KEY REQUIRED
if(href_list["viewr"])
if(src.linkedServer == null || (src.linkedServer.stat & (NOPOWER|BROKEN)))
message = noserver
else
if(auth)
src.screen = 4
if (href_list["back"])
src.screen = 0
return src.attack_hand(usr)
/obj/item/paper/monitorkey
//..()
name = "monitor decryption key"
var/obj/machinery/message_server/server = null
/obj/item/paper/monitorkey/Initialize()
..()
return INITIALIZE_HINT_LATELOAD
/obj/item/paper/monitorkey/LateInitialize()
if(GLOB.message_servers)
for(var/obj/machinery/message_server/server in GLOB.message_servers)
if(!isnull(server))
if(!isnull(server.decryptkey))
info = "<center><h2>Daily Key Reset</h2></center><br>The new message monitor key is '[server.decryptkey]'.<br>Please keep this a secret and away from the clown.<br>If necessary, change the password to a more secure one."
info_links = info
add_overlay("paper_words")
break
>>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental

View File

@@ -48,21 +48,21 @@
if(connected) if(connected)
var/d2 var/d2
if(timing) //door controls do not need timers. if(timing) //door controls do not need timers.
d2 = "<A href='?src=\ref[src];time=0'>Stop Time Launch</A>" d2 = "<A href='?src=[REF(src)];time=0'>Stop Time Launch</A>"
else else
d2 = "<A href='?src=\ref[src];time=1'>Initiate Time Launch</A>" d2 = "<A href='?src=[REF(src)];time=1'>Initiate Time Launch</A>"
dat += "<HR>\nTimer System: [d2]\nTime Left: [DisplayTimeText(time)] <A href='?src=\ref[src];tp=-30'>-</A> <A href='?src=\ref[src];tp=-1'>-</A> <A href='?src=\ref[src];tp=1'>+</A> <A href='?src=\ref[src];tp=30'>+</A>" dat += "<HR>\nTimer System: [d2]\nTime Left: [DisplayTimeText(time)] <A href='?src=[REF(src)];tp=-30'>-</A> <A href='?src=[REF(src)];tp=-1'>-</A> <A href='?src=[REF(src)];tp=1'>+</A> <A href='?src=[REF(src)];tp=30'>+</A>"
var/temp = "" var/temp = ""
var/list/L = list( 0.25, 0.5, 1, 2, 4, 8, 16 ) var/list/L = list( 0.25, 0.5, 1, 2, 4, 8, 16 )
for(var/t in L) for(var/t in L)
if(t == connected.power) if(t == connected.power)
temp += "[t] " temp += "[t] "
else else
temp += "<A href = '?src=\ref[src];power=[t]'>[t]</A> " temp += "<A href = '?src=[REF(src)];power=[t]'>[t]</A> "
dat += "<HR>\nPower Level: [temp]<BR>\n<A href = '?src=\ref[src];alarm=1'>Firing Sequence</A><BR>\n<A href = '?src=\ref[src];drive=1'>Test Fire Driver</A><BR>\n<A href = '?src=\ref[src];door=1'>Toggle Outer Door</A><BR>" dat += "<HR>\nPower Level: [temp]<BR>\n<A href = '?src=[REF(src)];alarm=1'>Firing Sequence</A><BR>\n<A href = '?src=[REF(src)];drive=1'>Test Fire Driver</A><BR>\n<A href = '?src=[REF(src)];door=1'>Toggle Outer Door</A><BR>"
else else
dat += "<BR>\n<A href = '?src=\ref[src];door=1'>Toggle Outer Door</A><BR>" dat += "<BR>\n<A href = '?src=[REF(src)];door=1'>Toggle Outer Door</A><BR>"
dat += "<BR><BR><A href='?src=\ref[user];mach_close=computer'>Close</A>" dat += "<BR><BR><A href='?src=[REF(user)];mach_close=computer'>Close</A>"
add_fingerprint(usr) add_fingerprint(usr)
var/datum/browser/popup = new(user, "computer", title, 400, 500) var/datum/browser/popup = new(user, "computer", title, 400, 500)
popup.set_content(dat) popup.set_content(dat)

View File

@@ -21,16 +21,16 @@
user.set_machine(src) user.set_machine(src)
var/dat = "" var/dat = ""
if(screen == 0) if(screen == 0)
dat += "<HR><A href='?src=\ref[src];lock=1'>Unlock Console</A>" dat += "<HR><A href='?src=[REF(src)];lock=1'>Unlock Console</A>"
else if(screen == 1) else if(screen == 1)
dat += "<H3>Prisoner ID Management</H3>" dat += "<H3>Prisoner ID Management</H3>"
if(inserted_id) if(inserted_id)
dat += text("<A href='?src=\ref[src];id=eject'>[inserted_id]</A><br>") dat += text("<A href='?src=[REF(src)];id=eject'>[inserted_id]</A><br>")
dat += text("Collected Points: [inserted_id.points]. <A href='?src=\ref[src];id=reset'>Reset.</A><br>") dat += text("Collected Points: [inserted_id.points]. <A href='?src=[REF(src)];id=reset'>Reset.</A><br>")
dat += text("Card goal: [inserted_id.goal]. <A href='?src=\ref[src];id=setgoal'>Set </A><br>") dat += text("Card goal: [inserted_id.goal]. <A href='?src=[REF(src)];id=setgoal'>Set </A><br>")
dat += text("Space Law recommends quotas of 100 points per minute they would normally serve in the brig.<BR>") dat += text("Space Law recommends quotas of 100 points per minute they would normally serve in the brig.<BR>")
else else
dat += text("<A href='?src=\ref[src];id=insert'>Insert Prisoner ID.</A><br>") dat += text("<A href='?src=[REF(src)];id=insert'>Insert Prisoner ID.</A><br>")
dat += "<H3>Prisoner Implant Management</H3>" dat += "<H3>Prisoner Implant Management</H3>"
dat += "<HR>Chemical Implants<BR>" dat += "<HR>Chemical Implants<BR>"
var/turf/Tr = null var/turf/Tr = null
@@ -42,9 +42,9 @@
continue continue
dat += "ID: [C.imp_in.name] | Remaining Units: [C.reagents.total_volume] <BR>" dat += "ID: [C.imp_in.name] | Remaining Units: [C.reagents.total_volume] <BR>"
dat += "| Inject: " dat += "| Inject: "
dat += "<A href='?src=\ref[src];inject1=\ref[C]'>(<font class='bad'>(1)</font>)</A>" dat += "<A href='?src=[REF(src)];inject1=[REF(C)]'>(<font class='bad'>(1)</font>)</A>"
dat += "<A href='?src=\ref[src];inject5=\ref[C]'>(<font class='bad'>(5)</font>)</A>" dat += "<A href='?src=[REF(src)];inject5=[REF(C)]'>(<font class='bad'>(5)</font>)</A>"
dat += "<A href='?src=\ref[src];inject10=\ref[C]'>(<font class='bad'>(10)</font>)</A><BR>" dat += "<A href='?src=[REF(src)];inject10=[REF(C)]'>(<font class='bad'>(10)</font>)</A><BR>"
dat += "********************************<BR>" dat += "********************************<BR>"
dat += "<HR>Tracking Implants<BR>" dat += "<HR>Tracking Implants<BR>"
for(var/obj/item/implant/tracking/T in GLOB.tracked_implants) for(var/obj/item/implant/tracking/T in GLOB.tracked_implants)
@@ -61,9 +61,9 @@
loc_display = mob_loc.loc loc_display = mob_loc.loc
dat += "ID: [T.imp_in.name] | Location: [loc_display]<BR>" dat += "ID: [T.imp_in.name] | Location: [loc_display]<BR>"
dat += "<A href='?src=\ref[src];warn=\ref[T]'>(<font class='bad'><i>Message Holder</i></font>)</A> |<BR>" dat += "<A href='?src=[REF(src)];warn=[REF(T)]'>(<font class='bad'><i>Message Holder</i></font>)</A> |<BR>"
dat += "********************************<BR>" dat += "********************************<BR>"
dat += "<HR><A href='?src=\ref[src];lock=1'>Lock Console</A>" dat += "<HR><A href='?src=[REF(src)];lock=1'>Lock Console</A>"
var/datum/browser/popup = new(user, "computer", "Prisoner Management Console", 400, 500) var/datum/browser/popup = new(user, "computer", "Prisoner Management Console", 400, 500)
popup.set_content(dat) 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(src.icon, src.icon_state))

View File

@@ -7,6 +7,7 @@
icon_screen = "robot" icon_screen = "robot"
icon_keyboard = "rd_key" icon_keyboard = "rd_key"
req_access = list(ACCESS_ROBOTICS) req_access = list(ACCESS_ROBOTICS)
<<<<<<< HEAD
circuit = /obj/item/circuitboard/computer/robotics circuit = /obj/item/circuitboard/computer/robotics
var/temp = null var/temp = null
@@ -158,6 +159,159 @@
else if (href_list["killdrone"]) else if (href_list["killdrone"])
if(src.allowed(usr)) if(src.allowed(usr))
=======
circuit = /obj/item/circuitboard/computer/robotics
var/temp = null
light_color = LIGHT_COLOR_PINK
/obj/machinery/computer/robotics/proc/can_control(mob/user, mob/living/silicon/robot/R)
if(!istype(R))
return 0
if(isAI(user))
if (R.connected_ai != user)
return 0
if(iscyborg(user))
if (R != user)
return 0
if(R.scrambledcodes)
return 0
return 1
/obj/machinery/computer/robotics/attack_hand(mob/user)
if(..())
return
interact(user)
/obj/machinery/computer/robotics/interact(mob/user)
if (src.z > 6)
to_chat(user, "<span class='boldannounce'>Unable to establish a connection</span>: \black You're too far away from the station!")
return
user.set_machine(src)
var/dat
var/robots = 0
for(var/mob/living/silicon/robot/R in GLOB.mob_list)
if(!can_control(user, R))
continue
robots++
dat += "[R.name] |"
if(R.stat)
dat += " Not Responding |"
else if (!R.canmove)
dat += " Locked Down |"
else
dat += " Operating Normally |"
if (!R.canmove)
else if(R.cell)
dat += " Battery Installed ([R.cell.charge]/[R.cell.maxcharge]) |"
else
dat += " No Cell Installed |"
if(R.module)
dat += " Module Installed ([R.module.name]) |"
else
dat += " No Module Installed |"
if(R.connected_ai)
dat += " Slaved to [R.connected_ai.name] |"
else
dat += " Independent from AI |"
if(issilicon(user) || IsAdminGhost(user))
if(is_servant_of_ratvar(user) && user != R)
dat += "<A href='?src=[REF(src)];convert=[REF(R)]'>(<font color=#BE8700><i>Convert</i></font>)</A> "
else if(((issilicon(user) && is_special_character(user)) || IsAdminGhost(user)) && !R.emagged && (user != R || R.syndicate))
dat += "<A href='?src=[REF(src)];magbot=[REF(R)]'>(<font color=blue><i>Hack</i></font>)</A> "
dat += "<A href='?src=[REF(src)];stopbot=[REF(R)]'>(<font color=green><i>[R.canmove ? "Lockdown" : "Release"]</i></font>)</A> "
dat += "<A href='?src=[REF(src)];killbot=[REF(R)]'>(<font color=red><i>Destroy</i></font>)</A>"
dat += "<BR>"
if(!robots)
dat += "No Cyborg Units detected within access parameters."
dat += "<BR>"
var/drones = 0
for(var/mob/living/simple_animal/drone/D in GLOB.mob_list)
if(D.hacked)
continue
drones++
dat += "[D.name] |"
if(D.stat)
dat += " Not Responding |"
dat += "<A href='?src=[REF(src)];killdrone=[REF(D)]'>(<font color=red><i>Destroy</i></font>)</A>"
dat += "<BR>"
if(!drones)
dat += "No Drone Units detected within access parameters."
var/datum/browser/popup = new(user, "computer", "Cyborg Control Console", 400, 500)
popup.set_content(dat)
popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state))
popup.open()
return
/obj/machinery/computer/robotics/Topic(href, href_list)
if(..())
return
if (href_list["temp"])
src.temp = null
else if (href_list["killbot"])
if(src.allowed(usr))
var/mob/living/silicon/robot/R = locate(href_list["killbot"]) in GLOB.silicon_mobs
if(can_control(usr, R))
var/choice = input("Are you certain you wish to detonate [R.name]?") in list("Confirm", "Abort")
if(choice == "Confirm" && can_control(usr, R) && !..())
if(R.syndicate && R.emagged)
to_chat(R, "Extreme danger. Termination codes detected. Scrambling security codes and automatic AI unlink triggered.")
if(R.connected_ai)
to_chat(R.connected_ai, "<br><br><span class='alert'>ALERT - Cyborg detonation detected: [R.name]</span><br>")
R.ResetSecurityCodes()
else
var/turf/T = get_turf(R)
message_admins("<span class='notice'>[ADMIN_LOOKUPFLW(usr)] detonated [key_name(R, R.client)][ADMIN_JMP(T)]!</span>")
log_game("\<span class='notice'>[key_name(usr)] detonated [key_name(R)]!</span>")
if(R.connected_ai)
to_chat(R.connected_ai, "<br><br><span class='alert'>ALERT - Cyborg detonation detected: [R.name]</span><br>")
R.self_destruct()
else
to_chat(usr, "<span class='danger'>Access Denied.</span>")
else if (href_list["stopbot"])
if(src.allowed(usr))
var/mob/living/silicon/robot/R = locate(href_list["stopbot"]) in GLOB.silicon_mobs
if(can_control(usr, R))
var/choice = input("Are you certain you wish to [R.canmove ? "lock down" : "release"] [R.name]?") in list("Confirm", "Abort")
if(choice == "Confirm" && can_control(usr, R) && !..())
message_admins("<span class='notice'>[ADMIN_LOOKUPFLW(usr)] [R.canmove ? "locked down" : "released"] [key_name(R, R.client)][ADMIN_LOOKUPFLW(R)]!</span>")
log_game("[key_name(usr)] [R.canmove ? "locked down" : "released"] [key_name(R)]!")
R.SetLockdown(!R.lockcharge)
to_chat(R, "[!R.lockcharge ? "<span class='notice'>Your lockdown has been lifted!" : "<span class='alert'>You have been locked down!"]</span>")
if(R.connected_ai)
to_chat(R.connected_ai, "[!R.lockcharge ? "<span class='notice'>NOTICE - Cyborg lockdown lifted" : "<span class='alert'>ALERT - Cyborg lockdown detected"]: <a href='?src=[REF(R.connected_ai)];track=[html_encode(R.name)]'>[R.name]</a></span><br>")
else
to_chat(usr, "<span class='danger'>Access Denied.</span>")
else if (href_list["magbot"])
if((issilicon(usr) && is_special_character(usr)) || IsAdminGhost(usr))
var/mob/living/silicon/robot/R = locate(href_list["magbot"]) in GLOB.silicon_mobs
if(istype(R) && !R.emagged && ((R.syndicate && R == usr) || R.connected_ai == usr || IsAdminGhost(usr)) && !R.scrambledcodes && can_control(usr, R))
log_game("[key_name(usr)] emagged [R.name] using robotic console!")
message_admins("[key_name_admin(usr)] emagged cyborg [key_name_admin(R)] using robotic console!")
R.SetEmagged(1)
if(is_special_character(R))
R.verbs += /mob/living/silicon/robot/proc/ResetSecurityCodes
else if(href_list["convert"])
if(issilicon(usr) && is_special_character(usr))
var/mob/living/silicon/robot/R = locate(href_list["convert"]) in GLOB.silicon_mobs
if(istype(R) && !is_servant_of_ratvar(R) && is_servant_of_ratvar(usr) && R.connected_ai == usr)
log_game("[key_name(usr)] converted [R.name] using robotic console!")
message_admins("[key_name_admin(usr)] converted cyborg [key_name_admin(R)] using robotic console!")
add_servant_of_ratvar(R)
else if (href_list["killdrone"])
if(src.allowed(usr))
>>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental
var/mob/living/simple_animal/drone/D = locate(href_list["killdrone"]) in GLOB.mob_list var/mob/living/simple_animal/drone/D = locate(href_list["killdrone"]) in GLOB.mob_list
if(D.hacked) if(D.hacked)
to_chat(usr, "<span class='danger'>ERROR: [D] is not responding to external commands.</span>") to_chat(usr, "<span class='danger'>ERROR: [D] is not responding to external commands.</span>")

View File

@@ -63,9 +63,9 @@
var/dat var/dat
if(temp) if(temp)
dat = text("<TT>[]</TT><BR><BR><A href='?src=\ref[];choice=Clear Screen'>Clear Screen</A>", temp, src) dat = text("<TT>[]</TT><BR><BR><A href='?src=[REF(src)];choice=Clear Screen'>Clear Screen</A>", temp)
else else
dat = text("Confirm Identity: <A href='?src=\ref[];choice=Confirm Identity'>[]</A><HR>", src, (scan ? text("[]", scan.name) : "----------")) dat = text("Confirm Identity: <A href='?src=[REF(src)];choice=Confirm Identity'>[]</A><HR>", (scan ? text("[]", scan.name) : "----------"))
if(authenticated) if(authenticated)
switch(screen) switch(screen)
if(1) if(1)
@@ -111,7 +111,7 @@
"} "}
dat += {" dat += {"
<p style='text-align:center;'>"} <p style='text-align:center;'>"}
dat += text("<A href='?src=\ref[];choice=New Record (General)'>New Record</A><BR>", src) dat += "<A href='?src=[REF(src)];choice=New Record (General)'>New Record</A><BR>"
//search bar //search bar
dat += {" dat += {"
<table width='560' align='center' cellspacing='0' cellpadding='5' id='maintable'> <table width='560' align='center' cellspacing='0' cellpadding='5' id='maintable'>
@@ -133,10 +133,10 @@
<span id='maintable_data_archive'> <span id='maintable_data_archive'>
<table id='maintable_data' style="text-align:center;" border="1" cellspacing="0" width="100%"> <table id='maintable_data' style="text-align:center;" border="1" cellspacing="0" width="100%">
<tr> <tr>
<th><A href='?src=\ref[src];choice=Sorting;sort=name'>Name</A></th> <th><A href='?src=[REF(src)];choice=Sorting;sort=name'>Name</A></th>
<th><A href='?src=\ref[src];choice=Sorting;sort=id'>ID</A></th> <th><A href='?src=[REF(src)];choice=Sorting;sort=id'>ID</A></th>
<th><A href='?src=\ref[src];choice=Sorting;sort=rank'>Rank</A></th> <th><A href='?src=[REF(src)];choice=Sorting;sort=rank'>Rank</A></th>
<th><A href='?src=\ref[src];choice=Sorting;sort=fingerprint'>Fingerprints</A></th> <th><A href='?src=[REF(src)];choice=Sorting;sort=fingerprint'>Fingerprints</A></th>
<th>Criminal Status</th> <th>Criminal Status</th>
</tr>"} </tr>"}
if(!isnull(GLOB.data_core.general)) if(!isnull(GLOB.data_core.general))
@@ -161,7 +161,7 @@
background = "''" //"'background-color:#FFFFFF;'" background = "''" //"'background-color:#FFFFFF;'"
crimstat = "No Record." crimstat = "No Record."
dat += "<tr style=[background]>" dat += "<tr style=[background]>"
dat += text("<td><input type='hidden' value='[] [] [] []'></input><A href='?src=\ref[];choice=Browse Record;d_rec=\ref[]'>[]</a></td>", R.fields["name"], R.fields["id"], R.fields["rank"], R.fields["fingerprint"], src, R, R.fields["name"]) dat += text("<td><input type='hidden' value='[] [] [] []'></input><A href='?src=[REF(src)];choice=Browse Record;d_rec=[REF(R)]'>[]</a></td>", R.fields["name"], R.fields["id"], R.fields["rank"], R.fields["fingerprint"], R.fields["name"])
dat += text("<td>[]</td>", R.fields["id"]) dat += text("<td>[]</td>", R.fields["id"])
dat += text("<td>[]</td>", R.fields["rank"]) dat += text("<td>[]</td>", R.fields["rank"])
dat += text("<td>[]</td>", R.fields["fingerprint"]) dat += text("<td>[]</td>", R.fields["fingerprint"])
@@ -173,11 +173,11 @@
var complete_list = maintable.innerHTML; var complete_list = maintable.innerHTML;
</script> </script>
<hr width='75%' />"} <hr width='75%' />"}
dat += text("<A href='?src=\ref[];choice=Record Maintenance'>Record Maintenance</A><br><br>", src) dat += "<A href='?src=[REF(src)];choice=Record Maintenance'>Record Maintenance</A><br><br>"
dat += text("<A href='?src=\ref[];choice=Log Out'>{Log Out}</A>",src) dat += "<A href='?src=[REF(src)];choice=Log Out'>{Log Out}</A>"
if(2) if(2)
dat += "<B>Records Maintenance</B><HR>" dat += "<B>Records Maintenance</B><HR>"
dat += "<BR><A href='?src=\ref[src];choice=Delete All Records'>Delete All Records</A><BR><BR><A href='?src=\ref[src];choice=Return'>Back</A>" dat += "<BR><A href='?src=[REF(src)];choice=Delete All Records'>Delete All Records</A><BR><BR><A href='?src=[REF(src)];choice=Return'>Back</A>"
if(3) if(3)
dat += "<font size='4'><b>Security Record</b></font><br>" dat += "<font size='4'><b>Security Record</b></font><br>"
if(istype(active1, /datum/data/record) && GLOB.data_core.general.Find(active1)) if(istype(active1, /datum/data/record) && GLOB.data_core.general.Find(active1))
@@ -188,27 +188,27 @@
var/obj/item/photo/P2 = active1.fields["photo_side"] var/obj/item/photo/P2 = active1.fields["photo_side"]
user << browse_rsc(P2.img, "photo_side") user << browse_rsc(P2.img, "photo_side")
dat += {"<table><tr><td><table> dat += {"<table><tr><td><table>
<tr><td>Name:</td><td><A href='?src=\ref[src];choice=Edit Field;field=name'>&nbsp;[active1.fields["name"]]&nbsp;</A></td></tr> <tr><td>Name:</td><td><A href='?src=[REF(src)];choice=Edit Field;field=name'>&nbsp;[active1.fields["name"]]&nbsp;</A></td></tr>
<tr><td>ID:</td><td><A href='?src=\ref[src];choice=Edit Field;field=id'>&nbsp;[active1.fields["id"]]&nbsp;</A></td></tr> <tr><td>ID:</td><td><A href='?src=[REF(src)];choice=Edit Field;field=id'>&nbsp;[active1.fields["id"]]&nbsp;</A></td></tr>
<tr><td>Sex:</td><td><A href='?src=\ref[src];choice=Edit Field;field=sex'>&nbsp;[active1.fields["sex"]]&nbsp;</A></td></tr> <tr><td>Sex:</td><td><A href='?src=[REF(src)];choice=Edit Field;field=sex'>&nbsp;[active1.fields["sex"]]&nbsp;</A></td></tr>
<tr><td>Age:</td><td><A href='?src=\ref[src];choice=Edit Field;field=age'>&nbsp;[active1.fields["age"]]&nbsp;</A></td></tr>"} <tr><td>Age:</td><td><A href='?src=[REF(src)];choice=Edit Field;field=age'>&nbsp;[active1.fields["age"]]&nbsp;</A></td></tr>"}
dat += "<tr><td>Species:</td><td><A href ='?src=\ref[src];choice=Edit Field;field=species'>&nbsp;[active1.fields["species"]]&nbsp;</A></td></tr>" dat += "<tr><td>Species:</td><td><A href ='?src=[REF(src)];choice=Edit Field;field=species'>&nbsp;[active1.fields["species"]]&nbsp;</A></td></tr>"
dat += {"<tr><td>Rank:</td><td><A href='?src=\ref[src];choice=Edit Field;field=rank'>&nbsp;[active1.fields["rank"]]&nbsp;</A></td></tr> dat += {"<tr><td>Rank:</td><td><A href='?src=[REF(src)];choice=Edit Field;field=rank'>&nbsp;[active1.fields["rank"]]&nbsp;</A></td></tr>
<tr><td>Fingerprint:</td><td><A href='?src=\ref[src];choice=Edit Field;field=fingerprint'>&nbsp;[active1.fields["fingerprint"]]&nbsp;</A></td></tr> <tr><td>Fingerprint:</td><td><A href='?src=[REF(src)];choice=Edit Field;field=fingerprint'>&nbsp;[active1.fields["fingerprint"]]&nbsp;</A></td></tr>
<tr><td>Physical Status:</td><td>&nbsp;[active1.fields["p_stat"]]&nbsp;</td></tr> <tr><td>Physical Status:</td><td>&nbsp;[active1.fields["p_stat"]]&nbsp;</td></tr>
<tr><td>Mental Status:</td><td>&nbsp;[active1.fields["m_stat"]]&nbsp;</td></tr> <tr><td>Mental Status:</td><td>&nbsp;[active1.fields["m_stat"]]&nbsp;</td></tr>
</table></td> </table></td>
<td><table><td align = center><a href='?src=\ref[src];choice=Edit Field;field=show_photo_front'><img src=photo_front height=80 width=80 border=4></a><br> <td><table><td align = center><a href='?src=[REF(src)];choice=Edit Field;field=show_photo_front'><img src=photo_front height=80 width=80 border=4></a><br>
<a href='?src=\ref[src];choice=Edit Field;field=upd_photo_front'>Update front photo</a></td> <a href='?src=[REF(src)];choice=Edit Field;field=upd_photo_front'>Update front photo</a></td>
<td align = center><a href='?src=\ref[src];choice=Edit Field;field=show_photo_side'><img src=photo_side height=80 width=80 border=4></a><br> <td align = center><a href='?src=[REF(src)];choice=Edit Field;field=show_photo_side'><img src=photo_side height=80 width=80 border=4></a><br>
<a href='?src=\ref[src];choice=Edit Field;field=upd_photo_side'>Update side photo</a></td></table> <a href='?src=[REF(src)];choice=Edit Field;field=upd_photo_side'>Update side photo</a></td></table>
</td></tr></table></td></tr></table>"} </td></tr></table></td></tr></table>"}
else else
dat += "<br>General Record Lost!<br>" dat += "<br>General Record Lost!<br>"
if((istype(active2, /datum/data/record) && GLOB.data_core.security.Find(active2))) if((istype(active2, /datum/data/record) && GLOB.data_core.security.Find(active2)))
dat += "<font size='4'><b>Security Data</b></font>" dat += "<font size='4'><b>Security Data</b></font>"
dat += "<br>Criminal Status: <A href='?src=\ref[src];choice=Edit Field;field=criminal'>[active2.fields["criminal"]]</A>" dat += "<br>Criminal Status: <A href='?src=[REF(src)];choice=Edit Field;field=criminal'>[active2.fields["criminal"]]</A>"
dat += "<br><br>Minor Crimes: <A href='?src=\ref[src];choice=Edit Field;field=mi_crim_add'>Add New</A>" dat += "<br><br>Minor Crimes: <A href='?src=[REF(src)];choice=Edit Field;field=mi_crim_add'>Add New</A>"
dat +={"<table style="text-align:center;" border="1" cellspacing="0" width="100%"> dat +={"<table style="text-align:center;" border="1" cellspacing="0" width="100%">
@@ -224,12 +224,12 @@
dat += "<td>[c.crimeDetails]</td>" dat += "<td>[c.crimeDetails]</td>"
dat += "<td>[c.author]</td>" dat += "<td>[c.author]</td>"
dat += "<td>[c.time]</td>" dat += "<td>[c.time]</td>"
dat += "<td><A href='?src=\ref[src];choice=Edit Field;field=mi_crim_delete;cdataid=[c.dataId]'>\[X\]</A></td>" dat += "<td><A href='?src=[REF(src)];choice=Edit Field;field=mi_crim_delete;cdataid=[c.dataId]'>\[X\]</A></td>"
dat += "</tr>" dat += "</tr>"
dat += "</table>" dat += "</table>"
dat += "<br>Major Crimes: <A href='?src=\ref[src];choice=Edit Field;field=ma_crim_add'>Add New</A>" dat += "<br>Major Crimes: <A href='?src=[REF(src)];choice=Edit Field;field=ma_crim_add'>Add New</A>"
dat +={"<table style="text-align:center;" border="1" cellspacing="0" width="100%"> dat +={"<table style="text-align:center;" border="1" cellspacing="0" width="100%">
<tr> <tr>
@@ -244,27 +244,27 @@
dat += "<td>[c.crimeDetails]</td>" dat += "<td>[c.crimeDetails]</td>"
dat += "<td>[c.author]</td>" dat += "<td>[c.author]</td>"
dat += "<td>[c.time]</td>" dat += "<td>[c.time]</td>"
dat += "<td><A href='?src=\ref[src];choice=Edit Field;field=ma_crim_delete;cdataid=[c.dataId]'>\[X\]</A></td>" dat += "<td><A href='?src=[REF(src)];choice=Edit Field;field=ma_crim_delete;cdataid=[c.dataId]'>\[X\]</A></td>"
dat += "</tr>" dat += "</tr>"
dat += "</table>" dat += "</table>"
dat += "<br>\nImportant Notes:<br>\n\t<A href='?src=\ref[src];choice=Edit Field;field=notes'>&nbsp;[active2.fields["notes"]]&nbsp;</A>" dat += "<br>\nImportant Notes:<br>\n\t<A href='?src=[REF(src)];choice=Edit Field;field=notes'>&nbsp;[active2.fields["notes"]]&nbsp;</A>"
dat += "<br><br><font size='4'><b>Comments/Log</b></font><br>" dat += "<br><br><font size='4'><b>Comments/Log</b></font><br>"
var/counter = 1 var/counter = 1
while(active2.fields[text("com_[]", counter)]) while(active2.fields[text("com_[]", counter)])
dat += (active2.fields[text("com_[]", counter)] + "<BR>") dat += (active2.fields[text("com_[]", counter)] + "<BR>")
if(active2.fields[text("com_[]", counter)] != "<B>Deleted</B>") if(active2.fields[text("com_[]", counter)] != "<B>Deleted</B>")
dat += text("<A href='?src=\ref[];choice=Delete Entry;del_c=[]'>Delete Entry</A><BR><BR>", src, counter) dat += text("<A href='?src=[REF(src)];choice=Delete Entry;del_c=[]'>Delete Entry</A><BR><BR>", counter)
counter++ counter++
dat += text("<A href='?src=\ref[];choice=Add Entry'>Add Entry</A><br><br>", src) dat += "<A href='?src=[REF(src)];choice=Add Entry'>Add Entry</A><br><br>"
dat += text("<A href='?src=\ref[];choice=Delete Record (Security)'>Delete Record (Security Only)</A><br>", src) dat += "<A href='?src=[REF(src)];choice=Delete Record (Security)'>Delete Record (Security Only)</A><br>"
else else
dat += "Security Record Lost!<br>" dat += "Security Record Lost!<br>"
dat += text("<A href='?src=\ref[];choice=New Record (Security)'>New Security Record</A><br><br>", src) dat += "<A href='?src=[REF(src)];choice=New Record (Security)'>New Security Record</A><br><br>"
dat += text("<A href='?src=\ref[];choice=Delete Record (ALL)'>Delete Record (ALL)</A><br><A href='?src=\ref[];choice=Print Record'>Print Record</A><BR><A href='?src=\ref[];choice=Print Poster'>Print Wanted Poster</A><BR><A href='?src=\ref[];choice=Return'>Back</A><BR>", src, src, src, src) dat += "<A href='?src=[REF(src)];choice=Delete Record (ALL)'>Delete Record (ALL)</A><br><A href='?src=[REF(src)];choice=Print Record'>Print Record</A><BR><A href='?src=[REF(src)];choice=Print Poster'>Print Wanted Poster</A><BR><A href='?src=[REF(src)];choice=Return'>Back</A><BR>"
else else
else else
dat += text("<A href='?src=\ref[];choice=Log In'>{Log In}</A>", src) dat += "<A href='?src=[REF(src)];choice=Log In'>{Log In}</A>"
var/datum/browser/popup = new(user, "secure_rec", "Security Records Console", 600, 400) var/datum/browser/popup = new(user, "secure_rec", "Security Records Console", 600, 400)
popup.set_content(dat) 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(src.icon, src.icon_state))
@@ -451,8 +451,8 @@ What a mess.*/
if("Delete All Records") if("Delete All Records")
temp = "" temp = ""
temp += "Are you sure you wish to delete all Security records?<br>" temp += "Are you sure you wish to delete all Security records?<br>"
temp += "<a href='?src=\ref[src];choice=Purge All Records'>Yes</a><br>" temp += "<a href='?src=[REF(src)];choice=Purge All Records'>Yes</a><br>"
temp += "<a href='?src=\ref[src];choice=Clear Screen'>No</a>" temp += "<a href='?src=[REF(src)];choice=Clear Screen'>No</a>"
if("Purge All Records") if("Purge All Records")
investigate_log("[usr.name] ([usr.key]) has purged all the security records.", INVESTIGATE_RECORDS) investigate_log("[usr.name] ([usr.key]) has purged all the security records.", INVESTIGATE_RECORDS)
@@ -476,14 +476,14 @@ What a mess.*/
if("Delete Record (ALL)") if("Delete Record (ALL)")
if(active1) if(active1)
temp = "<h5>Are you sure you wish to delete the record (ALL)?</h5>" temp = "<h5>Are you sure you wish to delete the record (ALL)?</h5>"
temp += "<a href='?src=\ref[src];choice=Delete Record (ALL) Execute'>Yes</a><br>" temp += "<a href='?src=[REF(src)];choice=Delete Record (ALL) Execute'>Yes</a><br>"
temp += "<a href='?src=\ref[src];choice=Clear Screen'>No</a>" temp += "<a href='?src=[REF(src)];choice=Clear Screen'>No</a>"
if("Delete Record (Security)") if("Delete Record (Security)")
if(active2) if(active2)
temp = "<h5>Are you sure you wish to delete the record (Security Portion Only)?</h5>" temp = "<h5>Are you sure you wish to delete the record (Security Portion Only)?</h5>"
temp += "<a href='?src=\ref[src];choice=Delete Record (Security) Execute'>Yes</a><br>" temp += "<a href='?src=[REF(src)];choice=Delete Record (Security) Execute'>Yes</a><br>"
temp += "<a href='?src=\ref[src];choice=Clear Screen'>No</a>" temp += "<a href='?src=[REF(src)];choice=Clear Screen'>No</a>"
if("Delete Entry") if("Delete Entry")
if((istype(active2, /datum/data/record) && active2.fields[text("com_[]", href_list["del_c"])])) if((istype(active2, /datum/data/record) && active2.fields[text("com_[]", href_list["del_c"])]))
@@ -657,11 +657,11 @@ What a mess.*/
if(istype(active2, /datum/data/record)) if(istype(active2, /datum/data/record))
temp = "<h5>Criminal Status:</h5>" temp = "<h5>Criminal Status:</h5>"
temp += "<ul>" temp += "<ul>"
temp += "<li><a href='?src=\ref[src];choice=Change Criminal Status;criminal2=none'>None</a></li>" temp += "<li><a href='?src=[REF(src)];choice=Change Criminal Status;criminal2=none'>None</a></li>"
temp += "<li><a href='?src=\ref[src];choice=Change Criminal Status;criminal2=arrest'>*Arrest*</a></li>" temp += "<li><a href='?src=[REF(src)];choice=Change Criminal Status;criminal2=arrest'>*Arrest*</a></li>"
temp += "<li><a href='?src=\ref[src];choice=Change Criminal Status;criminal2=incarcerated'>Incarcerated</a></li>" temp += "<li><a href='?src=[REF(src)];choice=Change Criminal Status;criminal2=incarcerated'>Incarcerated</a></li>"
temp += "<li><a href='?src=\ref[src];choice=Change Criminal Status;criminal2=parolled'>Parolled</a></li>" temp += "<li><a href='?src=[REF(src)];choice=Change Criminal Status;criminal2=parolled'>Parolled</a></li>"
temp += "<li><a href='?src=\ref[src];choice=Change Criminal Status;criminal2=released'>Discharged</a></li>" temp += "<li><a href='?src=[REF(src)];choice=Change Criminal Status;criminal2=released'>Discharged</a></li>"
temp += "</ul>" temp += "</ul>"
if("rank") if("rank")
var/list/L = list( "Head of Personnel", "Captain", "AI", "Central Command" ) var/list/L = list( "Head of Personnel", "Captain", "AI", "Central Command" )
@@ -670,7 +670,7 @@ What a mess.*/
temp = "<h5>Rank:</h5>" temp = "<h5>Rank:</h5>"
temp += "<ul>" temp += "<ul>"
for(var/rank in get_all_jobs()) for(var/rank in get_all_jobs())
temp += "<li><a href='?src=\ref[src];choice=Change Rank;rank=[rank]'>[rank]</a></li>" temp += "<li><a href='?src=[REF(src)];choice=Change Rank;rank=[rank]'>[rank]</a></li>"
temp += "</ul>" temp += "</ul>"
else else
alert(usr, "You do not have the required rank to do this!") alert(usr, "You do not have the required rank to do this!")

View File

@@ -97,8 +97,8 @@ GLOBAL_LIST_INIT(possible_uplinker_IDs, list("Alfa","Bravo","Charlie","Delta","E
if(uplinkholder) if(uplinkholder)
dat += "[uplinkholder.hidden_uplink.telecrystals] telecrystals remain in this uplink.<BR>" dat += "[uplinkholder.hidden_uplink.telecrystals] telecrystals remain in this uplink.<BR>"
if(linkedboss) if(linkedboss)
dat += "Donate TC: <a href='byond://?src=\ref[src];donate=1'>1</a> | <a href='byond://?src=\ref[src];donate=5'>5</a> | <a href='byond://?src=\ref[src];donate=-1'>All</a>" dat += "Donate TC: <a href='byond://?src=[REF(src)];donate=1'>1</a> | <a href='byond://?src=[REF(src)];donate=5'>5</a> | <a href='byond://?src=[REF(src)];donate=-1'>All</a>"
dat += "<br><a href='byond://?src=\ref[src];eject=1'>Eject Uplink</a>" dat += "<br><a href='byond://?src=[REF(src)];eject=1'>Eject Uplink</a>"
var/datum/browser/popup = new(user, "computer", "Telecrystal Upload/Receive Station", 700, 500) var/datum/browser/popup = new(user, "computer", "Telecrystal Upload/Receive Station", 700, 500)
@@ -167,7 +167,7 @@ GLOBAL_LIST_INIT(possible_uplinker_IDs, list("Alfa","Bravo","Charlie","Delta","E
var/dat = "" var/dat = ""
dat += "<a href='byond://?src=\ref[src];scan=1'>Scan for TC stations.</a><BR>" dat += "<a href='byond://?src=[REF(src)];scan=1'>Scan for TC stations.</a><BR>"
dat += "[storedcrystals] telecrystals are available for distribution. <BR>" dat += "[storedcrystals] telecrystals are available for distribution. <BR>"
dat += "<BR><BR>" dat += "<BR><BR>"
@@ -177,11 +177,11 @@ GLOBAL_LIST_INIT(possible_uplinker_IDs, list("Alfa","Bravo","Charlie","Delta","E
if(A.uplinkholder) if(A.uplinkholder)
dat += "[A.uplinkholder.hidden_uplink.telecrystals] telecrystals." dat += "[A.uplinkholder.hidden_uplink.telecrystals] telecrystals."
if(storedcrystals) if(storedcrystals)
dat+= "<BR>Add TC: <a href ='?src=\ref[src];target=\ref[A];give=1'>1</a> | <a href ='?src=\ref[src];target=\ref[A];give=5'>5</a> | <a href ='?src=\ref[src];target=\ref[A];give=10'>10</a> | <a href ='?src=\ref[src];target=\ref[A];give=-1'>All</a>" dat+= "<BR>Add TC: <a href ='?src=[REF(src)];target=[REF(A)];give=1'>1</a> | <a href ='?src=[REF(src)];target=[REF(A)];give=5'>5</a> | <a href ='?src=[REF(src)];target=[REF(A)];give=10'>10</a> | <a href ='?src=[REF(src)];target=[REF(A)];give=-1'>All</a>"
dat += "<BR>" dat += "<BR>"
if(TCstations.len && storedcrystals) if(TCstations.len && storedcrystals)
dat += "<BR><BR><a href='byond://?src=\ref[src];distrib=1'>Evenly distribute remaining TC.</a><BR><BR>" dat += "<BR><BR><a href='byond://?src=[REF(src)];distrib=1'>Evenly distribute remaining TC.</a><BR><BR>"
for(var/entry in transferlog) for(var/entry in transferlog)

View File

@@ -70,16 +70,16 @@
data += "Calibration: <font color='red'>Sub-Optimal</font>" data += "Calibration: <font color='red'>Sub-Optimal</font>"
data += "</div><BR>" data += "</div><BR>"
data += "<A href='?src=\ref[src];regimeset=1'>Change regime</A><BR>" data += "<A href='?src=[REF(src)];regimeset=1'>Change regime</A><BR>"
data += "<A href='?src=\ref[src];settarget=1'>Set target</A><BR>" data += "<A href='?src=[REF(src)];settarget=1'>Set target</A><BR>"
if(locked) if(locked)
data += "<BR><A href='?src=\ref[src];locked=1'>Get target from memory</A><BR>" data += "<BR><A href='?src=[REF(src)];locked=1'>Get target from memory</A><BR>"
data += "<A href='?src=\ref[src];eject=1'>Eject GPS device</A><BR>" data += "<A href='?src=[REF(src)];eject=1'>Eject GPS device</A><BR>"
else else
data += "<BR><span class='linkOff'>Get target from memory</span><BR>" data += "<BR><span class='linkOff'>Get target from memory</span><BR>"
data += "<span class='linkOff'>Eject GPS device</span><BR>" data += "<span class='linkOff'>Eject GPS device</span><BR>"
data += "<BR><A href='?src=\ref[src];calibrate=1'>Calibrate Hub</A>" data += "<BR><A href='?src=[REF(src)];calibrate=1'>Calibrate Hub</A>"
var/datum/browser/popup = new(user, "teleporter", name, 400, 400) var/datum/browser/popup = new(user, "teleporter", name, 400, 400)
popup.set_content(data) popup.set_content(data)

View File

@@ -92,21 +92,21 @@
user.set_machine(src) user.set_machine(src)
var/list/dat = list() var/list/dat = list()
dat +="<div class='statusDisplay' style='text-align:center'>" dat +="<div class='statusDisplay' style='text-align:center'>"
dat += "<b><A href='?src=\ref[src];action=toggle'>[!active ? "BREAK IT DOWN" : "SHUT IT DOWN"]<b></A><br>" dat += "<b><A href='?src=[REF(src)];action=toggle'>[!active ? "BREAK IT DOWN" : "SHUT IT DOWN"]<b></A><br>"
dat += "</div><br>" dat += "</div><br>"
dat += "<A href='?src=\ref[src];action=select'> Select Track</A><br>" dat += "<A href='?src=[REF(src)];action=select'> Select Track</A><br>"
dat += "Track Selected: [selection.song_name]<br>" dat += "Track Selected: [selection.song_name]<br>"
dat += "Track Length: [DisplayTimeText(selection.song_length)]<br><br>" dat += "Track Length: [DisplayTimeText(selection.song_length)]<br><br>"
dat += "<br>DJ's Soundboard:<b><br>" dat += "<br>DJ's Soundboard:<b><br>"
dat +="<div class='statusDisplay'><div style='text-align:center'>" dat +="<div class='statusDisplay'><div style='text-align:center'>"
dat += "<A href='?src=\ref[src];action=horn'>Air Horn</A> " dat += "<A href='?src=[REF(src)];action=horn'>Air Horn</A> "
dat += "<A href='?src=\ref[src];action=alert'>Station Alert</A> " dat += "<A href='?src=[REF(src)];action=alert'>Station Alert</A> "
dat += "<A href='?src=\ref[src];action=siren'>Warning Siren</A> " dat += "<A href='?src=[REF(src)];action=siren'>Warning Siren</A> "
dat += "<A href='?src=\ref[src];action=honk'>Honk</A><br>" dat += "<A href='?src=[REF(src)];action=honk'>Honk</A><br>"
dat += "<A href='?src=\ref[src];action=pump'>Shotgun Pump</A>" dat += "<A href='?src=[REF(src)];action=pump'>Shotgun Pump</A>"
dat += "<A href='?src=\ref[src];action=pop'>Gunshot</A>" dat += "<A href='?src=[REF(src)];action=pop'>Gunshot</A>"
dat += "<A href='?src=\ref[src];action=saber'>Esword</A>" dat += "<A href='?src=[REF(src)];action=saber'>Esword</A>"
dat += "<A href='?src=\ref[src];action=harm'>Harm Alarm</A>" dat += "<A href='?src=[REF(src)];action=harm'>Harm Alarm</A>"
var/datum/browser/popup = new(user, "vending", "Radiance Dance Machine - Mark IV", 400, 350) var/datum/browser/popup = new(user, "vending", "Radiance Dance Machine - Mark IV", 400, 350)
popup.set_content(dat.Join()) popup.set_content(dat.Join())
popup.open() popup.open()

View File

@@ -632,23 +632,23 @@
if(wires.is_cut(WIRE_IDSCAN)) if(wires.is_cut(WIRE_IDSCAN))
t1 += text("IdScan wire is cut.<br>\n") t1 += text("IdScan wire is cut.<br>\n")
else if(src.aiDisabledIdScanner) else if(src.aiDisabledIdScanner)
t1 += text("IdScan disabled. <A href='?src=\ref[];aiEnable=1'>Enable?</a><br>\n", src) t1 += "IdScan disabled. <A href='?src=[REF(src)];aiEnable=1'>Enable?</a><br>\n"
else else
t1 += text("IdScan enabled. <A href='?src=\ref[];aiDisable=1'>Disable?</a><br>\n", src) t1 += "IdScan enabled. <A href='?src=[REF(src)];aiDisable=1'>Disable?</a><br>\n"
if(src.emergency) if(src.emergency)
t1 += text("Emergency Access Override is enabled. <A href='?src=\ref[];aiDisable=11'>Disable?</a><br>\n", src) t1 += "Emergency Access Override is enabled. <A href='?src=[REF(src)];aiDisable=11'>Disable?</a><br>\n"
else else
t1 += text("Emergency Access Override is disabled. <A href='?src=\ref[];aiEnable=11'>Enable?</a><br>\n", src) t1 += "Emergency Access Override is disabled. <A href='?src=[REF(src)];aiEnable=11'>Enable?</a><br>\n"
if(wires.is_cut(WIRE_POWER1)) if(wires.is_cut(WIRE_POWER1))
t1 += text("Main Power Input wire is cut.<br>\n") t1 += text("Main Power Input wire is cut.<br>\n")
if(wires.is_cut(WIRE_POWER2)) if(wires.is_cut(WIRE_POWER2))
t1 += text("Main Power Output wire is cut.<br>\n") t1 += text("Main Power Output wire is cut.<br>\n")
if(!secondsMainPowerLost) if(!secondsMainPowerLost)
t1 += text("<A href='?src=\ref[];aiDisable=2'>Temporarily disrupt main power?</a>.<br>\n", src) t1 += "<A href='?src=[REF(src)];aiDisable=2'>Temporarily disrupt main power?</a>.<br>\n"
if(!secondsBackupPowerLost) if(!secondsBackupPowerLost)
t1 += text("<A href='?src=\ref[];aiDisable=3'>Temporarily disrupt backup power?</a>.<br>\n", src) t1 += "<A href='?src=[REF(src)];aiDisable=3'>Temporarily disrupt backup power?</a>.<br>\n"
if(wires.is_cut(WIRE_BACKUP1)) if(wires.is_cut(WIRE_BACKUP1))
t1 += text("Backup Power Input wire is cut.<br>\n") t1 += text("Backup Power Input wire is cut.<br>\n")
@@ -658,53 +658,53 @@
if(wires.is_cut(WIRE_BOLTS)) if(wires.is_cut(WIRE_BOLTS))
t1 += text("Door bolt drop wire is cut.<br>\n") t1 += text("Door bolt drop wire is cut.<br>\n")
else if(!src.locked) else if(!src.locked)
t1 += text("Door bolts are up. <A href='?src=\ref[];aiDisable=4'>Drop them?</a><br>\n", src) t1 += "Door bolts are up. <A href='?src=[REF(src)];aiDisable=4'>Drop them?</a><br>\n"
else else
t1 += text("Door bolts are down.") t1 += text("Door bolts are down.")
if(src.hasPower()) if(src.hasPower())
t1 += text(" <A href='?src=\ref[];aiEnable=4'>Raise?</a><br>\n", src) t1 += " <A href='?src=[REF(src)];aiEnable=4'>Raise?</a><br>\n"
else else
t1 += text(" Cannot raise door bolts due to power failure.<br>\n") t1 += text(" Cannot raise door bolts due to power failure.<br>\n")
if(wires.is_cut(WIRE_LIGHT)) if(wires.is_cut(WIRE_LIGHT))
t1 += text("Door bolt lights wire is cut.<br>\n") t1 += text("Door bolt lights wire is cut.<br>\n")
else if(!src.lights) else if(!src.lights)
t1 += text("Door bolt lights are off. <A href='?src=\ref[];aiEnable=10'>Enable?</a><br>\n", src) t1 += "Door bolt lights are off. <A href='?src=[REF(src)];aiEnable=10'>Enable?</a><br>\n"
else else
t1 += text("Door bolt lights are on. <A href='?src=\ref[];aiDisable=10'>Disable?</a><br>\n", src) t1 += "Door bolt lights are on. <A href='?src=[REF(src)];aiDisable=10'>Disable?</a><br>\n"
if(wires.is_cut(WIRE_SHOCK)) if(wires.is_cut(WIRE_SHOCK))
t1 += text("Electrification wire is cut.<br>\n") t1 += text("Electrification wire is cut.<br>\n")
if(secondsElectrified==ELECTRIFIED_PERMANENT) if(secondsElectrified==ELECTRIFIED_PERMANENT)
t1 += text("Door is electrified indefinitely. <A href='?src=\ref[];aiDisable=5'>Un-electrify it?</a><br>\n", src) t1 += "Door is electrified indefinitely. <A href='?src=[REF(src)];aiDisable=5'>Un-electrify it?</a><br>\n"
else if(secondsElectrified>NOT_ELECTRIFIED) else if(secondsElectrified>NOT_ELECTRIFIED)
t1 += text("Door is electrified temporarily ([] seconds). <A href='?src=\ref[];aiDisable=5'>Un-electrify it?</a><br>\n", secondsElectrified, src) t1 += text("Door is electrified temporarily ([] seconds). <A href='?src=[REF(src)];aiDisable=5'>Un-electrify it?</a><br>\n", secondsElectrified)
else else
t1 += text("Door is not electrified. <A href='?src=\ref[];aiEnable=5'>Electrify it for 30 seconds?</a> Or, <A href='?src=\ref[];aiEnable=6'>Electrify it indefinitely until someone cancels the electrification?</a><br>\n", src, src) t1 += "Door is not electrified. <A href='?src=[REF(src)];aiEnable=5'>Electrify it for 30 seconds?</a> Or, <A href='?src=[REF(src)];aiEnable=6'>Electrify it indefinitely until someone cancels the electrification?</a><br>\n"
if(wires.is_cut(WIRE_SAFETY)) if(wires.is_cut(WIRE_SAFETY))
t1 += text("Door force sensors not responding.</a><br>\n") t1 += text("Door force sensors not responding.</a><br>\n")
else if(src.safe) else if(src.safe)
t1 += text("Door safeties operating normally. <A href='?src=\ref[];aiDisable=8'>Override?</a><br>\n",src) t1 += "Door safeties operating normally. <A href='?src=[REF(src)];aiDisable=8'>Override?</a><br>\n"
else else
t1 += text("Danger. Door safeties disabled. <A href='?src=\ref[];aiEnable=8'>Restore?</a><br>\n",src) t1 += "Danger. Door safeties disabled. <A href='?src=[REF(src)];aiEnable=8'>Restore?</a><br>\n"
if(wires.is_cut(WIRE_TIMING)) if(wires.is_cut(WIRE_TIMING))
t1 += text("Door timing circuitry not responding.</a><br>\n") t1 += text("Door timing circuitry not responding.</a><br>\n")
else if(src.normalspeed) else if(src.normalspeed)
t1 += text("Door timing circuitry operating normally. <A href='?src=\ref[];aiDisable=9'>Override?</a><br>\n",src) t1 += "Door timing circuitry operating normally. <A href='?src=[REF(src)];aiDisable=9'>Override?</a><br>\n"
else else
t1 += text("Warning. Door timing circuitry operating abnormally. <A href='?src=\ref[];aiEnable=9'>Restore?</a><br>\n",src) t1 += "Warning. Door timing circuitry operating abnormally. <A href='?src=[REF(src)];aiEnable=9'>Restore?</a><br>\n"
if(src.welded) if(src.welded)
t1 += text("Door appears to have been welded shut.<br>\n") t1 += text("Door appears to have been welded shut.<br>\n")
else if(!src.locked) else if(!src.locked)
if(src.density) if(src.density)
t1 += text("<A href='?src=\ref[];aiEnable=7'>Open door</a><br>\n", src) t1 += "<A href='?src=[REF(src)];aiEnable=7'>Open door</a><br>\n"
else else
t1 += text("<A href='?src=\ref[];aiDisable=7'>Close door</a><br>\n", src) t1 += "<A href='?src=[REF(src)];aiDisable=7'>Close door</a><br>\n"
t1 += text("<p><a href='?src=\ref[];close=1'>Close</a></p>\n", src) t1 += "<p><a href='?src=[REF(src)];close=1'>Close</a></p>\n"
user << browse(t1, "window=airlock") user << browse(t1, "window=airlock")
onclose(user, "airlock") onclose(user, "airlock")

View File

@@ -277,29 +277,29 @@
if(!exteriorAirlock || !interiorAirlock) if(!exteriorAirlock || !interiorAirlock)
if(!exteriorAirlock) if(!exteriorAirlock)
if(interiorAirlock.density) if(interiorAirlock.density)
output = "<A href='?src=\ref[src];command=open_interior'>Open Interior Airlock</A><BR>" output = "<A href='?src=[REF(src)];command=open_interior'>Open Interior Airlock</A><BR>"
else else
output = "<A href='?src=\ref[src];command=close_interior'>Close Interior Airlock</A><BR>" output = "<A href='?src=[REF(src)];command=close_interior'>Close Interior Airlock</A><BR>"
else else
if(exteriorAirlock.density) if(exteriorAirlock.density)
output = "<A href='?src=\ref[src];command=open_exterior'>Open Exterior Airlock</A><BR>" output = "<A href='?src=[REF(src)];command=open_exterior'>Open Exterior Airlock</A><BR>"
else else
output = "<A href='?src=\ref[src];command=close_exterior'>Close Exterior Airlock</A><BR>" output = "<A href='?src=[REF(src)];command=close_exterior'>Close Exterior Airlock</A><BR>"
else else
if(exteriorAirlock.density) if(exteriorAirlock.density)
if(interiorAirlock.density) if(interiorAirlock.density)
output = {"<A href='?src=\ref[src];command=open_exterior'>Open Exterior Airlock</A><BR> output = {"<A href='?src=[REF(src)];command=open_exterior'>Open Exterior Airlock</A><BR>
<A href='?src=\ref[src];command=open_interior'>Open Interior Airlock</A><BR>"} <A href='?src=[REF(src)];command=open_interior'>Open Interior Airlock</A><BR>"}
else else
output = {"<A href='?src=\ref[src];command=cycle_exterior'>Cycle to Exterior Airlock</A><BR> output = {"<A href='?src=[REF(src)];command=cycle_exterior'>Cycle to Exterior Airlock</A><BR>
<A href='?src=\ref[src];command=close_interior'>Close Interior Airlock</A><BR>"} <A href='?src=[REF(src)];command=close_interior'>Close Interior Airlock</A><BR>"}
else else
if(interiorAirlock.density) if(interiorAirlock.density)
output = {"<A href='?src=\ref[src];command=close_exterior'>Close Exterior Airlock</A><BR> output = {"<A href='?src=[REF(src)];command=close_exterior'>Close Exterior Airlock</A><BR>
<A href='?src=\ref[src];command=cycle_interior'>Cycle to Interior Airlock</A><BR>"} <A href='?src=[REF(src)];command=cycle_interior'>Cycle to Interior Airlock</A><BR>"}
else else
output = {"<A href='?src=\ref[src];command=close_exterior'>Close Exterior Airlock</A><BR> output = {"<A href='?src=[REF(src)];command=close_exterior'>Close Exterior Airlock</A><BR>
<A href='?src=\ref[src];command=close_interior'>Close Interior Airlock</A><BR>"} <A href='?src=[REF(src)];command=close_interior'>Close Interior Airlock</A><BR>"}
output = {"<B>Access Control Console</B><HR> output = {"<B>Access Control Console</B><HR>

View File

@@ -1,3 +1,4 @@
<<<<<<< HEAD
//States for airlock_control //States for airlock_control
#define AIRLOCK_STATE_INOPEN -2 #define AIRLOCK_STATE_INOPEN -2
#define AIRLOCK_STATE_PRESSURIZE -1 #define AIRLOCK_STATE_PRESSURIZE -1
@@ -294,3 +295,301 @@
[state_options]"} [state_options]"}
return output return output
=======
//States for airlock_control
#define AIRLOCK_STATE_INOPEN -2
#define AIRLOCK_STATE_PRESSURIZE -1
#define AIRLOCK_STATE_CLOSED 0
#define AIRLOCK_STATE_DEPRESSURIZE 1
#define AIRLOCK_STATE_OUTOPEN 2
/datum/computer/file/embedded_program/airlock_controller
var/id_tag
var/exterior_door_tag
var/interior_door_tag
var/airpump_tag
var/sensor_tag
var/sanitize_external
state = AIRLOCK_STATE_CLOSED
var/target_state = AIRLOCK_STATE_CLOSED
var/sensor_pressure = null
/datum/computer/file/embedded_program/airlock_controller/receive_signal(datum/signal/signal, receive_method, receive_param)
var/receive_tag = signal.data["tag"]
if(!receive_tag)
return
if(receive_tag==sensor_tag)
if(signal.data["pressure"])
sensor_pressure = text2num(signal.data["pressure"])
else if(receive_tag==exterior_door_tag)
memory["exterior_status"] = signal.data["door_status"]
else if(receive_tag==interior_door_tag)
memory["interior_status"] = signal.data["door_status"]
else if(receive_tag==airpump_tag)
if(signal.data["power"])
memory["pump_status"] = signal.data["direction"]
else
memory["pump_status"] = "off"
else if(receive_tag==id_tag)
switch(signal.data["command"])
if("cycle")
if(state < AIRLOCK_STATE_CLOSED)
target_state = AIRLOCK_STATE_OUTOPEN
else
target_state = AIRLOCK_STATE_INOPEN
/datum/computer/file/embedded_program/airlock_controller/receive_user_command(command)
switch(command)
if("cycle_closed")
target_state = AIRLOCK_STATE_CLOSED
if("cycle_exterior")
target_state = AIRLOCK_STATE_OUTOPEN
if("cycle_interior")
target_state = AIRLOCK_STATE_INOPEN
if("abort")
target_state = AIRLOCK_STATE_CLOSED
/datum/computer/file/embedded_program/airlock_controller/process()
var/process_again = 1
while(process_again)
process_again = 0
switch(state)
if(AIRLOCK_STATE_INOPEN) // state -2
if(target_state > state)
if(memory["interior_status"] == "closed")
state = AIRLOCK_STATE_CLOSED
process_again = 1
else
var/datum/signal/signal = new
signal.data["tag"] = interior_door_tag
signal.data["command"] = "secure_close"
post_signal(signal)
else
if(memory["pump_status"] != "off")
var/datum/signal/signal = new
signal.data = list(
"tag" = airpump_tag,
"power" = 0,
"sigtype"="command"
)
post_signal(signal)
if(AIRLOCK_STATE_PRESSURIZE)
if(target_state < state)
if(sensor_pressure >= ONE_ATMOSPHERE*0.95)
if(memory["interior_status"] == "open")
state = AIRLOCK_STATE_INOPEN
process_again = 1
else
var/datum/signal/signal = new
signal.data["tag"] = interior_door_tag
signal.data["command"] = "secure_open"
post_signal(signal)
else
var/datum/signal/signal = new
signal.data = list(
"tag" = airpump_tag,
"sigtype"="command"
)
if(memory["pump_status"] == "siphon")
signal.data["stabalize"] = 1
else if(memory["pump_status"] != "release")
signal.data["power"] = 1
post_signal(signal)
else if(target_state > state)
state = AIRLOCK_STATE_CLOSED
process_again = 1
if(AIRLOCK_STATE_CLOSED)
if(target_state > state)
if(memory["interior_status"] == "closed")
state = AIRLOCK_STATE_DEPRESSURIZE
process_again = 1
else
var/datum/signal/signal = new
signal.data["tag"] = interior_door_tag
signal.data["command"] = "secure_close"
post_signal(signal)
else if(target_state < state)
if(memory["exterior_status"] == "closed")
state = AIRLOCK_STATE_PRESSURIZE
process_again = 1
else
var/datum/signal/signal = new
signal.data["tag"] = exterior_door_tag
signal.data["command"] = "secure_close"
post_signal(signal)
else
if(memory["pump_status"] != "off")
var/datum/signal/signal = new
signal.data = list(
"tag" = airpump_tag,
"power" = 0,
"sigtype"="command"
)
post_signal(signal)
if(AIRLOCK_STATE_DEPRESSURIZE)
var/target_pressure = ONE_ATMOSPHERE*0.05
if(sanitize_external)
target_pressure = ONE_ATMOSPHERE*0.01
if(sensor_pressure <= target_pressure)
if(target_state > state)
if(memory["exterior_status"] == "open")
state = AIRLOCK_STATE_OUTOPEN
else
var/datum/signal/signal = new
signal.data["tag"] = exterior_door_tag
signal.data["command"] = "secure_open"
post_signal(signal)
else if(target_state < state)
state = AIRLOCK_STATE_CLOSED
process_again = 1
else if((target_state < state) && !sanitize_external)
state = AIRLOCK_STATE_CLOSED
process_again = 1
else
var/datum/signal/signal = new
signal.transmission_method = 1 //radio signal
signal.data = list(
"tag" = airpump_tag,
"sigtype"="command"
)
if(memory["pump_status"] == "release")
signal.data["purge"] = 1
else if(memory["pump_status"] != "siphon")
signal.data["power"] = 1
post_signal(signal)
if(AIRLOCK_STATE_OUTOPEN) //state 2
if(target_state < state)
if(memory["exterior_status"] == "closed")
if(sanitize_external)
state = AIRLOCK_STATE_DEPRESSURIZE
process_again = 1
else
state = AIRLOCK_STATE_CLOSED
process_again = 1
else
var/datum/signal/signal = new
signal.data["tag"] = exterior_door_tag
signal.data["command"] = "secure_close"
post_signal(signal)
else
if(memory["pump_status"] != "off")
var/datum/signal/signal = new
signal.data = list(
"tag" = airpump_tag,
"power" = 0,
"sigtype"="command"
)
post_signal(signal)
memory["sensor_pressure"] = sensor_pressure
memory["processing"] = state != target_state
//sensor_pressure = null //not sure if we can comment this out. Uncomment in case of problems -rastaf0
return 1
/obj/machinery/embedded_controller/radio/airlock_controller
icon = 'icons/obj/airlock_machines.dmi'
icon_state = "airlock_control_standby"
name = "airlock console"
density = FALSE
frequency = 1449
power_channel = ENVIRON
// Setup parameters only
var/id_tag
var/exterior_door_tag
var/interior_door_tag
var/airpump_tag
var/sensor_tag
var/sanitize_external
/obj/machinery/embedded_controller/radio/airlock_controller/Initialize(mapload)
. = ..()
if(!mapload)
return
var/datum/computer/file/embedded_program/airlock_controller/new_prog = new
new_prog.id_tag = id_tag
new_prog.exterior_door_tag = exterior_door_tag
new_prog.interior_door_tag = interior_door_tag
new_prog.airpump_tag = airpump_tag
new_prog.sensor_tag = sensor_tag
new_prog.sanitize_external = sanitize_external
new_prog.master = src
program = new_prog
/obj/machinery/embedded_controller/radio/airlock_controller/update_icon()
if(on && program)
if(program.memory["processing"])
icon_state = "airlock_control_process"
else
icon_state = "airlock_control_standby"
else
icon_state = "airlock_control_off"
/obj/machinery/embedded_controller/radio/airlock_controller/return_text()
var/state_options = null
var/state = 0
var/sensor_pressure = "----"
var/exterior_status = "----"
var/interior_status = "----"
var/pump_status = "----"
var/current_status = "Inactive<BR>&nbsp;"
if(program)
state = program.state
sensor_pressure = program.memory["sensor_pressure"] ? program.memory["sensor_pressure"] : "----"
exterior_status = program.memory["exterior_status"] ? program.memory["exterior_status"] : "----"
interior_status = program.memory["interior_status"] ? program.memory["interior_status"] : "----"
pump_status = program.memory["pump_status"] ? program.memory["pump_status"] : "----"
switch(state)
if(AIRLOCK_STATE_INOPEN)
state_options = {"<A href='?src=[REF(src)];command=cycle_closed'>Close Interior Airlock</A><BR>
<A href='?src=[REF(src)];command=cycle_exterior'>Cycle to Exterior Airlock</A><BR>"}
current_status = "Interior Airlock Open<BR><span class='good'>Chamber Pressurized</span>"
if(AIRLOCK_STATE_PRESSURIZE)
state_options = "<A href='?src=[REF(src)];command=abort'>Abort Cycling</A><BR>"
current_status = "Cycling to Interior Airlock<BR><span class='average'>Chamber Pressurizing</span>"
if(AIRLOCK_STATE_CLOSED)
state_options = {"<A href='?src=[REF(src)];command=cycle_interior'>Open Interior Airlock</A><BR>
<A href='?src=[REF(src)];command=cycle_exterior'>Open Exterior Airlock</A><BR>"}
if(AIRLOCK_STATE_DEPRESSURIZE)
state_options = "<A href='?src=[REF(src)];command=abort'>Abort Cycling</A><BR>"
current_status = "Cycling to Exterior Airlock<BR><span class='average'>Chamber Depressurizing</span>"
if(AIRLOCK_STATE_OUTOPEN)
state_options = {"<A href='?src=[REF(src)];command=cycle_interior'>Cycle to Interior Airlock</A><BR>
<A href='?src=[REF(src)];command=cycle_closed'>Close Exterior Airlock</A><BR>"}
current_status = "Exterior Airlock Open<BR><span class='bad'>Chamber Depressurized</span>"
var/output = {"<h3>Airlock Status</h3>
<div class='statusDisplay'>
<div class='line'><div class='statusLabel'>Current Status:</div><div class='statusValue'>[current_status]</div></div>
<div class='line'>&nbsp;</div>
<div class='line'><div class='statusLabel'>\> Chamber Pressure:</div><div class='statusValue'>[sensor_pressure] kPa</div></div>
<div class='line'><div class='statusLabel'>\> Control Pump:</div><div class='statusValue'>[pump_status]</div></div>
<div class='line'><div class='statusLabel'>\> Interior Door:</div><div class='statusValue'>[interior_status]</div></div>
<div class='line'><div class='statusLabel'>\> Exterior Door:</div><div class='statusValue'>[exterior_status]</div></div>
</div>
[state_options]"}
return output
>>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental

View File

@@ -53,6 +53,7 @@
/obj/machinery/embedded_controller/radio/simple_vent_controller/Initialize(mapload) /obj/machinery/embedded_controller/radio/simple_vent_controller/Initialize(mapload)
. = ..() . = ..()
<<<<<<< HEAD
if(!mapload) if(!mapload)
return return
var/datum/computer/file/embedded_program/simple_vent_controller/new_prog = new var/datum/computer/file/embedded_program/simple_vent_controller/new_prog = new
@@ -77,3 +78,29 @@
[state_options]<HR>"} [state_options]<HR>"}
return output return output
=======
if(!mapload)
return
var/datum/computer/file/embedded_program/simple_vent_controller/new_prog = new
new_prog.airpump_tag = airpump_tag
new_prog.master = src
program = new_prog
/obj/machinery/embedded_controller/radio/simple_vent_controller/update_icon()
if(on && program)
icon_state = "airlock_control_standby"
else
icon_state = "airlock_control_off"
/obj/machinery/embedded_controller/radio/simple_vent_controller/return_text()
var/state_options = null
state_options = {"<A href='?src=[REF(src)];command=vent_inactive'>Deactivate Vent</A><BR>
<A href='?src=[REF(src)];command=vent_pump'>Activate Vent / Pump</A><BR>
<A href='?src=[REF(src)];command=vent_clear'>Activate Vent / Clear</A><BR>"}
var/output = {"<B>Vent Control Console</B><HR>
[state_options]<HR>"}
return output
>>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental

View File

@@ -67,7 +67,7 @@
var/mob/thismob = i var/mob/thismob = i
var/list/mob_info = list() var/list/mob_info = list()
mob_info["name"] = thismob.real_name mob_info["name"] = thismob.real_name
mob_info["mob"] = "\ref[thismob]" mob_info["mob"] = "[REF(thismob)]"
mobs += list(mob_info) mobs += list(mob_info)
data["mobs"] = mobs data["mobs"] = mobs

View File

@@ -120,8 +120,8 @@ Possible to do for anyone motivated enough:
if(temp) if(temp)
dat = temp dat = temp
else else
dat = "<a href='?src=\ref[src];AIrequest=1'>Request an AI's presence.</a><br>" dat = "<a href='?src=[REF(src)];AIrequest=1'>Request an AI's presence.</a><br>"
dat += "<a href='?src=\ref[src];Holocall=1'>Call another holopad.</a><br>" dat += "<a href='?src=[REF(src)];Holocall=1'>Call another holopad.</a><br>"
if(LAZYLEN(holo_calls)) if(LAZYLEN(holo_calls))
dat += "=====================================================<br>" dat += "=====================================================<br>"
@@ -131,7 +131,7 @@ Possible to do for anyone motivated enough:
for(var/I in holo_calls) for(var/I in holo_calls)
var/datum/holocall/HC = I var/datum/holocall/HC = I
if(HC.connected_holopad != src) if(HC.connected_holopad != src)
dat += "<a href='?src=\ref[src];connectcall=\ref[HC]'>Answer call from [get_area(HC.calling_holopad)].</a><br>" dat += "<a href='?src=[REF(src)];connectcall=[REF(HC)]'>Answer call from [get_area(HC.calling_holopad)].</a><br>"
one_unanswered_call = TRUE one_unanswered_call = TRUE
else else
one_answered_call = TRUE one_answered_call = TRUE
@@ -142,7 +142,7 @@ Possible to do for anyone motivated enough:
for(var/I in holo_calls) for(var/I in holo_calls)
var/datum/holocall/HC = I var/datum/holocall/HC = I
if(HC.connected_holopad == src) if(HC.connected_holopad == src)
dat += "<a href='?src=\ref[src];disconnectcall=\ref[HC]'>Disconnect call from [HC.user].</a><br>" dat += "<a href='?src=[REF(src)];disconnectcall=[REF(HC)]'>Disconnect call from [HC.user].</a><br>"
var/datum/browser/popup = new(user, "holopad", name, 300, 130) var/datum/browser/popup = new(user, "holopad", name, 300, 130)
@@ -166,22 +166,22 @@ Possible to do for anyone motivated enough:
if(last_request + 200 < world.time) if(last_request + 200 < world.time)
last_request = world.time last_request = world.time
temp = "You requested an AI's presence.<BR>" temp = "You requested an AI's presence.<BR>"
temp += "<A href='?src=\ref[src];mainmenu=1'>Main Menu</A>" temp += "<A href='?src=[REF(src)];mainmenu=1'>Main Menu</A>"
var/area/area = get_area(src) var/area/area = get_area(src)
for(var/mob/living/silicon/ai/AI in GLOB.silicon_mobs) for(var/mob/living/silicon/ai/AI in GLOB.silicon_mobs)
if(!AI.client) if(!AI.client)
continue continue
to_chat(AI, "<span class='info'>Your presence is requested at <a href='?src=\ref[AI];jumptoholopad=\ref[src]'>\the [area]</a>.</span>") to_chat(AI, "<span class='info'>Your presence is requested at <a href='?src=[REF(AI)];jumptoholopad=[REF(src)]'>\the [area]</a>.</span>")
else else
temp = "A request for AI presence was already sent recently.<BR>" temp = "A request for AI presence was already sent recently.<BR>"
temp += "<A href='?src=\ref[src];mainmenu=1'>Main Menu</A>" temp += "<A href='?src=[REF(src)];mainmenu=1'>Main Menu</A>"
else if(href_list["Holocall"]) else if(href_list["Holocall"])
if(outgoing_call) if(outgoing_call)
return return
temp = "You must stand on the holopad to make a call!<br>" temp = "You must stand on the holopad to make a call!<br>"
temp += "<A href='?src=\ref[src];mainmenu=1'>Main Menu</A>" temp += "<A href='?src=[REF(src)];mainmenu=1'>Main Menu</A>"
if(usr.loc == loc) if(usr.loc == loc)
var/list/callnames = list() var/list/callnames = list()
for(var/I in holopads) for(var/I in holopads)
@@ -196,7 +196,7 @@ Possible to do for anyone motivated enough:
if(usr.loc == loc) if(usr.loc == loc)
temp = "Dialing...<br>" temp = "Dialing...<br>"
temp += "<A href='?src=\ref[src];mainmenu=1'>Main Menu</A>" temp += "<A href='?src=[REF(src)];mainmenu=1'>Main Menu</A>"
new /datum/holocall(usr, src, callnames[result]) new /datum/holocall(usr, src, callnames[result])
else if(href_list["connectcall"]) else if(href_list["connectcall"])

View File

@@ -160,7 +160,7 @@
/obj/machinery/limbgrower/proc/main_win(mob/user) /obj/machinery/limbgrower/proc/main_win(mob/user)
var/dat = "<div class='statusDisplay'><h3>Limb Grower Menu:</h3><br>" var/dat = "<div class='statusDisplay'><h3>Limb Grower Menu:</h3><br>"
dat += "<A href='?src=\ref[src];menu=[LIMBGROWER_CHEMICAL_MENU]'>Chemical Storage</A>" dat += "<A href='?src=[REF(src)];menu=[LIMBGROWER_CHEMICAL_MENU]'>Chemical Storage</A>"
dat += materials_printout() dat += materials_printout()
dat += "<table style='width:100%' align='center'><tr>" dat += "<table style='width:100%' align='center'><tr>"
@@ -168,7 +168,7 @@
if(C=="special" && !emagged) //Only want to show special when console is emagged if(C=="special" && !emagged) //Only want to show special when console is emagged
continue continue
dat += "<td><A href='?src=\ref[src];category=[C];menu=[LIMBGROWER_CATEGORY_MENU]'>[C]</A></td>" dat += "<td><A href='?src=[REF(src)];category=[C];menu=[LIMBGROWER_CATEGORY_MENU]'>[C]</A></td>"
dat += "</tr><tr>" dat += "</tr><tr>"
//one category per line //one category per line
@@ -176,7 +176,7 @@
return dat return dat
/obj/machinery/limbgrower/proc/category_win(mob/user,selected_category) /obj/machinery/limbgrower/proc/category_win(mob/user,selected_category)
var/dat = "<A href='?src=\ref[src];menu=[LIMBGROWER_MAIN_MENU]'>Return to main menu</A>" var/dat = "<A href='?src=[REF(src)];menu=[LIMBGROWER_MAIN_MENU]'>Return to main menu</A>"
dat += "<div class='statusDisplay'><h3>Browsing [selected_category]:</h3><br>" dat += "<div class='statusDisplay'><h3>Browsing [selected_category]:</h3><br>"
dat += materials_printout() dat += materials_printout()
@@ -187,7 +187,7 @@
if(disabled || !can_build(D)) if(disabled || !can_build(D))
dat += "<span class='linkOff'>[D.name]</span>" dat += "<span class='linkOff'>[D.name]</span>"
else else
dat += "<a href='?src=\ref[src];make=[D.id];multiplier=1'>[D.name]</a>" dat += "<a href='?src=[REF(src)];make=[D.id];multiplier=1'>[D.name]</a>"
dat += "[get_design_cost(D)]<br>" dat += "[get_design_cost(D)]<br>"
dat += "</div>" dat += "</div>"
@@ -195,13 +195,13 @@
/obj/machinery/limbgrower/proc/chemical_win(mob/user) /obj/machinery/limbgrower/proc/chemical_win(mob/user)
var/dat = "<A href='?src=\ref[src];menu=[LIMBGROWER_MAIN_MENU]'>Return to main menu</A>" var/dat = "<A href='?src=[REF(src)];menu=[LIMBGROWER_MAIN_MENU]'>Return to main menu</A>"
dat += "<div class='statusDisplay'><h3>Browsing Chemical Storage:</h3><br>" dat += "<div class='statusDisplay'><h3>Browsing Chemical Storage:</h3><br>"
dat += materials_printout() dat += materials_printout()
for(var/datum/reagent/R in reagents.reagent_list) for(var/datum/reagent/R in reagents.reagent_list)
dat += "[R.name]: [R.volume]" dat += "[R.name]: [R.volume]"
dat += "<A href='?src=\ref[src];disposeI=[R.id]'>Purge</A><BR>" dat += "<A href='?src=[REF(src)];disposeI=[R.id]'>Purge</A><BR>"
dat += "</div>" dat += "</div>"
return dat return dat

View File

@@ -249,9 +249,9 @@
var/dat = "<B>Magnetic Control Console</B><BR><BR>" var/dat = "<B>Magnetic Control Console</B><BR><BR>"
if(!autolink) if(!autolink)
dat += {" dat += {"
Frequency: <a href='?src=\ref[src];operation=setfreq'>[frequency]</a><br> Frequency: <a href='?src=[REF(src)];operation=setfreq'>[frequency]</a><br>
Code: <a href='?src=\ref[src];operation=setfreq'>[code]</a><br> Code: <a href='?src=[REF(src)];operation=setfreq'>[code]</a><br>
<a href='?src=\ref[src];operation=probe'>Probe Generators</a><br> <a href='?src=[REF(src)];operation=probe'>Probe Generators</a><br>
"} "}
if(magnets.len >= 1) if(magnets.len >= 1)
@@ -260,11 +260,11 @@
var/i = 0 var/i = 0
for(var/obj/machinery/magnetic_module/M in magnets) for(var/obj/machinery/magnetic_module/M in magnets)
i++ i++
dat += "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;< \[[i]\] (<a href='?src=\ref[src];radio-op=togglepower'>[M.on ? "On":"Off"]</a>) | Electricity level: <a href='?src=\ref[src];radio-op=minuselec'>-</a> [M.electricity_level] <a href='?src=\ref[src];radio-op=pluselec'>+</a>; Magnetic field: <a href='?src=\ref[src];radio-op=minusmag'>-</a> [M.magnetic_field] <a href='?src=\ref[src];radio-op=plusmag'>+</a><br>" dat += "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;< \[[i]\] (<a href='?src=[REF(src)];radio-op=togglepower'>[M.on ? "On":"Off"]</a>) | Electricity level: <a href='?src=[REF(src)];radio-op=minuselec'>-</a> [M.electricity_level] <a href='?src=[REF(src)];radio-op=pluselec'>+</a>; Magnetic field: <a href='?src=[REF(src)];radio-op=minusmag'>-</a> [M.magnetic_field] <a href='?src=[REF(src)];radio-op=plusmag'>+</a><br>"
dat += "<br>Speed: <a href='?src=\ref[src];operation=minusspeed'>-</a> [speed] <a href='?src=\ref[src];operation=plusspeed'>+</a><br>" dat += "<br>Speed: <a href='?src=[REF(src)];operation=minusspeed'>-</a> [speed] <a href='?src=[REF(src)];operation=plusspeed'>+</a><br>"
dat += "Path: {<a href='?src=\ref[src];operation=setpath'>[path]</a>}<br>" dat += "Path: {<a href='?src=[REF(src)];operation=setpath'>[path]</a>}<br>"
dat += "Moving: <a href='?src=\ref[src];operation=togglemoving'>[moving ? "Enabled":"Disabled"]</a>" dat += "Moving: <a href='?src=[REF(src)];operation=togglemoving'>[moving ? "Enabled":"Disabled"]</a>"
user << browse(dat, "window=magnet;size=400x500") user << browse(dat, "window=magnet;size=400x500")

View File

@@ -24,6 +24,7 @@
/obj/machinery/navbeacon/Initialize() /obj/machinery/navbeacon/Initialize()
. = ..() . = ..()
<<<<<<< HEAD
set_codes() set_codes()
@@ -205,4 +206,187 @@ Transponder Codes:<UL>"}
codes[newkey] = newval codes[newkey] = newval
=======
set_codes()
var/turf/T = loc
hide(T.intact)
if(codes["patrol"])
if(!GLOB.navbeacons["[z]"])
GLOB.navbeacons["[z]"] = list()
GLOB.navbeacons["[z]"] += src //Register with the patrol list!
if(codes["delivery"])
GLOB.deliverybeacons += src
GLOB.deliverybeacontags += location
/obj/machinery/navbeacon/Destroy()
GLOB.navbeacons["[z]"] -= src //Remove from beacon list, if in one.
GLOB.deliverybeacons -= src
return ..()
// set the transponder codes assoc list from codes_txt
/obj/machinery/navbeacon/proc/set_codes()
if(!codes_txt)
return
codes = new()
var/list/entries = splittext(codes_txt, ";") // entries are separated by semicolons
for(var/e in entries)
var/index = findtext(e, "=") // format is "key=value"
if(index)
var/key = copytext(e, 1, index)
var/val = copytext(e, index+1)
codes[key] = val
else
codes[e] = "1"
// called when turf state changes
// hide the object if turf is intact
/obj/machinery/navbeacon/hide(intact)
invisibility = intact ? INVISIBILITY_MAXIMUM : 0
updateicon()
// update the icon_state
/obj/machinery/navbeacon/proc/updateicon()
var/state="navbeacon[open]"
if(invisibility)
icon_state = "[state]-f" // if invisible, set icon to faded version
// in case revealed by T-scanner
else
icon_state = "[state]"
/obj/machinery/navbeacon/attackby(obj/item/I, mob/user, params)
var/turf/T = loc
if(T.intact)
return // prevent intraction when T-scanner revealed
if(istype(I, /obj/item/screwdriver))
open = !open
user.visible_message("[user] [open ? "opens" : "closes"] the beacon's cover.", "<span class='notice'>You [open ? "open" : "close"] the beacon's cover.</span>")
updateicon()
else if (istype(I, /obj/item/card/id)||istype(I, /obj/item/device/pda))
if(open)
if (src.allowed(user))
src.locked = !src.locked
to_chat(user, "<span class='notice'>Controls are now [src.locked ? "locked" : "unlocked"].</span>")
else
to_chat(user, "<span class='danger'>Access denied.</span>")
updateDialog()
else
to_chat(user, "<span class='warning'>You must open the cover first!</span>")
else
return ..()
/obj/machinery/navbeacon/attack_ai(mob/user)
interact(user, 1)
/obj/machinery/navbeacon/attack_paw()
return
/obj/machinery/navbeacon/attack_hand(mob/user)
interact(user, 0)
/obj/machinery/navbeacon/interact(mob/user, ai = 0)
var/turf/T = loc
if(T.intact)
return // prevent intraction when T-scanner revealed
if(!open && !ai) // can't alter controls if not open, unless you're an AI
to_chat(user, "<span class='warning'>The beacon's control cover is closed!</span>")
return
var/t
if(locked && !ai)
t = {"<TT><B>Navigation Beacon</B><HR><BR>
<i>(swipe card to unlock controls)</i><BR>
Location: [location ? location : "(none)"]</A><BR>
Transponder Codes:<UL>"}
for(var/key in codes)
t += "<LI>[key] ... [codes[key]]"
t+= "<UL></TT>"
else
t = {"<TT><B>Navigation Beacon</B><HR><BR>
<i>(swipe card to lock controls)</i><BR>
<HR>
Location: <A href='byond://?src=[REF(src)];locedit=1'>[location ? location : "None"]</A><BR>
Transponder Codes:<UL>"}
for(var/key in codes)
t += "<LI>[key] ... [codes[key]]"
t += " <A href='byond://?src=[REF(src)];edit=1;code=[key]'>Edit</A>"
t += " <A href='byond://?src=[REF(src)];delete=1;code=[key]'>Delete</A><BR>"
t += " <A href='byond://?src=[REF(src)];add=1;'>Add New</A><BR>"
t+= "<UL></TT>"
var/datum/browser/popup = new(user, "navbeacon", "Navigation Beacon", 300, 400)
popup.set_content(t)
popup.open()
return
/obj/machinery/navbeacon/Topic(href, href_list)
if(..())
return
if(open && !locked)
usr.set_machine(src)
if(href_list["locedit"])
var/newloc = copytext(sanitize(input("Enter New Location", "Navigation Beacon", location) as text|null),1,MAX_MESSAGE_LEN)
if(newloc)
location = newloc
updateDialog()
else if(href_list["edit"])
var/codekey = href_list["code"]
var/newkey = stripped_input(usr, "Enter Transponder Code Key", "Navigation Beacon", codekey)
if(!newkey)
return
var/codeval = codes[codekey]
var/newval = stripped_input(usr, "Enter Transponder Code Value", "Navigation Beacon", codeval)
if(!newval)
newval = codekey
return
codes.Remove(codekey)
codes[newkey] = newval
updateDialog()
else if(href_list["delete"])
var/codekey = href_list["code"]
codes.Remove(codekey)
updateDialog()
else if(href_list["add"])
var/newkey = stripped_input(usr, "Enter New Transponder Code Key", "Navigation Beacon")
if(!newkey)
return
var/newval = stripped_input(usr, "Enter New Transponder Code Value", "Navigation Beacon")
if(!newval)
newval = "1"
return
if(!codes)
codes = new()
codes[newkey] = newval
>>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental
updateDialog() updateDialog()

View File

@@ -267,21 +267,21 @@ GLOBAL_LIST_EMPTY(allCasters)
dat += "Welcome to Newscasting Unit #[unit_no].<BR> Interface & News networks Operational." dat += "Welcome to Newscasting Unit #[unit_no].<BR> Interface & News networks Operational."
dat += "<BR><FONT SIZE=1>Property of Nanotrasen Inc</FONT>" dat += "<BR><FONT SIZE=1>Property of Nanotrasen Inc</FONT>"
if(GLOB.news_network.wanted_issue.active) if(GLOB.news_network.wanted_issue.active)
dat+= "<HR><A href='?src=\ref[src];view_wanted=1'>Read Wanted Issue</A>" dat+= "<HR><A href='?src=[REF(src)];view_wanted=1'>Read Wanted Issue</A>"
dat+= "<HR><BR><A href='?src=\ref[src];create_channel=1'>Create Feed Channel</A>" dat+= "<HR><BR><A href='?src=[REF(src)];create_channel=1'>Create Feed Channel</A>"
dat+= "<BR><A href='?src=\ref[src];view=1'>View Feed Channels</A>" dat+= "<BR><A href='?src=[REF(src)];view=1'>View Feed Channels</A>"
dat+= "<BR><A href='?src=\ref[src];create_feed_story=1'>Submit new Feed story</A>" dat+= "<BR><A href='?src=[REF(src)];create_feed_story=1'>Submit new Feed story</A>"
dat+= "<BR><A href='?src=\ref[src];menu_paper=1'>Print newspaper</A>" dat+= "<BR><A href='?src=[REF(src)];menu_paper=1'>Print newspaper</A>"
dat+= "<BR><A href='?src=\ref[src];refresh=1'>Re-scan User</A>" dat+= "<BR><A href='?src=[REF(src)];refresh=1'>Re-scan User</A>"
dat+= "<BR><BR><A href='?src=\ref[human_or_robot_user];mach_close=newscaster_main'>Exit</A>" dat+= "<BR><BR><A href='?src=[REF(human_or_robot_user)];mach_close=newscaster_main'>Exit</A>"
if(securityCaster) if(securityCaster)
var/wanted_already = 0 var/wanted_already = 0
if(GLOB.news_network.wanted_issue.active) if(GLOB.news_network.wanted_issue.active)
wanted_already = 1 wanted_already = 1
dat+="<HR><B>Feed Security functions:</B><BR>" dat+="<HR><B>Feed Security functions:</B><BR>"
dat+="<BR><A href='?src=\ref[src];menu_wanted=1'>[(wanted_already) ? ("Manage") : ("Publish")] \"Wanted\" Issue</A>" dat+="<BR><A href='?src=[REF(src)];menu_wanted=1'>[(wanted_already) ? ("Manage") : ("Publish")] \"Wanted\" Issue</A>"
dat+="<BR><A href='?src=\ref[src];menu_censor_story=1'>Censor Feed Stories</A>" dat+="<BR><A href='?src=[REF(src)];menu_censor_story=1'>Censor Feed Stories</A>"
dat+="<BR><A href='?src=\ref[src];menu_censor_channel=1'>Mark Feed Channel with Nanotrasen D-Notice</A>" dat+="<BR><A href='?src=[REF(src)];menu_censor_channel=1'>Mark Feed Channel with Nanotrasen D-Notice</A>"
dat+="<BR><HR>The newscaster recognises you as: <FONT COLOR='green'>[scanned_user]</FONT>" dat+="<BR><HR>The newscaster recognises you as: <FONT COLOR='green'>[scanned_user]</FONT>"
if(1) if(1)
dat+= "Station Feed Channels<HR>" dat+= "Station Feed Channels<HR>"
@@ -290,31 +290,31 @@ GLOBAL_LIST_EMPTY(allCasters)
else else
for(var/datum/newscaster/feed_channel/CHANNEL in GLOB.news_network.network_channels) for(var/datum/newscaster/feed_channel/CHANNEL in GLOB.news_network.network_channels)
if(CHANNEL.is_admin_channel) if(CHANNEL.is_admin_channel)
dat+="<B><FONT style='BACKGROUND-COLOR: LightGreen '><A href='?src=\ref[src];show_channel=\ref[CHANNEL]'>[CHANNEL.channel_name]</A></FONT></B><BR>" dat+="<B><FONT style='BACKGROUND-COLOR: LightGreen '><A href='?src=[REF(src)];show_channel=[REF(CHANNEL)]'>[CHANNEL.channel_name]</A></FONT></B><BR>"
else else
dat+="<B><A href='?src=\ref[src];show_channel=\ref[CHANNEL]'>[CHANNEL.channel_name]</A> [(CHANNEL.censored) ? ("<FONT COLOR='red'>***</FONT>") : ()]<BR></B>" dat+="<B><A href='?src=[REF(src)];show_channel=[REF(CHANNEL)]'>[CHANNEL.channel_name]</A> [(CHANNEL.censored) ? ("<FONT COLOR='red'>***</FONT>") : ()]<BR></B>"
dat+="<BR><HR><A href='?src=\ref[src];refresh=1'>Refresh</A>" dat+="<BR><HR><A href='?src=[REF(src)];refresh=1'>Refresh</A>"
dat+="<BR><A href='?src=\ref[src];setScreen=[0]'>Back</A>" dat+="<BR><A href='?src=[REF(src)];setScreen=[0]'>Back</A>"
if(2) if(2)
dat+="Creating new Feed Channel..." dat+="Creating new Feed Channel..."
dat+="<HR><B><A href='?src=\ref[src];set_channel_name=1'>Channel Name</A>:</B> [channel_name]<BR>" dat+="<HR><B><A href='?src=[REF(src)];set_channel_name=1'>Channel Name</A>:</B> [channel_name]<BR>"
dat+="<B>Channel Author:</B> <FONT COLOR='green'>[scanned_user]</FONT><BR>" dat+="<B>Channel Author:</B> <FONT COLOR='green'>[scanned_user]</FONT><BR>"
dat+="<B><A href='?src=\ref[src];set_channel_lock=1'>Will Accept Public Feeds</A>:</B> [(c_locked) ? ("NO") : ("YES")]<BR><BR>" dat+="<B><A href='?src=[REF(src)];set_channel_lock=1'>Will Accept Public Feeds</A>:</B> [(c_locked) ? ("NO") : ("YES")]<BR><BR>"
dat+="<BR><A href='?src=\ref[src];submit_new_channel=1'>Submit</A><BR><BR><A href='?src=\ref[src];setScreen=[0]'>Cancel</A><BR>" dat+="<BR><A href='?src=[REF(src)];submit_new_channel=1'>Submit</A><BR><BR><A href='?src=[REF(src)];setScreen=[0]'>Cancel</A><BR>"
if(3) if(3)
dat+="Creating new Feed Message..." dat+="Creating new Feed Message..."
dat+="<HR><B><A href='?src=\ref[src];set_channel_receiving=1'>Receiving Channel</A>:</B> [channel_name]<BR>" dat+="<HR><B><A href='?src=[REF(src)];set_channel_receiving=1'>Receiving Channel</A>:</B> [channel_name]<BR>"
dat+="<B>Message Author:</B> <FONT COLOR='green'>[scanned_user]</FONT><BR>" dat+="<B>Message Author:</B> <FONT COLOR='green'>[scanned_user]</FONT><BR>"
dat+="<B><A href='?src=\ref[src];set_new_message=1'>Message Body</A>:</B> <BR><font face=\"[PEN_FONT]\">[parsemarkdown(msg, user)]</font><BR>" dat+="<B><A href='?src=[REF(src)];set_new_message=1'>Message Body</A>:</B> <BR><font face=\"[PEN_FONT]\">[parsemarkdown(msg, user)]</font><BR>"
dat+="<B><A href='?src=\ref[src];set_attachment=1'>Attach Photo</A>:</B> [(photo ? "Photo Attached" : "No Photo")]</BR>" dat+="<B><A href='?src=[REF(src)];set_attachment=1'>Attach Photo</A>:</B> [(photo ? "Photo Attached" : "No Photo")]</BR>"
dat+="<B><A href='?src=\ref[src];set_comment=1'>Comments [allow_comments ? "Enabled" : "Disabled"]</A></B><BR>" dat+="<B><A href='?src=[REF(src)];set_comment=1'>Comments [allow_comments ? "Enabled" : "Disabled"]</A></B><BR>"
dat+="<BR><A href='?src=\ref[src];submit_new_message=1'>Submit</A><BR><BR><A href='?src=\ref[src];setScreen=[0]'>Cancel</A><BR>" dat+="<BR><A href='?src=[REF(src)];submit_new_message=1'>Submit</A><BR><BR><A href='?src=[REF(src)];setScreen=[0]'>Cancel</A><BR>"
if(4) if(4)
dat+="Feed story successfully submitted to [channel_name].<BR><BR>" dat+="Feed story successfully submitted to [channel_name].<BR><BR>"
dat+="<BR><A href='?src=\ref[src];setScreen=[0]'>Return</A><BR>" dat+="<BR><A href='?src=[REF(src)];setScreen=[0]'>Return</A><BR>"
if(5) if(5)
dat+="Feed Channel [channel_name] created successfully.<BR><BR>" dat+="Feed Channel [channel_name] created successfully.<BR><BR>"
dat+="<BR><A href='?src=\ref[src];setScreen=[0]'>Return</A><BR>" dat+="<BR><A href='?src=[REF(src)];setScreen=[0]'>Return</A><BR>"
if(6) if(6)
dat+="<B><FONT COLOR='maroon'>ERROR: Could not submit Feed story to Network.</B></FONT><HR><BR>" dat+="<B><FONT COLOR='maroon'>ERROR: Could not submit Feed story to Network.</B></FONT><HR><BR>"
if(channel_name=="") if(channel_name=="")
@@ -323,7 +323,7 @@ GLOBAL_LIST_EMPTY(allCasters)
dat+="<FONT COLOR='maroon'>Channel author unverified.</FONT><BR>" dat+="<FONT COLOR='maroon'>Channel author unverified.</FONT><BR>"
if(msg == "" || msg == "\[REDACTED\]") if(msg == "" || msg == "\[REDACTED\]")
dat+="<FONT COLOR='maroon'>Invalid message body.</FONT><BR>" dat+="<FONT COLOR='maroon'>Invalid message body.</FONT><BR>"
dat+="<BR><A href='?src=\ref[src];setScreen=[3]'>Return</A><BR>" dat+="<BR><A href='?src=[REF(src)];setScreen=[3]'>Return</A><BR>"
if(7) if(7)
dat+="<B><FONT COLOR='maroon'>ERROR: Could not submit Feed Channel to Network.</B></FONT><HR><BR>" dat+="<B><FONT COLOR='maroon'>ERROR: Could not submit Feed Channel to Network.</B></FONT><HR><BR>"
var/list/existing_authors = list() var/list/existing_authors = list()
@@ -345,7 +345,7 @@ GLOBAL_LIST_EMPTY(allCasters)
dat+="<FONT COLOR='maroon'>Channel name already in use.</FONT><BR>" dat+="<FONT COLOR='maroon'>Channel name already in use.</FONT><BR>"
if(scanned_user=="Unknown") if(scanned_user=="Unknown")
dat+="<FONT COLOR='maroon'>Channel author unverified.</FONT><BR>" dat+="<FONT COLOR='maroon'>Channel author unverified.</FONT><BR>"
dat+="<BR><A href='?src=\ref[src];setScreen=[2]'>Return</A><BR>" dat+="<BR><A href='?src=[REF(src)];setScreen=[2]'>Return</A><BR>"
if(8) if(8)
var/total_num=length(GLOB.news_network.network_channels) var/total_num=length(GLOB.news_network.network_channels)
var/active_num=total_num var/active_num=total_num
@@ -357,8 +357,8 @@ GLOBAL_LIST_EMPTY(allCasters)
active_num-- active_num--
dat+="Network currently serves a total of [total_num] Feed channels, [active_num] of which are active, and a total of [message_num] Feed Stories." dat+="Network currently serves a total of [total_num] Feed channels, [active_num] of which are active, and a total of [message_num] Feed Stories."
dat+="<BR><BR><B>Liquid Paper remaining:</B> [(paper_remaining) *100 ] cm^3" dat+="<BR><BR><B>Liquid Paper remaining:</B> [(paper_remaining) *100 ] cm^3"
dat+="<BR><BR><A href='?src=\ref[src];print_paper=[0]'>Print Paper</A>" dat+="<BR><BR><A href='?src=[REF(src)];print_paper=[0]'>Print Paper</A>"
dat+="<BR><A href='?src=\ref[src];setScreen=[0]'>Cancel</A>" dat+="<BR><A href='?src=[REF(src)];setScreen=[0]'>Cancel</A>"
if(9) if(9)
dat+="<B>[viewing_channel.channel_name]: </B><FONT SIZE=1>\[created by: <FONT COLOR='maroon'>[viewing_channel.returnAuthor(-1)]</FONT>\]</FONT><HR>" dat+="<B>[viewing_channel.channel_name]: </B><FONT SIZE=1>\[created by: <FONT COLOR='maroon'>[viewing_channel.returnAuthor(-1)]</FONT>\]</FONT><HR>"
if(viewing_channel.censored) if(viewing_channel.censored)
@@ -385,9 +385,9 @@ GLOBAL_LIST_EMPTY(allCasters)
if(MESSAGE.locked) if(MESSAGE.locked)
dat+="<b>Comments locked</b><br>" dat+="<b>Comments locked</b><br>"
else else
dat+="<a href='?src=\ref[src];new_comment=\ref[MESSAGE]'>Comment</a><br>" dat+="<a href='?src=[REF(src)];new_comment=[REF(MESSAGE)]'>Comment</a><br>"
dat+="<BR><HR><A href='?src=\ref[src];refresh=1'>Refresh</A>" dat+="<BR><HR><A href='?src=[REF(src)];refresh=1'>Refresh</A>"
dat+="<BR><A href='?src=\ref[src];setScreen=[1]'>Back</A>" dat+="<BR><A href='?src=[REF(src)];setScreen=[1]'>Back</A>"
if(10) if(10)
dat+="<B>Nanotrasen Feed Censorship Tool</B><BR>" dat+="<B>Nanotrasen Feed Censorship Tool</B><BR>"
dat+="<FONT SIZE=1>NOTE: Due to the nature of news Feeds, total deletion of a Feed Story is not possible.<BR>" dat+="<FONT SIZE=1>NOTE: Due to the nature of news Feeds, total deletion of a Feed Story is not possible.<BR>"
@@ -397,8 +397,8 @@ GLOBAL_LIST_EMPTY(allCasters)
dat+="<I>No feed channels found active...</I><BR>" dat+="<I>No feed channels found active...</I><BR>"
else else
for(var/datum/newscaster/feed_channel/CHANNEL in GLOB.news_network.network_channels) for(var/datum/newscaster/feed_channel/CHANNEL in GLOB.news_network.network_channels)
dat+="<A href='?src=\ref[src];pick_censor_channel=\ref[CHANNEL]'>[CHANNEL.channel_name]</A> [(CHANNEL.censored) ? ("<FONT COLOR='red'>***</FONT>") : ()]<BR>" dat+="<A href='?src=[REF(src)];pick_censor_channel=[REF(CHANNEL)]'>[CHANNEL.channel_name]</A> [(CHANNEL.censored) ? ("<FONT COLOR='red'>***</FONT>") : ()]<BR>"
dat+="<BR><A href='?src=\ref[src];setScreen=[0]'>Cancel</A>" dat+="<BR><A href='?src=[REF(src)];setScreen=[0]'>Cancel</A>"
if(11) if(11)
dat+="<B>Nanotrasen D-Notice Handler</B><HR>" dat+="<B>Nanotrasen D-Notice Handler</B><HR>"
dat+="<FONT SIZE=1>A D-Notice is to be bestowed upon the channel if the handling Authority deems it as harmful for the station's" dat+="<FONT SIZE=1>A D-Notice is to be bestowed upon the channel if the handling Authority deems it as harmful for the station's"
@@ -408,24 +408,24 @@ GLOBAL_LIST_EMPTY(allCasters)
dat+="<I>No feed channels found active...</I><BR>" dat+="<I>No feed channels found active...</I><BR>"
else else
for(var/datum/newscaster/feed_channel/CHANNEL in GLOB.news_network.network_channels) for(var/datum/newscaster/feed_channel/CHANNEL in GLOB.news_network.network_channels)
dat+="<A href='?src=\ref[src];pick_d_notice=\ref[CHANNEL]'>[CHANNEL.channel_name]</A> [(CHANNEL.censored) ? ("<FONT COLOR='red'>***</FONT>") : ()]<BR>" dat+="<A href='?src=[REF(src)];pick_d_notice=[REF(CHANNEL)]'>[CHANNEL.channel_name]</A> [(CHANNEL.censored) ? ("<FONT COLOR='red'>***</FONT>") : ()]<BR>"
dat+="<BR><A href='?src=\ref[src];setScreen=[0]'>Back</A>" dat+="<BR><A href='?src=[REF(src)];setScreen=[0]'>Back</A>"
if(12) if(12)
dat+="<B>[viewing_channel.channel_name]: </B><FONT SIZE=1>\[ created by: <FONT COLOR='maroon'>[viewing_channel.returnAuthor(-1)]</FONT> \]</FONT><BR>" dat+="<B>[viewing_channel.channel_name]: </B><FONT SIZE=1>\[ created by: <FONT COLOR='maroon'>[viewing_channel.returnAuthor(-1)]</FONT> \]</FONT><BR>"
dat+="<FONT SIZE=2><A href='?src=\ref[src];censor_channel_author=\ref[viewing_channel]'>[(viewing_channel.authorCensor) ? ("Undo Author censorship") : ("Censor channel Author")]</A></FONT><HR>" dat+="<FONT SIZE=2><A href='?src=[REF(src)];censor_channel_author=[REF(viewing_channel)]'>[(viewing_channel.authorCensor) ? ("Undo Author censorship") : ("Censor channel Author")]</A></FONT><HR>"
if(isemptylist(viewing_channel.messages)) if(isemptylist(viewing_channel.messages))
dat+="<I>No feed messages found in channel...</I><BR>" dat+="<I>No feed messages found in channel...</I><BR>"
else else
for(var/datum/newscaster/feed_message/MESSAGE in viewing_channel.messages) for(var/datum/newscaster/feed_message/MESSAGE in viewing_channel.messages)
dat+="-[MESSAGE.returnBody(-1)] <BR><FONT SIZE=1>\[Story by <FONT COLOR='maroon'>[MESSAGE.returnAuthor(-1)]</FONT>\]</FONT><BR>" dat+="-[MESSAGE.returnBody(-1)] <BR><FONT SIZE=1>\[Story by <FONT COLOR='maroon'>[MESSAGE.returnAuthor(-1)]</FONT>\]</FONT><BR>"
dat+="<FONT SIZE=2><A href='?src=\ref[src];censor_channel_story_body=\ref[MESSAGE]'>[(MESSAGE.bodyCensor) ? ("Undo story censorship") : ("Censor story")]</A> - <A href='?src=\ref[src];censor_channel_story_author=\ref[MESSAGE]'>[(MESSAGE.authorCensor) ? ("Undo Author Censorship") : ("Censor message Author")]</A></FONT><BR>" dat+="<FONT SIZE=2><A href='?src=[REF(src)];censor_channel_story_body=[REF(MESSAGE)]'>[(MESSAGE.bodyCensor) ? ("Undo story censorship") : ("Censor story")]</A> - <A href='?src=[REF(src)];censor_channel_story_author=[REF(MESSAGE)]'>[(MESSAGE.authorCensor) ? ("Undo Author Censorship") : ("Censor message Author")]</A></FONT><BR>"
dat+="[MESSAGE.comments.len] comment[MESSAGE.comments.len > 1 ? "s" : ""]: <a href='?src=\ref[src];lock_comment=\ref[MESSAGE]'>[MESSAGE.locked ? "Unlock" : "Lock"]</a><br>" dat+="[MESSAGE.comments.len] comment[MESSAGE.comments.len > 1 ? "s" : ""]: <a href='?src=[REF(src)];lock_comment=[REF(MESSAGE)]'>[MESSAGE.locked ? "Unlock" : "Lock"]</a><br>"
for(var/datum/newscaster/feed_comment/comment in MESSAGE.comments) for(var/datum/newscaster/feed_comment/comment in MESSAGE.comments)
dat+="[comment.body] <a href='?src=\ref[src];del_comment=\ref[comment];del_comment_msg=\ref[MESSAGE]'>X</a><br><font size=1>[comment.author] [comment.time_stamp]</font><br>" dat+="[comment.body] <a href='?src=[REF(src)];del_comment=[REF(comment)];del_comment_msg=[REF(MESSAGE)]'>X</a><br><font size=1>[comment.author] [comment.time_stamp]</font><br>"
dat+="<BR><A href='?src=\ref[src];setScreen=[10]'>Back</A>" dat+="<BR><A href='?src=[REF(src)];setScreen=[10]'>Back</A>"
if(13) if(13)
dat+="<B>[viewing_channel.channel_name]: </B><FONT SIZE=1>\[ created by: <FONT COLOR='maroon'>[viewing_channel.returnAuthor(-1)]</FONT> \]</FONT><BR>" dat+="<B>[viewing_channel.channel_name]: </B><FONT SIZE=1>\[ created by: <FONT COLOR='maroon'>[viewing_channel.returnAuthor(-1)]</FONT> \]</FONT><BR>"
dat+="Channel messages listed below. If you deem them dangerous to the station, you can <A href='?src=\ref[src];toggle_d_notice=\ref[viewing_channel]'>Bestow a D-Notice upon the channel</A>.<HR>" dat+="Channel messages listed below. If you deem them dangerous to the station, you can <A href='?src=[REF(src)];toggle_d_notice=[REF(viewing_channel)]'>Bestow a D-Notice upon the channel</A>.<HR>"
if(viewing_channel.censored) if(viewing_channel.censored)
dat+="<FONT COLOR='red'><B>ATTENTION: </B></FONT>This channel has been deemed as threatening to the welfare of the station, and marked with a Nanotrasen D-Notice.<BR>" dat+="<FONT COLOR='red'><B>ATTENTION: </B></FONT>This channel has been deemed as threatening to the welfare of the station, and marked with a Nanotrasen D-Notice.<BR>"
dat+="No further feed story additions are allowed while the D-Notice is in effect.</FONT><BR><BR>" dat+="No further feed story additions are allowed while the D-Notice is in effect.</FONT><BR><BR>"
@@ -435,7 +435,7 @@ GLOBAL_LIST_EMPTY(allCasters)
else else
for(var/datum/newscaster/feed_message/MESSAGE in viewing_channel.messages) for(var/datum/newscaster/feed_message/MESSAGE in viewing_channel.messages)
dat+="-[MESSAGE.returnBody(-1)] <BR><FONT SIZE=1>\[Story by <FONT COLOR='maroon'>[MESSAGE.returnAuthor(-1)]</FONT>\]</FONT><BR>" dat+="-[MESSAGE.returnBody(-1)] <BR><FONT SIZE=1>\[Story by <FONT COLOR='maroon'>[MESSAGE.returnAuthor(-1)]</FONT>\]</FONT><BR>"
dat+="<BR><A href='?src=\ref[src];setScreen=[11]'>Back</A>" dat+="<BR><A href='?src=[REF(src)];setScreen=[11]'>Back</A>"
if(14) if(14)
dat+="<B>Wanted Issue Handler:</B>" dat+="<B>Wanted Issue Handler:</B>"
var/wanted_already = 0 var/wanted_already = 0
@@ -446,20 +446,20 @@ GLOBAL_LIST_EMPTY(allCasters)
if(wanted_already) if(wanted_already)
dat+="<FONT SIZE=2><BR><I>A wanted issue is already in Feed Circulation. You can edit or cancel it below.</FONT></I>" dat+="<FONT SIZE=2><BR><I>A wanted issue is already in Feed Circulation. You can edit or cancel it below.</FONT></I>"
dat+="<HR>" dat+="<HR>"
dat+="<A href='?src=\ref[src];set_wanted_name=1'>Criminal Name</A>: [channel_name] <BR>" dat+="<A href='?src=[REF(src)];set_wanted_name=1'>Criminal Name</A>: [channel_name] <BR>"
dat+="<A href='?src=\ref[src];set_wanted_desc=1'>Description</A>: [msg] <BR>" dat+="<A href='?src=[REF(src)];set_wanted_desc=1'>Description</A>: [msg] <BR>"
dat+="<A href='?src=\ref[src];set_attachment=1'>Attach Photo</A>: [(photo ? "Photo Attached" : "No Photo")]</BR>" dat+="<A href='?src=[REF(src)];set_attachment=1'>Attach Photo</A>: [(photo ? "Photo Attached" : "No Photo")]</BR>"
if(wanted_already) if(wanted_already)
dat+="<B>Wanted Issue created by:</B><FONT COLOR='green'>[GLOB.news_network.wanted_issue.scannedUser]</FONT><BR>" dat+="<B>Wanted Issue created by:</B><FONT COLOR='green'>[GLOB.news_network.wanted_issue.scannedUser]</FONT><BR>"
else else
dat+="<B>Wanted Issue will be created under prosecutor:</B><FONT COLOR='green'>[scanned_user]</FONT><BR>" dat+="<B>Wanted Issue will be created under prosecutor:</B><FONT COLOR='green'>[scanned_user]</FONT><BR>"
dat+="<BR><A href='?src=\ref[src];submit_wanted=[end_param]'>[(wanted_already) ? ("Edit Issue") : ("Submit")]</A>" dat+="<BR><A href='?src=[REF(src)];submit_wanted=[end_param]'>[(wanted_already) ? ("Edit Issue") : ("Submit")]</A>"
if(wanted_already) if(wanted_already)
dat+="<BR><A href='?src=\ref[src];cancel_wanted=1'>Take down Issue</A>" dat+="<BR><A href='?src=[REF(src)];cancel_wanted=1'>Take down Issue</A>"
dat+="<BR><A href='?src=\ref[src];setScreen=[0]'>Cancel</A>" dat+="<BR><A href='?src=[REF(src)];setScreen=[0]'>Cancel</A>"
if(15) if(15)
dat+="<FONT COLOR='green'>Wanted issue for [channel_name] is now in Network Circulation.</FONT><BR><BR>" dat+="<FONT COLOR='green'>Wanted issue for [channel_name] is now in Network Circulation.</FONT><BR><BR>"
dat+="<BR><A href='?src=\ref[src];setScreen=[0]'>Return</A><BR>" dat+="<BR><A href='?src=[REF(src)];setScreen=[0]'>Return</A><BR>"
if(16) if(16)
dat+="<B><FONT COLOR='maroon'>ERROR: Wanted Issue rejected by Network.</B></FONT><HR><BR>" dat+="<B><FONT COLOR='maroon'>ERROR: Wanted Issue rejected by Network.</B></FONT><HR><BR>"
if(channel_name=="" || channel_name == "\[REDACTED\]") if(channel_name=="" || channel_name == "\[REDACTED\]")
@@ -468,10 +468,10 @@ GLOBAL_LIST_EMPTY(allCasters)
dat+="<FONT COLOR='maroon'>Issue author unverified.</FONT><BR>" dat+="<FONT COLOR='maroon'>Issue author unverified.</FONT><BR>"
if(msg == "" || msg == "\[REDACTED\]") if(msg == "" || msg == "\[REDACTED\]")
dat+="<FONT COLOR='maroon'>Invalid description.</FONT><BR>" dat+="<FONT COLOR='maroon'>Invalid description.</FONT><BR>"
dat+="<BR><A href='?src=\ref[src];setScreen=[0]'>Return</A><BR>" dat+="<BR><A href='?src=[REF(src)];setScreen=[0]'>Return</A><BR>"
if(17) if(17)
dat+="<B>Wanted Issue successfully deleted from Circulation</B><BR>" dat+="<B>Wanted Issue successfully deleted from Circulation</B><BR>"
dat+="<BR><A href='?src=\ref[src];setScreen=[0]'>Return</A><BR>" dat+="<BR><A href='?src=[REF(src)];setScreen=[0]'>Return</A><BR>"
if(18) if(18)
if(GLOB.news_network.wanted_issue.active) if(GLOB.news_network.wanted_issue.active)
dat+="<B><FONT COLOR ='maroon'>-- STATIONWIDE WANTED ISSUE --</B></FONT><BR><FONT SIZE=2>\[Submitted by: <FONT COLOR='green'>[GLOB.news_network.wanted_issue.scannedUser]</FONT>\]</FONT><HR>" dat+="<B><FONT COLOR ='maroon'>-- STATIONWIDE WANTED ISSUE --</B></FONT><BR><FONT SIZE=2>\[Submitted by: <FONT COLOR='green'>[GLOB.news_network.wanted_issue.scannedUser]</FONT>\]</FONT><HR>"
@@ -485,16 +485,16 @@ GLOBAL_LIST_EMPTY(allCasters)
dat+="None" dat+="None"
else else
dat+="No current wanted issue found.<BR><BR>" dat+="No current wanted issue found.<BR><BR>"
dat+="<BR><BR><A href='?src=\ref[src];setScreen=[0]'>Back</A><BR>" dat+="<BR><BR><A href='?src=[REF(src)];setScreen=[0]'>Back</A><BR>"
if(19) if(19)
dat+="<FONT COLOR='green'>Wanted issue for [channel_name] successfully edited.</FONT><BR><BR>" dat+="<FONT COLOR='green'>Wanted issue for [channel_name] successfully edited.</FONT><BR><BR>"
dat+="<BR><A href='?src=\ref[src];setScreen=[0]'>Return</A><BR>" dat+="<BR><A href='?src=[REF(src)];setScreen=[0]'>Return</A><BR>"
if(20) if(20)
dat+="<FONT COLOR='green'>Printing successful. Please receive your newspaper from the bottom of the machine.</FONT><BR><BR>" dat+="<FONT COLOR='green'>Printing successful. Please receive your newspaper from the bottom of the machine.</FONT><BR><BR>"
dat+="<A href='?src=\ref[src];setScreen=[0]'>Return</A>" dat+="<A href='?src=[REF(src)];setScreen=[0]'>Return</A>"
if(21) if(21)
dat+="<FONT COLOR='maroon'>Unable to print newspaper. Insufficient paper. Please notify maintenance personnel to refill machine storage.</FONT><BR><BR>" dat+="<FONT COLOR='maroon'>Unable to print newspaper. Insufficient paper. Please notify maintenance personnel to refill machine storage.</FONT><BR><BR>"
dat+="<A href='?src=\ref[src];setScreen=[0]'>Return</A>" dat+="<A href='?src=[REF(src)];setScreen=[0]'>Return</A>"
var/datum/browser/popup = new(human_or_robot_user, "newscaster_main", "Newscaster Unit #[unit_no]", 400, 600) var/datum/browser/popup = new(human_or_robot_user, "newscaster_main", "Newscaster Unit #[unit_no]", 400, 600)
popup.set_content(dat) popup.set_content(dat)
popup.set_title_image(human_or_robot_user.browse_rsc_icon(icon, icon_state)) popup.set_title_image(human_or_robot_user.browse_rsc_icon(icon, icon_state))
@@ -933,7 +933,7 @@ GLOBAL_LIST_EMPTY(allCasters)
dat+="</ul>" dat+="</ul>"
if(scribble_page==curr_page) if(scribble_page==curr_page)
dat+="<BR><I>There is a small scribble near the end of this page... It reads: \"[scribble]\"</I>" dat+="<BR><I>There is a small scribble near the end of this page... It reads: \"[scribble]\"</I>"
dat+= "<HR><DIV STYLE='float:right;'><A href='?src=\ref[src];next_page=1'>Next Page</A></DIV> <div style='float:left;'><A href='?src=\ref[human_user];mach_close=newspaper_main'>Done reading</A></DIV>" dat+= "<HR><DIV STYLE='float:right;'><A href='?src=[REF(src)];next_page=1'>Next Page</A></DIV> <div style='float:left;'><A href='?src=[REF(human_user)];mach_close=newspaper_main'>Done reading</A></DIV>"
if(1) // X channel pages inbetween. if(1) // X channel pages inbetween.
for(var/datum/newscaster/feed_channel/NP in news_content) for(var/datum/newscaster/feed_channel/NP in news_content)
pages++ pages++
@@ -962,7 +962,7 @@ GLOBAL_LIST_EMPTY(allCasters)
dat+="</ul>" dat+="</ul>"
if(scribble_page==curr_page) if(scribble_page==curr_page)
dat+="<BR><I>There is a small scribble near the end of this page... It reads: \"[scribble]\"</I>" dat+="<BR><I>There is a small scribble near the end of this page... It reads: \"[scribble]\"</I>"
dat+= "<BR><HR><DIV STYLE='float:left;'><A href='?src=\ref[src];prev_page=1'>Previous Page</A></DIV> <DIV STYLE='float:right;'><A href='?src=\ref[src];next_page=1'>Next Page</A></DIV>" dat+= "<BR><HR><DIV STYLE='float:left;'><A href='?src=[REF(src)];prev_page=1'>Previous Page</A></DIV> <DIV STYLE='float:right;'><A href='?src=[REF(src)];next_page=1'>Next Page</A></DIV>"
if(2) //Last page if(2) //Last page
for(var/datum/newscaster/feed_channel/NP in news_content) for(var/datum/newscaster/feed_channel/NP in news_content)
pages++ pages++
@@ -980,7 +980,7 @@ GLOBAL_LIST_EMPTY(allCasters)
dat+="<I>Apart from some uninteresting classified ads, there's nothing on this page...</I>" dat+="<I>Apart from some uninteresting classified ads, there's nothing on this page...</I>"
if(scribble_page==curr_page) if(scribble_page==curr_page)
dat+="<BR><I>There is a small scribble near the end of this page... It reads: \"[scribble]\"</I>" dat+="<BR><I>There is a small scribble near the end of this page... It reads: \"[scribble]\"</I>"
dat+= "<HR><DIV STYLE='float:left;'><A href='?src=\ref[src];prev_page=1'>Previous Page</A></DIV>" dat+= "<HR><DIV STYLE='float:left;'><A href='?src=[REF(src)];prev_page=1'>Previous Page</A></DIV>"
dat+="<BR><HR><div align='center'>[curr_page+1]</div>" dat+="<BR><HR><div align='center'>[curr_page+1]</div>"
human_user << browse(dat, "window=newspaper_main;size=300x400") human_user << browse(dat, "window=newspaper_main;size=300x400")
onclose(human_user, "newspaper_main") onclose(human_user, "newspaper_main")

View File

@@ -15,32 +15,32 @@
if(..()) if(..())
return 1 return 1
var/dat = {" var/dat = {"
PIPING LAYER: <A href='?src=\ref[src];layer_down=1'>--</A><b>[piping_layer]</b><A href='?src=\ref[src];layer_up=1'>++</A><BR> PIPING LAYER: <A href='?src=[REF(src)];layer_down=1'>--</A><b>[piping_layer]</b><A href='?src=[REF(src)];layer_up=1'>++</A><BR>
<b>Pipes:</b><BR> <b>Pipes:</b><BR>
<A href='?src=\ref[src];make=[/obj/machinery/atmospherics/pipe/simple];dir=1'>Pipe</A><BR> <A href='?src=[REF(src)];make=[/obj/machinery/atmospherics/pipe/simple];dir=1'>Pipe</A><BR>
<A href='?src=\ref[src];make=[/obj/machinery/atmospherics/pipe/simple];dir=5'>Bent Pipe</A><BR> <A href='?src=[REF(src)];make=[/obj/machinery/atmospherics/pipe/simple];dir=5'>Bent Pipe</A><BR>
<A href='?src=\ref[src];make=[/obj/machinery/atmospherics/pipe/manifold];dir=1'>Manifold</A><BR> <A href='?src=[REF(src)];make=[/obj/machinery/atmospherics/pipe/manifold];dir=1'>Manifold</A><BR>
<A href='?src=\ref[src];make=[/obj/machinery/atmospherics/pipe/layer_manifold];dir=1'>Layer Manifold</A><BR> <A href='?src=[REF(src)];make=[/obj/machinery/atmospherics/pipe/layer_manifold];dir=1'>Layer Manifold</A><BR>
<A href='?src=\ref[src];make=[/obj/machinery/atmospherics/pipe/manifold4w];dir=1'>4-Way Manifold</A><BR> <A href='?src=[REF(src)];make=[/obj/machinery/atmospherics/pipe/manifold4w];dir=1'>4-Way Manifold</A><BR>
<A href='?src=\ref[src];make=[/obj/machinery/atmospherics/components/binary/valve];dir=1'>Manual Valve</A><BR> <A href='?src=[REF(src)];make=[/obj/machinery/atmospherics/components/binary/valve];dir=1'>Manual Valve</A><BR>
<A href='?src=\ref[src];make=[/obj/machinery/atmospherics/components/binary/valve/digital];dir=1'>Digital Valve</A><BR> <A href='?src=[REF(src)];make=[/obj/machinery/atmospherics/components/binary/valve/digital];dir=1'>Digital Valve</A><BR>
<b>Devices:</b><BR> <b>Devices:</b><BR>
<A href='?src=\ref[src];make=[/obj/machinery/atmospherics/components/unary/portables_connector];dir=1'>Connector</A><BR> <A href='?src=[REF(src)];make=[/obj/machinery/atmospherics/components/unary/portables_connector];dir=1'>Connector</A><BR>
<A href='?src=\ref[src];make=[/obj/machinery/atmospherics/components/unary/vent_pump];dir=1'>Vent</A><BR> <A href='?src=[REF(src)];make=[/obj/machinery/atmospherics/components/unary/vent_pump];dir=1'>Vent</A><BR>
<A href='?src=\ref[src];make=[/obj/machinery/atmospherics/components/binary/pump];dir=1'>Gas Pump</A><BR> <A href='?src=[REF(src)];make=[/obj/machinery/atmospherics/components/binary/pump];dir=1'>Gas Pump</A><BR>
<A href='?src=\ref[src];make=[/obj/machinery/atmospherics/components/binary/passive_gate];dir=1'>Passive Gate</A><BR> <A href='?src=[REF(src)];make=[/obj/machinery/atmospherics/components/binary/passive_gate];dir=1'>Passive Gate</A><BR>
<A href='?src=\ref[src];make=[/obj/machinery/atmospherics/components/binary/volume_pump];dir=1'>Volume Pump</A><BR> <A href='?src=[REF(src)];make=[/obj/machinery/atmospherics/components/binary/volume_pump];dir=1'>Volume Pump</A><BR>
<A href='?src=\ref[src];make=[/obj/machinery/atmospherics/components/unary/vent_scrubber];dir=1'>Scrubber</A><BR> <A href='?src=[REF(src)];make=[/obj/machinery/atmospherics/components/unary/vent_scrubber];dir=1'>Scrubber</A><BR>
<A href='?src=\ref[src];makemeter=1'>Meter</A><BR> <A href='?src=[REF(src)];makemeter=1'>Meter</A><BR>
<A href='?src=\ref[src];make=[/obj/machinery/atmospherics/components/trinary/filter];dir=1'>Gas Filter</A><BR> <A href='?src=[REF(src)];make=[/obj/machinery/atmospherics/components/trinary/filter];dir=1'>Gas Filter</A><BR>
<A href='?src=\ref[src];make=[/obj/machinery/atmospherics/components/trinary/mixer];dir=1'>Gas Mixer</A><BR> <A href='?src=[REF(src)];make=[/obj/machinery/atmospherics/components/trinary/mixer];dir=1'>Gas Mixer</A><BR>
<b>Heat exchange:</b><BR> <b>Heat exchange:</b><BR>
<A href='?src=\ref[src];make=[/obj/machinery/atmospherics/pipe/heat_exchanging/simple];dir=1'>Pipe</A><BR> <A href='?src=[REF(src)];make=[/obj/machinery/atmospherics/pipe/heat_exchanging/simple];dir=1'>Pipe</A><BR>
<A href='?src=\ref[src];make=[/obj/machinery/atmospherics/pipe/heat_exchanging/simple];dir=5'>Bent Pipe</A><BR> <A href='?src=[REF(src)];make=[/obj/machinery/atmospherics/pipe/heat_exchanging/simple];dir=5'>Bent Pipe</A><BR>
<A href='?src=\ref[src];make=[/obj/machinery/atmospherics/pipe/heat_exchanging/manifold];dir=1'>Manifold</A><BR> <A href='?src=[REF(src)];make=[/obj/machinery/atmospherics/pipe/heat_exchanging/manifold];dir=1'>Manifold</A><BR>
<A href='?src=\ref[src];make=[/obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w];dir=1'>4-Way Manifold</A><BR> <A href='?src=[REF(src)];make=[/obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w];dir=1'>4-Way Manifold</A><BR>
<A href='?src=\ref[src];make=[/obj/machinery/atmospherics/pipe/heat_exchanging/junction];dir=1'>Junction</A><BR> <A href='?src=[REF(src)];make=[/obj/machinery/atmospherics/pipe/heat_exchanging/junction];dir=1'>Junction</A><BR>
<A href='?src=\ref[src];make=[/obj/machinery/atmospherics/components/unary/heat_exchanger];dir=1'>Heat Exchanger</A><BR> <A href='?src=[REF(src)];make=[/obj/machinery/atmospherics/components/unary/heat_exchanger];dir=1'>Heat Exchanger</A><BR>
"} "}
@@ -148,15 +148,15 @@ Nah
return 1 return 1
var/dat = {"<b>Disposal Pipes</b><br><br> var/dat = {"<b>Disposal Pipes</b><br><br>
<A href='?src=\ref[src];dmake=[DISP_PIPE_STRAIGHT]'>Pipe</A><BR> <A href='?src=[REF(src)];dmake=[DISP_PIPE_STRAIGHT]'>Pipe</A><BR>
<A href='?src=\ref[src];dmake=[DISP_PIPE_BENT]'>Bent Pipe</A><BR> <A href='?src=[REF(src)];dmake=[DISP_PIPE_BENT]'>Bent Pipe</A><BR>
<A href='?src=\ref[src];dmake=[DISP_JUNCTION]'>Junction</A><BR> <A href='?src=[REF(src)];dmake=[DISP_JUNCTION]'>Junction</A><BR>
<A href='?src=\ref[src];dmake=[DISP_YJUNCTION]'>Y-Junction</A><BR> <A href='?src=[REF(src)];dmake=[DISP_YJUNCTION]'>Y-Junction</A><BR>
<A href='?src=\ref[src];dmake=[DISP_END_TRUNK]'>Trunk</A><BR> <A href='?src=[REF(src)];dmake=[DISP_END_TRUNK]'>Trunk</A><BR>
<A href='?src=\ref[src];dmake=[DISP_END_BIN]'>Bin</A><BR> <A href='?src=[REF(src)];dmake=[DISP_END_BIN]'>Bin</A><BR>
<A href='?src=\ref[src];dmake=[DISP_END_OUTLET]'>Outlet</A><BR> <A href='?src=[REF(src)];dmake=[DISP_END_OUTLET]'>Outlet</A><BR>
<A href='?src=\ref[src];dmake=[DISP_END_CHUTE]'>Chute</A><BR> <A href='?src=[REF(src)];dmake=[DISP_END_CHUTE]'>Chute</A><BR>
<A href='?src=\ref[src];dmake=[DISP_SORTJUNCTION]'>Sort Junction</A><BR> <A href='?src=[REF(src)];dmake=[DISP_SORTJUNCTION]'>Sort Junction</A><BR>
"} "}
user << browse("<HEAD><TITLE>[src]</TITLE></HEAD><TT>[dat]</TT>", "window=pipedispenser") user << browse("<HEAD><TITLE>[src]</TITLE></HEAD><TT>[dat]</TT>", "window=pipedispenser")
@@ -198,16 +198,16 @@ Nah
return 1 return 1
var/dat = {"<B>Transit Tubes:</B><BR> var/dat = {"<B>Transit Tubes:</B><BR>
<A href='?src=\ref[src];tube=[TRANSIT_TUBE_STRAIGHT]'>Straight Tube</A><BR> <A href='?src=[REF(src)];tube=[TRANSIT_TUBE_STRAIGHT]'>Straight Tube</A><BR>
<A href='?src=\ref[src];tube=[TRANSIT_TUBE_STRAIGHT_CROSSING]'>Straight Tube with Crossing</A><BR> <A href='?src=[REF(src)];tube=[TRANSIT_TUBE_STRAIGHT_CROSSING]'>Straight Tube with Crossing</A><BR>
<A href='?src=\ref[src];tube=[TRANSIT_TUBE_CURVED]'>Curved Tube</A><BR> <A href='?src=[REF(src)];tube=[TRANSIT_TUBE_CURVED]'>Curved Tube</A><BR>
<A href='?src=\ref[src];tube=[TRANSIT_TUBE_DIAGONAL]'>Diagonal Tube</A><BR> <A href='?src=[REF(src)];tube=[TRANSIT_TUBE_DIAGONAL]'>Diagonal Tube</A><BR>
<A href='?src=\ref[src];tube=[TRANSIT_TUBE_DIAGONAL_CROSSING]'>Diagonal Tube with Crossing</A><BR> <A href='?src=[REF(src)];tube=[TRANSIT_TUBE_DIAGONAL_CROSSING]'>Diagonal Tube with Crossing</A><BR>
<A href='?src=\ref[src];tube=[TRANSIT_TUBE_JUNCTION]'>Junction</A><BR> <A href='?src=[REF(src)];tube=[TRANSIT_TUBE_JUNCTION]'>Junction</A><BR>
<b>Station Equipment:</b><BR> <b>Station Equipment:</b><BR>
<A href='?src=\ref[src];tube=[TRANSIT_TUBE_STATION]'>Through Tube Station</A><BR> <A href='?src=[REF(src)];tube=[TRANSIT_TUBE_STATION]'>Through Tube Station</A><BR>
<A href='?src=\ref[src];tube=[TRANSIT_TUBE_TERMINUS]'>Terminus Tube Station</A><BR> <A href='?src=[REF(src)];tube=[TRANSIT_TUBE_TERMINUS]'>Terminus Tube Station</A><BR>
<A href='?src=\ref[src];tube=[TRANSIT_TUBE_POD]'>Transit Tube Pod</A><BR> <A href='?src=[REF(src)];tube=[TRANSIT_TUBE_POD]'>Transit Tube Pod</A><BR>
"} "}
user << browse("<HEAD><TITLE>[src]</TITLE></HEAD><TT>[dat]</TT>", "window=pipedispenser") user << browse("<HEAD><TITLE>[src]</TITLE></HEAD><TT>[dat]</TT>", "window=pipedispenser")

View File

@@ -166,15 +166,15 @@
/obj/machinery/porta_turret/interact(mob/user) /obj/machinery/porta_turret/interact(mob/user)
var/dat var/dat
dat += "Status: <a href='?src=\ref[src];power=1'>[on ? "On" : "Off"]</a><br>" dat += "Status: <a href='?src=[REF(src)];power=1'>[on ? "On" : "Off"]</a><br>"
dat += "Behaviour controls are [locked ? "locked" : "unlocked"]<br>" dat += "Behaviour controls are [locked ? "locked" : "unlocked"]<br>"
if(!locked) if(!locked)
dat += "Check for Weapon Authorization: <A href='?src=\ref[src];operation=authweapon'>[auth_weapons ? "Yes" : "No"]</A><BR>" dat += "Check for Weapon Authorization: <A href='?src=[REF(src)];operation=authweapon'>[auth_weapons ? "Yes" : "No"]</A><BR>"
dat += "Check Security Records: <A href='?src=\ref[src];operation=checkrecords'>[check_records ? "Yes" : "No"]</A><BR>" dat += "Check Security Records: <A href='?src=[REF(src)];operation=checkrecords'>[check_records ? "Yes" : "No"]</A><BR>"
dat += "Neutralize Identified Criminals: <A href='?src=\ref[src];operation=shootcrooks'>[criminals ? "Yes" : "No"]</A><BR>" dat += "Neutralize Identified Criminals: <A href='?src=[REF(src)];operation=shootcrooks'>[criminals ? "Yes" : "No"]</A><BR>"
dat += "Neutralize All Non-Security and Non-Command Personnel: <A href='?src=\ref[src];operation=shootall'>[stun_all ? "Yes" : "No"]</A><BR>" dat += "Neutralize All Non-Security and Non-Command Personnel: <A href='?src=[REF(src)];operation=shootall'>[stun_all ? "Yes" : "No"]</A><BR>"
dat += "Neutralize All Unidentified Life Signs: <A href='?src=\ref[src];operation=checkxenos'>[check_anomalies ? "Yes" : "No"]</A><BR>" dat += "Neutralize All Unidentified Life Signs: <A href='?src=[REF(src)];operation=checkxenos'>[check_anomalies ? "Yes" : "No"]</A><BR>"
var/datum/browser/popup = new(user, "autosec", "Automatic Portable Turret Installation", 300, 300) var/datum/browser/popup = new(user, "autosec", "Automatic Portable Turret Installation", 300, 300)
popup.set_content(dat) popup.set_content(dat)
@@ -747,8 +747,8 @@
else else
if(!issilicon(user) && !IsAdminGhost(user)) if(!issilicon(user) && !IsAdminGhost(user))
t += "<div class='notice icon'>Swipe ID card to lock interface</div>" t += "<div class='notice icon'>Swipe ID card to lock interface</div>"
t += "Turrets [enabled?"activated":"deactivated"] - <A href='?src=\ref[src];toggleOn=1'>[enabled?"Disable":"Enable"]?</a><br>" t += "Turrets [enabled?"activated":"deactivated"] - <A href='?src=[REF(src)];toggleOn=1'>[enabled?"Disable":"Enable"]?</a><br>"
t += "Currently set for [lethal?"lethal":"stun repeatedly"] - <A href='?src=\ref[src];toggleLethal=1'>Change to [lethal?"Stun repeatedly":"Lethal"]?</a><br>" t += "Currently set for [lethal?"lethal":"stun repeatedly"] - <A href='?src=[REF(src)];toggleLethal=1'>Change to [lethal?"Stun repeatedly":"Lethal"]?</a><br>"
var/datum/browser/popup = new(user, "turretid", "Turret Control Panel ([area.name])") var/datum/browser/popup = new(user, "turretid", "Turret Control Panel ([area.name])")
popup.set_content(t) popup.set_content(t)
@@ -901,7 +901,7 @@
if(team_color == "red" && istype(H.wear_suit, /obj/item/clothing/suit/bluetag)) if(team_color == "red" && istype(H.wear_suit, /obj/item/clothing/suit/bluetag))
return return
var/dat = "Status: <a href='?src=\ref[src];power=1'>[on ? "On" : "Off"]</a>" var/dat = "Status: <a href='?src=[REF(src)];power=1'>[on ? "On" : "Off"]</a>"
var/datum/browser/popup = new(user, "autosec", "Automatic Portable Turret Installation", 300, 300) var/datum/browser/popup = new(user, "autosec", "Automatic Portable Turret Installation", 300, 300)
popup.set_content(dat) popup.set_content(dat)

View File

@@ -145,13 +145,13 @@ GLOBAL_LIST_EMPTY(allConsoles)
if (dpt != department) if (dpt != department)
dat += "<tr>" dat += "<tr>"
dat += "<td width='55%'>[dpt]</td>" dat += "<td width='55%'>[dpt]</td>"
dat += "<td width='45%'><A href='?src=\ref[src];write=[ckey(dpt)]'>Normal</A> <A href='?src=\ref[src];write=[ckey(dpt)];priority=2'>High</A>" dat += "<td width='45%'><A href='?src=[REF(src)];write=[ckey(dpt)]'>Normal</A> <A href='?src=[REF(src)];write=[ckey(dpt)];priority=2'>High</A>"
if(hackState) if(hackState)
dat += "<A href='?src=\ref[src];write=[ckey(dpt)];priority=3'>EXTREME</A>" dat += "<A href='?src=[REF(src)];write=[ckey(dpt)];priority=3'>EXTREME</A>"
dat += "</td>" dat += "</td>"
dat += "</tr>" dat += "</tr>"
dat += "</table>" dat += "</table>"
dat += "<BR><A href='?src=\ref[src];setScreen=0'><< Back</A><BR>" dat += "<BR><A href='?src=[REF(src)];setScreen=0'><< Back</A><BR>"
if(2) //req. supplies if(2) //req. supplies
dat += "Which department do you need supplies from?<BR><BR>" dat += "Which department do you need supplies from?<BR><BR>"
@@ -160,13 +160,13 @@ GLOBAL_LIST_EMPTY(allConsoles)
if (dpt != department) if (dpt != department)
dat += "<tr>" dat += "<tr>"
dat += "<td width='55%'>[dpt]</td>" dat += "<td width='55%'>[dpt]</td>"
dat += "<td width='45%'><A href='?src=\ref[src];write=[ckey(dpt)]'>Normal</A> <A href='?src=\ref[src];write=[ckey(dpt)];priority=2'>High</A>" dat += "<td width='45%'><A href='?src=[REF(src)];write=[ckey(dpt)]'>Normal</A> <A href='?src=[REF(src)];write=[ckey(dpt)];priority=2'>High</A>"
if(hackState) if(hackState)
dat += "<A href='?src=\ref[src];write=[ckey(dpt)];priority=3'>EXTREME</A>" dat += "<A href='?src=[REF(src)];write=[ckey(dpt)];priority=3'>EXTREME</A>"
dat += "</td>" dat += "</td>"
dat += "</tr>" dat += "</tr>"
dat += "</table>" dat += "</table>"
dat += "<BR><A href='?src=\ref[src];setScreen=0'><< Back</A><BR>" dat += "<BR><A href='?src=[REF(src)];setScreen=0'><< Back</A><BR>"
if(3) //relay information if(3) //relay information
dat += "Which department would you like to send information to?<BR><BR>" dat += "Which department would you like to send information to?<BR><BR>"
@@ -175,21 +175,21 @@ GLOBAL_LIST_EMPTY(allConsoles)
if (dpt != department) if (dpt != department)
dat += "<tr>" dat += "<tr>"
dat += "<td width='55%'>[dpt]</td>" dat += "<td width='55%'>[dpt]</td>"
dat += "<td width='45%'><A href='?src=\ref[src];write=[ckey(dpt)]'>Normal</A> <A href='?src=\ref[src];write=[ckey(dpt)];priority=2'>High</A>" dat += "<td width='45%'><A href='?src=[REF(src)];write=[ckey(dpt)]'>Normal</A> <A href='?src=[REF(src)];write=[ckey(dpt)];priority=2'>High</A>"
if(hackState) if(hackState)
dat += "<A href='?src=\ref[src];write=[ckey(dpt)];priority=3'>EXTREME</A>" dat += "<A href='?src=[REF(src)];write=[ckey(dpt)];priority=3'>EXTREME</A>"
dat += "</td>" dat += "</td>"
dat += "</tr>" dat += "</tr>"
dat += "</table>" dat += "</table>"
dat += "<BR><A href='?src=\ref[src];setScreen=0'><< Back</A><BR>" dat += "<BR><A href='?src=[REF(src)];setScreen=0'><< Back</A><BR>"
if(6) //sent successfully if(6) //sent successfully
dat += "<span class='good'>Message sent.</span><BR><BR>" dat += "<span class='good'>Message sent.</span><BR><BR>"
dat += "<A href='?src=\ref[src];setScreen=0'>Continue</A><BR>" dat += "<A href='?src=[REF(src)];setScreen=0'>Continue</A><BR>"
if(7) //unsuccessful; not sent if(7) //unsuccessful; not sent
dat += "<span class='bad'>An error occurred.</span><BR><BR>" dat += "<span class='bad'>An error occurred.</span><BR><BR>"
dat += "<A href='?src=\ref[src];setScreen=0'>Continue</A><BR>" dat += "<A href='?src=[REF(src)];setScreen=0'>Continue</A><BR>"
if(8) //view messages if(8) //view messages
for (var/obj/machinery/requests_console/Console in GLOB.allConsoles) for (var/obj/machinery/requests_console/Console in GLOB.allConsoles)
@@ -203,7 +203,7 @@ GLOBAL_LIST_EMPTY(allConsoles)
for(var/msg in messages) // This puts more recent messages at the *top*, where they belong. for(var/msg in messages) // This puts more recent messages at the *top*, where they belong.
messageComposite = "<div class='block'>[msg]</div>" + messageComposite messageComposite = "<div class='block'>[msg]</div>" + messageComposite
dat += messageComposite dat += messageComposite
dat += "<BR><A href='?src=\ref[src];setScreen=0'><< Back to Main Menu</A><BR>" dat += "<BR><A href='?src=[REF(src)];setScreen=0'><< Back to Main Menu</A><BR>"
if(9) //authentication before sending if(9) //authentication before sending
dat += "<B>Message Authentication</B><BR><BR>" dat += "<B>Message Authentication</B><BR><BR>"
@@ -211,8 +211,8 @@ GLOBAL_LIST_EMPTY(allConsoles)
dat += "<div class='notice'>You may authenticate your message now by scanning your ID or your stamp</div><BR>" dat += "<div class='notice'>You may authenticate your message now by scanning your ID or your stamp</div><BR>"
dat += "<b>Validated by:</b> [msgVerified ? msgVerified : "<i>Not Validated</i>"]<br>" dat += "<b>Validated by:</b> [msgVerified ? msgVerified : "<i>Not Validated</i>"]<br>"
dat += "<b>Stamped by:</b> [msgStamped ? msgStamped : "<i>Not Stamped</i>"]<br><br>" dat += "<b>Stamped by:</b> [msgStamped ? msgStamped : "<i>Not Stamped</i>"]<br><br>"
dat += "<A href='?src=\ref[src];department=[dpt]'>Send Message</A><BR>" dat += "<A href='?src=[REF(src)];department=[dpt]'>Send Message</A><BR>"
dat += "<BR><A href='?src=\ref[src];setScreen=0'><< Discard Message</A><BR>" dat += "<BR><A href='?src=[REF(src)];setScreen=0'><< Discard Message</A><BR>"
if(10) //send announcement if(10) //send announcement
dat += "<h3>Station-wide Announcement</h3>" dat += "<h3>Station-wide Announcement</h3>"
@@ -221,12 +221,12 @@ GLOBAL_LIST_EMPTY(allConsoles)
else else
dat += "<div class='notice'>Swipe your card to authenticate yourself</div><BR>" dat += "<div class='notice'>Swipe your card to authenticate yourself</div><BR>"
dat += "<b>Message: </b>[message ? message : "<i>No Message</i>"]<BR>" dat += "<b>Message: </b>[message ? message : "<i>No Message</i>"]<BR>"
dat += "<A href='?src=\ref[src];writeAnnouncement=1'>[message ? "Edit" : "Write"] Message</A><BR><BR>" dat += "<A href='?src=[REF(src)];writeAnnouncement=1'>[message ? "Edit" : "Write"] Message</A><BR><BR>"
if ((announceAuth || IsAdminGhost(user)) && message) if ((announceAuth || IsAdminGhost(user)) && message)
dat += "<A href='?src=\ref[src];sendAnnouncement=1'>Announce Message</A><BR>" dat += "<A href='?src=[REF(src)];sendAnnouncement=1'>Announce Message</A><BR>"
else else
dat += "<span class='linkOff'>Announce Message</span><BR>" dat += "<span class='linkOff'>Announce Message</span><BR>"
dat += "<BR><A href='?src=\ref[src];setScreen=0'><< Back</A><BR>" dat += "<BR><A href='?src=[REF(src)];setScreen=0'><< Back</A><BR>"
else //main menu else //main menu
screen = 0 screen = 0
@@ -237,25 +237,25 @@ GLOBAL_LIST_EMPTY(allConsoles)
dat += "<div class='notice'>There are new <b>PRIORITY</b> messages</div><BR>" dat += "<div class='notice'>There are new <b>PRIORITY</b> messages</div><BR>"
if (newmessagepriority == 3) if (newmessagepriority == 3)
dat += "<div class='notice'>There are new <b>EXTREME PRIORITY</b> messages</div><BR>" dat += "<div class='notice'>There are new <b>EXTREME PRIORITY</b> messages</div><BR>"
dat += "<A href='?src=\ref[src];setScreen=8'>View Messages</A><BR><BR>" dat += "<A href='?src=[REF(src)];setScreen=8'>View Messages</A><BR><BR>"
dat += "<A href='?src=\ref[src];setScreen=1'>Request Assistance</A><BR>" dat += "<A href='?src=[REF(src)];setScreen=1'>Request Assistance</A><BR>"
dat += "<A href='?src=\ref[src];setScreen=2'>Request Supplies</A><BR>" dat += "<A href='?src=[REF(src)];setScreen=2'>Request Supplies</A><BR>"
dat += "<A href='?src=\ref[src];setScreen=3'>Relay Anonymous Information</A><BR><BR>" dat += "<A href='?src=[REF(src)];setScreen=3'>Relay Anonymous Information</A><BR><BR>"
if(!emergency) if(!emergency)
dat += "<A href='?src=\ref[src];emergency=1'>Emergency: Security</A><BR>" dat += "<A href='?src=[REF(src)];emergency=1'>Emergency: Security</A><BR>"
dat += "<A href='?src=\ref[src];emergency=2'>Emergency: Engineering</A><BR>" dat += "<A href='?src=[REF(src)];emergency=2'>Emergency: Engineering</A><BR>"
dat += "<A href='?src=\ref[src];emergency=3'>Emergency: Medical</A><BR><BR>" dat += "<A href='?src=[REF(src)];emergency=3'>Emergency: Medical</A><BR><BR>"
else else
dat += "<B><font color='red'>[emergency] has been dispatched to this location.</font></B><BR><BR>" dat += "<B><font color='red'>[emergency] has been dispatched to this location.</font></B><BR><BR>"
if(announcementConsole) if(announcementConsole)
dat += "<A href='?src=\ref[src];setScreen=10'>Send Station-wide Announcement</A><BR><BR>" dat += "<A href='?src=[REF(src)];setScreen=10'>Send Station-wide Announcement</A><BR><BR>"
if (silent) if (silent)
dat += "Speaker <A href='?src=\ref[src];setSilent=0'>OFF</A>" dat += "Speaker <A href='?src=[REF(src)];setSilent=0'>OFF</A>"
else else
dat += "Speaker <A href='?src=\ref[src];setSilent=1'>ON</A>" dat += "Speaker <A href='?src=[REF(src)];setSilent=1'>ON</A>"
var/datum/browser/popup = new(user, "req_console", "[department] Requests Console", 450, 440) var/datum/browser/popup = new(user, "req_console", "[department] Requests Console", 450, 440)
popup.set_content(dat) 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(src.icon, src.icon_state))
@@ -454,7 +454,7 @@ GLOBAL_LIST_EMPTY(allConsoles)
var/linkedsender var/linkedsender
if(istype(source, /obj/machinery/requests_console)) if(istype(source, /obj/machinery/requests_console))
var/obj/machinery/requests_console/sender = source var/obj/machinery/requests_console/sender = source
linkedsender = "<a href='?src=\ref[src];write=[ckey(sender.department)]'>[sender.department]</a>" linkedsender = "<a href='?src=[REF(src)];write=[ckey(sender.department)]'>[sender.department]</a>"
else else
capitalize(source) capitalize(source)
linkedsender = source linkedsender = source

View File

@@ -58,13 +58,13 @@ Please wait until completion...</TT><BR>
dat = {" dat = {"
<B>Metal Amount:</B> [min(150000, src.metal_amount)] cm<sup>3</sup> (MAX: 150,000)<BR><HR> <B>Metal Amount:</B> [min(150000, src.metal_amount)] cm<sup>3</sup> (MAX: 150,000)<BR><HR>
<BR> <BR>
<A href='?src=\ref[src];make=1'>Left Arm (25,000 cc metal.)<BR> <A href='?src=[REF(src)];make=1'>Left Arm (25,000 cc metal.)<BR>
<A href='?src=\ref[src];make=2'>Right Arm (25,000 cc metal.)<BR> <A href='?src=[REF(src)];make=2'>Right Arm (25,000 cc metal.)<BR>
<A href='?src=\ref[src];make=3'>Left Leg (25,000 cc metal.)<BR> <A href='?src=[REF(src)];make=3'>Left Leg (25,000 cc metal.)<BR>
<A href='?src=\ref[src];make=4'>Right Leg (25,000 cc metal).<BR> <A href='?src=[REF(src)];make=4'>Right Leg (25,000 cc metal).<BR>
<A href='?src=\ref[src];make=5'>Chest (50,000 cc metal).<BR> <A href='?src=[REF(src)];make=5'>Chest (50,000 cc metal).<BR>
<A href='?src=\ref[src];make=6'>Head (50,000 cc metal).<BR> <A href='?src=[REF(src)];make=6'>Head (50,000 cc metal).<BR>
<A href='?src=\ref[src];make=7'>Robot Frame (75,000 cc metal).<BR> <A href='?src=[REF(src)];make=7'>Robot Frame (75,000 cc metal).<BR>
"} "}
user << browse("<HEAD><TITLE>Robotic Fabricator Control Panel</TITLE></HEAD><TT>[dat]</TT>", "window=robot_fabricator") user << browse("<HEAD><TITLE>Robotic Fabricator Control Panel</TITLE></HEAD><TT>[dat]</TT>", "window=robot_fabricator")

View File

@@ -134,11 +134,11 @@
<B>Credit Remaining:</B> [balance]<BR> <B>Credit Remaining:</B> [balance]<BR>
[plays] players have tried their luck today, and [jackpots] have won a jackpot!<BR> [plays] players have tried their luck today, and [jackpots] have won a jackpot!<BR>
<HR><BR> <HR><BR>
<A href='?src=\ref[src];spin=1'>Play!</A><BR> <A href='?src=[REF(src)];spin=1'>Play!</A><BR>
<BR> <BR>
[reeltext] [reeltext]
<BR> <BR>
<font size='1'><A href='?src=\ref[src];refund=1'>Refund balance</A><BR>"} <font size='1'><A href='?src=[REF(src)];refund=1'>Refund balance</A><BR>"}
var/datum/browser/popup = new(user, "slotmachine", "Slot Machine") var/datum/browser/popup = new(user, "slotmachine", "Slot Machine")
popup.set_content(dat) popup.set_content(dat)

View File

@@ -30,23 +30,23 @@
if(0) if(0)
dat += "<br>[temp]<br>" dat += "<br>[temp]<br>"
dat += "<br>Current Network: <a href='?src=\ref[src];network=1'>[network]</a><br>" dat += "<br>Current Network: <a href='?src=[REF(src)];network=1'>[network]</a><br>"
if(servers.len) if(servers.len)
dat += "<br>Detected Telecommunication Servers:<ul>" dat += "<br>Detected Telecommunication Servers:<ul>"
for(var/obj/machinery/telecomms/T in servers) for(var/obj/machinery/telecomms/T in servers)
dat += "<li><a href='?src=\ref[src];viewserver=[T.id]'>\ref[T] [T.name]</a> ([T.id])</li>" dat += "<li><a href='?src=[REF(src)];viewserver=[T.id]'>[REF(T)] [T.name]</a> ([T.id])</li>"
dat += "</ul>" dat += "</ul>"
dat += "<br><a href='?src=\ref[src];operation=release'>\[Flush Buffer\]</a>" dat += "<br><a href='?src=[REF(src)];operation=release'>\[Flush Buffer\]</a>"
else else
dat += "<br>No servers detected. Scan for servers: <a href='?src=\ref[src];operation=scan'>\[Scan\]</a>" dat += "<br>No servers detected. Scan for servers: <a href='?src=[REF(src)];operation=scan'>\[Scan\]</a>"
// --- Viewing Server --- // --- Viewing Server ---
if(1) if(1)
dat += "<br>[temp]<br>" dat += "<br>[temp]<br>"
dat += "<center><a href='?src=\ref[src];operation=mainmenu'>\[Main Menu\]</a> <a href='?src=\ref[src];operation=refresh'>\[Refresh\]</a></center>" dat += "<center><a href='?src=[REF(src)];operation=mainmenu'>\[Main Menu\]</a> <a href='?src=[REF(src)];operation=refresh'>\[Refresh\]</a></center>"
dat += "<br>Current Network: [network]" dat += "<br>Current Network: [network]"
dat += "<br>Selected Server: [SelectedServer.id]" dat += "<br>Selected Server: [SelectedServer.id]"
@@ -65,7 +65,7 @@
// If the log is a speech file // If the log is a speech file
if(C.input_type == "Speech File") if(C.input_type == "Speech File")
dat += "<li><font color = #008F00>[C.name]</font color> <font color = #FF0000><a href='?src=\ref[src];delete=[i]'>\[X\]</a></font color><br>" dat += "<li><font color = #008F00>[C.name]</font color> <font color = #FF0000><a href='?src=[REF(src)];delete=[i]'>\[X\]</a></font color><br>"
// -- Determine race of orator -- // -- Determine race of orator --
@@ -128,7 +128,7 @@
else if(C.input_type == "Execution Error") else if(C.input_type == "Execution Error")
dat += "<li><font color = #990000>[C.name]</font color> <font color = #FF0000><a href='?src=\ref[src];delete=[i]'>\[X\]</a></font color><br>" dat += "<li><font color = #990000>[C.name]</font color> <font color = #FF0000><a href='?src=[REF(src)];delete=[i]'>\[X\]</a></font color><br>"
dat += "<u><font color = #787700>Output</font color></u>: \"[C.parameters["message"]]\"<br>" dat += "<u><font color = #787700>Output</font color></u>: \"[C.parameters["message"]]\"<br>"
dat += "</li><br>" dat += "</li><br>"

View File

@@ -32,28 +32,28 @@
if(0) if(0)
dat += "<br>[temp]<br><br>" dat += "<br>[temp]<br><br>"
dat += "<br>Current Network: <a href='?src=\ref[src];network=1'>[network]</a><br>" dat += "<br>Current Network: <a href='?src=[REF(src)];network=1'>[network]</a><br>"
if(machinelist.len) if(machinelist.len)
dat += "<br>Detected Network Entities:<ul>" dat += "<br>Detected Network Entities:<ul>"
for(var/obj/machinery/telecomms/T in machinelist) for(var/obj/machinery/telecomms/T in machinelist)
dat += "<li><a href='?src=\ref[src];viewmachine=[T.id]'>\ref[T] [T.name]</a> ([T.id])</li>" dat += "<li><a href='?src=[REF(src)];viewmachine=[T.id]'>[REF(T)] [T.name]</a> ([T.id])</li>"
dat += "</ul>" dat += "</ul>"
dat += "<br><a href='?src=\ref[src];operation=release'>\[Flush Buffer\]</a>" dat += "<br><a href='?src=[REF(src)];operation=release'>\[Flush Buffer\]</a>"
else else
dat += "<a href='?src=\ref[src];operation=probe'>\[Probe Network\]</a>" dat += "<a href='?src=[REF(src)];operation=probe'>\[Probe Network\]</a>"
// --- Viewing Machine --- // --- Viewing Machine ---
if(1) if(1)
dat += "<br>[temp]<br>" dat += "<br>[temp]<br>"
dat += "<center><a href='?src=\ref[src];operation=mainmenu'>\[Main Menu\]</a></center>" dat += "<center><a href='?src=[REF(src)];operation=mainmenu'>\[Main Menu\]</a></center>"
dat += "<br>Current Network: [network]<br>" dat += "<br>Current Network: [network]<br>"
dat += "Selected Network Entity: [SelectedMachine.name] ([SelectedMachine.id])<br>" dat += "Selected Network Entity: [SelectedMachine.name] ([SelectedMachine.id])<br>"
dat += "Linked Entities: <ol>" dat += "Linked Entities: <ol>"
for(var/obj/machinery/telecomms/T in SelectedMachine.links) for(var/obj/machinery/telecomms/T in SelectedMachine.links)
if(!T.hide) if(!T.hide)
dat += "<li><a href='?src=\ref[src];viewmachine=[T.id]'>\ref[T.id] [T.name]</a> ([T.id])</li>" dat += "<li><a href='?src=[REF(src)];viewmachine=[T.id]'>[REF(T.id)] [T.name]</a> ([T.id])</li>"
dat += "</ol>" dat += "</ol>"

View File

@@ -52,13 +52,13 @@
var/dat var/dat
dat = "<font face = \"Courier\"><HEAD><TITLE>[name]</TITLE></HEAD><center><H3>[name] Access</H3></center>" dat = "<font face = \"Courier\"><HEAD><TITLE>[name]</TITLE></HEAD><center><H3>[name] Access</H3></center>"
dat += "<br>[temp]<br>" dat += "<br>[temp]<br>"
dat += "<br>Power Status: <a href='?src=\ref[src];input=toggle'>[toggled ? "On" : "Off"]</a>" dat += "<br>Power Status: <a href='?src=[REF(src)];input=toggle'>[toggled ? "On" : "Off"]</a>"
if(on && toggled) if(on && toggled)
if(id != "" && id) if(id != "" && id)
dat += "<br>Identification String: <a href='?src=\ref[src];input=id'>[id]</a>" dat += "<br>Identification String: <a href='?src=[REF(src)];input=id'>[id]</a>"
else else
dat += "<br>Identification String: <a href='?src=\ref[src];input=id'>NULL</a>" dat += "<br>Identification String: <a href='?src=[REF(src)];input=id'>NULL</a>"
dat += "<br>Network: <a href='?src=\ref[src];input=network'>[network]</a>" dat += "<br>Network: <a href='?src=[REF(src)];input=network'>[network]</a>"
dat += "<br>Prefabrication: [autolinkers.len ? "TRUE" : "FALSE"]" dat += "<br>Prefabrication: [autolinkers.len ? "TRUE" : "FALSE"]"
if(hide) if(hide)
dat += "<br>Shadow Link: ACTIVE</a>" dat += "<br>Shadow Link: ACTIVE</a>"
@@ -73,7 +73,7 @@
i++ i++
if(T.hide && !hide) if(T.hide && !hide)
continue continue
dat += "<li>\ref[T] [T.name] ([T.id]) <a href='?src=\ref[src];unlink=[i]'>\[X\]</a></li>" dat += "<li>[REF(T)] [T.name] ([T.id]) <a href='?src=[REF(src)];unlink=[i]'>\[X\]</a></li>"
dat += "</ol>" dat += "</ol>"
dat += "<br>Filtering Frequencies: " dat += "<br>Filtering Frequencies: "
@@ -83,21 +83,21 @@
for(var/x in freq_listening) for(var/x in freq_listening)
i++ i++
if(i < length(freq_listening)) if(i < length(freq_listening))
dat += "[format_frequency(x)] GHz<a href='?src=\ref[src];delete=[x]'>\[X\]</a>; " dat += "[format_frequency(x)] GHz<a href='?src=[REF(src)];delete=[x]'>\[X\]</a>; "
else else
dat += "[format_frequency(x)] GHz<a href='?src=\ref[src];delete=[x]'>\[X\]</a>" dat += "[format_frequency(x)] GHz<a href='?src=[REF(src)];delete=[x]'>\[X\]</a>"
else else
dat += "NONE" dat += "NONE"
dat += "<br> <a href='?src=\ref[src];input=freq'>\[Add Filter\]</a>" dat += "<br> <a href='?src=[REF(src)];input=freq'>\[Add Filter\]</a>"
dat += "<hr>" dat += "<hr>"
if(P) if(P)
var/obj/machinery/telecomms/T = P.buffer var/obj/machinery/telecomms/T = P.buffer
if(istype(T)) if(istype(T))
dat += "<br><br>MULTITOOL BUFFER: [T] ([T.id]) <a href='?src=\ref[src];link=1'>\[Link\]</a> <a href='?src=\ref[src];flush=1'>\[Flush\]" dat += "<br><br>MULTITOOL BUFFER: [T] ([T.id]) <a href='?src=[REF(src)];link=1'>\[Link\]</a> <a href='?src=[REF(src)];flush=1'>\[Flush\]"
else else
dat += "<br><br>MULTITOOL BUFFER: <a href='?src=\ref[src];buffer=1'>\[Add Machine\]</a>" dat += "<br><br>MULTITOOL BUFFER: <a href='?src=[REF(src)];buffer=1'>\[Add Machine\]</a>"
dat += "</font>" dat += "</font>"
temp = "" temp = ""
@@ -151,8 +151,8 @@
/obj/machinery/telecomms/relay/Options_Menu() /obj/machinery/telecomms/relay/Options_Menu()
var/dat = "" var/dat = ""
dat += "<br>Broadcasting: <A href='?src=\ref[src];broadcast=1'>[broadcasting ? "YES" : "NO"]</a>" dat += "<br>Broadcasting: <A href='?src=[REF(src)];broadcast=1'>[broadcasting ? "YES" : "NO"]</a>"
dat += "<br>Receiving: <A href='?src=\ref[src];receive=1'>[receiving ? "YES" : "NO"]</a>" dat += "<br>Receiving: <A href='?src=[REF(src)];receive=1'>[receiving ? "YES" : "NO"]</a>"
return dat return dat
/obj/machinery/telecomms/relay/Options_Topic(href, href_list) /obj/machinery/telecomms/relay/Options_Topic(href, href_list)
@@ -167,7 +167,7 @@
// BUS // BUS
/obj/machinery/telecomms/bus/Options_Menu() /obj/machinery/telecomms/bus/Options_Menu()
var/dat = "<br>Change Signal Frequency: <A href='?src=\ref[src];change_freq=1'>[change_frequency ? "YES ([change_frequency])" : "NO"]</a>" var/dat = "<br>Change Signal Frequency: <A href='?src=[REF(src)];change_freq=1'>[change_frequency ? "YES ([change_frequency])" : "NO"]</a>"
return dat return dat
/obj/machinery/telecomms/bus/Options_Topic(href, href_list) /obj/machinery/telecomms/bus/Options_Topic(href, href_list)
@@ -254,7 +254,7 @@
if(text2num(href_list["unlink"]) <= length(links)) if(text2num(href_list["unlink"]) <= length(links))
var/obj/machinery/telecomms/T = links[text2num(href_list["unlink"])] var/obj/machinery/telecomms/T = links[text2num(href_list["unlink"])]
if(T) if(T)
temp = "<font color = #666633>-% Removed \ref[T] [T.name] from linked entities. %-</font color>" temp = "<font color = #666633>-% Removed [REF(T)] [T.name] from linked entities. %-</font color>"
// Remove link entries from both T and src. // Remove link entries from both T and src.
@@ -276,7 +276,7 @@
if(!(T in links)) if(!(T in links))
links += T links += T
temp = "<font color = #666633>-% Successfully linked with \ref[T] [T.name] %-</font color>" temp = "<font color = #666633>-% Successfully linked with [REF(T)] [T.name] %-</font color>"
else else
temp = "<font color = #666633>-% Unable to acquire buffer %-</font color>" temp = "<font color = #666633>-% Unable to acquire buffer %-</font color>"
@@ -284,7 +284,7 @@
if(href_list["buffer"]) if(href_list["buffer"])
P.buffer = src P.buffer = src
temp = "<font color = #666633>-% Successfully stored \ref[P.buffer] [P.buffer.name] in buffer %-</font color>" temp = "<font color = #666633>-% Successfully stored [REF(P.buffer)] [P.buffer.name] in buffer %-</font color>"
if(href_list["flush"]) if(href_list["flush"])

View File

@@ -373,7 +373,7 @@
for (var/datum/data/vending_product/R in display_records) for (var/datum/data/vending_product/R in display_records)
dat += "<li>" dat += "<li>"
if(R.amount > 0) if(R.amount > 0)
dat += "<a href='byond://?src=\ref[src];vend=\ref[R]'>Vend</a> " dat += "<a href='byond://?src=[REF(src)];vend=[REF(R)]'>Vend</a> "
else else
dat += "<span class='linkOff'>Sold out</span> " dat += "<span class='linkOff'>Sold out</span> "
dat += "<font color = '[R.display_color]'><b>[sanitize(R.product_name)]</b>:</font>" dat += "<font color = '[R.display_color]'><b>[sanitize(R.product_name)]</b>:</font>"
@@ -384,7 +384,7 @@
if(premium.len > 0) if(premium.len > 0)
dat += "<b>Change Return:</b> " dat += "<b>Change Return:</b> "
if (coin || bill) if (coin || bill)
dat += "[(coin ? coin : "")][(bill ? bill : "")]&nbsp;&nbsp;<a href='byond://?src=\ref[src];remove_coin=1'>Remove</a>" dat += "[(coin ? coin : "")][(bill ? bill : "")]&nbsp;&nbsp;<a href='byond://?src=[REF(src)];remove_coin=1'>Remove</a>"
else else
dat += "<i>No money</i>&nbsp;&nbsp;<span class='linkOff'>Remove</span>" dat += "<i>No money</i>&nbsp;&nbsp;<span class='linkOff'>Remove</span>"
if(istype(src, /obj/machinery/vending/snack)) if(istype(src, /obj/machinery/vending/snack))
@@ -393,7 +393,7 @@
for (var/O in dish_quants) for (var/O in dish_quants)
if(dish_quants[O] > 0) if(dish_quants[O] > 0)
var/N = dish_quants[O] var/N = dish_quants[O]
dat += "<a href='byond://?src=\ref[src];dispense=[sanitize(O)]'>Dispense</A> " dat += "<a href='byond://?src=[REF(src)];dispense=[sanitize(O)]'>Dispense</A> "
dat += "<B>[capitalize(O)]: [N]</B><br>" dat += "<B>[capitalize(O)]: [N]</B><br>"
dat += "</div>" dat += "</div>"
user.set_machine(src) user.set_machine(src)

View File

@@ -10,6 +10,7 @@
max_temperature = 25000 max_temperature = 25000
infra_luminosity = 5 infra_luminosity = 5
operation_req_access = list(ACCESS_THEATRE) operation_req_access = list(ACCESS_THEATRE)
<<<<<<< HEAD
wreckage = /obj/structure/mecha_wreckage/honker wreckage = /obj/structure/mecha_wreckage/honker
add_req_access = 0 add_req_access = 0
max_equip = 3 max_equip = 3
@@ -154,3 +155,149 @@
return color return color
=======
wreckage = /obj/structure/mecha_wreckage/honker
add_req_access = 0
max_equip = 3
var/squeak = 0
/*
/obj/mecha/combat/honker/New()
..()
weapons += new /datum/mecha_weapon/honker(src)
weapons += new /datum/mecha_weapon/missile_rack/banana_mortar(src)
weapons += new /datum/mecha_weapon/missile_rack/mousetrap_mortar(src)
selected_weapon = weapons[1]
return
*/
/obj/mecha/combat/honker/get_stats_part()
var/integrity = obj_integrity/max_integrity*100
var/cell_charge = get_charge()
var/datum/gas_mixture/int_tank_air = internal_tank.return_air()
var/tank_pressure = internal_tank ? round(int_tank_air.return_pressure(),0.01) : "None"
var/tank_temperature = internal_tank ? int_tank_air.temperature : "Unknown"
var/cabin_pressure = round(return_pressure(),0.01)
var/output = {"[report_internal_damage()]
[integrity<30?"<font color='red'><b>DAMAGE LEVEL CRITICAL</b></font><br>":null]
[internal_damage&MECHA_INT_TEMP_CONTROL?"<font color='red'><b>CLOWN SUPPORT SYSTEM MALFUNCTION</b></font><br>":null]
[internal_damage&MECHA_INT_TANK_BREACH?"<font color='red'><b>GAS TANK HONK</b></font><br>":null]
[internal_damage&MECHA_INT_CONTROL_LOST?"<font color='red'><b>HONK-A-DOODLE</b></font> - <a href='?src=[REF(src)];repair_int_control_lost=1'>Recalibrate</a><br>":null]
<b>IntegriHONK: </b> [integrity]%<br>
<b>PowerHONK charge: </b>[isnull(cell_charge)?"No powercell installed":"[cell.percent()]%"]<br>
<b>Air source: </b>[use_internal_tank?"Internal Airtank":"Environment"]<br>
<b>AirHONK pressure: </b>[tank_pressure]kPa<br>
<b>AirHONK temperature: </b>[tank_temperature]&deg;K|[tank_temperature - T0C]&deg;C<br>
<b>HONK pressure: </b>[cabin_pressure>WARNING_HIGH_PRESSURE ? "<font color='red'>[cabin_pressure]</font>": cabin_pressure]kPa<br>
<b>HONK temperature: </b> [return_temperature()]&deg;K|[return_temperature() - T0C]&deg;C<br>
<b>Lights: </b>[lights?"on":"off"]<br>
[dna_lock?"<b>DNA-locked:</b><br> <span style='font-size:10px;letter-spacing:-1px;'>[dna_lock]</span> \[<a href='?src=[REF(src)];reset_dna=1'>Reset</a>\]<br>":null]
"}
return output
/obj/mecha/combat/honker/get_stats_html()
var/output = {"<html>
<head><title>[src.name] data</title>
<style>
body {color: #00ff00; background: #32CD32; font-family:"Courier",monospace; font-size: 12px;}
hr {border: 1px solid #0f0; color: #fff; background-color: #000;}
a {padding:2px 5px;;color:#0f0;}
.wr {margin-bottom: 5px;}
.header {cursor:pointer;}
.open, .closed {background: #32CD32; color:#000; padding:1px 2px;}
.links a {margin-bottom: 2px;padding-top:3px;}
.visible {display: block;}
.hidden {display: none;}
</style>
<script language='javascript' type='text/javascript'>
[js_byjax]
[js_dropdowns]
function SSticker() {
setInterval(function(){
window.location='byond://?src=[REF(src)]&update_content=1';
document.body.style.color = get_rand_color_string();
document.body.style.background = get_rand_color_string();
}, 1000);
}
function get_rand_color_string() {
var color = new Array;
for(var i=0;i<3;i++){
color.push(Math.floor(Math.random()*255));
}
return "rgb("+color.toString()+")";
}
window.onload = function() {
dropdowns();
SSticker();
}
</script>
</head>
<body>
<div id='content'>
[src.get_stats_part()]
</div>
<div id='eq_list'>
[src.get_equipment_list()]
</div>
<hr>
<div id='commands'>
[src.get_commands()]
</div>
</body>
</html>
"}
return output
/obj/mecha/combat/honker/get_commands()
var/output = {"<div class='wr'>
<div class='header'>Sounds of HONK:</div>
<div class='links'>
<a href='?src=[REF(src)];play_sound=sadtrombone'>Sad Trombone</a>
</div>
</div>
"}
output += ..()
return output
/obj/mecha/combat/honker/get_equipment_list()
if(!equipment.len)
return
var/output = "<b>Honk-ON-Systems:</b><div style=\"margin-left: 15px;\">"
for(var/obj/item/mecha_parts/mecha_equipment/MT in equipment)
output += "<div id='[REF(MT)]'>[MT.get_equip_info()]</div>"
output += "</div>"
return output
/obj/mecha/combat/honker/mechstep(direction)
var/result = step(src,direction)
if(result)
if(!squeak)
playsound(src, "clownstep", 70, 1)
squeak = 1
else
squeak = 0
return result
/obj/mecha/combat/honker/Topic(href, href_list)
..()
if (href_list["play_sound"])
switch(href_list["play_sound"])
if("sadtrombone")
playsound(src, 'sound/misc/sadtrombone.ogg', 50)
return
/proc/rand_hex_color()
var/list/colors = list("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f")
var/color=""
for (var/i=0;i<6;i++)
color = color+pick(colors)
return color
>>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental

View File

@@ -25,7 +25,7 @@
/obj/item/mecha_parts/mecha_equipment/proc/update_equip_info() /obj/item/mecha_parts/mecha_equipment/proc/update_equip_info()
if(chassis) if(chassis)
send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",get_equip_info()) send_byjax(chassis.occupant,"exosuit.browser","[REF(src)]",get_equip_info())
return 1 return 1
return return
@@ -52,7 +52,7 @@
if(chassis.selected == src) if(chassis.selected == src)
txt += "<b>[src.name]</b>" txt += "<b>[src.name]</b>"
else if(selectable) else if(selectable)
txt += "<a href='?src=\ref[chassis];select_equip=\ref[src]'>[src.name]</a>" txt += "<a href='?src=[REF(chassis)];select_equip=[REF(src)]'>[src.name]</a>"
else else
txt += "[src.name]" txt += "[src.name]"
@@ -132,7 +132,7 @@
/obj/item/mecha_parts/mecha_equipment/proc/set_ready_state(state) /obj/item/mecha_parts/mecha_equipment/proc/set_ready_state(state)
equip_ready = state equip_ready = state
if(chassis) if(chassis)
send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info()) send_byjax(chassis.occupant,"exosuit.browser","[REF(src)]",src.get_equip_info())
return return
/obj/item/mecha_parts/mecha_equipment/proc/occupant_message(message) /obj/item/mecha_parts/mecha_equipment/proc/occupant_message(message)

View File

@@ -104,21 +104,21 @@
if(output) if(output)
var/temp = "" var/temp = ""
if(patient) if(patient)
temp = "<br />\[Occupant: [patient] ([patient.stat > 1 ? "*DECEASED*" : "Health: [patient.health]%"])\]<br /><a href='?src=\ref[src];view_stats=1'>View stats</a>|<a href='?src=\ref[src];eject=1'>Eject</a>" temp = "<br />\[Occupant: [patient] ([patient.stat > 1 ? "*DECEASED*" : "Health: [patient.health]%"])\]<br /><a href='?src=[REF(src)];view_stats=1'>View stats</a>|<a href='?src=[REF(src)];eject=1'>Eject</a>"
return "[output] [temp]" return "[output] [temp]"
return return
/obj/item/mecha_parts/mecha_equipment/medical/sleeper/Topic(href,href_list) /obj/item/mecha_parts/mecha_equipment/medical/sleeper/Topic(href,href_list)
..() ..()
var/datum/topic_input/filter = new /datum/topic_input(href,href_list) var/datum/topic_input/afilter = new /datum/topic_input(href,href_list)
if(filter.get("eject")) if(afilter.get("eject"))
go_out() go_out()
if(filter.get("view_stats")) if(afilter.get("view_stats"))
chassis.occupant << browse(get_patient_stats(),"window=msleeper") chassis.occupant << browse(get_patient_stats(),"window=msleeper")
onclose(chassis.occupant, "msleeper") onclose(chassis.occupant, "msleeper")
return return
if(filter.get("inject")) if(afilter.get("inject"))
inject_reagent(filter.getType("inject", /datum/reagent),filter.getObj("source")) inject_reagent(afilter.getType("inject", /datum/reagent),afilter.getObj("source"))
return return
/obj/item/mecha_parts/mecha_equipment/medical/sleeper/proc/get_patient_stats() /obj/item/mecha_parts/mecha_equipment/medical/sleeper/proc/get_patient_stats()
@@ -184,7 +184,7 @@
if(SG && SG.reagents && islist(SG.reagents.reagent_list)) if(SG && SG.reagents && islist(SG.reagents.reagent_list))
for(var/datum/reagent/R in SG.reagents.reagent_list) for(var/datum/reagent/R in SG.reagents.reagent_list)
if(R.volume > 0) if(R.volume > 0)
output += "<a href=\"?src=\ref[src];inject=\ref[R];source=\ref[SG]\">Inject [R.name]</a><br />" output += "<a href=\"?src=[REF(src)];inject=[REF(R)];source=[REF(SG)]\">Inject [R.name]</a><br />"
return output return output
@@ -287,7 +287,7 @@
/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/get_equip_info() /obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/get_equip_info()
var/output = ..() var/output = ..()
if(output) if(output)
return "[output] \[<a href=\"?src=\ref[src];toggle_mode=1\">[mode? "Analyze" : "Launch"]</a>\]<br />\[Syringes: [syringes.len]/[max_syringes] | Reagents: [reagents.total_volume]/[reagents.maximum_volume]\]<br /><a href='?src=\ref[src];show_reagents=1'>Reagents list</a>" return "[output] \[<a href=\"?src=[REF(src)];toggle_mode=1\">[mode? "Analyze" : "Launch"]</a>\]<br />\[Syringes: [syringes.len]/[max_syringes] | Reagents: [reagents.total_volume]/[reagents.maximum_volume]\]<br /><a href='?src=[REF(src)];show_reagents=1'>Reagents list</a>"
return return
/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/action(atom/movable/target) /obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/action(atom/movable/target)
@@ -358,19 +358,19 @@
/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/Topic(href,href_list) /obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/Topic(href,href_list)
..() ..()
var/datum/topic_input/filter = new (href,href_list) var/datum/topic_input/afilter = new (href,href_list)
if(filter.get("toggle_mode")) if(afilter.get("toggle_mode"))
mode = !mode mode = !mode
update_equip_info() update_equip_info()
return return
if(filter.get("select_reagents")) if(afilter.get("select_reagents"))
processed_reagents.len = 0 processed_reagents.len = 0
var/m = 0 var/m = 0
var/message var/message
for(var/i=1 to known_reagents.len) for(var/i=1 to known_reagents.len)
if(m>=synth_speed) if(m>=synth_speed)
break break
var/reagent = filter.get("reagent_[i]") var/reagent = afilter.get("reagent_[i]")
if(reagent && (reagent in known_reagents)) if(reagent && (reagent in known_reagents))
message = "[m ? ", " : null][known_reagents[reagent]]" message = "[m ? ", " : null][known_reagents[reagent]]"
processed_reagents += reagent processed_reagents += reagent
@@ -382,14 +382,14 @@
occupant_message("Reagent processing started.") occupant_message("Reagent processing started.")
log_message("Reagent processing started.") log_message("Reagent processing started.")
return return
if(filter.get("show_reagents")) if(afilter.get("show_reagents"))
chassis.occupant << browse(get_reagents_page(),"window=msyringegun") chassis.occupant << browse(get_reagents_page(),"window=msyringegun")
if(filter.get("purge_reagent")) if(afilter.get("purge_reagent"))
var/reagent = filter.get("purge_reagent") var/reagent = afilter.get("purge_reagent")
if(reagent) if(reagent)
reagents.del_reagent(reagent) reagents.del_reagent(reagent)
return return
if(filter.get("purge_all")) if(afilter.get("purge_all"))
reagents.clear_reagents() reagents.clear_reagents()
return return
return return
@@ -426,7 +426,7 @@
var/r_list = get_reagents_list() var/r_list = get_reagents_list()
var/inputs var/inputs
if(r_list) if(r_list)
inputs += "<input type=\"hidden\" name=\"src\" value=\"\ref[src]\">" inputs += "<input type=\"hidden\" name=\"src\" value=\"[REF(src)]\">"
inputs += "<input type=\"hidden\" name=\"select_reagents\" value=\"1\">" inputs += "<input type=\"hidden\" name=\"select_reagents\" value=\"1\">"
inputs += "<input id=\"submit\" type=\"submit\" value=\"Apply settings\">" inputs += "<input id=\"submit\" type=\"submit\" value=\"Apply settings\">"
var/output = {"<form action="byond://" method="get"> var/output = {"<form action="byond://" method="get">
@@ -448,9 +448,9 @@
var/output var/output
for(var/datum/reagent/R in reagents.reagent_list) for(var/datum/reagent/R in reagents.reagent_list)
if(R.volume > 0) if(R.volume > 0)
output += "[R]: [round(R.volume,0.001)] - <a href=\"?src=\ref[src];purge_reagent=[R.id]\">Purge Reagent</a><br />" output += "[R]: [round(R.volume,0.001)] - <a href=\"?src=[REF(src)];purge_reagent=[R.id]\">Purge Reagent</a><br />"
if(output) if(output)
output += "Total: [round(reagents.total_volume,0.001)]/[reagents.maximum_volume] - <a href=\"?src=\ref[src];purge_all=1\">Purge All</a>" output += "Total: [round(reagents.total_volume,0.001)]/[reagents.maximum_volume] - <a href=\"?src=[REF(src)];purge_all=1\">Purge All</a>"
return output || "None" return output || "None"
/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/proc/load_syringe(obj/item/reagent_containers/syringe/S) /obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/proc/load_syringe(obj/item/reagent_containers/syringe/S)

View File

@@ -92,20 +92,20 @@
return return
locked = target locked = target
occupant_message("Locked on [target]") occupant_message("Locked on [target]")
send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info()) send_byjax(chassis.occupant,"exosuit.browser","[REF(src)]",src.get_equip_info())
else if(target!=locked) else if(target!=locked)
if(locked in view(chassis)) if(locked in view(chassis))
var/turf/targ = get_turf(target) var/turf/targ = get_turf(target)
var/turf/orig = get_turf(locked) var/turf/orig = get_turf(locked)
locked.throw_at(target, 14, 1.5) locked.throw_at(target, 14, 1.5)
locked = null locked = null
send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info()) send_byjax(chassis.occupant,"exosuit.browser","[REF(src)]",src.get_equip_info())
log_game("[key_name(chassis.occupant)] used a Gravitational Catapult to throw [locked]([COORD(orig)]) at [target]([COORD(targ)]).") log_game("[key_name(chassis.occupant)] used a Gravitational Catapult to throw [locked]([COORD(orig)]) at [target]([COORD(targ)]).")
return TRUE return TRUE
else else
locked = null locked = null
occupant_message("Lock on [locked] disengaged.") occupant_message("Lock on [locked] disengaged.")
send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info()) send_byjax(chassis.occupant,"exosuit.browser","[REF(src)]",src.get_equip_info())
if(2) if(2)
var/list/atoms = list() var/list/atoms = list()
if(isturf(target)) if(isturf(target))
@@ -126,13 +126,13 @@
/obj/item/mecha_parts/mecha_equipment/gravcatapult/get_equip_info() /obj/item/mecha_parts/mecha_equipment/gravcatapult/get_equip_info()
return "[..()] [mode==1?"([locked||"Nothing"])":null] \[<a href='?src=\ref[src];mode=1'>S</a>|<a href='?src=\ref[src];mode=2'>P</a>\]" return "[..()] [mode==1?"([locked||"Nothing"])":null] \[<a href='?src=[REF(src)];mode=1'>S</a>|<a href='?src=[REF(src)];mode=2'>P</a>\]"
/obj/item/mecha_parts/mecha_equipment/gravcatapult/Topic(href, href_list) /obj/item/mecha_parts/mecha_equipment/gravcatapult/Topic(href, href_list)
..() ..()
if(href_list["mode"]) if(href_list["mode"])
mode = text2num(href_list["mode"]) mode = text2num(href_list["mode"])
send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info()) send_byjax(chassis.occupant,"exosuit.browser","[REF(src)]",src.get_equip_info())
return return
@@ -212,7 +212,7 @@
/obj/item/mecha_parts/mecha_equipment/repair_droid/get_equip_info() /obj/item/mecha_parts/mecha_equipment/repair_droid/get_equip_info()
if(!chassis) if(!chassis)
return return
return "<span style=\"color:[equip_ready?"#0f0":"#f00"];\">*</span>&nbsp; [src.name] - <a href='?src=\ref[src];toggle_repairs=1'>[equip_ready?"A":"Dea"]ctivate</a>" return "<span style=\"color:[equip_ready?"#0f0":"#f00"];\">*</span>&nbsp; [src.name] - <a href='?src=[REF(src)];toggle_repairs=1'>[equip_ready?"A":"Dea"]ctivate</a>"
/obj/item/mecha_parts/mecha_equipment/repair_droid/Topic(href, href_list) /obj/item/mecha_parts/mecha_equipment/repair_droid/Topic(href, href_list)
@@ -230,7 +230,7 @@
log_message("Deactivated.") log_message("Deactivated.")
set_ready_state(1) set_ready_state(1)
chassis.add_overlay(droid_overlay) chassis.add_overlay(droid_overlay)
send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info()) send_byjax(chassis.occupant,"exosuit.browser","[REF(src)]",src.get_equip_info())
/obj/item/mecha_parts/mecha_equipment/repair_droid/process() /obj/item/mecha_parts/mecha_equipment/repair_droid/process()
@@ -320,7 +320,7 @@
/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay/get_equip_info() /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay/get_equip_info()
if(!chassis) if(!chassis)
return return
return "<span style=\"color:[equip_ready?"#0f0":"#f00"];\">*</span>&nbsp; [src.name] - <a href='?src=\ref[src];toggle_relay=1'>[equip_ready?"A":"Dea"]ctivate</a>" return "<span style=\"color:[equip_ready?"#0f0":"#f00"];\">*</span>&nbsp; [src.name] - <a href='?src=[REF(src)];toggle_relay=1'>[equip_ready?"A":"Dea"]ctivate</a>"
/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay/process() /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay/process()
@@ -397,13 +397,13 @@
/obj/item/mecha_parts/mecha_equipment/generator/get_equip_info() /obj/item/mecha_parts/mecha_equipment/generator/get_equip_info()
var/output = ..() var/output = ..()
if(output) if(output)
return "[output] \[[fuel]: [round(fuel.amount*fuel.perunit,0.1)] cm<sup>3</sup>\] - <a href='?src=\ref[src];toggle=1'>[equip_ready?"A":"Dea"]ctivate</a>" return "[output] \[[fuel]: [round(fuel.amount*fuel.perunit,0.1)] cm<sup>3</sup>\] - <a href='?src=[REF(src)];toggle=1'>[equip_ready?"A":"Dea"]ctivate</a>"
/obj/item/mecha_parts/mecha_equipment/generator/action(target) /obj/item/mecha_parts/mecha_equipment/generator/action(target)
if(chassis) if(chassis)
var/result = load_fuel(target) var/result = load_fuel(target)
if(result) if(result)
send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info()) send_byjax(chassis.occupant,"exosuit.browser","[REF(src)]",src.get_equip_info())
/obj/item/mecha_parts/mecha_equipment/generator/proc/load_fuel(var/obj/item/stack/sheet/P) /obj/item/mecha_parts/mecha_equipment/generator/proc/load_fuel(var/obj/item/stack/sheet/P)
if(P.type == fuel.type && P.amount > 0) if(P.type == fuel.type && P.amount > 0)

View File

@@ -288,7 +288,7 @@
return return
/obj/item/mecha_parts/mecha_equipment/rcd/get_equip_info() /obj/item/mecha_parts/mecha_equipment/rcd/get_equip_info()
return "[..()] \[<a href='?src=\ref[src];mode=0'>D</a>|<a href='?src=\ref[src];mode=1'>C</a>|<a href='?src=\ref[src];mode=2'>A</a>\]" return "[..()] \[<a href='?src=[REF(src)];mode=0'>D</a>|<a href='?src=[REF(src)];mode=1'>C</a>|<a href='?src=[REF(src)];mode=2'>A</a>\]"
@@ -342,7 +342,7 @@
cable.amount += to_load cable.amount += to_load
target.use(to_load) target.use(to_load)
occupant_message("<span class='notice'>[to_load] meters of cable successfully loaded.</span>") occupant_message("<span class='notice'>[to_load] meters of cable successfully loaded.</span>")
send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info()) send_byjax(chassis.occupant,"exosuit.browser","[REF(src)]",src.get_equip_info())
else else
occupant_message("<span class='warning'>Reel is full.</span>") occupant_message("<span class='warning'>Reel is full.</span>")
else else
@@ -371,7 +371,7 @@
/obj/item/mecha_parts/mecha_equipment/cable_layer/get_equip_info() /obj/item/mecha_parts/mecha_equipment/cable_layer/get_equip_info()
var/output = ..() var/output = ..()
if(output) if(output)
return "[output] \[Cable: [cable ? cable.amount : 0] m\][(cable && cable.amount) ? "- <a href='?src=\ref[src];toggle=1'>[!equip_ready?"Dea":"A"]ctivate</a>|<a href='?src=\ref[src];cut=1'>Cut</a>" : null]" return "[output] \[Cable: [cable ? cable.amount : 0] m\][(cable && cable.amount) ? "- <a href='?src=[REF(src)];toggle=1'>[!equip_ready?"Dea":"A"]ctivate</a>|<a href='?src=[REF(src)];cut=1'>Cut</a>" : null]"
return return
/obj/item/mecha_parts/mecha_equipment/cable_layer/proc/use_cable(amount) /obj/item/mecha_parts/mecha_equipment/cable_layer/proc/use_cable(amount)

View File

@@ -210,7 +210,7 @@
return 1 return 1
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/get_equip_info() /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/get_equip_info()
return "[..()] \[[src.projectiles]\][(src.projectiles < initial(src.projectiles))?" - <a href='?src=\ref[src];rearm=1'>Rearm</a>":null]" return "[..()] \[[src.projectiles]\][(src.projectiles < initial(src.projectiles))?" - <a href='?src=[REF(src)];rearm=1'>Rearm</a>":null]"
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/rearm() /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/rearm()
@@ -220,7 +220,7 @@
projectiles++ projectiles++
projectiles_to_add-- projectiles_to_add--
chassis.use_power(projectile_energy_cost) chassis.use_power(projectile_energy_cost)
send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info()) send_byjax(chassis.occupant,"exosuit.browser","[REF(src)]",src.get_equip_info())
log_message("Rearmed [src.name].") log_message("Rearmed [src.name].")
return 1 return 1
@@ -239,7 +239,7 @@
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/action(atom/target) /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/action(atom/target)
if(..()) if(..())
projectiles -= get_shot_amount() projectiles -= get_shot_amount()
send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info()) send_byjax(chassis.occupant,"exosuit.browser","[REF(src)]",src.get_equip_info())
return 1 return 1

View File

@@ -98,8 +98,8 @@
continue continue
output += "<div class='part'>[output_part_info(D)]<br>\[" output += "<div class='part'>[output_part_info(D)]<br>\["
if(check_resources(D)) if(check_resources(D))
output += "<a href='?src=\ref[src];part=[D.id]'>Build</a> | " output += "<a href='?src=[REF(src)];part=[D.id]'>Build</a> | "
output += "<a href='?src=\ref[src];add_to_queue=[D.id]'>Add to queue</a>\]\[<a href='?src=\ref[src];part_desc=[D.id]'>?</a>\]</div>" output += "<a href='?src=[REF(src)];add_to_queue=[D.id]'>Add to queue</a>\]\[<a href='?src=[REF(src)];part_desc=[D.id]'>?</a>\]</div>"
return output return output
/obj/machinery/mecha_part_fabricator/proc/output_part_info(datum/design/D) /obj/machinery/mecha_part_fabricator/proc/output_part_info(datum/design/D)
@@ -121,10 +121,10 @@
var/datum/material/M = materials.materials[mat_id] var/datum/material/M = materials.materials[mat_id]
output += "<span class=\"res_name\">[M.name]: </span>[M.amount] cm&sup3;" output += "<span class=\"res_name\">[M.name]: </span>[M.amount] cm&sup3;"
if(M.amount >= MINERAL_MATERIAL_AMOUNT) if(M.amount >= MINERAL_MATERIAL_AMOUNT)
output += "<span style='font-size:80%;'>- Remove \[<a href='?src=\ref[src];remove_mat=1;material=[mat_id]'>1</a>\]" output += "<span style='font-size:80%;'>- Remove \[<a href='?src=[REF(src)];remove_mat=1;material=[mat_id]'>1</a>\]"
if(M.amount >= (MINERAL_MATERIAL_AMOUNT * 10)) if(M.amount >= (MINERAL_MATERIAL_AMOUNT * 10))
output += " | \[<a href='?src=\ref[src];remove_mat=10;material=[mat_id]'>10</a>\]" output += " | \[<a href='?src=[REF(src)];remove_mat=10;material=[mat_id]'>10</a>\]"
output += " | \[<a href='?src=\ref[src];remove_mat=50;material=[mat_id]'>All</a>\]</span>" output += " | \[<a href='?src=[REF(src)];remove_mat=50;material=[mat_id]'>All</a>\]</span>"
output += "<br/>" output += "<br/>"
return output return output
@@ -206,7 +206,7 @@
if(!check_resources(D)) if(!check_resources(D))
say("Not enough resources. Queue processing stopped.") say("Not enough resources. Queue processing stopped.")
temp = {"<span class='alert'>Not enough resources to build next part.</span><br> temp = {"<span class='alert'>Not enough resources to build next part.</span><br>
<a href='?src=\ref[src];process_queue=1'>Try again</a> | <a href='?src=\ref[src];clear_temp=1'>Return</a><a>"} <a href='?src=[REF(src)];process_queue=1'>Try again</a> | <a href='?src=[REF(src)];clear_temp=1'>Return</a><a>"}
return 0 return 0
remove_from_queue(1) remove_from_queue(1)
build_part(D) build_part(D)
@@ -225,12 +225,12 @@
var/obj/part = D.build_path var/obj/part = D.build_path
output += "<li[!check_resources(D)?" style='color: #f00;'":null]>" output += "<li[!check_resources(D)?" style='color: #f00;'":null]>"
output += initial(part.name) + " - " output += initial(part.name) + " - "
output += "[i>1?"<a href='?src=\ref[src];queue_move=-1;index=[i]' class='arrow'>&uarr;</a>":null] " output += "[i>1?"<a href='?src=[REF(src)];queue_move=-1;index=[i]' class='arrow'>&uarr;</a>":null] "
output += "[i<queue.len?"<a href='?src=\ref[src];queue_move=+1;index=[i]' class='arrow'>&darr;</a>":null] " output += "[i<queue.len?"<a href='?src=[REF(src)];queue_move=+1;index=[i]' class='arrow'>&darr;</a>":null] "
output += "<a href='?src=\ref[src];remove_from_queue=[i]'>Remove</a></li>" output += "<a href='?src=[REF(src)];remove_from_queue=[i]'>Remove</a></li>"
output += "</ol>" output += "</ol>"
output += "\[<a href='?src=\ref[src];process_queue=1'>Process queue</a> | <a href='?src=\ref[src];clear_queue=1'>Clear queue</a>\]" output += "\[<a href='?src=[REF(src)];process_queue=1'>Process queue</a> | <a href='?src=[REF(src)];clear_queue=1'>Clear queue</a>\]"
return output return output
/obj/machinery/mecha_part_fabricator/proc/sync() /obj/machinery/mecha_part_fabricator/proc/sync()
@@ -250,13 +250,13 @@
files.RefreshResearch() files.RefreshResearch()
temp = "Processed equipment designs.<br>" temp = "Processed equipment designs.<br>"
//check if the tech coefficients have changed //check if the tech coefficients have changed
temp += "<a href='?src=\ref[src];clear_temp=1'>Return</a>" temp += "<a href='?src=[REF(src)];clear_temp=1'>Return</a>"
updateUsrDialog() updateUsrDialog()
say("Successfully synchronized with R&D server.") say("Successfully synchronized with R&D server.")
return return
temp = "Unable to connect to local R&D Database.<br>Please check your connections and try again.<br><a href='?src=\ref[src];clear_temp=1'>Return</a>" temp = "Unable to connect to local R&D Database.<br>Please check your connections and try again.<br><a href='?src=[REF(src)];clear_temp=1'>Return</a>"
updateUsrDialog() updateUsrDialog()
return return
@@ -289,12 +289,12 @@
switch(screen) switch(screen)
if("main") if("main")
left_part = output_available_resources()+"<hr>" left_part = output_available_resources()+"<hr>"
left_part += "<a href='?src=\ref[src];sync=1'>Sync with R&D servers</a><hr>" left_part += "<a href='?src=[REF(src)];sync=1'>Sync with R&D servers</a><hr>"
for(var/part_set in part_sets) for(var/part_set in part_sets)
left_part += "<a href='?src=\ref[src];part_set=[part_set]'>[part_set]</a> - \[<a href='?src=\ref[src];partset_to_queue=[part_set]'>Add all parts to queue</a>\]<br>" left_part += "<a href='?src=[REF(src)];part_set=[part_set]'>[part_set]</a> - \[<a href='?src=[REF(src)];partset_to_queue=[part_set]'>Add all parts to queue</a>\]<br>"
if("parts") if("parts")
left_part += output_parts_list(part_set) left_part += output_parts_list(part_set)
left_part += "<hr><a href='?src=\ref[src];screen=main'>Return</a>" left_part += "<hr><a href='?src=[REF(src)];screen=main'>Return</a>"
dat = {"<html> dat = {"<html>
<head> <head>
<title>[name]</title> <title>[name]</title>
@@ -332,9 +332,9 @@
/obj/machinery/mecha_part_fabricator/Topic(href, href_list) /obj/machinery/mecha_part_fabricator/Topic(href, href_list)
if(..()) if(..())
return return
var/datum/topic_input/filter = new /datum/topic_input(href,href_list) var/datum/topic_input/afilter = new /datum/topic_input(href,href_list)
if(href_list["part_set"]) if(href_list["part_set"])
var/tpart_set = filter.getStr("part_set") var/tpart_set = afilter.getStr("part_set")
if(tpart_set) if(tpart_set)
if(tpart_set=="clear") if(tpart_set=="clear")
part_set = null part_set = null
@@ -342,7 +342,7 @@
part_set = tpart_set part_set = tpart_set
screen = "parts" screen = "parts"
if(href_list["part"]) if(href_list["part"])
var/T = filter.getStr("part") var/T = afilter.getStr("part")
for(var/v in files.known_designs) for(var/v in files.known_designs)
var/datum/design/D = files.known_designs[v] var/datum/design/D = files.known_designs[v]
if(D.build_type & MECHFAB) if(D.build_type & MECHFAB)
@@ -353,7 +353,7 @@
add_to_queue(D) add_to_queue(D)
break break
if(href_list["add_to_queue"]) if(href_list["add_to_queue"])
var/T = filter.getStr("add_to_queue") var/T = afilter.getStr("add_to_queue")
for(var/v in files.known_designs) for(var/v in files.known_designs)
var/datum/design/D = files.known_designs[v] var/datum/design/D = files.known_designs[v]
if(D.build_type & MECHFAB) if(D.build_type & MECHFAB)
@@ -362,10 +362,10 @@
break break
return update_queue_on_page() return update_queue_on_page()
if(href_list["remove_from_queue"]) if(href_list["remove_from_queue"])
remove_from_queue(filter.getNum("remove_from_queue")) remove_from_queue(afilter.getNum("remove_from_queue"))
return update_queue_on_page() return update_queue_on_page()
if(href_list["partset_to_queue"]) if(href_list["partset_to_queue"])
add_part_set_to_queue(filter.get("partset_to_queue")) add_part_set_to_queue(afilter.get("partset_to_queue"))
return update_queue_on_page() return update_queue_on_page()
if(href_list["process_queue"]) if(href_list["process_queue"])
spawn(0) spawn(0)
@@ -379,8 +379,8 @@
if(href_list["screen"]) if(href_list["screen"])
screen = href_list["screen"] screen = href_list["screen"]
if(href_list["queue_move"] && href_list["index"]) if(href_list["queue_move"] && href_list["index"])
var/index = filter.getNum("index") var/index = afilter.getNum("index")
var/new_index = index + filter.getNum("queue_move") var/new_index = index + afilter.getNum("queue_move")
if(isnum(index) && isnum(new_index) && IsInteger(index) && IsInteger(new_index)) if(isnum(index) && isnum(new_index) && IsInteger(index) && IsInteger(new_index))
if(IsInRange(new_index,1,queue.len)) if(IsInRange(new_index,1,queue.len))
queue.Swap(index,new_index) queue.Swap(index,new_index)
@@ -391,7 +391,7 @@
if(href_list["sync"]) if(href_list["sync"])
sync() sync()
if(href_list["part_desc"]) if(href_list["part_desc"])
var/T = filter.getStr("part_desc") var/T = afilter.getStr("part_desc")
for(var/v in files.known_designs) for(var/v in files.known_designs)
var/datum/design/D = files.known_designs[v] var/datum/design/D = files.known_designs[v]
if(D.build_type & MECHFAB) if(D.build_type & MECHFAB)
@@ -399,7 +399,7 @@
var/obj/part = D.build_path var/obj/part = D.build_path
temp = {"<h1>[initial(part.name)] description:</h1> temp = {"<h1>[initial(part.name)] description:</h1>
[initial(part.desc)]<br> [initial(part.desc)]<br>
<a href='?src=\ref[src];clear_temp=1'>Return</a> <a href='?src=[REF(src)];clear_temp=1'>Return</a>
"} "}
break break

View File

@@ -647,7 +647,7 @@
to_chat(user, "[B.get_mecha_info()]") to_chat(user, "[B.get_mecha_info()]")
break break
//Nothing like a big, red link to make the player feel powerful! //Nothing like a big, red link to make the player feel powerful!
to_chat(user, "<a href='?src=\ref[user];ai_take_control=\ref[src]'><span class='userdanger'>ASSUME DIRECT CONTROL?</span></a><br>") to_chat(user, "<a href='?src=[REF(user)];ai_take_control=[REF(src)]'><span class='userdanger'>ASSUME DIRECT CONTROL?</span></a><br>")
else else
examine(user) examine(user)
if(occupant) if(occupant)
@@ -661,7 +661,7 @@
if(!can_control_mech) if(!can_control_mech)
to_chat(user, "<span class='warning'>You cannot control exosuits without AI control beacons installed.</span>") to_chat(user, "<span class='warning'>You cannot control exosuits without AI control beacons installed.</span>")
return return
to_chat(user, "<a href='?src=\ref[user];ai_take_control=\ref[src]'><span class='boldnotice'>Take control of exosuit?</span></a><br>") to_chat(user, "<a href='?src=[REF(user)];ai_take_control=[REF(src)]'><span class='boldnotice'>Take control of exosuit?</span></a><br>")
/obj/mecha/transfer_ai(interaction, mob/user, mob/living/silicon/ai/AI, obj/item/device/aicard/card) /obj/mecha/transfer_ai(interaction, mob/user, mob/living/silicon/ai/AI, obj/item/device/aicard/card)
if(!..()) if(!..())

View File

@@ -23,15 +23,15 @@
var/answer = TR.get_mecha_info() var/answer = TR.get_mecha_info()
if(answer) if(answer)
dat += {"<hr>[answer]<br/> dat += {"<hr>[answer]<br/>
<a href='?src=\ref[src];send_message=\ref[TR]'>Send message</a><br/> <a href='?src=[REF(src)];send_message=[REF(TR)]'>Send message</a><br/>
<a href='?src=\ref[src];get_log=\ref[TR]'>Show exosuit log</a> | <a style='color: #f00;' href='?src=\ref[src];shock=\ref[TR]'>(EMP pulse)</a><br>"} <a href='?src=[REF(src)];get_log=[REF(TR)]'>Show exosuit log</a> | <a style='color: #f00;' href='?src=[REF(src)];shock=[REF(TR)]'>(EMP pulse)</a><br>"}
if(screen==1) if(screen==1)
dat += "<h3>Log contents</h3>" dat += "<h3>Log contents</h3>"
dat += "<a href='?src=\ref[src];return=1'>Return</a><hr>" dat += "<a href='?src=[REF(src)];return=1'>Return</a><hr>"
dat += "[stored_data]" dat += "[stored_data]"
dat += "<A href='?src=\ref[src];refresh=1'>(Refresh)</A><BR>" dat += "<A href='?src=[REF(src)];refresh=1'>(Refresh)</A><BR>"
dat += "</body></html>" dat += "</body></html>"
user << browse(dat, "window=computer;size=400x500") user << browse(dat, "window=computer;size=400x500")
@@ -41,19 +41,19 @@
/obj/machinery/computer/mecha/Topic(href, href_list) /obj/machinery/computer/mecha/Topic(href, href_list)
if(..()) if(..())
return return
var/datum/topic_input/filter = new /datum/topic_input(href,href_list) var/datum/topic_input/afilter = new /datum/topic_input(href,href_list)
if(href_list["send_message"]) if(href_list["send_message"])
var/obj/item/mecha_parts/mecha_tracking/MT = filter.getObj("send_message") var/obj/item/mecha_parts/mecha_tracking/MT = afilter.getObj("send_message")
var/message = stripped_input(usr,"Input message","Transmit message") var/message = stripped_input(usr,"Input message","Transmit message")
var/obj/mecha/M = MT.in_mecha() var/obj/mecha/M = MT.in_mecha()
if(trim(message) && M) if(trim(message) && M)
M.occupant_message(message) M.occupant_message(message)
return return
if(href_list["shock"]) if(href_list["shock"])
var/obj/item/mecha_parts/mecha_tracking/MT = filter.getObj("shock") var/obj/item/mecha_parts/mecha_tracking/MT = afilter.getObj("shock")
MT.shock() MT.shock()
if(href_list["get_log"]) if(href_list["get_log"])
var/obj/item/mecha_parts/mecha_tracking/MT = filter.getObj("get_log") var/obj/item/mecha_parts/mecha_tracking/MT = afilter.getObj("get_log")
stored_data = MT.get_mecha_log() stored_data = MT.get_mecha_log()
screen = 1 screen = 1
if(href_list["return"]) if(href_list["return"])

View File

@@ -22,7 +22,7 @@
[js_dropdowns] [js_dropdowns]
function SSticker() { function SSticker() {
setInterval(function(){ setInterval(function(){
window.location='byond://?src=\ref[src]&update_content=1'; window.location='byond://?src=[REF(src)]&update_content=1';
}, 1000); }, 1000);
} }
@@ -55,7 +55,7 @@
"[MECHA_INT_FIRE]" = "<span class='userdanger'>INTERNAL FIRE</span>", "[MECHA_INT_FIRE]" = "<span class='userdanger'>INTERNAL FIRE</span>",
"[MECHA_INT_TEMP_CONTROL]" = "<span class='userdanger'>LIFE SUPPORT SYSTEM MALFUNCTION</span>", "[MECHA_INT_TEMP_CONTROL]" = "<span class='userdanger'>LIFE SUPPORT SYSTEM MALFUNCTION</span>",
"[MECHA_INT_TANK_BREACH]" = "<span class='userdanger'>GAS TANK BREACH</span>", "[MECHA_INT_TANK_BREACH]" = "<span class='userdanger'>GAS TANK BREACH</span>",
"[MECHA_INT_CONTROL_LOST]" = "<span class='userdanger'>COORDINATION SYSTEM CALIBRATION FAILURE</span> - <a href='?src=\ref[src];repair_int_control_lost=1'>Recalibrate</a>", "[MECHA_INT_CONTROL_LOST]" = "<span class='userdanger'>COORDINATION SYSTEM CALIBRATION FAILURE</span> - <a href='?src=[REF(src)];repair_int_control_lost=1'>Recalibrate</a>",
"[MECHA_INT_SHORT_CIRCUIT]" = "<span class='userdanger'>SHORT CIRCUIT</span>" "[MECHA_INT_SHORT_CIRCUIT]" = "<span class='userdanger'>SHORT CIRCUIT</span>"
) )
for(var/tflag in dam_reports) for(var/tflag in dam_reports)
@@ -84,7 +84,7 @@
<b>Airtank temperature: </b>[tank_temperature]&deg;K|[tank_temperature - T0C]&deg;C<br> <b>Airtank temperature: </b>[tank_temperature]&deg;K|[tank_temperature - T0C]&deg;C<br>
<b>Cabin pressure: </b>[cabin_pressure>WARNING_HIGH_PRESSURE ? "<span class='danger'>[cabin_pressure]</span>": cabin_pressure]kPa<br> <b>Cabin pressure: </b>[cabin_pressure>WARNING_HIGH_PRESSURE ? "<span class='danger'>[cabin_pressure]</span>": cabin_pressure]kPa<br>
<b>Cabin temperature: </b> [return_temperature()]&deg;K|[return_temperature() - T0C]&deg;C<br> <b>Cabin temperature: </b> [return_temperature()]&deg;K|[return_temperature() - T0C]&deg;C<br>
[dna_lock?"<b>DNA-locked:</b><br> <span style='font-size:10px;letter-spacing:-1px;'>[dna_lock]</span> \[<a href='?src=\ref[src];reset_dna=1'>Reset</a>\]<br>":""]<br> [dna_lock?"<b>DNA-locked:</b><br> <span style='font-size:10px;letter-spacing:-1px;'>[dna_lock]</span> \[<a href='?src=[REF(src)];reset_dna=1'>Reset</a>\]<br>":""]<br>
[thrusters_action.owner ? "<b>Thrusters: </b> [thrusters_active ? "Enabled" : "Disabled"]<br>" : ""] [thrusters_action.owner ? "<b>Thrusters: </b> [thrusters_active ? "Enabled" : "Disabled"]<br>" : ""]
[defense_action.owner ? "<b>Defence Mode: </b> [defence_mode ? "Enabled" : "Disabled"]<br>" : ""] [defense_action.owner ? "<b>Defence Mode: </b> [defence_mode ? "Enabled" : "Disabled"]<br>" : ""]
[overload_action.owner ? "<b>Leg Actuators Overload: </b> [leg_overload_mode ? "Enabled" : "Disabled"]<br>" : ""] [overload_action.owner ? "<b>Leg Actuators Overload: </b> [leg_overload_mode ? "Enabled" : "Disabled"]<br>" : ""]
@@ -100,25 +100,25 @@
<div class='header'>Electronics</div> <div class='header'>Electronics</div>
<div class='links'> <div class='links'>
<b>Radio settings:</b><br> <b>Radio settings:</b><br>
Microphone: <a href='?src=\ref[src];rmictoggle=1'><span id="rmicstate">[radio.broadcasting?"Engaged":"Disengaged"]</span></a><br> Microphone: <a href='?src=[REF(src)];rmictoggle=1'><span id="rmicstate">[radio.broadcasting?"Engaged":"Disengaged"]</span></a><br>
Speaker: <a href='?src=\ref[src];rspktoggle=1'><span id="rspkstate">[radio.listening?"Engaged":"Disengaged"]</span></a><br> Speaker: <a href='?src=[REF(src)];rspktoggle=1'><span id="rspkstate">[radio.listening?"Engaged":"Disengaged"]</span></a><br>
Frequency: Frequency:
<a href='?src=\ref[src];rfreq=-10'>-</a> <a href='?src=[REF(src)];rfreq=-10'>-</a>
<a href='?src=\ref[src];rfreq=-2'>-</a> <a href='?src=[REF(src)];rfreq=-2'>-</a>
<span id="rfreq">[format_frequency(radio.frequency)]</span> <span id="rfreq">[format_frequency(radio.frequency)]</span>
<a href='?src=\ref[src];rfreq=2'>+</a> <a href='?src=[REF(src)];rfreq=2'>+</a>
<a href='?src=\ref[src];rfreq=10'>+</a><br> <a href='?src=[REF(src)];rfreq=10'>+</a><br>
</div> </div>
</div> </div>
<div class='wr'> <div class='wr'>
<div class='header'>Permissions & Logging</div> <div class='header'>Permissions & Logging</div>
<div class='links'> <div class='links'>
<a href='?src=\ref[src];toggle_id_upload=1'><span id='t_id_upload'>[add_req_access?"L":"Unl"]ock ID upload panel</span></a><br> <a href='?src=[REF(src)];toggle_id_upload=1'><span id='t_id_upload'>[add_req_access?"L":"Unl"]ock ID upload panel</span></a><br>
<a href='?src=\ref[src];toggle_maint_access=1'><span id='t_maint_access'>[maint_access?"Forbid":"Permit"] maintenance protocols</span></a><br> <a href='?src=[REF(src)];toggle_maint_access=1'><span id='t_maint_access'>[maint_access?"Forbid":"Permit"] maintenance protocols</span></a><br>
<a href='?src=\ref[src];toggle_port_connection=1'><span id='t_port_connection'>[internal_tank.connected_port?"Disconnect from":"Connect to"] gas port</span></a><br> <a href='?src=[REF(src)];toggle_port_connection=1'><span id='t_port_connection'>[internal_tank.connected_port?"Disconnect from":"Connect to"] gas port</span></a><br>
<a href='?src=\ref[src];dna_lock=1'>DNA-lock</a><br> <a href='?src=[REF(src)];dna_lock=1'>DNA-lock</a><br>
<a href='?src=\ref[src];view_log=1'>View internal log</a><br> <a href='?src=[REF(src)];view_log=1'>View internal log</a><br>
<a href='?src=\ref[src];change_name=1'>Change exosuit name</a><br> <a href='?src=[REF(src)];change_name=1'>Change exosuit name</a><br>
</div> </div>
</div> </div>
<div id='equipment_menu'>[get_equipment_menu()]</div> <div id='equipment_menu'>[get_equipment_menu()]</div>
@@ -133,7 +133,7 @@
<div class='links'>"} <div class='links'>"}
for(var/X in equipment) for(var/X in equipment)
var/obj/item/mecha_parts/mecha_equipment/W = X var/obj/item/mecha_parts/mecha_equipment/W = X
. += "[W.name] <a href='?src=\ref[W];detach=1'>Detach</a><br>" . += "[W.name] <a href='?src=[REF(W)];detach=1'>Detach</a><br>"
. += "<b>Available equipment slots:</b> [max_equip-equipment.len]" . += "<b>Available equipment slots:</b> [max_equip-equipment.len]"
. += "</div></div>" . += "</div></div>"
@@ -143,7 +143,7 @@
return return
. = "<b>Equipment:</b><div style=\"margin-left: 15px;\">" . = "<b>Equipment:</b><div style=\"margin-left: 15px;\">"
for(var/obj/item/mecha_parts/mecha_equipment/MT in equipment) for(var/obj/item/mecha_parts/mecha_equipment/MT in equipment)
. += "<div id='\ref[MT]'>[MT.get_equip_info()]</div>" . += "<div id='[REF(MT)]'>[MT.get_equip_info()]</div>"
. += "</div>" . += "</div>"
@@ -171,7 +171,7 @@
<body> <body>
<h1>Following keycodes are present in this system:</h1>"} <h1>Following keycodes are present in this system:</h1>"}
for(var/a in operation_req_access) for(var/a in operation_req_access)
. += "[get_access_desc(a)] - <a href='?src=\ref[src];del_req_access=[a];user=\ref[user];id_card=\ref[id_card]'>Delete</a><br>" . += "[get_access_desc(a)] - <a href='?src=[REF(src)];del_req_access=[a];user=[REF(user)];id_card=[REF(id_card)]'>Delete</a><br>"
. += "<hr><h1>Following keycodes were detected on portable device:</h1>" . += "<hr><h1>Following keycodes were detected on portable device:</h1>"
for(var/a in id_card.access) for(var/a in id_card.access)
if(a in operation_req_access) if(a in operation_req_access)
@@ -179,8 +179,8 @@
var/a_name = get_access_desc(a) var/a_name = get_access_desc(a)
if(!a_name) if(!a_name)
continue //there's some strange access without a name continue //there's some strange access without a name
. += "[a_name] - <a href='?src=\ref[src];add_req_access=[a];user=\ref[user];id_card=\ref[id_card]'>Add</a><br>" . += "[a_name] - <a href='?src=[REF(src)];add_req_access=[a];user=[REF(user)];id_card=[REF(id_card)]'>Add</a><br>"
. += "<hr><a href='?src=\ref[src];finish_req_access=1;user=\ref[user]'>Finish</a> " . += "<hr><a href='?src=[REF(src)];finish_req_access=1;user=[REF(user)]'>Finish</a> "
. += "<span class='danger'>(Warning! The ID upload panel will be locked. It can be unlocked only through Exosuit Interface.)</span>" . += "<span class='danger'>(Warning! The ID upload panel will be locked. It can be unlocked only through Exosuit Interface.)</span>"
. += "</body></html>" . += "</body></html>"
user << browse(., "window=exosuit_add_access") user << browse(., "window=exosuit_add_access")
@@ -198,9 +198,9 @@
</style> </style>
</head> </head>
<body> <body>
[add_req_access?"<a href='?src=\ref[src];req_access=1;id_card=\ref[id_card];user=\ref[user]'>Edit operation keycodes</a>":null] [add_req_access?"<a href='?src=[REF(src)];req_access=1;id_card=[REF(id_card)];user=[REF(user)]'>Edit operation keycodes</a>":null]
[maint_access?"<a href='?src=\ref[src];maint_access=1;id_card=\ref[id_card];user=\ref[user]'>Initiate maintenance protocol</a>":null] [maint_access?"<a href='?src=[REF(src)];maint_access=1;id_card=[REF(id_card)];user=[REF(user)]'>Initiate maintenance protocol</a>":null]
[(state>0) ?"<a href='?src=\ref[src];set_internal_tank_valve=1;user=\ref[user]'>Set Cabin Air Pressure</a>":null] [(state>0) ?"<a href='?src=[REF(src)];set_internal_tank_valve=1;user=[REF(user)]'>Set Cabin Air Pressure</a>":null]
</body> </body>
</html>"} </html>"}
user << browse(., "window=exosuit_maint_console") user << browse(., "window=exosuit_maint_console")
@@ -221,15 +221,15 @@
if(usr.incapacitated()) if(usr.incapacitated())
return return
var/datum/topic_input/filter = new /datum/topic_input(href,href_list) var/datum/topic_input/afilter = new /datum/topic_input(href,href_list)
if(in_range(src, usr)) if(in_range(src, usr))
if(href_list["req_access"] && add_req_access) if(href_list["req_access"] && add_req_access)
output_access_dialog(filter.getObj("id_card"),filter.getMob("user")) output_access_dialog(afilter.getObj("id_card"),afilter.getMob("user"))
if(href_list["maint_access"] && maint_access) if(href_list["maint_access"] && maint_access)
var/mob/user = filter.getMob("user") var/mob/user = afilter.getMob("user")
if(user) if(user)
if(state==0) if(state==0)
state = 1 state = 1
@@ -237,27 +237,27 @@
else if(state==1) else if(state==1)
state = 0 state = 0
to_chat(user, "The securing bolts are now hidden.") to_chat(user, "The securing bolts are now hidden.")
output_maintenance_dialog(filter.getObj("id_card"),user) output_maintenance_dialog(afilter.getObj("id_card"),user)
if(href_list["set_internal_tank_valve"] && state >=1) if(href_list["set_internal_tank_valve"] && state >=1)
var/mob/user = filter.getMob("user") var/mob/user = afilter.getMob("user")
if(user) if(user)
var/new_pressure = input(user,"Input new output pressure","Pressure setting",internal_tank_valve) as num var/new_pressure = input(user,"Input new output pressure","Pressure setting",internal_tank_valve) as num
if(new_pressure) if(new_pressure)
internal_tank_valve = new_pressure internal_tank_valve = new_pressure
to_chat(user, "The internal pressure valve has been set to [internal_tank_valve]kPa.") to_chat(user, "The internal pressure valve has been set to [internal_tank_valve]kPa.")
if(href_list["add_req_access"] && add_req_access && filter.getObj("id_card")) if(href_list["add_req_access"] && add_req_access && afilter.getObj("id_card"))
operation_req_access += filter.getNum("add_req_access") operation_req_access += afilter.getNum("add_req_access")
output_access_dialog(filter.getObj("id_card"),filter.getMob("user")) output_access_dialog(afilter.getObj("id_card"),afilter.getMob("user"))
if(href_list["del_req_access"] && add_req_access && filter.getObj("id_card")) if(href_list["del_req_access"] && add_req_access && afilter.getObj("id_card"))
operation_req_access -= filter.getNum("del_req_access") operation_req_access -= afilter.getNum("del_req_access")
output_access_dialog(filter.getObj("id_card"),filter.getMob("user")) output_access_dialog(afilter.getObj("id_card"),afilter.getMob("user"))
if(href_list["finish_req_access"]) if(href_list["finish_req_access"])
add_req_access = 0 add_req_access = 0
var/mob/user = filter.getMob("user") var/mob/user = afilter.getMob("user")
user << browse(null,"window=exosuit_add_access") user << browse(null,"window=exosuit_add_access")
if(usr != occupant) if(usr != occupant)
@@ -267,7 +267,7 @@
send_byjax(src.occupant,"exosuit.browser","content",src.get_stats_part()) send_byjax(src.occupant,"exosuit.browser","content",src.get_stats_part())
if(href_list["select_equip"]) if(href_list["select_equip"])
var/obj/item/mecha_parts/mecha_equipment/equip = filter.getObj("select_equip") var/obj/item/mecha_parts/mecha_equipment/equip = afilter.getObj("select_equip")
if(equip && equip.selectable) if(equip && equip.selectable)
src.selected = equip src.selected = equip
src.occupant_message("You switch to [equip]") src.occupant_message("You switch to [equip]")
@@ -283,7 +283,7 @@
send_byjax(src.occupant,"exosuit.browser","rspkstate",(radio.listening?"Engaged":"Disengaged")) send_byjax(src.occupant,"exosuit.browser","rspkstate",(radio.listening?"Engaged":"Disengaged"))
if(href_list["rfreq"]) if(href_list["rfreq"])
var/new_frequency = (radio.frequency + filter.getNum("rfreq")) var/new_frequency = (radio.frequency + afilter.getNum("rfreq"))
if (!radio.freerange || (radio.frequency < 1200 || radio.frequency > 1600)) if (!radio.freerange || (radio.frequency < 1200 || radio.frequency > 1600))
new_frequency = sanitize_frequency(new_frequency) new_frequency = sanitize_frequency(new_frequency)
radio.set_frequency(new_frequency) radio.set_frequency(new_frequency)

View File

@@ -149,7 +149,7 @@
output += "<b>Cargo Compartment Contents:</b><div style=\"margin-left: 15px;\">" output += "<b>Cargo Compartment Contents:</b><div style=\"margin-left: 15px;\">"
if(cargo.len) if(cargo.len)
for(var/obj/O in cargo) for(var/obj/O in cargo)
output += "<a href='?src=\ref[src];drop_from_cargo=\ref[O]'>Unload</a> : [O]<br>" output += "<a href='?src=[REF(src)];drop_from_cargo=[REF(O)]'>Unload</a> : [O]<br>"
else else
output += "Nothing" output += "Nothing"
output += "</div>" output += "</div>"

View File

@@ -288,7 +288,7 @@
var/mob/M = get_mob_by_key(carry.my_atom.fingerprintslast) var/mob/M = get_mob_by_key(carry.my_atom.fingerprintslast)
var/more = "" var/more = ""
if(M) if(M)
more = "(<A HREF='?_src_=holder;[HrefToken()];adminmoreinfo=\ref[M]'>?</a>) (<A HREF='?_src_=holder;[HrefToken()];adminplayerobservefollow=\ref[M]'>FLW</A>) " more = "(<A HREF='?_src_=holder;[HrefToken()];adminmoreinfo=[REF(M)]'>?</a>) (<A HREF='?_src_=holder;[HrefToken()];adminplayerobservefollow=[REF(M)]'>FLW</A>) "
message_admins("Smoke: ([whereLink])[contained]. Key: [carry.my_atom.fingerprintslast][more].", 0, 1) message_admins("Smoke: ([whereLink])[contained]. Key: [carry.my_atom.fingerprintslast][more].", 0, 1)
log_game("A chemical smoke reaction has taken place in ([where])[contained]. Last associated key is [carry.my_atom.fingerprintslast].") log_game("A chemical smoke reaction has taken place in ([where])[contained]. Last associated key is [carry.my_atom.fingerprintslast].")
else else

View File

@@ -198,7 +198,7 @@
S.directive = directive S.directive = directive
if(player_spiders) if(player_spiders)
S.playable_spider = TRUE S.playable_spider = TRUE
notify_ghosts("Spider [S.name] can be controlled", null, enter_link="<a href=?src=\ref[S];activate=1>(Click to play)</a>", source=S, action=NOTIFY_ATTACK) notify_ghosts("Spider [S.name] can be controlled", null, enter_link="<a href=?src=[REF(S)];activate=1>(Click to play)</a>", source=S, action=NOTIFY_ATTACK)
qdel(src) qdel(src)

View File

@@ -172,11 +172,11 @@ ARCD
if(use_one_access) if(use_one_access)
t1 += "Restriction Type: <a href='?src=\ref[src];access=one'>At least one access required</a><br>" t1 += "Restriction Type: <a href='?src=[REF(src)];access=one'>At least one access required</a><br>"
else else
t1 += "Restriction Type: <a href='?src=\ref[src];access=one'>All accesses required</a><br>" t1 += "Restriction Type: <a href='?src=[REF(src)];access=one'>All accesses required</a><br>"
t1 += "<a href='?src=\ref[src];access=all'>Remove All</a><br>" t1 += "<a href='?src=[REF(src)];access=all'>Remove All</a><br>"
var/accesses = "" var/accesses = ""
accesses += "<div align='center'><b>Access</b></div>" accesses += "<div align='center'><b>Access</b></div>"
@@ -189,15 +189,15 @@ ARCD
accesses += "<td style='width:14%' valign='top'>" accesses += "<td style='width:14%' valign='top'>"
for(var/A in get_region_accesses(i)) for(var/A in get_region_accesses(i))
if(A in conf_access) if(A in conf_access)
accesses += "<a href='?src=\ref[src];access=[A]'><font color=\"red\">[replacetext(get_access_desc(A), " ", "&nbsp")]</font></a> " accesses += "<a href='?src=[REF(src)];access=[A]'><font color=\"red\">[replacetext(get_access_desc(A), " ", "&nbsp")]</font></a> "
else else
accesses += "<a href='?src=\ref[src];access=[A]'>[replacetext(get_access_desc(A), " ", "&nbsp")]</a> " accesses += "<a href='?src=[REF(src)];access=[A]'>[replacetext(get_access_desc(A), " ", "&nbsp")]</a> "
accesses += "<br>" accesses += "<br>"
accesses += "</td>" accesses += "</td>"
accesses += "</tr></table>" accesses += "</tr></table>"
t1 += "<tt>[accesses]</tt>" t1 += "<tt>[accesses]</tt>"
t1 += text("<p><a href='?src=\ref[];close=1'>Close</a></p>\n", src) t1 += "<p><a href='?src=[REF(src)];close=1'>Close</a></p>\n"
var/datum/browser/popup = new(usr, "airlock_electronics", "Access Control", 900, 500) var/datum/browser/popup = new(usr, "airlock_electronics", "Access Control", 900, 500)
popup.set_content(t1) popup.set_content(t1)

View File

@@ -35,7 +35,7 @@ RPD
/datum/pipe_info/proc/Render(dispenser,label) /datum/pipe_info/proc/Render(dispenser,label)
/datum/pipe_info/pipe/Render(dispenser,label,dir=NORTH) /datum/pipe_info/pipe/Render(dispenser,label,dir=NORTH)
return "<li><a href='?src=\ref[dispenser];makepipe=[id];dir=[dir];type=[dirtype]'>[label]</a></li>" return "<li><a href='?src=[REF(dispenser)];makepipe=[id];dir=[dir];type=[dirtype]'>[label]</a></li>"
/datum/pipe_info/meter /datum/pipe_info/meter
categoryId = CATEGORY_ATMOS categoryId = CATEGORY_ATMOS
@@ -46,7 +46,7 @@ RPD
return return
/datum/pipe_info/meter/Render(dispenser,label) /datum/pipe_info/meter/Render(dispenser,label)
return "<li><a href='?src=\ref[dispenser];makemeter=1;type=[dirtype]'>[label]</a></li>" //hardcoding is no return "<li><a href='?src=[REF(dispenser)];makemeter=1;type=[dirtype]'>[label]</a></li>" //hardcoding is no
GLOBAL_LIST_INIT(disposalpipeID2State, list( GLOBAL_LIST_INIT(disposalpipeID2State, list(
"pipe-s", "pipe-s",
@@ -74,7 +74,7 @@ GLOBAL_LIST_INIT(disposalpipeID2State, list(
icon_state = "con[icon_state]" icon_state = "con[icon_state]"
/datum/pipe_info/disposal/Render(dispenser,label) /datum/pipe_info/disposal/Render(dispenser,label)
return "<li><a href='?src=\ref[dispenser];dmake=[id];type=[dirtype]'>[label]</a></li>" //avoid hardcoding. return "<li><a href='?src=[REF(dispenser)];dmake=[id];type=[dirtype]'>[label]</a></li>" //avoid hardcoding.
//find these defines in code\game\machinery\pipe\consruction.dm //find these defines in code\game\machinery\pipe\consruction.dm
GLOBAL_LIST_INIT(RPD_recipes, list( GLOBAL_LIST_INIT(RPD_recipes, list(
@@ -177,7 +177,7 @@ GLOBAL_LIST_INIT(RPD_recipes, list(
var/selected=" class=\"imglink\"" var/selected=" class=\"imglink\""
if(_dir == p_dir) if(_dir == p_dir)
selected=" class=\"imglink selected\"" selected=" class=\"imglink selected\""
return "<a href=\"?src=\ref[src];setdir=[_dir];flipped=[flipped]\" title=\"[title]\"[selected]\"><img src=\"[pic]\" /></a>" return "<a href=\"?src=[REF(src)];setdir=[_dir];flipped=[flipped]\" title=\"[title]\"[selected]\"><img src=\"[pic]\" /></a>"
/obj/item/pipe_dispenser/proc/show_menu(mob/user) /obj/item/pipe_dispenser/proc/show_menu(mob/user)
if(!user || !src) if(!user || !src)
@@ -186,27 +186,27 @@ GLOBAL_LIST_INIT(RPD_recipes, list(
<b>Utilities:</b> <b>Utilities:</b>
<ul>"} <ul>"}
if(p_class != EATING_MODE) if(p_class != EATING_MODE)
dat += "<li><a href='?src=\ref[src];eatpipes=1;type=-1'>Eat Pipes</a></li>" dat += "<li><a href='?src=[REF(src)];eatpipes=1;type=-1'>Eat Pipes</a></li>"
else else
dat += "<li><span class='linkOn'>Eat Pipes</span></li>" dat += "<li><span class='linkOn'>Eat Pipes</span></li>"
if(p_class != PAINT_MODE) if(p_class != PAINT_MODE)
dat += "<li><a href='?src=\ref[src];paintpipes=1;type=-1'>Paint Pipes</a></li>" dat += "<li><a href='?src=[REF(src)];paintpipes=1;type=-1'>Paint Pipes</a></li>"
else else
dat += "<li><span class='linkOn'>Paint Pipes</span></li>" dat += "<li><span class='linkOn'>Paint Pipes</span></li>"
dat += "</ul>" dat += "</ul>"
dat += "<b>Category:</b><ul>" dat += "<b>Category:</b><ul>"
if(screen == CATEGORY_ATMOS) if(screen == CATEGORY_ATMOS)
dat += "<span class='linkOn'>Atmospherics</span> <A href='?src=\ref[src];screen=[CATEGORY_DISPOSALS];dmake=0;type=0'>Disposals</A><BR>" dat += "<span class='linkOn'>Atmospherics</span> <A href='?src=[REF(src)];screen=[CATEGORY_DISPOSALS];dmake=0;type=0'>Disposals</A><BR>"
else if(screen == CATEGORY_DISPOSALS) else if(screen == CATEGORY_DISPOSALS)
dat += "<A href='?src=\ref[src];screen=[CATEGORY_ATMOS];makepipe=[/obj/machinery/atmospherics/pipe/simple];dir=1;type=0'>Atmospherics</A> <span class='linkOn'>Disposals</span><BR>" dat += "<A href='?src=[REF(src)];screen=[CATEGORY_ATMOS];makepipe=[/obj/machinery/atmospherics/pipe/simple];dir=1;type=0'>Atmospherics</A> <span class='linkOn'>Disposals</span><BR>"
var/generated_layer_list = "" var/generated_layer_list = ""
var/layers_total = PIPING_LAYER_MAX - PIPING_LAYER_MIN + 1 var/layers_total = PIPING_LAYER_MAX - PIPING_LAYER_MIN + 1
for(var/iter = PIPING_LAYER_MIN, iter <= layers_total, iter++) for(var/iter = PIPING_LAYER_MIN, iter <= layers_total, iter++)
if(iter == piping_layer) if(iter == piping_layer)
generated_layer_list += "<span class='linkOn'><A href='?src=\ref[src];setlayer=[iter]'>[iter]</A></span>" generated_layer_list += "<span class='linkOn'><A href='?src=[REF(src)];setlayer=[iter]'>[iter]</A></span>"
else else
generated_layer_list += "<A href='?src=\ref[src];setlayer=[iter]'>[iter]</A>" generated_layer_list += "<A href='?src=[REF(src)];setlayer=[iter]'>[iter]</A>"
dat += "Atmospherics Piping Layer: [generated_layer_list]<BR>" dat += "Atmospherics Piping Layer: [generated_layer_list]<BR>"
dat += "</ul>" dat += "</ul>"
@@ -254,7 +254,7 @@ GLOBAL_LIST_INIT(RPD_recipes, list(
var/selected="" var/selected=""
if(color_name==paint_color) if(color_name==paint_color)
selected = " selected" selected = " selected"
color_picker += {"<a class="color [color_name][selected]" href="?src=\ref[src];set_color=[color_name]">&bull;</a>"} color_picker += {"<a class="color [color_name][selected]" href="?src=[REF(src)];set_color=[color_name]">&bull;</a>"}
var/dirsel="<h2>Direction</h2>" var/dirsel="<h2>Direction</h2>"
switch(p_conntype) switch(p_conntype)
@@ -276,8 +276,8 @@ GLOBAL_LIST_INIT(RPD_recipes, list(
else else
dirsel+={" dirsel+={"
<p> <p>
<a href="?src=\ref[src];setdir=1; flipped=0" title="vertical">&#8597;</a> <a href="?src=[REF(src)];setdir=1; flipped=0" title="vertical">&#8597;</a>
<a href="?src=\ref[src];setdir=4; flipped=0" title="horizontal">&harr;</a> <a href="?src=[REF(src)];setdir=4; flipped=0" title="horizontal">&harr;</a>
</p> </p>
"} "}
@@ -303,14 +303,14 @@ GLOBAL_LIST_INIT(RPD_recipes, list(
else else
dirsel+={" dirsel+={"
<p> <p>
<a href="?src=\ref[src];setdir=1; flipped=0" title="vertical">&#8597;</a> <a href="?src=[REF(src)];setdir=1; flipped=0" title="vertical">&#8597;</a>
<a href="?src=\ref[src];setdir=4; flipped=0" title="horizontal">&harr;</a> <a href="?src=[REF(src)];setdir=4; flipped=0" title="horizontal">&harr;</a>
<br /> <br />
<a href="?src=\ref[src];setdir=9; flipped=0" title="West to North">&#9565;</a> <a href="?src=[REF(src)];setdir=9; flipped=0" title="West to North">&#9565;</a>
<a href="?src=\ref[src];setdir=5; flipped=0" title="North to East">&#9562;</a> <a href="?src=[REF(src)];setdir=5; flipped=0" title="North to East">&#9562;</a>
<br /> <br />
<a href="?src=\ref[src];setdir=10; flipped=0" title="South to West">&#9559;</a> <a href="?src=[REF(src)];setdir=10; flipped=0" title="South to West">&#9559;</a>
<a href="?src=\ref[src];setdir=6; flipped=0" title="East to South">&#9556;</a> <a href="?src=[REF(src)];setdir=6; flipped=0" title="East to South">&#9556;</a>
</p> </p>
"} "}
if(PIPE_TRINARY) // Manifold if(PIPE_TRINARY) // Manifold
@@ -330,11 +330,11 @@ GLOBAL_LIST_INIT(RPD_recipes, list(
else else
dirsel+={" dirsel+={"
<p> <p>
<a href="?src=\ref[src];setdir=1; flipped=0" title="West, South, East">&#9574;</a> <a href="?src=[REF(src)];setdir=1; flipped=0" title="West, South, East">&#9574;</a>
<a href="?src=\ref[src];setdir=4; flipped=0" title="North, West, South">&#9571;</a> <a href="?src=[REF(src)];setdir=4; flipped=0" title="North, West, South">&#9571;</a>
<br /> <br />
<a href="?src=\ref[src];setdir=2; flipped=0" title="East, North, West">&#9577;</a> <a href="?src=[REF(src)];setdir=2; flipped=0" title="East, North, West">&#9577;</a>
<a href="?src=\ref[src];setdir=8; flipped=0" title="South, East, North">&#9568;</a> <a href="?src=[REF(src)];setdir=8; flipped=0" title="South, East, North">&#9568;</a>
</p> </p>
"} "}
if(PIPE_TRIN_M) // Mirrored ones if(PIPE_TRIN_M) // Mirrored ones
@@ -364,17 +364,17 @@ GLOBAL_LIST_INIT(RPD_recipes, list(
else else
dirsel+={" dirsel+={"
<p> <p>
<a href="?src=\ref[src];setdir=1; flipped=0" title="West, South, East">&#9574;</a> <a href="?src=[REF(src)];setdir=1; flipped=0" title="West, South, East">&#9574;</a>
<a href="?src=\ref[src];setdir=4; flipped=0" title="North, West, South">&#9571;</a> <a href="?src=[REF(src)];setdir=4; flipped=0" title="North, West, South">&#9571;</a>
<br /> <br />
<a href="?src=\ref[src];setdir=2; flipped=0" title="East, North, West">&#9577;</a> <a href="?src=[REF(src)];setdir=2; flipped=0" title="East, North, West">&#9577;</a>
<a href="?src=\ref[src];setdir=8; flipped=0" title="South, East, North">&#9568;</a> <a href="?src=[REF(src)];setdir=8; flipped=0" title="South, East, North">&#9568;</a>
<br /> <br />
<a href="?src=\ref[src];setdir=6; flipped=1" title="West, South, East">&#9574;</a> <a href="?src=[REF(src)];setdir=6; flipped=1" title="West, South, East">&#9574;</a>
<a href="?src=\ref[src];setdir=5; flipped=1" title="North, West, South">&#9571;</a> <a href="?src=[REF(src)];setdir=5; flipped=1" title="North, West, South">&#9571;</a>
<br /> <br />
<a href="?src=\ref[src];setdir=9; flipped=1" title="East, North, West">&#9577;</a> <a href="?src=[REF(src)];setdir=9; flipped=1" title="East, North, West">&#9577;</a>
<a href="?src=\ref[src];setdir=10; flipped=1" title="South, East, North">&#9568;</a> <a href="?src=[REF(src)];setdir=10; flipped=1" title="South, East, North">&#9568;</a>
</p> </p>
"} "}
if(PIPE_UNARY) // Stuff with four directions - includes pumps etc. if(PIPE_UNARY) // Stuff with four directions - includes pumps etc.
@@ -393,10 +393,10 @@ GLOBAL_LIST_INIT(RPD_recipes, list(
else else
dirsel+={" dirsel+={"
<p> <p>
<a href="?src=\ref[src];setdir=[NORTH]; flipped=0" title="North">&uarr;</a> <a href="?src=[REF(src)];setdir=[NORTH]; flipped=0" title="North">&uarr;</a>
<a href="?src=\ref[src];setdir=[EAST]; flipped=0" title="East">&rarr;</a> <a href="?src=[REF(src)];setdir=[EAST]; flipped=0" title="East">&rarr;</a>
<a href="?src=\ref[src];setdir=[SOUTH]; flipped=0" title="South">&darr;</a> <a href="?src=[REF(src)];setdir=[SOUTH]; flipped=0" title="South">&darr;</a>
<a href="?src=\ref[src];setdir=[WEST]; flipped=0" title="West">&larr;</a> <a href="?src=[REF(src)];setdir=[WEST]; flipped=0" title="West">&larr;</a>
</p> </p>
"} "}
if(PIPE_QUAD) // Single icon_state (eg 4-way manifolds) if(PIPE_QUAD) // Single icon_state (eg 4-way manifolds)
@@ -409,7 +409,7 @@ GLOBAL_LIST_INIT(RPD_recipes, list(
else else
dirsel+={" dirsel+={"
<p> <p>
<a href="?src=\ref[src];setdir=1; flipped=0" title="Pipe">&#8597;</a> <a href="?src=[REF(src)];setdir=1; flipped=0" title="Pipe">&#8597;</a>
</p> </p>
"} "}

View File

@@ -28,7 +28,7 @@
switch(get_area_type()) switch(get_area_type())
if(AREA_SPACE) if(AREA_SPACE)
text += "<p>According to the [src.name], you are now in an unclaimed territory.</p> \ text += "<p>According to the [src.name], you are now in an unclaimed territory.</p> \
<p><a href='?src=\ref[src];create_area=1'>Mark this place as new area.</a></p>" <p><a href='?src=[REF(src)];create_area=1'>Mark this place as new area.</a></p>"
if(AREA_SPECIAL) if(AREA_SPECIAL)
text += "<p>This place is not noted on the [src.name].</p>" text += "<p>This place is not noted on the [src.name].</p>"
return text return text
@@ -69,20 +69,20 @@
var/area/A = get_area() var/area/A = get_area()
if(get_area_type() == AREA_STATION) if(get_area_type() == AREA_STATION)
. += "<p>According to \the [src], you are now in <b>\"[html_encode(A.name)]\"</b>.</p>" . += "<p>According to \the [src], you are now in <b>\"[html_encode(A.name)]\"</b>.</p>"
. += "<p>You may <a href='?src=\ref[src];edit_area=1'>make an amendment</a> to the drawing.</p>" . += "<p>You may <a href='?src=[REF(src)];edit_area=1'>make an amendment</a> to the drawing.</p>"
. += "<p><a href='?src=\ref[src];view_legend=1'>View wire colour legend</a></p>" . += "<p><a href='?src=[REF(src)];view_legend=1'>View wire colour legend</a></p>"
if(!viewing) if(!viewing)
. += "<p><a href='?src=\ref[src];view_blueprints=1'>View structural data</a></p>" . += "<p><a href='?src=[REF(src)];view_blueprints=1'>View structural data</a></p>"
else else
. += "<p><a href='?src=\ref[src];refresh=1'>Refresh structural data</a></p>" . += "<p><a href='?src=[REF(src)];refresh=1'>Refresh structural data</a></p>"
. += "<p><a href='?src=\ref[src];hide_blueprints=1'>Hide structural data</a></p>" . += "<p><a href='?src=[REF(src)];hide_blueprints=1'>Hide structural data</a></p>"
else else
if(legend == TRUE) if(legend == TRUE)
. += "<a href='?src=\ref[src];exit_legend=1'><< Back</a>" . += "<a href='?src=[REF(src)];exit_legend=1'><< Back</a>"
. += view_wire_devices(user); . += view_wire_devices(user);
else else
//legend is a wireset //legend is a wireset
. += "<a href='?src=\ref[src];view_legend=1'><< Back</a>" . += "<a href='?src=[REF(src)];view_legend=1'><< Back</a>"
. += view_wire_set(user, legend) . += view_wire_set(user, legend)
var/datum/browser/popup = new(user, "blueprints", "[src]", 700, 500) var/datum/browser/popup = new(user, "blueprints", "[src]", 700, 500)
popup.set_content(.) popup.set_content(.)
@@ -169,7 +169,7 @@
/obj/item/areaeditor/blueprints/proc/view_wire_devices(mob/user) /obj/item/areaeditor/blueprints/proc/view_wire_devices(mob/user)
var/message = "<br>You examine the wire legend.<br>" var/message = "<br>You examine the wire legend.<br>"
for(var/wireset in GLOB.wire_color_directory) for(var/wireset in GLOB.wire_color_directory)
message += "<br><a href='?src=\ref[src];view_wireset=[wireset]'>[GLOB.wire_name_directory[wireset]]</a>" message += "<br><a href='?src=[REF(src)];view_wireset=[wireset]'>[GLOB.wire_name_directory[wireset]]</a>"
message += "</p>" message += "</p>"
return message return message

View File

@@ -59,7 +59,7 @@
to_chat(user, "Your name has been sent to your employers for approval.") to_chat(user, "Your name has been sent to your employers for approval.")
// Autoapproves after a certain time // Autoapproves after a certain time
response_timer_id = addtimer(CALLBACK(src, .proc/rename_station, new_name, user.name, user.real_name, key_name(user)), approval_time, TIMER_STOPPABLE) response_timer_id = addtimer(CALLBACK(src, .proc/rename_station, new_name, user.name, user.real_name, key_name(user)), approval_time, TIMER_STOPPABLE)
to_chat(GLOB.admins, "<span class='adminnotice'><b><font color=orange>CUSTOM STATION RENAME:</font></b>[ADMIN_LOOKUPFLW(user)] proposes to rename the [name_type] to [new_name] (will autoapprove in [DisplayTimeText(approval_time)]). [ADMIN_SMITE(user)] (<A HREF='?_src_=holder;[HrefToken(TRUE)];reject_custom_name=\ref[src]'>REJECT</A>) [ADMIN_CENTCOM_REPLY(user)]</span>") to_chat(GLOB.admins, "<span class='adminnotice'><b><font color=orange>CUSTOM STATION RENAME:</font></b>[ADMIN_LOOKUPFLW(user)] proposes to rename the [name_type] to [new_name] (will autoapprove in [DisplayTimeText(approval_time)]). [ADMIN_SMITE(user)] (<A HREF='?_src_=holder;[HrefToken(TRUE)];reject_custom_name=[REF(src)]'>REJECT</A>) [ADMIN_CENTCOM_REPLY(user)]</span>")
/obj/item/station_charter/proc/reject_proposed(user) /obj/item/station_charter/proc/reject_proposed(user)
if(!user) if(!user)

View File

@@ -167,18 +167,18 @@ GLOBAL_LIST_EMPTY(PDAs)
var/dat = "<!DOCTYPE html><html><head><title>Personal Data Assistant</title><link href=\"https://fonts.googleapis.com/css?family=Orbitron|Share+Tech+Mono|VT323\" rel=\"stylesheet\"></head><body bgcolor=\"" + background_color + "\"><style>body{" + font_mode + "}ul,ol{list-style-type: none;}a, a:link, a:visited, a:active, a:hover { color: #000000;text-decoration:none; }img {border-style:none;}a img{padding-right: 9px;}</style>" var/dat = "<!DOCTYPE html><html><head><title>Personal Data Assistant</title><link href=\"https://fonts.googleapis.com/css?family=Orbitron|Share+Tech+Mono|VT323\" rel=\"stylesheet\"></head><body bgcolor=\"" + background_color + "\"><style>body{" + font_mode + "}ul,ol{list-style-type: none;}a, a:link, a:visited, a:active, a:hover { color: #000000;text-decoration:none; }img {border-style:none;}a img{padding-right: 9px;}</style>"
dat += "<a href='byond://?src=\ref[src];choice=Refresh'><img src=pda_refresh.png>Refresh</a>" dat += "<a href='byond://?src=[REF(src)];choice=Refresh'><img src=pda_refresh.png>Refresh</a>"
if ((!isnull(cartridge)) && (mode == 0)) if ((!isnull(cartridge)) && (mode == 0))
dat += " | <a href='byond://?src=\ref[src];choice=Eject'><img src=pda_eject.png>Eject [cartridge]</a>" dat += " | <a href='byond://?src=[REF(src)];choice=Eject'><img src=pda_eject.png>Eject [cartridge]</a>"
if (mode) if (mode)
dat += " | <a href='byond://?src=\ref[src];choice=Return'><img src=pda_menu.png>Return</a>" dat += " | <a href='byond://?src=[REF(src)];choice=Return'><img src=pda_menu.png>Return</a>"
if (mode == 0) if (mode == 0)
dat += "<div align=\"center\">" dat += "<div align=\"center\">"
dat += "<br><a href='byond://?src=\ref[src];choice=Toggle_Font'>Toggle Font</a>" dat += "<br><a href='byond://?src=[REF(src)];choice=Toggle_Font'>Toggle Font</a>"
dat += " | <a href='byond://?src=\ref[src];choice=Change_Color'>Change Color</a>" dat += " | <a href='byond://?src=[REF(src)];choice=Change_Color'>Change Color</a>"
dat += " | <a href='byond://?src=\ref[src];choice=Toggle_Underline'>Toggle Underline</a>" //underline button dat += " | <a href='byond://?src=[REF(src)];choice=Toggle_Underline'>Toggle Underline</a>" //underline button
dat += "</div>" dat += "</div>"
@@ -186,14 +186,14 @@ GLOBAL_LIST_EMPTY(PDAs)
if (!owner) if (!owner)
dat += "Warning: No owner information entered. Please swipe card.<br><br>" dat += "Warning: No owner information entered. Please swipe card.<br><br>"
dat += "<a href='byond://?src=\ref[src];choice=Refresh'><img src=pda_refresh.png>Retry</a>" dat += "<a href='byond://?src=[REF(src)];choice=Refresh'><img src=pda_refresh.png>Retry</a>"
else else
switch (mode) switch (mode)
if (0) if (0)
dat += "<h2>PERSONAL DATA ASSISTANT v.1.2</h2>" dat += "<h2>PERSONAL DATA ASSISTANT v.1.2</h2>"
dat += "Owner: [owner], [ownjob]<br>" dat += "Owner: [owner], [ownjob]<br>"
dat += text("ID: <a href='?src=\ref[src];choice=Authenticate'>[id ? "[id.registered_name], [id.assignment]" : "----------"]") dat += text("ID: <a href='?src=[REF(src)];choice=Authenticate'>[id ? "[id.registered_name], [id.assignment]" : "----------"]")
dat += text("<br><a href='?src=\ref[src];choice=UpdateInfo'>[id ? "Update PDA Info" : ""]</A><br><br>") dat += text("<br><a href='?src=[REF(src)];choice=UpdateInfo'>[id ? "Update PDA Info" : ""]</A><br><br>")
dat += "[worldtime2text()]<br>" //:[world.time / 100 % 6][world.time / 100 % 10]" dat += "[worldtime2text()]<br>" //:[world.time / 100 % 6][world.time / 100 % 10]"
dat += "[time2text(world.realtime, "MMM DD")] [GLOB.year_integer+540]" dat += "[time2text(world.realtime, "MMM DD")] [GLOB.year_integer+540]"
@@ -202,38 +202,38 @@ GLOBAL_LIST_EMPTY(PDAs)
dat += "<h4>General Functions</h4>" dat += "<h4>General Functions</h4>"
dat += "<ul>" dat += "<ul>"
dat += "<li><a href='byond://?src=\ref[src];choice=1'><img src=pda_notes.png>Notekeeper</a></li>" dat += "<li><a href='byond://?src=[REF(src)];choice=1'><img src=pda_notes.png>Notekeeper</a></li>"
dat += "<li><a href='byond://?src=\ref[src];choice=2'><img src=pda_mail.png>Messenger</a></li>" dat += "<li><a href='byond://?src=[REF(src)];choice=2'><img src=pda_mail.png>Messenger</a></li>"
if (cartridge) if (cartridge)
if (cartridge.access & CART_CLOWN) if (cartridge.access & CART_CLOWN)
dat += "<li><a href='byond://?src=\ref[src];choice=Honk'><img src=pda_honk.png>Honk Synthesizer</a></li>" dat += "<li><a href='byond://?src=[REF(src)];choice=Honk'><img src=pda_honk.png>Honk Synthesizer</a></li>"
dat += "<li><a href='byond://?src=\ref[src];choice=Trombone'><img src=pda_honk.png>Sad Trombone</a></li>" dat += "<li><a href='byond://?src=[REF(src)];choice=Trombone'><img src=pda_honk.png>Sad Trombone</a></li>"
if (cartridge.access & CART_MANIFEST) if (cartridge.access & CART_MANIFEST)
dat += "<li><a href='byond://?src=\ref[src];choice=41'><img src=pda_notes.png>View Crew Manifest</a></li>" dat += "<li><a href='byond://?src=[REF(src)];choice=41'><img src=pda_notes.png>View Crew Manifest</a></li>"
if(cartridge.access & CART_STATUS_DISPLAY) if(cartridge.access & CART_STATUS_DISPLAY)
dat += "<li><a href='byond://?src=\ref[src];choice=42'><img src=pda_status.png>Set Status Display</a></li>" dat += "<li><a href='byond://?src=[REF(src)];choice=42'><img src=pda_status.png>Set Status Display</a></li>"
dat += "</ul>" dat += "</ul>"
if (cartridge.access & CART_ENGINE) if (cartridge.access & CART_ENGINE)
dat += "<h4>Engineering Functions</h4>" dat += "<h4>Engineering Functions</h4>"
dat += "<ul>" dat += "<ul>"
dat += "<li><a href='byond://?src=\ref[src];choice=43'><img src=pda_power.png>Power Monitor</a></li>" dat += "<li><a href='byond://?src=[REF(src)];choice=43'><img src=pda_power.png>Power Monitor</a></li>"
dat += "</ul>" dat += "</ul>"
if (cartridge.access & CART_MEDICAL) if (cartridge.access & CART_MEDICAL)
dat += "<h4>Medical Functions</h4>" dat += "<h4>Medical Functions</h4>"
dat += "<ul>" dat += "<ul>"
dat += "<li><a href='byond://?src=\ref[src];choice=44'><img src=pda_medical.png>Medical Records</a></li>" dat += "<li><a href='byond://?src=[REF(src)];choice=44'><img src=pda_medical.png>Medical Records</a></li>"
dat += "<li><a href='byond://?src=\ref[src];choice=Medical Scan'><img src=pda_scanner.png>[scanmode == 1 ? "Disable" : "Enable"] Medical Scanner</a></li>" dat += "<li><a href='byond://?src=[REF(src)];choice=Medical Scan'><img src=pda_scanner.png>[scanmode == 1 ? "Disable" : "Enable"] Medical Scanner</a></li>"
dat += "</ul>" dat += "</ul>"
if (cartridge.access & CART_SECURITY) if (cartridge.access & CART_SECURITY)
dat += "<h4>Security Functions</h4>" dat += "<h4>Security Functions</h4>"
dat += "<ul>" dat += "<ul>"
dat += "<li><a href='byond://?src=\ref[src];choice=45'><img src=pda_cuffs.png>Security Records</A></li>" dat += "<li><a href='byond://?src=[REF(src)];choice=45'><img src=pda_cuffs.png>Security Records</A></li>"
dat += "</ul>" dat += "</ul>"
if(cartridge.access & CART_QUARTERMASTER) if(cartridge.access & CART_QUARTERMASTER)
dat += "<h4>Quartermaster Functions:</h4>" dat += "<h4>Quartermaster Functions:</h4>"
dat += "<ul>" dat += "<ul>"
dat += "<li><a href='byond://?src=\ref[src];choice=47'><img src=pda_crate.png>Supply Records</A></li>" dat += "<li><a href='byond://?src=[REF(src)];choice=47'><img src=pda_crate.png>Supply Records</A></li>"
dat += "</ul>" dat += "</ul>"
dat += "</ul>" dat += "</ul>"
@@ -241,47 +241,47 @@ GLOBAL_LIST_EMPTY(PDAs)
dat += "<ul>" dat += "<ul>"
if (cartridge) if (cartridge)
if(cartridge.bot_access_flags) if(cartridge.bot_access_flags)
dat += "<li><a href='byond://?src=\ref[src];choice=54'><img src=pda_medbot.png>Bots Access</a></li>" dat += "<li><a href='byond://?src=[REF(src)];choice=54'><img src=pda_medbot.png>Bots Access</a></li>"
if (cartridge.access & CART_JANITOR) if (cartridge.access & CART_JANITOR)
dat += "<li><a href='byond://?src=\ref[src];choice=49'><img src=pda_bucket.png>Custodial Locator</a></li>" dat += "<li><a href='byond://?src=[REF(src)];choice=49'><img src=pda_bucket.png>Custodial Locator</a></li>"
if (istype(cartridge.radio, /obj/item/radio/integrated/signal)) if (istype(cartridge.radio, /obj/item/radio/integrated/signal))
dat += "<li><a href='byond://?src=\ref[src];choice=40'><img src=pda_signaler.png>Signaler System</a></li>" dat += "<li><a href='byond://?src=[REF(src)];choice=40'><img src=pda_signaler.png>Signaler System</a></li>"
if (cartridge.access & CART_NEWSCASTER) if (cartridge.access & CART_NEWSCASTER)
dat += "<li><a href='byond://?src=\ref[src];choice=53'><img src=pda_notes.png>Newscaster Access </a></li>" dat += "<li><a href='byond://?src=[REF(src)];choice=53'><img src=pda_notes.png>Newscaster Access </a></li>"
if (cartridge.access & CART_REAGENT_SCANNER) if (cartridge.access & CART_REAGENT_SCANNER)
dat += "<li><a href='byond://?src=\ref[src];choice=Reagent Scan'><img src=pda_reagent.png>[scanmode == 3 ? "Disable" : "Enable"] Reagent Scanner</a></li>" dat += "<li><a href='byond://?src=[REF(src)];choice=Reagent Scan'><img src=pda_reagent.png>[scanmode == 3 ? "Disable" : "Enable"] Reagent Scanner</a></li>"
if (cartridge.access & CART_ENGINE) if (cartridge.access & CART_ENGINE)
dat += "<li><a href='byond://?src=\ref[src];choice=Halogen Counter'><img src=pda_reagent.png>[scanmode == 4 ? "Disable" : "Enable"] Halogen Counter</a></li>" dat += "<li><a href='byond://?src=[REF(src)];choice=Halogen Counter'><img src=pda_reagent.png>[scanmode == 4 ? "Disable" : "Enable"] Halogen Counter</a></li>"
if (cartridge.access & CART_ATMOS) if (cartridge.access & CART_ATMOS)
dat += "<li><a href='byond://?src=\ref[src];choice=Gas Scan'><img src=pda_reagent.png>[scanmode == 5 ? "Disable" : "Enable"] Gas Scanner</a></li>" dat += "<li><a href='byond://?src=[REF(src)];choice=Gas Scan'><img src=pda_reagent.png>[scanmode == 5 ? "Disable" : "Enable"] Gas Scanner</a></li>"
if (cartridge.access & CART_REMOTE_DOOR) if (cartridge.access & CART_REMOTE_DOOR)
dat += "<li><a href='byond://?src=\ref[src];choice=Toggle Door'><img src=pda_rdoor.png>Toggle Remote Door</a></li>" dat += "<li><a href='byond://?src=[REF(src)];choice=Toggle Door'><img src=pda_rdoor.png>Toggle Remote Door</a></li>"
if (cartridge.access & CART_DRONEPHONE) if (cartridge.access & CART_DRONEPHONE)
dat += "<li><a href='byond://?src=\ref[src];choice=Drone Phone'><img src=pda_dronephone.png>Drone Phone</a></li>" dat += "<li><a href='byond://?src=[REF(src)];choice=Drone Phone'><img src=pda_dronephone.png>Drone Phone</a></li>"
dat += "<li><a href='byond://?src=\ref[src];choice=3'><img src=pda_atmos.png>Atmospheric Scan</a></li>" dat += "<li><a href='byond://?src=[REF(src)];choice=3'><img src=pda_atmos.png>Atmospheric Scan</a></li>"
dat += "<li><a href='byond://?src=\ref[src];choice=Light'><img src=pda_flashlight.png>[fon ? "Disable" : "Enable"] Flashlight</a></li>" dat += "<li><a href='byond://?src=[REF(src)];choice=Light'><img src=pda_flashlight.png>[fon ? "Disable" : "Enable"] Flashlight</a></li>"
if (pai) if (pai)
if(pai.loc != src) if(pai.loc != src)
pai = null pai = null
update_icon() update_icon()
else else
dat += "<li><a href='byond://?src=\ref[src];choice=pai;option=1'>pAI Device Configuration</a></li>" dat += "<li><a href='byond://?src=[REF(src)];choice=pai;option=1'>pAI Device Configuration</a></li>"
dat += "<li><a href='byond://?src=\ref[src];choice=pai;option=2'>Eject pAI Device</a></li>" dat += "<li><a href='byond://?src=[REF(src)];choice=pai;option=2'>Eject pAI Device</a></li>"
dat += "</ul>" dat += "</ul>"
if (1) if (1)
dat += "<h4><img src=pda_notes.png> Notekeeper V2.2</h4>" dat += "<h4><img src=pda_notes.png> Notekeeper V2.2</h4>"
dat += "<a href='byond://?src=\ref[src];choice=Edit'>Edit</a><br>" dat += "<a href='byond://?src=[REF(src)];choice=Edit'>Edit</a><br>"
if(notescanned) if(notescanned)
dat += "(This is a scanned image, editing it may cause some text formatting to change.)<br>" dat += "(This is a scanned image, editing it may cause some text formatting to change.)<br>"
dat += "<HR><font face=\"[PEN_FONT]\">[(!notehtml ? note : notehtml)]</font>" dat += "<HR><font face=\"[PEN_FONT]\">[(!notehtml ? note : notehtml)]</font>"
if (2) if (2)
dat += "<h4><img src=pda_mail.png> SpaceMessenger V3.9.6</h4>" dat += "<h4><img src=pda_mail.png> SpaceMessenger V3.9.6</h4>"
dat += "<a href='byond://?src=\ref[src];choice=Toggle Ringer'><img src=pda_bell.png>Ringer: [silent == 1 ? "Off" : "On"]</a> | " dat += "<a href='byond://?src=[REF(src)];choice=Toggle Ringer'><img src=pda_bell.png>Ringer: [silent == 1 ? "Off" : "On"]</a> | "
dat += "<a href='byond://?src=\ref[src];choice=Toggle Messenger'><img src=pda_mail.png>Send / Receive: [toff == 1 ? "Off" : "On"]</a> | " dat += "<a href='byond://?src=[REF(src)];choice=Toggle Messenger'><img src=pda_mail.png>Send / Receive: [toff == 1 ? "Off" : "On"]</a> | "
dat += "<a href='byond://?src=\ref[src];choice=Ringtone'><img src=pda_bell.png>Set Ringtone</a> | " dat += "<a href='byond://?src=[REF(src)];choice=Ringtone'><img src=pda_bell.png>Set Ringtone</a> | "
dat += "<a href='byond://?src=\ref[src];choice=21'><img src=pda_mail.png>Messages</a><br>" dat += "<a href='byond://?src=[REF(src)];choice=21'><img src=pda_mail.png>Messages</a><br>"
if(cartridge) if(cartridge)
dat += cartridge.message_header() dat += cartridge.message_header()
@@ -295,7 +295,7 @@ GLOBAL_LIST_EMPTY(PDAs)
for (var/obj/item/device/pda/P in sortNames(get_viewable_pdas())) for (var/obj/item/device/pda/P in sortNames(get_viewable_pdas()))
if (P == src) if (P == src)
continue continue
dat += "<li><a href='byond://?src=\ref[src];choice=Message;target=\ref[P]'>[P]</a>" dat += "<li><a href='byond://?src=[REF(src)];choice=Message;target=[REF(P)]'>[P]</a>"
if(cartridge) if(cartridge)
dat += cartridge.message_special(P) dat += cartridge.message_special(P)
dat += "</li>" dat += "</li>"
@@ -304,11 +304,11 @@ GLOBAL_LIST_EMPTY(PDAs)
if (count == 0) if (count == 0)
dat += "None detected.<br>" dat += "None detected.<br>"
else if(cartridge && cartridge.spam_enabled) else if(cartridge && cartridge.spam_enabled)
dat += "<a href='byond://?src=\ref[src];choice=MessageAll'>Send To All</a>" dat += "<a href='byond://?src=[REF(src)];choice=MessageAll'>Send To All</a>"
if(21) if(21)
dat += "<h4><img src=pda_mail.png> SpaceMessenger V3.9.6</h4>" dat += "<h4><img src=pda_mail.png> SpaceMessenger V3.9.6</h4>"
dat += "<a href='byond://?src=\ref[src];choice=Clear'><img src=pda_blank.png>Clear Messages</a>" dat += "<a href='byond://?src=[REF(src)];choice=Clear'><img src=pda_blank.png>Clear Messages</a>"
dat += "<h4><img src=pda_mail.png> Messages</h4>" dat += "<h4><img src=pda_mail.png> Messages</h4>"
@@ -633,7 +633,7 @@ GLOBAL_LIST_EMPTY(PDAs)
tnote += "<i><b>&rarr; To [multiple ? "Everyone" : msg.recipient]:</b></i><br>[msg.message][msg.get_photo_ref()]<br>" tnote += "<i><b>&rarr; To [multiple ? "Everyone" : msg.recipient]:</b></i><br>[msg.message][msg.get_photo_ref()]<br>"
/obj/item/device/pda/proc/show_recieved_message(datum/data_pda_msg/msg,obj/item/device/pda/source) /obj/item/device/pda/proc/show_recieved_message(datum/data_pda_msg/msg,obj/item/device/pda/source)
tnote += "<i><b>&larr; From <a href='byond://?src=\ref[src];choice=Message;target=\ref[source]'>[source.owner]</a> ([source.ownjob]):</b></i><br>[msg.message][msg.get_photo_ref()]<br>" tnote += "<i><b>&larr; From <a href='byond://?src=[REF(src)];choice=Message;target=[REF(source)]'>[source.owner]</a> ([source.ownjob]):</b></i><br>[msg.message][msg.get_photo_ref()]<br>"
if (!silent) if (!silent)
playsound(loc, 'sound/machines/twobeep.ogg', 50, 1) playsound(loc, 'sound/machines/twobeep.ogg', 50, 1)
@@ -651,10 +651,10 @@ GLOBAL_LIST_EMPTY(PDAs)
var/hrefstart var/hrefstart
var/hrefend var/hrefend
if (isAI(L)) if (isAI(L))
hrefstart = "<a href='?src=\ref[L];track=[html_encode(source.owner)]'>" hrefstart = "<a href='?src=[REF(L)];track=[html_encode(source.owner)]'>"
hrefend = "</a>" hrefend = "</a>"
to_chat(L, "[icon2html(src)] <b>Message from [hrefstart][source.owner] ([source.ownjob])[hrefend], </b>\"[msg.message]\"[msg.get_photo_ref()] (<a href='byond://?src=\ref[src];choice=Message;skiprefresh=1;target=\ref[source]'>Reply</a>)") to_chat(L, "[icon2html(src)] <b>Message from [hrefstart][source.owner] ([source.ownjob])[hrefend], </b>\"[msg.message]\"[msg.get_photo_ref()] (<a href='byond://?src=[REF(src)];choice=Message;skiprefresh=1;target=[REF(source)]'>Reply</a>)")
update_icon() update_icon()
add_overlay(icon_alert) add_overlay(icon_alert)

View File

@@ -229,20 +229,20 @@
menu = "<h4><img src=pda_signaler.png> Remote Signaling System</h4>" menu = "<h4><img src=pda_signaler.png> Remote Signaling System</h4>"
menu += {" menu += {"
<a href='byond://?src=\ref[src];choice=Send Signal'>Send Signal</A><BR> <a href='byond://?src=[REF(src)];choice=Send Signal'>Send Signal</A><BR>
Frequency: Frequency:
<a href='byond://?src=\ref[src];choice=Signal Frequency;sfreq=-10'>-</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> <a href='byond://?src=[REF(src)];choice=Signal Frequency;sfreq=-2'>-</a>
[format_frequency(S.frequency)] [format_frequency(S.frequency)]
<a href='byond://?src=\ref[src];choice=Signal Frequency;sfreq=2'>+</a> <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> <a href='byond://?src=[REF(src)];choice=Signal Frequency;sfreq=10'>+</a><br>
<br> <br>
Code: Code:
<a href='byond://?src=\ref[src];choice=Signal Code;scode=-5'>-</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> <a href='byond://?src=[REF(src)];choice=Signal Code;scode=-1'>-</a>
[S.code] [S.code]
<a href='byond://?src=\ref[src];choice=Signal Code;scode=1'>+</a> <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>"} <a href='byond://?src=[REF(src)];choice=Signal Code;scode=5'>+</a><br>"}
if (41) //crew manifest if (41) //crew manifest
menu = "<h4><img src=pda_notes.png> Crew Manifest</h4>" menu = "<h4><img src=pda_notes.png> Crew Manifest</h4>"
@@ -256,15 +256,15 @@ Code:
if (42) //status displays if (42) //status displays
menu = "<h4><img src=pda_status.png> Station Status Display Interlink</h4>" menu = "<h4><img src=pda_status.png> Station Status Display Interlink</h4>"
menu += "\[ <A HREF='?src=\ref[src];choice=Status;statdisp=blank'>Clear</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=shuttle'>Shuttle ETA</A> \]<BR>"
menu += "\[ <A HREF='?src=\ref[src];choice=Status;statdisp=message'>Message</A> \]" 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 += "<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 += "<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 += "\[ 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=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=lockdown'>Lockdown</A> |"
menu += " <A HREF='?src=\ref[src];choice=Status;statdisp=alert;alert=biohazard'>Biohazard</A> \]<BR>" menu += " <A HREF='?src=[REF(src)];choice=Status;statdisp=alert;alert=biohazard'>Biohazard</A> \]<BR>"
if (43) if (43)
menu = "<h4><img src=pda_power.png> Power Monitors - Please select one</h4><BR>" menu = "<h4><img src=pda_power.png> Power Monitors - Please select one</h4><BR>"
@@ -288,7 +288,7 @@ Code:
var/count = 0 var/count = 0
for(var/obj/machinery/computer/monitor/pMon in powermonitors) for(var/obj/machinery/computer/monitor/pMon in powermonitors)
count++ count++
menu += "<a href='byond://?src=\ref[src];choice=Power Select;target=[count]'>[pMon] </a><BR>" menu += "<a href='byond://?src=[REF(src)];choice=Power Select;target=[count]'>[pMon] </a><BR>"
menu += "</FONT>" menu += "</FONT>"
@@ -323,7 +323,7 @@ Code:
menu = "<h4><img src=pda_medical.png> Medical Record List</h4>" menu = "<h4><img src=pda_medical.png> Medical Record List</h4>"
if(GLOB.data_core.general) if(GLOB.data_core.general)
for(var/datum/data/record/R in sortRecord(GLOB.data_core.general)) for(var/datum/data/record/R in sortRecord(GLOB.data_core.general))
menu += "<a href='byond://?src=\ref[src];choice=Medical Records;target=[R.fields["id"]]'>[R.fields["id"]]: [R.fields["name"]]<br>" menu += "<a href='byond://?src=[REF(src)];choice=Medical Records;target=[R.fields["id"]]'>[R.fields["id"]]: [R.fields["name"]]<br>"
menu += "<br>" menu += "<br>"
if(441) if(441)
menu = "<h4><img src=pda_medical.png> Medical Record</h4>" menu = "<h4><img src=pda_medical.png> Medical Record</h4>"
@@ -366,7 +366,7 @@ Code:
menu = "<h4><img src=pda_cuffs.png> Security Record List</h4>" menu = "<h4><img src=pda_cuffs.png> Security Record List</h4>"
if(GLOB.data_core.general) if(GLOB.data_core.general)
for (var/datum/data/record/R in sortRecord(GLOB.data_core.general)) for (var/datum/data/record/R in sortRecord(GLOB.data_core.general))
menu += "<a href='byond://?src=\ref[src];choice=Security Records;target=[R.fields["id"]]'>[R.fields["id"]]: [R.fields["name"]]<br>" menu += "<a href='byond://?src=[REF(src)];choice=Security Records;target=[R.fields["id"]]'>[R.fields["id"]]: [R.fields["name"]]<br>"
menu += "<br>" menu += "<br>"
if(451) if(451)
@@ -521,11 +521,11 @@ Code:
else else
menu += "ERROR: Unable to determine current location." menu += "ERROR: Unable to determine current location."
menu += "<br><br><A href='byond://?src=\ref[src];choice=49'>Refresh GPS Locator</a>" menu += "<br><br><A href='byond://?src=[REF(src)];choice=49'>Refresh GPS Locator</a>"
if (53) // Newscaster if (53) // Newscaster
menu = "<h4><img src=pda_notes.png> Newscaster Access</h4>" menu = "<h4><img src=pda_notes.png> Newscaster Access</h4>"
menu += "<br> Current Newsfeed: <A href='byond://?src=\ref[src];choice=Newscaster Switch Channel'>[current_channel ? current_channel : "None"]</a> <br>" menu += "<br> Current Newsfeed: <A href='byond://?src=[REF(src)];choice=Newscaster Switch Channel'>[current_channel ? current_channel : "None"]</a> <br>"
var/datum/newscaster/feed_channel/current var/datum/newscaster/feed_channel/current
for(var/datum/newscaster/feed_channel/chan in GLOB.news_network.network_channels) for(var/datum/newscaster/feed_channel/chan in GLOB.news_network.network_channels)
if (chan.channel_name == current_channel) if (chan.channel_name == current_channel)
@@ -543,7 +543,7 @@ Code:
i++ i++
for(var/datum/newscaster/feed_comment/comment in msg.comments) for(var/datum/newscaster/feed_comment/comment in msg.comments)
menu +="<font size=1><small>[comment.body]</font><br><font size=1><small><small><small>[comment.author] [comment.time_stamp]</small></small></small></small></font><br>" menu +="<font size=1><small>[comment.body]</font><br><font size=1><small><small><small>[comment.author] [comment.time_stamp]</small></small></small></small></font><br>"
menu += "<br> <A href='byond://?src=\ref[src];choice=Newscaster Message'>Post Message</a>" menu += "<br> <A href='byond://?src=[REF(src)];choice=Newscaster Message'>Post Message</a>"
if (54) // Beepsky, Medibot, Floorbot, and Cleanbot access if (54) // Beepsky, Medibot, Floorbot, and Cleanbot access
menu = "<h4><img src=pda_medbot.png> Bots Interlink</h4>" menu = "<h4><img src=pda_medbot.png> Bots Interlink</h4>"
@@ -673,7 +673,7 @@ Code:
// menu = "Interlink Error - Please reinsert cartridge." // menu = "Interlink Error - Please reinsert cartridge."
// return // return
if(active_bot) if(active_bot)
menu += "<B>[active_bot]</B><BR> Status: (<A href='byond://?src=\ref[src];op=control;bot=\ref[active_bot]'><img src=pda_refresh.png><i>refresh</i></A>)<BR>" menu += "<B>[active_bot]</B><BR> Status: (<A href='byond://?src=[REF(src)];op=control;bot=[REF(active_bot)]'><img src=pda_refresh.png><i>refresh</i></A>)<BR>"
menu += "Model: [active_bot.model]<BR>" menu += "Model: [active_bot.model]<BR>"
menu += "Location: [get_area(active_bot)]<BR>" menu += "Location: [get_area(active_bot)]<BR>"
menu += "Mode: [active_bot.get_mode()]" menu += "Mode: [active_bot.get_mode()]"
@@ -682,7 +682,7 @@ Code:
if(active_bot.paicard && active_bot.paicard.pai) if(active_bot.paicard && active_bot.paicard.pai)
menu += "[active_bot.paicard.pai.name]" menu += "[active_bot.paicard.pai.name]"
if(active_bot.bot_core.allowed(usr)) if(active_bot.bot_core.allowed(usr))
menu += " (<A href='byond://?src=\ref[src];op=ejectpai'><i>eject</i></A>)" menu += " (<A href='byond://?src=[REF(src)];op=ejectpai'><i>eject</i></A>)"
else else
menu += "<i>none</i>" menu += "<i>none</i>"
@@ -690,35 +690,35 @@ Code:
if(active_bot.bot_type == MULE_BOT) if(active_bot.bot_type == MULE_BOT)
var/mob/living/simple_animal/bot/mulebot/MULE = active_bot var/mob/living/simple_animal/bot/mulebot/MULE = active_bot
var/atom/Load = MULE.load var/atom/Load = MULE.load
menu += "<BR>Current Load: [ !Load ? "<i>none</i>" : "[Load.name] (<A href='byond://?src=\ref[src];mule=unload'><i>unload</i></A>)" ]<BR>" menu += "<BR>Current Load: [ !Load ? "<i>none</i>" : "[Load.name] (<A href='byond://?src=[REF(src)];mule=unload'><i>unload</i></A>)" ]<BR>"
menu += "Destination: [MULE.destination ? MULE.destination : "<i>None</i>"] (<A href='byond://?src=\ref[src];mule=destination'><i>set</i></A>)<BR>" menu += "Destination: [MULE.destination ? MULE.destination : "<i>None</i>"] (<A href='byond://?src=[REF(src)];mule=destination'><i>set</i></A>)<BR>"
menu += "Set ID: [MULE.suffix] <A href='byond://?src=\ref[src];mule=setid'><i> Modify</i></A><BR>" menu += "Set ID: [MULE.suffix] <A href='byond://?src=[REF(src)];mule=setid'><i> Modify</i></A><BR>"
menu += "Power: [MULE.cell ? MULE.cell.percent() : 0]%<BR>" menu += "Power: [MULE.cell ? MULE.cell.percent() : 0]%<BR>"
menu += "Home: [!MULE.home_destination ? "<i>none</i>" : MULE.home_destination ]<BR>" menu += "Home: [!MULE.home_destination ? "<i>none</i>" : MULE.home_destination ]<BR>"
menu += "Delivery Reporting: <A href='byond://?src=\ref[src];mule=report'>[MULE.report_delivery ? "(<B>On</B>)": "(<B>Off</B>)"]</A><BR>" menu += "Delivery Reporting: <A href='byond://?src=[REF(src)];mule=report'>[MULE.report_delivery ? "(<B>On</B>)": "(<B>Off</B>)"]</A><BR>"
menu += "Auto Return Home: <A href='byond://?src=\ref[src];mule=autoret'>[MULE.auto_return ? "(<B>On</B>)": "(<B>Off</B>)"]</A><BR>" menu += "Auto Return Home: <A href='byond://?src=[REF(src)];mule=autoret'>[MULE.auto_return ? "(<B>On</B>)": "(<B>Off</B>)"]</A><BR>"
menu += "Auto Pickup Crate: <A href='byond://?src=\ref[src];mule=autopick'>[MULE.auto_pickup ? "(<B>On</B>)": "(<B>Off</B>)"]</A><BR><BR>" //Hue. menu += "Auto Pickup Crate: <A href='byond://?src=[REF(src)];mule=autopick'>[MULE.auto_pickup ? "(<B>On</B>)": "(<B>Off</B>)"]</A><BR><BR>" //Hue.
menu += "\[<A href='byond://?src=\ref[src];mule=stop'>Stop</A>\] " menu += "\[<A href='byond://?src=[REF(src)];mule=stop'>Stop</A>\] "
menu += "\[<A href='byond://?src=\ref[src];mule=go'>Proceed</A>\] " menu += "\[<A href='byond://?src=[REF(src)];mule=go'>Proceed</A>\] "
menu += "\[<A href='byond://?src=\ref[src];mule=home'>Return Home</A>\]<BR>" menu += "\[<A href='byond://?src=[REF(src)];mule=home'>Return Home</A>\]<BR>"
else else
menu += "<BR>\[<A href='byond://?src=\ref[src];op=patroloff'>Stop Patrol</A>\] " //patrolon menu += "<BR>\[<A href='byond://?src=[REF(src)];op=patroloff'>Stop Patrol</A>\] " //patrolon
menu += "\[<A href='byond://?src=\ref[src];op=patrolon'>Start Patrol</A>\] " //patroloff menu += "\[<A href='byond://?src=[REF(src)];op=patrolon'>Start Patrol</A>\] " //patroloff
menu += "\[<A href='byond://?src=\ref[src];op=summon'>Summon Bot</A>\]<BR>" //summon menu += "\[<A href='byond://?src=[REF(src)];op=summon'>Summon Bot</A>\]<BR>" //summon
menu += "Keep an ID inserted to upload access codes upon summoning." menu += "Keep an ID inserted to upload access codes upon summoning."
menu += "<HR><A href='byond://?src=\ref[src];op=botlist'><img src=pda_back.png>Return to bot list</A>" menu += "<HR><A href='byond://?src=[REF(src)];op=botlist'><img src=pda_back.png>Return to bot list</A>"
else else
menu += "<BR><A href='byond://?src=\ref[src];op=botlist'><img src=pda_refresh.png>Scan for active bots</A><BR><BR>" menu += "<BR><A href='byond://?src=[REF(src)];op=botlist'><img src=pda_refresh.png>Scan for active bots</A><BR><BR>"
var/turf/current_turf = get_turf(src) var/turf/current_turf = get_turf(src)
var/zlevel = current_turf.z var/zlevel = current_turf.z
var/botcount = 0 var/botcount = 0
for(Bot in GLOB.living_mob_list) //Git da botz for(Bot in GLOB.living_mob_list) //Git da botz
if(!Bot.on || Bot.z != zlevel || Bot.remote_disabled || !(bot_access_flags & Bot.bot_type)) //Only non-emagged bots on the same Z-level are detected! if(!Bot.on || Bot.z != zlevel || Bot.remote_disabled || !(bot_access_flags & Bot.bot_type)) //Only non-emagged bots on the same Z-level are detected!
continue //Also, the PDA must have access to the bot type. continue //Also, the PDA must have access to the bot type.
menu += "<A href='byond://?src=\ref[src];op=control;bot=\ref[Bot]'><b>[Bot.name]</b> ([Bot.get_mode()])<BR>" menu += "<A href='byond://?src=[REF(src)];op=control;bot=[REF(Bot)]'><b>[Bot.name]</b> ([Bot.get_mode()])<BR>"
botcount++ botcount++
if(!botcount) //No bots at all? Lame. if(!botcount) //No bots at all? Lame.
menu += "No bots found.<BR>" menu += "No bots found.<BR>"

View File

@@ -11,7 +11,7 @@
/obj/item/cartridge/virus/message_special(obj/item/device/pda/target) /obj/item/cartridge/virus/message_special(obj/item/device/pda/target)
if (!istype(loc, /obj/item/device/pda)) if (!istype(loc, /obj/item/device/pda))
return "" //Sanity check, this shouldn't be possible. return "" //Sanity check, this shouldn't be possible.
return " (<a href='byond://?src=\ref[loc];choice=cart;special=virus;target=\ref[target]'>*Send Virus*</a>)" return " (<a href='byond://?src=[REF(loc)];choice=cart;special=virus;target=[REF(target)]'>*Send Virus*</a>)"
/obj/item/cartridge/virus/special(mob/living/user, list/params) /obj/item/cartridge/virus/special(mob/living/user, list/params)
var/obj/item/device/pda/P = locate(params["target"])//Leaving it alone in case it may do something useful, I guess. var/obj/item/device/pda/P = locate(params["target"])//Leaving it alone in case it may do something useful, I guess.

View File

@@ -1,3 +1,4 @@
<<<<<<< HEAD
#define BUGMODE_LIST 0 #define BUGMODE_LIST 0
#define BUGMODE_MONITOR 1 #define BUGMODE_MONITOR 1
@@ -295,3 +296,302 @@
#undef BUGMODE_LIST #undef BUGMODE_LIST
#undef BUGMODE_MONITOR #undef BUGMODE_MONITOR
#undef BUGMODE_TRACK #undef BUGMODE_TRACK
=======
#define BUGMODE_LIST 0
#define BUGMODE_MONITOR 1
#define BUGMODE_TRACK 2
/obj/item/device/camera_bug
name = "camera bug"
desc = "For illicit snooping through the camera network."
icon = 'icons/obj/device.dmi'
icon_state = "camera_bug"
w_class = WEIGHT_CLASS_TINY
item_state = "camera_bug"
throw_speed = 4
throw_range = 20
origin_tech = "syndicate=1;engineering=3"
flags_1 = NOBLUDGEON_1
var/obj/machinery/camera/current = null
var/last_net_update = 0
var/list/bugged_cameras = list()
var/track_mode = BUGMODE_LIST
var/last_tracked = 0
var/refresh_interval = 50
var/tracked_name = null
var/atom/tracking = null
var/last_found = null
var/last_seen = null
/obj/item/device/camera_bug/New()
..()
START_PROCESSING(SSobj, src)
/obj/item/device/camera_bug/Destroy()
get_cameras()
for(var/cam_tag in bugged_cameras)
var/obj/machinery/camera/camera = bugged_cameras[cam_tag]
if(camera.bug == src)
camera.bug = null
bugged_cameras = list()
if(tracking)
tracking = null
return ..()
/obj/item/device/camera_bug/interact(mob/user = usr)
var/datum/browser/popup = new(user, "camerabug","Camera Bug",nref=src)
popup.set_content(menu(get_cameras()))
popup.open()
/obj/item/device/camera_bug/attack_self(mob/user)
user.set_machine(src)
interact(user)
/obj/item/device/camera_bug/check_eye(mob/user)
if ( loc != user || user.incapacitated() || user.eye_blind || !current )
user.unset_machine()
return 0
var/turf/T = get_turf(user.loc)
if(T.z != current.z || !current.can_use())
to_chat(user, "<span class='danger'>[src] has lost the signal.</span>")
current = null
user.unset_machine()
return 0
return 1
/obj/item/device/camera_bug/on_unset_machine(mob/user)
user.reset_perspective(null)
/obj/item/device/camera_bug/proc/get_cameras()
if( world.time > (last_net_update + 100))
bugged_cameras = list()
for(var/obj/machinery/camera/camera in GLOB.cameranet.cameras)
if(camera.stat || !camera.can_use())
continue
if(length(list("SS13","MINE")&camera.network))
bugged_cameras[camera.c_tag] = camera
sortList(bugged_cameras)
return bugged_cameras
/obj/item/device/camera_bug/proc/menu(list/cameras)
if(!cameras || !cameras.len)
return "No bugged cameras found."
var/html
switch(track_mode)
if(BUGMODE_LIST)
html = "<h3>Select a camera:</h3> <a href='?src=[REF(src)];view'>\[Cancel camera view\]</a><hr><table>"
for(var/entry in cameras)
var/obj/machinery/camera/C = cameras[entry]
var/functions = ""
if(C.bug == src)
functions = " - <a href='?src=[REF(src)];monitor=[REF(C)]'>\[Monitor\]</a> <a href='?src=[REF(src)];emp=[REF(C)]'>\[Disable\]</a>"
else
functions = " - <a href='?src=[REF(src)];monitor=[REF(C)]'>\[Monitor\]</a>"
html += "<tr><td><a href='?src=[REF(src)];view=[REF(C)]'>[entry]</a></td><td>[functions]</td></tr>"
if(BUGMODE_MONITOR)
if(current)
html = "Analyzing Camera '[current.c_tag]' <a href='?[REF(src)];mode=0'>\[Select Camera\]</a><br>"
html += camera_report()
else
track_mode = BUGMODE_LIST
return .(cameras)
if(BUGMODE_TRACK)
if(tracking)
html = "Tracking '[tracked_name]' <a href='?[REF(src)];mode=0'>\[Cancel Tracking\]</a> <a href='?src=[REF(src)];view'>\[Cancel camera view\]</a><br>"
if(last_found)
var/time_diff = round((world.time - last_seen) / 150)
var/obj/machinery/camera/C = bugged_cameras[last_found]
var/outstring
if(C)
outstring = "<a href='?[REF(src)];view=[REF(C)]'>[last_found]</a>"
else
outstring = last_found
if(!time_diff)
html += "Last seen near [outstring] (now)<br>"
else
// 15 second intervals ~ 1/4 minute
var/m = round(time_diff/4)
var/s = (time_diff - 4*m) * 15
if(!s)
s = "00"
html += "Last seen near [outstring] ([m]:[s] minute\s ago)<br>"
if( C && (C.bug == src)) //Checks to see if the camera has a bug
html += "<a href='?src=[REF(src)];emp=[REF(C)]'>\[Disable\]</a>"
else
html += "Not yet seen."
else
track_mode = BUGMODE_LIST
return .(cameras)
return html
/obj/item/device/camera_bug/proc/get_seens()
if(current && current.can_use())
var/list/seen = current.can_see()
return seen
/obj/item/device/camera_bug/proc/camera_report()
// this should only be called if current exists
var/dat = ""
var/list/seen = get_seens()
if(seen && seen.len >= 1)
var/list/names = list()
for(var/obj/singularity/S in seen) // god help you if you see more than one
if(S.name in names)
names[S.name]++
dat += "[S.name] ([names[S.name]])"
else
names[S.name] = 1
dat += "[S.name]"
var/stage = round(S.current_size / 2)+1
dat += " (Stage [stage])"
dat += " <a href='?[REF(src)];track=[REF(S)]'>\[Track\]</a><br>"
for(var/obj/mecha/M in seen)
if(M.name in names)
names[M.name]++
dat += "[M.name] ([names[M.name]])"
else
names[M.name] = 1
dat += "[M.name]"
dat += " <a href='?[REF(src)];track=[REF(M)]'>\[Track\]</a><br>"
for(var/mob/living/M in seen)
if(M.name in names)
names[M.name]++
dat += "[M.name] ([names[M.name]])"
else
names[M.name] = 1
dat += "[M.name]"
if(M.buckled && !M.lying)
dat += " (Sitting)"
if(M.lying)
dat += " (Laying down)"
dat += " <a href='?[REF(src)];track=[REF(M)]'>\[Track\]</a><br>"
if(length(dat) == 0)
dat += "No motion detected."
return dat
else
return "Camera Offline<br>"
/obj/item/device/camera_bug/Topic(href,list/href_list)
if(usr != loc)
usr.unset_machine()
usr << browse(null, "window=camerabug")
return
usr.set_machine(src)
if("mode" in href_list)
track_mode = text2num(href_list["mode"])
if("monitor" in href_list)
//You can't locate on a list with keys
var/list/cameras = flatten_list(bugged_cameras)
var/obj/machinery/camera/C = locate(href_list["monitor"]) in cameras
if(C && istype(C))
track_mode = BUGMODE_MONITOR
current = C
usr.reset_perspective(null)
interact()
if("track" in href_list)
var/list/seen = get_seens()
if(seen && seen.len >= 1)
var/atom/A = locate(href_list["track"]) in seen
if(A && istype(A))
tracking = A
tracked_name = A.name
last_found = current.c_tag
last_seen = world.time
track_mode = BUGMODE_TRACK
if("emp" in href_list)
//You can't locate on a list with keys
var/list/cameras = flatten_list(bugged_cameras)
var/obj/machinery/camera/C = locate(href_list["emp"]) in cameras
if(C && istype(C) && C.bug == src)
C.emp_act(EMP_HEAVY)
C.bug = null
bugged_cameras -= C.c_tag
interact()
return
if("close" in href_list)
usr.unset_machine()
current = null
return
if("view" in href_list)
//You can't locate on a list with keys
var/list/cameras = flatten_list(bugged_cameras)
var/obj/machinery/camera/C = locate(href_list["view"]) in cameras
if(C && istype(C))
if(!C.can_use())
to_chat(usr, "<span class='warning'>Something's wrong with that camera! You can't get a feed.</span>")
return
var/turf/T = get_turf(loc)
if(!T || C.z != T.z)
to_chat(usr, "<span class='warning'>You can't get a signal!</span>")
return
current = C
spawn(6)
if(src.check_eye(usr))
usr.reset_perspective(C)
interact()
else
usr.unset_machine()
usr << browse(null, "window=camerabug")
return
else
usr.unset_machine()
interact()
/obj/item/device/camera_bug/process()
if(track_mode == BUGMODE_LIST || (world.time < (last_tracked + refresh_interval)))
return
last_tracked = world.time
if(track_mode == BUGMODE_TRACK ) // search for user
// Note that it will be tricked if your name appears to change.
// This is not optimal but it is better than tracking you relentlessly despite everything.
if(!tracking)
src.updateSelfDialog()
return
if(tracking.name != tracked_name) // Hiding their identity, tricksy
var/mob/M = tracking
if(istype(M))
if(!(tracked_name == "Unknown" && findtext(tracking.name,"Unknown"))) // we saw then disguised before
if(!(tracked_name == M.real_name && findtext(tracking.name,M.real_name))) // or they're still ID'd
src.updateSelfDialog()//But if it's neither of those cases
return // you won't find em on the cameras
else
src.updateSelfDialog()
return
var/list/tracking_cams = list()
var/list/b_cams = get_cameras()
for(var/entry in b_cams)
tracking_cams += b_cams[entry]
var/list/target_region = view(tracking)
for(var/obj/machinery/camera/C in (target_region & tracking_cams))
if(!can_see(C,tracking)) // target may have xray, that doesn't make them visible to cameras
continue
if(C.can_use())
last_found = C.c_tag
last_seen = world.time
break
src.updateSelfDialog()
#undef BUGMODE_LIST
#undef BUGMODE_MONITOR
#undef BUGMODE_TRACK
>>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental

View File

@@ -29,30 +29,30 @@
var/dat = "<TT><B>Personal AI Device</B><BR>" var/dat = "<TT><B>Personal AI Device</B><BR>"
if(pai) if(pai)
if(!pai.master_dna || !pai.master) if(!pai.master_dna || !pai.master)
dat += "<a href='byond://?src=\ref[src];setdna=1'>Imprint Master DNA</a><br>" dat += "<a href='byond://?src=[REF(src)];setdna=1'>Imprint Master DNA</a><br>"
dat += "Installed Personality: [pai.name]<br>" dat += "Installed Personality: [pai.name]<br>"
dat += "Prime directive: <br>[pai.laws.zeroth]<br>" dat += "Prime directive: <br>[pai.laws.zeroth]<br>"
for(var/slaws in pai.laws.supplied) for(var/slaws in pai.laws.supplied)
dat += "Additional directives: <br>[slaws]<br>" dat += "Additional directives: <br>[slaws]<br>"
dat += "<a href='byond://?src=\ref[src];setlaws=1'>Configure Directives</a><br>" dat += "<a href='byond://?src=[REF(src)];setlaws=1'>Configure Directives</a><br>"
dat += "<br>" dat += "<br>"
dat += "<h3>Device Settings</h3><br>" dat += "<h3>Device Settings</h3><br>"
if(pai.radio) if(pai.radio)
dat += "<b>Radio Uplink</b><br>" dat += "<b>Radio Uplink</b><br>"
dat += "Transmit: <A href='byond://?src=\ref[src];wires=[WIRE_TX]'>[(pai.radio.wires.is_cut(WIRE_TX)) ? "Disabled" : "Enabled"]</A><br>" dat += "Transmit: <A href='byond://?src=[REF(src)];wires=[WIRE_TX]'>[(pai.radio.wires.is_cut(WIRE_TX)) ? "Disabled" : "Enabled"]</A><br>"
dat += "Receive: <A href='byond://?src=\ref[src];wires=[WIRE_RX]'>[(pai.radio.wires.is_cut(WIRE_RX)) ? "Disabled" : "Enabled"]</A><br>" dat += "Receive: <A href='byond://?src=[REF(src)];wires=[WIRE_RX]'>[(pai.radio.wires.is_cut(WIRE_RX)) ? "Disabled" : "Enabled"]</A><br>"
else else
dat += "<b>Radio Uplink</b><br>" dat += "<b>Radio Uplink</b><br>"
dat += "<font color=red><i>Radio firmware not loaded. Please install a pAI personality to load firmware.</i></font><br>" dat += "<font color=red><i>Radio firmware not loaded. Please install a pAI personality to load firmware.</i></font><br>"
if(ishuman(user)) if(ishuman(user))
var/mob/living/carbon/human/H = user var/mob/living/carbon/human/H = user
if(H.real_name == pai.master || H.dna.unique_enzymes == pai.master_dna) if(H.real_name == pai.master || H.dna.unique_enzymes == pai.master_dna)
dat += "<A href='byond://?src=\ref[src];toggle_holo=1'>\[[pai.canholo? "Disable" : "Enable"] holomatrix projectors\]</a><br>" dat += "<A href='byond://?src=[REF(src)];toggle_holo=1'>\[[pai.canholo? "Disable" : "Enable"] holomatrix projectors\]</a><br>"
dat += "<A href='byond://?src=\ref[src];wipe=1'>\[Wipe current pAI personality\]</a><br>" dat += "<A href='byond://?src=[REF(src)];wipe=1'>\[Wipe current pAI personality\]</a><br>"
else else
dat += "No personality installed.<br>" dat += "No personality installed.<br>"
dat += "Searching for a personality... Press view available personalities to notify potential candidates." dat += "Searching for a personality... Press view available personalities to notify potential candidates."
dat += "<A href='byond://?src=\ref[src];request=1'>\[View available personalities\]</a><br>" dat += "<A href='byond://?src=[REF(src)];request=1'>\[View available personalities\]</a><br>"
user << browse(dat, "window=paicard") user << browse(dat, "window=paicard")
onclose(user, "paicard") onclose(user, "paicard")
return return

Some files were not shown because too many files have changed in this diff Show More