From 41fc81e9f094cb132b09f4c4be2a4b212f655bf5 Mon Sep 17 00:00:00 2001 From: Mechoid Date: Mon, 4 Nov 2019 18:24:08 -0800 Subject: [PATCH] Setup for New Library (#6514) * Setup for New Library * F U C K * Multipage Huzzah * FixFix * Fixfix2Bookboogaloo --- .../library/hardcode_library/_library.dm | 61 ++++++++++++++ code/modules/library/lib_items.dm | 69 ++++++++++++++++ code/modules/library/lib_machines.dm | 76 +++++++++++++++++- code/modules/lore_codex/codex.dm | 5 +- icons/obj/custom_books.dmi | Bin 0 -> 15460 bytes polaris.dme | 1 + 6 files changed, 207 insertions(+), 5 deletions(-) create mode 100644 code/modules/library/hardcode_library/_library.dm create mode 100644 icons/obj/custom_books.dmi diff --git a/code/modules/library/hardcode_library/_library.dm b/code/modules/library/hardcode_library/_library.dm new file mode 100644 index 0000000000..03364fea0a --- /dev/null +++ b/code/modules/library/hardcode_library/_library.dm @@ -0,0 +1,61 @@ +/* + * Home of the New (NOV 1st, 2019) library books. + */ + +/obj/item/weapon/book/custom_library + name = "Book" + desc = "A hardbound book." + description_info = "This book is printed from the custom repo. If you can see this, something went wrong." + + icon = 'icons/obj/custom_books.dmi' + icon_state = "book" + + // This is the ckey of the book's author. + var/origkey = null + author = "UNKNOWN" + +/obj/item/weapon/book/custom_library/fiction + libcategory = "Fiction" + +/obj/item/weapon/book/custom_library/nonfiction + libcategory = "Non-Fiction" + +/obj/item/weapon/book/custom_library/reference + libcategory = "Reference" + +/obj/item/weapon/book/custom_library/religious + libcategory = "Religious" +/* +/obj/item/weapon/book/custom_library/adult + libcategory = "Adult" +*/ +/obj/item/weapon/book/bundle/custom_library + name = "Book" + desc = "A hardbound book." + description_info = "This book is printed from the custom repo. If you can see this, something went wrong." + + icon = 'icons/obj/custom_books.dmi' + icon_state = "book" + + // This is the ckey of the book's author. + var/origkey = null + author = "UNKNOWN" + + page = 1 //current page + pages = list() //the contents of each page + +/obj/item/weapon/book/bundle/custom_library/fiction + libcategory = "Fiction" + +/obj/item/weapon/book/bundle/custom_library/nonfiction + libcategory = "Non-Fiction" + +/obj/item/weapon/book/bundle/custom_library/reference + libcategory = "Reference" + +/obj/item/weapon/book/bundle/custom_library/religious + libcategory = "Religious" +/* +/obj/item/weapon/book/bundle/custom_library/adult + libcategory = "Adult" +*/ diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm index 3c7ebec377..9b9be0d6c8 100644 --- a/code/modules/library/lib_items.dm +++ b/code/modules/library/lib_items.dm @@ -147,6 +147,7 @@ var/dat // Actual page content var/due_date = 0 // Game time in 1/10th seconds var/author // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned + var/libcategory = "Miscellaneous" // The library category this book sits in. "Fiction", "Non-Fiction", "Adult", "Reference", "Religion" var/unique = 0 // 0 - Normal book, 1 - Should not be treated as normal book, unable to be copied, unable to be modified var/title // The real name of the book. var/carved = 0 // Has the book been hollowed out for use as a secret storage item? @@ -260,6 +261,74 @@ M << browse("Penned by [author].
" + "[dat]", "window=book") user.setClickCooldown(DEFAULT_QUICK_COOLDOWN) //to prevent spam +/* +* Book Bundle (Multi-page book) +*/ + +/obj/item/weapon/book/bundle + var/page = 1 //current page + var/list/pages = list() //the contents of each page + +/obj/item/weapon/book/bundle/proc/show_content(mob/user as mob) + var/dat + var/obj/item/weapon/W = pages[page] + // first + if(page == 1) + dat+= "
Front
" + dat+= "
Next Page


" + // last + else if(page == pages.len) + dat+= "
Previous Page
" + dat+= "
Back


" + // middle pages + else + dat+= "
Previous Page
" + dat+= "
Next Page


" + if(istype(pages[page], /obj/item/weapon/paper)) + var/obj/item/weapon/paper/P = W + if(!(istype(usr, /mob/living/carbon/human) || isobserver(usr) || istype(usr, /mob/living/silicon))) + dat += "[P.name][stars(P.info)][P.stamps]" + else + dat += "[P.name][P.info][P.stamps]" + user << browse(dat, "window=[name]") + else if(istype(pages[page], /obj/item/weapon/photo)) + var/obj/item/weapon/photo/P = W + user << browse_rsc(P.img, "tmp_photo.png") + user << browse(dat + "[P.name]" \ + + "" \ + + "
Written on the back:
[P.scribble]" : ]"\ + + "", "window=[name]") + else if(!isnull(pages[page])) + if(!(istype(usr, /mob/living/carbon/human) || isobserver(usr) || istype(usr, /mob/living/silicon))) + dat += "Page [page][stars(pages[page])]" + else + dat += "Page [page][pages[page]]" + user << browse(dat, "window=[name]") + +/obj/item/weapon/book/bundle/attack_self(mob/user as mob) + src.show_content(user) + add_fingerprint(usr) + update_icon() + return + +/obj/item/weapon/book/bundle/Topic(href, href_list) + if(..()) + return 1 + if((src in usr.contents) || (istype(src.loc, /obj/item/weapon/folder) && (src.loc in usr.contents))) + usr.set_machine(src) + if(href_list["next_page"]) + if(page != pages.len) + page++ + playsound(src.loc, "pageturn", 50, 1) + if(href_list["prev_page"]) + if(page > 1) + page-- + playsound(src.loc, "pageturn", 50, 1) + src.attack_self(usr) + updateUsrDialog() + else + to_chat(usr, "You need to hold it in your hands!") /* * Barcode Scanner diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm index 716b85f2f1..bdd2a718d0 100644 --- a/code/modules/library/lib_machines.dm +++ b/code/modules/library/lib_machines.dm @@ -113,7 +113,7 @@ datum/borrowbook // Datum used to keep track of who has borrowed what when and f * Library Computer */ // TODO: Make this an actual /obj/machinery/computer that can be crafted from circuit boards and such -// It is August 22nd, 2012... This TODO has already been here for months.. I wonder how long it'll last before someone does something about it. +// It is August 22nd, 2012... This TODO has already been here for months.. I wonder how long it'll last before someone does something about it. // Nov 2019. Nope. /obj/machinery/librarycomp name = "Check-In/Out Computer" icon = 'icons/obj/library.dmi' @@ -133,6 +133,40 @@ datum/borrowbook // Datum used to keep track of who has borrowed what when and f var/bibledelay = 0 // LOL NO SPAM (1 minute delay) -- Doohl + var/static/list/all_books + + var/static/list/base_genre_books + +/obj/machinery/librarycomp/Initialize() + ..() + + if(!base_genre_books || !base_genre_books.len) + base_genre_books = list( + /obj/item/weapon/book/custom_library/fiction, + /obj/item/weapon/book/custom_library/nonfiction, + /obj/item/weapon/book/custom_library/reference, + /obj/item/weapon/book/custom_library/religious, + /obj/item/weapon/book/bundle/custom_library/fiction, + /obj/item/weapon/book/bundle/custom_library/nonfiction, + /obj/item/weapon/book/bundle/custom_library/reference, + /obj/item/weapon/book/bundle/custom_library/religious + ) + + if(!all_books || !all_books.len) + all_books = list() + + for(var/path in subtypesof(/obj/item/weapon/book/codex/lore)) + var/obj/item/weapon/book/C = new path(null) + all_books[C.name] = C + + for(var/path in subtypesof(/obj/item/weapon/book/custom_library) - base_genre_books) + var/obj/item/weapon/book/B = new path(null) + all_books[B.title] = B + + for(var/path in subtypesof(/obj/item/weapon/book/bundle/custom_library) - base_genre_books) + var/obj/item/weapon/book/M = new path(null) + all_books[M.title] = M + /obj/machinery/librarycomp/attack_hand(var/mob/user as mob) usr.set_machine(src) var/dat = "Book Inventory Management\n" // @@ -144,7 +178,8 @@ datum/borrowbook // Datum used to keep track of who has borrowed what when and f 3. Check out a Book
4. Connect to External Archive
5. Upload New Title to Archive
- 6. Print a Bible
"} + 6. Print a Bible
+ 8. Access NT Internal Archive
"} if(src.emagged) dat += "7. Access the Forbidden Lore Vault
" if(src.arcanecheckout) @@ -190,8 +225,11 @@ datum/borrowbook // Datum used to keep track of who has borrowed what when and f (Commit Entry)
(Return to main menu)
"} if(4) - dat += "

External Archive

" + dat += "

Deprecated Archive

" establish_old_db_connection() + + dat += "

Warning: System Administrator has slated this archive for removal. Personal uploads should be taken to the NT board of internal literature.

" + if(!dbcon_old.IsConnected()) dat += "ERROR: Unable to contact External Archive. Please contact your system administrator for assistance." else @@ -210,6 +248,10 @@ datum/borrowbook // Datum used to keep track of who has borrowed what when and f dat += "" dat += "
(Return to main menu)
" if(5) + dat += "

ERROR

" + dat+= "Library Database is in Secure Management Mode.
\ + Contact a System Administrator for more information.
" + /* dat += "

Upload a New Title

" if(!scanner) for(var/obj/machinery/libraryscanner/S in range(9)) @@ -227,12 +269,30 @@ datum/borrowbook // Datum used to keep track of who has borrowed what when and f dat += {"Author: [scanner.cache.author]
Category: [upload_category]
\[Upload\]
"} + */ dat += "(Return to main menu)
" if(7) dat += {"

Accessing Forbidden Lore Vault v 1.3

Are you absolutely sure you want to proceed? EldritchTomes Inc. takes no responsibilities for loss of sanity resulting from this action.

Yes.
No.
"} + if(8) + dat += "

NT Internal Archive

" + if(!all_books || !all_books.len) + dat += "ERROR Something has gone seriously wrong. Contact System Administrator for more information." + else + dat += {" + " + dat += "
TITLE\[Order\]
" + dat += "
(Return to main menu)
" //dat += "Close

" user << browse(dat, "window=library") @@ -293,6 +353,8 @@ datum/borrowbook // Datum used to keep track of who has borrowed what when and f if("7") screenstate = 7 + if("8") + screenstate = 8 if(href_list["arccheckout"]) if(src.emagged) src.arcanecheckout = 1 @@ -328,7 +390,8 @@ datum/borrowbook // Datum used to keep track of who has borrowed what when and f var/newcategory = input("Choose a category: ") in list("Fiction", "Non-Fiction", "Adult", "Reference", "Religion") if(newcategory) upload_category = newcategory - if(href_list["upload"]) + +/* if(href_list["upload"]) if(scanner) if(scanner.cache) var/choice = input("Are you certain you wish to upload this title to the Archive?") in list("Confirm", "Abort") @@ -356,6 +419,7 @@ datum/borrowbook // Datum used to keep track of who has borrowed what when and f else log_game("[usr.name]/[usr.key] has uploaded the book titled [scanner.cache.name], [length(scanner.cache.dat)] signs") alert("Upload Complete.") +*/ if(href_list["targetid"]) var/sqlid = sanitizeSQL(href_list["targetid"]) @@ -392,6 +456,10 @@ datum/borrowbook // Datum used to keep track of who has borrowed what when and f spawn() src.Topic(nhref, params2list(nhref), src) if(href_list["sort"] in list("author", "title", "category")) sortby = href_list["sort"] + if(href_list["hardprint"]) + var/newpath = href_list["hardprint"] + var/obj/item/weapon/book/NewBook = new newpath(get_turf(src)) + NewBook.name = "Book: [NewBook.name]" src.add_fingerprint(usr) src.updateUsrDialog() return diff --git a/code/modules/lore_codex/codex.dm b/code/modules/lore_codex/codex.dm index 7e73ba689b..140f78f915 100644 --- a/code/modules/lore_codex/codex.dm +++ b/code/modules/lore_codex/codex.dm @@ -23,13 +23,14 @@ has the words 'Don't Panic' in small, friendly letters on the cover." icon_state = "codex" root_type = /datum/lore/codex/category/main_vir_lore + libcategory = "Reference" /obj/item/weapon/book/codex/lore/robutt name = "A Buyer's Guide to Artificial Bodies" desc = "Recommended reading for the newly cyborgified, new positronics, and the upwardly-mobile FBP." icon_state = "codex_robutt" root_type = /datum/lore/codex/category/main_robutts - + libcategory = "Reference" /obj/item/weapon/book/codex/lore/news name = "Daedalus Pocket Newscaster" @@ -37,6 +38,7 @@ icon_state = "newscodex" w_class = ITEMSIZE_SMALL root_type = /datum/lore/codex/category/main_news + libcategory = "Reference" // Combines SOP/Regs/Law /obj/item/weapon/book/codex/corp_regs @@ -46,3 +48,4 @@ icon_state = "corp_regs" root_type = /datum/lore/codex/category/main_corp_regs throwforce = 5 // Throw the book at 'em. + libcategory = "Reference" diff --git a/icons/obj/custom_books.dmi b/icons/obj/custom_books.dmi new file mode 100644 index 0000000000000000000000000000000000000000..2be098e848eed507d95324ee945d6b10ca45bd0b GIT binary patch literal 15460 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 literal 0 HcmV?d00001 diff --git a/polaris.dme b/polaris.dme index 1e3f6afd2b..e2ea7c5fb4 100644 --- a/polaris.dme +++ b/polaris.dme @@ -1769,6 +1769,7 @@ #include "code\modules\library\lib_items.dm" #include "code\modules\library\lib_machines.dm" #include "code\modules\library\lib_readme.dm" +#include "code\modules\library\hardcode_library\_library.dm" #include "code\modules\lighting\lighting_area.dm" #include "code\modules\lighting\lighting_atom.dm" #include "code\modules\lighting\lighting_corner.dm"