mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-30 15:37:36 +01:00
Large bureaucracy overhaul.
This affects clipboards, hand labelers, paper, paper bins, pens, photocopiers, and stamps. Everything (that I've changed significantly) should be BETTER. NO paths have been changed. All of the above have been added to the paperwork module (pending rename to bureaucracy, which is COOLER). SPRITES for most of the above (except photocopiers) are now in bureaucracy.dmi. Clipboards in particular are MASSIVELY IMPROVED. Hand labelers can now be turned ON AND OFF, to make it simpler to avoid labelling tables. This includes work in progress FOLDERS, which currently do NOTHING. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3253 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
@@ -0,0 +1,135 @@
|
||||
/obj/item/weapon/clipboard
|
||||
name = "clipboard"
|
||||
icon = 'bureaucracy.dmi'
|
||||
icon_state = "clipboard"
|
||||
item_state = "clipboard"
|
||||
throwforce = 0
|
||||
w_class = 2.0
|
||||
throw_speed = 3
|
||||
throw_range = 10
|
||||
var/obj/item/weapon/pen/haspen //The stored pen.
|
||||
var/obj/item/weapon/paper/toppaper //The topmost piece of paper.
|
||||
|
||||
/obj/item/weapon/clipboard/MouseDrop(obj/over_object as obj) //Quick clipboard fix. -Agouri
|
||||
if(ishuman(usr) || ismonkey(usr)) //Can monkeys even place items in the pocket slots? Leaving this in just in case~
|
||||
var/mob/M = usr
|
||||
if (!(istype(over_object, /obj/screen) ))
|
||||
return ..()
|
||||
if((!(M.restrained()) && !(M.stat)))
|
||||
if(over_object.name == "r_hand")
|
||||
if(!(M.r_hand))
|
||||
M.u_equip(src)
|
||||
M.r_hand = src
|
||||
else
|
||||
if(over_object.name == "l_hand")
|
||||
if(!(M.l_hand))
|
||||
M.u_equip(src)
|
||||
M.l_hand = src
|
||||
M.update_clothing()
|
||||
src.add_fingerprint(usr)
|
||||
return
|
||||
|
||||
/obj/item/weapon/clipboard/update_icon()
|
||||
overlays = null
|
||||
if(toppaper)
|
||||
overlays += toppaper.icon_state
|
||||
overlays += toppaper.overlays
|
||||
if(haspen)
|
||||
overlays += "clipboard_pen"
|
||||
overlays += "clipboard_over"
|
||||
return
|
||||
|
||||
/obj/item/weapon/clipboard/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype(W, /obj/item/weapon/paper))
|
||||
user.drop_item()
|
||||
W.loc = src
|
||||
toppaper = W
|
||||
user << "\blue You clip the paper onto the clipboard."
|
||||
update_icon()
|
||||
else if(toppaper)
|
||||
toppaper.attackby(usr.get_active_hand(), usr)
|
||||
update_icon()
|
||||
return
|
||||
|
||||
/obj/item/weapon/clipboard/attack_self(mob/user as mob)
|
||||
var/dat = "<title>Clipboard</title>"
|
||||
if (haspen)
|
||||
dat += "<A href='?src=\ref[src];pen=1'>Remove Pen</A><BR><HR>"
|
||||
else
|
||||
dat += "<A href='?src=\ref[src];addpen=1'>Add Pen</A><BR><HR>"
|
||||
|
||||
//The topmost paper. I don't think there's any way to organise contents in byond, so this is what we're stuck with. -Pete
|
||||
if(toppaper)
|
||||
var/obj/item/weapon/paper/P = toppaper
|
||||
dat += "<A href='?src=\ref[src];write=\ref[P]'>Write</A> <A href='?src=\ref[src];remove=\ref[P]'>Remove</A> - <A href='?src=\ref[src];read=\ref[P]'>[P.name]</A><BR><HR>"
|
||||
|
||||
for(P in src)
|
||||
if(P == toppaper)
|
||||
continue
|
||||
dat += "<A href='?src=\ref[src];write=\ref[P]'>Write</A> <A href='?src=\ref[src];remove=\ref[P]'>Remove</A> <A href='?src=\ref[src];top=\ref[P]'>Move to top</A> - <A href='?src=\ref[src];read=\ref[P]'>[P.name]</A><BR>"
|
||||
user << browse(dat, "window=clipboard")
|
||||
onclose(user, "clipboard")
|
||||
add_fingerprint(usr)
|
||||
return
|
||||
|
||||
/obj/item/weapon/clipboard/Topic(href, href_list)
|
||||
..()
|
||||
if ((usr.stat || usr.restrained()))
|
||||
return
|
||||
|
||||
if (usr.contents.Find(src))
|
||||
|
||||
if(href_list["pen"])
|
||||
if(haspen)
|
||||
haspen.loc = usr.loc
|
||||
if(ishuman(usr))
|
||||
if(!usr.get_active_hand())
|
||||
usr.put_in_hand(haspen)
|
||||
haspen = null
|
||||
|
||||
if(href_list["addpen"])
|
||||
if(!haspen)
|
||||
if(istype(usr.get_active_hand(), /obj/item/weapon/pen))
|
||||
var/obj/item/weapon/pen/W = usr.get_active_hand()
|
||||
usr.drop_item()
|
||||
W.loc = src
|
||||
haspen = W
|
||||
usr << "\blue You slot the pen into the clipboard."
|
||||
|
||||
if(href_list["write"])
|
||||
var/obj/item/P = locate(href_list["write"])
|
||||
if(P)
|
||||
if(usr.get_active_hand())
|
||||
P.attackby(usr.get_active_hand(), usr)
|
||||
|
||||
if(href_list["remove"])
|
||||
var/obj/item/P = locate(href_list["remove"])
|
||||
if(P)
|
||||
P.loc = usr.loc
|
||||
if(ishuman(usr))
|
||||
if(!usr.get_active_hand())
|
||||
usr.put_in_hand(P)
|
||||
else
|
||||
P.loc = get_turf(usr)
|
||||
if(P == toppaper)
|
||||
var/obj/item/weapon/paper/newtop = locate(/obj/item/weapon/paper in src)
|
||||
if(newtop && newtop != toppaper)
|
||||
toppaper = newtop
|
||||
else
|
||||
toppaper = null
|
||||
|
||||
if(href_list["read"])
|
||||
var/obj/item/P = locate(href_list["read"])
|
||||
if(P)
|
||||
P.examine(usr)
|
||||
|
||||
if(href_list["top"])
|
||||
var/obj/item/P = locate(href_list["top"])
|
||||
if(P)
|
||||
toppaper = P
|
||||
usr << "You move [P.name] to the top."
|
||||
|
||||
//Update everything
|
||||
attack_self(usr)
|
||||
update_icon()
|
||||
return
|
||||
@@ -0,0 +1,22 @@
|
||||
//THIS IS OBVIOUSLY WIP, SORRY -PETE
|
||||
/obj/item/weapon/folder
|
||||
name = "folder"
|
||||
desc = "A folder."
|
||||
icon = 'bureaucracy.dmi'
|
||||
icon_state = "folder"
|
||||
w_class = 2
|
||||
|
||||
/obj/item/weapon/folder/blue
|
||||
desc = "A blue folder."
|
||||
icon_state = "folder_blue"
|
||||
|
||||
/obj/item/weapon/folder/red
|
||||
desc = "A red folder."
|
||||
icon_state = "folder_red"
|
||||
|
||||
/obj/item/weapon/folder/yellow
|
||||
desc = "A yellow folder."
|
||||
icon_state = "folder_yellow"
|
||||
|
||||
/obj/item/weapon/folder/attack_self()
|
||||
usr << "lol!"
|
||||
@@ -0,0 +1,53 @@
|
||||
/obj/item/weapon/hand_labeler
|
||||
name = "Hand labeler"
|
||||
icon = 'bureaucracy.dmi'
|
||||
icon_state = "labeler0"
|
||||
item_state = "flight"
|
||||
var/label = null
|
||||
var/labels_left = 30
|
||||
var/mode = 0 //off or on.
|
||||
|
||||
/obj/item/weapon/hand_labeler/afterattack(atom/A, mob/user as mob)
|
||||
if(!mode) //if it's off, give up.
|
||||
return
|
||||
if(A==loc) // if placing the labeller into something (e.g. backpack)
|
||||
return // don't set a label
|
||||
|
||||
if(!labels_left)
|
||||
user << "\blue No labels left."
|
||||
return
|
||||
if(!label || !length(label))
|
||||
user << "\blue No text set."
|
||||
return
|
||||
if(length(A.name) + length(label) > 64)
|
||||
user << "\blue Label too big."
|
||||
return
|
||||
if(ishuman(A))
|
||||
user << "\blue You can't label humans."
|
||||
return
|
||||
if(issilicon(A))
|
||||
user << "\blue You can't label cyborgs."
|
||||
return
|
||||
|
||||
for(var/mob/M in viewers())
|
||||
if ((M.client && !( M.blinded )))
|
||||
M << "\blue [user] labels [A] as [label]."
|
||||
A.name = "[A.name] ([label])"
|
||||
|
||||
/obj/item/weapon/hand_labeler/attack_self()
|
||||
mode = !mode
|
||||
icon_state = "labeler[mode]"
|
||||
if(mode)
|
||||
usr << "\blue You turn on the hand labeler."
|
||||
//Now let them chose the text.
|
||||
var/str = input(usr,"Label text?","Set label","")
|
||||
if(!str || !length(str))
|
||||
usr << "\red Invalid text."
|
||||
return
|
||||
if(length(str) > 64)
|
||||
usr << "\red Text too long."
|
||||
return
|
||||
label = str
|
||||
usr << "\blue You set the text to '[str]'."
|
||||
else
|
||||
usr << "\blue You turn off the hand labeler."
|
||||
@@ -0,0 +1,186 @@
|
||||
/obj/item/weapon/paper
|
||||
name = "paper"
|
||||
gender = PLURAL
|
||||
icon = 'bureaucracy.dmi'
|
||||
icon_state = "paper"
|
||||
throwforce = 0
|
||||
w_class = 1.0
|
||||
throw_speed = 3
|
||||
throw_range = 15
|
||||
layer = 4
|
||||
var/info //What's actually written on the paper.
|
||||
var/stamps //The (text for the) stamps on the paper.
|
||||
var/list/stamped
|
||||
var/see_face = 1
|
||||
var/body_parts_covered = HEAD
|
||||
|
||||
/obj/item/weapon/paper/New()
|
||||
|
||||
..()
|
||||
src.pixel_y = rand(-8, 8)
|
||||
src.pixel_x = rand(-9, 9)
|
||||
spawn(2)
|
||||
if(src.info)
|
||||
src.overlays += "paper_words"
|
||||
return
|
||||
|
||||
/obj/item/weapon/paper/update_icon()
|
||||
if(src.info)
|
||||
src.overlays += "paper_words"
|
||||
return
|
||||
|
||||
/obj/item/weapon/paper/examine(mob/user as mob)
|
||||
set src in oview(1)
|
||||
|
||||
//I think this is the best way to handle this! Shout at me if it isn't! -Pete
|
||||
if(!user)
|
||||
user = usr
|
||||
// ..() //We don't want them to see the dumb "this is a paper" thing every time.
|
||||
if (!( istype(user, /mob/living/carbon/human) || istype(user, /mob/dead/observer) || istype(user, /mob/living/silicon) ))
|
||||
user << browse("<HTML><HEAD><TITLE>[name]</TITLE></HEAD><BODY>[stars(info)][stamps]</BODY></HTML>", "window=[name]")
|
||||
onclose(user, "[name]")
|
||||
else
|
||||
user << browse("<HTML><HEAD><TITLE>[name]</TITLE></HEAD><BODY>[info][stamps]</BODY></HTML>", "window=[name]")
|
||||
onclose(user, "[name]")
|
||||
return
|
||||
|
||||
/obj/item/weapon/paper/verb/rename()
|
||||
set name = "Rename paper"
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
|
||||
if ((usr.mutations & CLUMSY) && prob(50))
|
||||
usr << "\red You cut yourself on the paper."
|
||||
return
|
||||
var/n_name = input(usr, "What would you like to label the paper?", "Paper Labelling", null) as text
|
||||
n_name = copytext(n_name, 1, 32)
|
||||
if ((loc == usr && usr.stat == 0))
|
||||
name = "paper[(n_name ? text("- '[n_name]'") : null)]"
|
||||
add_fingerprint(usr)
|
||||
return
|
||||
|
||||
/obj/item/weapon/paper/attack_self(mob/living/user as mob)
|
||||
examine()
|
||||
return
|
||||
|
||||
/obj/item/weapon/paper/attack_ai(var/mob/living/silicon/ai/user as mob)
|
||||
var/dist
|
||||
if (istype(user) && user.current) //is AI
|
||||
dist = get_dist(src, user.current)
|
||||
else //cyborg or AI not seeing through a camera
|
||||
dist = get_dist(src, user)
|
||||
if (dist < 2)
|
||||
usr << browse("<HTML><HEAD><TITLE>[name]</TITLE></HEAD><BODY>[info][stamps]</BODY></HTML>", "window=[name]")
|
||||
onclose(usr, "[name]")
|
||||
else
|
||||
usr << browse("<HTML><HEAD><TITLE>[name]</TITLE></HEAD><BODY>[stars(info)][stamps]</BODY></HTML>", "window=[name]")
|
||||
onclose(usr, "[name]")
|
||||
return
|
||||
|
||||
/obj/item/weapon/paper/attackby(obj/item/weapon/P as obj, mob/user as mob)
|
||||
..()
|
||||
var/clown = 0
|
||||
if(user.mind && (user.mind.assigned_role == "Clown"))
|
||||
clown = 1
|
||||
|
||||
if (istype(P, /obj/item/weapon/pen))
|
||||
var/t = strip_html_simple(input(user, "What text do you wish to add?", "[name]", null),8192) as message
|
||||
|
||||
if ((!in_range(src, usr) && src.loc != user && !( istype(src.loc, /obj/item/weapon/clipboard) ) && src.loc.loc != user && user.equipped() != P))
|
||||
return
|
||||
|
||||
t = copytext(sanitize(t),1,MAX_MESSAGE_LEN)
|
||||
t = dd_replacetext(t, "\[center\]", "<center>")
|
||||
t = dd_replacetext(t, "\[/center\]", "</center>")
|
||||
t = dd_replacetext(t, "\[list\]", "<ul>")
|
||||
t = dd_replacetext(t, "\[/list\]", "</ul>")
|
||||
t = dd_replacetext(t, "\[*\]", "<li>")
|
||||
t = dd_replacetext(t, "\[*\]", "<li>")
|
||||
t = dd_replacetext(t, "\[br\]", "<BR>")
|
||||
t = dd_replacetext(t, "\[hr\]", "<HR>")
|
||||
t = dd_replacetext(t, "\[b\]", "<B>")
|
||||
t = dd_replacetext(t, "\[/b\]", "</B>")
|
||||
t = dd_replacetext(t, "\[i\]", "<I>")
|
||||
t = dd_replacetext(t, "\[/i\]", "</I>")
|
||||
t = dd_replacetext(t, "\[u\]", "<U>")
|
||||
t = dd_replacetext(t, "\[/u\]", "</U>")
|
||||
t = dd_replacetext(t, "\[small\]", "<font size = \"1\">")
|
||||
t = dd_replacetext(t, "\[/small\]", "</font>")
|
||||
t = dd_replacetext(t, "\[large\]", "<font size = \"4\">")
|
||||
t = dd_replacetext(t, "\[/large\]", "</font>")
|
||||
t = dd_replacetext(t, "\[sign\]", "<font face=vivaldi>[user.real_name]</font>")
|
||||
|
||||
var/obj/item/weapon/pen/i = P
|
||||
t = "<font face=calligrapher color=[i.colour]>[t]</font>"
|
||||
|
||||
if(!overlays.Find("paper_words"))
|
||||
overlays += "paper_words"
|
||||
info += t
|
||||
return
|
||||
|
||||
if(istype(P, /obj/item/toy/crayon))
|
||||
var/t = strip_html_simple(input(user, "What text do you wish to add?", "[name]", null),8192) as message
|
||||
|
||||
if ((!in_range(src, usr) && src.loc != user && !( istype(src.loc, /obj/item/weapon/clipboard) ) && src.loc.loc != user && user.equipped() != P))
|
||||
return
|
||||
|
||||
t = copytext(sanitize(t),1,MAX_MESSAGE_LEN)
|
||||
t = dd_replacetext(t, "\[center\]", "<center>")
|
||||
t = dd_replacetext(t, "\[/center\]", "</center>")
|
||||
t = dd_replacetext(t, "\[br\]", "<BR>")
|
||||
t = dd_replacetext(t, "\[b\]", "")
|
||||
t = dd_replacetext(t, "\[/b\]", "")
|
||||
t = dd_replacetext(t, "\[i\]", "<I>")
|
||||
t = dd_replacetext(t, "\[/i\]", "</I>")
|
||||
t = dd_replacetext(t, "\[u\]", "<U>")
|
||||
t = dd_replacetext(t, "\[/u\]", "</U>")
|
||||
t = dd_replacetext(t, "\[large\]", "<font size = \"4\">")
|
||||
t = dd_replacetext(t, "\[/large\]", "</font>")
|
||||
t = dd_replacetext(t, "\[sign\]", "<I>[user.real_name]</I>")
|
||||
|
||||
var/obj/item/toy/crayon/i = P
|
||||
t = "<font face=\"Comic Sans MS\" color=[i.colour]><B>[t]</B></font>"
|
||||
|
||||
if(!overlays.Find("paper_words"))
|
||||
overlays += "paper_words"
|
||||
info += t
|
||||
return
|
||||
|
||||
else
|
||||
if(istype(P, /obj/item/weapon/stamp))
|
||||
if ((!in_range(src, usr) && src.loc != user && !( istype(src.loc, /obj/item/weapon/clipboard) ) && src.loc.loc != user && user.equipped() != P))
|
||||
return
|
||||
if(stamps)
|
||||
stamps += "<BR><i>This paper has been stamped with the [P.name].</i>"
|
||||
else
|
||||
stamps += "<HR><i>This paper has been stamped with the [P.name].</i>"
|
||||
switch(P.type)
|
||||
if(/obj/item/weapon/stamp/captain)
|
||||
overlays += "paper_stamped_cap"
|
||||
if(/obj/item/weapon/stamp/hop)
|
||||
overlays += "paper_stamped_hop"
|
||||
if(/obj/item/weapon/stamp/hos)
|
||||
overlays += "paper_stamped_hos"
|
||||
if(/obj/item/weapon/stamp/ce)
|
||||
overlays += "paper_stamped_ce"
|
||||
if(/obj/item/weapon/stamp/rd)
|
||||
overlays += "paper_stamped_rd"
|
||||
if(/obj/item/weapon/stamp/cmo)
|
||||
overlays += "paper_stamped_cmo"
|
||||
if(/obj/item/weapon/stamp/denied)
|
||||
overlays += "paper_stamped_denied"
|
||||
if(/obj/item/weapon/stamp/clown)
|
||||
if (!clown)
|
||||
usr << "\red You are totally unable to use the stamp. HONK!"
|
||||
return
|
||||
else
|
||||
overlays += "paper_stamped_clown"
|
||||
else
|
||||
overlays += "paper_stamped"
|
||||
if(!stamped)
|
||||
stamped = new
|
||||
stamped += P.type
|
||||
|
||||
user << "\blue You stamp the paper with your rubber stamp."
|
||||
add_fingerprint(user)
|
||||
return
|
||||
@@ -0,0 +1,65 @@
|
||||
/obj/item/weapon/paper_bin
|
||||
name = "paper bin"
|
||||
icon = 'bureaucracy.dmi'
|
||||
icon_state = "paper_bin1"
|
||||
item_state = "sheet-metal"
|
||||
throwforce = 1
|
||||
w_class = 3
|
||||
throw_speed = 3
|
||||
throw_range = 7
|
||||
var/amount = 30 //How much paper is in the bin.
|
||||
|
||||
/obj/item/weapon/paper_bin/MouseDrop(mob/user as mob)
|
||||
if ((user == usr && (!( usr.restrained() ) && (!( usr.stat ) && (usr.contents.Find(src) || in_range(src, usr))))))
|
||||
if (usr.hand)
|
||||
if (!( usr.l_hand ))
|
||||
spawn( 0 )
|
||||
src.attack_hand(usr, 1, 1)
|
||||
return
|
||||
else
|
||||
if (!( usr.r_hand ))
|
||||
spawn( 0 )
|
||||
src.attack_hand(usr, 0, 1)
|
||||
return
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/paper_bin/attack_paw(mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/item/weapon/paper_bin/attack_hand(mob/user as mob)
|
||||
if (amount >= 1)
|
||||
amount--
|
||||
update_icon()
|
||||
var/obj/item/weapon/paper/P = new /obj/item/weapon/paper
|
||||
P.loc = user.loc
|
||||
if(ishuman(user))
|
||||
if(!user.get_active_hand())
|
||||
user.put_in_hand(P)
|
||||
user << "You take a paper out of the bin."
|
||||
else
|
||||
P.loc = get_turf_loc(src)
|
||||
user << "You take a paper out of the bin."
|
||||
else
|
||||
user << "The paper bin is empty!"
|
||||
|
||||
add_fingerprint(user)
|
||||
return
|
||||
|
||||
/obj/item/weapon/paper_bin/examine()
|
||||
set src in oview(1)
|
||||
|
||||
if(amount)
|
||||
if(amount > 1)
|
||||
usr << "There are [amount] papers in the bin."
|
||||
else
|
||||
usr << "There is one paper in the bin."
|
||||
else
|
||||
usr << "There are no papers in the bin."
|
||||
return
|
||||
|
||||
/obj/item/weapon/paper_bin/update_icon()
|
||||
if(amount < 1)
|
||||
icon_state = "paper_bin0"
|
||||
else
|
||||
icon_state = "paper_bin1"
|
||||
@@ -0,0 +1,22 @@
|
||||
/obj/item/weapon/pen
|
||||
desc = "It's a normal black ink pen."
|
||||
name = "pen"
|
||||
icon = 'bureaucracy.dmi'
|
||||
icon_state = "pen"
|
||||
flags = FPRINT | ONBELT | TABLEPASS
|
||||
throwforce = 0
|
||||
w_class = 1.0
|
||||
throw_speed = 7
|
||||
throw_range = 15
|
||||
m_amt = 10
|
||||
var/colour = "black" //what colour the ink is!
|
||||
|
||||
/obj/item/weapon/pen/blue
|
||||
desc = "It's a normal blue ink pen."
|
||||
icon_state = "pen_blue"
|
||||
colour = "blue"
|
||||
|
||||
/obj/item/weapon/pen/red
|
||||
desc = "It's a normal red ink pen."
|
||||
icon_state = "pen_red"
|
||||
colour = "red"
|
||||
@@ -0,0 +1,135 @@
|
||||
/obj/machinery/photocopier
|
||||
name = "Photocopier"
|
||||
icon = 'library.dmi'
|
||||
icon_state = "bigscanner"
|
||||
anchored = 1
|
||||
density = 1
|
||||
use_power = 1
|
||||
idle_power_usage = 30
|
||||
active_power_usage = 200
|
||||
power_channel = EQUIP
|
||||
var/obj/item/weapon/paper/copy = null //what's in the copier!
|
||||
var/copies = 1 //how many copies to print!
|
||||
var/toner = 30 //how much toner is left! woooooo~
|
||||
var/maxcopies = 10 //how many copies can be copied at once- idea shamelessly stolen from bs12's copier!
|
||||
|
||||
/obj/machinery/photocopier/attack_ai(mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/machinery/photocopier/attack_paw(mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/machinery/photocopier/attack_hand(mob/user as mob)
|
||||
user.machine = src
|
||||
|
||||
var/dat = "Photocopier<BR><BR>"
|
||||
if(copy)
|
||||
dat += "<a href='byond://?src=\ref[src];remove=1'>Remove Paper</a><BR>"
|
||||
if(toner)
|
||||
dat += "<a href='byond://?src=\ref[src];copy=1'>Copy</a><BR>"
|
||||
dat += "Printing: [copies] copies."
|
||||
dat += "<a href='byond://?src=\ref[src];min=1'>-</a> "
|
||||
dat += "<a href='byond://?src=\ref[src];add=1'>+</a><BR><BR>"
|
||||
else if(toner)
|
||||
dat += "Please insert paper to copy.<BR><BR>"
|
||||
dat += "Current toner level: [toner]"
|
||||
if(!toner)
|
||||
dat +="<BR>Please insert a new toner cartridge!"
|
||||
user << browse(dat, "window=copier")
|
||||
onclose(user, "copier")
|
||||
return
|
||||
|
||||
obj/machinery/photocopier/Topic(href, href_list)
|
||||
if(href_list["copy"])
|
||||
if(copy)
|
||||
for(var/i = 0, i < copies, i++)
|
||||
if(toner > 0)
|
||||
var/obj/item/weapon/paper/c = new /obj/item/weapon/paper (src.loc)
|
||||
if(toner > 10) //lots of toner, make it dark
|
||||
c.info = "<font color = #101010>"
|
||||
else //no toner? shitty copies for you!
|
||||
c.info = "<font color = #808080>"
|
||||
var/copied = html_decode(copy.info)
|
||||
copied = dd_replacetext(copied, "<font face=calligrapher color=", "<font face=calligrapher nocolor=") //state of the art techniques in action
|
||||
copied = dd_replacetext(copied, "<font face=\"Comic Sans MS\" color=", "<font face=\"Comic Sans MS\" nocolor=") //This basically just breaks the existing color tag, which we need to do because the innermost tag takes priority.
|
||||
c.info += copied
|
||||
c.info += "</font>"
|
||||
c.name = copy.name // -- Doohl
|
||||
toner--
|
||||
sleep(15)
|
||||
else
|
||||
break
|
||||
updateUsrDialog()
|
||||
if(href_list["remove"])
|
||||
if(copy)
|
||||
if(ishuman(usr))
|
||||
if(!usr.get_active_hand())
|
||||
copy.loc = usr.loc
|
||||
usr.put_in_hand(copy)
|
||||
usr << "You take the paper out of the photocopier."
|
||||
copy = null
|
||||
updateUsrDialog()
|
||||
if(href_list["min"])
|
||||
if(copies > 1)
|
||||
copies--
|
||||
updateUsrDialog()
|
||||
if(href_list["add"])
|
||||
if(copies < maxcopies)
|
||||
copies++
|
||||
updateUsrDialog()
|
||||
|
||||
obj/machinery/photocopier/attackby(obj/item/O as obj, mob/user as mob)
|
||||
if(istype(O, /obj/item/weapon/paper))
|
||||
if(!copy)
|
||||
user.drop_item()
|
||||
copy = O
|
||||
O.loc = src
|
||||
user << "You insert the paper into the photocopier."
|
||||
flick("bigscanner1", src)
|
||||
updateUsrDialog()
|
||||
else
|
||||
user << "There is already paper in the photocopier."
|
||||
if(istype(O, /obj/item/device/toner))
|
||||
if(toner == 0)
|
||||
user.drop_item()
|
||||
del(O)
|
||||
toner = 30
|
||||
user << "You insert the toner cartridge into the photocopier."
|
||||
updateUsrDialog()
|
||||
else
|
||||
user << "This cartridge is not yet ready for replacement! Use up the rest of the toner."
|
||||
|
||||
obj/machinery/photocopier/ex_act(severity)
|
||||
switch(severity)
|
||||
if(1.0)
|
||||
del(src)
|
||||
return
|
||||
if(2.0)
|
||||
if(prob(50))
|
||||
del(src)
|
||||
else
|
||||
if(toner > 0)
|
||||
new /obj/effect/decal/cleanable/oil(get_turf(src))
|
||||
toner = 0
|
||||
return
|
||||
else
|
||||
if(prob(50))
|
||||
if(toner > 0)
|
||||
new /obj/effect/decal/cleanable/oil(get_turf(src))
|
||||
toner = 0
|
||||
return
|
||||
return
|
||||
|
||||
obj/machinery/photocopier/blob_act()
|
||||
if(prob(50))
|
||||
del(src)
|
||||
return
|
||||
else
|
||||
if(toner > 0)
|
||||
new /obj/effect/decal/cleanable/oil(get_turf(src))
|
||||
toner = 0
|
||||
return
|
||||
|
||||
obj/item/device/toner
|
||||
name = "toner cartridge"
|
||||
icon_state = "tonercartridge"
|
||||
@@ -0,0 +1,53 @@
|
||||
/obj/item/weapon/stamp
|
||||
desc = "A rubber stamp for stamping important documents."
|
||||
name = "rubber stamp"
|
||||
icon = 'bureaucracy.dmi'
|
||||
icon_state = "stamp-qm"
|
||||
item_state = "stamp"
|
||||
flags = FPRINT | TABLEPASS
|
||||
throwforce = 0
|
||||
w_class = 1.0
|
||||
throw_speed = 7
|
||||
throw_range = 15
|
||||
m_amt = 60
|
||||
var/color = "cargo"
|
||||
|
||||
/obj/item/weapon/stamp/captain
|
||||
name = "captain's rubber stamp"
|
||||
icon_state = "stamp-cap"
|
||||
color = "captain"
|
||||
|
||||
/obj/item/weapon/stamp/hop
|
||||
name = "head of personnel's rubber stamp"
|
||||
icon_state = "stamp-hop"
|
||||
color = "hop"
|
||||
|
||||
/obj/item/weapon/stamp/hos
|
||||
name = "head of security's rubber stamp"
|
||||
icon_state = "stamp-hos"
|
||||
color = "hosred"
|
||||
|
||||
/obj/item/weapon/stamp/ce
|
||||
name = "chief engineer's rubber stamp"
|
||||
icon_state = "stamp-ce"
|
||||
color = "chief"
|
||||
|
||||
/obj/item/weapon/stamp/rd
|
||||
name = "research director's rubber stamp"
|
||||
icon_state = "stamp-rd"
|
||||
color = "director"
|
||||
|
||||
/obj/item/weapon/stamp/cmo
|
||||
name = "chief medical officer's rubber stamp"
|
||||
icon_state = "stamp-cmo"
|
||||
color = "medical"
|
||||
|
||||
/obj/item/weapon/stamp/denied
|
||||
name = "\improper DENIED rubber stamp"
|
||||
icon_state = "stamp-qm"
|
||||
color = "redcoat"
|
||||
|
||||
/obj/item/weapon/stamp/clown
|
||||
name = "clown's rubber stamp"
|
||||
icon_state = "stamp-clown"
|
||||
color = "clown"
|
||||
Reference in New Issue
Block a user