diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm index 88fb1afd538..4ff40a9f6cc 100644 --- a/code/datums/uplink_item.dm +++ b/code/datums/uplink_item.dm @@ -884,3 +884,11 @@ var/list/uplink_items = list() cost = 14 discounted_cost = 10 jobs_with_discount = list("Chaplain") + +/datum/uplink_item/jobspecific/occultbook + name = "Occult Book" + desc = "A reproduction of a forbidden and occult book. Causes brain damage, eye damage and hallucinations to anyone unfortunate enough to attempt to read it. Use a pen to change its title." + item = /obj/item/weapon/book/occult + cost = 4 + discounted_cost = 2 + jobs_with_discount = list("Librarian", "Chaplain") diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm index 3abc57357b6..b77a2d0901c 100644 --- a/code/modules/library/lib_items.dm +++ b/code/modules/library/lib_items.dm @@ -204,6 +204,7 @@ var/forbidden = 0 // Prevent ordering of this book. (0=no, 1=yes, 2=emag only) var/obj/item/store // What's in the book? var/runestun = 0 //Does it have a stun talisman in it? + var/occult = 0 //Does this book contain forbidden and occult writings? /obj/item/weapon/book/New() ..() @@ -229,6 +230,8 @@ if(!isobserver(user)) user.visible_message("[user] opens a book titled \"[src.title]\" and begins reading intently.") onclose(user, "book") + if(occult) + to_chat(user, "As you read the book, your mind is assaulted by foul, arcane energies!") else to_chat(user, "This book is completely blank!") @@ -246,10 +249,19 @@ M.Knockdown(25) M.Stun(25) runestun = 0 + if(occult) + var/mob/living/carbon/human/M = user + M.flash_eyes(visual = 1) + M.Knockdown(15) + M.Stun(15) + var/datum/organ/internal/eyes/eyes = M.internal_organs_by_name["eyes"] + eyes.damage += rand(30,60) + M.adjustBrainLoss(rand(50,100)) + M.hallucination = max(0, M.hallucination + rand(60,90)) read_a_motherfucking_book(user) /obj/item/weapon/book/examine(mob/user) - if(isobserver(user) && in_range(src,user)) + if(isobserver(user) && in_range(src,user) && occult == 0) read_a_motherfucking_book(user) else ..() @@ -260,6 +272,7 @@ if(do_after(user, src, 30 / W.sharpness)) to_chat(user, "You carve out the pages from [title]! You didn't want to read it anyway.") carved = 1 + occult = 0 //A book cannot be an occult book if it has no pages return if(carved) if(!store) @@ -338,7 +351,10 @@ var/obj/item/weapon/paper/talisman/talisman = W if(runestun) to_chat(user, "There is already a talisman between the pages.") - return() + return + if(occult) + to_chat(user, "You feel as if it would be a bad idea to add a talisman to this particular book.") + return if(talisman.imbue == "runestun") to_chat(user, "You slide the talisman between the pages.") qdel(talisman) @@ -349,6 +365,25 @@ else ..() +/* + * Traitor Ooccult Books + */ + + +/obj/item/weapon/book/occult + name = "The King in Yellow" + title = "The King in Yellow" + occult = 1 + var/possible_names = list("The King in Yellow", "The Locksmith's Dream", "The Tantra of Worms", "Infinite Jest", "The Legacy of Totalitarianism in a Tundra", "The Rose of Hypatia", + "Gravity's Rainbow", "Aristotle's Poetics", "The Geminiad", "My Diary", "The War of the Roads", "The Courier's Tragedy", "The Burning of the Unburnt God", "Love's Labour's Won", + "The Necronomicon", "The Funniest Joke in the World", "Woody Got Wood", "Peggy's Revenge", "House of Leaves", "A True and Accurate History of the Shadowless Kings", "The Book of Nod", + "Atlas Shrugged", "The Serenity of the Black Wood", "The World Does Not Weep") + +/obj/item/weapon/book/occult/New() + ..() + name = pick(possible_names) + title = name + icon_state = "book[rand(1, 9)]" /* * Barcode Scanner