[MIRROR] Fixes Wiki Book Manuals not working [MDB IGNORE] (#24870)

* Fixes Wiki Book Manuals not working

* Fixing diffs

---------

Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
This commit is contained in:
SkyratBot
2023-11-09 03:47:02 -05:00
committed by GitHub
co-authored by san7890 Giz
parent 3719aff308
commit bc1e8de059
5 changed files with 270 additions and 244 deletions
-225
View File
@@ -232,228 +232,3 @@
Good luck!
</body>
</html>"}
// Wiki books that are linked to the configured wiki link.
// A book that links to the wiki
/obj/item/book/manual/wiki
var/page_link = ""
window_size = "970x710"
/obj/item/book/manual/wiki/attack_self()
if(!book_data.content)
initialize_wikibook()
return ..()
/obj/item/book/manual/wiki/proc/initialize_wikibook()
var/wikiurl = CONFIG_GET(string/wikiurl)
if(wikiurl)
var/wikiinfo = {"
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
<style>
iframe {
display: none;
}
</style>
</head>
<body>
<script type="text/javascript">
function pageloaded(myframe) {
document.getElementById("loading").style.display = "none";
myframe.style.display = "inline";
}
</script>
<p id='loading'>You start skimming through the manual...</p>
<iframe width='100%' height='97%' onload="pageloaded(this)" src="[wikiurl]/[page_link]?printable=yes&remove_links=1" frameborder="0" id="main_frame"></iframe>
</body>
</html>
"}
book_data.set_content(wikiinfo, trusted = TRUE)
/obj/item/book/manual/wiki/chemistry
name = "Chemistry Textbook"
icon_state ="chemistrybook"
starting_author = "Nanotrasen"
starting_title = "Chemistry Textbook"
page_link = "Guide_to_chemistry"
/obj/item/book/manual/wiki/engineering_construction
name = "Station Repairs and Construction"
icon_state ="bookEngineering"
starting_author = "Engineering Encyclopedia"
starting_title = "Station Repairs and Construction"
page_link = "Guide_to_construction"
/obj/item/book/manual/wiki/engineering_guide
name = "Engineering Textbook"
icon_state ="bookEngineering2"
starting_author = "Engineering Encyclopedia"
starting_title = "Engineering Textbook"
page_link = "Guide_to_engineering"
/obj/item/book/manual/wiki/security_space_law
name = "Corporate Regulations" //SKYRAT EDIT CHANGE - Original: "Space Law"
desc = "A set of Nanotrasen regulations for keeping law, order, and procedure followed within their space stations." //SKYRAT EDIT CHANGE - Original: "A set of Nanotrasen guidelines for keeping law and order on their space stations."
icon_state = "bookSpaceLaw"
starting_author = "Nanotrasen"
starting_title = "Corporate Regulations" //SKYRAT EDIT CHANGE - Original: "Space Law"
page_link = "Corporate_Regulations" //SKYRAT EDIT CHANGE - Original: "Space_Law"
/obj/item/book/manual/wiki/security_space_law/suicide_act(mob/living/user)
user.visible_message(span_suicide("[user] pretends to read \the [src] intently... then promptly dies of laughter!"))
return OXYLOSS
/obj/item/book/manual/wiki/infections
name = "Infections - Making your own pandemic!"
icon_state = "bookInfections"
starting_author = "Infections Encyclopedia"
starting_title = "Infections - Making your own pandemic!"
page_link = "Infections"
/obj/item/book/manual/wiki/telescience
name = "Teleportation Science - Bluespace for dummies!"
icon_state = "book7"
starting_author = "University of Bluespace"
starting_title = "Teleportation Science - Bluespace for dummies!"
page_link = "Guide_to_telescience"
/obj/item/book/manual/wiki/engineering_hacking
name = "Hacking"
icon_state ="bookHacking"
starting_author = "Engineering Encyclopedia"
starting_title = "Hacking"
page_link = "Hacking"
/obj/item/book/manual/wiki/detective
name = "The Film Noir: Proper Procedures for Investigations"
icon_state ="bookDetective"
starting_author = "Nanotrasen"
starting_title = "The Film Noir: Proper Procedures for Investigations"
page_link = "Detective"
/obj/item/book/manual/wiki/barman_recipes
name = "Barman Recipes: Mixing Drinks and Changing Lives"
icon_state = "barbook"
starting_author = "Sir John Rose"
starting_title = "Barman Recipes: Mixing Drinks and Changing Lives"
page_link = "Guide_to_drinks"
/obj/item/book/manual/wiki/robotics_cyborgs
name = "Robotics for Dummies"
icon_state = "borgbook"
starting_author = "XISC"
starting_title = "Robotics for Dummies"
page_link = "Guide_to_robotics"
/obj/item/book/manual/wiki/research_and_development
name = "Research and Development 101"
icon_state = "rdbook"
starting_author = "Dr. L. Ight"
starting_title = "Research and Development 101"
page_link = "Guide_to_Research_and_Development"
/obj/item/book/manual/wiki/experimentor
name = "Mentoring your Experiments"
icon_state = "rdbook"
starting_author = "Dr. H.P. Kritz"
starting_title = "Mentoring your Experiments"
page_link = "Experimentor"
/obj/item/book/manual/wiki/cooking_to_serve_man
name = "To Serve Man"
desc = "It's a cookbook!"
icon_state ="cooked_book"
starting_author = "the Kanamitan Empire"
starting_title = "To Serve Man"
page_link = "Guide_to_food"
/obj/item/book/manual/wiki/tcomms
name = "Subspace Telecommunications And You"
icon_state = "book3"
starting_author = "Engineering Encyclopedia"
starting_title = "Subspace Telecommunications And You"
page_link = "Guide_to_Telecommunications"
/obj/item/book/manual/wiki/atmospherics
name = "Lexica Atmosia"
icon_state = "book5"
starting_author = "the City-state of Atmosia"
starting_title = "Lexica Atmosia"
page_link = "Guide_to_Atmospherics"
/obj/item/book/manual/wiki/medicine
name = "Medical Space Compendium, Volume 638"
icon_state = "book8"
starting_author = "Medical Journal"
starting_title = "Medical Space Compendium, Volume 638"
page_link = "Guide_to_medicine"
/obj/item/book/manual/wiki/surgery
name = "Brain Surgery for Dummies"
icon_state = "book4"
starting_author = "Dr. F. Fran"
starting_title = "Brain Surgery for Dummies"
page_link = "Surgery"
/obj/item/book/manual/wiki/grenades
name = "DIY Chemical Grenades"
icon_state = "book2"
starting_author = "W. Powell"
starting_title = "DIY Chemical Grenades"
page_link = "Grenade"
/obj/item/book/manual/wiki/ordnance
name = "Ordnance for Dummies or: How I Learned to Stop Worrying and Love the Maxcap"
icon_state = "book6"
starting_author = "Cuban Pete"
starting_title = "Ordnance for Dummies or: How I Learned to Stop Worrying and Love the Maxcap"
page_link = "Guide_to_toxins"
/obj/item/book/manual/wiki/ordnance/suicide_act(mob/living/user)
var/mob/living/carbon/human/H = user
user.visible_message(span_suicide("[user] starts dancing to the Rhumba Beat! It looks like [user.p_theyre()] trying to commit suicide!"))
playsound(loc, 'sound/effects/spray.ogg', 10, TRUE, -3)
if (!QDELETED(H))
H.emote("spin")
sleep(2 SECONDS)
for(var/obj/item/W in H)
H.dropItemToGround(W)
if(prob(50))
step(W, pick(GLOB.alldirs))
ADD_TRAIT(H, TRAIT_DISFIGURED, TRAIT_GENERIC)
for(var/obj/item/bodypart/part as anything in H.bodyparts)
part.adjustBleedStacks(5)
H.gib_animation()
sleep(0.3 SECONDS)
H.adjustBruteLoss(1000) //to make the body super-bloody
// if we use gib() then the body gets deleted
H.spawn_gibs()
H.spill_organs(DROP_ALL_REMAINS)
H.spread_bodyparts(DROP_BRAIN)
return BRUTELOSS
/obj/item/book/manual/wiki/plumbing
name = "Chemical Factories Without Narcotics"
icon_state ="plumbingbook"
starting_author = "Nanotrasen"
starting_title = "Chemical Factories Without Narcotics"
page_link = "Guide_to_plumbing"
/obj/item/book/manual/wiki/cytology
name = "Unethically Grown Organics"
icon_state ="cytologybook"
starting_author = "Kryson"
starting_title = "Unethically Grown Organics"
page_link = "Guide_to_cytology"
/obj/item/book/manual/wiki/tgc
name = "Tactical Game Cards - Player's Handbook"
icon_state = "tgcbook"
starting_author = "Nanotrasen Edu-tainment Division"
starting_title = "Tactical Game Cards - Player's Handbook"
page_link = "Tactical_Game_Cards"
+228
View File
@@ -0,0 +1,228 @@
// Wiki books that are linked to the configured wiki link.
/// The size of the window that the wiki books open in.
#define BOOK_WINDOW_BROWSE_SIZE "970x710"
/// This macro will resolve to code that will open up the associated wiki page in the window.
#define WIKI_PAGE_IFRAME(wikiurl, link_identifier) {"
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
<style>
iframe {
display: none;
}
</style>
</head>
<body>
<script type="text/javascript">
function pageloaded(myframe) {
document.getElementById("loading").style.display = "none";
myframe.style.display = "inline";
}
</script>
<p id='loading'>You start skimming through the manual...</p>
<iframe width='100%' height='97%' onload="pageloaded(this)" src="[##wikiurl]/[##link_identifier]?printable=yes&remove_links=1" frameborder="0" id="main_frame"></iframe>
</body>
</html>
"}
// A book that links to the wiki
/obj/item/book/manual/wiki
starting_content = "Nanotrasen presently does not have any resources on this topic. If you would like to know more, contact your local Central Command representative." // safety
/// The ending URL of the page that we link to.
var/page_link = ""
/obj/item/book/manual/wiki/display_content(mob/living/user)
var/wiki_url = CONFIG_GET(string/wikiurl)
if(!wiki_url)
user.balloon_alert(user, "this book is empty!")
return
credit_book_to_reader(user)
DIRECT_OUTPUT(user, browse(WIKI_PAGE_IFRAME(wiki_url, page_link), "window=manual;size=[BOOK_WINDOW_BROWSE_SIZE]")) // if you change this GUARANTEE that it works.
/obj/item/book/manual/wiki/chemistry
name = "Chemistry Textbook"
icon_state ="chemistrybook"
starting_author = "Nanotrasen"
starting_title = "Chemistry Textbook"
page_link = "Guide_to_chemistry"
/obj/item/book/manual/wiki/engineering_construction
name = "Station Repairs and Construction"
icon_state ="bookEngineering"
starting_author = "Engineering Encyclopedia"
starting_title = "Station Repairs and Construction"
page_link = "Guide_to_construction"
/obj/item/book/manual/wiki/engineering_guide
name = "Engineering Textbook"
icon_state ="bookEngineering2"
starting_author = "Engineering Encyclopedia"
starting_title = "Engineering Textbook"
page_link = "Guide_to_engineering"
/obj/item/book/manual/wiki/security_space_law
name = "Space Law"
desc = "A set of Nanotrasen guidelines for keeping law and order on their space stations."
icon_state = "bookSpaceLaw"
starting_author = "Nanotrasen"
starting_title = "Space Law"
page_link = "Space_Law"
/obj/item/book/manual/wiki/security_space_law/suicide_act(mob/living/user)
user.visible_message(span_suicide("[user] pretends to read \the [src] intently... then promptly dies of laughter!"))
return OXYLOSS
/obj/item/book/manual/wiki/infections
name = "Infections - Making your own pandemic!"
icon_state = "bookInfections"
starting_author = "Infections Encyclopedia"
starting_title = "Infections - Making your own pandemic!"
page_link = "Infections"
/obj/item/book/manual/wiki/telescience
name = "Teleportation Science - Bluespace for dummies!"
icon_state = "book7"
starting_author = "University of Bluespace"
starting_title = "Teleportation Science - Bluespace for dummies!"
page_link = "Guide_to_telescience"
/obj/item/book/manual/wiki/engineering_hacking
name = "Hacking"
icon_state ="bookHacking"
starting_author = "Engineering Encyclopedia"
starting_title = "Hacking"
page_link = "Hacking"
/obj/item/book/manual/wiki/detective
name = "The Film Noir: Proper Procedures for Investigations"
icon_state ="bookDetective"
starting_author = "Nanotrasen"
starting_title = "The Film Noir: Proper Procedures for Investigations"
page_link = "Detective"
/obj/item/book/manual/wiki/barman_recipes
name = "Barman Recipes: Mixing Drinks and Changing Lives"
icon_state = "barbook"
starting_author = "Sir John Rose"
starting_title = "Barman Recipes: Mixing Drinks and Changing Lives"
page_link = "Guide_to_drinks"
/obj/item/book/manual/wiki/robotics_cyborgs
name = "Robotics for Dummies"
icon_state = "borgbook"
starting_author = "XISC"
starting_title = "Robotics for Dummies"
page_link = "Guide_to_robotics"
/obj/item/book/manual/wiki/research_and_development
name = "Research and Development 101"
icon_state = "rdbook"
starting_author = "Dr. L. Ight"
starting_title = "Research and Development 101"
page_link = "Guide_to_Research_and_Development"
/obj/item/book/manual/wiki/experimentor
name = "Mentoring your Experiments"
icon_state = "rdbook"
starting_author = "Dr. H.P. Kritz"
starting_title = "Mentoring your Experiments"
page_link = "Experimentor"
/obj/item/book/manual/wiki/cooking_to_serve_man
name = "To Serve Man"
desc = "It's a cookbook!"
icon_state ="cooked_book"
starting_author = "the Kanamitan Empire"
starting_title = "To Serve Man"
page_link = "Guide_to_food"
/obj/item/book/manual/wiki/tcomms
name = "Subspace Telecommunications And You"
icon_state = "book3"
starting_author = "Engineering Encyclopedia"
starting_title = "Subspace Telecommunications And You"
page_link = "Guide_to_Telecommunications"
/obj/item/book/manual/wiki/atmospherics
name = "Lexica Atmosia"
icon_state = "book5"
starting_author = "the City-state of Atmosia"
starting_title = "Lexica Atmosia"
page_link = "Guide_to_Atmospherics"
/obj/item/book/manual/wiki/medicine
name = "Medical Space Compendium, Volume 638"
icon_state = "book8"
starting_author = "Medical Journal"
starting_title = "Medical Space Compendium, Volume 638"
page_link = "Guide_to_medicine"
/obj/item/book/manual/wiki/surgery
name = "Brain Surgery for Dummies"
icon_state = "book4"
starting_author = "Dr. F. Fran"
starting_title = "Brain Surgery for Dummies"
page_link = "Surgery"
/obj/item/book/manual/wiki/grenades
name = "DIY Chemical Grenades"
icon_state = "book2"
starting_author = "W. Powell"
starting_title = "DIY Chemical Grenades"
page_link = "Grenade"
/obj/item/book/manual/wiki/ordnance
name = "Ordnance for Dummies or: How I Learned to Stop Worrying and Love the Maxcap"
icon_state = "book6"
starting_author = "Cuban Pete"
starting_title = "Ordnance for Dummies or: How I Learned to Stop Worrying and Love the Maxcap"
page_link = "Guide_to_toxins"
/obj/item/book/manual/wiki/ordnance/suicide_act(mob/living/user)
var/mob/living/carbon/human/H = user
user.visible_message(span_suicide("[user] starts dancing to the Rhumba Beat! It looks like [user.p_theyre()] trying to commit suicide!"))
playsound(loc, 'sound/effects/spray.ogg', 10, TRUE, -3)
if (!QDELETED(H))
H.emote("spin")
sleep(2 SECONDS)
for(var/obj/item/W in H)
H.dropItemToGround(W)
if(prob(50))
step(W, pick(GLOB.alldirs))
ADD_TRAIT(H, TRAIT_DISFIGURED, TRAIT_GENERIC)
for(var/obj/item/bodypart/part as anything in H.bodyparts)
part.adjustBleedStacks(5)
H.gib_animation()
sleep(0.3 SECONDS)
H.adjustBruteLoss(1000) //to make the body super-bloody
// if we use gib() then the body gets deleted
H.spawn_gibs()
H.spill_organs(DROP_ALL_REMAINS)
H.spread_bodyparts(DROP_BRAIN)
return BRUTELOSS
/obj/item/book/manual/wiki/plumbing
name = "Chemical Factories Without Narcotics"
icon_state ="plumbingbook"
starting_author = "Nanotrasen"
starting_title = "Chemical Factories Without Narcotics"
page_link = "Guide_to_plumbing"
/obj/item/book/manual/wiki/cytology
name = "Unethically Grown Organics"
icon_state ="cytologybook"
starting_author = "Kryson"
starting_title = "Unethically Grown Organics"
page_link = "Guide_to_cytology"
/obj/item/book/manual/wiki/tgc
name = "Tactical Game Cards - Player's Handbook"
icon_state = "tgcbook"
starting_author = "Nanotrasen Edu-tainment Division"
starting_title = "Tactical Game Cards - Player's Handbook"
page_link = "Tactical_Game_Cards"
#undef BOOK_WINDOW_BROWSE_SIZE
#undef WIKI_PAGE_IFRAME
+35 -19
View File
@@ -21,8 +21,6 @@
/// whether or not we have been carved out
var/carved = FALSE
/// Specific window size for the book, i.e: "1920x1080", Size x Width
var/window_size = null
/// The initial title, for use in var editing and such
var/starting_title
/// The initial author, for use in var editing and such
@@ -51,35 +49,53 @@
return data
/obj/item/book/ui_interact(mob/living/user, datum/tgui/ui)
if(carved)
balloon_alert(user, "book is carved out!")
return
if(!length(book_data.get_content()))
balloon_alert(user, "book is blank!")
return
if(istype(user) && !isnull(user.mind))
LAZYINITLIST(user.mind.book_titles_read)
var/has_not_read_book = !(starting_title in user.mind.book_titles_read)
if(has_not_read_book)
user.add_mood_event("book_nerd", /datum/mood_event/book_nerd)
user.mind.book_titles_read[starting_title] = TRUE
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "MarkdownViewer", name)
ui.open()
/obj/item/book/attack_self(mob/user)
/// Proc that handles sending the book information to the user, as well as some housekeeping stuff.
/obj/item/book/proc/display_content(mob/living/user)
credit_book_to_reader(user)
ui_interact(user)
/// Proc that checks if the user is capable of reading the book, for UI interactions and otherwise. Returns TRUE if they can, FALSE if they can't.
/obj/item/book/proc/can_read_book(mob/living/user)
if(user.is_blind())
to_chat(user, span_warning("You are blind and can't read anything!"))
return
return FALSE
if(!user.can_read(src))
return FALSE
if(carved)
balloon_alert(user, "book is carved out!")
return FALSE
if(!length(book_data.get_content()))
balloon_alert(user, "book is blank!")
return FALSE
return TRUE
/// Proc that adds the book to a list on the user's mind so we know what works of art they've been catching up on.
/obj/item/book/proc/credit_book_to_reader(mob/living/user)
if(!isliving(user) || isnull(user.mind))
return
LAZYINITLIST(user.mind.book_titles_read)
if(starting_title in user.mind.book_titles_read)
return
user.add_mood_event("book_nerd", /datum/mood_event/book_nerd)
user.mind.book_titles_read[starting_title] = TRUE
/obj/item/book/attack_self(mob/user)
if(!can_read_book(user))
return
user.visible_message(span_notice("[user] opens a book titled \"[book_data.title]\" and begins reading intently."))
ui_interact(user)
display_content(user)
/obj/item/book/attackby(obj/item/attacking_item, mob/living/user, params)
if(burn_paper_product_attackby_check(attacking_item, user))
@@ -0,0 +1,5 @@
/obj/item/book/manual/wiki/security_space_law
name = "Corporate Regulations"
desc = "A set of Nanotrasen regulations for keeping law, order, and procedure followed within their space stations."
starting_title = "Corporate Regulations"
page_link = "Corporate_Regulations"
+2
View File
@@ -2317,6 +2317,7 @@
#include "code\game\objects\items\virgin_mary.dm"
#include "code\game\objects\items\wall_mounted.dm"
#include "code\game\objects\items\weaponry.dm"
#include "code\game\objects\items\wiki_manuals.dm"
#include "code\game\objects\items\AI_modules\_AI_modules.dm"
#include "code\game\objects\items\AI_modules\freeform.dm"
#include "code\game\objects\items\AI_modules\full_lawsets.dm"
@@ -6077,6 +6078,7 @@
#include "modular_skyrat\master_files\code\game\objects\items\RCD.dm"
#include "modular_skyrat\master_files\code\game\objects\items\religion.dm"
#include "modular_skyrat\master_files\code\game\objects\items\scratchingstone.dm"
#include "modular_skyrat\master_files\code\game\objects\items\wiki_manuals.dm"
#include "modular_skyrat\master_files\code\game\objects\items\devices\anomaly_neutralizer.dm"
#include "modular_skyrat\master_files\code\game\objects\items\stacks\sheets\sheet_types.dm"
#include "modular_skyrat\master_files\code\game\objects\items\storage\backpack.dm"