diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm
index 8dd383803ac..0a6b1c7f975 100644
--- a/code/modules/paperwork/paper.dm
+++ b/code/modules/paperwork/paper.dm
@@ -8,150 +8,253 @@
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
- var/protective_temperature = 0
-/obj/item/weapon/paper/New()
+ var
+ info //What's actually written on the paper.
+ info_links //A different version of the paper which includes html links at fields and EOF
+ stamps //The (text for the) stamps on the paper.
+ fields //Amount of user created fields
+ list/stamped
+ see_face = 1
+ body_parts_covered = HEAD
+ protective_temperature = 0
+ rigged = 0
+ spam_flag = 0
- ..()
- src.pixel_y = rand(-8, 8)
- src.pixel_x = rand(-9, 9)
- spawn(2)
+ const
+ deffont = "Verdana"
+ signfont = "Times New Roman"
+ crayonfont = "Comic Sans MS"
+
+ New()
+ ..()
+ src.pixel_y = rand(-8, 8)
+ src.pixel_x = rand(-9, 9)
+ spawn(2)
+ if(src.info)
+ src.overlays += "paper_words"
+ updateinfolinks()
+ return
+
+ update_icon()
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()
- set src in oview(1)
-
-// ..() //We don't want them to see the dumb "this is a paper" thing every time.
- if(!(istype(usr, /mob/living/carbon/human) || istype(usr, /mob/dead/observer) || istype(usr, /mob/living/silicon)))
- usr << browse("
[name][stars(info)][stamps]", "window=[name]")
- onclose(usr, "[name]")
- else
- usr << browse("[name][info][stamps]", "window=[name]")
- onclose(usr, "[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
+ set src in oview(1)
-/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("[name][info][stamps]", "window=[name]")
- onclose(usr, "[name]")
- else
- usr << browse("[name][stars(info)][stamps]", "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\]", "")
- t = dd_replacetext(t, "\[/center\]", "")
- t = dd_replacetext(t, "\[list\]", "")
- t = dd_replacetext(t, "\[/list\]", "
")
- t = dd_replacetext(t, "\[*\]", "")
- t = dd_replacetext(t, "\[*\]", "")
- t = dd_replacetext(t, "\[br\]", "
")
- t = dd_replacetext(t, "\[hr\]", "
")
- t = dd_replacetext(t, "\[b\]", "")
- t = dd_replacetext(t, "\[/b\]", "")
- t = dd_replacetext(t, "\[i\]", "")
- t = dd_replacetext(t, "\[/i\]", "")
- t = dd_replacetext(t, "\[u\]", "")
- t = dd_replacetext(t, "\[/u\]", "")
- t = dd_replacetext(t, "\[small\]", "")
- t = dd_replacetext(t, "\[/small\]", "")
- t = dd_replacetext(t, "\[large\]", "")
- t = dd_replacetext(t, "\[/large\]", "")
- t = dd_replacetext(t, "\[sign\]", "[user.real_name]")
-
- var/obj/item/weapon/pen/i = P
- t = "[t]"
-
- if(!overlays.Find("paper_words"))
- overlays += "paper_words"
- info += t
+ // ..() //We don't want them to see the dumb "this is a paper" thing every time.
+ if(!(istype(usr, /mob/living/carbon/human) || istype(usr, /mob/dead/observer) || istype(usr, /mob/living/silicon)))
+ usr << browse("[name][stars(info)][stamps]", "window=[name]")
+ onclose(usr, "[name]")
+ else
+ usr << browse("[name][info][stamps]", "window=[name]")
+ onclose(usr, "[name]")
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
+ verb/rename()
+ set name = "Rename paper"
+ set category = "Object"
+ set src in usr
- if ((!in_range(src, usr) && src.loc != user && !( istype(src.loc, /obj/item/weapon/clipboard) ) && src.loc.loc != user && user.equipped() != P))
+ if ((usr.mutations & CLUMSY) && prob(50))
+ usr << "\red You cut yourself on the paper."
return
-
- t = copytext(sanitize(t),1,MAX_MESSAGE_LEN)
- t = dd_replacetext(t, "\[center\]", "")
- t = dd_replacetext(t, "\[/center\]", "")
- t = dd_replacetext(t, "\[br\]", "
")
- t = dd_replacetext(t, "\[b\]", "")
- t = dd_replacetext(t, "\[/b\]", "")
- t = dd_replacetext(t, "\[i\]", "")
- t = dd_replacetext(t, "\[/i\]", "")
- t = dd_replacetext(t, "\[u\]", "")
- t = dd_replacetext(t, "\[/u\]", "")
- t = dd_replacetext(t, "\[large\]", "")
- t = dd_replacetext(t, "\[/large\]", "")
- t = dd_replacetext(t, "\[sign\]", "[user.real_name]")
-
- var/obj/item/toy/crayon/i = P
- t = "[t]"
-
- if(!overlays.Find("paper_words"))
- overlays += "paper_words"
- info += t
+ 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
- else
- if(istype(P, /obj/item/weapon/stamp))
+ attack_self(mob/living/user as mob)
+ examine()
+ if(rigged && isAprilFools())
+ if(spam_flag == 0)
+ spam_flag = 1
+ playsound(src.loc, 'bikehorn.ogg', 50, 1)
+ spawn(20)
+ spam_flag = 0
+ return
+
+ 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("[name][info][stamps]", "window=[name]")
+ onclose(usr, "[name]")
+ else
+ usr << browse("[name][stars(info)][stamps]", "window=[name]")
+ onclose(usr, "[name]")
+ return
+
+ proc
+ addtofield(var/id, var/text, var/links = 0)
+ var/locid = 0
+ var/laststart = 1
+ var/textindex = 1
+ while(1) // I know this can cause infinite loops and fuck up the whole server, but the if(istart==0) should be safe as fuck
+ var/istart = 0
+ if(links)
+ istart = findtext(info_links, "", laststart)
+ else
+ istart = findtext(info, "", laststart)
+
+ if(istart==0)
+ return // No field found with matching id
+
+ laststart = istart+1
+ locid++
+ if(locid == id)
+ var/iend = 1
+ if(links)
+ iend = findtext(info_links, "", istart)
+ else
+ iend = findtext(info, "", istart)
+
+ //textindex = istart+26
+ textindex = iend
+ break
+
+ if(links)
+ var/before = copytext(info_links, 1, textindex)
+ var/after = copytext(info_links, textindex)
+ info_links = before + text + after
+ else
+ var/before = copytext(info, 1, textindex)
+ var/after = copytext(info, textindex)
+ info = before + text + after
+ updateinfolinks()
+
+ updateinfolinks()
+ info_links = info
+ var/i = 0
+ for(i=1,i<=fields,i++)
+ addtofield(i, "write", 1)
+ info_links = info_links + "write"
+
+ parsepencode(var/t, var/obj/item/weapon/pen/P, mob/user as mob, var/iscrayon = 0)
+ t = copytext(sanitize(t),1,MAX_MESSAGE_LEN)
+
+ t = dd_replacetext(t, "\[center\]", "")
+ t = dd_replacetext(t, "\[/center\]", "")
+ t = dd_replacetext(t, "\[br\]", "
")
+ t = dd_replacetext(t, "\[b\]", "")
+ t = dd_replacetext(t, "\[/b\]", "")
+ t = dd_replacetext(t, "\[i\]", "")
+ t = dd_replacetext(t, "\[/i\]", "")
+ t = dd_replacetext(t, "\[u\]", "")
+ t = dd_replacetext(t, "\[/u\]", "")
+ t = dd_replacetext(t, "\[large\]", "")
+ t = dd_replacetext(t, "\[/large\]", "")
+ t = dd_replacetext(t, "\[sign\]", "[user.real_name]")
+ t = dd_replacetext(t, "\[field\]", "")
+
+ if(!iscrayon)
+ t = dd_replacetext(t, "\[*\]", "")
+ t = dd_replacetext(t, "\[hr\]", "
")
+ t = dd_replacetext(t, "\[small\]", "")
+ t = dd_replacetext(t, "\[/small\]", "")
+ t = dd_replacetext(t, "\[list\]", "")
+ t = dd_replacetext(t, "\[/list\]", "
")
+
+ t = "[t]"
+ else // If it is a crayon, and he still tries to use these, make them empty!
+ t = dd_replacetext(t, "\[*\]", "")
+ t = dd_replacetext(t, "\[hr\]", "")
+ t = dd_replacetext(t, "\[small\]", "")
+ t = dd_replacetext(t, "\[/small\]", "")
+ t = dd_replacetext(t, "\[list\]", "")
+ t = dd_replacetext(t, "\[/list\]", "")
+
+ t = "[t]"
+
+ //Count the fields
+ var/laststart = 1
+ while(1)
+ var/i = findtext(t, "", laststart)
+ if(i==0)
+ break
+ laststart = i+1
+ fields++
+
+ return t
+
+ openhelp(mob/user as mob)
+ user << browse({"Pen Help
+
+ Crayon&Pen commands
+
+ \[br\] : Creates a linebreak.
+ \[center\] - \[/center\] : Centers the text.
+ \[b\] - \[/b\] : Makes the text bold.
+ \[i\] - \[/i\] : Makes the text italic.
+ \[u\] - \[/u\] : Makes the text underlined.
+ \[large\] - \[/large\] : Increases the size of the text.
+ \[sign\] : Inserts a signature of your name in a foolproof way.
+ \[field\] : Inserts an invisible field which lets you start type from there. Useful for forms.
+
+ Pen exclusive commands
+ \[small\] - \[/small\] : Decreases the size of the text.
+ \[list\] - \[/list\] : A list.
+ \[*\] : A dot used for lists.
+ \[hr\] : Adds a horizontal rule.
+ "}, "window=paper_help")
+
+
+ Topic(href, href_list)
+ ..()
+ if ((usr.stat || usr.restrained()))
+ return
+
+ if(href_list["write"])
+ var/id = href_list["write"]
+ var/t = strip_html_simple(input(usr, "What text do you wish to add to " + (id=="end" ? "the end of the paper" : "field "+id) + "?", "[name]", null),8192) as text
+
+ var/obj/item/i = usr.equipped() // Check to see if he still got that darn pen, also check if he's using a crayon or pen.
+ var/iscrayon = 0
+ if(!istype(i, /obj/item/weapon/pen))
+ if(!istype(i, /obj/item/toy/crayon))
+ return
+ iscrayon = 1
+
+
+ if ((!in_range(src, usr) && src.loc != usr && !( istype(src.loc, /obj/item/weapon/clipboard) ) && src.loc.loc != usr && usr.equipped() != i)) // Some check to see if he's allowed to write
+ return
+
+ t = parsepencode(t, i, usr, iscrayon) // Encode everything from pencode to html
+
+ 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()
+
+ usr << browse("[name][info_links][stamps]", "window=[name]") // Update the window
+
+ if(!overlays.Find("paper_words"))
+ overlays += "paper_words"
+
+ 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) || istype(P, /obj/item/toy/crayon))
+ usr << browse("[name][info_links][stamps]", "window=[name]")
+ //openhelp(user)
+ 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 += "
This paper has been stamped with the [P.name]."
- else
- stamps += "
This paper has been stamped with the [P.name]."
+
+ stamps += (stamps=="" ? "
" : "
") + "This paper has been stamped with the [P.name]."
+
switch(P.type)
if(/obj/item/weapon/stamp/captain)
overlays += "paper_stamped_cap"
@@ -180,5 +283,5 @@
stamped += P.type
user << "\blue You stamp the paper with your rubber stamp."
- add_fingerprint(user)
- return
\ No newline at end of file
+ add_fingerprint(user)
+ return
\ No newline at end of file
diff --git a/code/modules/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm
index 8cdf75fa745..19cfa342151 100644
--- a/code/modules/paperwork/paperbin.dm
+++ b/code/modules/paperwork/paperbin.dm
@@ -7,59 +7,82 @@
w_class = 3
throw_speed = 3
throw_range = 7
- var/amount = 30 //How much paper is in the bin.
+ var
+ amount = 30 //How much paper is in the bin.
+ list/papers = new/list() //List of papers put in the bin for reference.
+ sealed = 1 //If it's brandnew and unopened, it's sealed.
-/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
+ 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)
+ 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)
+ attack_hand(mob/user as mob)
+ if (amount >= 1)
+ amount--
+ if(amount==0)
+ update_icon()
+
+ var/obj/item/weapon/paper/P
+ if (papers.len > 0) // If there's any custom paper on the stack, use that instead of creating a new paper.
+ P = papers[papers.len]
+ papers.Remove(P)
+ else
+ P = new /obj/item/weapon/paper
+ if(isAprilFools())
+ if(prob(30))
+ P.info = "HONK HONK HONK HONK HONK HONK HONK
HOOOOOOOOOOOOOOOOOOOOOONK
APRIL FOOLS"
+ P.rigged = 1
+ P.updateinfolinks()
+
+ 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
- P.loc = get_turf_loc(src)
- user << "You take a paper out of the bin."
- else
- user << "The paper bin is empty!"
+ user << "The paper bin is empty!"
- add_fingerprint(user)
- return
+ add_fingerprint(user)
+ return
-/obj/item/weapon/paper_bin/examine()
- set src in oview(1)
+ attackby(obj/item/weapon/paper/i as obj, mob/user as mob)
+ if(!istype(i))
+ return
- if(amount)
- if(amount > 1)
- usr << "There are [amount] papers in the bin."
+ user.drop_item()
+ i.loc = src
+ usr << "You put the paper on the top of the paper bin."
+ papers.Add(i)
+ amount++
+
+ examine()
+ set src in oview(1)
+
+ if(amount)
+ usr << "There " + (amount > 1 ? "are [amount] papers" : "is one paper") + " in the bin."
else
- usr << "There is one paper in the bin."
- else
- usr << "There are no papers in the bin."
- return
+ 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"
\ No newline at end of file
+ update_icon()
+ if(amount < 1)
+ icon_state = "paper_bin0"
+ else
+ icon_state = "paper_bin1"
\ No newline at end of file
diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm
index 43ddf6d285f..040b9e90fcb 100644
--- a/code/modules/paperwork/photocopier.dm
+++ b/code/modules/paperwork/photocopier.dm
@@ -8,128 +8,128 @@
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!
+ var
+ obj/item/weapon/paper/copy = null //what's in the copier!
+ copies = 1 //how many copies to print!
+ toner = 30 //how much toner is left! woooooo~
+ 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)
+ 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)
+ attack_paw(mob/user as mob)
+ return src.attack_hand(user)
-/obj/machinery/photocopier/attack_hand(mob/user as mob)
- user.machine = src
+ attack_hand(mob/user as mob)
+ user.machine = src
- var/dat = "Photocopier
"
- if(copy)
- dat += "Remove Paper
"
- if(toner)
- dat += "Copy
"
- dat += "Printing: [copies] copies."
- dat += "- "
- dat += "+
"
- else if(toner)
- dat += "Please insert paper to copy.
"
- dat += "Current toner level: [toner]"
- if(!toner)
- dat +="
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"])
+ var/dat = "Photocopier
"
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 = ""
- else //no toner? shitty copies for you!
- c.info = ""
- var/copied = html_decode(copy.info)
- copied = dd_replacetext(copied, ""
- 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()
+ dat += "Remove Paper
"
+ if(toner)
+ dat += "Copy
"
+ dat += "Printing: [copies] copies."
+ dat += "- "
+ dat += "+
"
+ else if(toner)
+ dat += "Please insert paper to copy.
"
+ dat += "Current toner level: [toner]"
+ if(!toner)
+ dat +="
Please insert a new toner cartridge!"
+ user << browse(dat, "window=copier")
+ onclose(user, "copier")
+ return
-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."
+ 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 = ""
+ else //no toner? shitty copies for you!
+ c.info = ""
+ var/copied = html_decode(copy.info)
+ copied = dd_replacetext(copied, ""
+ c.name = copy.name // -- Doohl
+ c.fields = copy.fields
+ c.updateinfolinks()
+ toner--
+ sleep(15)
+ else
+ break
+ updateUsrDialog()
+ else 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()
+ else if(href_list["min"])
+ if(copies > 1)
+ copies--
+ updateUsrDialog()
+ else if(href_list["add"])
+ if(copies < maxcopies)
+ copies++
+ updateUsrDialog()
-obj/machinery/photocopier/ex_act(severity)
- switch(severity)
- if(1.0)
- del(src)
- return
- if(2.0)
- if(prob(50))
- del(src)
+ 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
- if(toner > 0)
- new /obj/effect/decal/cleanable/oil(get_turf(src))
- toner = 0
- return
+ user << "There is already paper in the photocopier."
+ else 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."
+ return
+
+ ex_act(severity)
+ switch(severity)
+ if(1.0)
+ del(src)
+ if(2.0)
+ if(prob(50))
+ del(src)
+ else
+ if(toner > 0)
+ new /obj/effect/decal/cleanable/oil(get_turf(src))
+ toner = 0
+ else
+ if(prob(50))
+ if(toner > 0)
+ new /obj/effect/decal/cleanable/oil(get_turf(src))
+ toner = 0
+ return
+
+ blob_act()
+ if(prob(50))
+ del(src)
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
+ if(toner > 0)
+ new /obj/effect/decal/cleanable/oil(get_turf(src))
+ toner = 0
return
-obj/item/device/toner
+/obj/item/device/toner
name = "toner cartridge"
icon_state = "tonercartridge"
\ No newline at end of file
diff --git a/html/changelog.html b/html/changelog.html
index 23b352b41ab..e2c13061518 100644
--- a/html/changelog.html
+++ b/html/changelog.html
@@ -93,22 +93,23 @@ should be listed in the changelog upon commit tho. Thanks. -->
-
Thursday, March 29th
+
30 March 2012
+
Donkie updated:
+
+ - You can now stick papers back in to paperbins, text will persist.
+ - Added a [field] bbcode tag to the pen writing. Lets your start writing from that point.
+ - Changed fonts a bit for papers to make [sign] stand out more.
+
+
+
+
+
29 March 2012
PolymorphBlue updated:
- Exosuits now provide a message when someone is getting in, someone getting in must remain stationary and unstunned, and getting in takes four seconds.
-
-
-
-
-
-
-
-
-
28 March 2012
Carn updated: