Adds token functionality

This commit is contained in:
ItsSelis
2022-12-11 13:50:52 +01:00
parent edc51a4684
commit cd3356ead9
10 changed files with 188 additions and 101 deletions
+1 -2
View File
@@ -186,7 +186,7 @@ var/savefile/Banlist
if(!expiry) expiry = "Removal Pending"
else expiry = "Permaban"
dat += text("<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 += text("<tr><td><A href='?src=[ref];[HrefToken(TRUE)];unbanf=[key][id]'>(U)</A><A href='?src=[ref];[HrefToken(TRUE)];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]"
@@ -227,4 +227,3 @@ var/savefile/Banlist
Banlist.cd = "/base"
for (var/A in Banlist.dir)
RemoveBan(A)
+79 -79
View File
@@ -43,12 +43,12 @@ var/global/floorIsLava = 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='?src=\ref[src];[HrefToken(TRUE)];editrights=show'>[M.client.holder ? M.client.holder.rank : "Player"]</A>\]"
if(istype(M, /mob/new_player))
body += " <B>Hasn't Entered Game</B> "
else
body += " \[<A href='?src=\ref[src];revive=\ref[M]'>Heal</A>\] "
body += " \[<A href='?src=\ref[src];[HrefToken(TRUE)];revive=\ref[M]'>Heal</A>\] "
if(M.client)
body += "<br><b>First connection:</b> [M.client.player_age] days ago"
@@ -57,41 +57,41 @@ var/global/floorIsLava = 0
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='?_src_=vars;[HrefToken(TRUE)];Vars=\ref[M]'>VV</a> -
<a href='?src=\ref[src];[HrefToken(TRUE)];traitor=\ref[M]'>TP</a> -
<a href='?src=\ref[usr];[HrefToken(TRUE)];priv_msg=\ref[M]'>PM</a> -
<a href='?src=\ref[src];[HrefToken(TRUE)];subtlemessage=\ref[M]'>SM</a> -
[admin_jump_link(M, src)]\] <br>
<b>Mob type:</b> [M.type]<br>
<b>Inactivity time:</b> [M.client ? "[M.client.inactivity/600] minutes" : "Logged out"]<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];newban=\ref[M]'>Ban</A> |
<A href='?src=\ref[src];jobban2=\ref[M]'>Jobban</A> |
<A href='?src=\ref[src];notes=show;mob=\ref[M]'>Notes</A>
<A href='?src=\ref[src];[HrefToken(TRUE)];boot2=\ref[M]'>Kick</A> |
<A href='?_src_=holder;[HrefToken(TRUE)];warn=[M.ckey]'>Warn</A> |
<A href='?src=\ref[src];[HrefToken(TRUE)];newban=\ref[M]'>Ban</A> |
<A href='?src=\ref[src];[HrefToken(TRUE)];jobban2=\ref[M]'>Jobban</A> |
<A href='?src=\ref[src];[HrefToken(TRUE)];notes=show;mob=\ref[M]'>Notes</A>
"}
if(M.client)
body += "| <A HREF='?src=\ref[src];sendtoprison=\ref[M]'>Prison</A> | "
body += "\ <A HREF='?src=\ref[src];sendbacktolobby=\ref[M]'>Send back to Lobby</A> | "
body += "| <A HREF='?src=\ref[src];[HrefToken(TRUE)];sendtoprison=\ref[M]'>Prison</A> | "
body += "\ <A HREF='?src=\ref[src];[HrefToken(TRUE)];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_ALL]'><font color='[(muted & MUTE_ALL)?"red":"blue"]'>toggle all</font></a>)
\[<A href='?src=\ref[src];[HrefToken(TRUE)];mute=\ref[M];mute_type=[MUTE_IC]'><font color='[(muted & MUTE_IC)?"red":"blue"]'>IC</font></a> |
<A href='?src=\ref[src];[HrefToken(TRUE)];mute=\ref[M];mute_type=[MUTE_OOC]'><font color='[(muted & MUTE_OOC)?"red":"blue"]'>OOC</font></a> |
<A href='?src=\ref[src];[HrefToken(TRUE)];mute=\ref[M];mute_type=[MUTE_PRAY]'><font color='[(muted & MUTE_PRAY)?"red":"blue"]'>PRAY</font></a> |
<A href='?src=\ref[src];[HrefToken(TRUE)];mute=\ref[M];mute_type=[MUTE_ADMINHELP]'><font color='[(muted & MUTE_ADMINHELP)?"red":"blue"]'>ADMINHELP</font></a> |
<A href='?src=\ref[src];[HrefToken(TRUE)];mute=\ref[M];mute_type=[MUTE_DEADCHAT]'><font color='[(muted & MUTE_DEADCHAT)?"red":"blue"]'>DEADCHAT</font></a>\]
(<A href='?src=\ref[src];[HrefToken(TRUE)];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='?src=\ref[src];[HrefToken(TRUE)];jumpto=\ref[M]'><b>Jump to</b></A> |
<A href='?src=\ref[src];[HrefToken(TRUE)];getmob=\ref[M]'>Get</A> |
<A href='?src=\ref[src];[HrefToken(TRUE)];sendmob=\ref[M]'>Send To</A>
<br><br>
[check_rights(R_ADMIN|R_MOD|R_EVENT,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|R_EVENT,0) ? "<A href='?src=\ref[src];[HrefToken(TRUE)];traitor=\ref[M]'>Traitor panel</A> | " : "" ]
<A href='?src=\ref[src];[HrefToken(TRUE)];narrateto=\ref[M]'>Narrate to</A> |
<A href='?src=\ref[src];[HrefToken(TRUE)];subtlemessage=\ref[M]'>Subtle message</A>
"}
if (M.client)
@@ -104,30 +104,30 @@ var/global/floorIsLava = 0
if(issmall(M))
body += "<B>Monkeyized</B> | "
else
body += "<A href='?src=\ref[src];monkeyone=\ref[M]'>Monkeyize</A> | "
body += "<A href='?src=\ref[src];[HrefToken(TRUE)];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='?src=\ref[src];[HrefToken(TRUE)];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];makealien=\ref[M]'>Make Alien</A>
body += {"<A href='?src=\ref[src];[HrefToken(TRUE)];makeai=\ref[M]'>Make AI</A> |
<A href='?src=\ref[src];[HrefToken(TRUE)];makerobot=\ref[M]'>Make Robot</A> |
<A href='?src=\ref[src];[HrefToken(TRUE)];makealien=\ref[M]'>Make Alien</A>
"}
//Simple Animals
if(isanimal(M))
body += "<A href='?src=\ref[src];makeanimal=\ref[M]'>Re-Animalize</A> | "
body += "<A href='?src=\ref[src];[HrefToken(TRUE)];makeanimal=\ref[M]'>Re-Animalize</A> | "
else
body += "<A href='?src=\ref[src];makeanimal=\ref[M]'>Animalize</A> | "
body += "<A href='?src=\ref[src];[HrefToken(TRUE)];makeanimal=\ref[M]'>Animalize</A> | "
body += "<A href='?src=\ref[src];respawn=\ref[M.client]'>Respawn</A> | "
body += "<A href='?src=\ref[src];[HrefToken(TRUE)];respawn=\ref[M.client]'>Respawn</A> | "
// DNA2 - Admin Hax
if(M.dna && iscarbon(M))
@@ -142,7 +142,7 @@ var/global/floorIsLava = 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='?src=\ref[src];[HrefToken(TRUE)];togmutate=\ref[M];block=[block]' style='color:[bcolor];'>[bname]</A><sub>[block]</sub>"
else
body += "[block]"
body+="</td>"
@@ -150,45 +150,45 @@ var/global/floorIsLava = 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> |
\[ Xenos: <A href='?src=\ref[src];simplemake=larva;mob=\ref[M]'>Larva</A>
<A href='?src=\ref[src];simplemake=human;species=Xenomorph Drone;mob=\ref[M]'>Drone</A>
<A href='?src=\ref[src];simplemake=human;species=Xenomorph Hunter;mob=\ref[M]'>Hunter</A>
<A href='?src=\ref[src];simplemake=human;species=Xenomorph Sentinel;mob=\ref[M]'>Sentinel</A>
<A href='?src=\ref[src];simplemake=human;species=Xenomorph Queen;mob=\ref[M]'>Queen</A> \] |
\[ Crew: <A href='?src=\ref[src];simplemake=human;mob=\ref[M]'>Human</A>
<A href='?src=\ref[src];simplemake=human;species=Unathi;mob=\ref[M]'>Unathi</A>
<A href='?src=\ref[src];simplemake=human;species=Tajaran;mob=\ref[M]'>Tajaran</A>
<A href='?src=\ref[src];simplemake=human;species=Skrell;mob=\ref[M]'>Skrell</A> \] | \[
<A href='?src=\ref[src];simplemake=nymph;mob=\ref[M]'>Nymph</A>
<A href='?src=\ref[src];simplemake=human;species='Diona';mob=\ref[M]'>Diona</A> \] |
\[ slime: <A href='?src=\ref[src];simplemake=slime;mob=\ref[M]'>Baby</A>,
<A href='?src=\ref[src];simplemake=adultslime;mob=\ref[M]'>Adult</A> \]
<A href='?src=\ref[src];simplemake=monkey;mob=\ref[M]'>Monkey</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=constructarmoured;mob=\ref[M]'>Armoured</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];[HrefToken(TRUE)];simplemake=observer;mob=\ref[M]'>Observer</A> |
\[ Xenos: <A href='?src=\ref[src];[HrefToken(TRUE)];simplemake=larva;mob=\ref[M]'>Larva</A>
<A href='?src=\ref[src];[HrefToken(TRUE)];simplemake=human;species=Xenomorph Drone;mob=\ref[M]'>Drone</A>
<A href='?src=\ref[src];[HrefToken(TRUE)];simplemake=human;species=Xenomorph Hunter;mob=\ref[M]'>Hunter</A>
<A href='?src=\ref[src];[HrefToken(TRUE)];simplemake=human;species=Xenomorph Sentinel;mob=\ref[M]'>Sentinel</A>
<A href='?src=\ref[src];[HrefToken(TRUE)];simplemake=human;species=Xenomorph Queen;mob=\ref[M]'>Queen</A> \] |
\[ Crew: <A href='?src=\ref[src];[HrefToken(TRUE)];simplemake=human;mob=\ref[M]'>Human</A>
<A href='?src=\ref[src];[HrefToken(TRUE)];simplemake=human;species=Unathi;mob=\ref[M]'>Unathi</A>
<A href='?src=\ref[src];[HrefToken(TRUE)];simplemake=human;species=Tajaran;mob=\ref[M]'>Tajaran</A>
<A href='?src=\ref[src];[HrefToken(TRUE)];simplemake=human;species=Skrell;mob=\ref[M]'>Skrell</A> \] | \[
<A href='?src=\ref[src];[HrefToken(TRUE)];simplemake=nymph;mob=\ref[M]'>Nymph</A>
<A href='?src=\ref[src];[HrefToken(TRUE)];simplemake=human;species='Diona';mob=\ref[M]'>Diona</A> \] |
\[ slime: <A href='?src=\ref[src];[HrefToken(TRUE)];simplemake=slime;mob=\ref[M]'>Baby</A>,
<A href='?src=\ref[src];[HrefToken(TRUE)];simplemake=adultslime;mob=\ref[M]'>Adult</A> \]
<A href='?src=\ref[src];[HrefToken(TRUE)];simplemake=monkey;mob=\ref[M]'>Monkey</A> |
<A href='?src=\ref[src];[HrefToken(TRUE)];simplemake=robot;mob=\ref[M]'>Cyborg</A> |
<A href='?src=\ref[src];[HrefToken(TRUE)];simplemake=cat;mob=\ref[M]'>Cat</A> |
<A href='?src=\ref[src];[HrefToken(TRUE)];simplemake=runtime;mob=\ref[M]'>Runtime</A> |
<A href='?src=\ref[src];[HrefToken(TRUE)];simplemake=corgi;mob=\ref[M]'>Corgi</A> |
<A href='?src=\ref[src];[HrefToken(TRUE)];simplemake=ian;mob=\ref[M]'>Ian</A> |
<A href='?src=\ref[src];[HrefToken(TRUE)];simplemake=crab;mob=\ref[M]'>Crab</A> |
<A href='?src=\ref[src];[HrefToken(TRUE)];simplemake=coffee;mob=\ref[M]'>Coffee</A> |
\[ Construct: <A href='?src=\ref[src];[HrefToken(TRUE)];simplemake=constructarmoured;mob=\ref[M]'>Armoured</A> ,
<A href='?src=\ref[src];[HrefToken(TRUE)];simplemake=constructbuilder;mob=\ref[M]'>Builder</A> ,
<A href='?src=\ref[src];[HrefToken(TRUE)];simplemake=constructwraith;mob=\ref[M]'>Wraith</A> \]
<A href='?src=\ref[src];[HrefToken(TRUE)];simplemake=shade;mob=\ref[M]'>Shade</A>
<br>
"}
body += {"<br><br>
<b>Other actions:</b>
<br>
<A href='?src=\ref[src];forcespeech=\ref[M]'>Forcesay</A>
<A href='?src=\ref[src];[HrefToken(TRUE)];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='?src=\ref[src];[HrefToken(TRUE)];tdome1=\ref[M]'>Thunderdome 1</A> |
<A href='?src=\ref[src];[HrefToken(TRUE)];tdome2=\ref[M]'>Thunderdome 2</A> |
<A href='?src=\ref[src];[HrefToken(TRUE)];tdomeadmin=\ref[M]'>Thunderdome Admin</A> |
<A href='?src=\ref[src];[HrefToken(TRUE)];tdomeobserve=\ref[M]'>Thunderdome Observer</A> |
"}
// language toggles
body += "<br><br><b>Languages:</b><br>"
@@ -199,9 +199,9 @@ var/global/floorIsLava = 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='?src=\ref[src];[HrefToken(TRUE)];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='?src=\ref[src];[HrefToken(TRUE)];toglang=\ref[M];lang=[html_encode(k)]' style='color:#ff0000'>[k]</a>"
body += {"<br>
</body></html>
@@ -527,7 +527,7 @@ var/global/floorIsLava = 0
var/r = t
if( findtext(r,"##") )
r = copytext( r, 1, findtext(r,"##") )//removes the description
dat += text("<tr><td>[t] (<A href='?src=\ref[src];removejobban=[r]'>unban</A>)</td></tr>")
dat += text("<tr><td>[t] (<A href='?src=\ref[src];[HrefToken(TRUE)];removejobban=[r]'>unban</A>)</td></tr>")
dat += "</table>"
usr << browse(dat, "window=ban;size=400x400")
@@ -536,20 +536,20 @@ var/global/floorIsLava = 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='?src=\ref[src];[HrefToken(TRUE)];c_mode=1'>Change Game Mode</A><br>
"}
if(master_mode == "secret")
dat += "<A href='?src=\ref[src];f_secret=1'>(Force Secret Mode)</A><br>"
dat += "<A href='?src=\ref[src];[HrefToken(TRUE)];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];quick_create_object=1'>Quick 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='?src=\ref[src];[HrefToken(TRUE)];create_object=1'>Create Object</A><br>
<A href='?src=\ref[src];[HrefToken(TRUE)];quick_create_object=1'>Quick Create Object</A><br>
<A href='?src=\ref[src];[HrefToken(TRUE)];create_turf=1'>Create Turf</A><br>
<A href='?src=\ref[src];[HrefToken(TRUE)];create_mob=1'>Create Mob</A><br>
<br><A href='?src=\ref[src];[HrefToken(TRUE)];vsc=airflow'>Edit Airflow Settings</A><br>
<A href='?src=\ref[src];[HrefToken(TRUE)];vsc=phoron'>Edit Phoron Settings</A><br>
<A href='?src=\ref[src];[HrefToken(TRUE)];vsc=default'>Choose a default ZAS setting</A><br>
"}
usr << browse(dat, "window=admin2;size=210x280")
@@ -563,7 +563,7 @@ var/global/floorIsLava = 0
for(var/datum/admin_secret_category/category in admin_secrets.categories)
if(!category.can_view(usr))
continue
dat += "<A href='?src=\ref[src];admin_secrets_panel=\ref[category]'>[category.name]</A> "
dat += "<A href='?src=\ref[src];[HrefToken(TRUE)];admin_secrets_panel=\ref[category]'>[category.name]</A> "
dat += "<HR>"
// If a category is selected, print its description and then options
@@ -574,7 +574,7 @@ var/global/floorIsLava = 0
for(var/datum/admin_secret_item/item in active_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='?src=\ref[src];[HrefToken(TRUE)];admin_secrets=\ref[item]'>[item.name()]</A><BR>"
dat += "<BR>"
var/datum/browser/popup = new(usr, "secrets", "Secrets", 500, 500)
+4 -4
View File
@@ -107,9 +107,9 @@ world/New()
output += "<b>Offense:</b>[N.body]<br>"
output += "<small>Occured at [time2text(N.date,"MM/DD hh:mm:ss")]</small><br>"
output += "<small>authored by <i>[N.author]</i></small><br>"
output += " <a href='?src=\ref[report_topic_handler];client=\ref[src];action=remove;ID=[N.ID]'>Flag as Handled</a>"
output += " <a href='?src=\ref[report_topic_handler];client=\ref[src];[HrefToken(TRUE)];action=remove;ID=[N.ID]'>Flag as Handled</a>"
if(src.key == N.author)
output += " <a href='?src=\ref[report_topic_handler];client=\ref[src];action=edit;ID=[N.ID]'>Edit</a>"
output += " <a href='?src=\ref[report_topic_handler];client=\ref[src];[HrefToken(TRUE)];action=edit;ID=[N.ID]'>Edit</a>"
output += "<br>"
output += "<br>"
else
@@ -149,7 +149,7 @@ world/New()
for(var/datum/admin_report/N in reports)
if(N.ID == ID)
found = N
if(!found)
if(!found)
to_chat(src, "<b>* An error occured, sorry.</b>")
found.done = 1
@@ -171,7 +171,7 @@ world/New()
for(var/datum/admin_report/N in reports)
if(N.ID == ID)
found = N
if(!found)
if(!found)
to_chat(src, "<b>* An error occured, sorry.</b>")
var/body = tgui_input_text(src.mob, "Enter a body for the news", "Body", multiline = TRUE, prevent_enter = TRUE)
+29 -1
View File
@@ -1,3 +1,6 @@
GLOBAL_VAR_INIT(href_token, GenerateToken())
GLOBAL_PROTECT(href_token)
var/list/admin_datums = list()
/datum/admins
@@ -13,6 +16,8 @@ var/list/admin_datums = list()
var/datum/feed_channel/admincaster_feed_channel = new /datum/feed_channel
var/admincaster_signature //What you'll sign the newsfeeds as
var/href_token
/datum/admins/New(initial_rank = "Temporary Admin", initial_rights = 0, ckey)
if(!ckey)
@@ -20,6 +25,7 @@ var/list/admin_datums = list()
qdel(src)
return
admincaster_signature = "[using_map.company_name] Officer #[rand(0,9)][rand(0,9)][rand(0,9)]"
href_token = GenerateToken()
rank = initial_rank
rights = initial_rights
admin_datums[ckey] = src
@@ -126,4 +132,26 @@ NOTE: It checks usr by default. Supply the "user" argument if you wish to check
if(rights_required && !(rights_required & subject.holder.rights))
return 0
return 1
return 0
return 0
/proc/GenerateToken()
. = ""
for(var/I in 1 to 32)
. += "[rand(10)]"
/proc/RawHrefToken(forceGlobal = FALSE)
var/tok = GLOB.href_token
if(!forceGlobal && usr)
var/client/C = usr.client
if(!C)
CRASH("No client for HrefToken()!")
var/datum/admins/holder = C.holder
if(holder)
tok = holder.href_token
return tok
/proc/HrefToken(forceGlobal = FALSE)
return "admin_token=[RawHrefToken(forceGlobal)]"
/proc/HrefTokenFormField(forceGlobal = FALSE)
return "<input type='hidden' name='admin_token' value='[RawHrefToken(forceGlobal)]'>"
+1 -1
View File
@@ -211,7 +211,7 @@ var/savefile/Banlistjob
for (var/A in Banlistjob.dir)
count++
Banlistjob.cd = "/base/[A]"
dat += text("<tr><td><A href='?src=\ref[src];unjobbanf=[Banlistjob["key"]][Banlistjob["id"]][Banlistjob["rank"]]'>(U)</A> Key: <B>[Banlistjob["key"]] </B>Rank: <B>[Banlistjob["rank"]]</B></td><td> ([Banlistjob["temp"] ? "[GetBanExpjob(Banlistjob["minutes"]) ? GetBanExpjob(Banlistjob["minutes"]) : "Removal pending" ]" : "Permaban"])</td><td>(By: [Banlistjob["bannedby"]])</td><td>(Reason: [Banlistjob["reason"]])</td></tr>")
dat += text("<tr><td><A href='?src=\ref[src];[HrefToken(TRUE)];unjobbanf=[Banlistjob["key"]][Banlistjob["id"]][Banlistjob["rank"]]'>(U)</A> Key: <B>[Banlistjob["key"]] </B>Rank: <B>[Banlistjob["rank"]]</B></td><td> ([Banlistjob["temp"] ? "[GetBanExpjob(Banlistjob["minutes"]) ? GetBanExpjob(Banlistjob["minutes"]) : "Removal pending" ]" : "Permaban"])</td><td>(By: [Banlistjob["bannedby"]])</td><td>(Reason: [Banlistjob["reason"]])</td></tr>")
dat += "</table>"
dat = "<HR><B>Bans:</B> <FONT COLOR=blue>(U) = Unban , </FONT> - <FONT COLOR=green>([count] Bans)</FONT><HR><table border=1 rules=all frame=void cellspacing=0 cellpadding=3 >[dat]"
+19
View File
@@ -1,3 +1,19 @@
/datum/admins/proc/CheckAdminHref(href, href_list)
var/auth = href_list["admin_token"]
. = auth && (auth == href_token || auth == GLOB.href_token)
if(.)
return
var/msg = !auth ? "no" : "a bad"
message_admins("[key_name_admin(usr)] clicked an href with [msg] authorization key!")
var/debug_admin_hrefs = TRUE // Remove once everything is converted over
if(debug_admin_hrefs)
message_admins("Debug mode enabled, call not blocked. Please ask your coders to review this round's logs.")
log_world("UAH: [href]")
return TRUE
log_admin("[key_name(usr)] clicked an href with [msg] authorization key! [href]")
/datum/admins/Topic(href, href_list)
..()
@@ -6,6 +22,9 @@
message_admins("[usr.key] has attempted to override the admin panel!")
return
if(!CheckAdminHref(href, href_list))
return
if(ticker.mode && ticker.mode.check_antagonists_topic(href, href_list))
check_antagonists()
return