mirror of
https://github.com/CHOMPstation/CHOMPstation.git
synced 2026-08-22 03:26:21 +01:00
Merge branch 'master' of https://github.com/PolarisSS13/Polaris into framecleanup2
This commit is contained in:
@@ -0,0 +1,155 @@
|
||||
//Adminpaper - it's like paper, but more adminny!
|
||||
/obj/item/weapon/paper/admin
|
||||
name = "administrative paper"
|
||||
desc = "If you see this, something has gone horribly wrong."
|
||||
var/datum/admins/admindatum = null
|
||||
|
||||
var/interactions = null
|
||||
var/isCrayon = 0
|
||||
var/origin = null
|
||||
var/mob/sender = null
|
||||
var/obj/machinery/photocopier/faxmachine/destination
|
||||
|
||||
var/header = null
|
||||
var/headerOn = TRUE
|
||||
|
||||
var/footer = null
|
||||
var/footerOn = FALSE
|
||||
|
||||
/obj/item/weapon/paper/admin/New()
|
||||
..()
|
||||
generateInteractions()
|
||||
|
||||
|
||||
/obj/item/weapon/paper/admin/proc/generateInteractions()
|
||||
//clear first
|
||||
interactions = null
|
||||
|
||||
//Snapshot is crazy and likes putting each topic hyperlink on a seperate line from any other tags so it's nice and clean.
|
||||
interactions += "<HR><center><font size= \"1\">The fax will transmit everything above this line</font><br>"
|
||||
interactions += "<A href='?src=\ref[src];confirm=1'>Send fax</A> "
|
||||
interactions += "<A href='?src=\ref[src];penmode=1'>Pen mode: [isCrayon ? "Crayon" : "Pen"]</A> "
|
||||
interactions += "<A href='?src=\ref[src];cancel=1'>Cancel fax</A> "
|
||||
interactions += "<BR>"
|
||||
interactions += "<A href='?src=\ref[src];toggleheader=1'>Toggle Header</A> "
|
||||
interactions += "<A href='?src=\ref[src];togglefooter=1'>Toggle Footer</A> "
|
||||
interactions += "<A href='?src=\ref[src];clear=1'>Clear page</A> "
|
||||
interactions += "</center>"
|
||||
|
||||
/obj/item/weapon/paper/admin/proc/generateHeader()
|
||||
var/originhash = md5("[origin]")
|
||||
var/timehash = copytext(md5("[world.time]"),1,10)
|
||||
var/text = null
|
||||
var/logo = alert(usr, "Do you want the header of your fax to have a Nanotrasen or SolGov logo?","Fax Logo","Nanotrasen","SolGov")
|
||||
if(logo == "SolGov")
|
||||
logo = "sglogo.png"
|
||||
else
|
||||
logo = "ntlogo.png"
|
||||
//TODO change logo based on who you're contacting.
|
||||
text = "<center><img src = [logo]></br>"
|
||||
text += "<b>[origin] Quantum Uplink Signed Message</b><br>"
|
||||
text += "<font size = \"1\">Encryption key: [originhash]<br>"
|
||||
text += "Challenge: [timehash]<br></font></center><hr>"
|
||||
|
||||
header = text
|
||||
|
||||
/obj/item/weapon/paper/admin/proc/generateFooter()
|
||||
var/text = null
|
||||
|
||||
text = "<hr><font size= \"1\">"
|
||||
text += "This transmission is intended only for the addressee and may contain confidential information. Any unauthorized disclosure is strictly prohibited. <br><br>"
|
||||
text += "If this transmission is recieved in error, please notify both the sender and the office of [boss_name] Internal Affairs immediately so that corrective action may be taken."
|
||||
text += "Failure to comply is a breach of regulation and may be prosecuted to the fullest extent of the law, where applicable."
|
||||
text += "</font>"
|
||||
|
||||
footer = text
|
||||
|
||||
|
||||
/obj/item/weapon/paper/admin/proc/adminbrowse()
|
||||
updateinfolinks()
|
||||
generateHeader()
|
||||
generateFooter()
|
||||
updateDisplay()
|
||||
|
||||
obj/item/weapon/paper/admin/proc/updateDisplay()
|
||||
usr << browse("<HTML><HEAD><TITLE>[name]</TITLE></HEAD><BODY>[headerOn ? header : ""][info_links][stamps][footerOn ? footer : ""][interactions]</BODY></HTML>", "window=[name];can_close=0")
|
||||
|
||||
|
||||
|
||||
/obj/item/weapon/paper/admin/Topic(href, href_list)
|
||||
if(href_list["write"])
|
||||
var/id = href_list["write"]
|
||||
if(free_space <= 0)
|
||||
usr << "<span class='info'>There isn't enough space left on \the [src] to write anything.</span>"
|
||||
return
|
||||
|
||||
var/t = sanitize(input("Enter what you want to write:", "Write", null, null) as message, free_space, extra = 0)
|
||||
|
||||
if(!t)
|
||||
return
|
||||
|
||||
var last_fields_value = fields
|
||||
|
||||
//t = html_encode(t)
|
||||
t = replacetext(t, "\n", "<BR>")
|
||||
t = parsepencode(t,,, isCrayon) // Encode everything from pencode to html
|
||||
|
||||
|
||||
if(fields > 50)//large amount of fields creates a heavy load on the server, see updateinfolinks() and addtofield()
|
||||
usr << "<span class='warning'>Too many fields. Sorry, you can't do this.</span>"
|
||||
fields = last_fields_value
|
||||
return
|
||||
|
||||
if(id!="end")
|
||||
addtofield(text2num(id), t) // He wants to edit a field, let him.
|
||||
else
|
||||
info += t // Oh, he wants to edit to the end of the file, let him.
|
||||
updateinfolinks()
|
||||
|
||||
update_space(t)
|
||||
|
||||
updateDisplay()
|
||||
|
||||
update_icon()
|
||||
return
|
||||
|
||||
if(href_list["confirm"])
|
||||
switch(alert("Are you sure you want to send the fax as is?",, "Yes", "No"))
|
||||
if("Yes")
|
||||
if(headerOn)
|
||||
info = header + info
|
||||
if(footerOn)
|
||||
info += footer
|
||||
updateinfolinks()
|
||||
usr << browse(null, "window=[name]")
|
||||
admindatum.faxCallback(src, destination)
|
||||
return
|
||||
|
||||
if(href_list["penmode"])
|
||||
isCrayon = !isCrayon
|
||||
generateInteractions()
|
||||
updateDisplay()
|
||||
return
|
||||
|
||||
if(href_list["cancel"])
|
||||
usr << browse(null, "window=[name]")
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
if(href_list["clear"])
|
||||
clearpaper()
|
||||
updateDisplay()
|
||||
return
|
||||
|
||||
if(href_list["toggleheader"])
|
||||
headerOn = !headerOn
|
||||
updateDisplay()
|
||||
return
|
||||
|
||||
if(href_list["togglefooter"])
|
||||
footerOn = !footerOn
|
||||
updateDisplay()
|
||||
return
|
||||
|
||||
/obj/item/weapon/paper/admin/get_signature()
|
||||
return input(usr, "Enter the name you wish to sign the paper with (will prompt for multiple entries, in order of entry)", "Signature") as text|null
|
||||
@@ -142,6 +142,7 @@ var/list/adminfaxes = list() //cache for faxes that have been sent to admins
|
||||
flick("faxreceive", src)
|
||||
playsound(loc, "sound/effects/printer.ogg", 50, 1)
|
||||
|
||||
|
||||
// give the sprite some time to flick
|
||||
sleep(20)
|
||||
|
||||
@@ -163,11 +164,12 @@ var/list/adminfaxes = list() //cache for faxes that have been sent to admins
|
||||
|
||||
use_power(200)
|
||||
|
||||
//recieved copies should not use toner since it's being used by admins only.
|
||||
var/obj/item/rcvdcopy
|
||||
if (istype(copyitem, /obj/item/weapon/paper))
|
||||
rcvdcopy = copy(copyitem)
|
||||
rcvdcopy = copy(copyitem, 0)
|
||||
else if (istype(copyitem, /obj/item/weapon/photo))
|
||||
rcvdcopy = photocopy(copyitem)
|
||||
rcvdcopy = photocopy(copyitem, 0)
|
||||
else if (istype(copyitem, /obj/item/weapon/paper_bundle))
|
||||
rcvdcopy = bundlecopy(copyitem, 0)
|
||||
else
|
||||
@@ -178,14 +180,15 @@ var/list/adminfaxes = list() //cache for faxes that have been sent to admins
|
||||
adminfaxes += rcvdcopy
|
||||
|
||||
//message badmins that a fax has arrived
|
||||
switch(destination)
|
||||
if (boss_name)
|
||||
message_admins(sender, "[uppertext(boss_short)] FAX", rcvdcopy, "CentcommFaxReply", "#006100")
|
||||
if ("Sif Governmental Authority")
|
||||
message_admins(sender, "SIF GOVERNMENT FAX", rcvdcopy, "CentcommFaxReply", "#1F66A0")
|
||||
//message_admins(sender, "SOL GOVERNMENT FAX", rcvdcopy, "SolGovFaxReply", "#1F66A0")
|
||||
if ("Supply")
|
||||
message_admins(sender, "[uppertext(boss_short)] SUPPLY FAX", rcvdcopy, "CentcommFaxReply", "#5F4519")
|
||||
if (destination == boss_name)
|
||||
message_admins(sender, "[uppertext(boss_short)] FAX", rcvdcopy, "CentcommFaxReply", "#006100")
|
||||
else if ("Sif Governmental Authority")
|
||||
message_admins(sender, "SIF GOVERNMENT FAX", rcvdcopy, "CentcommFaxReply", "#1F66A0")
|
||||
else if ("Supply")
|
||||
message_admins(sender, "[uppertext(boss_short)] SUPPLY FAX", rcvdcopy, "CentcommFaxReply", "#5F4519")
|
||||
else
|
||||
message_admins(sender, "[uppertext(destination)] FAX", rcvdcopy, "UNKNOWN")
|
||||
|
||||
|
||||
sendcooldown = 1800
|
||||
sleep(50)
|
||||
@@ -193,9 +196,11 @@ var/list/adminfaxes = list() //cache for faxes that have been sent to admins
|
||||
|
||||
|
||||
/obj/machinery/photocopier/faxmachine/proc/message_admins(var/mob/sender, var/faxname, var/obj/item/sent, var/reply_type, font_colour="#006100")
|
||||
var/msg = "\blue <b><font color='[font_colour]'>[faxname]: </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, src)]) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<a href='?_src_=holder;[reply_type]=\ref[sender];originfax=\ref[src]'>REPLY</a>)</b>: Receiving '[sent.name]' via secure connection ... <a href='?_src_=holder;AdminFaxView=\ref[sent]'>view message</a>"
|
||||
var/msg = "<span class='notice'><b><font color='[font_colour]'>[faxname]: </font>[get_options_bar(sender, 2,1,1)]"
|
||||
msg += "(<a href='?_src_=holder;FaxReply=\ref[sender];originfax=\ref[src];replyorigin=[reply_type]'>REPLY</a>)</b>: "
|
||||
msg += "Receiving '[sent.name]' via secure connection ... <a href='?_src_=holder;AdminFaxView=\ref[sent]'>view message</a></span>"
|
||||
|
||||
for(var/client/C in admins)
|
||||
if(R_ADMIN & C.holder.rights)
|
||||
if(check_rights((R_ADMIN|R_MOD),0,C))
|
||||
C << msg
|
||||
C << 'sound/effects/printer.ogg'
|
||||
|
||||
@@ -232,11 +232,12 @@
|
||||
t = replacetext(t, "\[/i\]", "</I>")
|
||||
t = replacetext(t, "\[u\]", "<U>")
|
||||
t = replacetext(t, "\[/u\]", "</U>")
|
||||
t = replacetext(t, "\[time\]", "[worldtime2text()]")
|
||||
t = replacetext(t, "\[date\]", "[worlddate2text()]")
|
||||
t = replacetext(t, "\[time\]", "[stationtime2text()]")
|
||||
t = replacetext(t, "\[date\]", "[stationtime2text()]")
|
||||
t = replacetext(t, "\[large\]", "<font size=\"4\">")
|
||||
t = replacetext(t, "\[/large\]", "</font>")
|
||||
t = replacetext(t, "\[sign\]", "<font face=\"[signfont]\"><i>[get_signature(P, user)]</i></font>")
|
||||
if(findtext(t, "\[sign\]"))
|
||||
t = replacetext(t, "\[sign\]", "<font face=\"[signfont]\"><i>[get_signature(P, user)]</i></font>")
|
||||
t = replacetext(t, "\[field\]", "<span class=\"paper_field\"></span>")
|
||||
|
||||
t = replacetext(t, "\[h1\]", "<H1>")
|
||||
|
||||
@@ -164,7 +164,7 @@
|
||||
toner = 0
|
||||
return
|
||||
|
||||
/obj/machinery/photocopier/proc/copy(var/obj/item/weapon/paper/copy)
|
||||
/obj/machinery/photocopier/proc/copy(var/obj/item/weapon/paper/copy, var/need_toner=1)
|
||||
var/obj/item/weapon/paper/c = new /obj/item/weapon/paper (loc)
|
||||
if(toner > 10) //lots of toner, make it dark
|
||||
c.info = "<font color = #101010>"
|
||||
@@ -195,13 +195,14 @@
|
||||
img.pixel_y = copy.offset_y[j]
|
||||
c.overlays += img
|
||||
c.updateinfolinks()
|
||||
toner--
|
||||
if(need_toner)
|
||||
toner--
|
||||
if(toner == 0)
|
||||
visible_message("<span class='notice'>A red light on \the [src] flashes, indicating that it is out of toner.</span>")
|
||||
return c
|
||||
|
||||
|
||||
/obj/machinery/photocopier/proc/photocopy(var/obj/item/weapon/photo/photocopy)
|
||||
/obj/machinery/photocopier/proc/photocopy(var/obj/item/weapon/photo/photocopy, var/need_toner=1)
|
||||
var/obj/item/weapon/photo/p = photocopy.copy()
|
||||
p.loc = src.loc
|
||||
|
||||
@@ -215,7 +216,8 @@
|
||||
p.img.MapColors(rgb(77,77,77), rgb(150,150,150), rgb(28,28,28), rgb(100,100,100))
|
||||
p.tiny.MapColors(rgb(77,77,77), rgb(150,150,150), rgb(28,28,28), rgb(100,100,100))
|
||||
p.icon = I
|
||||
toner -= 5 //photos use a lot of ink!
|
||||
if(need_toner)
|
||||
toner -= 5 //photos use a lot of ink!
|
||||
if(toner < 0)
|
||||
toner = 0
|
||||
visible_message("<span class='notice'>A red light on \the [src] flashes, indicating that it is out of toner.</span>")
|
||||
|
||||
Reference in New Issue
Block a user