From 413cbe00eb977c2c0e2c7e7abe7d412eac1e7eba Mon Sep 17 00:00:00 2001
From: variableundefined <40092670+variableundefined@users.noreply.github.com>
Date: Wed, 29 Aug 2018 22:00:24 +0800
Subject: [PATCH 1/3] Fixes paper bundle runtimes
---
code/modules/paperwork/paper.dm | 2 +-
code/modules/paperwork/paper_bundle.dm | 8 +++++--
code/modules/paperwork/photocopier.dm | 29 +++++++++++++++-----------
3 files changed, 24 insertions(+), 15 deletions(-)
diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm
index 2fe57c5698f..c7739f7c7b5 100644
--- a/code/modules/paperwork/paper.dm
+++ b/code/modules/paperwork/paper.dm
@@ -316,7 +316,7 @@
to_chat(user, "Take off the carbon copy first.")
add_fingerprint(user)
return
- var/obj/item/paper_bundle/B = new(src.loc)
+ var/obj/item/paper_bundle/B = new(src.loc, default_papers = FALSE)
if(name != "paper")
B.name = name
else if(P.name != "paper" && P.name != "photo")
diff --git a/code/modules/paperwork/paper_bundle.dm b/code/modules/paperwork/paper_bundle.dm
index 08cb7b6555e..73c9f9459dc 100644
--- a/code/modules/paperwork/paper_bundle.dm
+++ b/code/modules/paperwork/paper_bundle.dm
@@ -11,11 +11,15 @@
layer = 4
pressure_resistance = 1
attack_verb = list("bapped")
- var/amount = 0 //Amount of items clipped to the paper
+ var/amount = 0 //Amount of items clipped to the paper. Note: If you have 2 paper, this should be 1
var/page = 1
var/screen = 0
-
+/obj/item/paper_bundle/New(default_papers = TRUE)
+ if(default_papers) // This is to avoid runtime occuring from a paper bundle being created without a paper in it.
+ new /obj/item/paper(src)
+ new /obj/item/paper(src)
+ amount += 1
/obj/item/paper_bundle/attackby(obj/item/W as obj, mob/user as mob, params)
..()
var/obj/item/paper/P
diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm
index ed5b7c1cfd4..b73d6172108 100644
--- a/code/modules/paperwork/photocopier.dm
+++ b/code/modules/paperwork/photocopier.dm
@@ -73,8 +73,10 @@
sleep(15)
else if(istype(copyitem, /obj/item/paper_bundle))
var/obj/item/paper_bundle/B = bundlecopy(copyitem)
+ if(!B)
+ return
sleep(15*B.amount)
- else if(ass && ass.loc == src.loc)
+ else if(ass && ass.loc == loc)
copyass()
sleep(15)
else
@@ -287,7 +289,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
/obj/machinery/photocopier/proc/bundlecopy(var/obj/item/paper_bundle/bundle, var/need_toner=1)
- var/obj/item/paper_bundle/p = new /obj/item/paper_bundle (src)
+ var/obj/item/paper_bundle/P = new /obj/item/paper_bundle (src, default_papers = FALSE)
for(var/obj/item/W in bundle)
if(toner <= 0 && need_toner)
toner = 0
@@ -298,16 +300,19 @@
W = copy(W)
else if(istype(W, /obj/item/photo))
W = photocopy(W)
- W.forceMove(p)
- p.amount++
- p.amount--
- p.forceMove(get_turf(src))
- p.update_icon()
- p.icon_state = "paper_words"
- p.name = bundle.name
- p.pixel_y = rand(-8, 8)
- p.pixel_x = rand(-9, 9)
- return p
+ W.forceMove(P)
+ P.amount++
+ if(!P.amount)
+ qdel(P)
+ return null
+ P.amount--
+ P.forceMove(get_turf(src))
+ P.update_icon()
+ P.icon_state = "paper_words"
+ P.name = bundle.name
+ P.pixel_y = rand(-8, 8)
+ P.pixel_x = rand(-9, 9)
+ return P
/obj/machinery/photocopier/MouseDrop_T(mob/target, mob/user)
From bd8f0396c2dd56046bcea1f80c65914c55f4e089 Mon Sep 17 00:00:00 2001
From: variableundefined <40092670+variableundefined@users.noreply.github.com>
Date: Wed, 29 Aug 2018 22:40:16 +0800
Subject: [PATCH 2/3] Photocopier safety check
---
code/modules/paperwork/photocopier.dm | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm
index b73d6172108..7e6d823e4be 100644
--- a/code/modules/paperwork/photocopier.dm
+++ b/code/modules/paperwork/photocopier.dm
@@ -72,6 +72,10 @@
photocopy(copyitem)
sleep(15)
else if(istype(copyitem, /obj/item/paper_bundle))
+ var/obj/item/paper_bundle/C = copyitem
+ if(toner < (C.amount + 1))
+ visible_message("A yellow light on \the [src] flashes, indicating there's not enough toner for the operation.") // It is better to prevent partial bundle than to produce broken paper bundle
+ return
var/obj/item/paper_bundle/B = bundlecopy(copyitem)
if(!B)
return
From ade853c742baa2a96c1ced269771dd24f3b67c50 Mon Sep 17 00:00:00 2001
From: variableundefined <40092670+variableundefined@users.noreply.github.com>
Date: Tue, 4 Sep 2018 09:41:09 +0800
Subject: [PATCH 3/3] remove excessive the
---
code/modules/paperwork/photocopier.dm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm
index 7e6d823e4be..e23a50cde3c 100644
--- a/code/modules/paperwork/photocopier.dm
+++ b/code/modules/paperwork/photocopier.dm
@@ -74,7 +74,7 @@
else if(istype(copyitem, /obj/item/paper_bundle))
var/obj/item/paper_bundle/C = copyitem
if(toner < (C.amount + 1))
- visible_message("A yellow light on \the [src] flashes, indicating there's not enough toner for the operation.") // It is better to prevent partial bundle than to produce broken paper bundle
+ visible_message("A yellow light on [src] flashes, indicating there's not enough toner for the operation.") // It is better to prevent partial bundle than to produce broken paper bundle
return
var/obj/item/paper_bundle/B = bundlecopy(copyitem)
if(!B)