Merge pull request #8972 from DeeUnderscore/paper-functionality

Paper functionality additions
This commit is contained in:
Zuhayr
2015-04-29 02:46:21 +09:30
8 changed files with 138 additions and 104 deletions

View File

@@ -1369,8 +1369,8 @@
var/data = "" var/data = ""
var/obj/item/weapon/paper_bundle/B = fax var/obj/item/weapon/paper_bundle/B = fax
for (var/page = 1, page <= B.amount, page++) for (var/page = 1, page <= B.pages.len, page++)
var/obj/pageobj = B.contents[page] var/obj/pageobj = B.pages[page]
data += "<A href='?src=\ref[src];AdminFaxViewPage=[page];paper_bundle=\ref[B]'>Page [page] - [pageobj.name]</A><BR>" data += "<A href='?src=\ref[src];AdminFaxViewPage=[page];paper_bundle=\ref[B]'>Page [page] - [pageobj.name]</A><BR>"
usr << browse(data, "window=[B.name]") usr << browse(data, "window=[B.name]")
@@ -1383,11 +1383,11 @@
if (!bundle) return if (!bundle) return
if (istype(bundle.contents[page], /obj/item/weapon/paper)) if (istype(bundle.pages[page], /obj/item/weapon/paper))
var/obj/item/weapon/paper/P = bundle.contents[page] var/obj/item/weapon/paper/P = bundle.pages[page]
P.show_content(src.owner, 1) P.show_content(src.owner, 1)
else if (istype(bundle.contents[page], /obj/item/weapon/photo)) else if (istype(bundle.pages[page], /obj/item/weapon/photo))
var/obj/item/weapon/photo/H = bundle.contents[page] var/obj/item/weapon/photo/H = bundle.pages[page]
H.show(src.owner) H.show(src.owner)
return return

View File

@@ -68,14 +68,14 @@
//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 //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) if(toppaper)
var/obj/item/weapon/paper/P = 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>" 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];rename=\ref[P]'>Rename</A> - <A href='?src=\ref[src];read=\ref[P]'>[P.name]</A><BR><HR>"
for(var/obj/item/weapon/paper/P in src) for(var/obj/item/weapon/paper/P in src)
if(P==toppaper) if(P==toppaper)
continue continue
dat += "<A href='?src=\ref[src];remove=\ref[P]'>Remove</A> - <A href='?src=\ref[src];read=\ref[P]'>[P.name]</A><BR>" dat += "<A href='?src=\ref[src];remove=\ref[P]'>Remove</A> <A href='?src=\ref[src];rename=\ref[P]'>Rename</A> - <A href='?src=\ref[src];read=\ref[P]'>[P.name]</A><BR>"
for(var/obj/item/weapon/photo/Ph in src) for(var/obj/item/weapon/photo/Ph in src)
dat += "<A href='?src=\ref[src];remove=\ref[Ph]'>Remove</A> - <A href='?src=\ref[src];look=\ref[Ph]'>[Ph.name]</A><BR>" dat += "<A href='?src=\ref[src];remove=\ref[Ph]'>Remove</A> <A href='?src=\ref[src];rename=\ref[Ph]'>Rename</A> - <A href='?src=\ref[src];look=\ref[Ph]'>[Ph.name]</A><BR>"
user << browse(dat, "window=clipboard") user << browse(dat, "window=clipboard")
onclose(user, "clipboard") onclose(user, "clipboard")
@@ -129,6 +129,18 @@
toppaper = newtop toppaper = newtop
else else
toppaper = null toppaper = null
else if(href_list["rename"])
var/obj/item/weapon/O = locate(href_list["rename"])
if(O && (O.loc == src))
if(istype(O, /obj/item/weapon/paper))
var/obj/item/weapon/paper/to_rename = O
to_rename.rename()
else if(istype(O, /obj/item/weapon/photo))
var/obj/item/weapon/photo/to_rename = O
to_rename.rename()
else if(href_list["read"]) else if(href_list["read"])
var/obj/item/weapon/paper/P = locate(href_list["read"]) var/obj/item/weapon/paper/P = locate(href_list["read"])

View File

@@ -189,7 +189,7 @@ var/list/adminfaxes = list() //cache for faxes that have been sent to admins
else if (istype(copyitem, /obj/item/weapon/photo)) else if (istype(copyitem, /obj/item/weapon/photo))
rcvdcopy = photocopy(copyitem) rcvdcopy = photocopy(copyitem)
else if (istype(copyitem, /obj/item/weapon/paper_bundle)) else if (istype(copyitem, /obj/item/weapon/paper_bundle))
rcvdcopy = bundlecopy(copyitem) rcvdcopy = bundlecopy(copyitem, 0)
else else
visible_message("[src] beeps, \"Error transmitting message.\"") visible_message("[src] beeps, \"Error transmitting message.\"")
return return

View File

@@ -44,11 +44,11 @@
var/dat = "<title>[name]</title>" var/dat = "<title>[name]</title>"
for(var/obj/item/weapon/paper/P in src) for(var/obj/item/weapon/paper/P in src)
dat += "<A href='?src=\ref[src];remove=\ref[P]'>Remove</A> - <A href='?src=\ref[src];read=\ref[P]'>[P.name]</A><BR>" dat += "<A href='?src=\ref[src];remove=\ref[P]'>Remove</A> <A href='?src=\ref[src];rename=\ref[P]'>Rename</A> - <A href='?src=\ref[src];read=\ref[P]'>[P.name]</A><BR>"
for(var/obj/item/weapon/photo/Ph in src) for(var/obj/item/weapon/photo/Ph in src)
dat += "<A href='?src=\ref[src];remove=\ref[Ph]'>Remove</A> - <A href='?src=\ref[src];look=\ref[Ph]'>[Ph.name]</A><BR>" dat += "<A href='?src=\ref[src];remove=\ref[Ph]'>Remove</A> <A href='?src=\ref[src];rename=\ref[Ph]'>Rename</A> - <A href='?src=\ref[src];look=\ref[Ph]'>[Ph.name]</A><BR>"
for(var/obj/item/weapon/paper_bundle/Pb in src) for(var/obj/item/weapon/paper_bundle/Pb in src)
dat += "<A href='?src=\ref[src];remove=\ref[Pb]'>Remove</A> - <A href='?src=\ref[src];browse=\ref[Pb]'>[Pb.name]</A><BR>" dat += "<A href='?src=\ref[src];remove=\ref[Pb]'>Remove</A> <A href='?src=\ref[src];rename=\ref[Pb]'>Rename</A> - <A href='?src=\ref[src];browse=\ref[Pb]'>[Pb.name]</A><BR>"
user << browse(dat, "window=folder") user << browse(dat, "window=folder")
onclose(user, "folder") onclose(user, "folder")
add_fingerprint(usr) add_fingerprint(usr)
@@ -85,7 +85,22 @@
if(P && (P.loc == src) && istype(P)) if(P && (P.loc == src) && istype(P))
P.attack_self(usr) P.attack_self(usr)
onclose(usr, "[P.name]") onclose(usr, "[P.name]")
else if(href_list["rename"])
var/obj/item/weapon/O = locate(href_list["rename"])
if(O && (O.loc == src))
if(istype(O, /obj/item/weapon/paper))
var/obj/item/weapon/paper/to_rename = O
to_rename.rename()
else if(istype(O, /obj/item/weapon/photo))
var/obj/item/weapon/photo/to_rename = O
to_rename.rename()
else if(istype(O, /obj/item/weapon/paper_bundle))
var/obj/item/weapon/paper_bundle/to_rename = O
to_rename.rename()
//Update everything //Update everything
attack_self(usr) attack_self(usr)
update_icon() update_icon()

View File

@@ -95,12 +95,15 @@
usr << "<span class='warning'>You cut yourself on the paper.</span>" usr << "<span class='warning'>You cut yourself on the paper.</span>"
return return
var/n_name = sanitizeSafe(input(usr, "What would you like to label the paper?", "Paper Labelling", null) as text, MAX_NAME_LEN) var/n_name = sanitizeSafe(input(usr, "What would you like to label the paper?", "Paper Labelling", null) as text, MAX_NAME_LEN)
if((loc == usr && usr.stat == 0))
name = "[(n_name ? text("[n_name]") : initial(name))]" // We check loc one level up, so we can rename in clipboards and such. See also: /obj/item/weapon/photo/rename()
if(name != "paper") if((loc == usr || loc.loc && loc.loc == usr) && usr.stat == 0 && n_name)
desc = "This is a paper titled '" + name + "'." name = n_name
add_fingerprint(usr) if(n_name != "paper")
return desc = "This is a paper titled '" + name + "'."
add_fingerprint(usr)
return
/obj/item/weapon/paper/attack_self(mob/living/user as mob) /obj/item/weapon/paper/attack_self(mob/living/user as mob)
user.examinate(src) user.examinate(src)
@@ -447,7 +450,9 @@
user << "<span class='notice'>You clip the [P.name] to [(src.name == "paper") ? "the paper" : src.name].</span>" user << "<span class='notice'>You clip the [P.name] to [(src.name == "paper") ? "the paper" : src.name].</span>"
src.loc = B src.loc = B
P.loc = B P.loc = B
B.amount++
B.pages.Add(src)
B.pages.Add(P)
B.update_icon() B.update_icon()
else if(istype(P, /obj/item/weapon/pen) || istype(P, /obj/item/toy/crayon)) else if(istype(P, /obj/item/weapon/pen) || istype(P, /obj/item/toy/crayon))

View File

@@ -11,50 +11,35 @@
layer = 4 layer = 4
pressure_resistance = 1 pressure_resistance = 1
attack_verb = list("bapped") attack_verb = list("bapped")
var/amount = 0 //Amount of items clipped to the paper var/page = 1 // current page
var/page = 1 var/list/pages = list() // Ordered list of pages as they are to be displayed. Can be different order than src.contents.
var/screen = 0
/obj/item/weapon/paper_bundle/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/weapon/paper_bundle/attackby(obj/item/weapon/W as obj, mob/user as mob)
..() ..()
var/obj/item/weapon/paper/P
if(istype(W, /obj/item/weapon/paper))
P = W
if (istype(P, /obj/item/weapon/paper/carbon))
var/obj/item/weapon/paper/carbon/C = P
if (!C.iscopy && !C.copied)
user << "<span class='notice'>Take off the carbon copy first.</span>"
add_fingerprint(user)
return
amount++ if (istype(W, /obj/item/weapon/paper/carbon))
if(screen == 2) var/obj/item/weapon/paper/carbon/C = W
screen = 1 if (!C.iscopy && !C.copied)
user << "<span class='notice'>You add [(P.name == "paper") ? "the paper" : P.name] to [(src.name == "paper bundle") ? "the paper bundle" : src.name].</span>" user << "<span class='notice'>Take off the carbon copy first.</span>"
user.drop_from_inventory(P) add_fingerprint(user)
P.loc = src return
if(istype(user,/mob/living/carbon/human)) // adding sheets
var/mob/living/carbon/human/H = user if(istype(W, /obj/item/weapon/paper) || istype(W, /obj/item/weapon/photo))
H.update_inv_l_hand() insert_sheet_at(user, pages.len+1, W)
H.update_inv_r_hand()
else if(istype(W, /obj/item/weapon/photo)) // burning
amount++
if(screen == 2)
screen = 1
user << "<span class='notice'>You add [(W.name == "photo") ? "the photo" : W.name] to [(src.name == "paper bundle") ? "the paper bundle" : src.name].</span>"
user.drop_from_inventory(W)
W.loc = src
else if(istype(W, /obj/item/weapon/flame)) else if(istype(W, /obj/item/weapon/flame))
burnpaper(W, user) burnpaper(W, user)
// merging bundles
else if(istype(W, /obj/item/weapon/paper_bundle)) else if(istype(W, /obj/item/weapon/paper_bundle))
user.drop_from_inventory(W) user.drop_from_inventory(W)
for(var/obj/O in W) for(var/obj/O in W)
O.loc = src O.loc = src
O.add_fingerprint(usr) O.add_fingerprint(usr)
src.amount++ pages.Add(O)
if(screen == 2)
screen = 1
user << "<span class='notice'>You add \the [W.name] to [(src.name == "paper bundle") ? "the paper bundle" : src.name].</span>" user << "<span class='notice'>You add \the [W.name] to [(src.name == "paper bundle") ? "the paper bundle" : src.name].</span>"
qdel(W) qdel(W)
else else
@@ -62,15 +47,27 @@
return 0 return 0
if(istype(W, /obj/item/weapon/pen) || istype(W, /obj/item/toy/crayon)) if(istype(W, /obj/item/weapon/pen) || istype(W, /obj/item/toy/crayon))
usr << browse("", "window=[name]") //Closes the dialog usr << browse("", "window=[name]") //Closes the dialog
P = src[page] var/obj/P = pages[page]
P.attackby(W, user) P.attackby(W, user)
update_icon() update_icon()
attack_self(usr) //Update the browsed page. attack_self(usr) //Update the browsed page.
add_fingerprint(usr) add_fingerprint(usr)
return return
/obj/item/weapon/paper_bundle/proc/insert_sheet_at(mob/user, var/index, obj/item/weapon/sheet)
if(istype(sheet, /obj/item/weapon/paper))
user << "<span class='notice'>You add [(sheet.name == "paper") ? "the paper" : sheet.name] to [(src.name == "paper bundle") ? "the paper bundle" : src.name].</span>"
else if(istype(sheet, /obj/item/weapon/photo))
user << "<span class='notice'>You add [(sheet.name == "photo") ? "the photo" : sheet.name] to [(src.name == "paper bundle") ? "the paper bundle" : src.name].</span>"
user.drop_from_inventory(sheet)
sheet.loc = src
pages.Insert(index, sheet)
if(index <= page)
page++
/obj/item/weapon/paper_bundle/proc/burnpaper(obj/item/weapon/flame/P, mob/user) /obj/item/weapon/paper_bundle/proc/burnpaper(obj/item/weapon/flame/P, mob/user)
var/class = "<span class='warning'>" var/class = "<span class='warning'>"
@@ -105,28 +102,32 @@
/obj/item/weapon/paper_bundle/proc/show_content(mob/user as mob) /obj/item/weapon/paper_bundle/proc/show_content(mob/user as mob)
var/dat var/dat
var/obj/item/weapon/W = src[page] var/obj/item/weapon/W = pages[page]
switch(screen)
if(0) // first
dat+= "<DIV STYLE='float:left; text-align:left; width:33.33333%'></DIV>" if(page == 1)
dat+= "<DIV STYLE='float:left; text-align:center; width:33.33333%'><A href='?src=\ref[src];remove=1'>Remove [(istype(W, /obj/item/weapon/paper)) ? "paper" : "photo"]</A></DIV>" dat+= "<DIV STYLE='float:left; text-align:left; width:33.33333%'><A href='?src=\ref[src];prev_page=1'>Front</A></DIV>"
dat+= "<DIV STYLE='float:left; text-align:right; width:33.33333%'><A href='?src=\ref[src];next_page=1'>Next Page</A></DIV><BR><HR>" dat+= "<DIV STYLE='float:left; text-align:center; width:33.33333%'><A href='?src=\ref[src];remove=1'>Remove [(istype(W, /obj/item/weapon/paper)) ? "paper" : "photo"]</A></DIV>"
if(1) dat+= "<DIV STYLE='float:left; text-align:right; width:33.33333%'><A href='?src=\ref[src];next_page=1'>Next Page</A></DIV><BR><HR>"
dat+= "<DIV STYLE='float:left; text-align:left; width:33.33333%'><A href='?src=\ref[src];prev_page=1'>Previous Page</A></DIV>" // last
dat+= "<DIV STYLE='float:left; text-align:center; width:33.33333%'><A href='?src=\ref[src];remove=1'>Remove [(istype(W, /obj/item/weapon/paper)) ? "paper" : "photo"]</A></DIV>" else if(page == pages.len)
dat+= "<DIV STYLE='float:left; text-align:right; width:33.33333%'><A href='?src=\ref[src];next_page=1'>Next Page</A></DIV><BR><HR>" dat+= "<DIV STYLE='float:left; text-align:left; width:33.33333%'><A href='?src=\ref[src];prev_page=1'>Previous Page</A></DIV>"
if(2) dat+= "<DIV STYLE='float:left; text-align:center; width:33.33333%'><A href='?src=\ref[src];remove=1'>Remove [(istype(W, /obj/item/weapon/paper)) ? "paper" : "photo"]</A></DIV>"
dat+= "<DIV STYLE='float:left; text-align:left; width:33.33333%'><A href='?src=\ref[src];prev_page=1'>Previous Page</A></DIV>" dat+= "<DIV STYLE='float;left; text-align:right; with:33.33333%'><A href='?src=\ref[src];next_page=1'>Back</A></DIV><BR><HR>"
dat+= "<DIV STYLE='float:left; text-align:center; width:33.33333%'><A href='?src=\ref[src];remove=1'>Remove [(istype(W, /obj/item/weapon/paper)) ? "paper" : "photo"]</A></DIV><BR><HR>" // middle pages
dat+= "<DIV STYLE='float;left; text-align:right; with:33.33333%'></DIV>" else
if(istype(src[page], /obj/item/weapon/paper)) dat+= "<DIV STYLE='float:left; text-align:left; width:33.33333%'><A href='?src=\ref[src];prev_page=1'>Previous Page</A></DIV>"
dat+= "<DIV STYLE='float:left; text-align:center; width:33.33333%'><A href='?src=\ref[src];remove=1'>Remove [(istype(W, /obj/item/weapon/paper)) ? "paper" : "photo"]</A></DIV>"
dat+= "<DIV STYLE='float:left; text-align:right; width:33.33333%'><A href='?src=\ref[src];next_page=1'>Next Page</A></DIV><BR><HR>"
if(istype(pages[page], /obj/item/weapon/paper))
var/obj/item/weapon/paper/P = W var/obj/item/weapon/paper/P = W
if(!(istype(usr, /mob/living/carbon/human) || istype(usr, /mob/dead/observer) || istype(usr, /mob/living/silicon))) if(!(istype(usr, /mob/living/carbon/human) || istype(usr, /mob/dead/observer) || istype(usr, /mob/living/silicon)))
dat+= "<HTML><HEAD><TITLE>[P.name]</TITLE></HEAD><BODY>[stars(P.info)][P.stamps]</BODY></HTML>" dat+= "<HTML><HEAD><TITLE>[P.name]</TITLE></HEAD><BODY>[stars(P.info)][P.stamps]</BODY></HTML>"
else else
dat+= "<HTML><HEAD><TITLE>[P.name]</TITLE></HEAD><BODY>[P.info][P.stamps]</BODY></HTML>" dat+= "<HTML><HEAD><TITLE>[P.name]</TITLE></HEAD><BODY>[P.info][P.stamps]</BODY></HTML>"
user << browse(dat, "window=[name]") user << browse(dat, "window=[name]")
else if(istype(src[page], /obj/item/weapon/photo)) else if(istype(pages[page], /obj/item/weapon/photo))
var/obj/item/weapon/photo/P = W var/obj/item/weapon/photo/P = W
user << browse_rsc(P.img, "tmp_photo.png") user << browse_rsc(P.img, "tmp_photo.png")
user << browse(dat + "<html><head><title>[P.name]</title></head>" \ user << browse(dat + "<html><head><title>[P.name]</title></head>" \
@@ -145,55 +146,51 @@
..() ..()
if((src in usr.contents) || (istype(src.loc, /obj/item/weapon/folder) && (src.loc in usr.contents))) if((src in usr.contents) || (istype(src.loc, /obj/item/weapon/folder) && (src.loc in usr.contents)))
usr.set_machine(src) usr.set_machine(src)
var/obj/item/weapon/in_hand = usr.get_active_hand()
if(href_list["next_page"]) if(href_list["next_page"])
if(page == amount) if(in_hand && (istype(in_hand, /obj/item/weapon/paper) || istype(in_hand, /obj/item/weapon/photo)))
screen = 2 insert_sheet_at(usr, page+1, in_hand)
else if(page == 1) else if(page != pages.len)
screen = 1 page++
else if(page == amount+1) playsound(src.loc, "pageturn", 50, 1)
return
page++
playsound(src.loc, "pageturn", 50, 1)
if(href_list["prev_page"]) if(href_list["prev_page"])
if(page == 1) if(in_hand && (istype(in_hand, /obj/item/weapon/paper) || istype(in_hand, /obj/item/weapon/photo)))
return insert_sheet_at(usr, page, in_hand)
else if(page == 2) else if(page > 1)
screen = 0 page--
else if(page == amount+1) playsound(src.loc, "pageturn", 50, 1)
screen = 1
page--
playsound(src.loc, "pageturn", 50, 1)
if(href_list["remove"]) if(href_list["remove"])
var/obj/item/weapon/W = src[page] var/obj/item/weapon/W = pages[page]
usr.put_in_hands(W) usr.put_in_hands(W)
pages.Remove(pages[page])
usr << "<span class='notice'>You remove the [W.name] from the bundle.</span>" usr << "<span class='notice'>You remove the [W.name] from the bundle.</span>"
if(amount == 1)
if(pages.len <= 1)
var/obj/item/weapon/paper/P = src[1] var/obj/item/weapon/paper/P = src[1]
usr.drop_from_inventory(src) usr.drop_from_inventory(src)
usr.put_in_hands(P) usr.put_in_hands(P)
qdel(src) qdel(src)
else if(page == amount)
screen = 2 return
else if(page == amount+1)
page-- if(page > pages.len)
page = pages.len
amount--
update_icon() update_icon()
else else
usr << "<span class='notice'>You need to hold it in hands!</span>" usr << "<span class='notice'>You need to hold it in hands!</span>"
if (istype(src.loc, /mob) ||istype(src.loc.loc, /mob)) if (istype(src.loc, /mob) ||istype(src.loc.loc, /mob))
src.attack_self(src.loc) src.attack_self(usr)
updateUsrDialog() updateUsrDialog()
/obj/item/weapon/paper_bundle/verb/rename() /obj/item/weapon/paper_bundle/verb/rename()
set name = "Rename bundle" set name = "Rename bundle"
set category = "Object" set category = "Object"
set src in usr set src in usr
var/n_name = sanitizeSafe(input(usr, "What would you like to label the bundle?", "Bundle Labelling", null) as text, MAX_NAME_LEN) var/n_name = sanitizeSafe(input(usr, "What would you like to label the bundle?", "Bundle Labelling", null) as text, MAX_NAME_LEN)
if((loc == usr && usr.stat == 0)) if((loc == usr || loc.loc && loc.loc == usr) && usr.stat == 0)
name = "[(n_name ? text("[n_name]") : "paper")]" name = "[(n_name ? text("[n_name]") : "paper")]"
add_fingerprint(usr) add_fingerprint(usr)
return return
@@ -215,7 +212,7 @@
/obj/item/weapon/paper_bundle/update_icon() /obj/item/weapon/paper_bundle/update_icon()
var/obj/item/weapon/paper/P = src[1] var/obj/item/weapon/paper/P = pages[1]
icon_state = P.icon_state icon_state = P.icon_state
overlays = P.overlays overlays = P.overlays
underlays = 0 underlays = 0

View File

@@ -56,7 +56,7 @@
sleep(15) sleep(15)
else if (istype(copyitem, /obj/item/weapon/paper_bundle)) else if (istype(copyitem, /obj/item/weapon/paper_bundle))
var/obj/item/weapon/paper_bundle/B = bundlecopy(copyitem) var/obj/item/weapon/paper_bundle/B = bundlecopy(copyitem)
sleep(15*B.amount) sleep(15*B.pages.len)
else else
usr << "<span class='warning'>\The [copyitem] can't be copied by \the [src].</span>" usr << "<span class='warning'>\The [copyitem] can't be copied by \the [src].</span>"
break break
@@ -216,7 +216,7 @@
//If need_toner is 0, the copies will still be lightened when low on toner, however it will not be prevented from printing. TODO: Implement print queues for fax machines and get rid of need_toner //If need_toner is 0, the copies will still be lightened when low on toner, however it will not be prevented from printing. TODO: Implement print queues for fax machines and get rid of need_toner
/obj/machinery/photocopier/proc/bundlecopy(var/obj/item/weapon/paper_bundle/bundle, var/need_toner=1) /obj/machinery/photocopier/proc/bundlecopy(var/obj/item/weapon/paper_bundle/bundle, var/need_toner=1)
var/obj/item/weapon/paper_bundle/p = new /obj/item/weapon/paper_bundle (src) var/obj/item/weapon/paper_bundle/p = new /obj/item/weapon/paper_bundle (src)
for(var/obj/item/weapon/W in bundle) for(var/obj/item/weapon/W in bundle.pages)
if(toner <= 0 && need_toner) if(toner <= 0 && need_toner)
toner = 0 toner = 0
visible_message("<span class='notice'>A red light on \the [src] flashes, indicating that it is out of toner.</span>") visible_message("<span class='notice'>A red light on \the [src] flashes, indicating that it is out of toner.</span>")
@@ -227,8 +227,8 @@
else if(istype(W, /obj/item/weapon/photo)) else if(istype(W, /obj/item/weapon/photo))
W = photocopy(W) W = photocopy(W)
W.loc = p W.loc = p
p.amount++ p.pages += W
//p.amount--
p.loc = src.loc p.loc = src.loc
p.update_icon() p.update_icon()
p.icon_state = "paper_words" p.icon_state = "paper_words"

View File

@@ -0,0 +1,5 @@
author: Daranz
delete-after: True
changes:
- rscadd: "Paper bundles can now have papers inserted at arbitrary points. This can be done by clicking the previous/next page links with a sheet of paper in hand."