516 internal links (#20428)

Convert all (appropriate) links to use the required `byond://` for 516

Added a grep to detect incompatible ones
This commit is contained in:
Fluffy
2025-02-20 22:54:10 +00:00
committed by GitHub
parent f09ec22549
commit 3185c10cf1
223 changed files with 1397 additions and 1398 deletions
+4 -4
View File
@@ -175,9 +175,9 @@
output += "<td align='center'>[details["source"]]</td>"
output += "<td align='center'>[details["ckey"]]</td>"
output += "<td align='center'>[details["date"]]</td>"
output += "<td align='center'><a href='?_src_=holder;dbbanmirroract=[details["id"]];mirrorstatus=[details["inactive"]]'>[details["inactive"] ? "Reactivate" : "Deactivate"]</a>"
output += "<td align='center'><a href='byond://?_src_=holder;dbbanmirroract=[details["id"]];mirrorstatus=[details["inactive"]]'>[details["inactive"] ? "Reactivate" : "Deactivate"]</a>"
if (details["extra"])
output += " | <a href='?_src_=holder;dbbanmirroract=[details["id"]];mirrorckeys=1'>View Ckeys</a>"
output += " | <a href='byond://?_src_=holder;dbbanmirroract=[details["id"]];mirrorckeys=1'>View Ckeys</a>"
output += "</td></tr>"
output += "<tr bgcolor='[bg]'>"
@@ -209,7 +209,7 @@
to_chat(user, SPAN_NOTICE("No attached ckeys were found."))
return
var/output = "<a href='?_src_=holder;dbbanmirrors=[query.item[2]];'>Back</a><br><br>"
var/output = "<a href='byond://?_src_=holder;dbbanmirrors=[query.item[2]];'>Back</a><br><br>"
try
var/list/ckeys = json_decode(query.item[1])
@@ -222,7 +222,7 @@
to_chat(user, SPAN_NOTICE("Maligned data found. Please alert the system administrator."))
return
output += "<br><br><a href='?_src_=holder;dbbanmirrors=[query.item[2]];'>Back</a>"
output += "<br><br><a href='byond://?_src_=holder;dbbanmirrors=[query.item[2]];'>Back</a>"
user << browse(output, "window=banmirrors")
/proc/toggle_mirror_status(mob/user, mirror_id, inactive = FALSE)
+1 -1
View File
@@ -449,7 +449,7 @@
var/mirror_count = 0
var/mirror_data = "<br>"
while (mirror_query.NextRow())
mirror_data += "Active mirror for #[mirror_query.item[1]] (<a href='?src=[REF(src)];dbsearchckey=[mirror_query.item[2]];'>View Ban</a>)<br>"
mirror_data += "Active mirror for #[mirror_query.item[1]] (<a href='byond://?src=[REF(src)];dbsearchckey=[mirror_query.item[2]];'>View Ban</a>)<br>"
mirror_count++
if (mirror_count)
+1 -1
View File
@@ -185,7 +185,7 @@ var/savefile/Banlist
if(!expiry) expiry = "Removal Pending"
else expiry = "Permaban"
dat += "<tr><td><A href='?src=[ref];unbanf=[key][id]'>(U)</A><A href='?src=[ref];unbane=[key][id]'>(E)</A> Key: <B>[key]</B></td><td>ComputerID: <B>[id]</B></td><td>IP: <B>[ip]</B></td><td> [expiry]</td><td>(By: [by])</td><td>(Reason: [reason])</td></tr>"
dat += "<tr><td><A href='byond://?src=[ref];unbanf=[key][id]'>(U)</A><A href='byond://?src=[ref];unbane=[key][id]'>(E)</A> Key: <B>[key]</B></td><td>ComputerID: <B>[id]</B></td><td>IP: <B>[ip]</B></td><td> [expiry]</td><td>(By: [by])</td><td>(Reason: [reason])</td></tr>"
dat += "</table>"
dat = "<HR><B>Bans:</B> <FONT COLOR=blue>(U) = Unban , (E) = Edit Ban</FONT> - <FONT COLOR=green>([count] Bans)</FONT><HR><table border=1 rules=all frame=void cellspacing=0 cellpadding=3 >[dat]"
+150 -150
View File
@@ -52,51 +52,51 @@ var/global/enabled_spooking = 0
body += "<body>Options panel for <b>[M]</b>"
if(M.client)
body += " played by <b>[M.client]</b> "
body += "\[<A href='?src=[REF(src)];editrights=show'>[M.client.holder ? M.client.holder.rank : "Player"]</A>\]"
body += "\[<A href='byond://?src=[REF(src)];editrights=show'>[M.client.holder ? M.client.holder.rank : "Player"]</A>\]"
if(istype(M, /mob/abstract/new_player))
body += " <B>Hasn't Entered Game</B> "
else
body += " \[<A href='?src=[REF(src)];revive=[REF(M)]'>Heal</A>\] "
body += " \[<A href='byond://?src=[REF(src)];revive=[REF(M)]'>Heal</A>\] "
body += {"
<br><br>\[
<a href='?_src_=vars;Vars=[REF(M)]'>VV</a> -
<a href='?src=[REF(src)];traitor=[REF(M)]'>TP</a> -
<a href='?src=[REF(usr)];priv_msg=[REF(M)]'>PM</a> -
<a href='?src=[REF(src)];subtlemessage=[REF(M)]'>SM</a> -
<a href='byond://?_src_=vars;Vars=[REF(M)]'>VV</a> -
<a href='byond://?src=[REF(src)];traitor=[REF(M)]'>TP</a> -
<a href='byond://?src=[REF(usr)];priv_msg=[REF(M)]'>PM</a> -
<a href='byond://?src=[REF(src)];subtlemessage=[REF(M)]'>SM</a> -
[admin_jump_link(M, src)]\] <br>
<b>Mob type</b> = [M.type]<br><br>
<A href='?src=[REF(src)];boot2=[REF(M)]'>Kick</A> |
<A href='?_src_=holder;warn=[M.ckey]'>Warn</A> |
<a href='?src=[REF(src)];warnsearchckey=[M.ckey]'>Warnings</a> |
<A href='?src=[REF(src)];newban=[REF(M)]'>Ban</A> |
<A href='?src=[REF(src)];jobban_panel=[REF(M)]'>Jobban</A> |
<A href='?src=[REF(src)];notes=show;mob=[REF(M)]'>Notes</A>
<A href='byond://?src=[REF(src)];boot2=[REF(M)]'>Kick</A> |
<A href='byond://?_src_=holder;warn=[M.ckey]'>Warn</A> |
<a href='byond://?src=[REF(src)];warnsearchckey=[M.ckey]'>Warnings</a> |
<A href='byond://?src=[REF(src)];newban=[REF(M)]'>Ban</A> |
<A href='byond://?src=[REF(src)];jobban_panel=[REF(M)]'>Jobban</A> |
<A href='byond://?src=[REF(src)];notes=show;mob=[REF(M)]'>Notes</A>
"}
if(M.client)
body += "| <a href='?src=[REF(src)];admin_wind_player=[REF(M)]'>Wind</a> | "
body += "\ <A HREF='?src=[REF(src)];sendbacktolobby=[REF(M)]]'>Send back to Lobby</A>"
body += "| <a href='byond://?src=[REF(src)];admin_wind_player=[REF(M)]'>Wind</a> | "
body += "\ <A href='byond://?src=[REF(src)];sendbacktolobby=[REF(M)]]'>Send back to Lobby</A>"
var/muted = M.client.prefs.muted
body += {"<br><b>Mute: </b>
\[<A href='?src=[REF(src)];mute=[REF(M)];mute_type=[MUTE_IC]'><font color='[(muted & MUTE_IC)?"red":"blue"]'>IC</font></a> |
<A href='?src=[REF(src)];mute=[REF(M)];mute_type=[MUTE_OOC]'><font color='[(muted & MUTE_OOC)?"red":"blue"]'>OOC</font></a> |
<A href='?src=[REF(src)];mute=[REF(M)];mute_type=[MUTE_PRAY]'><font color='[(muted & MUTE_PRAY)?"red":"blue"]'>PRAY</font></a> |
<A href='?src=[REF(src)];mute=[REF(M)];mute_type=[MUTE_ADMINHELP]'><font color='[(muted & MUTE_ADMINHELP)?"red":"blue"]'>ADMINHELP</font></a> |
<A href='?src=[REF(src)];mute=[REF(M)];mute_type=[MUTE_DEADCHAT]'><font color='[(muted & MUTE_DEADCHAT)?"red":"blue"]'>DEADCHAT</font></a> |
<A href='?src=[REF(src)];mute=[REF(M)];mute_type=[MUTE_AOOC]'><font color='[(muted & MUTE_AOOC) ? "red" : "blue"]'>AOOC</font></a>\]
(<A href='?src=[REF(src)];mute=[REF(M)];mute_type=[MUTE_ALL]'><font color='[(muted & MUTE_ALL)?"red":"blue"]'>toggle all</font></a>)
\[<A href='byond://?src=[REF(src)];mute=[REF(M)];mute_type=[MUTE_IC]'><font color='[(muted & MUTE_IC)?"red":"blue"]'>IC</font></a> |
<A href='byond://?src=[REF(src)];mute=[REF(M)];mute_type=[MUTE_OOC]'><font color='[(muted & MUTE_OOC)?"red":"blue"]'>OOC</font></a> |
<A href='byond://?src=[REF(src)];mute=[REF(M)];mute_type=[MUTE_PRAY]'><font color='[(muted & MUTE_PRAY)?"red":"blue"]'>PRAY</font></a> |
<A href='byond://?src=[REF(src)];mute=[REF(M)];mute_type=[MUTE_ADMINHELP]'><font color='[(muted & MUTE_ADMINHELP)?"red":"blue"]'>ADMINHELP</font></a> |
<A href='byond://?src=[REF(src)];mute=[REF(M)];mute_type=[MUTE_DEADCHAT]'><font color='[(muted & MUTE_DEADCHAT)?"red":"blue"]'>DEADCHAT</font></a> |
<A href='byond://?src=[REF(src)];mute=[REF(M)];mute_type=[MUTE_AOOC]'><font color='[(muted & MUTE_AOOC) ? "red" : "blue"]'>AOOC</font></a>\]
(<A href='byond://?src=[REF(src)];mute=[REF(M)];mute_type=[MUTE_ALL]'><font color='[(muted & MUTE_ALL)?"red":"blue"]'>toggle all</font></a>)
"}
body += {"<br><br>
<A href='?src=[REF(src)];jumpto=[REF(M)]'><b>Jump to</b></A> |
<A href='?src=[REF(src)];getmob=[REF(M)]'>Get</A> |
<A href='?src=[REF(src)];sendmob=[REF(M)]'>Send To</A>
<A href='byond://?src=[REF(src)];jumpto=[REF(M)]'><b>Jump to</b></A> |
<A href='byond://?src=[REF(src)];getmob=[REF(M)]'>Get</A> |
<A href='byond://?src=[REF(src)];sendmob=[REF(M)]'>Send To</A>
<br><br>
[check_rights(R_ADMIN|R_MOD,0) ? "<A href='?src=[REF(src)];traitor=[REF(M)]'>Traitor panel</A> | " : "" ]
<A href='?src=[REF(src)];narrateto=[REF(M)]'>Narrate to</A> |
<A href='?src=[REF(src)];subtlemessage=[REF(M)]'>Subtle message</A>
[check_rights(R_ADMIN|R_MOD,0) ? "<A href='byond://?src=[REF(src)];traitor=[REF(M)]'>Traitor panel</A> | " : "" ]
<A href='byond://?src=[REF(src)];narrateto=[REF(M)]'>Narrate to</A> |
<A href='byond://?src=[REF(src)];subtlemessage=[REF(M)]'>Subtle message</A>
"}
body += "<br><br>"
@@ -104,7 +104,7 @@ var/global/enabled_spooking = 0
if(isliving(M))
var/mob/living/psyker = M
if(psyker.psi)
body += "<a href='?src=[REF(src)];remove_psionics=[REF(psyker.psi)]'>Remove psionics.</a><br/><br/>"
body += "<a href='byond://?src=[REF(src)];remove_psionics=[REF(psyker.psi)]'>Remove psionics.</a><br/><br/>"
body += "<table width = '100%'>"
for(var/psi_rank in list(PSI_RANK_SENSITIVE, PSI_RANK_HARMONIOUS, PSI_RANK_APEX, PSI_RANK_LIMITLESS))
var/owner_rank = psyker.psi ? psyker.psi.get_rank() : 0
@@ -112,9 +112,9 @@ var/global/enabled_spooking = 0
if(psi_rank == owner_rank)
psi_title = "<b>[psi_title]</b>"
if(psi_rank != PSI_RANK_LIMITLESS)
body += "<tr><a href='?src=[REF(psyker.mind)];set_psi_rank=[psi_rank]'>[psi_title]</a></tr>"
body += "<tr><a href='byond://?src=[REF(psyker.mind)];set_psi_rank=[psi_rank]'>[psi_title]</a></tr>"
else
body += "<tr><a href='?src=[REF(psyker.mind)];set_psi_rank_limitless=1'><font color='red'>[psi_title]</font></a></tr>"
body += "<tr><a href='byond://?src=[REF(psyker.mind)];set_psi_rank_limitless=1'><font color='red'>[psi_title]</font></a></tr>"
body += "</table>"
if (M.client)
@@ -127,28 +127,28 @@ var/global/enabled_spooking = 0
if(issmall(M))
body += "<B>Monkeyized</B> | "
else
body += "<A href='?src=[REF(src)];monkeyone=[REF(M)]'>Monkeyize</A> | "
body += "<A href='byond://?src=[REF(src)];monkeyone=[REF(M)]'>Monkeyize</A> | "
//Corgi
if(iscorgi(M))
body += "<B>Corgized</B> | "
else
body += "<A href='?src=[REF(src)];corgione=[REF(M)]'>Corgize</A> | "
body += "<A href='byond://?src=[REF(src)];corgione=[REF(M)]'>Corgize</A> | "
//AI / Cyborg
if(isAI(M))
body += "<B>Is an AI</B> "
else if(ishuman(M))
body += {"<A href='?src=[REF(src)];makeai=[REF(M)]'>Make AI</A> |
<A href='?src=[REF(src)];makerobot=[REF(M)]'>Make Robot</A> |
<A href='?src=[REF(src)];makeslime=[REF(M)]'>Make slime</A>
body += {"<A href='byond://?src=[REF(src)];makeai=[REF(M)]'>Make AI</A> |
<A href='byond://?src=[REF(src)];makerobot=[REF(M)]'>Make Robot</A> |
<A href='byond://?src=[REF(src)];makeslime=[REF(M)]'>Make slime</A>
"}
//Simple Animals
if(isanimal(M))
body += "<A href='?src=[REF(src)];makeanimal=[REF(M)]'>Re-Animalize</A> | "
body += "<A href='byond://?src=[REF(src)];makeanimal=[REF(M)]'>Re-Animalize</A> | "
else
body += "<A href='?src=[REF(src)];makeanimal=[REF(M)]'>Animalize</A> | "
body += "<A href='byond://?src=[REF(src)];makeanimal=[REF(M)]'>Animalize</A> | "
// DNA2 - Admin Hax
if(M.dna && iscarbon(M))
@@ -163,7 +163,7 @@ var/global/enabled_spooking = 0
if(bname)
var/bstate=M.dna.GetSEState(block)
var/bcolor="[(bstate)?"#006600":"#ff0000"]"
body += "<A href='?src=[REF(src)];togmutate=[REF(M)];block=[block]' style='color:[bcolor];'>[bname]</A><sub>[block]</sub>"
body += "<A href='byond://?src=[REF(src)];togmutate=[REF(M)];block=[block]' style='color:[bcolor];'>[bname]</A><sub>[block]</sub>"
else
body += "[block]"
body+="</td>"
@@ -171,36 +171,36 @@ var/global/enabled_spooking = 0
body += {"<br><br>
<b>Rudimentary transformation:</b><font size=2><br>These transformations only create a new mob type and copy stuff over. They do not take into account MMIs and similar mob-specific things. The buttons in 'Transformations' are preferred, when possible.</font><br>
<A href='?src=[REF(src)];simplemake=observer;mob=[REF(M)]'>Observer</A> |
\[ Crew: <A href='?src=[REF(src)];simplemake=human;mob=[REF(M)]'>Choose Species</A>\] | \[
<A href='?src=[REF(src)];simplemake=nymph;mob=[REF(M)]'>Nymph</A>\] |
\[ slime: <A href='?src=[REF(src)];simplemake=slime;mob=[REF(M)]'>Baby</A>\]|
<A href='?src=[REF(src)];simplemake=ai;mob=[REF(M)]'>AI</A> |
<A href='?src=[REF(src)];simplemake=robot;mob=[REF(M)]'>Cyborg</A> |
<A href='?src=[REF(src)];simplemake=cat;mob=[REF(M)]'>Cat</A> |
<A href='?src=[REF(src)];simplemake=runtime;mob=[REF(M)]'>Runtime</A> |
<A href='?src=[REF(src)];simplemake=corgi;mob=[REF(M)]'>Corgi</A> |
<A href='?src=[REF(src)];simplemake=ian;mob=[REF(M)]'>Ian</A> |
<A href='?src=[REF(src)];simplemake=crab;mob=[REF(M)]'>Crab</A> |
<A href='?src=[REF(src)];simplemake=coffee;mob=[REF(M)]'>Coffee</A> |
\[ Construct: <A href='?src=[REF(src)];simplemake=constructarmored;mob=[REF(M)]'>Armored</A> ,
<A href='?src=[REF(src)];simplemake=constructbuilder;mob=[REF(M)]'>Builder</A> ,
<A href='?src=[REF(src)];simplemake=constructwraith;mob=[REF(M)]'>Wraith</A> \]
<A href='?src=[REF(src)];simplemake=shade;mob=[REF(M)]'>Shade</A>
<A href='?src=[REF(src)];simplemake=meme;mob=[REF(M)]'>Meme</A>
<A href='byond://?src=[REF(src)];simplemake=observer;mob=[REF(M)]'>Observer</A> |
\[ Crew: <A href='byond://?src=[REF(src)];simplemake=human;mob=[REF(M)]'>Choose Species</A>\] | \[
<A href='byond://?src=[REF(src)];simplemake=nymph;mob=[REF(M)]'>Nymph</A>\] |
\[ slime: <A href='byond://?src=[REF(src)];simplemake=slime;mob=[REF(M)]'>Baby</A>\]|
<A href='byond://?src=[REF(src)];simplemake=ai;mob=[REF(M)]'>AI</A> |
<A href='byond://?src=[REF(src)];simplemake=robot;mob=[REF(M)]'>Cyborg</A> |
<A href='byond://?src=[REF(src)];simplemake=cat;mob=[REF(M)]'>Cat</A> |
<A href='byond://?src=[REF(src)];simplemake=runtime;mob=[REF(M)]'>Runtime</A> |
<A href='byond://?src=[REF(src)];simplemake=corgi;mob=[REF(M)]'>Corgi</A> |
<A href='byond://?src=[REF(src)];simplemake=ian;mob=[REF(M)]'>Ian</A> |
<A href='byond://?src=[REF(src)];simplemake=crab;mob=[REF(M)]'>Crab</A> |
<A href='byond://?src=[REF(src)];simplemake=coffee;mob=[REF(M)]'>Coffee</A> |
\[ Construct: <A href='byond://?src=[REF(src)];simplemake=constructarmored;mob=[REF(M)]'>Armored</A> ,
<A href='byond://?src=[REF(src)];simplemake=constructbuilder;mob=[REF(M)]'>Builder</A> ,
<A href='byond://?src=[REF(src)];simplemake=constructwraith;mob=[REF(M)]'>Wraith</A> \]
<A href='byond://?src=[REF(src)];simplemake=shade;mob=[REF(M)]'>Shade</A>
<A href='byond://?src=[REF(src)];simplemake=meme;mob=[REF(M)]'>Meme</A>
<br>
"}
body += {"<br><br>
<b>Other actions:</b>
<br>
<A href='?src=[REF(src)];forcespeech=[REF(M)]'>Forcesay</A>
<A href='byond://?src=[REF(src)];forcespeech=[REF(M)]'>Forcesay</A>
"}
if (M.client)
body += {" |
<A href='?src=[REF(src)];tdome1=[REF(M)]'>Thunderdome 1</A> |
<A href='?src=[REF(src)];tdome2=[REF(M)]'>Thunderdome 2</A> |
<A href='?src=[REF(src)];tdomeadmin=[REF(M)]'>Thunderdome Admin</A> |
<A href='?src=[REF(src)];tdomeobserve=[REF(M)]'>Thunderdome Observer</A> |
<A href='byond://?src=[REF(src)];tdome1=[REF(M)]'>Thunderdome 1</A> |
<A href='byond://?src=[REF(src)];tdome2=[REF(M)]'>Thunderdome 2</A> |
<A href='byond://?src=[REF(src)];tdomeadmin=[REF(M)]'>Thunderdome Admin</A> |
<A href='byond://?src=[REF(src)];tdomeobserve=[REF(M)]'>Thunderdome Observer</A> |
"}
// language toggles
body += "<br><br><b>Languages:</b><br>"
@@ -211,9 +211,9 @@ var/global/enabled_spooking = 0
if(!f) body += " | "
else f = 0
if(L in M.languages)
body += "<a href='?src=[REF(src)];toglang=[REF(M)];lang=[html_encode(k)]' style='color:#006600'>[k]</a>"
body += "<a href='byond://?src=[REF(src)];toglang=[REF(M)];lang=[html_encode(k)]' style='color:#006600'>[k]</a>"
else
body += "<a href='?src=[REF(src)];toglang=[REF(M)];lang=[html_encode(k)]' style='color:#ff0000'>[k]</a>"
body += "<a href='byond://?src=[REF(src)];toglang=[REF(M)];lang=[html_encode(k)]' style='color:#ff0000'>[k]</a>"
body += {"<br>
</body></html>
@@ -269,7 +269,7 @@ var/global/enabled_spooking = 0
upper_bound = min(upper_bound, note_keys.len)
for(var/index = lower_bound, index <= upper_bound, index++)
var/t = note_keys[index]
dat += "<tr><td><a href='?src=[REF(src)];notes=show;ckey=[t]'>[t]</a></td></tr>"
dat += "<tr><td><a href='byond://?src=[REF(src)];notes=show;ckey=[t]'>[t]</a></td></tr>"
dat += "</table><br>"
@@ -277,7 +277,7 @@ var/global/enabled_spooking = 0
for(var/index = 1, index <= number_pages, index++)
if(index == page)
dat += "<b>"
dat += "<a href='?src=[REF(src)];notes=list;index=[index]'>[index]</a> "
dat += "<a href='byond://?src=[REF(src)];notes=list;index=[index]'>[index]</a> "
if(index == page)
dat += "</b>"
@@ -330,12 +330,12 @@ var/global/enabled_spooking = 0
update_file = 1
dat += "<font color=#008800>[I.content]</font> <i>by [I.author] ([I.rank])</i> on <i><font color=blue>[I.timestamp]</i></font> "
if(I.author == usr.key || I.author == "Adminbot")
dat += "<A href='?src=[REF(src)];remove_player_info=[key];remove_index=[i]'>Remove</A>"
dat += "<A href='byond://?src=[REF(src)];remove_player_info=[key];remove_index=[i]'>Remove</A>"
dat += "<br><br>"
if(update_file) info << infos
dat += "<br>"
dat += "<A href='?src=[REF(src)];add_player_info=[key]'>Add Comment</A><br>"
dat += "<A href='byond://?src=[REF(src)];add_player_info=[key]'>Add Comment</A><br>"
dat += "</body></html>"
show_browser(usr, dat, "window=adminplayerinfo;size=480x480")
@@ -365,12 +365,12 @@ var/global/enabled_spooking = 0
<BR>Note that this panel allows full freedom over the news network, there are no constrictions except the few basic ones. Don't break things!
"}
if(SSnews.wanted_issue)
dat+= "<HR><A href='?src=[REF(src)];ac_view_wanted=1'>Read Wanted Issue</A>"
dat+= "<HR><A href='byond://?src=[REF(src)];ac_view_wanted=1'>Read Wanted Issue</A>"
dat+= {"<HR><BR><A href='?src=[REF(src)];ac_create_channel=1'>Create Feed Channel</A>
<BR><A href='?src=[REF(src)];ac_view=1'>View Feed Channels</A>
<BR><A href='?src=[REF(src)];ac_create_feed_story=1'>Submit new Feed story</A>
<BR><BR><A href='?src=[REF(usr)];mach_close=newscaster_main'>Exit</A>
dat+= {"<HR><BR><A href='byond://?src=[REF(src)];ac_create_channel=1'>Create Feed Channel</A>
<BR><A href='byond://?src=[REF(src)];ac_view=1'>View Feed Channels</A>
<BR><A href='byond://?src=[REF(src)];ac_create_feed_story=1'>Submit new Feed story</A>
<BR><BR><A href='byond://?src=[REF(usr)];mach_close=newscaster_main'>Exit</A>
"}
var/wanted_already = 0
@@ -378,10 +378,10 @@ var/global/enabled_spooking = 0
wanted_already = 1
dat+={"<HR><B>Feed Security functions:</B><BR>
<BR><A href='?src=[REF(src)];ac_menu_wanted=1'>[(wanted_already) ? ("Manage") : ("Publish")] \"Wanted\" Issue</A>
<BR><A href='?src=[REF(src)];ac_menu_censor_story=1'>Censor Feed Stories</A>
<BR><A href='?src=[REF(src)];ac_menu_censor_channel=1'>Mark Feed Channel with [SSatlas.current_map.company_name] D-Notice (disables and locks the channel.</A>
<BR><HR><A href='?src=[REF(src)];ac_set_signature=1'>The newscaster recognises you as:<BR> <FONT COLOR='green'>[src.admincaster_signature]</FONT></A>
<BR><A href='byond://?src=[REF(src)];ac_menu_wanted=1'>[(wanted_already) ? ("Manage") : ("Publish")] \"Wanted\" Issue</A>
<BR><A href='byond://?src=[REF(src)];ac_menu_censor_story=1'>Censor Feed Stories</A>
<BR><A href='byond://?src=[REF(src)];ac_menu_censor_channel=1'>Mark Feed Channel with [SSatlas.current_map.company_name] D-Notice (disables and locks the channel.</A>
<BR><HR><A href='byond://?src=[REF(src)];ac_set_signature=1'>The newscaster recognises you as:<BR> <FONT COLOR='green'>[src.admincaster_signature]</FONT></A>
"}
if(1)
dat+= "Feed Channels<HR>"
@@ -391,38 +391,38 @@ var/global/enabled_spooking = 0
for(var/channel in SSnews.network_channels)
var/datum/feed_channel/FC = SSnews.GetFeedChannel(channel)
if(FC.is_admin_channel)
dat+="<B><FONT style='BACKGROUND-COLOR: LightGreen'><A href='?src=[REF(src)];ac_show_channel=[REF(FC)]'>[FC.channel_name]</A></FONT></B><BR>"
dat+="<B><FONT style='BACKGROUND-COLOR: LightGreen'><A href='byond://?src=[REF(src)];ac_show_channel=[REF(FC)]'>[FC.channel_name]</A></FONT></B><BR>"
else
dat+="<B><A href='?src=[REF(src)];ac_show_channel=[REF(FC)]'>[FC.channel_name]</A> [(FC.censored) ? (SPAN_WARNING("***")) : null]<BR></B>"
dat+={"<BR><HR><A href='?src=[REF(src)];ac_refresh=1'>Refresh</A>
<BR><A href='?src=[REF(src)];ac_setScreen=[0]'>Back</A>
dat+="<B><A href='byond://?src=[REF(src)];ac_show_channel=[REF(FC)]'>[FC.channel_name]</A> [(FC.censored) ? (SPAN_WARNING("***")) : null]<BR></B>"
dat+={"<BR><HR><A href='byond://?src=[REF(src)];ac_refresh=1'>Refresh</A>
<BR><A href='byond://?src=[REF(src)];ac_setScreen=[0]'>Back</A>
"}
if(2)
dat+={"
Creating new Feed Channel...
<HR><B><A href='?src=[REF(src)];ac_set_channel_name=1'>Channel Name</A>:</B> [src.admincaster_feed_channel.channel_name]<BR>
<B><A href='?src=[REF(src)];ac_set_signature=1'>Channel Author</A>:</B> <FONT COLOR='green'>[src.admincaster_signature]</FONT><BR>
<B><A href='?src=[REF(src)];ac_set_channel_lock=1'>Will Accept Public Feeds</A>:</B> [(src.admincaster_feed_channel.locked) ? ("NO") : ("YES")]<BR><BR>
<BR><A href='?src=[REF(src)];ac_submit_new_channel=1'>Submit</A><BR><BR><A href='?src=[REF(src)];ac_setScreen=[0]'>Cancel</A><BR>
<HR><B><A href='byond://?src=[REF(src)];ac_set_channel_name=1'>Channel Name</A>:</B> [src.admincaster_feed_channel.channel_name]<BR>
<B><A href='byond://?src=[REF(src)];ac_set_signature=1'>Channel Author</A>:</B> <FONT COLOR='green'>[src.admincaster_signature]</FONT><BR>
<B><A href='byond://?src=[REF(src)];ac_set_channel_lock=1'>Will Accept Public Feeds</A>:</B> [(src.admincaster_feed_channel.locked) ? ("NO") : ("YES")]<BR><BR>
<BR><A href='byond://?src=[REF(src)];ac_submit_new_channel=1'>Submit</A><BR><BR><A href='byond://?src=[REF(src)];ac_setScreen=[0]'>Cancel</A><BR>
"}
if(3)
dat+={"
Creating new Feed Message...
<HR><B><A href='?src=[REF(src)];ac_set_channel_receiving=1'>Receiving Channel</A>:</B> [src.admincaster_feed_channel.channel_name]<BR>" //MARK
<HR><B><A href='byond://?src=[REF(src)];ac_set_channel_receiving=1'>Receiving Channel</A>:</B> [src.admincaster_feed_channel.channel_name]<BR>" //MARK
<B>Message Author:</B> <FONT COLOR='green'>[src.admincaster_signature]</FONT><BR>
<B><A href='?src=[REF(src)];ac_set_new_message=1'>Message Body</A>:</B> [src.admincaster_feed_message.body] <BR>
<BR><A href='?src=[REF(src)];ac_submit_new_message=1'>Submit</A><BR><BR><A href='?src=[REF(src)];ac_setScreen=[0]'>Cancel</A><BR>
<B><A href='byond://?src=[REF(src)];ac_set_new_message=1'>Message Body</A>:</B> [src.admincaster_feed_message.body] <BR>
<BR><A href='byond://?src=[REF(src)];ac_submit_new_message=1'>Submit</A><BR><BR><A href='byond://?src=[REF(src)];ac_setScreen=[0]'>Cancel</A><BR>
"}
if(4)
dat+={"
Feed story successfully submitted to [src.admincaster_feed_channel.channel_name].<BR><BR>
<BR><A href='?src=[REF(src)];ac_setScreen=[0]'>Return</A><BR>
<BR><A href='byond://?src=[REF(src)];ac_setScreen=[0]'>Return</A><BR>
"}
if(5)
dat+={"
Feed Channel [src.admincaster_feed_channel.channel_name] created successfully.<BR><BR>
<BR><A href='?src=[REF(src)];ac_setScreen=[0]'>Return</A><BR>
<BR><A href='byond://?src=[REF(src)];ac_setScreen=[0]'>Return</A><BR>
"}
if(6)
dat+="<B><FONT COLOR='maroon'>ERROR: Could not submit Feed story to Network.</B></FONT><HR><BR>"
@@ -430,7 +430,7 @@ var/global/enabled_spooking = 0
dat+="<FONT COLOR='maroon'>•Invalid receiving channel name.</FONT><BR>"
if(src.admincaster_feed_message.body == "" || src.admincaster_feed_message.body == "\[REDACTED\]")
dat+="<FONT COLOR='maroon'>•Invalid message body.</FONT><BR>"
dat+="<BR><A href='?src=[REF(src)];ac_setScreen=[3]'>Return</A><BR>"
dat+="<BR><A href='byond://?src=[REF(src)];ac_setScreen=[3]'>Return</A><BR>"
if(7)
dat+="<B><FONT COLOR='maroon'>ERROR: Could not submit Feed Channel to Network.</B></FONT><HR><BR>"
if(src.admincaster_feed_channel.channel_name =="" || src.admincaster_feed_channel.channel_name == "\[REDACTED\]")
@@ -443,7 +443,7 @@ var/global/enabled_spooking = 0
break
if(check)
dat+="<FONT COLOR='maroon'>•Channel name already in use.</FONT><BR>"
dat+="<BR><A href='?src=[REF(src)];ac_setScreen=[2]'>Return</A><BR>"
dat+="<BR><A href='byond://?src=[REF(src)];ac_setScreen=[2]'>Return</A><BR>"
if(9)
dat+="<B>[src.admincaster_feed_channel.channel_name]: </B><FONT SIZE=1>\[created by: <FONT COLOR='maroon'>[src.admincaster_feed_channel.author]</FONT>\]</FONT><HR>"
if(src.admincaster_feed_channel.censored)
@@ -458,15 +458,15 @@ var/global/enabled_spooking = 0
var/i = 0
for(var/datum/feed_message/MESSAGE in src.admincaster_feed_channel.messages)
i++
dat+="<BLOCKQUOTE style=\"padding:4px;border-left:4px #797979 solid\">[MESSAGE.body] <FONT SIZE=1>\[Likes: <A href='?src=[REF(src)];ac_setlikes=1;'><FONT COLOR='DarkGreen'>[MESSAGE.likes]</FONT></A> Dislikes: <A href='?src=[REF(src)];ac_setdislikes=1;'><FONT COLOR='maroon'>[MESSAGE.dislikes]</FONT></A>\]</FONT><BR>"
dat+="<BLOCKQUOTE style=\"padding:4px;border-left:4px #797979 solid\">[MESSAGE.body] <FONT SIZE=1>\[Likes: <A href='byond://?src=[REF(src)];ac_setlikes=1;'><FONT COLOR='DarkGreen'>[MESSAGE.likes]</FONT></A> Dislikes: <A href='byond://?src=[REF(src)];ac_setdislikes=1;'><FONT COLOR='maroon'>[MESSAGE.dislikes]</FONT></A>\]</FONT><BR>"
if(MESSAGE.img)
send_rsc(usr, MESSAGE.img, "tmp_photo[i].png")
dat+="<img src='tmp_photo[i].png' width = '180'><BR><BR>"
dat+="<FONT SIZE=1><A href='?src=[REF(src)];ac_view_comments=1;ac_story=[REF(MESSAGE)]'>View Comments</A> <A href='?src=[REF(src)];ac_add_comment=1;ac_story=[REF(MESSAGE)]'>Add Comment</A> <A href='?src=[REF(src)];ac_like=1;ac_story=[REF(MESSAGE)]'>Like Story</A> <A href='?src=[REF(src)];ac_dislike=1;ac_story=[REF(MESSAGE)]'>Dislike Story</A></FONT><BR>"
dat+="<FONT SIZE=1><A href='byond://?src=[REF(src)];ac_view_comments=1;ac_story=[REF(MESSAGE)]'>View Comments</A> <A href='byond://?src=[REF(src)];ac_add_comment=1;ac_story=[REF(MESSAGE)]'>Add Comment</A> <A href='byond://?src=[REF(src)];ac_like=1;ac_story=[REF(MESSAGE)]'>Like Story</A> <A href='byond://?src=[REF(src)];ac_dislike=1;ac_story=[REF(MESSAGE)]'>Dislike Story</A></FONT><BR>"
dat+="<FONT SIZE=1>\[Story by <FONT COLOR='maroon'>[MESSAGE.author] - [MESSAGE.time_stamp]</FONT>\]</FONT></BLOCKQUOTE><BR>"
dat+={"
<BR><HR><A href='?src=[REF(src)];ac_refresh=1'>Refresh</A>
<BR><A href='?src=[REF(src)];ac_setScreen=[1]'>Back</A>
<BR><HR><A href='byond://?src=[REF(src)];ac_refresh=1'>Refresh</A>
<BR><A href='byond://?src=[REF(src)];ac_setScreen=[1]'>Back</A>
"}
if(10)
dat+={"
@@ -480,8 +480,8 @@ var/global/enabled_spooking = 0
else
for(var/channel in SSnews.network_channels)
var/datum/feed_channel/FC = SSnews.GetFeedChannel(channel)
dat+="<A href='?src=[REF(src)];ac_pick_censor_channel=[REF(FC)]'>[FC.channel_name]</A> [(FC.censored) ? (SPAN_WARNING("***")) : null]<BR>"
dat+="<BR><A href='?src=[REF(src)];ac_setScreen=[0]'>Cancel</A>"
dat+="<A href='byond://?src=[REF(src)];ac_pick_censor_channel=[REF(FC)]'>[FC.channel_name]</A> [(FC.censored) ? (SPAN_WARNING("***")) : null]<BR>"
dat+="<BR><A href='byond://?src=[REF(src)];ac_setScreen=[0]'>Cancel</A>"
if(11)
dat+={"
<B>[SSatlas.current_map.company_name] D-Notice Handler</B><HR>
@@ -494,13 +494,13 @@ var/global/enabled_spooking = 0
else
for(var/channel in SSnews.network_channels)
var/datum/feed_channel/FC = SSnews.GetFeedChannel(channel)
dat+="<A href='?src=[REF(src)];ac_pick_d_notice=[REF(FC)]'>[FC.channel_name]</A> [(FC.censored) ? (SPAN_WARNING("***")) : null]<BR>"
dat+="<A href='byond://?src=[REF(src)];ac_pick_d_notice=[REF(FC)]'>[FC.channel_name]</A> [(FC.censored) ? (SPAN_WARNING("***")) : null]<BR>"
dat+="<BR><A href='?src=[REF(src)];ac_setScreen=[0]'>Back</A>"
dat+="<BR><A href='byond://?src=[REF(src)];ac_setScreen=[0]'>Back</A>"
if(12)
dat+={"
<B>[src.admincaster_feed_channel.channel_name]: </B><FONT SIZE=1>\[ created by: <FONT COLOR='maroon'>[src.admincaster_feed_channel.author]</FONT> \]</FONT><BR>
<FONT SIZE=2><A href='?src=[REF(src)];ac_censor_channel_author=[REF(src.admincaster_feed_channel)]'>[(src.admincaster_feed_channel.author=="\[REDACTED\]") ? ("Undo Author censorship") : ("Censor channel Author")]</A></FONT><HR>
<FONT SIZE=2><A href='byond://?src=[REF(src)];ac_censor_channel_author=[REF(src.admincaster_feed_channel)]'>[(src.admincaster_feed_channel.author=="\[REDACTED\]") ? ("Undo Author censorship") : ("Censor channel Author")]</A></FONT><HR>
"}
if( isemptylist(src.admincaster_feed_channel.messages) )
dat+="<I>No feed messages found in channel...</I><BR>"
@@ -508,13 +508,13 @@ var/global/enabled_spooking = 0
for(var/datum/feed_message/MESSAGE in src.admincaster_feed_channel.messages)
dat+={"
-[MESSAGE.body] <BR><FONT SIZE=1>\[Story by <FONT COLOR='maroon'>[MESSAGE.author]</FONT>\]</FONT><BR>
<FONT SIZE=2><A href='?src=[REF(src)];ac_censor_channel_story_body=[REF(MESSAGE)]'>[(MESSAGE.body == "\[REDACTED\]") ? ("Undo story censorship") : ("Censor story")]</A> - <A href='?src=[REF(src)];ac_censor_channel_story_author=[REF(MESSAGE)]'>[(MESSAGE.author == "\[REDACTED\]") ? ("Undo Author Censorship") : ("Censor message Author")]</A></FONT><BR>
<FONT SIZE=2><A href='byond://?src=[REF(src)];ac_censor_channel_story_body=[REF(MESSAGE)]'>[(MESSAGE.body == "\[REDACTED\]") ? ("Undo story censorship") : ("Censor story")]</A> - <A href='byond://?src=[REF(src)];ac_censor_channel_story_author=[REF(MESSAGE)]'>[(MESSAGE.author == "\[REDACTED\]") ? ("Undo Author Censorship") : ("Censor message Author")]</A></FONT><BR>
"}
dat+="<BR><A href='?src=[REF(src)];ac_setScreen=[10]'>Back</A>"
dat+="<BR><A href='byond://?src=[REF(src)];ac_setScreen=[10]'>Back</A>"
if(13)
dat+={"
<B>[src.admincaster_feed_channel.channel_name]: </B><FONT SIZE=1>\[ created by: <FONT COLOR='maroon'>[src.admincaster_feed_channel.author]</FONT> \]</FONT><BR>
Channel messages listed below. If you deem them dangerous to the [station_name(TRUE)], you can <A href='?src=[REF(src)];ac_toggle_d_notice=[REF(src.admincaster_feed_channel)]'>Bestow a D-Notice upon the channel</A>.<HR>
Channel messages listed below. If you deem them dangerous to the [station_name(TRUE)], you can <A href='byond://?src=[REF(src)];ac_toggle_d_notice=[REF(src.admincaster_feed_channel)]'>Bestow a D-Notice upon the channel</A>.<HR>
"}
if(src.admincaster_feed_channel.censored)
dat+={"
@@ -528,7 +528,7 @@ var/global/enabled_spooking = 0
for(var/datum/feed_message/MESSAGE in src.admincaster_feed_channel.messages)
dat+="-[MESSAGE.body] <BR><FONT SIZE=1>\[Story by <FONT COLOR='maroon'>[MESSAGE.author]</FONT>\]</FONT><BR>"
dat+="<BR><A href='?src=[REF(src)];ac_setScreen=[11]'>Back</A>"
dat+="<BR><A href='byond://?src=[REF(src)];ac_setScreen=[11]'>Back</A>"
if(14)
dat+="<B>Wanted Issue Handler:</B>"
var/wanted_already = 0
@@ -540,21 +540,21 @@ var/global/enabled_spooking = 0
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>
<A href='?src=[REF(src)];ac_set_wanted_name=1'>Criminal Name</A>: [src.admincaster_feed_message.author] <BR>
<A href='?src=[REF(src)];ac_set_wanted_desc=1'>Description</A>: [src.admincaster_feed_message.body] <BR>
<A href='byond://?src=[REF(src)];ac_set_wanted_name=1'>Criminal Name</A>: [src.admincaster_feed_message.author] <BR>
<A href='byond://?src=[REF(src)];ac_set_wanted_desc=1'>Description</A>: [src.admincaster_feed_message.body] <BR>
"}
if(wanted_already)
dat+="<B>Wanted Issue created by:</B><FONT COLOR='green'> [SSnews.wanted_issue.backup_author]</FONT><BR>"
else
dat+="<B>Wanted Issue will be created under prosecutor:</B><FONT COLOR='green'> [src.admincaster_signature]</FONT><BR>"
dat+="<BR><A href='?src=[REF(src)];ac_submit_wanted=[end_param]'>[(wanted_already) ? ("Edit Issue") : ("Submit")]</A>"
dat+="<BR><A href='byond://?src=[REF(src)];ac_submit_wanted=[end_param]'>[(wanted_already) ? ("Edit Issue") : ("Submit")]</A>"
if(wanted_already)
dat+="<BR><A href='?src=[REF(src)];ac_cancel_wanted=1'>Take down Issue</A>"
dat+="<BR><A href='?src=[REF(src)];ac_setScreen=[0]'>Cancel</A>"
dat+="<BR><A href='byond://?src=[REF(src)];ac_cancel_wanted=1'>Take down Issue</A>"
dat+="<BR><A href='byond://?src=[REF(src)];ac_setScreen=[0]'>Cancel</A>"
if(15)
dat+={"
<FONT COLOR='green'>Wanted issue for [src.admincaster_feed_message.author] is now in Network Circulation.</FONT><BR><BR>
<BR><A href='?src=[REF(src)];ac_setScreen=[0]'>Return</A><BR>
<BR><A href='byond://?src=[REF(src)];ac_setScreen=[0]'>Return</A><BR>
"}
if(16)
dat+="<B><FONT COLOR='maroon'>ERROR: Wanted Issue rejected by Network.</B></FONT><HR><BR>"
@@ -562,11 +562,11 @@ var/global/enabled_spooking = 0
dat+="<FONT COLOR='maroon'>•Invalid name for person wanted.</FONT><BR>"
if(src.admincaster_feed_message.body == "" || src.admincaster_feed_message.body == "\[REDACTED\]")
dat+="<FONT COLOR='maroon'>•Invalid description.</FONT><BR>"
dat+="<BR><A href='?src=[REF(src)];ac_setScreen=[0]'>Return</A><BR>"
dat+="<BR><A href='byond://?src=[REF(src)];ac_setScreen=[0]'>Return</A><BR>"
if(17)
dat+={"
<B>Wanted Issue successfully deleted from Circulation</B><BR>
<BR><A href='?src=[REF(src)];ac_setScreen=[0]'>Return</A><BR>
<BR><A href='byond://?src=[REF(src)];ac_setScreen=[0]'>Return</A><BR>
"}
if(18)
dat+={"
@@ -580,11 +580,11 @@ var/global/enabled_spooking = 0
dat+="<BR><img src='tmp_photow.png' width = '180'>"
else
dat+="None"
dat+="<BR><A href='?src=[REF(src)];ac_setScreen=[0]'>Back</A><BR>"
dat+="<BR><A href='byond://?src=[REF(src)];ac_setScreen=[0]'>Back</A><BR>"
if(19)
dat+={"
<FONT COLOR='green'>Wanted issue for [src.admincaster_feed_message.author] successfully edited.</FONT><BR><BR>
<BR><A href='?src=[REF(src)];ac_setScreen=[0]'>Return</A><BR>
<BR><A href='byond://?src=[REF(src)];ac_setScreen=[0]'>Return</A><BR>
"}
if(20) //comments but with more censorship!
dat+="<B>Comments:</B></BR>"
@@ -592,8 +592,8 @@ var/global/enabled_spooking = 0
dat+="No comments on this story yet!</BR>"
else
for(var/datum/feed_comment/COMMENT in src.admincaster_viewing_message.comments)
dat+="<BLOCKQUOTE style=\"padding:2px 4px;border-left:4px #797979 solid;\"><B>\[[world.time]\] [COMMENT.author]:</B>[COMMENT.message]<BR><A href='?src=[REF(src)];ac_censorcomment=1;ac_comment=[REF(COMMENT)]>Censor Comment</A></BLOCKQUOTE>"
dat+="<A href='?src=[REF(src)];ac_setScreen=[9]'>Return</A>"
dat+="<BLOCKQUOTE style=\"padding:2px 4px;border-left:4px #797979 solid;\"><B>\[[world.time]\] [COMMENT.author]:</B>[COMMENT.message]<BR><A href='byond://?src=[REF(src)];ac_censorcomment=1;ac_comment=[REF(COMMENT)]>Censor Comment</A></BLOCKQUOTE>"
dat+="<A href='byond://?src=[REF(src)];ac_setScreen=[9]'>Return</A>"
else
dat+="Please report this on GitHub, along with what you did to make this appear."
@@ -609,13 +609,13 @@ var/global/enabled_spooking = 0
// RIP whoever uses this panel. It's going to be amazingly painful!
var/dat = "<B>Job Bans!</B><HR>"
dat += "<a href='?src=[REF(src)];jobban_search=1'>Search via ckey</a><br>"
dat += "<a href='byond://?src=[REF(src)];jobban_search=1'>Search via ckey</a><br>"
dat += "<table>"
for (var/ckey in GLOB.jobban_keylist)
for (var/job in GLOB.jobban_keylist[ckey])
var/list/ban = GLOB.jobban_keylist[ckey][job]
if (!jobban_isexpired(ban, null, job, ckey))
dat += "<tr><td>[ckey] - [ban[2]] - (<a href='?src=[REF(src)];jobban_tgt=[ckey];jobban_job=[job];'>unban</a>)</td></tr>"
dat += "<tr><td>[ckey] - [ban[2]] - (<a href='byond://?src=[REF(src)];jobban_tgt=[ckey];jobban_job=[job];'>unban</a>)</td></tr>"
dat += "</table>"
usr << browse(dat, "window=ban;size=400x400")
@@ -625,19 +625,19 @@ var/global/enabled_spooking = 0
var/dat = {"
<center><B>Game Panel</B></center><hr>\n
<A href='?src=[REF(src)];c_mode=1'>Change Game Mode</A><br>
<A href='byond://?src=[REF(src)];c_mode=1'>Change Game Mode</A><br>
"}
if(GLOB.master_mode == ROUNDTYPE_STR_SECRET || GLOB.master_mode == ROUNDTYPE_STR_MIXED_SECRET)
dat += "<A href='?src=[REF(src)];f_secret=1'>(Force Secret Mode)</A><br>"
dat += "<A href='byond://?src=[REF(src)];f_secret=1'>(Force Secret Mode)</A><br>"
dat += {"
<BR>
<A href='?src=[REF(src)];create_object=1'>Create Object</A><br>
<A href='?src=[REF(src)];create_turf=1'>Create Turf</A><br>
<A href='?src=[REF(src)];create_mob=1'>Create Mob</A><br>
<br><A href='?src=[REF(src)];vsc=airflow'>Edit Airflow Settings</A><br>
<A href='?src=[REF(src)];vsc=phoron'>Edit Phoron Settings</A><br>
<A href='?src=[REF(src)];vsc=default'>Choose a default ZAS setting</A><br>
<A href='byond://?src=[REF(src)];create_object=1'>Create Object</A><br>
<A href='byond://?src=[REF(src)];create_turf=1'>Create Turf</A><br>
<A href='byond://?src=[REF(src)];create_mob=1'>Create Mob</A><br>
<br><A href='byond://?src=[REF(src)];vsc=airflow'>Edit Airflow Settings</A><br>
<A href='byond://?src=[REF(src)];vsc=phoron'>Edit Phoron Settings</A><br>
<A href='byond://?src=[REF(src)];vsc=default'>Choose a default ZAS setting</A><br>
"}
usr << browse(dat, "window=admin2;size=210x280")
@@ -656,7 +656,7 @@ var/global/enabled_spooking = 0
for(var/datum/admin_secret_item/item in category.items)
if(!item.can_view(usr))
continue
dat += "<A href='?src=[REF(src)];admin_secrets=[REF(item)]'>[item.name()]</A><BR>"
dat += "<A href='byond://?src=[REF(src)];admin_secrets=[REF(item)]'>[item.name()]</A><BR>"
dat += "<BR>"
usr << browse(dat, "window=secrets")
return
@@ -1078,66 +1078,66 @@ var/global/enabled_spooking = 0
alert("Not before roundstart!", "Alert")
return
var/out = "<font size=3><b>Current mode: [SSticker.mode.name] (<a href='?src=[REF(SSticker.mode)];debug_antag=self'>[SSticker.mode.config_tag]</a>)</b></font><br/>"
var/out = "<font size=3><b>Current mode: [SSticker.mode.name] (<a href='byond://?src=[REF(SSticker.mode)];debug_antag=self'>[SSticker.mode.config_tag]</a>)</b></font><br/>"
out += "<hr>"
if(SSticker.mode.ert_disabled)
out += "<b>Emergency Response Teams:</b> <a href='?src=[REF(SSticker.mode)];toggle=ert'>disabled</a>"
out += "<b>Emergency Response Teams:</b> <a href='byond://?src=[REF(SSticker.mode)];toggle=ert'>disabled</a>"
else
out += "<b>Emergency Response Teams:</b> <a href='?src=[REF(SSticker.mode)];toggle=ert'>enabled</a>"
out += "<b>Emergency Response Teams:</b> <a href='byond://?src=[REF(SSticker.mode)];toggle=ert'>enabled</a>"
out += "<br/>"
if(SSticker.mode.deny_respawn)
out += "<b>Respawning:</b> <a href='?src=[REF(SSticker.mode)];toggle=respawn'>disallowed</a>"
out += "<b>Respawning:</b> <a href='byond://?src=[REF(SSticker.mode)];toggle=respawn'>disallowed</a>"
else
out += "<b>Respawning:</b> <a href='?src=[REF(SSticker.mode)];toggle=respawn'>allowed</a>"
out += "<b>Respawning:</b> <a href='byond://?src=[REF(SSticker.mode)];toggle=respawn'>allowed</a>"
out += "<br/>"
out += "<b>Shuttle delay multiplier:</b> <a href='?src=[REF(SSticker.mode)];set=shuttle_delay'>[SSticker.mode.shuttle_delay]</a><br/>"
out += "<b>Shuttle delay multiplier:</b> <a href='byond://?src=[REF(SSticker.mode)];set=shuttle_delay'>[SSticker.mode.shuttle_delay]</a><br/>"
if(SSticker.mode.auto_recall_shuttle)
out += "<b>Shuttle auto-recall:</b> <a href='?src=[REF(SSticker.mode)];toggle=shuttle_recall'>enabled</a>"
out += "<b>Shuttle auto-recall:</b> <a href='byond://?src=[REF(SSticker.mode)];toggle=shuttle_recall'>enabled</a>"
else
out += "<b>Shuttle auto-recall:</b> <a href='?src=[REF(SSticker.mode)];toggle=shuttle_recall'>disabled</a>"
out += "<b>Shuttle auto-recall:</b> <a href='byond://?src=[REF(SSticker.mode)];toggle=shuttle_recall'>disabled</a>"
out += "<br/><br/>"
if(SSticker.mode.event_delay_mod_moderate)
out += "<b>Moderate event time modifier:</b> <a href='?src=[REF(SSticker.mode)];set=event_modifier_moderate'>[SSticker.mode.event_delay_mod_moderate]</a><br/>"
out += "<b>Moderate event time modifier:</b> <a href='byond://?src=[REF(SSticker.mode)];set=event_modifier_moderate'>[SSticker.mode.event_delay_mod_moderate]</a><br/>"
else
out += "<b>Moderate event time modifier:</b> <a href='?src=[REF(SSticker.mode)];set=event_modifier_moderate'>unset</a><br/>"
out += "<b>Moderate event time modifier:</b> <a href='byond://?src=[REF(SSticker.mode)];set=event_modifier_moderate'>unset</a><br/>"
if(SSticker.mode.event_delay_mod_major)
out += "<b>Major event time modifier:</b> <a href='?src=[REF(SSticker.mode)];set=event_modifier_severe'>[SSticker.mode.event_delay_mod_major]</a><br/>"
out += "<b>Major event time modifier:</b> <a href='byond://?src=[REF(SSticker.mode)];set=event_modifier_severe'>[SSticker.mode.event_delay_mod_major]</a><br/>"
else
out += "<b>Major event time modifier:</b> <a href='?src=[REF(SSticker.mode)];set=event_modifier_severe'>unset</a><br/>"
out += "<b>Major event time modifier:</b> <a href='byond://?src=[REF(SSticker.mode)];set=event_modifier_severe'>unset</a><br/>"
out += "<hr>"
if(LAZYLEN(SSticker.mode.antag_tags))
out += "<b>Core antag templates:</b></br>"
for(var/antag_tag in SSticker.mode.antag_tags)
out += "<a href='?src=[REF(SSticker.mode)];debug_antag=[antag_tag]'>[antag_tag]</a>.</br>"
out += "<a href='byond://?src=[REF(SSticker.mode)];debug_antag=[antag_tag]'>[antag_tag]</a>.</br>"
if(SSticker.mode.round_autoantag)
out += "<b>Autotraitor <a href='?src=[REF(SSticker.mode)];toggle=autotraitor'>enabled</a></b>."
out += "<b>Autotraitor <a href='byond://?src=[REF(SSticker.mode)];toggle=autotraitor'>enabled</a></b>."
if(SSticker.mode.antag_scaling_coeff > 0)
out += " (scaling with <a href='?src=[REF(SSticker.mode)];set=antag_scaling'>[SSticker.mode.antag_scaling_coeff]</a>)"
out += " (scaling with <a href='byond://?src=[REF(SSticker.mode)];set=antag_scaling'>[SSticker.mode.antag_scaling_coeff]</a>)"
else
out += " (not currently scaling, <a href='?src=[REF(SSticker.mode)];set=antag_scaling'>set a coefficient</a>)"
out += " (not currently scaling, <a href='byond://?src=[REF(SSticker.mode)];set=antag_scaling'>set a coefficient</a>)"
out += "<br/>"
else
out += "<b>Autotraitor <a href='?src=[REF(SSticker.mode)];toggle=autotraitor'>disabled</a></b>.<br/>"
out += "<b>Autotraitor <a href='byond://?src=[REF(SSticker.mode)];toggle=autotraitor'>disabled</a></b>.<br/>"
out += "<b>All antag ids:</b>"
if(LAZYLEN(SSticker.mode.antag_templates))
for(var/datum/antagonist/antag in SSticker.mode.antag_templates)
antag.update_current_antag_max()
out += " <a href='?src=[REF(SSticker.mode)];debug_antag=[antag.id]'>[antag.id]</a>"
out += " <a href='byond://?src=[REF(SSticker.mode)];debug_antag=[antag.id]'>[antag.id]</a>"
out += " ([antag.get_antag_count()]/[antag.cur_max]) "
out += " <a href='?src=[REF(SSticker.mode)];remove_antag_type=[antag.id]'>\[-\]</a><br/>"
out += " <a href='byond://?src=[REF(SSticker.mode)];remove_antag_type=[antag.id]'>\[-\]</a><br/>"
else
out += " None."
out += " <a href='?src=[REF(SSticker.mode)];add_antag_type=1'>\[+\]</a><br/>"
out += " <a href='byond://?src=[REF(SSticker.mode)];add_antag_type=1'>\[+\]</a><br/>"
usr << browse(out, "window=edit_mode[src]")
feedback_add_details("admin_verb","SGM")
@@ -1221,19 +1221,19 @@ var/global/enabled_spooking = 0
return "<b>[key_name(C, link, name, highlight_special, ticket)]</b>"
if(1) //Private Messages
return "<b>[key_name(C, link, name, highlight_special, ticket)](<A HREF='?_src_=holder;adminmoreinfo=[REF(M)]'>?</A>)</b>"
return "<b>[key_name(C, link, name, highlight_special, ticket)](<A href='byond://?_src_=holder;adminmoreinfo=[REF(M)]'>?</A>)</b>"
if(2) //Admins
var/ref_mob = "[REF(M)]"
return "<b>[key_name(C, link, name, highlight_special, ticket)](<A HREF='?_src_=holder;adminmoreinfo=[ref_mob]'>?</A>) (<A HREF='?_src_=holder;adminplayeropts=[ref_mob]'>PP</A>) (<A HREF='?_src_=vars;Vars=[ref_mob]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=[ref_mob]'>SM</A>) ([admin_jump_link(M)]) (<A HREF='?_src_=holder;check_antagonist=1'>CA</A>)</b>"
return "<b>[key_name(C, link, name, highlight_special, ticket)](<A href='byond://?_src_=holder;adminmoreinfo=[ref_mob]'>?</A>) (<A href='byond://?_src_=holder;adminplayeropts=[ref_mob]'>PP</A>) (<A href='byond://?_src_=vars;Vars=[ref_mob]'>VV</A>) (<A href='byond://?_src_=holder;subtlemessage=[ref_mob]'>SM</A>) ([admin_jump_link(M)]) (<A href='byond://?_src_=holder;check_antagonist=1'>CA</A>)</b>"
if(3) //Devs
var/ref_mob = "[REF(M)]"
return "<b>[key_name(C, link, name, highlight_special, ticket)](<A HREF='?_src_=vars;Vars=[ref_mob]'>VV</A>)([admin_jump_link(M)])</b>"
return "<b>[key_name(C, link, name, highlight_special, ticket)](<A href='byond://?_src_=vars;Vars=[ref_mob]'>VV</A>)([admin_jump_link(M)])</b>"
if(4) //Mentors
var/ref_mob = "[REF(M)]"
return "<b>[key_name(C, link, name, highlight_special, ticket)] (<A HREF='?_src_=holder;adminmoreinfo=[REF(M)]'>?</A>) (<A HREF='?_src_=holder;adminplayeropts=[ref_mob]'>PP</A>) (<A HREF='?_src_=vars;Vars=[ref_mob]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=[ref_mob]'>SM</A>) ([admin_jump_link(M)])</b>"
return "<b>[key_name(C, link, name, highlight_special, ticket)] (<A href='byond://?_src_=holder;adminmoreinfo=[REF(M)]'>?</A>) (<A href='byond://?_src_=holder;adminplayeropts=[ref_mob]'>PP</A>) (<A href='byond://?_src_=vars;Vars=[ref_mob]'>VV</A>) (<A href='byond://?_src_=holder;subtlemessage=[ref_mob]'>SM</A>) ([admin_jump_link(M)])</b>"
//
//ALL DONE
+3 -3
View File
@@ -5,7 +5,7 @@
/proc/log_and_message_admins(var/message as text, var/mob/user = usr, var/turf/location)
var/turf/T = location ? location : (user ? get_turf(user) : null)
if(T)
message = message + " (<a HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>JMP</a>)"
message = message + " (<a href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>JMP</a>)"
log_admin(user ? "[key_name(user)] [message]" : "EVENT [message]")
message_admins(user ? "[key_name_admin(user)] [message]" : "EVENT [message]")
@@ -25,10 +25,10 @@
var/jmp_link = ""
if(victim)
victim.attack_log +="\[[time_stamp()]\] <font color='orange'>[key_name(attacker)] - [victim_message]</font>"
jmp_link = " (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[victim.x];Y=[victim.y];Z=[victim.z]'>JMP</a>)"
jmp_link = " (<A href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[victim.x];Y=[victim.y];Z=[victim.z]'>JMP</a>)"
if(attacker)
attacker.attack_log += "\[[time_stamp()]\] <span class='warning'>[key_name(victim)] - [attacker_message]</span>"
jmp_link = " (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[attacker.x];Y=[attacker.y];Z=[attacker.z]'>JMP</a>)"
jmp_link = " (<A href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[attacker.x];Y=[attacker.y];Z=[attacker.z]'>JMP</a>)"
msg_admin_attack("[attacker ? key_name_admin(attacker) : ""] [admin_message] [victim ? key_name_admin(victim) : ""] (INTENT: [attacker? uppertext(attacker.a_intent) : "N/A"])[jmp_link]",ckey=key_name(attacker),ckey_target=key_name(victim))
+1 -1
View File
@@ -1368,7 +1368,7 @@ GLOBAL_LIST_INIT(admin_verbs_cciaa, list(
prefix = "(R)"
admin_stuff += "/([source.key])"
if(target != source.client)
admin_stuff += "(<A HREF='?src=[REF(target.holder)];adminplayerobservejump=[REF(mob)]'>JMP</A>)"
admin_stuff += "(<A href='byond://?src=[REF(target.holder)];adminplayerobservejump=[REF(mob)]'>JMP</A>)"
if(target.mob in messagemobs)
prefix = ""
if((target.mob in messagemobs) || display_remote)
+39 -39
View File
@@ -322,7 +322,7 @@ GLOBAL_PROTECT(jobban_keylist)
//Regular jobs
//Command
jobs += "<table cellpadding='1' cellspacing='0' width='100%'>"
jobs += "<tr align='center' bgcolor='114dc1'><th colspan='[length(command_positions)]'><a href='?src=[REF(src)];jobban_job=commanddept;jobban_tgt=[ckey]'>Command Positions</a></th></tr><tr align='center'>"
jobs += "<tr align='center' bgcolor='114dc1'><th colspan='[length(command_positions)]'><a href='byond://?src=[REF(src)];jobban_job=commanddept;jobban_tgt=[ckey]'>Command Positions</a></th></tr><tr align='center'>"
for (var/jobPos in command_positions)
if (!jobPos)
continue
@@ -331,10 +331,10 @@ GLOBAL_PROTECT(jobban_keylist)
continue
if (jobban_isbanned(ckey, job.title))
jobs += "<td width='20%'><a href='?src=[REF(src)];jobban_job=[job.title];jobban_tgt=[ckey]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
jobs += "<td width='20%'><a href='byond://?src=[REF(src)];jobban_job=[job.title];jobban_tgt=[ckey]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
counter++
else
jobs += "<td width='20%'><a href='?src=[REF(src)];jobban_job=[job.title];jobban_tgt=[ckey]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
jobs += "<td width='20%'><a href='byond://?src=[REF(src)];jobban_job=[job.title];jobban_tgt=[ckey]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
counter++
if (counter >= 6) //So things dont get squiiiiished!
@@ -344,7 +344,7 @@ GLOBAL_PROTECT(jobban_keylist)
//Command Support
jobs += "<table cellpadding='1' cellspacing='0' width='100%'>"
jobs += "<tr align='center' bgcolor='114dc1'><th colspan='[length(command_support_positions)]'><a href='?src=[REF(src)];jobban_job=commandsupportdept;jobban_tgt=[ckey]'>Command Support Positions</a></th></tr><tr align='center'>"
jobs += "<tr align='center' bgcolor='114dc1'><th colspan='[length(command_support_positions)]'><a href='byond://?src=[REF(src)];jobban_job=commandsupportdept;jobban_tgt=[ckey]'>Command Support Positions</a></th></tr><tr align='center'>"
for (var/jobPos in command_support_positions)
if (!jobPos)
continue
@@ -353,10 +353,10 @@ GLOBAL_PROTECT(jobban_keylist)
continue
if (jobban_isbanned(ckey, job.title))
jobs += "<td width='20%'><a href='?src=[REF(src)];jobban_job=[job.title];jobban_tgt=[ckey]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
jobs += "<td width='20%'><a href='byond://?src=[REF(src)];jobban_job=[job.title];jobban_tgt=[ckey]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
counter++
else
jobs += "<td width='20%'><a href='?src=[REF(src)];jobban_job=[job.title];jobban_tgt=[ckey]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
jobs += "<td width='20%'><a href='byond://?src=[REF(src)];jobban_job=[job.title];jobban_tgt=[ckey]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
counter++
if (counter >= 6) //So things dont get squiiiiished!
@@ -367,7 +367,7 @@ GLOBAL_PROTECT(jobban_keylist)
//Security
counter = 0
jobs += "<table cellpadding='1' cellspacing='0' width='100%'>"
jobs += "<tr bgcolor='991818'><th colspan='[length(security_positions)]'><a href='?src=[REF(src)];jobban_job=securitydept;jobban_tgt=[ckey]'>Security Positions</a></th></tr><tr align='center'>"
jobs += "<tr bgcolor='991818'><th colspan='[length(security_positions)]'><a href='byond://?src=[REF(src)];jobban_job=securitydept;jobban_tgt=[ckey]'>Security Positions</a></th></tr><tr align='center'>"
for (var/jobPos in security_positions)
if (!jobPos)
continue
@@ -376,10 +376,10 @@ GLOBAL_PROTECT(jobban_keylist)
continue
if (jobban_isbanned(ckey, job.title))
jobs += "<td width='20%'><a href='?src=[REF(src)];jobban_job=[job.title];jobban_tgt=[ckey]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
jobs += "<td width='20%'><a href='byond://?src=[REF(src)];jobban_job=[job.title];jobban_tgt=[ckey]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
counter++
else
jobs += "<td width='20%'><a href='?src=[REF(src)];jobban_job=[job.title];jobban_tgt=[ckey]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
jobs += "<td width='20%'><a href='byond://?src=[REF(src)];jobban_job=[job.title];jobban_tgt=[ckey]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
counter++
if (counter >= 5) //So things dont get squiiiiished!
@@ -390,7 +390,7 @@ GLOBAL_PROTECT(jobban_keylist)
//Engineering
counter = 0
jobs += "<table cellpadding='1' cellspacing='0' width='100%'>"
jobs += "<tr bgcolor='c67519'><th colspan='[length(engineering_positions)]'><a href='?src=[REF(src)];jobban_job=engineeringdept;jobban_tgt=[ckey]'>Engineering Positions</a></th></tr><tr align='center'>"
jobs += "<tr bgcolor='c67519'><th colspan='[length(engineering_positions)]'><a href='byond://?src=[REF(src)];jobban_job=engineeringdept;jobban_tgt=[ckey]'>Engineering Positions</a></th></tr><tr align='center'>"
for (var/jobPos in engineering_positions)
if (!jobPos)
continue
@@ -399,10 +399,10 @@ GLOBAL_PROTECT(jobban_keylist)
continue
if (jobban_isbanned(ckey, job.title))
jobs += "<td width='20%'><a href='?src=[REF(src)];jobban_job=[job.title];jobban_tgt=[ckey]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
jobs += "<td width='20%'><a href='byond://?src=[REF(src)];jobban_job=[job.title];jobban_tgt=[ckey]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
counter++
else
jobs += "<td width='20%'><a href='?src=[REF(src)];jobban_job=[job.title];jobban_tgt=[ckey]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
jobs += "<td width='20%'><a href='byond://?src=[REF(src)];jobban_job=[job.title];jobban_tgt=[ckey]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
counter++
if (counter >= 5) //So things dont get squiiiiished!
@@ -413,7 +413,7 @@ GLOBAL_PROTECT(jobban_keylist)
//Medical
counter = 0
jobs += "<table cellpadding='1' cellspacing='0' width='100%'>"
jobs += "<tr bgcolor='15903a'><th colspan='[length(medical_positions)]'><a href='?src=[REF(src)];jobban_job=medicaldept;jobban_tgt=[ckey]'>Medical Positions</a></th></tr><tr align='center'>"
jobs += "<tr bgcolor='15903a'><th colspan='[length(medical_positions)]'><a href='byond://?src=[REF(src)];jobban_job=medicaldept;jobban_tgt=[ckey]'>Medical Positions</a></th></tr><tr align='center'>"
for (var/jobPos in medical_positions)
if (!jobPos)
continue
@@ -422,10 +422,10 @@ GLOBAL_PROTECT(jobban_keylist)
continue
if (jobban_isbanned(ckey, job.title))
jobs += "<td width='20%'><a href='?src=[REF(src)];jobban_job=[job.title];jobban_tgt=[ckey]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
jobs += "<td width='20%'><a href='byond://?src=[REF(src)];jobban_job=[job.title];jobban_tgt=[ckey]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
counter++
else
jobs += "<td width='20%'><a href='?src=[REF(src)];jobban_job=[job.title];jobban_tgt=[ckey]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
jobs += "<td width='20%'><a href='byond://?src=[REF(src)];jobban_job=[job.title];jobban_tgt=[ckey]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
counter++
if (counter >= 5) //So things dont get squiiiiished!
@@ -436,7 +436,7 @@ GLOBAL_PROTECT(jobban_keylist)
//Science
counter = 0
jobs += "<table cellpadding='1' cellspacing='0' width='100%'>"
jobs += "<tr bgcolor='a44799'><th colspan='[length(science_positions)]'><a href='?src=[REF(src)];jobban_job=sciencedept;jobban_tgt=[ckey]'>Science Positions</a></th></tr><tr align='center'>"
jobs += "<tr bgcolor='a44799'><th colspan='[length(science_positions)]'><a href='byond://?src=[REF(src)];jobban_job=sciencedept;jobban_tgt=[ckey]'>Science Positions</a></th></tr><tr align='center'>"
for (var/jobPos in science_positions)
if (!jobPos)
continue
@@ -445,10 +445,10 @@ GLOBAL_PROTECT(jobban_keylist)
continue
if (jobban_isbanned(ckey, job.title))
jobs += "<td width='20%'><a href='?src=[REF(src)];jobban_job=[job.title];jobban_tgt=[ckey]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
jobs += "<td width='20%'><a href='byond://?src=[REF(src)];jobban_job=[job.title];jobban_tgt=[ckey]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
counter++
else
jobs += "<td width='20%'><a href='?src=[REF(src)];jobban_job=[job.title];jobban_tgt=[ckey]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
jobs += "<td width='20%'><a href='byond://?src=[REF(src)];jobban_job=[job.title];jobban_tgt=[ckey]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
counter++
if (counter >= 5) //So things dont get squiiiiished!
@@ -459,7 +459,7 @@ GLOBAL_PROTECT(jobban_keylist)
//Cargo
counter = 0
jobs += "<table cellpadding='1' cellspacing='0' width='100%'>"
jobs += "<tr bgcolor='593616'><th colspan='[length(cargo_positions)]'><a href='?src=[REF(src)];jobban_job=cargodept;jobban_tgt=[ckey]'>Cargo Positions</a></th></tr><tr align='center'>"
jobs += "<tr bgcolor='593616'><th colspan='[length(cargo_positions)]'><a href='byond://?src=[REF(src)];jobban_job=cargodept;jobban_tgt=[ckey]'>Cargo Positions</a></th></tr><tr align='center'>"
for (var/jobPos in cargo_positions)
if (!jobPos)
continue
@@ -468,10 +468,10 @@ GLOBAL_PROTECT(jobban_keylist)
continue
if (jobban_isbanned(ckey, job.title))
jobs += "<td width='20%'><a href='?src=[REF(src)];jobban_job=[job.title];jobban_tgt=[ckey]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
jobs += "<td width='20%'><a href='byond://?src=[REF(src)];jobban_job=[job.title];jobban_tgt=[ckey]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
counter++
else
jobs += "<td width='20%'><a href='?src=[REF(src)];jobban_job=[job.title];jobban_tgt=[ckey]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
jobs += "<td width='20%'><a href='byond://?src=[REF(src)];jobban_job=[job.title];jobban_tgt=[ckey]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
counter++
if (counter >= 5)
@@ -481,7 +481,7 @@ GLOBAL_PROTECT(jobban_keylist)
//Service
counter = 0
jobs += "<table cellpadding='1' cellspacing='0' width='100%'>"
jobs += "<tr bgcolor='90524b'><th colspan='[length(service_positions)]'><a href='?src=[REF(src)];jobban_job=servicedept;jobban_tgt=[ckey]'>Service Positions</a></th></tr><tr align='center'>"
jobs += "<tr bgcolor='90524b'><th colspan='[length(service_positions)]'><a href='byond://?src=[REF(src)];jobban_job=servicedept;jobban_tgt=[ckey]'>Service Positions</a></th></tr><tr align='center'>"
for (var/jobPos in service_positions)
if (!jobPos)
continue
@@ -490,10 +490,10 @@ GLOBAL_PROTECT(jobban_keylist)
continue
if (jobban_isbanned(ckey, job.title))
jobs += "<td width='20%'><a href='?src=[REF(src)];jobban_job=[job.title];jobban_tgt=[ckey]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
jobs += "<td width='20%'><a href='byond://?src=[REF(src)];jobban_job=[job.title];jobban_tgt=[ckey]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
counter++
else
jobs += "<td width='20%'><a href='?src=[REF(src)];jobban_job=[job.title];jobban_tgt=[ckey]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
jobs += "<td width='20%'><a href='byond://?src=[REF(src)];jobban_job=[job.title];jobban_tgt=[ckey]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
counter++
if (counter >= 5) //So things dont get squiiiiished!
@@ -504,7 +504,7 @@ GLOBAL_PROTECT(jobban_keylist)
//Civilian
counter = 0
jobs += "<table cellpadding='1' cellspacing='0' width='100%'>"
jobs += "<tr bgcolor='999999'><th colspan='[length(civilian_positions)]'><a href='?src=[REF(src)];jobban_job=civiliandept;jobban_tgt=[ckey]'>Civilian Positions</a></th></tr><tr align='center'>"
jobs += "<tr bgcolor='999999'><th colspan='[length(civilian_positions)]'><a href='byond://?src=[REF(src)];jobban_job=civiliandept;jobban_tgt=[ckey]'>Civilian Positions</a></th></tr><tr align='center'>"
for (var/jobPos in civilian_positions)
if (!jobPos)
continue
@@ -513,10 +513,10 @@ GLOBAL_PROTECT(jobban_keylist)
continue
if (jobban_isbanned(ckey, job.title))
jobs += "<td width='20%'><a href='?src=[REF(src)];jobban_job=[job.title];jobban_tgt=[ckey]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
jobs += "<td width='20%'><a href='byond://?src=[REF(src)];jobban_job=[job.title];jobban_tgt=[ckey]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
counter++
else
jobs += "<td width='20%'><a href='?src=[REF(src)];jobban_job=[job.title];jobban_tgt=[ckey]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
jobs += "<td width='20%'><a href='byond://?src=[REF(src)];jobban_job=[job.title];jobban_tgt=[ckey]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
counter++
if (counter >= 5) //So things dont get squiiiiished!
@@ -526,7 +526,7 @@ GLOBAL_PROTECT(jobban_keylist)
//Non-Human (Green)
counter = 0
jobs += "<table cellpadding='1' cellspacing='0' width='100%'>"
jobs += "<tr bgcolor='ccffcc'><th colspan='[length(nonhuman_positions)+1]'><a href='?src=[REF(src)];jobban_job=nonhumandept;jobban_tgt=[ckey]'>Non-human Positions</a></th></tr><tr align='center'>"
jobs += "<tr bgcolor='ccffcc'><th colspan='[length(nonhuman_positions)+1]'><a href='byond://?src=[REF(src)];jobban_job=nonhumandept;jobban_tgt=[ckey]'>Non-human Positions</a></th></tr><tr align='center'>"
for (var/jobPos in nonhuman_positions)
if (!jobPos)
continue
@@ -535,10 +535,10 @@ GLOBAL_PROTECT(jobban_keylist)
continue
if (jobban_isbanned(ckey, job.title))
jobs += "<td width='20%'><a href='?src=[REF(src)];jobban_job=[job.title];jobban_tgt=[ckey]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
jobs += "<td width='20%'><a href='byond://?src=[REF(src)];jobban_job=[job.title];jobban_tgt=[ckey]'><font color=red>[replacetext(job.title, " ", "&nbsp")]</font></a></td>"
counter++
else
jobs += "<td width='20%'><a href='?src=[REF(src)];jobban_job=[job.title];jobban_tgt=[ckey]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
jobs += "<td width='20%'><a href='byond://?src=[REF(src)];jobban_job=[job.title];jobban_tgt=[ckey]'>[replacetext(job.title, " ", "&nbsp")]</a></td>"
counter++
if (counter >= 5) //So things dont get squiiiiished!
@@ -549,28 +549,28 @@ GLOBAL_PROTECT(jobban_keylist)
//pAI isn't technically a job, but it goes in here.
if (jobban_isbanned(ckey, "pAI"))
jobs += "<td width='20%'><a href='?src=[REF(src)];jobban_job=pAI;jobban_tgt=[ckey]'><font color=red>pAI</font></a></td>"
jobs += "<td width='20%'><a href='byond://?src=[REF(src)];jobban_job=pAI;jobban_tgt=[ckey]'><font color=red>pAI</font></a></td>"
else
jobs += "<td width='20%'><a href='?src=[REF(src)];jobban_job=pAI;jobban_tgt=[ckey]'>pAI</a></td>"
jobs += "<td width='20%'><a href='byond://?src=[REF(src)];jobban_job=pAI;jobban_tgt=[ckey]'>pAI</a></td>"
if (jobban_isbanned(ckey, "AntagHUD"))
jobs += "<td width='20%'><a href='?src=[REF(src)];jobban_job=AntagHUD;jobban_tgt=[ckey]'><font color=red>AntagHUD</font></a></td>"
jobs += "<td width='20%'><a href='byond://?src=[REF(src)];jobban_job=AntagHUD;jobban_tgt=[ckey]'><font color=red>AntagHUD</font></a></td>"
else
jobs += "<td width='20%'><a href='?src=[REF(src)];jobban_job=AntagHUD;jobban_tgt=[ckey]'>AntagHUD</a></td>"
jobs += "<td width='20%'><a href='byond://?src=[REF(src)];jobban_job=AntagHUD;jobban_tgt=[ckey]'>AntagHUD</a></td>"
jobs += "</tr></table>"
//Antagonist (Orange)
counter = 0
var/isbanned_dept = jobban_isbanned(ckey, "Antagonist")
jobs += "<table cellpadding='1' cellspacing='0' width='100%'>"
jobs += "<tr bgcolor='ffeeaa'><th colspan='10'><a href='?src=[REF(src)];jobban_job=Antagonist;jobban_tgt=[ckey]'>Antagonist Positions</a></th></tr><tr align='center'>"
jobs += "<tr bgcolor='ffeeaa'><th colspan='10'><a href='byond://?src=[REF(src)];jobban_job=Antagonist;jobban_tgt=[ckey]'>Antagonist Positions</a></th></tr><tr align='center'>"
for (var/antag_type in GLOB.all_antag_types)
var/datum/antagonist/antag = GLOB.all_antag_types[antag_type]
if (!antag || !antag.bantype)
continue
if (isbanned_dept || jobban_isbanned(ckey, antag.bantype))
jobs += "<td width='20%'><a href='?src=[REF(src)];jobban_job=[antag.bantype];jobban_tgt=[ckey]'><font color=red>[replacetext("[antag.role_text]", " ", "&nbsp")]</font></a></td>"
jobs += "<td width='20%'><a href='byond://?src=[REF(src)];jobban_job=[antag.bantype];jobban_tgt=[ckey]'><font color=red>[replacetext("[antag.role_text]", " ", "&nbsp")]</font></a></td>"
else
jobs += "<td width='20%'><a href='?src=[REF(src)];jobban_job=[antag.bantype];jobban_tgt=[ckey]'>[replacetext("[antag.role_text]", " ", "&nbsp")]</a></td>"
jobs += "<td width='20%'><a href='byond://?src=[REF(src)];jobban_job=[antag.bantype];jobban_tgt=[ckey]'>[replacetext("[antag.role_text]", " ", "&nbsp")]</a></td>"
counter++
@@ -584,9 +584,9 @@ GLOBAL_PROTECT(jobban_keylist)
jobs += "<tr bgcolor='ccccff'><th colspan='1'>Other Races</th></tr><tr align='center'>"
if (jobban_isbanned(ckey, "Dionaea"))
jobs += "<td width='20%'><a href='?src=[REF(src)];jobban_job=Dionaea;jobban_tgt=[ckey]'><font color=red>Dionaea</font></a></td>"
jobs += "<td width='20%'><a href='byond://?src=[REF(src)];jobban_job=Dionaea;jobban_tgt=[ckey]'><font color=red>Dionaea</font></a></td>"
else
jobs += "<td width='20%'><a href='?src=[REF(src)];jobban_job=Dionaea;jobban_tgt=[ckey]'>Dionaea</a></td>"
jobs += "<td width='20%'><a href='byond://?src=[REF(src)];jobban_job=Dionaea;jobban_tgt=[ckey]'>Dionaea</a></td>"
jobs += "</tr></table>"
body = "<body>[jobs]</body>"
dat = "<tt>[header][body]</tt>"
+4 -4
View File
@@ -12,19 +12,19 @@ datum/admins/proc/notes_gethtml(var/ckey)
var/savefile/notesfile = new(NOTESFILE)
if(!notesfile) return SPAN_WARNING("Error: Cannot access [NOTESFILE]")
if(ckey)
. = "<b>Notes for <a href='?src=[REF(src)];notes=show'>[ckey]</a>:</b> <a href='?src=[REF(src)];notes=add;ckey=[ckey]'>\[+\]</a> <a href='?src=[REF(src)];notes=remove;ckey=[ckey]'>\[-\]</a><br>"
. = "<b>Notes for <a href='byond://?src=[REF(src)];notes=show'>[ckey]</a>:</b> <a href='byond://?src=[REF(src)];notes=add;ckey=[ckey]'>\[+\]</a> <a href='byond://?src=[REF(src)];notes=remove;ckey=[ckey]'>\[-\]</a><br>"
notesfile.cd = "/[ckey]"
var/index = 1
while( !notesfile.eof )
var/note
notesfile >> note
. += "[note] <a href='?src=[REF(src)];notes=remove;ckey=[ckey];from=[index]'>\[-\]</a><br>"
. += "[note] <a href='byond://?src=[REF(src)];notes=remove;ckey=[ckey];from=[index]'>\[-\]</a><br>"
index++
else
. = "<b>All Notes:</b> <a href='?src=[REF(src)];notes=add'>\[+\]</a> <a href='?src=[REF(src)];notes=remove'>\[-\]</a><br>"
. = "<b>All Notes:</b> <a href='byond://?src=[REF(src)];notes=add'>\[+\]</a> <a href='byond://?src=[REF(src)];notes=remove'>\[-\]</a><br>"
notesfile.cd = "/"
for(var/dir in notesfile.dir)
. += "<a href='?src=[REF(src)];notes=show;ckey=[dir]'>[dir]</a><br>"
. += "<a href='byond://?src=[REF(src)];notes=show;ckey=[dir]'>[dir]</a><br>"
return
//handles removing entries from the buffer, or removing the entire directory if no start_index is given
+1 -1
View File
@@ -117,7 +117,7 @@
if (player_ckey)
var/list/query_details = list("player_ckey" = player_ckey)
dat += "<tr><td align='center' colspan='4' bgcolor='white'><b><a href='?src=[REF(src)];add_player_info=[player_ckey]'>Add Note</a></b></td></tr>"
dat += "<tr><td align='center' colspan='4' bgcolor='white'><b><a href='byond://?src=[REF(src)];add_player_info=[player_ckey]'>Add Note</a></b></td></tr>"
var/DBQuery/init_query = GLOB.dbcon.NewQuery("SELECT ip, computerid FROM ss13_player WHERE ckey = :player_ckey:")
init_query.Execute(query_details)
@@ -30,4 +30,4 @@
if(!destination) return
S.attempt_move(destination)
log_and_message_admins("moved the [shuttle_tag] shuttle to [destination] (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[destination.x];Y=[destination.y];Z=[destination.z]'>JMP</a>)", user)
log_and_message_admins("moved the [shuttle_tag] shuttle to [destination] (<A href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[destination.x];Y=[destination.y];Z=[destination.z]'>JMP</a>)", user)
+7 -7
View File
@@ -323,15 +323,15 @@
return
var/timeout
if (establish_db_connection(GLOB.dbcon))
timeout = "<a href='?_src_=holder;stickyban=[(ban["timeout"] ? "untimeout" : "timeout")]&ckey=[ckey]'>\[[(ban["timeout"] ? "untimeout" : "timeout" )]\]</a>"
timeout = "<a href='byond://?_src_=holder;stickyban=[(ban["timeout"] ? "untimeout" : "timeout")]&ckey=[ckey]'>\[[(ban["timeout"] ? "untimeout" : "timeout" )]\]</a>"
else
timeout = "<a href='?_src_=holder;stickyban=revert&ckey=[ckey]'>\[revert\]</a>"
timeout = "<a href='byond://?_src_=holder;stickyban=revert&ckey=[ckey]'>\[revert\]</a>"
. = list({"
<a href='?_src_=holder;stickyban=remove&ckey=[ckey]'>\[-\]</a>
<a href='byond://?_src_=holder;stickyban=remove&ckey=[ckey]'>\[-\]</a>
[timeout]
<b>[ckey]</b>
<br />"
[ban["message"]] <b><a href='?_src_=holder;stickyban=edit&ckey=[ckey]'>\[Edit\]</a></b><br />
[ban["message"]] <b><a href='byond://?_src_=holder;stickyban=edit&ckey=[ckey]'>\[Edit\]</a></b><br />
"})
if (ban["admin"])
. += "[ban["admin"]]<br />"
@@ -341,12 +341,12 @@
for (var/key in ban["keys"])
if (ckey(key) == ckey)
continue
. += "<li><a href='?_src_=holder;stickyban=remove_alt&ckey=[ckey]&alt=[ckey(key)]'>\[-\]</a>[key]<a href='?_src_=holder;stickyban=exempt&ckey=[ckey]&alt=[ckey(key)]'>\[E\]</a></li>"
. += "<li><a href='byond://?_src_=holder;stickyban=remove_alt&ckey=[ckey]&alt=[ckey(key)]'>\[-\]</a>[key]<a href='byond://?_src_=holder;stickyban=exempt&ckey=[ckey]&alt=[ckey(key)]'>\[E\]</a></li>"
for (var/key in ban["whitelist"])
if (ckey(key) == ckey)
continue
. += "<li><a href='?_src_=holder;stickyban=remove_alt&ckey=[ckey]&alt=[ckey(key)]'>\[-\]</a>[key]<a href='?_src_=holder;stickyban=unexempt&ckey=[ckey]&alt=[ckey(key)]'>\[UE\]</a></li>"
. += "<li><a href='byond://?_src_=holder;stickyban=remove_alt&ckey=[ckey]&alt=[ckey(key)]'>\[-\]</a>[key]<a href='byond://?_src_=holder;stickyban=unexempt&ckey=[ckey]&alt=[ckey(key)]'>\[UE\]</a></li>"
. += "</ol>\n"
@@ -365,7 +365,7 @@
<title>Sticky Bans</title>
</head>
<body>
<h2>All Sticky Bans:</h2> <a href='?_src_=holder;stickyban=add'>\[+\]</a><br>
<h2>All Sticky Bans:</h2> <a href='byond://?_src_=holder;stickyban=add'>\[+\]</a><br>
[banhtml.Join("")]
</body>
"}
+1 -1
View File
@@ -245,7 +245,7 @@ GLOBAL_LIST_EMPTY(ticket_panels)
var/ref_mob = ""
if(owner_client)
ref_mob = "[REF(owner_client.mob)]"
ticket_dat += " - <A HREF='?_src_=holder;adminmoreinfo=[ref_mob]'>?</A> - <A HREF='?_src_=holder;adminplayeropts=[ref_mob]'>PP</A> - <A HREF='?_src_=vars;Vars=[ref_mob]'>VV</A> - <A HREF='?_src_=holder;subtlemessage=[ref_mob]'>SM</A>[owner_client ? "- [admin_jump_link(owner_client.mob, src)]" : ""]"
ticket_dat += " - <A href='byond://?_src_=holder;adminmoreinfo=[ref_mob]'>?</A> - <A href='byond://?_src_=holder;adminplayeropts=[ref_mob]'>PP</A> - <A href='byond://?_src_=vars;Vars=[ref_mob]'>VV</A> - <A href='byond://?_src_=holder;subtlemessage=[ref_mob]'>SM</A>[owner_client ? "- [admin_jump_link(owner_client.mob, src)]" : ""]"
if(open_ticket && open_ticket == ticket)
ticket_dat += "</i>"
ticket_dat += "</li>"
+10 -10
View File
@@ -412,9 +412,9 @@
return alert(usr, "The game has already started.", null, null, null, null)
var/dat = {"<B>What mode do you wish to play?</B><HR>"}
for(var/mode in GLOB.config.modes)
dat += {"<A href='?src=[REF(src)];c_mode2=[mode]'>[GLOB.config.mode_names[mode]]</A><br>"}
dat += {"<A href='?src=[REF(src)];c_mode2=secret'>Secret</A><br>"}
dat += {"<A href='?src=[REF(src)];c_mode2=random'>Random</A><br>"}
dat += {"<A href='byond://?src=[REF(src)];c_mode2=[mode]'>[GLOB.config.mode_names[mode]]</A><br>"}
dat += {"<A href='byond://?src=[REF(src)];c_mode2=secret'>Secret</A><br>"}
dat += {"<A href='byond://?src=[REF(src)];c_mode2=random'>Random</A><br>"}
dat += {"Now: [GLOB.master_mode]"}
usr << browse(dat, "window=c_mode")
@@ -428,8 +428,8 @@
return alert(usr, "The game mode has to be secret!", null, null, null, null)
var/dat = {"<B>What game mode do you want to force secret to be? Use this if you want to change the game mode, but want the players to believe it's secret. This will only work if the current game mode is secret.</B><HR>"}
for(var/mode in GLOB.config.modes)
dat += {"<A href='?src=[REF(src)];f_secret2=[mode]'>[GLOB.config.mode_names[mode]]</A><br>"}
dat += {"<A href='?src=[REF(src)];f_secret2=secret'>Random (default)</A><br>"}
dat += {"<A href='byond://?src=[REF(src)];f_secret2=[mode]'>[GLOB.config.mode_names[mode]]</A><br>"}
dat += {"<A href='byond://?src=[REF(src)];f_secret2=secret'>Random (default)</A><br>"}
dat += {"Now: [GLOB.secret_force_mode]"}
usr << browse(dat, "window=f_secret")
@@ -831,7 +831,7 @@
dat += "Location: [location_description]<br>"
if(special_role_description)
dat += "Special Role Desc: [special_role_description]<br>"
dat += "(<a href='?src=[REF(usr)];priv_msg=[REF(M)]'>PM</a>) (<A HREF='?src=[REF(src)];adminplayeropts=[REF(M)]'>PP</A>) (<A HREF='?_src_=vars;Vars=[REF(M)]'>VV</A>) (<A HREF='?src=[REF(src)];subtlemessage=[REF(M)]'>SM</A>) ([admin_jump_link(M, src)]) (<A HREF='?src=[REF(src)];secretsadmin=check_antagonist'>CA</A>)"
dat += "(<a href='byond://?src=[REF(usr)];priv_msg=[REF(M)]'>PM</a>) (<A href='byond://?src=[REF(src)];adminplayeropts=[REF(M)]'>PP</A>) (<A href='byond://?_src_=vars;Vars=[REF(M)]'>VV</A>) (<A href='byond://?src=[REF(src)];subtlemessage=[REF(M)]'>SM</A>) ([admin_jump_link(M, src)]) (<A href='byond://?src=[REF(src)];secretsadmin=check_antagonist'>CA</A>)"
var/datum/browser/extrainfo_win = new(usr, "extrainfo", "Extra Info (M.name)", 450, 500)
extrainfo_win.set_content(dat)
@@ -979,7 +979,7 @@
for (var/page = 1, page <= B.pages.len, page++)
var/obj/pageobj = B.pages[page]
data += "<A href='?src=[REF(src)];AdminFaxViewPage=[page];paper_bundle=[REF(B)]'>Page [page] - [pageobj.name]</A><BR>"
data += "<A href='byond://?src=[REF(src)];AdminFaxViewPage=[page];paper_bundle=[REF(B)]'>Page [page] - [pageobj.name]</A><BR>"
usr << browse(data, "window=[B.name]")
else
@@ -1589,11 +1589,11 @@
/mob/extra_admin_link(var/source)
if(client && eyeobj)
return "|<A HREF='?[source];adminplayerobservejump=[REF(eyeobj)]'>EYE</A>"
return "|<A href='byond://?[source];adminplayerobservejump=[REF(eyeobj)]'>EYE</A>"
/mob/abstract/ghost/observer/extra_admin_link(var/source)
if(mind && mind.current)
return "|<A HREF='?[source];adminplayerobservejump=[REF(mind.current)]'>BDY</A>"
return "|<A href='byond://?[source];adminplayerobservejump=[REF(mind.current)]'>BDY</A>"
/proc/admin_jump_link(var/atom/target, var/source)
if(!target) return
@@ -1603,7 +1603,7 @@
else
source = "_src_=holder"
. = "<A HREF='?[source];adminplayerobservejump=[REF(target)]'>JMP</A>"
. = "<A href='byond://?[source];adminplayerobservejump=[REF(target)]'>JMP</A>"
. += target.extra_admin_link(source)
/proc/spawn_humanoid_species_admin(var/mob/user, var/mob/M, var/delmob)
+3 -3
View File
@@ -717,18 +717,18 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/sdql2_vv_all, new(null
/datum/sdql2_query/proc/SDQL_print(object, list/text_list, print_nulls = TRUE)
if(isdatum(object))
text_list += "<A HREF='?_src_=vars;Vars=[REF(object)]'>[REF(object)]</A> : [object]"
text_list += "<A href='byond://?_src_=vars;Vars=[REF(object)]'>[REF(object)]</A> : [object]"
if(istype(object, /atom))
var/atom/A = object
var/turf/T = A.loc
var/area/a
if(istype(T))
text_list += " <font color='gray'>at</font> [T] <a href='?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>(JMP)</a>"
text_list += " <font color='gray'>at</font> [T] <a href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>(JMP)</a>"
a = T.loc
else
var/turf/final = get_turf(T) //Recursive, hopefully?
if(istype(final))
text_list += " <font color='gray'>at</font> [final] <a href='?_src_=holder;adminplayerobservecoodjump=1;X=[final.x];Y=[final.y];Z=[final.z]'>(JMP)</a>"
text_list += " <font color='gray'>at</font> [final] <a href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[final.x];Y=[final.y];Z=[final.z]'>(JMP)</a>"
a = final.loc
else
text_list += " <font color='gray'>at</font> nonexistent location"
+9 -9
View File
@@ -13,27 +13,27 @@
data += "<b>If you do not know what these do, you shouldn't be touching them!</b><hr>"
data += "<h2>Hub Visibility Setting:</h2><br>"
data += "Currently [world.visibility ? "<font color='green'>VISIBLE</font>" : SPAN_WARNING("HIDDEN")]. <a href='?_src_=holder;access_control=hub'>Toggle</a><br><hr>"
data += "Currently [world.visibility ? "<font color='green'>VISIBLE</font>" : SPAN_WARNING("HIDDEN")]. <a href='byond://?_src_=holder;access_control=hub'>Toggle</a><br><hr>"
data += "<h2>IP Intel Settings:</h2><br><ul>"
data += "<li>Current warning level: [GLOB.config.ipintel_rating_bad ? "[GLOB.config.ipintel_rating_bad]" : SPAN_WARNING("DISABLED")]. <a href='?_src_=holder;access_control=intel_bad'>Edit</a></li>"
data += "<li>Current kick level: [GLOB.config.ipintel_rating_kick ? "[GLOB.config.ipintel_rating_kick]" : SPAN_WARNING("DISABLED")]. <a href='?_src_=holder;access_control=intel_kick'>Edit</a></li>"
data += "<li>Current warning level: [GLOB.config.ipintel_rating_bad ? "[GLOB.config.ipintel_rating_bad]" : SPAN_WARNING("DISABLED")]. <a href='byond://?_src_=holder;access_control=intel_bad'>Edit</a></li>"
data += "<li>Current kick level: [GLOB.config.ipintel_rating_kick ? "[GLOB.config.ipintel_rating_kick]" : SPAN_WARNING("DISABLED")]. <a href='byond://?_src_=holder;access_control=intel_kick'>Edit</a></li>"
data += "</ul><hr>"
data += "<h2>Player Age Settings:</h2><br><ul>"
data += "<li>New players: [GLOB.config.access_deny_new_players ? SPAN_WARNING("DENIED") : "<font color='green'>ALLOWED</font>"]. <a href='?_src_=holder;access_control=new_players;'>Toggle</a></li>"
data += "<li>Account age restriction: [GLOB.config.access_deny_new_accounts == -1 ? SPAN_WARNING("DISABLED") : "[GLOB.config.access_deny_new_accounts] DAYS"]. <a href='?_src_=holder;access_control=new_accounts;'>Edit</a></li>"
data += "<li>New players: [GLOB.config.access_deny_new_players ? SPAN_WARNING("DENIED") : "<font color='green'>ALLOWED</font>"]. <a href='byond://?_src_=holder;access_control=new_players;'>Toggle</a></li>"
data += "<li>Account age restriction: [GLOB.config.access_deny_new_accounts == -1 ? SPAN_WARNING("DISABLED") : "[GLOB.config.access_deny_new_accounts] DAYS"]. <a href='byond://?_src_=holder;access_control=new_accounts;'>Edit</a></li>"
data += "</ul><hr>"
data += "<h2>VM Detection Settings:</h2><br><ul>"
data += "<li>VM identifier count to warn on: [GLOB.config.access_warn_vms ? "[GLOB.config.access_warn_vms]" : SPAN_WARNING("DISABLED")]. <a href='?_src_=holder;access_control=vm_warn;'>Edit</a></li>"
data += "<li>VM identifier count to kick on: [GLOB.config.access_deny_vms ? "[GLOB.config.access_deny_vms]" : SPAN_WARNING("DISABLED")]. <a href='?_src_=holder;access_control=vm_kick;'>Edit</a></li>"
data += "<li>VM identifier count to warn on: [GLOB.config.access_warn_vms ? "[GLOB.config.access_warn_vms]" : SPAN_WARNING("DISABLED")]. <a href='byond://?_src_=holder;access_control=vm_warn;'>Edit</a></li>"
data += "<li>VM identifier count to kick on: [GLOB.config.access_deny_vms ? "[GLOB.config.access_deny_vms]" : SPAN_WARNING("DISABLED")]. <a href='byond://?_src_=holder;access_control=vm_kick;'>Edit</a></li>"
data += "</ul>"
data += "<h2>Guest join settings:</h2><br><ul>"
data += "<li>Guests [(GLOB.config.guests_allowed || GLOB.config.external_auth) ? "<font color='green'>CAN</font>" : SPAN_WARNING("CAN NOT")] join.</li>"
data += "<li>Guests [GLOB.config.guests_allowed ? "<font color='green'>CAN</font>" : SPAN_WARNING("CAN NOT")] play. <a href='?_src_=holder;access_control=guest;'>Toggle</a></li>"
data += "<li>External authetification: [GLOB.config.external_auth ? "<font color='green'>ENABLED</font>" : SPAN_WARNING("DISABLED")]. <a href='?_src_=holder;access_control=external_auth;'>Toggle</a></li>"
data += "<li>Guests [GLOB.config.guests_allowed ? "<font color='green'>CAN</font>" : SPAN_WARNING("CAN NOT")] play. <a href='byond://?_src_=holder;access_control=guest;'>Toggle</a></li>"
data += "<li>External authetification: [GLOB.config.external_auth ? "<font color='green'>ENABLED</font>" : SPAN_WARNING("DISABLED")]. <a href='byond://?_src_=holder;access_control=external_auth;'>Toggle</a></li>"
data += "</ul>"
config_window.set_user(src.mob)
+4 -4
View File
@@ -41,7 +41,7 @@ GLOBAL_LIST_INIT(adminhelp_ignored_words, list("unknown","the","a","an","of","mo
if(!(word in GLOB.adminhelp_ignored_words))
if(word == "ai" && !ai_found)
ai_found = 1
msg += "<b>[original_word] <A HREF='?_src_=holder;adminchecklaws=[REF(mob)]'>(CL)</A></b> "
msg += "<b>[original_word] <A href='byond://?_src_=holder;adminchecklaws=[REF(mob)]'>(CL)</A></b> "
continue
else
var/mob/found = ckeys[word]
@@ -52,10 +52,10 @@ GLOBAL_LIST_INIT(adminhelp_ignored_words, list("unknown","the","a","an","of","mo
if(found)
if(!(found in mobs_found))
mobs_found += found
msg += "<b>[original_word] <A HREF='?_src_=holder;adminmoreinfo=[REF(found)]'>(?)</A>"
msg += "<b>[original_word] <A href='byond://?_src_=holder;adminmoreinfo=[REF(found)]'>(?)</A>"
if(!ai_found && isAI(found))
ai_found = 1
msg += " <A HREF='?_src_=holder;adminchecklaws=[REF(mob)]'>(CL)</A>"
msg += " <A href='byond://?_src_=holder;adminchecklaws=[REF(mob)]'>(CL)</A>"
msg += "</b> "
continue
msg += "[original_word] "
@@ -111,7 +111,7 @@ GLOBAL_LIST_INIT(adminhelp_ignored_words, list("unknown","the","a","an","of","mo
//Options bar: mob, details ( admin = 2, undibbsed admin = 3, mentor = 4, character name (0 = just ckey, 1 = ckey and character name), link? (0 no don't make it a link, 1 do so),
// highlight special roles (0 = everyone has same looking name, 1 = antags / special roles get a golden name)
msg = SPAN_NOTICE("<b>[create_text_tag("HELP")][get_options_bar(mob, 2, 1, 1, 1, ticket)] (<a href='?_src_=holder;take_ticket=[REF(ticket)]'>[(ticket.status == TICKET_OPEN) ? "TAKE" : "JOIN"]</a>) (<a href='?src=[REF(usr)];close_ticket=[REF(ticket)]'>CLOSE</a>):</b> [msg]")
msg = SPAN_NOTICE("<b>[create_text_tag("HELP")][get_options_bar(mob, 2, 1, 1, 1, ticket)] (<a href='byond://?_src_=holder;take_ticket=[REF(ticket)]'>[(ticket.status == TICKET_OPEN) ? "TAKE" : "JOIN"]</a>) (<a href='byond://?src=[REF(usr)];close_ticket=[REF(ticket)]'>CLOSE</a>):</b> [msg]")
var/admin_number_present = 0
var/admin_number_afk = 0
+3 -3
View File
@@ -128,7 +128,7 @@
var/sender_message = "<span class='pm'><span class='out'>" + create_text_tag("PM <-", src) + " to <span class='name'>[get_options_bar(C, holder ? 1 : 0, holder ? 1 : 0, 1)]</span>"
if(holder)
sender_message += " (<a href='?_src_=holder;take_ticket=[REF(ticket)]'>[(ticket.status == TICKET_OPEN) ? "TAKE" : "JOIN"]</a>) (<a href='?src=[REF(usr)];close_ticket=[REF(ticket)]'>CLOSE</a>)"
sender_message += " (<a href='byond://?_src_=holder;take_ticket=[REF(ticket)]'>[(ticket.status == TICKET_OPEN) ? "TAKE" : "JOIN"]</a>) (<a href='byond://?src=[REF(usr)];close_ticket=[REF(ticket)]'>CLOSE</a>)"
sender_message += ": <span class='message linkify'>[generate_ahelp_key_words(mob, msg)]</span>"
else
sender_message += ": <span class='message linkify'>[msg]</span>"
@@ -137,7 +137,7 @@
var/receiver_message = "<span class='pm'><span class='in'>" + create_text_tag("PM ->", C) + " <b>\[[receive_pm_type] PM\]</b> <span class='name'>[get_options_bar(src, C.holder ? 1 : 0, C.holder ? 1 : 0, 1)]</span>"
if(C.holder)
receiver_message += " (<a href='?_src_=holder;take_ticket=[REF(ticket)]'>[(ticket.status == TICKET_OPEN) ? "TAKE" : "JOIN"]</a>) (<a href='?src=[REF(usr)];close_ticket=[REF(ticket)]'>CLOSE</a>)"
receiver_message += " (<a href='byond://?_src_=holder;take_ticket=[REF(ticket)]'>[(ticket.status == TICKET_OPEN) ? "TAKE" : "JOIN"]</a>) (<a href='byond://?src=[REF(usr)];close_ticket=[REF(ticket)]'>CLOSE</a>)"
receiver_message += ": <span class='message linkify'>[generate_ahelp_key_words(C.mob, msg)]</span>"
else
receiver_message += ": <span class='message linkify'>[msg]</span>"
@@ -160,7 +160,7 @@
if(X == C || X == src)
continue
if(X.key != key && X.key != C.key && (X.holder.rights & (R_ADMIN|R_MOD)))
to_chat(X, "<span class='pm'><span class='other'>" + create_text_tag("PM <->", X) + " <span class='name'>[key_name(src, X, 0, ticket)]</span> to <span class='name'>[key_name(C, X, 0, ticket)]</span> (<a href='?_src_=holder;take_ticket=[REF(ticket)]'>[(ticket.status == TICKET_OPEN) ? "TAKE" : "JOIN"]</a>) (<a href='?src=[REF(usr)];close_ticket=[REF(ticket)]'>CLOSE</a>): <span class='message linkify'>[msg]</span></span></span>")
to_chat(X, "<span class='pm'><span class='other'>" + create_text_tag("PM <->", X) + " <span class='name'>[key_name(src, X, 0, ticket)]</span> to <span class='name'>[key_name(C, X, 0, ticket)]</span> (<a href='byond://?_src_=holder;take_ticket=[REF(ticket)]'>[(ticket.status == TICKET_OPEN) ? "TAKE" : "JOIN"]</a>) (<a href='byond://?src=[REF(usr)];close_ticket=[REF(ticket)]'>CLOSE</a>): <span class='message linkify'>[msg]</span></span></span>")
/client/proc/cmd_admin_discord_pm(sender)
if(prefs.muted & MUTE_ADMINHELP)
+1 -1
View File
@@ -36,7 +36,7 @@
for(var/s in GLOB.staff)
var/client/C = s
if ((R_ADMIN|R_MOD) & C.holder.rights)
to_chat(C, "<span class='mod_channel'>" + create_text_tag("MOD", C) + " <span class='name'>[sender_name]</span>(<A HREF='?src=[REF(C.holder)];adminplayerobservejump=[REF(mob)]'>JMP</A>): <span class='message linkify'>[msg]</span></span>")
to_chat(C, "<span class='mod_channel'>" + create_text_tag("MOD", C) + " <span class='name'>[sender_name]</span>(<A href='byond://?src=[REF(C.holder)];adminplayerobservejump=[REF(mob)]'>JMP</A>): <span class='message linkify'>[msg]</span></span>")
feedback_add_details("admin_verb","MS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
+1 -1
View File
@@ -22,7 +22,7 @@
for(var/mob/M in GLOB.mob_list)
if (check_rights(R_ADMIN|R_MOD|R_CCIAA, 0, M) && M.client.aooc_mute_holder_check() == FALSE)
to_chat(M, "<span class='aooc'>" + create_text_tag("A-OOC", M.client) + " <EM>[get_options_bar(src, 0, 1, 1)](<A HREF='?_src_=holder;adminplayerobservejump=[REF(src.mob)]'>JMP</A>):</EM> <span class='message linkify'>[msg]</span></span>")
to_chat(M, "<span class='aooc'>" + create_text_tag("A-OOC", M.client) + " <EM>[get_options_bar(src, 0, 1, 1)](<A href='byond://?_src_=holder;adminplayerobservejump=[REF(src.mob)]'>JMP</A>):</EM> <span class='message linkify'>[msg]</span></span>")
else if (M.mind && M.mind.special_role && M.client && player_is_antag(M.mind))
to_chat(M, "<span class='aooc'>" + create_text_tag("A-OOC", M.client) + " <EM>[display_name]:</EM> <span class='message linkify'>[msg]</span></span>")
+4 -4
View File
@@ -13,7 +13,7 @@
return
var/image/cross = image('icons/obj/library.dmi',"bible")
msg = SPAN_NOTICE("[icon2html(cross, src)] <b><font color=purple>PRAY: </font>[key_name(src, 1)] (<A HREF='?_src_=holder;adminmoreinfo=[REF(src)]'>?</A>) (<A HREF='?_src_=holder;adminplayeropts=[REF(src)]'>PP</A>) (<A HREF='?_src_=vars;Vars=[REF(src)]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=[REF(src)]'>SM</A>) ([admin_jump_link(src, src)]) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A HREF='?_src_=holder;adminspawncookie=[REF(src)]'>SC</a>):</b> [msg]")
msg = SPAN_NOTICE("[icon2html(cross, src)] <b><font color=purple>PRAY: </font>[key_name(src, 1)] (<A href='byond://?_src_=holder;adminmoreinfo=[REF(src)]'>?</A>) (<A href='byond://?_src_=holder;adminplayeropts=[REF(src)]'>PP</A>) (<A href='byond://?_src_=vars;Vars=[REF(src)]'>VV</A>) (<A href='byond://?_src_=holder;subtlemessage=[REF(src)]'>SM</A>) ([admin_jump_link(src, src)]) (<A href='byond://?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A href='byond://?_src_=holder;adminspawncookie=[REF(src)]'>SC</a>):</b> [msg]")
for(var/s in GLOB.staff)
var/client/C = s
@@ -26,8 +26,8 @@
log_admin("PRAYER: [key_name(src)]: [msg]")
/proc/Centcomm_announce(var/msg, var/mob/Sender, var/iamessage)
var/msg_cciaa = SPAN_NOTICE("<b><font color=orange>[uppertext(SSatlas.current_map.boss_short)][iamessage ? " IA" : ""]:</font>[key_name(Sender, 1)] (<A HREF='?_src_=holder;CentcommReply=[REF(Sender)]'>RPLY</A>):</b> [msg]")
var/msg_admin = SPAN_NOTICE("<b><font color=orange>[uppertext(SSatlas.current_map.boss_short)][iamessage ? " IA" : ""]:</font>[key_name(Sender, 1)] (<A HREF='?_src_=holder;adminplayeropts=[REF(Sender)]'>PP</A>) (<A HREF='?_src_=vars;Vars=[REF(Sender)]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=[REF(Sender)]'>SM</A>) ([admin_jump_link(Sender)]) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A HREF='?_src_=holder;BlueSpaceArtillery=[REF(Sender)]'>BSA</A>) (<A HREF='?_src_=holder;CentcommReply=[REF(Sender)]'>RPLY</A>):</b> [msg]")
var/msg_cciaa = SPAN_NOTICE("<b><font color=orange>[uppertext(SSatlas.current_map.boss_short)][iamessage ? " IA" : ""]:</font>[key_name(Sender, 1)] (<A href='byond://?_src_=holder;CentcommReply=[REF(Sender)]'>RPLY</A>):</b> [msg]")
var/msg_admin = SPAN_NOTICE("<b><font color=orange>[uppertext(SSatlas.current_map.boss_short)][iamessage ? " IA" : ""]:</font>[key_name(Sender, 1)] (<A href='byond://?_src_=holder;adminplayeropts=[REF(Sender)]'>PP</A>) (<A href='byond://?_src_=vars;Vars=[REF(Sender)]'>VV</A>) (<A href='byond://?_src_=holder;subtlemessage=[REF(Sender)]'>SM</A>) ([admin_jump_link(Sender)]) (<A href='byond://?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A href='byond://?_src_=holder;BlueSpaceArtillery=[REF(Sender)]'>BSA</A>) (<A href='byond://?_src_=holder;CentcommReply=[REF(Sender)]'>RPLY</A>):</b> [msg]")
var/cciaa_present = 0
var/cciaa_afk = 0
@@ -56,7 +56,7 @@
SSdiscord.post_webhook_event(WEBHOOK_CCIAA_EMERGENCY_MESSAGE, list("message"=msg, "sender"="[Sender]", "cciaa_present"=cciaa_present, "cciaa_afk"=cciaa_afk))
/proc/Syndicate_announce(var/msg, var/mob/Sender)
msg = SPAN_NOTICE("<b><font color=crimson>ILLEGAL:</font>[key_name(Sender, 1)] (<A HREF='?_src_=holder;adminplayeropts=[REF(Sender)]'>PP</A>) (<A HREF='?_src_=vars;Vars=[REF(Sender)]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=[REF(Sender)]'>SM</A>) ([admin_jump_link(Sender)]) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A HREF='?_src_=holder;BlueSpaceArtillery=[REF(Sender)]'>BSA</A>) (<A HREF='?_src_=holder;SyndicateReply=[REF(Sender)]'>RPLY</A>):</b> [msg]")
msg = SPAN_NOTICE("<b><font color=crimson>ILLEGAL:</font>[key_name(Sender, 1)] (<A href='byond://?_src_=holder;adminplayeropts=[REF(Sender)]'>PP</A>) (<A href='byond://?_src_=vars;Vars=[REF(Sender)]'>VV</A>) (<A href='byond://?_src_=holder;subtlemessage=[REF(Sender)]'>SM</A>) ([admin_jump_link(Sender)]) (<A href='byond://?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A href='byond://?_src_=holder;BlueSpaceArtillery=[REF(Sender)]'>BSA</A>) (<A href='byond://?_src_=holder;SyndicateReply=[REF(Sender)]'>RPLY</A>):</b> [msg]")
for(var/s in GLOB.staff)
var/client/C = s
if(R_ADMIN & C.holder.rights)
+1 -1
View File
@@ -266,7 +266,7 @@
var/list/data = list("unread" = "", "expired" = "")
if (count)
data["unread"] = "You have <b>[count] unread warning\s!</b> Click <a href='?JSlink=warnings;notification=:src_ref'>here</a> to review and acknowledge them!"
data["unread"] = "You have <b>[count] unread warning\s!</b> Click <a href='byond://?JSlink=warnings;notification=:src_ref'>here</a> to review and acknowledge them!"
if (count_expire)
data["expired"] = "[count_expire] of your warnings have expired."
+11 -11
View File
@@ -1,11 +1,11 @@
/atom/vv_get_header()
. = ..()
. += {"
<a href='?_src_=vars;datumedit=[REF(src)];varnameedit=name'><b>[src]</b></a>
<a href='byond://?_src_=vars;datumedit=[REF(src)];varnameedit=name'><b>[src]</b></a>
<br><font size='1'>
<a href='?_src_=vars;rotatedatum=[REF(src)];rotatedir=left'><<</a>
<a href='?_src_=vars;datumedit=[REF(src)];varnameedit=dir'>[dir2text(dir)]</a>
<a href='?_src_=vars;rotatedatum=[REF(src)];rotatedir=right'>>></a>
<a href='byond://?_src_=vars;rotatedatum=[REF(src)];rotatedir=left'><<</a>
<a href='byond://?_src_=vars;datumedit=[REF(src)];varnameedit=dir'>[dir2text(dir)]</a>
<a href='byond://?_src_=vars;rotatedatum=[REF(src)];rotatedir=right'>>></a>
</font>
"}
@@ -13,14 +13,14 @@
. = ..()
. += {"
<br><font size='1'>
<br><a href='?_src_=vars;datumedit=[REF(src)];varnameedit=ckey'>[ckey ? ckey : "No ckey"]</a> / <a href='?_src_=vars;datumedit=[REF(src)];varnameedit=real_name'>[real_name ? real_name : "No real name"]</a>
<br><a href='byond://?_src_=vars;datumedit=[REF(src)];varnameedit=ckey'>[ckey ? ckey : "No ckey"]</a> / <a href='byond://?_src_=vars;datumedit=[REF(src)];varnameedit=real_name'>[real_name ? real_name : "No real name"]</a>
<br>
BRUTE:<a href='?_src_=vars;mobToDamage=[REF(src)];adjustDamage=brute'>[getBruteLoss()]</a>
FIRE:<a href='?_src_=vars;mobToDamage=[REF(src)];adjustDamage=fire'>[getFireLoss()]</a>
TOXIN:<a href='?_src_=vars;mobToDamage=[REF(src)];adjustDamage=toxin'>[getToxLoss()]</a>
OXY:<a href='?_src_=vars;mobToDamage=[REF(src)];adjustDamage=oxygen'>[getOxyLoss()]</a>
CLONE:<a href='?_src_=vars;mobToDamage=[REF(src)];adjustDamage=clone'>[getCloneLoss()]</a>
BRAIN:<a href='?_src_=vars;mobToDamage=[REF(src)];adjustDamage=brain'>[getBrainLoss()]</a>
BRUTE:<a href='byond://?_src_=vars;mobToDamage=[REF(src)];adjustDamage=brute'>[getBruteLoss()]</a>
FIRE:<a href='byond://?_src_=vars;mobToDamage=[REF(src)];adjustDamage=fire'>[getFireLoss()]</a>
TOXIN:<a href='byond://?_src_=vars;mobToDamage=[REF(src)];adjustDamage=toxin'>[getToxLoss()]</a>
OXY:<a href='byond://?_src_=vars;mobToDamage=[REF(src)];adjustDamage=oxygen'>[getOxyLoss()]</a>
CLONE:<a href='byond://?_src_=vars;mobToDamage=[REF(src)];adjustDamage=clone'>[getCloneLoss()]</a>
BRAIN:<a href='byond://?_src_=vars;mobToDamage=[REF(src)];adjustDamage=brain'>[getBrainLoss()]</a>
</font>
"}
@@ -65,7 +65,7 @@
</td>
<td width='50%'>
<div align='center'>
<a id='refresh' data-initial-href='?_src_=vars;datumrefresh=[REF(thing)];search=' href='?_src_=vars;datumrefresh=[REF(thing)];search=[search]'>Refresh</a>
<a id='refresh' data-initial-href='byond://?_src_=vars;datumrefresh=[REF(thing)];search=' href='byond://?_src_=vars;datumrefresh=[REF(thing)];search=[search]'>Refresh</a>
<form>
<select name='file'
size='1'
@@ -148,12 +148,12 @@
else if(istype(value, /datum))
var/datum/DA = value
if("[DA]" == "[DA.type]" || !"[DA]")
vtext = "<a href='?_src_=vars;Vars=[REF(DA)]'>[REF(DA)]</a> - [DA.type]"
vtext = "<a href='byond://?_src_=vars;Vars=[REF(DA)]'>[REF(DA)]</a> - [DA.type]"
else
vtext = "<a href='?_src_=vars;Vars=[REF(DA)]'>[REF(DA)]</a> - [DA] ([DA.type])"
vtext = "<a href='byond://?_src_=vars;Vars=[REF(DA)]'>[REF(DA)]</a> - [DA] ([DA.type])"
else if(istype(value, /client))
var/client/C = value
vtext = "<a href='?_src_=vars;Vars=[REF(C)]'>[REF(C)]</a> - [C] ([C.type])"
vtext = "<a href='byond://?_src_=vars;Vars=[REF(C)]'>[REF(C)]</a> - [C] ([C.type])"
else if(islist(value))
var/list/L = value
vtext = "/list ([length(L)])"
@@ -185,7 +185,7 @@
extra += "</ul>"
else if(length(L) >= 100)
vtext = "([length(L)]): <ul><li><a href='?_src_=vars;datumview=[REF(L)];varnameview=[varname];original_datum=[REF(D)]'>List too large to display, click to view.</a></ul>"
vtext = "([length(L)]): <ul><li><a href='byond://?_src_=vars;datumview=[REF(L)];varnameview=[varname];original_datum=[REF(D)]'>List too large to display, click to view.</a></ul>"
else
vtext = "[value]"
@@ -198,9 +198,9 @@
if(D)
//These are the VV_HK_BASIC_* defines
ecm = {"
(<a href='?_src_=vars;datumedit=[REF(D)];varnameedit=[varname]'>E</a>)
(<a href='?_src_=vars;datumchange=[REF(D)];varnamechange=[varname]'>C</a>)
(<a href='?_src_=vars;datummass=[REF(D)];varnamemass=[varname]'>M</a>)
(<a href='byond://?_src_=vars;datumedit=[REF(D)];varnameedit=[varname]'>E</a>)
(<a href='byond://?_src_=vars;datumchange=[REF(D)];varnamechange=[varname]'>C</a>)
(<a href='byond://?_src_=vars;datummass=[REF(D)];varnamemass=[varname]'>M</a>)
"}
var/valuestr = make_view_variables_value(D, value, varname)