Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Paper Scanner Addition #9299

Merged
merged 2 commits into from
Jul 15, 2020
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions aurorastation.dme
Original file line number Diff line number Diff line change
Expand Up @@ -2132,6 +2132,7 @@
#include "code\modules\modular_computers\hardware\portable_hard_drive_presets.dm"
#include "code\modules\modular_computers\hardware\processor_unit.dm"
#include "code\modules\modular_computers\hardware\tesla_link.dm"
#include "code\modules\modular_computers\items\paper_scanner.dm"
#include "code\modules\modular_computers\NTNet\NTNet.dm"
#include "code\modules\modular_computers\NTNet\NTNet_relay.dm"
#include "code\modules\modular_computers\NTNet\NTNRC\conversation.dm"
Expand Down
95 changes: 95 additions & 0 deletions code/modules/modular_computers/items/paper_scanner.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
/obj/item/paper_scanner
name = "paper scanner"
desc = "A simple device that can be used to scan paper or paper bundles in order to digitize them."
desc_info = "Alt-click it while it's in one of your hands to eject the portable drive. Click a paper or paper bundle with it to digitize it and store it in the inserted drive."
icon = 'icons/obj/devices/paperscanner.dmi'
icon_state = "paperscanner"
item_state = "paperscanner"
contained_sprite = TRUE
var/obj/item/computer_hardware/hard_drive/portable/drive

/obj/item/paper_scanner/Initialize(mapload, ...)
. = ..()
drive = new /obj/item/computer_hardware/hard_drive/portable(src)
update_icon()

/obj/item/paper_scanner/update_icon()
cut_overlays()
if(drive)
add_overlay("paperscanner-drive")

/obj/item/paper_scanner/AltClick(mob/living/carbon/user)
if(!drive)
to_chat(user, SPAN_WARNING("\The [src] doesn't have a drive installed."))
return
if(!istype(user))
to_chat(user, SPAN_WARNING("You're too simple to work \the [src]."))
return
if(user.l_hand == src || user.r_hand == src)
to_chat(user, SPAN_NOTICE("You eject \the [drive]."))
user.put_in_hands(drive)
drive = null
update_icon()
else
to_chat(user, SPAN_WARNING("You must be holding \the [src] in one of your hands before you can eject a drive."))

/obj/item/paper_scanner/attackby(obj/item/W, mob/user)
if(istype(W, /obj/item/computer_hardware/hard_drive/portable))
if(drive)
to_chat(user, SPAN_WARNING("\The [src] already has a drive installed!"))
return
to_chat(user, SPAN_NOTICE("You insert \the [W] into \the [src]."))
user.drop_from_inventory(W, src)
drive = W
update_icon()
else
..()

/obj/item/paper_scanner/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
if(proximity_flag && (istype(target, /obj/item/paper) || istype(target, /obj/item/paper_bundle)))
do_scan(target, user)

/obj/item/paper_scanner/proc/do_scan(var/obj/item/target, var/mob/user)
if(!drive)
to_chat(user, SPAN_WARNING("\The [src] doesn't have a drive installed."))
return

var/list/pages_to_scan = list()
var/obj/item/paper/P = target
var/obj/item/paper_bundle/PB = target

if(istype(P))
if(!P.info)
to_chat(user, SPAN_WARNING("\The [P] doesn't have any information on it."))
return
pages_to_scan += P
else if(istype(PB))
var/has_info = FALSE
for(var/obj/item/paper/page in PB.pages)
if(page.info)
pages_to_scan += page
has_info = TRUE
if(!has_info)
to_chat(user, SPAN_WARNING("\The [PB] doesn't have any information in it."))
return

if(!length(pages_to_scan))
return

user.visible_message("<b>[user]</b> starts making a scan of \the [target]...", SPAN_NOTICE("You start making a scan of \the [target]..."), range = 3)
if(do_after(user, 30 * length(pages_to_scan), TRUE, target))
if(!drive)
to_chat(user, SPAN_WARNING("\The [src] doesn't have a drive installed."))
return
user.visible_message("<b>[user]</b> makes a scan of \the [target].", SPAN_NOTICE("You make a scan of \the [target]."), range = 3)
var/datum/computer_file/data/F = new /datum/computer_file/data(drive)
F.filename = target.name != initial(target.name) ? "[target.name] ([worldtime2text()] - [time2text(world.time, "Month DD")])" : "Digital Paper ([worldtime2text()] - [time2text(world.time, "Month DD")])"
F.filetype = "TXT"
var/data_to_save = ""
for(var/thing in pages_to_scan)
var/obj/item/paper/page = thing
data_to_save += page.info
data_to_save += "\[br\]"
F.stored_data = data_to_save
if(!drive.store_file(F))
to_chat(usr, SPAN_WARNING("\The [drive] does not have enough space to store the latest scanned file."))
3 changes: 2 additions & 1 deletion code/modules/paperwork/paper_bundle.dm
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
if(istype(W, /obj/item/paper) || istype(W, /obj/item/photo))
insert_sheet_at(user, pages.len+1, W)
amount++
attack_self(usr) //Update the browsed page.

// burning
else if(istype(W, /obj/item/flame))
Expand All @@ -43,6 +44,7 @@
amount++

to_chat(user, "<span class='notice'>You add \the [W.name] to [(src.name == "paper bundle") ? "the paper bundle" : src.name].</span>")
attack_self(usr) //Update the browsed page.
qdel(W)
else
if(istype(W, /obj/item/tape_roll))
Expand All @@ -53,7 +55,6 @@
P.attackby(W, user)

update_icon()
attack_self(usr) //Update the browsed page.
add_fingerprint(usr)
return

Expand Down
6 changes: 6 additions & 0 deletions html/changelogs/geeves-paper_scanner.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
author: Geeves

delete-after: True

changes:
- rscadd: "Added a paper scanner device that can scan paper and paper bundles and convert them into data files."
Binary file added icons/obj/devices/paperscanner.dmi
Binary file not shown.
49 changes: 48 additions & 1 deletion maps/aurora/aurora-4_mainlevel.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -12594,6 +12594,7 @@
dir = 9
},
/obj/structure/table/reinforced,
/obj/item/paper_scanner,
/turf/simulated/floor/tiled,
/area/bridge)
"awV" = (
Expand Down Expand Up @@ -14476,6 +14477,7 @@
req_access = list(7)
},
/obj/effect/floor_decal/corner_wide/mauve/full,
/obj/item/paper_scanner,
/turf/simulated/floor/tiled/white,
/area/rnd/telesci)
"azV" = (
Expand Down Expand Up @@ -16065,6 +16067,7 @@
info = "\[center]\[Large]\[b]NSS Exodus\[/b]\[/large]\[br] \[small]Armoury Inventory\[/small]\[/center] \[hr] \[hr] \[br] \[b]Weaponry\[/b]\[br] \[field] Energy Gun(s)\[br] \[field] Laser Gun(s)\[br] \[field] Ion Rifle(s)\[br] \[field] Combat Shotgun(s) \[hr] \[b]Armour\[/b]\[br] \[field] Bulletproof Vest(s)\[br] \[field] Abalative Vest(s)\[br] \[field] Biohazard Suit(s)\[br] \[field] Bomb Suit(s) \[hr] \[b]Auxiliary Equipment\[/b]\[br] \[field] Gasmask(s)\[br] \[field] box(es) of Flashbangs\[br] \[field] box(es) of Handcuffs\[br] \[field] box(es) of R.O.B.U.S.T. Cartridges \[hr] \[b]Riot Equipment\[/b]\[br] \[field] Stun Baton(s)\[br] \[field] Riot Suit(s)\[br] \[field] Riot Shield(s) \[hr] \[b]Tactical Equipment\[/b]\[br] \[field] Tactical Armour(s)\[br] \[field] Tactical Helmet(s)\[br] \[field] Tactical Jumpsuit(s)\[br] \[field] Green Balaclava(s)\[br] \[field] Tactical HUD(s)\[br] \[field] Combat Belt(s)\[br] \[field] Black Glove(s)\[br] \[field] Jackboot(s) \[hr] \[b]Implants\[/b]\[br] \[field] Tracking Implant Box(es)\[br] \[field] Chemical Implant Box(es) \[hr] \[b]Defense Systems\[/b]\[br] \[field] Deployable Barrier(s)\[br] \[field] Portable Flasher(s) \[hr] \[b]Other\[/b]\[br] \[field] Holobadge Box(es) \[hr] \[b]\[center]Warden's's Signature:\[/b] \[field]\[/center] \[hr]";
name = "Armory Inventory"
},
/obj/item/paper_scanner,
/turf/simulated/floor/tiled,
/area/security/warden)
"aCA" = (
Expand Down Expand Up @@ -21098,6 +21101,10 @@
network = list("Capt_Office");
pixel_y = 30
},
/obj/item/paper_scanner{
pixel_x = 6;
pixel_y = -2
},
/turf/simulated/floor/carpet,
/area/crew_quarters/captain)
"aKH" = (
Expand Down Expand Up @@ -23656,6 +23663,7 @@
},
/obj/structure/table/standard,
/obj/item/folder/sec,
/obj/item/paper_scanner,
/turf/simulated/floor/tiled,
/area/security/brig)
"aPg" = (
Expand Down Expand Up @@ -24284,6 +24292,9 @@
/obj/structure/table/standard,
/obj/item/paper_bin,
/obj/item/pen,
/obj/item/paper_scanner{
pixel_x = 8
},
/turf/simulated/floor/carpet,
/area/crew_quarters/heads/chief)
"aQh" = (
Expand Down Expand Up @@ -24567,6 +24578,7 @@
pixel_x = 5;
pixel_y = -30
},
/obj/item/paper_scanner,
/turf/simulated/floor/tiled/dark,
/area/crew_quarters/heads/hos)
"aQI" = (
Expand Down Expand Up @@ -26777,6 +26789,9 @@
d2 = 4;
icon_state = "2-4"
},
/obj/item/paper_scanner{
pixel_x = -8
},
/turf/simulated/floor/carpet,
/area/journalistoffice)
"aUq" = (
Expand Down Expand Up @@ -27593,6 +27608,10 @@
"aVG" = (
/obj/structure/table/reinforced,
/obj/item/modular_computer/laptop/preset/command/hop,
/obj/item/paper_scanner{
pixel_x = 4;
pixel_y = 8
},
/turf/simulated/floor/wood,
/area/crew_quarters/heads/hop)
"aVH" = (
Expand Down Expand Up @@ -32778,6 +32797,7 @@
pixel_x = 5;
pixel_y = -4
},
/obj/item/paper_scanner,
/turf/simulated/floor/carpet/blue,
/area/medical/exam_room{
name = "\improper Medical - Exam Room 2"
Expand Down Expand Up @@ -36570,6 +36590,9 @@
pixel_y = 6
},
/obj/item/pen,
/obj/item/paper_scanner{
pixel_x = 6
},
/turf/simulated/floor/tiled/white,
/area/crew_quarters/heads/cmo)
"blG" = (
Expand Down Expand Up @@ -37936,6 +37959,7 @@
dir = 4
},
/obj/structure/table/standard,
/obj/item/paper_scanner,
/turf/simulated/floor/carpet/blue,
/area/medical/exam_room{
name = "\improper Medical - Exam Room 1"
Expand Down Expand Up @@ -43660,6 +43684,10 @@
/obj/item/device/eftpos{
eftpos_name = "Research EFTPOS scanner"
},
/obj/item/paper_scanner{
pixel_x = -6;
pixel_y = 4
},
/turf/simulated/floor/carpet/blue,
/area/rnd/rdoffice)
"bzD" = (
Expand Down Expand Up @@ -48531,6 +48559,7 @@
req_access = list(37)
},
/obj/structure/table/wood,
/obj/item/paper_scanner,
/turf/simulated/floor/wood,
/area/library)
"bKK" = (
Expand Down Expand Up @@ -50058,6 +50087,14 @@
/obj/structure/table/wood,
/obj/item/paper_bin,
/obj/item/pen,
/obj/item/paper_scanner{
pixel_x = 2;
pixel_y = 2
},
/obj/item/paper_scanner{
pixel_x = -2;
pixel_y = -2
},
/obj/machinery/light{
dir = 8
},
Expand Down Expand Up @@ -54016,6 +54053,7 @@
dir = 6
},
/obj/structure/table/standard,
/obj/item/paper_scanner,
/obj/item/paper_bin{
pixel_x = -3;
pixel_y = 7
Expand Down Expand Up @@ -63051,6 +63089,7 @@
dir = 6
},
/obj/structure/table/reinforced,
/obj/item/paper_scanner,
/turf/simulated/floor/tiled,
/area/bridge)
"mlB" = (
Expand Down Expand Up @@ -65721,6 +65760,11 @@
/obj/effect/floor_decal/corner/grey/diagonal,
/turf/simulated/floor/tiled/old_white,
/area/maintenance/medbay)
"skc" = (
/obj/structure/table/steel,
/obj/item/paper_scanner,
/turf/simulated/floor/carpet/rubber,
/area/rnd/misc_lab)
"slK" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/window/eastleft{
Expand Down Expand Up @@ -67795,6 +67839,9 @@
pixel_x = 3;
pixel_y = 4
},
/obj/item/paper_scanner{
pixel_x = -4
},
/turf/simulated/floor/carpet,
/area/lawoffice)
"wzO" = (
Expand Down Expand Up @@ -91271,7 +91318,7 @@ btK
buR
bDu
bxc
byE
skc
hwh
byE
bCD
Expand Down
Loading