diff --git a/code/game/magic/library.dm b/code/game/magic/library.dm index 1312136a741..ad7ae53fdc5 100644 --- a/code/game/magic/library.dm +++ b/code/game/magic/library.dm @@ -184,70 +184,75 @@ 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. - attack_self(var/mob/user as mob) - if(src.dat) - user << browse("Penned by [author].
" + "[dat]", "window=book") - user.visible_message("[user] opens a book titled \"[src.title]\" and begins reading intently.") - onclose(user, "book") - else - user << "This book is completely blank!" +/obj/item/weapon/book/attack_self(var/mob/user as mob) + if(src.dat) + user << browse("Penned by [author].
" + "[dat]", "window=book") + user.visible_message("[user] opens a book titled \"[src.title]\" and begins reading intently.") + onclose(user, "book") + else + user << "This book is completely blank!" - attackby(obj/item/weapon/W as obj, mob/user as mob) - if(istype(W, /obj/item/weapon/pen)) - if(unique) - user << "These pages don't seem to take the ink well. Looks like you can't modify it." - return - var/choice = input("What would you like to change?") in list("Title", "Contents", "Author", "Cancel") - switch(choice) - if("Title") - var/title = copytext(sanitize(input("Write a new title:") as text|null),1,MAX_MESSAGE_LEN) - if(!title) - return - else if("Contents") - var/content = strip_html(input("Write your book's contents (HTML NOT allowed):"),8192) as message|null - if(!content) - return - else - src.dat += content - else if("Author") - var/nauthor = copytext(sanitize(input("Write the author's name:") as text|null),1,MAX_NAME_LEN) - if(!nauthor) - return - else - src.author = sanitize(nauthor) - else +/obj/item/weapon/book/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(istype(W, /obj/item/weapon/pen)) + if(unique) + user << "These pages don't seem to take the ink well. Looks like you can't modify it." + return + var/choice = input("What would you like to change?") in list("Title", "Contents", "Author", "Cancel") + switch(choice) + if("Title") + var/newtitle = copytext(sanitize(input("Write a new title:") as text|null),1,MAX_MESSAGE_LEN) + if(!newtitle) + usr << "The title is invalid." return - else if(istype(W, /obj/item/weapon/barcodescanner)) - var/obj/item/weapon/barcodescanner/scanner = W - if(!scanner.computer) - user << "[W]'s screen flashes: 'No associated computer found!'" + else + src.author = sanitize(newtitle) + if("Contents") + var/content = strip_html(input("Write your book's contents (HTML NOT allowed):"),8192) as message|null + if(!content) + usr << "The content is invalid." + return + else + src.dat += content + if("Author") + var/newauthor = copytext(sanitize(input("Write the author's name:") as text|null),1,MAX_NAME_LEN) + if(!newauthor) + usr << "The name is invalid." + return + else + src.author = newauthor else - switch(scanner.mode) - if(0) - scanner.book = src - user << "[W]'s screen flashes: 'Book stored in buffer.'" - if(1) - scanner.book = src - scanner.computer.buffer_book = src.name - user << "[W]'s screen flashes: 'Book stored in buffer. Book title stored in associated computer buffer.'" - if(2) - scanner.book = src - for(var/datum/borrowbook/b in scanner.computer.checkouts) - if(b.bookname == src.name) - scanner.computer.checkouts.Remove(b) - user << "[W]'s screen flashes: 'Book stored in buffer. Book has been checked in.'" - return - user << "[W]'s screen flashes: 'Book stored in buffer. No active check-out record found for current title.'" - if(3) - scanner.book = src - for(var/obj/item/weapon/book in scanner.computer.inventory) - if(book == src) - user << "[W]'s screen flashes: 'Book stored in buffer. Title already present in inventory, aborting to avoid duplicate entry.'" - return - scanner.computer.inventory.Add(src) - user << "[W]'s screen flashes: 'Book stored in buffer. Title added to general inventory.'" + return + else if(istype(W, /obj/item/weapon/barcodescanner)) + var/obj/item/weapon/barcodescanner/scanner = W + if(!scanner.computer) + user << "[W]'s screen flashes: 'No associated computer found!'" else - ..() + switch(scanner.mode) + if(0) + scanner.book = src + user << "[W]'s screen flashes: 'Book stored in buffer.'" + if(1) + scanner.book = src + scanner.computer.buffer_book = src.name + user << "[W]'s screen flashes: 'Book stored in buffer. Book title stored in associated computer buffer.'" + if(2) + scanner.book = src + for(var/datum/borrowbook/b in scanner.computer.checkouts) + if(b.bookname == src.name) + scanner.computer.checkouts.Remove(b) + user << "[W]'s screen flashes: 'Book stored in buffer. Book has been checked in.'" + return + user << "[W]'s screen flashes: 'Book stored in buffer. No active check-out record found for current title.'" + if(3) + scanner.book = src + for(var/obj/item/weapon/book in scanner.computer.inventory) + if(book == src) + user << "[W]'s screen flashes: 'Book stored in buffer. Title already present in inventory, aborting to avoid duplicate entry.'" + return + scanner.computer.inventory.Add(src) + user << "[W]'s screen flashes: 'Book stored in buffer. Title added to general inventory.'" + else + ..() @@ -654,10 +659,6 @@ datum/borrowbook // Datum used to keep track of who has borrowed what when and f alert("Upload Complete.") dbcon.Disconnect() if(href_list["targetid"]) - - - - var/sqlid = sanitizeSQL(href_list["targetid"]) var/DBConnection/dbcon = new() dbcon.Connect("dbi:mysql:[sqldb]:[sqladdress]:[sqlport]","[sqllogin]","[sqlpass]") @@ -670,7 +671,7 @@ datum/borrowbook // Datum used to keep track of who has borrowed what when and f bibledelay = 1 spawn(60) bibledelay = 0 - var/DBQuery/query = dbcon.NewQuery("SELECT * FROM library WHERE id=\"[sqlid]\"") + var/DBQuery/query = dbcon.NewQuery("SELECT * FROM library WHERE id=[sqlid]") query.Execute() while(query.NextRow()) @@ -689,25 +690,13 @@ datum/borrowbook // Datum used to keep track of who has borrowed what when and f if(href_list["orderbyid"]) var/orderid = input("Enter your order:") as num|null if(orderid) - orderid = sanitizeSQL(orderid) - var/nhref = "src=\ref[src];targetid=[orderid]" - spawn() src.Topic(nhref, params2list(nhref), src) + if(isnum(orderid)) + var/nhref = "src=\ref[src];targetid=[orderid]" + spawn() src.Topic(nhref, params2list(nhref), src) src.add_fingerprint(usr) src.updateUsrDialog() return - - - - - - - - - - - - /obj/machinery/libraryscanner name = "scanner" icon = 'library.dmi' @@ -772,18 +761,18 @@ datum/borrowbook // Datum used to keep track of who has borrowed what when and f anchored = 1 density = 1 - attackby(var/obj/O as obj, var/mob/user as mob) - if(istype(O, /obj/item/weapon/paper)) - user.drop_item() - O.loc = src - user.visible_message("[user] loads some paper into [src].", "You load some paper into [src].") - src.visible_message("[src] begins to hum as it warms up its printing drums.") - sleep(rand(200,400)) - src.visible_message("[src] whirs as it prints and binds a new book.") - var/obj/item/weapon/book/b = new(src.loc) - b.dat = O:info - b.name = "Print Job #" + "[rand(100, 999)]" - b.icon_state = "book[rand(1,7)]" - del(O) - else - ..() +/obj/machinery/bookbinder/attackby(var/obj/O as obj, var/mob/user as mob) + if(istype(O, /obj/item/weapon/paper)) + user.drop_item() + O.loc = src + user.visible_message("[user] loads some paper into [src].", "You load some paper into [src].") + src.visible_message("[src] begins to hum as it warms up its printing drums.") + sleep(rand(200,400)) + src.visible_message("[src] whirs as it prints and binds a new book.") + var/obj/item/weapon/book/b = new(src.loc) + b.dat = O:info + b.name = "Print Job #" + "[rand(100, 999)]" + b.icon_state = "book[rand(1,7)]" + del(O) + else + ..() diff --git a/code/defines/global.dm b/code/global.dm similarity index 88% rename from code/defines/global.dm rename to code/global.dm index 73daeb73acc..d082619af1e 100644 --- a/code/defines/global.dm +++ b/code/global.dm @@ -156,18 +156,18 @@ var/list/AAlarmIndexToFlag var/list/AAlarmIndexToWireColor var/list/AAlarmWireColorToIndex -var/const/SPEED_OF_LIGHT = 3e8 //not exact but hey! -var/const/SPEED_OF_LIGHT_SQ = 9e+16 -var/const/FIRE_DAMAGE_MODIFIER = 0.0215 //Higher values result in more external fire damage to the skin (default 0.0215) -var/const/AIR_DAMAGE_MODIFIER = 2.025 //More means less damage from hot air scalding lungs, less = more damage. (default 2.025) -var/const/INFINITY = 1e31 //closer then enough +#define SPEED_OF_LIGHT 3e8 //not exact but hey! +#define SPEED_OF_LIGHT_SQ 9e+16 +#define FIRE_DAMAGE_MODIFIER 0.0215 //Higher values result in more external fire damage to the skin (default 0.0215) +#define AIR_DAMAGE_MODIFIER 2.025 //More means less damage from hot air scalding lungs, less = more damage. (default 2.025) +#define INFINITY 1e31 //closer then enough //Don't set this very much higher then 1024 unless you like inviting people in to dos your server with message spam -var/const/MAX_MESSAGE_LEN = 1024 -var/const/MAX_NAME_LEN = 26 +#define MAX_MESSAGE_LEN 1024 +#define MAX_NAME_LEN 26 -var/const/shuttle_time_in_station = 1800 // 3 minutes in the station -var/const/shuttle_time_to_arrive = 6000 // 10 minutes to arrive +#define shuttle_time_in_station 1800 // 3 minutes in the station +#define shuttle_time_to_arrive 6000 // 10 minutes to arrive diff --git a/html/changelog.html b/html/changelog.html index 362d60861a7..0e186dd67a7 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -47,6 +47,13 @@ should be listed in the changelog upon commit tho. Thanks. --> +
+

Wed 27th June 2012

+

Errorage updated:

+ +
diff --git a/tgstation.dme b/tgstation.dme index 7c19446c289..11bbc797517 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -5,6 +5,203 @@ // END_INTERNALS // BEGIN_FILE_DIR #define FILE_DIR . +#define FILE_DIR "code" +#define FILE_DIR "code/ATMOSPHERICS" +#define FILE_DIR "code/ATMOSPHERICS/components" +#define FILE_DIR "code/ATMOSPHERICS/components/binary_devices" +#define FILE_DIR "code/ATMOSPHERICS/components/trinary_devices" +#define FILE_DIR "code/ATMOSPHERICS/components/unary" +#define FILE_DIR "code/datums" +#define FILE_DIR "code/datums/diseases" +#define FILE_DIR "code/datums/helper_datums" +#define FILE_DIR "code/datums/spells" +#define FILE_DIR "code/defines" +#define FILE_DIR "code/defines/area" +#define FILE_DIR "code/defines/mob" +#define FILE_DIR "code/defines/mob/dead" +#define FILE_DIR "code/defines/mob/living" +#define FILE_DIR "code/defines/mob/living/carbon" +#define FILE_DIR "code/defines/mob/living/silicon" +#define FILE_DIR "code/defines/obj" +#define FILE_DIR "code/defines/procs" +#define FILE_DIR "code/defines/tanning" +#define FILE_DIR "code/FEA" +#define FILE_DIR "code/game" +#define FILE_DIR "code/game/area" +#define FILE_DIR "code/game/asteroid" +#define FILE_DIR "code/game/gamemodes" +#define FILE_DIR "code/game/gamemodes/blob" +#define FILE_DIR "code/game/gamemodes/blob/blobs" +#define FILE_DIR "code/game/gamemodes/changeling" +#define FILE_DIR "code/game/gamemodes/cult" +#define FILE_DIR "code/game/gamemodes/events" +#define FILE_DIR "code/game/gamemodes/events/holidays" +#define FILE_DIR "code/game/gamemodes/extended" +#define FILE_DIR "code/game/gamemodes/malfunction" +#define FILE_DIR "code/game/gamemodes/meteor" +#define FILE_DIR "code/game/gamemodes/nuclear" +#define FILE_DIR "code/game/gamemodes/revolution" +#define FILE_DIR "code/game/gamemodes/sandbox" +#define FILE_DIR "code/game/gamemodes/traitor" +#define FILE_DIR "code/game/gamemodes/wizard" +#define FILE_DIR "code/game/jobs" +#define FILE_DIR "code/game/jobs/job" +#define FILE_DIR "code/game/machinery" +#define FILE_DIR "code/game/machinery/atmoalter" +#define FILE_DIR "code/game/machinery/bots" +#define FILE_DIR "code/game/machinery/computer" +#define FILE_DIR "code/game/machinery/doors" +#define FILE_DIR "code/game/machinery/embedded_controller" +#define FILE_DIR "code/game/machinery/kitchen" +#define FILE_DIR "code/game/machinery/pipe" +#define FILE_DIR "code/game/machinery/telecomms" +#define FILE_DIR "code/game/magic" +#define FILE_DIR "code/game/magic/cultist" +#define FILE_DIR "code/game/mecha" +#define FILE_DIR "code/game/mecha/combat" +#define FILE_DIR "code/game/mecha/equipment" +#define FILE_DIR "code/game/mecha/equipment/tools" +#define FILE_DIR "code/game/mecha/equipment/weapons" +#define FILE_DIR "code/game/mecha/medical" +#define FILE_DIR "code/game/mecha/working" +#define FILE_DIR "code/game/objects" +#define FILE_DIR "code/game/objects/alien" +#define FILE_DIR "code/game/objects/closets" +#define FILE_DIR "code/game/objects/closets/secure" +#define FILE_DIR "code/game/objects/devices" +#define FILE_DIR "code/game/objects/devices/PDA" +#define FILE_DIR "code/game/objects/items" +#define FILE_DIR "code/game/objects/items/weapons" +#define FILE_DIR "code/game/objects/items/weapons/implants" +#define FILE_DIR "code/game/objects/radio" +#define FILE_DIR "code/game/objects/secstorage" +#define FILE_DIR "code/game/objects/stacks" +#define FILE_DIR "code/game/objects/storage" +#define FILE_DIR "code/game/objects/tanks" +#define FILE_DIR "code/game/vehicles" +#define FILE_DIR "code/game/vehicles/airtight" +#define FILE_DIR "code/game/verbs" +#define FILE_DIR "code/js" +#define FILE_DIR "code/modules" +#define FILE_DIR "code/modules/admin" +#define FILE_DIR "code/modules/admin/DB ban" +#define FILE_DIR "code/modules/admin/verbs" +#define FILE_DIR "code/modules/assembly" +#define FILE_DIR "code/modules/chemical" +#define FILE_DIR "code/modules/client" +#define FILE_DIR "code/modules/clothing" +#define FILE_DIR "code/modules/clothing/glasses" +#define FILE_DIR "code/modules/clothing/gloves" +#define FILE_DIR "code/modules/clothing/head" +#define FILE_DIR "code/modules/clothing/masks" +#define FILE_DIR "code/modules/clothing/shoes" +#define FILE_DIR "code/modules/clothing/spacesuits" +#define FILE_DIR "code/modules/clothing/suits" +#define FILE_DIR "code/modules/clothing/under" +#define FILE_DIR "code/modules/clothing/uniforms" +#define FILE_DIR "code/modules/critters" +#define FILE_DIR "code/modules/critters/hivebots" +#define FILE_DIR "code/modules/detectivework" +#define FILE_DIR "code/modules/flufftext" +#define FILE_DIR "code/modules/food" +#define FILE_DIR "code/modules/maps" +#define FILE_DIR "code/modules/mining" +#define FILE_DIR "code/modules/mob" +#define FILE_DIR "code/modules/mob/dead" +#define FILE_DIR "code/modules/mob/dead/observer" +#define FILE_DIR "code/modules/mob/living" +#define FILE_DIR "code/modules/mob/living/blob" +#define FILE_DIR "code/modules/mob/living/carbon" +#define FILE_DIR "code/modules/mob/living/carbon/alien" +#define FILE_DIR "code/modules/mob/living/carbon/alien/humanoid" +#define FILE_DIR "code/modules/mob/living/carbon/alien/humanoid/caste" +#define FILE_DIR "code/modules/mob/living/carbon/alien/larva" +#define FILE_DIR "code/modules/mob/living/carbon/brain" +#define FILE_DIR "code/modules/mob/living/carbon/human" +#define FILE_DIR "code/modules/mob/living/carbon/metroid" +#define FILE_DIR "code/modules/mob/living/carbon/monkey" +#define FILE_DIR "code/modules/mob/living/silicon" +#define FILE_DIR "code/modules/mob/living/silicon/ai" +#define FILE_DIR "code/modules/mob/living/silicon/decoy" +#define FILE_DIR "code/modules/mob/living/silicon/pai" +#define FILE_DIR "code/modules/mob/living/silicon/robot" +#define FILE_DIR "code/modules/mob/new_player" +#define FILE_DIR "code/modules/mob/organ" +#define FILE_DIR "code/modules/mob/simple_animal" +#define FILE_DIR "code/modules/paperwork" +#define FILE_DIR "code/modules/power" +#define FILE_DIR "code/modules/power/antimatter" +#define FILE_DIR "code/modules/power/singularity" +#define FILE_DIR "code/modules/power/singularity/particle_accelerator" +#define FILE_DIR "code/modules/projectiles" +#define FILE_DIR "code/modules/projectiles/ammunition" +#define FILE_DIR "code/modules/projectiles/guns" +#define FILE_DIR "code/modules/projectiles/guns/energy" +#define FILE_DIR "code/modules/projectiles/guns/projectile" +#define FILE_DIR "code/modules/projectiles/projectile" +#define FILE_DIR "code/modules/recycling" +#define FILE_DIR "code/modules/research" +#define FILE_DIR "code/modules/scripting" +#define FILE_DIR "code/modules/scripting/AST" +#define FILE_DIR "code/modules/scripting/AST/Operators" +#define FILE_DIR "code/modules/scripting/Implementations" +#define FILE_DIR "code/modules/scripting/Interpreter" +#define FILE_DIR "code/modules/scripting/Parser" +#define FILE_DIR "code/modules/scripting/Scanner" +#define FILE_DIR "code/modules/security levels" +#define FILE_DIR "code/unused" +#define FILE_DIR "code/unused/beast" +#define FILE_DIR "code/unused/computer2" +#define FILE_DIR "code/unused/disease2" +#define FILE_DIR "code/unused/gamemodes" +#define FILE_DIR "code/unused/hivebot" +#define FILE_DIR "code/unused/mining" +#define FILE_DIR "code/unused/optics" +#define FILE_DIR "code/unused/pda2" +#define FILE_DIR "code/unused/powerarmor" +#define FILE_DIR "code/unused/spacecraft" +#define FILE_DIR "code/WorkInProgress" +#define FILE_DIR "code/WorkInProgress/carn" +#define FILE_DIR "code/WorkInProgress/mapload" +#define FILE_DIR "code/WorkInProgress/organs" +#define FILE_DIR "code/WorkInProgress/virus2" +#define FILE_DIR "html" +#define FILE_DIR "icons" +#define FILE_DIR "icons/48x48" +#define FILE_DIR "icons/effects" +#define FILE_DIR "icons/mecha" +#define FILE_DIR "icons/misc" +#define FILE_DIR "icons/mob" +#define FILE_DIR "icons/obj" +#define FILE_DIR "icons/obj/assemblies" +#define FILE_DIR "icons/obj/atmospherics" +#define FILE_DIR "icons/obj/clothing" +#define FILE_DIR "icons/obj/doors" +#define FILE_DIR "icons/obj/machines" +#define FILE_DIR "icons/obj/pipes" +#define FILE_DIR "icons/pda_icons" +#define FILE_DIR "icons/spideros_icons" +#define FILE_DIR "icons/Testing" +#define FILE_DIR "icons/turf" +#define FILE_DIR "icons/unused" +#define FILE_DIR "icons/vehicles" +#define FILE_DIR "icons/vending_icons" +#define FILE_DIR "interface" +#define FILE_DIR "maps" +#define FILE_DIR "maps/backup" +#define FILE_DIR "maps/RandomZLevels" +#define FILE_DIR "sound" +#define FILE_DIR "sound/AI" +#define FILE_DIR "sound/ambience" +#define FILE_DIR "sound/effects" +#define FILE_DIR "sound/hallucinations" +#define FILE_DIR "sound/items" +#define FILE_DIR "sound/machines" +#define FILE_DIR "sound/mecha" +#define FILE_DIR "sound/misc" +#define FILE_DIR "sound/piano" +#define FILE_DIR "sound/voice" +#define FILE_DIR "sound/weapons" // END_FILE_DIR // BEGIN_PREFERENCES @@ -13,6 +210,7 @@ // BEGIN_INCLUDE #include "resources.dm" +#include "code\global.dm" #include "code\names.dm" #include "code\setup.dm" #include "code\stylesheet.dm" @@ -97,7 +295,6 @@ #include "code\datums\spells\turf_teleport.dm" #include "code\datums\spells\wizard.dm" #include "code\defines\atom.dm" -#include "code\defines\global.dm" #include "code\defines\hub.dm" #include "code\defines\obj.dm" #include "code\defines\turf.dm"