From 2b4f25c11f31abb4ec7134fb599fa7590218318f Mon Sep 17 00:00:00 2001 From: "daniel.cf.hultgren@gmail.com" Date: Fri, 30 Mar 2012 17:09:37 +0000 Subject: [PATCH] Pen & Paperbin upgrade Added [field] tags to writing, lets you start writing from that spot, useful for forms. Made you able to put paper back in to paper bins. Tweaked fonts for writing, default font is now Verdana, signature font is Times New Roman and crayon is Comic Sans. Updated photocopier to match the changes. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3376 316c924e-a436-60f5-8080-3fe189b3f50e --- code/modules/paperwork/paper.dm | 363 +++++++++++++++++--------- code/modules/paperwork/paperbin.dm | 113 ++++---- code/modules/paperwork/photocopier.dm | 224 ++++++++-------- html/changelog.html | 21 +- 4 files changed, 424 insertions(+), 297 deletions(-) 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, "\[*\]", "
  • ") - 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 = "[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: