From 3381c615ef5d6f21bde95ee56e0c3ffcf8d3da41 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Wed, 31 Dec 2014 01:00:49 -0500 Subject: [PATCH 01/51] Adds blue suit jacket to custom loadout gear Custom item for Nyarlthotep, implemented as custom loadout gear. --- code/modules/client/preferences_gear.dm | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/code/modules/client/preferences_gear.dm b/code/modules/client/preferences_gear.dm index 3e8c8e3a3c2..cfd3196a119 100644 --- a/code/modules/client/preferences_gear.dm +++ b/code/modules/client/preferences_gear.dm @@ -492,6 +492,12 @@ var/global/list/gear_datums = list() cost = 3 slot = slot_wear_suit +/datum/gear/blue_lawyer_jacket + display_name = "suit jacket, blue" + path = /obj/item/clothing/suit/storage/toggle/lawyer/bluejacket + cost = 3 + slot = slot_wear_suit + /datum/gear/hoodie display_name = "hoodie, grey" path = /obj/item/clothing/suit/hoodie From cf5dff8a717ef18c81bcf9b87efa98575b48ec67 Mon Sep 17 00:00:00 2001 From: Fira Date: Thu, 1 Jan 2015 18:15:47 +0000 Subject: [PATCH 02/51] Updated OldUI for Computers to be usable by ghosts --- code/game/machinery/computer/computer.dm | 14 ++++++++++++++ code/game/machinery/computer/law.dm | 7 ++++++- code/game/machinery/teleporter.dm | 12 +++++++++--- 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm index ff88f89c5a2..b639334c01e 100644 --- a/code/game/machinery/computer/computer.dm +++ b/code/game/machinery/computer/computer.dm @@ -101,6 +101,20 @@ return text +/obj/machinery/computer/attack_ghost(user as mob) + return src.attack_hand(user) + +/obj/machinery/computer/attack_hand(user as mob) + /* Observers can view computers, but not actually use them via Topic*/ + if(istype(user, /mob/dead/observer)) return 0 + return ..() + +/obj/machinery/computer/Topic(href, href_list) + /* Can't use topic as observer by default */ + if(istype(usr, /mob/dead/observer)) return 0 + return ..() + + /obj/machinery/computer/attackby(I as obj, user as mob) if(istype(I, /obj/item/weapon/screwdriver) && circuit) playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) diff --git a/code/game/machinery/computer/law.dm b/code/game/machinery/computer/law.dm index 5c970f9d678..2d73e17da86 100644 --- a/code/game/machinery/computer/law.dm +++ b/code/game/machinery/computer/law.dm @@ -50,7 +50,9 @@ else usr << "[src.current.name] selected for law changes." return - + + attack_ghost(user as mob) + return 1 /obj/machinery/computer/borgupload @@ -83,3 +85,6 @@ else usr << "[src.current.name] selected for law changes." return + + attack_ghost(user as mob) + return 1 diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm index 04b8c5644ae..2ae7abed3dd 100644 --- a/code/game/machinery/teleporter.dm +++ b/code/game/machinery/teleporter.dm @@ -9,6 +9,10 @@ var/one_time_use = 0 //Used for one-time-use teleport cards (such as clown planet coordinates.) //Setting this to 1 will set src.locked to null after a player enters the portal and will not allow hand-teles to open portals to that location. +/* Ghosts can't use this */ +/obj/machinery/computer/attack_ghost(user as mob) + return 1 + /obj/machinery/computer/teleporter/New() src.id = "[rand(1000, 9999)]" ..() @@ -80,9 +84,11 @@ /obj/machinery/teleport/station/attack_ai() src.attack_hand() -/obj/machinery/computer/teleporter/attack_hand() - if(stat & (NOPOWER|BROKEN)) - return +/obj/machinery/computer/teleporter/attack_hand(user as mob) + if(..()) return + + /* Ghosts can't use this one because it's a direct selection */ + if(istype(user, /mob/dead/observer)) return var/list/L = list() var/list/areaindex = list() From d9be074d2970a1ce5c52a4c1bb0f92fa168b1400 Mon Sep 17 00:00:00 2001 From: Fira Date: Thu, 1 Jan 2015 18:17:11 +0000 Subject: [PATCH 03/51] Made Ghosts able to use NanoUI in read-only mode --- code/modules/nano/nanoui.dm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/code/modules/nano/nanoui.dm b/code/modules/nano/nanoui.dm index 91e97c0cb5b..580b3598b9b 100644 --- a/code/modules/nano/nanoui.dm +++ b/code/modules/nano/nanoui.dm @@ -138,7 +138,10 @@ nanoui is used to open and update nano browser uis * @return nothing */ /datum/nanoui/proc/update_status(var/push_update = 0) - if (istype(user, /mob/living/silicon/ai) || (get_dist(get_turf(user),get_turf(src_object)) <= 1)) + if (istype(user, /mob/dead/observer)) + /* Ghosts see updates but can't interact */ + set_status(STATUS_UPDATE, push_update) + else if (istype(user, /mob/living/silicon/ai) || (get_dist(get_turf(user),get_turf(src_object)) <= 1)) set_status(STATUS_INTERACTIVE, push_update) // interactive (green visibility) else if (istype(user, /mob/living/silicon/robot)) if (src_object in view(7, user)) // robots can see and interact with things they can see within 7 tiles From 81d545d4060876c3dadf01b59446547133b71f1e Mon Sep 17 00:00:00 2001 From: Fira Date: Thu, 1 Jan 2015 18:26:55 +0000 Subject: [PATCH 04/51] Added attack_ghost to APC and SMES to allow observing --- code/modules/power/apc.dm | 5 +++++ code/modules/power/smes.dm | 2 ++ 2 files changed, 7 insertions(+) diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index dc019ccaec6..7519becdaf8 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -724,6 +724,11 @@ // do APC interaction src.interact(user) +/obj/machinery/power/apc/attack_ghost(user as mob) + if(stat & (BROKEN|MAINT)) + return + return ui_interact(user) + /obj/machinery/power/apc/interact(mob/user) if(!user) return diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm index 11bcef5881f..ec401935e5c 100644 --- a/code/modules/power/smes.dm +++ b/code/modules/power/smes.dm @@ -218,6 +218,8 @@ add_fingerprint(user) ui_interact(user) +/obj/machinery/power/smes/attack_ghost(mob/user) + ui_interact(user) /obj/machinery/power/smes/attack_hand(mob/user) add_fingerprint(user) From 200358d592daa25b503b2018d59619c5a47f578f Mon Sep 17 00:00:00 2001 From: Fira Date: Thu, 1 Jan 2015 18:53:31 +0000 Subject: [PATCH 05/51] Fix incorrect proc path in code/game/machinery/teleporter.dm --- code/game/machinery/teleporter.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm index 2ae7abed3dd..6c058e08ed0 100644 --- a/code/game/machinery/teleporter.dm +++ b/code/game/machinery/teleporter.dm @@ -10,7 +10,7 @@ //Setting this to 1 will set src.locked to null after a player enters the portal and will not allow hand-teles to open portals to that location. /* Ghosts can't use this */ -/obj/machinery/computer/attack_ghost(user as mob) +/obj/machinery/computer/teleporter/attack_ghost(user as mob) return 1 /obj/machinery/computer/teleporter/New() From 0de42a14196d7c6e9e5c53447206b5f7b73fc7d5 Mon Sep 17 00:00:00 2001 From: SparklySheep Date: Sun, 4 Jan 2015 13:27:15 -0600 Subject: [PATCH 06/51] Adds the visitor alt-title. http://www.baystation12.net/forums/viewtopic.php?f=5&t=11868 --- code/game/jobs/job/assistant.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/jobs/job/assistant.dm b/code/game/jobs/job/assistant.dm index 270a4e38678..32118034127 100644 --- a/code/game/jobs/job/assistant.dm +++ b/code/game/jobs/job/assistant.dm @@ -9,7 +9,7 @@ selection_color = "#dddddd" access = list() //See /datum/job/assistant/get_access() minimal_access = list() //See /datum/job/assistant/get_access() - alt_titles = list("Technical Assistant","Medical Intern","Research Assistant","Security Cadet") + alt_titles = list("Technical Assistant","Medical Intern","Research Assistant","Security Cadet","Visitor") /datum/job/assistant/equip(var/mob/living/carbon/human/H) if(!H) return 0 From aa3c7574caaf050cc7ca958cddd41c2d2f17e9ef Mon Sep 17 00:00:00 2001 From: Tramziller Date: Thu, 8 Jan 2015 19:03:05 +0100 Subject: [PATCH 07/51] Added option to print research levels and researched devices to RD consoles --- code/modules/research/rdconsole.dm | 74 ++++++++++++++++++++++-------- 1 file changed, 56 insertions(+), 18 deletions(-) diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index 3f40be01df4..a29fc1dfec4 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -122,6 +122,8 @@ won't update every console in existence) but it's more of a hassle to do. Also, C.files.AddDesign2Known(D) C.files.RefreshResearch() + + /obj/machinery/computer/rdconsole/New() ..() files = new /datum/research(src) //Setup the research data holder. @@ -523,9 +525,52 @@ won't update every console in existence) but it's more of a hassle to do. Also, spawn(20) screen = 1.6 updateUsrDialog() + + else if (href_list["print"]) //Print research information + screen = 0.5 + spawn(20) + var/obj/item/weapon/paper/PR = new/obj/item/weapon/paper + if( text2num(href_list["print"]) == 2) + PR.name = "research list" + PR.info = GetResearchListInfo() + else + PR.name = "research levels" + PR.info = GetResearchLevelsInfo() + PR.info_links = PR.info + PR.icon_state = "paper_words" + PR.loc = src.loc + spawn(10) + screen = ((text2num(href_list["print"]) == 2) ? 5.0 : 1.1) + updateUsrDialog() + updateUsrDialog() return +/obj/machinery/computer/rdconsole/proc/GetResearchLevelsInfo() + var/dat + dat += "Current Research Levels:

" + dat += "
    " + for(var/datum/tech/T in files.known_tech) + dat += "
  • " + dat += "[T.name]" + dat += "
      " + dat += "
    • Level: [T.level]" + dat += "
    • Summary: [T.desc]" + dat += "
    " + return dat + +/obj/machinery/computer/rdconsole/proc/GetResearchListInfo() + var/dat + dat += "List of Researched Technologies and Designs:" + dat += "
      " + for(var/datum/design/D in files.known_designs) + if(D.build_path) + dat += "
    • [D.name]: [D.desc]" + dat += "
    " + return dat + + + /obj/machinery/computer/rdconsole/attack_hand(mob/user as mob) if(stat & (BROKEN|NOPOWER)) return @@ -570,6 +615,9 @@ won't update every console in existence) but it's more of a hassle to do. Also, if(0.4) dat += "Imprinting Circuit. Please Wait..." + if(0.5) + dat += "Printing Research Information. Please Wait..." + if(1.0) //Main Menu dat += "Main Menu:

    " dat += "Loaded disk: " @@ -593,16 +641,9 @@ won't update every console in existence) but it's more of a hassle to do. Also, dat += "
" if(1.1) //Research viewer - dat += "Main Menu
" - dat += "Current Research Levels:

" - dat += "
    " - for(var/datum/tech/T in files.known_tech) - dat += "
  • " - dat += "[T.name]" - dat += "
      " - dat += "
    • Level: [T.level]" - dat += "
    • Summary: [T.desc]" - dat += "
    " + dat += "Main Menu || " + dat += "Print This Page
    " + dat += GetResearchLevelsInfo() dat += "
" if(1.2) //Technology Disk Menu @@ -897,18 +938,15 @@ won't update every console in existence) but it's more of a hassle to do. Also, ///////////////////Research Information Browser//////////////////// if(5.0) - dat += "Main Menu
" - dat += "List of Researched Technologies and Designs:" - dat += "
    " - for(var/datum/design/D in files.known_designs) - if(D.build_path) - dat += "
  • [D.name]: [D.desc]" - dat += "
" - + dat += "Main Menu || " + dat += "Print This Page
" + dat += GetResearchListInfo() user << browse("Research and Development Console
[dat]", "window=rdconsole;size=850x600") onclose(user, "rdconsole") + + /obj/machinery/computer/rdconsole/robotics name = "Robotics R&D Console" id = 2 From f5344e599f5db29169c144e0c0d43df2f803d533 Mon Sep 17 00:00:00 2001 From: Amunak Date: Sat, 10 Jan 2015 04:04:32 +0100 Subject: [PATCH 08/51] Adds a nicer header to the research paper prints --- code/modules/research/rdconsole.dm | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index a29fc1dfec4..7a7cd95d677 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -531,11 +531,15 @@ won't update every console in existence) but it's more of a hassle to do. Also, spawn(20) var/obj/item/weapon/paper/PR = new/obj/item/weapon/paper if( text2num(href_list["print"]) == 2) - PR.name = "research list" - PR.info = GetResearchListInfo() + PR.name = "list of researched technologies" + PR.info = "

List of researched technologies

" + PR.info += "by [station_name()] Research Lab at [worldtime2text()] station time

" + PR.info += GetResearchListInfo() else - PR.name = "research levels" - PR.info = GetResearchLevelsInfo() + PR.name = "researched technology levels" + PR.info = "

Researched technology levels

" + PR.info += "by [station_name()] Research Lab at [worldtime2text()] station time

" + PR.info += GetResearchLevelsInfo() PR.info_links = PR.info PR.icon_state = "paper_words" PR.loc = src.loc @@ -548,7 +552,6 @@ won't update every console in existence) but it's more of a hassle to do. Also, /obj/machinery/computer/rdconsole/proc/GetResearchLevelsInfo() var/dat - dat += "Current Research Levels:

" dat += "
    " for(var/datum/tech/T in files.known_tech) dat += "
  • " @@ -561,7 +564,6 @@ won't update every console in existence) but it's more of a hassle to do. Also, /obj/machinery/computer/rdconsole/proc/GetResearchListInfo() var/dat - dat += "List of Researched Technologies and Designs:" dat += "
      " for(var/datum/design/D in files.known_designs) if(D.build_path) @@ -643,6 +645,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, if(1.1) //Research viewer dat += "Main Menu || " dat += "Print This Page
      " + dat += "Current Research Levels:

      " dat += GetResearchLevelsInfo() dat += "
    " @@ -940,6 +943,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, if(5.0) dat += "Main Menu || " dat += "Print This Page
    " + dat += "List of Researched Technologies and Designs:" dat += GetResearchListInfo() user << browse("Research and Development Console
    [dat]", "window=rdconsole;size=850x600") From aee7ad199af469b1b67cb9ec8a2d1a6b9a614306 Mon Sep 17 00:00:00 2001 From: Amunak Date: Sat, 10 Jan 2015 04:06:25 +0100 Subject: [PATCH 09/51] Fixes rdconsole.dm file formatting --- code/modules/research/rdconsole.dm | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index 7a7cd95d677..4a00a3114ff 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33 - /* Research and Development (R&D) Console @@ -27,8 +25,6 @@ cause a ton of data to be lost, an admin can go send it back. - The second method is with Technology Disks and Design Disks. Each of these disks can hold a single technology or design datum in it's entirety. You can then take the disk to any R&D console and upload it's data to it. This method is a lot more secure (since it won't update every console in existence) but it's more of a hassle to do. Also, the disks can be stolen. - - */ /obj/machinery/computer/rdconsole @@ -122,8 +118,6 @@ won't update every console in existence) but it's more of a hassle to do. Also, C.files.AddDesign2Known(D) C.files.RefreshResearch() - - /obj/machinery/computer/rdconsole/New() ..() files = new /datum/research(src) //Setup the research data holder. @@ -571,8 +565,6 @@ won't update every console in existence) but it's more of a hassle to do. Also, dat += "
" return dat - - /obj/machinery/computer/rdconsole/attack_hand(mob/user as mob) if(stat & (BROKEN|NOPOWER)) return @@ -949,8 +941,6 @@ won't update every console in existence) but it's more of a hassle to do. Also, user << browse("Research and Development Console
[dat]", "window=rdconsole;size=850x600") onclose(user, "rdconsole") - - /obj/machinery/computer/rdconsole/robotics name = "Robotics R&D Console" id = 2 @@ -959,4 +949,4 @@ won't update every console in existence) but it's more of a hassle to do. Also, /obj/machinery/computer/rdconsole/core name = "Core R&D Console" - id = 1 \ No newline at end of file + id = 1 From 66ab6bffba6eb843e7dde7c96660082aacacf5dc Mon Sep 17 00:00:00 2001 From: sabiram Date: Sat, 10 Jan 2015 22:55:29 -0500 Subject: [PATCH 10/51] Adds my approved custom item (baystation12.net/forums/viewtopic.php?p=255276) to the common loadout pool. --- code/modules/client/preferences_gear.dm | 6 ++++++ code/modules/clothing/under/miscellaneous.dm | 7 +++++++ icons/mob/uniform.dmi | Bin 255670 -> 256681 bytes icons/obj/clothing/uniforms.dmi | Bin 58326 -> 58633 bytes 4 files changed, 13 insertions(+) diff --git a/code/modules/client/preferences_gear.dm b/code/modules/client/preferences_gear.dm index 3e8c8e3a3c2..ef812c3782e 100644 --- a/code/modules/client/preferences_gear.dm +++ b/code/modules/client/preferences_gear.dm @@ -288,6 +288,12 @@ var/global/list/gear_datums = list() slot = slot_w_uniform cost = 3 +/datum/gear/purplejumpskirt + display_name = "jumpskirt, purple" + path = /obj/item/clothing/under/purplejumpskirt + slot = slot_w_uniform + cost = 2 + /datum/gear/skirt_blue display_name = "plaid skirt, blue" path = /obj/item/clothing/under/dress/plaid_blue diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm index 6daa9044531..af035234689 100644 --- a/code/modules/clothing/under/miscellaneous.dm +++ b/code/modules/clothing/under/miscellaneous.dm @@ -400,6 +400,13 @@ item_color = "sundress_white" body_parts_covered = UPPER_TORSO|LOWER_TORSO +/obj/item/clothing/under/purplejumpskirt + name = "purple jumpskirt" + desc = "A purple jumpskirt, Sol size 0." + icon_state = "purplejumpskirt" + item_state = "purplejumpskirt" + item_color = "purplejumpskirt" + /obj/item/clothing/under/captainformal name = "captain's formal uniform" desc = "A captain's formal-wear, for special occasions." diff --git a/icons/mob/uniform.dmi b/icons/mob/uniform.dmi index ffc7169614d59f5ec77aa86c316954534e76aac0..9d37041415566e0e13f65f6cb27de0eba40d825c 100644 GIT binary patch delta 15986 zcmbWeWmpwa7brY5NP_~>AOcD&-Q6i5rF0{WGz=x(sWbutBHhx`AYIbk-F?m--h1EY z>-*#5nX_xw-ZSjgYwf8W#4Vb{jip0Sk9)}uu4<>pNroi$>eTyg__ZtnK34$tb!LYUGbrVfkl&hJ7xI+!c+q2}7!3QYx8Q3=?jwsu(L<@T5G z3U+vm*VW{;D@;MDEd8a~YnO7#5Ffz&X5A$w`GZ5AW}ZX6zKxvLQF#pSMJc(dR5VDy zctnj~l*1@XGe$I|V?i!yIu;YAiWSGB%x!LJ!;KgB%}f@X$Xn&b*kmD2=rVTDFY0HG z*J`gfk92}3P)(#)?{R|70_AoXB4nkXEfyE=V9gnQ$zetb?|NBk6so(DDV--%iCJ&U z#`wwP7toYl*z)xs8HSlQDH(?G5*Y^Qc^F_EDp(q*VOqeA*FRrU*g;Oqv4j3DloR(4 z7rXAyG+~9$O@_E18sr=_U^bLaC7n`DGXcV@gNWtVFPR3O>d9v-rMk`q{D1IDwK3SV9nc z{#ivLs!2oI)q5k`B$~3usJ|uqxB{KyU|@!>h|7}6QgZkM16L_4f+B&;t`C7E#xUda z21iS$FP_KG`M&S$&>@@#wAG+U{V`LBNzKXb(`NIS(qJ01GEF6}rCgZAMr*83`&5`h z?t`(DvYZtX()%qLLf8Gl?@zjI`1LMEN2$8uj-ldp&-&T3wIkQX#x zt30pTRELLhT8P)k@SIx`%wS@0ZgaUFsThyo&HZZ*vA2n)k8_+)>*ED0FFGhmUa8Mn z;{M{-XmInNyPp;$p*RySx$q)q_9U>89e7n!q1o@kA4ihNV*cv5-8Hb{mQP`4<&;lB zj0`s`-_K%iF2Cc|i-P+}i&0!;McOO(cAhXS>*iox>P`}-h*XdK_Px<(-F7dZOh#yk zSxeA|9aq0dkeu&jYU$|(gL9Ri-;J0oSf9(&gvS_88!$NU{}8McqoiWoDr&0=A+N|) zOO5=<5Qrn2%eH)$5bYel+MA}9Pw{GsD*^w5S(T}kRmeT94&j&1kw~M)S`6#lfHT6a z@(7jP#%r~=^>RF8oEFS@_GcD(Eqov8bA@*{#0hFzWk;`SzMpKS_j?4@_uk1{+hKsfK(o{8e1s;k1F$e+JCDk68`qkcgg1l z)^K-!u(x86=}+)<5{KeC&;upJ0|f#4A=Y`IAldx_sWd-do-7US>(PIUH5306Ur25D z357+HyQbwZU<&2e6w!yDlTG%|q~`H$=3=V9*Hec-t7fUxF1A(Ueo@JoUGFDFOK(&e z_f65f)s6n@VQq7MUZ=8Mh(}{6W!U?Tv&D_j75STnVW&)q$(y;F>sRwOQHH7c6zX6# z4jPk8KiCR?Y>qP@)K8Pj4agRwIKuo(x8N3=B$S?>BsCt?XYeFT#Z>SOWwnbspElpS z^xNFea*u;~hxbfOWx>t-3UoY9%sf0ieR2gkDt7d6gqt6N$_fTnXbsI;)pFitmI>x( znNLQwW+fGhuluT`a!vg1uj^uB@cW|3!MFUVbbLFU=Y0pyo5fmQ#f*<>&5GIe4BRu> ze$VGR^nX(^Vj53{>uLH`)^1%pr!R3mZ+wKIj#ezzzJIOyJjpe7?&J+zKF!kVW96px zs9jx$bqyjw-|U(rYX=zC=o;0{IrgO%7yT1GU$EoZcNHMV3Gr5^JSz6hdJQbvfI{l& zjyX8R@T4}SN!)htWfMB5VDYO3qUyu4KRudh4!5QF8WhKDJ>D#^dgCWf!CKTDE(9(m zOEjLRF%?bw9C&lA{WHZLMEVi?UZ57hC?b;Z9*h!Gaiw6QJ7YmdbaHZX*dC$rKJ8<; zuD2$n^giaO{t`g)#uQywPtS-QB++n_Od1jq`*u+~^GR-a^d~a)n&>$xDe1BUud1G2 z1aXRBAeEM)*c=sE(GYmK@MZP!tp*NSrLC-9A^HR1;o*R+iTDe2(KlI?8PC@$^RV`V z`W&%d^W<(CKGoydb1dTu$T*;X%JBWC0ImF1O!i;TWRm!NOS6Ej`xOoFB;Sqc_+WAm z0f28}^G2^7zP!VUCR|6ByKw-7{KhpF}ZrC0AF{%xq2|IEPt83rfkT8XJq z-baX8QY4Lj`}1nqV)Gvc2Yj0BPo@6YJ(a5=u6rWeZRGAf)i3f_(E<3=I9PduUKRytOj;|A z(XBb2LV#&mWg~PqZ}um3R{d@F;=9RXyI+vw6#E{^Z)M?jeAOb|mI2}#1_5dIy zp%QY+Wo^Ey9*7%+OyxghDJM``+cJie(U+Vj*KK07!#;nt46-V1!XIgIYtlD?bJLHL zGE7_c!dZ(S9#ugiY-@)IBtFHJ%-CWF3_tlIB$lbYCCnoArVb*&`1f?iAYk@ZUSQwT zC!YR!O#G^Up+^vmfLHWM%Y+9GLlhr%lngti*28>3X}xy!+yUTc$R0XKB`=p8jzOqa zbMXRbTXzN-#BNBrm=F?g<&nkw#MCgvwUq z)5Q>j_GcDfj~yrJ@9T}_?L`g?ZydXxdVi?F&`LK7xLVPQ?R_2&0k8bn4O!Mc1?-?T z3aJFctu&^Fk&%kMCh!8vTnnuhTmE>DgJ4 zCM{mGDkE}8hyM(ca7qR|rkHy)Rxu#*Exee=vqW7?kCf~F>!yJC{Y7%!P2ffN2FK~hF zBID~3&?`<#6`6exJ2PMih3J-J--`I}R^-(E-IDi^C6?FhmvLTwN@C-*)P0T^#WeUF z%(Tloh~tU$z0rX0{3V0U?EMi(aRP|HWJ38$c~a`+%2lsy6Ml5S4Xvv=u449YoRxFl zw1cUM%L>-#K4ShfQaj3F?7sDn-l#(Yc1NabQEAGq_txg->N$Qv-#6;w$<)ozpWnic z`frYKQj>t9ArU@!M^;%#C20UrhknLON|<-EAewL%Tdu8j+^#nn1(GV~Ie4CTqw-mD z@^7cx#=RTbpuC^PmVrfOj^*}__Q*R-GcIHn-@9uPM==GK@Zd~{c2R{L=>F#d#HorT zX$G;J@S^C#)Nj|N>F~pB9gNuB`?(9x$U!#0x=FOh>8L_)6whmK*|}Q**JjG7ilH|5 zABMdZ;%|;{LXZG(*|m}5W?oM2Oav+&8W#X+i}lH$$g-11gTpP`SNuTv*4YpjTJWZ4 zB)(}JxWp;9{o@RuYlJ{kkTXuS{54>D6gbK`Vq3{9Mu9Bey?xub+}1y+`zkR;SnK6k*;^Q zCL4yy;B#N)m?#YAly6HA(RBx%{|?k~N!gyjpq+|%SH3am<&NdB(Yq#=29fgP+pxDK z1@auNAOL$^rd!%dzOcl%gB9M_LyU*d(_aWQ7oCYfbO?>Ae|}i}+X{&Xdd27$oYNuK zW7MpvFRT)77@)N#(bqED`Q*;PQF0LHBws9O^OoJnDLuS&cuRtrXz!A%LYujd=7DC% zVvJ@IcwhX?Od|N*^vgu-=c#!MX%&3$uiNnHt`Fg*^w+ZS61Ng#!+8=v5nSlWDlrEN z_XwaezS`?8caOXYbFk`nuU6VbSvtNv5xNIO{yfsQ(rJ?*r3IVJLlUDZ2GHut{8MzY zgZ6FOdjkVpF+4nUc<7>d$P?4k49zjgzCW^La+mf1(X+a~R>L)r2j%zFQTf`U zQu)6OlEea;!C)J&J4YEMsODf)!Hrl5qqwpQD7_Gfgnx9}d^P#LhOr3@wd5pSxw_+U zKQ<(ZlExzA#`0~YlFp3-Jzx4&RmyUv4OS*YH68c2L33WF2u_0-!YFBcoDgUZbQSI4 zXE^X;&5GfgjW^ED>H_a(2LFzE{yX4icK4F{d>vG}>_JI9)7t&0JKZ)u{PMV4;@kiLn?(@Db6A=l0bzHA_HKIFBQrI* za%U!(yRYJS`)~bfN^ssy>uL(ByUS+Ybdeg0==npsK5Rbo-w07i)_Ae*myu@|I?`BK z`GH-Bi9Lbbn3M+SjSHyI9;{Tk6b^qUb|AkgkXy|b3v`$aw2N%i;s22iH`|Kov<^zx z1m_3aKuz4=9F`;0k@w?yCZur1TcMmEzOPm6db^^!@!dT~8tP4U{HkvZTw$_Y8*eK2 z@8hh_z@9OL|J)koMO3ld)~jt2kiE>{om~I^nukZr)qNlsE2#>;?vXWIAWtNm;HwqQ z`U=!iZ>__V`M~rpg=QqcbSX?dBUDbzJQpDROk5od`EW?+K-wLmX-J>g z)d_$_R$02Y>t1YJXZCNtMa#ENBLHI;o*pwM$HMndT<4k0yt)i;Oa9aZ)z4vnFC-F2VA`;BFhNpPG8_(Nu%(i5w_4F*UV% z*2q7d)LcJ|5HS(KvF8{Dtyu|~ z!Tv2CIq$qWUt0K&cxX}}QV5%?PiRt&-3{;XnZ{4Rb#EUcou0-s{^>fQI=W;|5I)SZ z)5Hk6E%M9<*VbEW0!6n>Cg%6eLN~^HkTUue`K@TX;2lG#obuK06qLk7oOp=Lt~7>% zyFQ6S|Nk$qhN?S9pX50CXQB!Un7X>rhTkuWBhTQy=x$^8D%HMSHPz%|(4A)wnVSZ- z4;p_~*mZUJt0Ex_yRMpC4P@E-9>hCu`jO8=k@N(AtF?H#NXmY?=4zT1pijVP_+zxo z4;4!3AfjV^-*2bWubit18E{tp0;1-R(~Aa;z;+~&pv6E==~+694B=LmD7jr_X}TbN z)OG0D(&XO6_qx5=I~!skO*te%^7bS+K~fEZTE38vN`Z6uJOc~7)02`=GL%Dp{rY8R z;PxvPOXTK*)5k1b1kvb(>Cc))vGQ3R+=ENfsvqrB`uBaf+*fAd%f++m>>l57yj_#yu-%10C1n*YmwONQFpR4)(h|QV1D$1e42{EeB#(VN*YzmgJH94j7k_4+? z0jvAiYlPSP>8`bnVV&N|egxCW?z)_i_n(T#wo#p)nwDN5M+c_bzj`z>HPqH6+z6=! z%)mY0oSx+s{PkD2MeBdx7MvNOX9F$+a)MVkY6I0Tr5Z z&939ZQIz``W!D}*9&=Hzha6=7syy|(12FNHPE6ZRhItGWBM;pft)i{=Yzq3O^4m;79hnMFlLa_TE+R zyEcBnphic8^dB0czn^zg@f8J2k$}ysi)MZMl-uToxZ+_1Ke8UmYuQEaZ9USk+LA>#*L8{$dGyv-vVV5D(+_ zq%8<6Ye0KCT->m4B!5UuPU>G-kN6_)h!y<1G?u;p%WZ=B^4{7W!x`LEXQ)Ggb z&ja`2b#%k!5Zhgd@3WLFEp-t>xhx@~>z1r7c(=O1&u0E^t3C7I1C+2@VWzcvHqE~x zES>^z-8Ycs0!s%|&l8o7`k!kuVS?3J62;(?HbeF{(>F$U=}MX3k5~)oLn_W$yT@e*%#@I^{bq{|XCFGj5Mx(LP6FNd^%Z zxx~XH<5^OKU4Ql#*FXFGL-`g`4XA+#{-OZ%4lGDZlXsTeNITB}pUI;O0>4s{*pxt9 zz2b7;&viq6^+O_Erd)^*uFN}vv?ANbTQG&57~a^D2CSSW_a zrwm4OKukc{X!uFgxw_7%5fV79WmFDQ1Gs;d zt&*DHGtR!cZ$B6zeqK4kMLR}L1%Xd6^?%hK0+0yd%!2=(CH*uDHf8+Qce89b%ox$U zX(Tc`ac!i~v%A-t?J|Qb!P+;XO0rZziVDoN^Ve*w_xE+t(*%V^i!M z>9TkflK~{IjgE|DhncIX#m%FMD(ueXvCU`}!%w&ZS+$!njDPHv40{av$#y`3qf*BY*8U%NLDS`#Oq7q5Gg z?LDRqe)@N6m2##cfF5V{sVvixhWp;;g|EhHr-8_=c*0HVrVQ(+rD_alX1Nyk&#i^6?(^LD=>GzutE+4H=G*dxCw@fNdJU|))eZgP z;(|SG@c71?oiwUacn7wmb^8I~Sn|T>`zdUDG}m!vBjp7{Png+O$@ll3kb}PXnic8} zu(p!t%ETyFg(R0&BDD@|#8ZqwW^~;g_H4#=7z}dEHb9Zf&XYRbl8Fn9eB3PB*GF6H z>wa4|d49;YP<*QWOc07+jqT@@WTfx_={|VKJ#zonhGmelFc($P-CPk5KmDFl*(42g zc#iUDGeIk&qXzQ2A5&Y~*cjCnwW7Jw(>Hm?6*gr-^Sio`5JvR8eg#=RCB~K1U-aYj zvIO_8uI@veUs@dHhdyuo?Ar8{!$d-lyaeT(N!5?g3pP-dadZR#)PS6%mCPlHPpV6eZiv~h26KQJN7OOebeL>+TdRyXw28B^Zz zGV#^*9)teiCcG@m{jt}}!q`<-2M#43sLe`aLT0K1Z=?fnx~l=Ele4p#5^(A>78y$) zKy5f?L)>p7xY-aUw^pKw;zy8=ZOw+z8#H8^P&rbeI_ty2&X3xg3asDdJ*QFX4DzEH z)~AiRYFpBz8*F|543JOceiVpmiX$0dqkfE`V6>rNCiIjiO7uE}exP@&YTy&n2QY?Lw#*$I z-V8q99*57S>MgCJHajGRV$#Vp=2brp3~~M7Za3qtflAI27?NyqJmTaHUl5x)0UaOe z3LC%+7HeXfytS6;y(EE?Gr^eKThICrtnSVFyE@lU`&cmM`*&KM;+mRgfoQnWK0ZR4 zKG0s()^hXps%mJ^3BXv>DD_9|Wi7eWUY4kmmz0!1yf62}bEFCHZ5j*o(&cjpPMtA= zc2)?J&D#iVJ##tZJF#0%v_ug(`S~cIbRY#zqg(-x9tDf7*3ClE@?L zJ7LPN*u>W&FI3&LC^qRh-9vQ4(X{rN^BiG0zVWE5MTo2dIX+jZdu?F1eDe%GJb35e zIdjEpA^v6m`bfk9J!Rg9P16<~}7qQxx4>#~gpMYY#^RUjIgot>RXR0>?< z{R$46Ki!gR1?0Cxa_VS$b|g>kovd}fuHI}IM~{aEEuy9T0}JtvpBYRz#f ziRl?{IEZ_X-{y~mMjIFUA}+LJ3%mac4Troi47TNFyOlWShajq?q|_a~Q+>T(%JM-; z>GWMza`Fp}4DinhCtUNp`q|B+$JKLi4~{#*FdpfmLuIerCJUD}1rrK@LS^IS&GAaX zXD0_gqB~sjfU+W@29*3qnNgTl8h><`YFz-65F zH>_Eot>qVv$=uZIeTXcei4cvTTpr96hGElT=1qQ~@=ts~3lu{S@BkLniU}(ZU~dxQESNXv9&{3CW0-EB8!t$M_C9I;p&i^0G6nc$X52=y-p8>8?Y~ z_0~KNmxf-sk>C*`u2z&o6Fs4Rmx&Q$)q^fCTwXj3`Fy1NQkbC}Z5n zC!3}W6%FTp3RLj=(iNEiL#d8x{zj6ESe7pSKTkx;usKwsC#7+z5BA%eqSB|wGl1GmupO@q@`mnG+GG!$~8SEO=Gn5x>^p|!QOdBbl1 z4xFZzj5vCu`LO446T?tYP$&klu}HLIBLoYu5AQ#Kycsi4Y{onSg|@3%R7x#q#u#Dv z%z?jZWhmtn1csSA3PAEEAOMliP&@*PC&X;AUk)$yc?gDZ>A@vNcFrwrZM$F%0u7M+ zzU?y0lgk%pbOx@T{0&N)56PNp-*BQ~W5d-iBX%xLLob_-XlfFKnZLjRsSx%>LNbLF~@%dT{3dPwMO*BX4D4vC+*T z?^VVWguZ6Cqh-sKrnh4>*hhj__FJ;*{3ZB=h>y+x4!a7g4aWU&(e0?KGua}XBtM9E zlYRr)wgJ@HkMfVqqIsaEx*7_%%`i-eQvvtBBHTlsDKC;*Wr{&Xt>`@D*4ArSV<3rO zHTmb78ja84TPYC`GgN4kT_dYLgg&)$dQTL_?L&@oNFbTZ0ni)^;dJl zc6qqE>*g_o5D%%1qQC9wP~F{(WJ!m7 z1`tO|zknFE(0rLMT0&1RZT>EM@CYd-KV-o!u&YoaPbkimDUcPiSAAPuo2lNN-07{j zY@QFG@UC^HgJsi9DRXg=Ue;WQO2YTmrDtLxzGEEyf^Usp^4u3WI{9f1jKMXmtwC$N zDEXo3+n8v}u|U6eLv|7ddMHGsU&d2};Y}Oo*Re7}ho4sqQ$qvfg zD(Y6Y7i%3XX^tHuPKk-hw4ZeXQbWH(VaD)VhTV8p_P^$D{diMTQw_^aa~Y=tYDq#M zneyGDU2Kw7`jHZ$EmSUeP7f9%c{4u=#96LnX0MLGBk=1o7URW}VkXL61tPwO%JO1G zbOp$E;?f|58VmfS66#D6(x&A{O{6Bsp~8siS?e7dl2%uz_(@f^)=&A05G4~0T4Gg_ zj{Jx27a*^!PNNiaEC4oz#$T6ldN;Qo;lM(Zs%#N$zEKtgqlCkzKs4pQH^bVS$_;xy zF}I|1faUmp1w-`*C&(=$!9wk;W=bnhRiqze0w%^R6aY^#x0&2heg&p>D6PXSboC^6S1!oZ*^y5t$V=3yANm9 zksy5jiqCD6swX0V+LWA7*L3&1OzH{@s6@zmXP`j#?!eO1v~2Ti>AY9J^f7nMLGyot z5;qAJ&2`digO!^s*|$!6!>%4Kz3k?Z%xISuGaVHzN5{tE&%b&fSw90x%gTlevpk#X z9AHw|J)b7R!l7ulhF3EP+B16PDM|*&=tWA@$|1W*&tUw(j)EatI||Nq|Az)3%YmKb z0UHx|B#8fXpvn=k&GY|0z#VJ;zd+Jep&0t@95MvHO{|Rq{CC!W_zPeL{wHxgj)Eju z-59|CV{Js>|9DipVLDI_{BPFy|GC61jC;8i4D*#-wD^SyuZC z6<`+hdO6)Sr#b0{?T+>`FrcuwqQh(bon=mzbqJAevlx?CrmlN1Z)wBxaYTeq4!rDU zYDjfOPzoW&ZF9@yu!*g3M)bUl*MxM+r$S6vnR0werN*THd+?euj7O6wOgH`RT#G&o z1RNIgwU#gM<#lZ2&S*~p-KG$LsrjZaso3&9ZfbGfO)WVHy4!@+{7Z`?lj$Rd`BqW& zt_QkJpGWts__dnd0^K)~wCEo`s-_h$Hj26MlDpR!%cXV?7uyjd`HM==S^hKPPU8S! z-dJ#Vht?rDj0$99)h-7{Efa4WVv4|Y#^1|-?jm5BKb(Cx%#6uq%S}ejt+^vh)2ZX{ zx)_sVyq4pRj`XXOZoSiW`E)tk{F)I;qJTfI+OpmP|=ej@iPxTh6SRg3w?15F2SyH@{va0f|!KJqWG zdyqyKzH4Q&+%1?z0L-@j0)V&rg%%*X(Z^X14O&m;?TA_jB9eH)MJZh8vxX*LjEmw5Cvh4o`N zq;a4X@&+SPBg@j6bq)OyP!ko|+IKyQN8eBOnrS@^e@iqZx{%5b043CI+x-~dk#GP% zeCg_JDPLAx&||qB2|z?w#YTLbE{zvQbycvYgouxf$?QYvWnrc^%x26^5=lkvql?J? zxvR@qU!M{>#WHWlqwl_g!mLw?tmC}Dnm5h*)C-3E`Rn=Y7vm}N#(L8}f~Mm?n2?tU z`CpL7sPII!5XI3ms(UCPEP_q{%WqNv))x09Z}6|>L~cF1){yM@2pj9)gHve*kpv3q zT*}Xli`_DN`rYscUzA{#=)Pz^B_fJ?O>$wrVEEm`6YuInvxx&wz1one2GH>|KVzs4 z4+)E&*IX#bTGSPWkG&F}Mr8cK`E3jD%{xt7*)cRfniqZ?<9^PpalSau5rB#Fx3fky zNFXYqsw@2?_KCeuxzp|E#eHBI_Vct>uhPNwO?9EGn%_KKj=3^M{U{>s8CQ!Tvb>M9 z&>cmIvWm6japd#Wsa=KL?ws-0WOLC^Y{@Lur4c~IB*DAbej96bYy>(?G(_wtNNIs3 zg0dzZ6Hnos%50@i7fmMg1R9c}1f7A?^bvkHaTAjlK;Ml9jIO69ySbTy%KI1rb~6mF z2I2~fdU-X{|L(j&^Meo#iB7|t(~W=cTGZ#E-v=vQ2_KkN>QtztJv0o-U+r>3|4-wZ zM+@1%vE{d@fZeGHqwYV?Wk16ZsL5tX4ES_3$)vTE@gmf)WO_tELPbVt4yV{a|2tJJ zVZF!n%^h^Dq*(GsBvI5p+eZB>VnRyfeOfykZv`@6uiHNMrv!hCk>2e#pE_&JSK|>L z4Zqh^**Uk?|f4!p~kAe&vMZfmPRa+KfD znJ9xR7YQnm^SV-po~i7s&O-VfB#F%2aR%B}93T&%x~{In^bO>)v_k=T2$`1uQsVly zl;y|l?CnFS(H(fnHO?cYg>WXhkz)JzL6IwB!0$Kd&iA`3XAt2X5m;EO^I0Zw`^;N# zr+&d)+4Jw2o& z4vOL+0&+tl-h*R%mOIl_yD+YcknNpr_hp0Qh%C~Ai{69Sh5;MYf$~5Io zM9fJio#~a?9N!=;*Q8|1*ysV!wpZ7p9M38Y4-Dg5XtT(0Ccs8Mc+Ey7`_e<$uso^h z|6QzakZDR~D+op@Xrmqg?xQK0vhcV8ub(_Y*rwEGSDiQS*z8APgA`RYF>CA_z*2pJnZS zNO%HJ^T|3uJDSAo{j;TDbUHtG;LNc>#83COxyy3GMAl09=lipX8mJ(7m#QMviy%AW zmY6ZKWBC54tI3VnXt6QE&k~(#p#jYScSlgVadw zMgTmTm^i{Hm|=|R`8l0pvIdGwjV2-ipYD73e|h>e2yQA@#r>u?I+(42v>hI@7!Gg3 zoq3fGAzJ$Og^MB+BzX2?;Ug|RTFOK+id6pbJ1<8ha1jt`Dd35*CWy$}IWm3c1d(5b zSHBhmk5X8Qhds7qZ6J54JkxifzIgRSxHjUn&X(OQ!n$ZEW0#)0gY`Ambp zlI|r*;Cd%1WldzRczrqpG(r)cVMejC8!iLalil-bjv;X++H!kK6o@08fwSJiis>XO zs`Q|kXFi)@{=(ODW8>QN4Apxp_iUj!h!?hHa4jO|9NWjO%SfS8QZ@Q5UEhhBH0p;? z53grDX}_kd2>ts^wjcbziL~*==$a8ec2(>!aGmX4|Dw`TCOn7@h{|K|$CpONSF{IV zZjra&R5RD=xe_{Es|OVDEf4*&Cq!CL-{1qYG#4$gZe4}I9>Sx?(405?41gjjk6F1r zN_6DHU+pR{i6UNFA-+QqWhM%o-qZY8)>wMi|HQAQNrlCS^k@$wGe#oRW^4b7h=#I& zFi7<%wHlmg z%_M&#^L@q5!&CfYay;1y+JvR0f@ELX(aiS<**|>ggWLtJ8e3CvmKMtJuLOdHndZJ< zvLeIM-bUu?vt0m%B0({wpe~ap!g`~?9g@q1aLqY_++JSX*h7ix}89lIw+Pt+QB*)?D;-8zuphW_a9oowbVk0{Smn^BdMMR@v<-D`A+}fCvFBl zIIte?_3pVSnHl&)gloCnX?9@VY_D|mFU>(Iq8~TiT*+s?rm-8X*&MEKE=(%E{%O#anfpKTAB9Y0caI z473TUuylZ@OAAVxDI@zrEu;(QJx+eU1_7d#55gBel{}+#6)>ZNErb11whXtN0#}`G zx$B>BJgis&uBN`i2~n@(Y&de-?4-}O1j^6SgtUp#bN?BA5$QM4ZXr|>`@JO8Ktw40 zJ71rvzZ=ZEhgErAq=;U0CcfcG6rz_5vGe!~OFze|KcO?|xqa*4-QDXkGYQT*E#TtoLn&+D`2~01cL; zx64KA=?@>6K;ygLL+TSLwyJNqI?fV5@g7B=EuYA42|#Yu{!%MdtNSJKzk0_PKz2Rv znX3nJdsGNJ z=dS>~m>$QO-!_u(T)}n&)|4t+C}!`7OpajmtZQCtN?zEP@*N8^JhY0e981){c_l?!a zqDVgOWceK1{}8ALDf|CndCsiR=O5{of>$ygyo1uv<<5_Yw_Z>5;bIr0J1NPsUjdd= z>@(ToosS$~MHY+P^DR+nwd>?@`@fF|c!r4$S`K}p|4FMiHnsV$`UkG}Bwf{I8*6VZ zu4Q&`ac-z(+DnxxJnq%mw|uFXJaKeuZH`?yU3rFTDl1%Hr2=B-h*3(5)_K;InM_z#R*es9u`U@D0D}}^G~wk)tO`> z?uZUHfmd^fLF$LSaLF6*-LuE?(0l(WOL-e0@va*_(LX8&4j?^7wMMyoo&cZHFIe56 zZ#B9Grar!ie+aeZCWE5kzuq&2zECDKmf$519^a8{j~A^*o<3hRBz1)E;1)_eg=-X_=i&7^5^HLj;VNCcfUnc z@DY03Ltvd&+yVdAB92p$X$TwOWutXx|gCiSMxfCzXc^JIquZ7uI%frIX zSrDw2AweBtiO0yAkPeDE!2~M7v}PIQ{J zs`do{UPV++7UVL9-`5D zQJ`up_6ME^Zy**9d#s2fZ=-$tK zz#)DjH}qrSFlf$9RE(Rm55{E6*o!*PinLGBj>nP?id&D1u%rRI*@0BP?$k+lUd#Se zzT4U3k_J15Oc@{x#SujWw=>=H$VUm$$5^e)pxX36+!LU<23{#DnfCAd%S>r1N{Ta! z=qXpP=24Z;VE1#~98BXe`MV=g;dLo6 z|8+dX_-u3VtDwi553E|lR8Clm8SDfF85*G+1-M<{1jdX1fI&6K=6Me9L7q5tKmKRS zSoFyY75_Q2k@cpxVw-;s-WcBZs&filaaYsCuVfKDcc2t(I;M?eckgOt{{w}ZC}&}m zwV&_z*lzV6l|3wtZ?{#OrGz@>&XbvIdAO$<&NA;2g~* zgYKn)>M88*2UPKR+qrf{qpo4nKZqGKc>LdK|VlJ|*AgUmSbT?9UzM zm|wXFBCe>I*;AtqhDe#Aw#h+3wrl(5*+1{2$d)B-N8&h}kj6-ajsUjfs0e z_gerKXLtvB3|-*q_8OLcWXHpHThw}3E}FRc4u&^dW->F*Nwy@IJj=90Rv0r zeOLnUvJQ&<$9Fp2?3*%N?kA&rpmXwHWv7EB1<$U$wR)_?$n6Nwb9@$y@IIyu_NRmY z$q3x`Lc0LTL;RQ?qZ(Z@=s7)Kn#Di^`{@~3=8`#9l0d(rZrP;}iRh93J^!H;M9 t|C^79_9O=W*EnimO4ugSGZF>>j!R7+X{RI&2msKZoRqR;skmXl{{V>77t{a% delta 14957 zcmZ{L1z1(jx9Fz38)*=fF6nNhRX{o=q)R|zA3zD|kVd*xx?4giX{1BCyYsxw@Atp= z-S58do$u^Dd)BO(J!j48nN$1+uXX@0h6zD6_Axh@!?CZFBipx9udx^;o;D3&-2X~P zy$maO>K}GIyPv56_rIUgf8#bXBkn_;ya* z!)efaePJ=3CMVfbV?Jc8)AZF;Q{ny*3p=7I{mT-e&>nt;ryoSEG0Bo;nK+dx&ATFl zzV~Q>h-*kp49|#Bp32Si3GW03g{oc)5PhOQE|@Neuphu>;H`=%ZVx=Lm20H@LqO0R z6ho57fGer|^H#h+dB*0qQu<qtoT8J-$q$mT-eRGSlhX^U_i@h#bkdP%W)y+X}{efu5$ z+qNEtgt2${u4K5$UqnN*hF;|tQ`1Sek!xbBm!)zK~=_nf!Y(hFNbVCD8Cd2d7A_~mZh_kq%)VJ~?k*fWD6S+-|E2dnL;#KV5^O#pBPlA8MlS@Zx#|D~~>Y6>d zD|z<($CnnAF8Qoge>R?j>~j^$1XK`+ZgX(B>Fc?*J*YWCq4{9fdDVjRi!A-*cNQ3A z!o>JGV?Zl*a8b9Ki8#&>oxY5aE@|z6ZF|1G=;MbsIa$ch7%g)Jg7fx2+oa+Mhf*qw z%bsXj^m*^$tuPw@rXFKjCs-R-o@i5tvDu{B3;9aZ`9gA^t`Z61qAYwt<^Ei*iU zhBGsqxccZ&9@DF~)kp-JLU_$dBHW+Ol(3;2t5w-jbBALbk^a}z>+#=@aEzlJx!00Vg{B?_LLId+74w2LDI6AzItZLhn@VlFO z(0!+pG8~9>X|vhCf?y~iFcbvnLac+KAUS>qX|z4y@QVS<^AuHHJ(d_C40HK~fOL3I z!33?1_IM-g&rION+sBIsx&&R+6}5hOB>9Lrucc=h0&DccD=GBk5Pq`iGno_e>h-8H zS1pRh-`uRM&&}yox(-D?-Z&FGv0NWKzMpf8>%C*&a4Ql4Z;~WG-msgg3f7s;c&E95 z)#eGe7m|C;1Idn#oqmbV&lU7JLQnAACE$|J6LT%O*oYz{g39#@Yh z!vxZBNW)P8?yI$aIaeeg{3l}CKyd$Jebgr$xy3ctcB`s($GU#OwWEdYi?1N!-;6}J zpLU#MW-CoDbNXlas*3LzzldWuI(g=-eS5xJIu})S5uLXUgZu0zE#tAM$)ATRhvKDS z8}-+Prr*nc=kUSqs->6?;UDU-i}gD=zy#Jd3dgp~cs2)1<3C!qqDV`%9nkALv876$ zN&m)_MLjILdhWw^F2U|hY#6lQyLNmzLNr?Q1X>~>@|y{_atWO^7=T17X?{*TC z;WHg<^y=b$%jHFq2?zk{ZGTy*rmH9b=kuPbEZ@k~l*`q>Nc5DE9YxO1(ckW{?Ulb~ z$4IpldqDKPtMW)?G6`b1Cl$3`V zqLSgsoH3pz{Xlqem|wf^_0RN>&3XO|`OP$@|I`m;SR%!H>kpmYLm`{(*Q50x|ee(&;+3t_*YlCz0<>}79-k0)* z9#I4jtP~PoaDKXS{Tt%TpZk4#_1jd8Vt8$#Ugz8od|9U>j{MNKyNxp#8tbc8@v17{ z!0)QKV3uf?3|reJUp7!uGK0ftx)4}h@RVjXXY#qo>s`82Ps}*xA-$omojSeD{ zD17xc8mvX>dyB4*4cbO|-BxiNQ+c&4RM!^ESDrYOgB#g4Q_~nHnY*E1Q^F2@Umakk zeg=96+XijqA?~fnYe0SId%J#Au^hKfNsJ@b{|iz z^^ET*Ll|x(T}4PYeO33y${b==F%IJ=-{@_$Al*4Kw*0gH7IBJ~Zv=l2J)#gRIGvs8 z1az#MMF2RHuwHVergOugJ9bh(3gD_>T=E=ddH3aZH_|^E2|$zFdF__vm)Aa6 zmi$S~T0np!qc{br+;&TKRk$kFgx<(G>OO!o8xJrkJ4)XFL9{4sv2)w`QUB2942}eb036~0L2Xgpsi?woe#PJXVq&ikY za7B1F*1apoPKKqelgcFZI+nPXkAzZFQwals=Yj2X&=Y=iHvw*l_MZb)EFh7ZEh(dt z3vaLRD;8ivGs6{qQ)#gV46oG}wIdjrpPnr>F&^K-ZWxv1M@rEf%dRWgR60A($dkaM(z{Ql zVqgBoe0hGo<*xJ$#=%F#Sh8(=;{Fp<`obL&dmV3Dprs3r;Hk?t5otN)z@~$ixBCqkGu@;=LQ3@R=w2JaF&niziOjrw4aDsO|^DG zS~A(B0&r@+;!1S|V4&c_E!ny*`;P~>*$tuC(95wG0^+kXtiq%oB1EOvA0^E0%dS7t zc!<30_;+v#&X@Od`%^QNLDBuMYB00;<|t4jl5>Nm*JHYa1XO5DFw+JwA;J*2xjS1A zV+loFuUJ-8R})W4Y<67E=2`SznYi^nv6p*dcHg}Sq8i?0VddxNlb?0>vOK%rI&G3w zyR-ZT0X!)?1Wt)n?~G^M$hoy^dUAxwoXHKhYDV zx0R?c)$rBY>S_J>v^Ww!P$H5-j2etgWn^M*ACupUl1>c+Q}dDBJ0QOin@GV z(R$ir50-EA;yUS=rKI1n3_%9;tL4(zmgo9r+_C4gGapQst{Mh!3PcX2^9-Rs0m-M5 z^}{v^)C;jXX%F~{DP9Sr;Uc3kg*LS`2;frfmn5smzwB)xacd9g+_;haaZQ=zo4(=AstusI3)nkEF73%v@63KNAW%yN z;Tt;ch6!ygn|6+NcB(b3kkUQVBD!Bl^r|?!5MY~7RC{$AUrf@4TEVn!vDBowNau05k|#Qw)6c3eTs32LuxBVZl6PZ-)_qvulr#5-|$pE?ll=| zTz_}L7{8)A+G#dQiN;5{U{+@%-s3&ddzt6=9^<_5=cB?``Xcb&)Vuju6YmB62!xU0 zx6Sb?tY`1VOB>wTas9#h2y5Nake~LyreaZSu(z9hGbyjLHPNlADB4ZA-|R_x8$(1x z41hIvnX-fUIE)IpwFQ&{X(&UbhS5m{s{89i>QN6P3|L7!s6G1?^+e9BQ`%mZ!dHU! zx0MGMw&Sfgb8rMYqwa{tW1lDjqPcj&^)}yQA99qx_IyP zKDl$jVU-nE3pSRSRQ8vN!i!zihGfD)r%vRZ{HG^e7JDODcXzEZhiT!+1Y>3&{j}5eZ8>V-FOwpIP@()6PM78>7SYZ zjeB7VlI%D737oZoyz7wWBEY>o{Luw+HJ}j>eQVe?dpo#6MG32Pq3(th!_Rd2jlAD* zHx-Fk6Sw|)#?c$~N=jip$th-GZ@fF!V3gV@uA2~llK4#Bmy*;Nnc}#YrI{P>M84T? zEi>J=lemrjH21ZS8TW3>bbd>6ycdD%$8G#p00$-28v6@8*CW1u{&=vnF$~4O!#ii( zl#x@SPEEI08)d1iaXiE36tEYJl#$F+ybm$7bOp17YlI4^P#QKy z_ha^Tkc|*5$@rEpX9?KePUH4A6qbL3@n#DWPqzMr8;hstS2s{J@Q8Q)?&yNHuYx|o zLPZq57T@gwM_>snQ|kkU1QZTm{dlry^@veuEDpm26oMhy+#{4UPx#*3 z*?q0>>jsUt-y3DGHG0ZeuN~+o{G7EH*lk{$PYCa~;h%Z)29_Elfxeaa8iE;d&cD;E z9(J8?`aZ3E)kON{=zTa+_x|&FW1+#2rtjFAM5Ac*^Mv6Ro_9fG2IEftGZgxzJ}mA! z_oecBzEQ@}bu`cC&7YA+d+JeSG3VjQG(IME5(nLr`<1IWzNE$+kTuQY=8ilmYoFZq z>E3ehyY9W&pcPg(FSsR|flRyQiy16Z_$KWeBmAxMmNwHweRGxxMgLX}IT53u} z5^DnZ$Q*s6YRp8HRaGOSqYSi+85cJeEWn!A_~fKrj^3+ROcw~lgr46{A2&hi7H55& z9x(FPUsB(x@*|@w;Z$etoPq*WD5+6CZC`n!agFSp|tK&LGalpjRe7vX(37QZ6eqsy8J zr>AkhH+Uh{j9PT0h6_4F)!WNHHXf_r$;3W3Tdbmoq8aMb2sj^QAg3#9J}h$+kAhe3 z-Wt@P0>gjG7-ec6A5!ET`$MTJuP++tO2Y;D`6yyTjH05VKWS!W8XCO++UMi%7A|FR z(VqF@dil{C>bcZcZaPY)SfKx~#eeXaauuT)@X`Nnj^q{<7Y7V{y{DPlO1|vC*7BAV z6vX@aGYA+q@cI71h8W6{I64}C60bhH0e$Xeh2yH~SnWFyGH||iFhlN9c0SA>1(Umc zB7Jg=d_fQi?d3*^qR)XTsXKlktCN!MC}qboL1(Y4=!rlFDymaqZ|PaHITFr-9W-P{Nw6|%>+O!+CH zJAR}>Y+9O%cG6$hhKJ|aSOhKNH-1U|f9}%8hQBS&Y>OIiJkM;?>B^7G6|c`jmJO~k z@!FpoVL`g?i!oax=lxE#=;!n5-L0Ydm$BUg16hq^;((X;BX<#M*9=@JBH$Mk?98fb z2Oas|R-&v}U+k{=A9kO}FWbbrq2*PKV8-`irwuRRNQearTWjFjAW4H6w?M>0!N0AB* zbN5g#tfzm+xw+aImOE0kyNiYxkYI#v<7#uSIM)Cs)3F8tQi>!nQc-*m{}E8kf&d6V zSvq@PJe$RryykjSR7Rkn7;u};jLS`%nBhmisxti%#_WN0;rdhK3m4QGModmOWcLP% z?u-ebLwoE6$JiEl?I8la*^B>^G-kH}7Mc)wbpIfvTsV>Wr!VA41n&cQwJ4AQk*`4Y zQ~+!WP!h)gdZfd^V4H+SoDrK>t?L-bh&_FM&uxDw5=D123IZ%@e;ou2GCip`Jy4|1 zsLR~YaH*7p&iiJbrCP!<>^K*Gv{b%R>!?6N!`1Y-=O7I?blv~W+nGwCf{qxIB?WQL zww@Q+)kj@+aiMp+ys9Exilp2In#Zy{WzAIVk+xWio+a_L8W*xso5}5SXyc^%UHqy3qr+_5u=e6qY0WM ziaEfefPs)%}D!u<^h) zpwmWX;t8lRRrQUK*7rsDT}X?wNCrA;5Okjcr^4|hia!S-RbOuR@OVA4i+QOTm>x(N z(R!wT)mm49YCRpEUp~cNWf{L(cq<+W<#aVeLYsmT``|O z@SKpZa~iWi410_YnLqN2b6Rv{I&?(D08pyqez;ngAI_-W&hnVj*?ywqZl#~ zD!<0e`gl^tG#JwU#?ofli;eybT&4$&hf@mu3V)+B)ge;1&Y7!l&P*x-D^y+<>i8O} zlZ6Lo{XVx_x@E)owbJuJAgYe=#rXjV@}YynAtqwrQN5MH%AQZor#o(wX^*ib6s^0a&#rV@53Gc$U90|O$7MaQaMJ+MiSOLU#zSzMEul$f}h zOK{jiQySNmTBrWl?XNRv8L;7<{M#y&_yUnco`AWELTspWsV9)lq|yvR!$uWnC&j|V z#9W18a3BUi?pV~yHSP@5;*;)dy0*%ZM!bkxeEse$M9CQlLB9i*@@(#m(}w7 z{UD9EkT!!9CRTKJkhh>QI#kTf846{n`yMKD*t}T`lW+l>l^;AlM$vZuvoIXUfi#Df zZC7&l=Yy0#lY9=vb)C>7#1L5KWCJHGF~Oc8>tI)GfxA8JT%wncu?shfAcqk z`XolRt!jk`tRm>~zreGQ@F}K_+Ttuu1p8^ca;a8Xpa{FX^G6Sat*=|zgJ~xMlXG*} z()gB{npl1SloOj0*l>t?b$_l6&nu-;#_$J^=Ia!BEME)1wR>B%P0Ynf26F-FFLWlu$3`=yX-s%umb#3j7fgf&E zArlii4HweihOjspi3HL}tb%ZtYP|wWup6iB1ulJO&is{rZP*2L#?Et*{f!6^hD1P- zvyPGCV)ZR@Dnx9D?x1&fA1o5Qp=ELGdbzR&d`rxS_rB8A1sMrr)5|z$zYOQ0Ap}7o zH!3r<=|vOGl8xajMiVmcILSniSL>gN1VAAZ?udyeAx)9 zNJxcC6hR7#UfLkPr~dIKIopYdz6+shIwD3g(1!o{PXtnVf~9{F0ZZk0GF13K1zw52 zk6`n0F1Hza6ycog&m=|~PS3`M6&YDm^u9Tf%_mQl*o!6<$*KxzNi*~<31Up+!ixq@ zC9G=$+RdqVeH(V4xjJe-*oaU~r+#iDy!N@hF`xy>lTR{he`mN(-Z-8;t3?USjg)au1HYfJ=0@es&`v97 z%?psWUc0}mz=mauXMDc7=;j52&toiQj|C3(AJZ$91z6s-p3`l*q5N1}^d*{}cE4!Z z$0+-5l&g#)8ev9g9o@f+dhhW`WWLok1U!dflt z&a8WB(YNsGmiB(Ya}L_BmTN8H*h?PHX=o5$;<;M*!wT%aYZ}{Tp*?t-?xc68{OFmc z%PZorw`CUx7~q@egs{*Pn@HCl-cPVWI??v(>=6?wj@F@C9!LNmB!V1U0qjHs{;To; z!v(>04eY=)_;1SS^z)(pUD9Kvg^Mn5eNVl@IN{P@c^a>|7#X0cMd;5qVV%U zkQCwX_ufgrmoE#LRWEKT{y27zzd4&b|HKe0wvdz=jS?2RG;}`b)hgzUIiqK-^ zwQ-9Xv_Z_!00-ev3K>Rm_VQ+p_CQpARvx&#I{>+8XCb4&TFX8oYQWC5f zm_{do_O>S~v|k_!WbFpp0f33_Jqe)ca($9|OT#Ye8iEdVvKZk3MKg>jk~UwOc708J zBU(zk@q3{!S%HRW+^j8j^9lGYOO#khAZ{u*U6KKQJe$1x@QE??J1s8C+Qx5EHV?lJ=6O4FtW|CTS!y1E z<-3hOGa^6{tw>{tUG?)*s)%4|)S}Wr@YyfHt_q88^P}aT7=!CI2XpM4dX>mG7YBuu z038B)NN0fUSV3=hox?0Dv|BWTfG&l}&;Gg`fJh(QYuPc^;Kp;cdFg)zZ>#dntbc#@ z7TO|U*Q;cDV+_6z%*`pfA^S(zTt1C_dklLs8b@?a7eE&rc*h$<{9c5rL9HC=&-0sAxztbBKYW@g7 zg|vhfw`EQ}x8k7E*f1C8@2yh>70C>0R9WV?7j0k|o?sgcem5@?kxclR+AZ~A)r8ES z6T@$sJT9G2u!`p41@?F)Zt&YvHj#8Edd$tp@*!_@ZP@NDBVm_z9p_I-3Vi*qNxsg+ zWZ?m_iij44NMwebcT^&TK+#rVO{Y21sY2GSp^$Mp2j|tLnviiz#`UeJaf{LD3n4hz z(_8p{Kh3=?Y^6Km*SHG!q3NKB7Fv|YKRF|4`6#<6T5no!c+N&?&2E!Nrt*B$v>$~^ zv>Ta3HwG(Qt(P94FOLrE&PWfE!Nh1bB7~5jVG^OA@vxFnP=5#{OXCI{rw@yG%E-zh z0linR?wPu4vPw#D4%*-n(EjfbxO{i9sAyo2#@yI-g$8@9k| zodOSmUr{uS`%nVy>olyF%Y=Df(hFGW&Opl@3DtZ8CYYzC=D9(;u*nDjxgli?Z9JiG zKI2yf0TDeDTeP8WLYlE*4TWMdYaC)D$zlH{JBk`BNA=IA=Z z9dw~3Mr+qZ)(L<5Q=rDVS;(Mk>RW(8St9Q0D$)Y8lvCF-?Ld46SRafSlkVJ%YYMj? z@tg&Fqrp$Dgz+eUJ267WCv;txI@n>z^uXVp=zyh-rAWm(^NG%}iq#dtfHa-2Pg6SL zq8GcC-3nAvxiYa{QO5<+*+^b|G+1g<6Bo}PYx3)FD~B#__!l2Sq|01;r`dQOkG>I0SDs1qC<3=-KP{4Nw$6cs{b&Jhqa*~lt6bsOt9DWkr-Rym$ zY4|#;;8oHGS?Td-{N{hYY6Gyb5L{^&GlY)pEMn~5!a^eh11#WmtFN&0#r*Q|T0c=# zW?wVEElS8dbu@}JKD5iCQ)Y|5{$q`P zJ(Vg;17`N#L0)lftpItX0_3C%qi2ykoJz==pO`?E#)r<06mL>srwHkcAxp7V!RG@Z zr||7J2LQInaVe~%cUzIl{D)dAXXvEj!-~MSr%OCT-9?)$ohLlVvILuaqPz!f28V9m zVm2=f9OAoYO?y5_@Da6xnoMu(Us=O-dXLcZ=wQP%_K;8<3MiN5<{wB*oY~EFZ$g=3 z@Y|{vme%k0Xa0~NCD_s#paO3;%qRLuMyH}P)X&l(J5kxG?B)F@b9i)H(MXn2U;oa_ zTRTM7cyf4ZDfGoCZK8!r!^o({LtAPKN9BI7?gaCcVp<~@tYGi;h6Au=hrp>@PBYaQ zkpByP`;)km4xp+s-=4e88(H2!Iv^(9WjT4w@@)GLlpe>J`PU-9SA;f7{M%@O)!$8v z2O-8~iefanla-vI-7655t%DX(oFB^|Sm~z53c$MP+94`w_l?A#?NBynh%}0UwDC7c zMfr;_v4d5yIeHb>6uva-tSQjQsvH-i3B%5JeWn|zajpK)v%mMDAZ=;E4n;m%nny#J z9FDTk4#}I`TVzf8m08_7+Fl|$wAhrb*?1Buk%Hpk@62v!iqZ>#Y1g(N<1aK=0CNuy=Fww#L+9pZ-I6 z80^vJWYz~56y71dizpt+KC_P!#e zfC@03l@ze(WV2i2@l3`Ze}(~B?!aElKst2SA1QN!DXOVLf91-+CJX)S$(=VLzI2u@0^06ZKygO;|?H-Z^DOsHO1rD9+s)wdOfv@qw62RH$KTTY+p%R0wv+Q(IY|AUn;T)09h;N=d~d(+b4-pZS+eXUza2jFB_Qcy4~Kt z?CW2ftZCB#J#vBXN34Mo?2c{AR>EV?FP_VEY{+;>2h;BUqz zBfjaY$*-7FTfT4iLJP($2D$%n?jjb3clf_{uYj?WGf>V-cxV6Orucii1~atnV}nRd z0zeU*M@wnrJ{ueG{zRhY)V8@y)Jp=DzMutZfqLAYLC+6`?0(A^7|H9NZ!6OnKXcJ? zFj<`3+t5*#R1^4nsQ4p=XmiuO{rfXd6;Bz2UetJ;%X2JN{bwHg2^R2a0}QFYE>Trf z@XE#W;H9kO6Q#BdRHKkFTGHiXmzuM9EggpOE7>Qt28Wp~pHr=tKU)}Y;AM;Ta{k8+ zRoFOX1!AC6cZFkNXJaNYRa%pGCxzzxl%Md~L$Y_Qodxs)7 z>6X@#S3D(qmjaHLk7^eh6z_LMLH&S7a53%b?JcfuEty0yYY5a1>ne7i(8nv6%Rq=tGFQt>wYAglFtJQD6sVcU;8uamP>;XEU4U^qCTy>J!-#{7K4#5QCiZ>&V< z&f8I|O27{f7WEjolZhKEBYE16vWPL@;I+~n&b`AG{-WBiu4Kc;QGOFgaS2C}$9+!D zkk<-37?-WH!s*-LRshoFb>_ivoZ1Ln;>aT&Px2b%JYS@w-dzTeyEuJt2Sz$o#5n6?nJ<(O*h?&MjDDwL-y*DtYM$d*vZtx!>$ zAw!p85BAB_M}mwvlY_AP!AraH^SYDbZNgNslGM%9g!|XH!v`w(O0|pMjBAvmwd`!A zO+xc9K(9a4d#@ce4b>M>t?8}A#i)NMZe?m%=RRLej(k#{GJHC%ICXI*ZSTkxa3Sx7 zJ>;3iBX!Zl(rw@MBxxKjH+>nMun2DJfEcelRXNU6yo10060_If7(pvB_kss+un;bCd ziq*hqL>Y8+pRH|hN%`uw?tJnwO;!=tY?h^d>c-RAf9)nH+JXsmne*I2Ysc`ksqK_Y zw{N=ElshyTHA)W>22U!8Q1uY>lYygGJQ9r7sns~oK~}{M9egbo{Z&C1Bwn*dis^&n z1gjqUsv4tezMNDwf=@dg5GqgKeO)<`|0e%dPVpVeP+p85nS<WMox=jQiKn@zTl757(uW59kgb07>$(SAX-#h&p5lqy1a zb^Ho;o#RJ6IVRiUTaj?%L22V4jVQbJ8ZI?b6Zo_`F5rJO^O!;S;@w8(`>nGH(F^A> zT|>G!BeDnhGL~R#H^HpU+a$6nEwQ3k{)QFh6!F1iebGBnx?>57-mNIY>Q6TvhCMCs zyaSL-KTgWliR6iiBE=iG7=Le8zJ^O$oslf(RRuFp;r`e;`uhW%t1B96J6Nb|;Q3aD zU!sFWHSJAab&VOjss8@#eT7)lq+cY(gQX>Rh7?Y@!{F@Pnv)^R{R6$X>YZxzmrkxs zD_%=cxuoJhg3i`Z;i5sO60Mx>K5kyzj7&@fJGdfeImM{J$s4Wa5xx6CfqU_sB~ku^iQ;-{Y`rOJ|!c zddvz+5D2f~BDHJENtA{mU~=T(*sR_XHLH!5Y-@J=4cIJRmsRi_vAn25&I>rGJ)>ek z$f{R$y+`Q1a)Qq3n|G?Q342lI837=>KrdcaUl3a&2o5$P z1FLY!hZ03^^rV_6g&iH$*R@7^{^%_-l0>rV46+68Z@+LX)cn681M9GUuvk%=l;5Kn z4+66FAR4NR+wZmGuix@LkZHv2+K@|;6<|-i??)tXFb_{0f97?xIVI^1;)^q5OXQ0)N($SuA4TWLFb>qtd@6b) zx9B)7yQ6*!BSt@x2fe&HXHcZj7r420>^_cdbtOD~S#Hsd8zJsP{xH!;KIh!KQx!-r z3seKfws!Aj)dOvb6qmk_Ve*{snk5Uk5I8fu7EEGLKim<3 zUI1Yby@$U;;4tLz44#AUU$eGP>K(6r1!gwcub$An`sAf5B^zWQq4Rn(kn^QR3kE$s z8;EW%fEM*C6W|v*aF1yadf|uovvW{hDu@RC-YCnGRraF&Bxs%KjUFvmoGzYZP#2=O)GO0{IQM3eb%!*U+xK-l zLr)ssZeC$C1H@=vL5I#A0S5<%)UAnU)u)?N#a|b*r$>CG`cXmH^8tAu>u|LJ=sccM z-MUG?1h7>*GiH9%VoAKQd$VRWu(5d2Kajrib2_K_BoI{`7%jP)Y`ii8w~2ZLV0X&k zbWG`tT0f>x+||K;GHHwz1mh+T{L>eh`425lQ3vb3x3)R_CxH&nq}H{wh?p7 z8;rQr>%Kr3W|>oe!_=j3o&2!wwq{W5JuDU`hc$@ZN6Nry88Yd zgiG+1n=*w98i6wxZW1aI_lwkKe&AfiH0$hx)E4yxbD5?1R_o>)Yb0d?>PN^(m@H)C zr?1>)_VdVE_mKX_$UjaGku&YX)A0DqPoE$BOpF7TzJtkdx|b+{fZk*kL$Df>YM#aX2w7wS z_S35{aMBc-oK=0PQ>JjK7cuarYf@|efls+Jh|b1baCQe#;|P+#%@iPDO($&<>U)^< z+hmdkNWRs7hq17qU%wX}2(Cf6G<54*@j>w^cZQNd=~glFA{mHre%a9~BN^%RuSl+{ z{IX*q9*kN@h=T_u-`+qrYhz%?ZwuP?uHF2m$(VB9$2$tdGnWeVigTtYgp}OMp_??n zAKJ(wAUOd|Qw`Rq3iYxFiZ#dw3%2wBp80rY|5lBEa_5k>C5G@= z=(^v*H!3Kt=d%R1dlb4Yxl5_rnmZIbobMjJjum&Qbu76w@=hD?jbwT^-O(>lnrm@oc7!TE)8t>_^fFf^S#P;mHqz{o&j zp>mM|JdQI-#N6OO!J9o`{ALXWD`iz+hHDae#KzE3>I!varCS9atrppU2n>{SU$DkW zb3_`|)QzilL!Q=074x;^(t`Tw|Ee$V0@Y4``Q76^uwO3Lx?_V9UAH7lMVrAfsI7{< z@;Tf=C#`qTt7gc&*S{P56PvlTjJ>EV67rSE_9ACB z-w9s}pxOcqXsK4IjY>loB&|1eTnNzp2OeqDj{yvFZ6T2bMW=0rt~)sF>o)fiK{_Np z4i|EG_}AcDh;0-|aN?mRp(8*-T1vWfov3O7N<~mRRxUy*FJN?CCM~F_Yc%M}i*Wu*KyPdm~KaIaT zrfK8MCez*ag%CmvZp2i8diX6`@=Kg6Hn6U-k#1mJVBOI`zeI`nq2Xk`tY zJVbfubuH%jt&)l;qks5&JTvPFCTEQ2SlvObboLW?@~3e2i__5hsfr;1NS`oC^SBFe zx{lBp407h|^G4WB{q7|kuH|HBI63jJKCSC|`$Jg`zU+Njo4^D%*KfY<`&E0ZwID%u z)bDsGzq=43^@dyl*6-b-SfWQ;q+mGu@bEG zR%%Y10Bqg5ReyWd@vQOLx^=4t;KD_vxALL;?m`GPh7^E$_*tz30l0ACKAOLBuyEl% zqs?kHD+@sY8o!MH)I$&k!Y}c-LgVdL#@np`+zfW!)}}(Rqt$f!+`j>^*{ZNxenu$N z$rH0n@VE=eNUz0ay8ys{nsyTGXjNJTm6Vhu{r^^1SAQ!Fol0+|mPQ&DEC4hgXl8NE zVgMG`ET;KDv(Z;VPzW(pg9e};e$iOWXe%!-2Vn9ep`?9)Xe_2Q1lNCD%leONp|^|A zs!l^r-awl|de{NvXE@mP-gdUU`!2iQ+fIIljO8YB})i!d~SD-Zf)~;QvIrdz{Zntat=bx+pcv~o@N~O0_bK#%0Z>!Aobp|H z0LGJQc$xIaRrnP{lNg zii(U+sA3uo4Gqf13=#yOhn}Q%y$aOn$Mya~2=PsZ6o7j5*VWydbQx5y03m+)v#Yx| zsegYeC5GCZ?cYy2mbjnl@YCs`7U}C_Z_OJ?$M)8|L8PxQshixS0*nZg$fWipHqVo-yYZHcow>woud(ISy}xLxZA(EOEy$=Lw_^mY}qK$Dow z@q2)+K0aIWw|Etpl@p%;b02g?2g2PtcB~P6iS4SmvT`)DDIJU1OhN8<2#5cU&9;au z?bpf7%*2(Iqp80C7YGE%%*-_QpE_eER0KsuMartcHEY(GSQFo_@>XeSq$M3sBY%w^ zdL;CO5W{j$>i`ogK-Ijp|IqL}8sF&;yE!}O#J3Z|&%0@ll6yb;B6x_0T~{>5joz@a zeW!k@*4ElWOsizf*et@4Ut_Z^A{>ceu~^8?@zB=VqH1UW^6IYP_xp|gr_Pwk-?RkB zo{LJy)#;OA0HQ>bex{Ko_x*$r!+&y5H}2vUV5&}K5JR2e+45gyr*NYu%#EHf&n+lt z*6i8jYpkKwp2w8TSb=-)Mh)=0{w*@Pe|jXVk9X{Mz04 z+yUHfH@-5s%zon@pxf=Hsi{fX_%IN7gS81E#9;0z0Pkl7XeddT=%KF*)PMC)lu^aw z8i&(n!FS>)z7t22j!nxNPiHu4Oon+7Iy=?OK-HaJyBlBG#H6-R#WVtefYNdAX71d% zyno>R2Qs!0V&ofk07hdmR#tBTU~=|f09aYQ#h4j-U+9-S8^44pkHxnWgHR!lbDXh# zt2dIg{_kS=mh$l@P29)-`hOzW(tiMyW3xi^W(d!uKXK-41>+Px-Bl02#Cw1`x7)35 z;C}OeKA)DB_+{R?bLVp5!Ub0UVKs*j9|pkV@hCqBA;iPOR9{~|TBZ0h~Gee1B5=l-xbEU42Q} z*txm6n&0oo?RFah=-6{H>GEe@-8GifZKA5GO38UtdMmXtjKN0yGIN-)u?@&Xm=Vb9 z^*-oR5Tn?z>jkTI;E6C@-Myrbvm3`$EPqI(GTesZe!S^nFqba8U;=Kd^xCezq;%Z8 zP1o@Mn56KVQM-ck?0=@HqKH5sfUj&K`%kXp2W%P1fP|e8 zA~i M07*qoM6N<$f;~RlhX4Qo delta 3123 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 N002ovPDHLkV1oEg1MUC- From 771410b442d1f112d5dd6cdba722d765a945e606 Mon Sep 17 00:00:00 2001 From: martin509 Date: Sun, 11 Jan 2015 13:57:02 -0500 Subject: [PATCH 11/51] Anomaly sprite redo. Replaces several old sprites for anomalies with better versions. --- icons/obj/xenoarchaeology.dmi | Bin 57033 -> 78758 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/xenoarchaeology.dmi b/icons/obj/xenoarchaeology.dmi index b40ae3db6e3590575950a3f886e59939bf1e47ac..5aacb9923443f5455eeebf8a3db629af7a9d733a 100644 GIT binary patch literal 78758 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 literal 57033 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 z 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 Date: Mon, 12 Jan 2015 09:36:04 +0300 Subject: [PATCH 12/51] Replaces seed vendors with seed storages --- baystation12.dme | 1 + code/modules/hydroponics/seed_storage.dm | 257 +++++++++++++++++++++++ maps/exodus-1.dmm | 8 +- 3 files changed, 262 insertions(+), 4 deletions(-) create mode 100644 code/modules/hydroponics/seed_storage.dm diff --git a/baystation12.dme b/baystation12.dme index f0a68647edb..91678834487 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -925,6 +925,7 @@ #include "code\modules\hydroponics\seed_datums.dm" #include "code\modules\hydroponics\seed_machines.dm" #include "code\modules\hydroponics\seed_mobs.dm" +#include "code\modules\hydroponics\seed_storage.dm" #include "code\modules\hydroponics\seeds.dm" #include "code\modules\hydroponics\vines.dm" #include "code\modules\library\lib_items.dm" diff --git a/code/modules/hydroponics/seed_storage.dm b/code/modules/hydroponics/seed_storage.dm new file mode 100644 index 00000000000..d2f2f6e3564 --- /dev/null +++ b/code/modules/hydroponics/seed_storage.dm @@ -0,0 +1,257 @@ +/datum/seed_pile + var/name + var/amount + var/datum/seed/seed_type // Keeps track of what our seed is + var/list/obj/item/seeds/seeds = list() // Tracks actual objects contained in the pile + var/ID + +/datum/seed_pile/New(var/obj/item/seeds/O, var/ID) + name = O.name + amount = 1 + seed_type = O.seed + seeds += O + src.ID = ID + +/datum/seed_pile/proc/matches(var/obj/item/seeds/O) + if (O.seed == seed_type) + return 1 + return 0 + +/obj/machinery/seed_storage + name = "Seed storage" + desc = "It stores, sorts, and dispenses seeds." + icon = 'icons/obj/vending.dmi' + icon_state = "seeds" + density = 1 + anchored = 1 + use_power = 1 + idle_power_usage = 100 + + var/initialized = 0 // Map-placed ones break if seeds are loaded right at the start of the round, so we do it on the first interaction + var/list/datum/seed_pile/piles = list() + var/list/starting_seeds = list() + var/list/scanner = list() // What properties we can view + +/obj/machinery/seed_storage/random // This is mostly for testing, but I guess admins could spawn it + name = "Random seed storage" + scanner = list("stats", "produce", "soil", "temperature", "light", "mutants") + starting_seeds = list(/obj/item/seeds/random = 50) + +/obj/machinery/seed_storage/garden + name = "Garden seed storage" + scanner = list("stats") + starting_seeds = list(/obj/item/seeds/appleseed = 3, /obj/item/seeds/bananaseed = 3, /obj/item/seeds/berryseed = 3, /obj/item/seeds/cabbageseed = 3, /obj/item/seeds/carrotseed = 3, /obj/item/seeds/chantermycelium = 3, /obj/item/seeds/cherryseed = 3, /obj/item/seeds/chiliseed = 3, /obj/item/seeds/cocoapodseed = 3, /obj/item/seeds/cornseed = 3, /obj/item/seeds/eggplantseed = 3, /obj/item/seeds/grapeseed = 3, /obj/item/seeds/grassseed = 3, /obj/item/seeds/lemonseed = 3, /obj/item/seeds/limeseed = 3, /obj/item/seeds/mtearseed = 2, /obj/item/seeds/orangeseed = 3, /obj/item/seeds/peanutseed = 3, /obj/item/seeds/plumpmycelium = 3, /obj/item/seeds/poppyseed = 3, /obj/item/seeds/potatoseed = 3, /obj/item/seeds/pumpkinseed = 3, /obj/item/seeds/riceseed = 3, /obj/item/seeds/soyaseed = 3, /obj/item/seeds/sugarcaneseed = 3, /obj/item/seeds/sunflowerseed = 3, /obj/item/seeds/shandseed = 2, /obj/item/seeds/tomatoseed = 3, /obj/item/seeds/towermycelium = 3, /obj/item/seeds/watermelonseed = 3, /obj/item/seeds/wheatseed = 3, /obj/item/seeds/whitebeetseed = 3) + +/obj/machinery/seed_storage/xenobotany + name = "Xenobotany seed storage" + scanner = list("stats", "produce", "soil", "temperature", "light", "mutants") + starting_seeds = list(/obj/item/seeds/ambrosiavulgarisseed = 3, /obj/item/seeds/appleseed = 3, /obj/item/seeds/amanitamycelium = 2, /obj/item/seeds/bananaseed = 3, /obj/item/seeds/berryseed = 3, /obj/item/seeds/cabbageseed = 3, /obj/item/seeds/carrotseed = 3, /obj/item/seeds/chantermycelium = 3, /obj/item/seeds/cherryseed = 3, /obj/item/seeds/chiliseed = 3, /obj/item/seeds/cocoapodseed = 3, /obj/item/seeds/cornseed = 3, /obj/item/seeds/replicapod = 3, /obj/item/seeds/eggplantseed = 3, /obj/item/seeds/glowshroom = 2, /obj/item/seeds/grapeseed = 3, /obj/item/seeds/grassseed = 3, /obj/item/seeds/lemonseed = 3, /obj/item/seeds/libertymycelium = 2, /obj/item/seeds/limeseed = 3, /obj/item/seeds/mtearseed = 2, /obj/item/seeds/nettleseed = 2, /obj/item/seeds/orangeseed = 3, /obj/item/seeds/peanutseed = 3, /obj/item/seeds/plastiseed = 3, /obj/item/seeds/plumpmycelium = 3, /obj/item/seeds/poppyseed = 3, /obj/item/seeds/potatoseed = 3, /obj/item/seeds/pumpkinseed = 3, /obj/item/seeds/reishimycelium = 2, /obj/item/seeds/riceseed = 3, /obj/item/seeds/soyaseed = 3, /obj/item/seeds/sugarcaneseed = 3, /obj/item/seeds/sunflowerseed = 3, /obj/item/seeds/shandseed = 2, /obj/item/seeds/tomatoseed = 3, /obj/item/seeds/towermycelium = 3, /obj/item/seeds/watermelonseed = 3, /obj/item/seeds/wheatseed = 3, /obj/item/seeds/whitebeetseed = 3) + +/obj/machinery/seed_storage/New() + ..() + +/obj/machinery/seed_storage/attack_hand(mob/user as mob) + user.set_machine(src) + interact(user) + +/obj/machinery/seed_storage/interact(mob/user as mob) + if (..()) + return + + if (!initialized) + for(var/typepath in starting_seeds) + var/amount = starting_seeds[typepath] + if(isnull(amount)) amount = 1 + + for (var/i = 1 to amount) + var/O = new typepath + add(O) + initialized = 1 + + var/dat = "

Seed storage contents

" + if (piles.len == 0) + dat += "No seeds" + else + dat += "" + if ("stats" in scanner) + dat += "" + if ("produce" in scanner) + dat += "" + if ("temperature" in scanner) + dat += "" + if ("light" in scanner) + dat += "" + if ("soil" in scanner) + dat += "" + dat += "" + for (var/datum/seed_pile/S in piles) + var/datum/seed/seed = S.seed_type + dat += "" + dat += "" + if ("stats" in scanner) + dat += "" + if(seed.harvest_repeat) + dat += "" + else + dat += "" + if ("produce" in scanner) + if (seed.products && seed.products.len) + dat += "" + else + dat += "" + if ("temperature" in scanner) + dat += "" + if ("light" in scanner) + dat += "" + if ("soil" in scanner) + if(seed.requires_nutrients) + if(seed.nutrient_consumption < 0.05) + dat += "" + else if(seed.nutrient_consumption > 0.2) + dat += "" + else + dat += "" + else + dat += "" + if(seed.requires_water) + if(seed.water_consumption < 1) + dat += "" + else if(seed.water_consumption > 5) + dat += "" + else + dat += "" + else + dat += "" + + dat += "" + dat += "" + dat += "" + dat += "" + dat += "
NameEYLMPrPtHarvestProduceTempLightNutriWaterNotesAmount
[S.name][seed.endurance][seed.yield][seed.lifespan][seed.maturation][seed.production][seed.potency]MultipleSingleFruit: [seed.products.len]N/A[seed.ideal_heat] K[seed.ideal_light] LLowHighNormNoLowHighNormNo" + if ("mutants" in scanner) + if(seed.mutants && seed.mutants.len) + dat += "SUBSP " + if(seed.immutable == -1) + dat += "MUT " + else if(seed.immutable > 0) + dat += "NOMUT " + switch(seed.carnivorous) + if(1) + dat += "CARN " + if(2) + dat += "CARN " + switch(seed.spread) + if(1) + dat += "VINE " + if(2) + dat += "VINE " + if ("pressure" in scanner) + if(seed.lowkpa_tolerance < 20) + dat += "LP " + if(seed.highkpa_tolerance > 220) + dat += "HP " + if ("temperature" in scanner) + if(seed.heat_tolerance > 30) + dat += "TEMRES " + else if(seed.heat_tolerance < 10) + dat += "TEMSEN " + if ("light" in scanner) + if(seed.light_tolerance > 10) + dat += "LIGRES " + else if(seed.light_tolerance < 3) + dat += "LIGSEN " + if(seed.toxins_tolerance < 3) + dat += "TOXSEN " + else if(seed.toxins_tolerance > 6) + dat += "TOXRES " + if(seed.pest_tolerance < 3) + dat += "PESTSEN " + else if(seed.pest_tolerance > 6) + dat += "PESTRES " + if(seed.weed_tolerance < 3) + dat += "WEEDSEN " + else if(seed.weed_tolerance > 6) + dat += "WEEDRES " + if(seed.parasite) + dat += "PAR " + if ("temperature" in scanner) + if(seed.alter_temp > 0) + dat += "TEMP+ " + if(seed.alter_temp < 0) + dat += "TEMP- " + if(seed.biolum) + dat += "LUM " + if(seed.flowers) + dat += "
[seed.flower_colour ? "FLOW" : "FLOW"]." + dat += "
[S.amount]Vend Purge
" + + user << browse(dat, "window=seedstorage") + onclose(user, "seedstorage") + +/obj/machinery/seed_storage/Topic(var/href, var/list/href_list) + if (..()) + return + var/task = href_list["task"] + var/ID = text2num(href_list["id"]) + + for (var/datum/seed_pile/N in piles) + if (N.ID == ID) + if (task == "vend") + var/obj/O = pick(N.seeds) + if (O) + --N.amount + N.seeds -= O + if (N.amount <= 0 || N.seeds.len <= 0) + piles -= N + del(N) + O.loc = src.loc + else + piles -= N + del(N) + else if (task == "purge") + for (var/obj/O in N.seeds) + del(O) + piles -= N + del(N) + break + updateUsrDialog() + +/obj/machinery/seed_storage/attackby(var/obj/item/O as obj, var/mob/user as mob) + if (istype(O, /obj/item/seeds)) + add(O) + user.visible_message("[user] puts \the [O.name] into \the [src].", "You put \the [O] into \the [src].") + return + else if (istype(O, /obj/item/weapon/storage/bag/plants)) + var/obj/item/weapon/storage/P = O + var/loaded = 0 + for(var/obj/item/seeds/G in P.contents) + ++loaded + add(G) + if (loaded) + user.visible_message("[user] puts the seeds from \the [O.name] into \the [src].", "You put the seeds from \the [O.name] into \the [src].") + else + user << "There are no seeds in \the [O.name]." + return + else if(istype(O, /obj/item/weapon/wrench)) + playsound(loc, 'sound/items/Ratchet.ogg', 50, 1) + anchored = !anchored + user << "You [anchored ? "wrench" : "unwrench"] \the [src]." + +/obj/machinery/seed_storage/proc/add(var/obj/item/seeds/O as obj) + if (istype(O.loc, /mob)) + var/mob/user = O.loc + user.drop_item(O) + else if(istype(O.loc,/obj/item/weapon/storage)) + var/obj/item/weapon/storage/S = O.loc + S.remove_from_storage(O, src) + + O.loc = src + + for (var/datum/seed_pile/N in piles) + if (N.matches(O)) + ++N.amount + N.seeds += (O) + return + + piles += new /datum/seed_pile(O, piles.len) + return diff --git a/maps/exodus-1.dmm b/maps/exodus-1.dmm index a8e83d5c208..7e4b1523683 100644 --- a/maps/exodus-1.dmm +++ b/maps/exodus-1.dmm @@ -1147,7 +1147,7 @@ "awc" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets,/obj/item/weapon/storage/box/donkpockets{pixel_x = -3; pixel_y = -3},/turf/simulated/floor,/area/security/prison) "awd" = (/obj/structure/table,/obj/item/weapon/minihoe,/obj/item/device/analyzer/plant_analyzer,/obj/item/clothing/head/greenbandana,/turf/simulated/floor,/area/security/prison) "awe" = (/obj/machinery/vending/hydronutrients,/turf/simulated/floor,/area/security/prison) -"awf" = (/obj/machinery/vending/hydroseeds,/turf/simulated/floor,/area/security/prison) +"awf" = (/obj/machinery/seed_storage/garden,/turf/simulated/floor,/area/security/prison) "awg" = (/obj/structure/table,/obj/structure/bedsheetbin,/turf/simulated/floor,/area/security/prison) "awh" = (/obj/structure/closet{name = "Prisoner's Locker"},/obj/item/clothing/head/soft/orange,/obj/item/clothing/shoes/sandal,/turf/simulated/floor,/area/security/prison) "awi" = (/obj/machinery/light,/obj/structure/stool/bed,/obj/item/weapon/bedsheet/orange,/turf/simulated/floor,/area/security/prison) @@ -2198,7 +2198,7 @@ "aQn" = (/turf/simulated/floor,/area/hydroponics) "aQo" = (/obj/structure/disposalpipe/segment,/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "green"; dir = 4},/area/hydroponics) "aQp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hydroponics) -"aQq" = (/obj/machinery/vending/hydroseeds,/turf/simulated/floor{icon_state = "green"; dir = 8},/area/hydroponics) +"aQq" = (/obj/machinery/seed_storage/garden,/turf/simulated/floor{icon_state = "green"; dir = 8},/area/hydroponics) "aQr" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/hydroponics) "aQs" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/hydroponics) "aQt" = (/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor{icon_state = "green"; dir = 4},/area/hydroponics) @@ -2262,7 +2262,7 @@ "aRz" = (/obj/machinery/biogenerator,/turf/simulated/floor,/area/hydroponics) "aRA" = (/obj/machinery/seed_extractor,/turf/simulated/floor,/area/hydroponics) "aRB" = (/obj/machinery/vending/hydronutrients,/turf/simulated/floor,/area/hydroponics) -"aRC" = (/obj/machinery/vending/hydroseeds,/turf/simulated/floor,/area/hydroponics) +"aRC" = (/obj/machinery/seed_storage/garden,/turf/simulated/floor,/area/hydroponics) "aRD" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor{icon_state = "green"; dir = 4},/area/hydroponics) "aRE" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hydroponics) "aRF" = (/obj/machinery/vending/hydronutrients,/turf/simulated/floor{icon_state = "green"; dir = 8},/area/hydroponics) @@ -5675,7 +5675,7 @@ "cfg" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/disposalpipe/trunk,/obj/machinery/disposal,/obj/structure/sign/deathsposal{pixel_x = 0; pixel_y = 32},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora) "cfh" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/hydroponics{closed_system = 1; name = "isolation tray"},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology/xenoflora) "cfi" = (/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/machinery/light_switch{pixel_x = -6; pixel_y = 26},/obj/machinery/atmospherics/portables_connector,/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora) -"cfj" = (/obj/machinery/vending/hydroseeds,/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora) +"cfj" = (/obj/machinery/seed_storage/xenobotany,/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora) "cfk" = (/obj/machinery/vending/hydronutrients,/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora) "cfl" = (/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/structure/table,/obj/item/weapon/storage/box/botanydisk,/turf/simulated/floor{dir = 8; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora) "cfm" = (/obj/machinery/botany/editor,/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology/xenoflora) From 31768af22f8555eb4a273c2657f148047bb6667a Mon Sep 17 00:00:00 2001 From: Kelenius Date: Mon, 12 Jan 2015 09:43:18 +0300 Subject: [PATCH 13/51] Removes the now useless New() --- code/modules/hydroponics/seed_storage.dm | 3 --- 1 file changed, 3 deletions(-) diff --git a/code/modules/hydroponics/seed_storage.dm b/code/modules/hydroponics/seed_storage.dm index d2f2f6e3564..4abb4abe05a 100644 --- a/code/modules/hydroponics/seed_storage.dm +++ b/code/modules/hydroponics/seed_storage.dm @@ -47,9 +47,6 @@ scanner = list("stats", "produce", "soil", "temperature", "light", "mutants") starting_seeds = list(/obj/item/seeds/ambrosiavulgarisseed = 3, /obj/item/seeds/appleseed = 3, /obj/item/seeds/amanitamycelium = 2, /obj/item/seeds/bananaseed = 3, /obj/item/seeds/berryseed = 3, /obj/item/seeds/cabbageseed = 3, /obj/item/seeds/carrotseed = 3, /obj/item/seeds/chantermycelium = 3, /obj/item/seeds/cherryseed = 3, /obj/item/seeds/chiliseed = 3, /obj/item/seeds/cocoapodseed = 3, /obj/item/seeds/cornseed = 3, /obj/item/seeds/replicapod = 3, /obj/item/seeds/eggplantseed = 3, /obj/item/seeds/glowshroom = 2, /obj/item/seeds/grapeseed = 3, /obj/item/seeds/grassseed = 3, /obj/item/seeds/lemonseed = 3, /obj/item/seeds/libertymycelium = 2, /obj/item/seeds/limeseed = 3, /obj/item/seeds/mtearseed = 2, /obj/item/seeds/nettleseed = 2, /obj/item/seeds/orangeseed = 3, /obj/item/seeds/peanutseed = 3, /obj/item/seeds/plastiseed = 3, /obj/item/seeds/plumpmycelium = 3, /obj/item/seeds/poppyseed = 3, /obj/item/seeds/potatoseed = 3, /obj/item/seeds/pumpkinseed = 3, /obj/item/seeds/reishimycelium = 2, /obj/item/seeds/riceseed = 3, /obj/item/seeds/soyaseed = 3, /obj/item/seeds/sugarcaneseed = 3, /obj/item/seeds/sunflowerseed = 3, /obj/item/seeds/shandseed = 2, /obj/item/seeds/tomatoseed = 3, /obj/item/seeds/towermycelium = 3, /obj/item/seeds/watermelonseed = 3, /obj/item/seeds/wheatseed = 3, /obj/item/seeds/whitebeetseed = 3) -/obj/machinery/seed_storage/New() - ..() - /obj/machinery/seed_storage/attack_hand(mob/user as mob) user.set_machine(src) interact(user) From 537b78fc80d9b89db5fc39332044c94cc9062e01 Mon Sep 17 00:00:00 2001 From: Mloc-Argent Date: Mon, 12 Jan 2015 21:13:24 +0000 Subject: [PATCH 14/51] refactor buckling to be more generic Buckling procs and vars have been moved down to /obj. Behaviour is mostly the same, but you can buckle cuffed people to pipes and they will automatically unbuckle if the cuffs are removed. Signed-off-by: Mloc-Argent --- baystation12.dme | 1 + code/ATMOSPHERICS/pipes.dm | 4 + code/datums/spells/area_teleport.dm | 2 +- code/datums/spells/ethereal_jaunt.dm | 2 +- code/game/machinery/machinery.dm | 2 +- code/game/objects/buckling.dm | 86 +++++++++++++++++++ .../items/weapons/implants/implantfreedom.dm | 2 + code/game/objects/items/weapons/scrolls.dm | 2 +- code/game/objects/items/weapons/tools.dm | 4 +- code/game/objects/structures.dm | 10 +-- code/game/objects/structures/janicart.dm | 30 ++----- .../stool_bed_chair_nest/alien_nests.dm | 11 ++- .../structures/stool_bed_chair_nest/bed.dm | 48 +++++------ .../structures/stool_bed_chair_nest/chairs.dm | 18 ++-- .../structures/stool_bed_chair_nest/stools.dm | 4 +- .../stool_bed_chair_nest/wheelchair.dm | 11 ++- code/modules/hydroponics/vines.dm | 37 +------- code/modules/mob/living/carbon/carbon.dm | 2 + .../mob/living/carbon/human/examine.dm | 4 + .../mob/living/carbon/human/inventory.dm | 2 + code/modules/mob/living/living.dm | 6 +- code/modules/mob/mob.dm | 12 +-- .../effects/unknown_effect_teleport.dm | 6 +- code/modules/vehicles/vehicle.dm | 14 ++- 24 files changed, 179 insertions(+), 141 deletions(-) create mode 100644 code/game/objects/buckling.dm diff --git a/baystation12.dme b/baystation12.dme index f0a68647edb..0dd67ca1175 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -456,6 +456,7 @@ #include "code\game\mecha\working\hoverpod.dm" #include "code\game\mecha\working\ripley.dm" #include "code\game\mecha\working\working.dm" +#include "code\game\objects\buckling.dm" #include "code\game\objects\empulse.dm" #include "code\game\objects\explosion.dm" #include "code\game\objects\explosion_recursive.dm" diff --git a/code/ATMOSPHERICS/pipes.dm b/code/ATMOSPHERICS/pipes.dm index 16a0a6bcd59..be63292d831 100644 --- a/code/ATMOSPHERICS/pipes.dm +++ b/code/ATMOSPHERICS/pipes.dm @@ -12,6 +12,10 @@ var/alert_pressure = 80*ONE_ATMOSPHERE //minimum pressure before check_pressure(...) should be called + can_buckle = 1 + buckle_require_restraints = 1 + buckle_lying = -1 + /obj/machinery/atmospherics/pipe/drain_power() return -1 diff --git a/code/datums/spells/area_teleport.dm b/code/datums/spells/area_teleport.dm index b2ced9fa0d5..f30d55455b7 100644 --- a/code/datums/spells/area_teleport.dm +++ b/code/datums/spells/area_teleport.dm @@ -47,7 +47,7 @@ return if(target && target.buckled) - target.buckled.unbuckle() + target.buckled.unbuckle_mob() var/list/tempL = L var/attempt = null diff --git a/code/datums/spells/ethereal_jaunt.dm b/code/datums/spells/ethereal_jaunt.dm index 1b1646ffa43..b5744dffc4b 100644 --- a/code/datums/spells/ethereal_jaunt.dm +++ b/code/datums/spells/ethereal_jaunt.dm @@ -20,7 +20,7 @@ if(target.buckled) var/obj/structure/stool/bed/buckled_to = target.buckled. - buckled_to.unbuckle() + buckled_to.unbuckle_mob() var/mobloc = get_turf(target.loc) var/obj/effect/dummy/spell_jaunt/holder = new /obj/effect/dummy/spell_jaunt( mobloc ) diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 1a3cce2cf9d..bfef2003069 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -278,7 +278,7 @@ Class Procs: src.add_fingerprint(user) - return 0 + return ..() /obj/machinery/proc/RefreshParts() //Placeholder proc for machines that are built using frames. return diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm new file mode 100644 index 00000000000..f0f5a53aeaf --- /dev/null +++ b/code/game/objects/buckling.dm @@ -0,0 +1,86 @@ +/obj + var/can_buckle = 0 + var/buckle_movable = 0 + var/buckle_lying = -1 //bed-like behavior, forces mob.lying = buckle_lying if != -1 + var/buckle_require_restraints = 0 //require people to be handcuffed before being able to buckle. eg: pipes + var/mob/living/buckled_mob = null + +/obj/attack_hand(mob/living/user) + . = ..() + if(can_buckle && buckled_mob) + user_unbuckle_mob(user) + +/obj/MouseDrop_T(mob/living/M, mob/living/user) + . = ..() + if(can_buckle && istype(M)) + user_buckle_mob(M, user) + +/obj/Del() + unbuckle_mob() + return ..() + +/obj/proc/buckle_mob(mob/living/M) + if(!can_buckle || !istype(M) || (M.loc != loc) || M.buckled || M.pinned.len || (buckle_require_restraints && !M.restrained())) + return 0 + + M.buckled = src + M.set_dir(dir) + M.update_canmove() + buckled_mob = M + post_buckle_mob(M) + return 1 + +/obj/proc/unbuckle_mob() + if(buckled_mob && buckled_mob.buckled == src) + . = buckled_mob + buckled_mob.buckled = null + buckled_mob.anchored = initial(buckled_mob.anchored) + buckled_mob.update_canmove() + buckled_mob = null + + post_buckle_mob(.) + +/obj/proc/post_buckle_mob(mob/living/M) + return + +/obj/proc/user_buckle_mob(mob/living/M, mob/user) + if(!ticker) + user << "You can't buckle anyone in before the game starts." + if(!user.Adjacent(M) || user.restrained() || user.lying || user.stat || istype(user, /mob/living/silicon/pai)) + return + + if(istype(M, /mob/living/carbon/slime)) + user << "The [M] is too squishy to buckle in." + return + + add_fingerprint(user) + unbuckle_mob() + + if(buckle_mob(M)) + if(M == user) + M.visible_message(\ + "[M.name] buckles themselves to [src].",\ + "You buckle yourself to [src].",\ + "You hear metal clanking.") + else + M.visible_message(\ + "[M.name] is buckled to [src] by [user.name]!",\ + "You are buckled to [src] by [user.name]!",\ + "You hear metal clanking.") + +/obj/proc/user_unbuckle_mob(mob/user) + var/mob/living/M = unbuckle_mob() + world << 3 + if(M) + if(M != user) + M.visible_message(\ + "[M.name] was unbuckled by [user.name]!",\ + "You were unbuckled from [src] by [user.name].",\ + "You hear metal clanking.") + else + M.visible_message(\ + "[M.name] unbuckled themselves!",\ + "You unbuckle yourself from [src].",\ + "You hear metal clanking.") + add_fingerprint(user) + return M diff --git a/code/game/objects/items/weapons/implants/implantfreedom.dm b/code/game/objects/items/weapons/implants/implantfreedom.dm index d7be3686657..d32ae9d8baa 100644 --- a/code/game/objects/items/weapons/implants/implantfreedom.dm +++ b/code/game/objects/items/weapons/implants/implantfreedom.dm @@ -23,6 +23,8 @@ if (source.handcuffed) var/obj/item/weapon/W = source.handcuffed source.handcuffed = null + if(source.buckled && source.buckled.buckle_require_restraints) + source.buckled.unbuckle_mob() source.update_inv_handcuffed() if (source.client) source.client.screen -= W diff --git a/code/game/objects/items/weapons/scrolls.dm b/code/game/objects/items/weapons/scrolls.dm index e9aa6f3ca67..4a0b80d9fd0 100644 --- a/code/game/objects/items/weapons/scrolls.dm +++ b/code/game/objects/items/weapons/scrolls.dm @@ -70,7 +70,7 @@ return if(user && user.buckled) - user.buckled.unbuckle() + user.buckled.unbuckle_mob() var/list/tempL = L var/attempt = null diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index 62793f0b2cd..6a3e839a0ed 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -119,6 +119,8 @@ "You cut \the [C]'s restraints with \the [src]!",\ "You hear cable being cut.") C.handcuffed = null + if(C.buckled && C.buckled.buckle_require_restraints) + C.buckled.unbuckle_mob() C.update_inv_handcuffed() return else @@ -531,4 +533,4 @@ if(!resolved && tool && target) tool.afterattack(target,user,1) if(tool) - tool.loc = src*/ + tool.loc = src*/ diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index d105caae00a..a23bb65cf87 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -20,7 +20,7 @@ var/mob/living/carbon/human/H = user if(H.species.can_shred(user)) attack_generic(user,1,"slices") - return + return ..() /obj/structure/blob_act() if(prob(50)) @@ -67,10 +67,10 @@ /obj/structure/MouseDrop_T(mob/target, mob/user) var/mob/living/H = user - if(!istype(H) || target != user) // No making other people climb onto tables. - return - - do_climb(target) + if(istype(H) && can_climb(H) && target == user) + do_climb(target) + else + return ..() /obj/structure/proc/can_climb(var/mob/living/user) if (!can_touch(user) || !climbable) diff --git a/code/game/objects/structures/janicart.dm b/code/game/objects/structures/janicart.dm index 0b542dd2bb2..836b35ca028 100644 --- a/code/game/objects/structures/janicart.dm +++ b/code/game/objects/structures/janicart.dm @@ -211,7 +211,7 @@ /obj/structure/stool/bed/chair/janicart/relaymove(mob/user, direction) if(user.stat || user.stunned || user.weakened || user.paralysis) - unbuckle() + unbuckle_mob() if(istype(user.l_hand, /obj/item/key) || istype(user.r_hand, /obj/item/key)) step(src, direction) update_mob() @@ -226,22 +226,9 @@ buckled_mob.loc = loc -/obj/structure/stool/bed/chair/janicart/buckle_mob(mob/M, mob/user) - if(M != user || !ismob(M) || get_dist(src, user) > 1 || user.restrained() || user.lying || user.stat || M.buckled || istype(user, /mob/living/silicon)) - return - - unbuckle() - - M.visible_message(\ - "[M] climbs onto the [callme]!",\ - "You climb onto the [callme]!") - M.buckled = src - M.loc = loc - M.set_dir(dir) - M.update_canmove() - buckled_mob = M +/obj/structure/stool/bed/chair/janicart/post_buckle_mob(mob/living/M) update_mob() - add_fingerprint(user) + return ..() /obj/structure/stool/bed/chair/janicart/update_layer() @@ -251,11 +238,12 @@ layer = OBJ_LAYER -/obj/structure/stool/bed/chair/janicart/unbuckle() - if(buckled_mob) - buckled_mob.pixel_x = 0 - buckled_mob.pixel_y = 0 - ..() +/obj/structure/stool/bed/chair/janicart/unbuckle_mob() + var/mob/living/M = ..() + if(M) + M.pixel_x = 0 + M.pixel_y = 0 + return M /obj/structure/stool/bed/chair/janicart/set_dir() diff --git a/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm b/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm index e67fea38494..451bfd8b3e8 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm @@ -8,7 +8,7 @@ icon_state = "nest" var/health = 100 -/obj/structure/stool/bed/nest/manual_unbuckle(mob/user as mob) +/obj/structure/stool/bed/nest/user_unbuckle_mob(mob/user as mob) if(buckled_mob) if(buckled_mob.buckled == src) if(buckled_mob != user) @@ -18,7 +18,7 @@ "You hear squelching...") buckled_mob.pixel_y = 0 buckled_mob.old_y = 0 - unbuckle() + unbuckle_mob() else if(world.time <= buckled_mob.last_special+NEST_RESIST_TIME) return @@ -32,16 +32,15 @@ buckled_mob.last_special = world.time buckled_mob.pixel_y = 0 buckled_mob.old_y = 0 - unbuckle() + unbuckle_mob() src.add_fingerprint(user) return -/obj/structure/stool/bed/nest/buckle_mob(mob/M as mob, mob/user as mob) - +/obj/structure/stool/bed/nest/user_buckle_mob(mob/M as mob, mob/user as mob) if ( !ismob(M) || (get_dist(src, user) > 1) || (M.loc != src.loc) || user.restrained() || usr.stat || M.buckled || istype(user, /mob/living/silicon/pai) ) return - unbuckle() + unbuckle_mob() var/mob/living/carbon/xenos = user var/mob/living/carbon/victim = M diff --git a/code/game/objects/structures/stool_bed_chair_nest/bed.dm b/code/game/objects/structures/stool_bed_chair_nest/bed.dm index 8902dbc8ecf..cd8d78c4c64 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm @@ -11,8 +11,10 @@ name = "bed" desc = "This is used to lie in, sleep in or strap on." icon_state = "bed" - var/mob/living/buckled_mob - var/movable = 0 // For mobility checks + can_buckle = 1 + buckle_lying = 1 + //var/mob/living/buckled_mob + //var/movable = 0 // For mobility checks /obj/structure/stool/bed/psych name = "psychiatrists couch" @@ -24,7 +26,7 @@ desc = "This looks similar to contraptions from earth. Could aliens be stealing our technology?" icon_state = "abed" -/obj/structure/stool/bed/Del() +/*/obj/structure/stool/bed/Del() unbuckle() ..() return @@ -80,7 +82,7 @@ /obj/structure/stool/bed/proc/buckle_mob(mob/M as mob, mob/user as mob) if (!ticker) user << "You can't buckle anyone in before the game starts." - if ( !ismob(M) || (get_dist(src, user) > 1) || (M.loc != src.loc) || user.restrained() || user.lying || user.stat || M.buckled || M.pinned.len || istype(user, /mob/living/silicon/pai) ) + if (!ismob(M) || (get_dist(src, user) > 1) || (M.loc != src.loc) || user.restrained() || user.lying || user.stat || M.buckled || M.pinned.len || istype(user, /mob/living/silicon/pai) ) return if (istype(M, /mob/living/carbon/slime)) @@ -106,7 +108,7 @@ src.buckled_mob = M src.add_fingerprint(user) afterbuckle(M) - return + return*/ /* * Roller beds @@ -120,7 +122,7 @@ /obj/structure/stool/bed/roller/attackby(obj/item/weapon/W as obj, mob/user as mob) if(istype(W,/obj/item/roller_holder)) if(buckled_mob) - manual_unbuckle() + user_unbuckle_mob(user) else visible_message("[user] collapses \the [src.name].") new/obj/item/roller(get_turf(src)) @@ -185,29 +187,19 @@ else buckled_mob = null -/obj/structure/stool/bed/roller/buckle_mob(mob/M as mob, mob/user as mob) - if ( !ismob(M) || (get_dist(src, user) > 1) || (M.loc != src.loc) || user.restrained() || user.lying || user.stat || M.buckled || istype(usr, /mob/living/silicon/pai) ) - return - M.pixel_y = 6 - M.old_y = 6 - density = 1 - icon_state = "up" - ..() - return +/obj/structure/stool/bed/roller/post_buckle_mob(mob/living/M as mob) + if(M == buckled_mob) + M.pixel_y = 6 + M.old_y = 6 + density = 1 + icon_state = "up" + else + buckled_mob.pixel_y = 0 + buckled_mob.old_y = 0 + density = 0 + icon_state = "down" -/obj/structure/stool/bed/roller/manual_unbuckle(mob/user as mob) - if(buckled_mob) - if(buckled_mob.buckled == src) //this is probably unneccesary, but it doesn't hurt - buckled_mob.pixel_y = 0 - buckled_mob.old_y = 0 - buckled_mob.anchored = initial(buckled_mob.anchored) - buckled_mob.buckled = null - buckled_mob.update_canmove() - buckled_mob = null - density = 0 - icon_state = "down" - ..() - return + return ..() /obj/structure/stool/bed/roller/MouseDrop(over_object, src_location, over_location) ..() diff --git a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm index 16d84f6aad7..55f3e36398c 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm @@ -2,12 +2,10 @@ name = "chair" desc = "You sit in this. Either by will or force." icon_state = "chair" + buckle_lying = 0 //force people to sit up in chairs when buckled var/propelled = 0 // Check for fire-extinguisher-driven chairs -/obj/structure/stool/MouseDrop(atom/over_object) - return - /obj/structure/stool/bed/chair/New() ..() spawn(3) //sorry. i don't think there's a better way to do this. @@ -68,11 +66,6 @@ src.set_dir(turn(src.dir, 90)) return -/obj/structure/stool/bed/chair/MouseDrop_T(mob/M as mob, mob/user as mob) - if(!istype(M)) return - buckle_mob(M, user) - return - // Chair types /obj/structure/stool/bed/chair/wood/normal icon_state = "wooden_chair" @@ -105,7 +98,7 @@ return ..() -/obj/structure/stool/bed/chair/comfy/afterbuckle() +/obj/structure/stool/bed/chair/comfy/post_buckle_mob() if(buckled_mob) overlays += armrest else @@ -122,7 +115,7 @@ /obj/structure/stool/bed/chair/office anchored = 0 - movable = 1 + buckle_movable = 1 /obj/structure/stool/bed/chair/comfy/black color = rgb(167,164,153) @@ -143,15 +136,14 @@ if (O != occupant) Bump(O) else - unbuckle() + unbuckle_mob() /obj/structure/stool/bed/chair/office/Bump(atom/A) ..() if(!buckled_mob) return if(propelled) - var/mob/living/occupant = buckled_mob - unbuckle() + var/mob/living/occupant = unbuckle_mob() var/def_zone = ran_zone() var/blocked = occupant.run_armor_check(def_zone, "melee") diff --git a/code/game/objects/structures/stool_bed_chair_nest/stools.dm b/code/game/objects/structures/stool_bed_chair_nest/stools.dm index f412467c65e..2db5b8e738c 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/stools.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/stools.dm @@ -35,7 +35,7 @@ return /obj/structure/stool/MouseDrop(atom/over_object) - if (istype(over_object, /mob/living/carbon/human)) + if(istype(over_object, /mob/living/carbon/human) && type == /obj/structure/stool) //i am sorry for this, but the inheritance mess requires it var/mob/living/carbon/human/H = over_object if (H==usr && !H.restrained() && !H.stat && in_range(src, over_object)) var/obj/item/weapon/stool/S = new/obj/item/weapon/stool() @@ -43,6 +43,8 @@ src.loc = S H.put_in_hands(S) H.visible_message("\red [H] grabs [src] from the floor!", "\red You grab [src] from the floor!") + return + return ..() /obj/item/weapon/stool name = "stool" diff --git a/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm b/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm index 59a819b8b92..d07f1a33cb7 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm @@ -3,7 +3,7 @@ desc = "You sit in this. Either by will or force." icon_state = "wheelchair" anchored = 0 - movable = 1 + buckle_movable = 1 var/driving = 0 var/mob/living/pulling = null @@ -93,7 +93,7 @@ if (O != occupant) Bump(O) else - unbuckle() + unbuckle_mob() if (pulling && (get_dist(src, pulling) > 1)) pulling.pulledby = null pulling << "\red You lost your grip!" @@ -102,11 +102,11 @@ if (occupant && (src.loc != occupant.loc)) src.loc = occupant.loc // Failsafe to make sure the wheelchair stays beneath the occupant after driving -/obj/structure/stool/bed/chair/wheelchair/attack_hand(mob/user as mob) +/obj/structure/stool/bed/chair/wheelchair/attack_hand(mob/living/user as mob) if (pulling) MouseDrop(usr) else - manual_unbuckle(user) + user_unbuckle_mob(user) return /obj/structure/stool/bed/chair/wheelchair/MouseDrop(over_object, src_location, over_location) @@ -138,8 +138,7 @@ if(!buckled_mob) return if(propelled || (pulling && (pulling.a_intent == "hurt"))) - var/mob/living/occupant = buckled_mob - unbuckle() + var/mob/living/occupant = unbuckle_mob() if (pulling && (pulling.a_intent == "hurt")) occupant.throw_at(A, 3, 3, pulling) diff --git a/code/modules/hydroponics/vines.dm b/code/modules/hydroponics/vines.dm index b25c03080ed..d5b07d29cc3 100644 --- a/code/modules/hydroponics/vines.dm +++ b/code/modules/hydroponics/vines.dm @@ -20,7 +20,6 @@ // Life vars/ var/energy = 0 var/obj/effect/plant_controller/master = null - var/mob/living/buckled_mob var/datum/seed/seed /obj/effect/plantsegment/New() @@ -56,7 +55,7 @@ var/obj/item/weapon/weldingtool/WT = W if(WT.remove_fuel(0, user)) del src else - manual_unbuckle(user) + user_unbuckle_mob(user) return // Plant-b-gone damage is handled in its entry in chemistry-reagents.dm ..() @@ -71,39 +70,7 @@ update() return - manual_unbuckle(user) - -/obj/effect/plantsegment/proc/unbuckle() - if(buckled_mob) - if(buckled_mob.buckled == src) //this is probably unneccesary, but it doesn't hurt - buckled_mob.buckled = null - buckled_mob.anchored = initial(buckled_mob.anchored) - buckled_mob.update_canmove() - buckled_mob = null - return - -/obj/effect/plantsegment/proc/manual_unbuckle(mob/user as mob) - if(buckled_mob) - if(prob(seed ? min(max(0,100 - seed.potency),100) : 50)) - if(buckled_mob.buckled == src) - if(buckled_mob != user) - buckled_mob.visible_message(\ - "[user.name] frees [buckled_mob.name] from [src].",\ - "[user.name] frees you from [src].",\ - "You hear shredding and ripping.") - else - buckled_mob.visible_message(\ - "[buckled_mob.name] struggles free of [src].",\ - "You untangle [src] from around yourself.",\ - "You hear shredding and ripping.") - unbuckle() - else - var/text = pick("rips","tears","pulls") - user.visible_message(\ - "[user.name] [text] at [src].",\ - "You [text] at [src].",\ - "You hear shredding and ripping.") - return + user_unbuckle_mob(user) /obj/effect/plantsegment/proc/grow() diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index b1170468d87..4431ccdf80f 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -354,6 +354,8 @@ else if (W == handcuffed) handcuffed = null update_inv_handcuffed() + if(buckled && buckled.buckle_require_restraints) + buckled.unbuckle_mob() else if (W == legcuffed) legcuffed = null diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index cac59fc7676..f72ee8136c1 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -131,6 +131,10 @@ else msg += "[t_He] [t_is] \icon[handcuffed] handcuffed!\n" + //buckled + if(buckled) + msg += "[t_He] [t_is] \icon[buckled] buckled to [buckled]!\n" + //belt if(belt) if(belt.blood_DNA) diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index 545fa41c033..673744975c1 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -167,6 +167,8 @@ update_inv_back() else if (W == handcuffed) handcuffed = null + if(buckled && buckled.buckle_require_restraints) + buckled.unbuckle_mob() success = 1 update_inv_handcuffed() else if (W == legcuffed) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index b9f898ab5dc..79537ae833f 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -555,9 +555,9 @@ for(var/mob/O in viewers(C)) O.show_message("\red [usr] manages to unbuckle themself!", 1) C << "\blue You successfully unbuckle yourself." - C.buckled.manual_unbuckle(C) + C.buckled.user_unbuckle_mob(C) else - L.buckled.manual_unbuckle(L) + L.buckled.user_unbuckle_mob(L) //Breaking out of a locker? else if( src.loc && (istype(src.loc, /obj/structure/closet)) ) @@ -657,6 +657,8 @@ CM.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" )) del(CM.handcuffed) CM.handcuffed = null + if(buckled && buckled.buckle_require_restraints) + buckled.unbuckle_mob() CM.update_inv_handcuffed() else var/obj/item/weapon/handcuffs/HC = CM.handcuffed diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 5088f98108e..869f98923ad 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -855,21 +855,17 @@ note dizziness decrements automatically in the mob's Life() proc. canmove = 0 pixel_y = V.mob_offset_y - 5 else - lying = 0 + if(buckled.buckle_lying != -1) lying = buckled.buckle_lying canmove = 1 pixel_y = V.mob_offset_y else if(buckled) - if (!buckled.movable) + if(buckled.buckle_lying != -1) lying = buckled.buckle_lying + if (!buckled.buckle_movable) anchored = 1 canmove = 0 - if(istype(buckled,/obj/structure/stool/bed/chair) ) - lying = 0 - else - lying = 1 else anchored = 0 canmove = 1 - lying = 0 else if( stat || weakened || paralysis || resting || sleeping || (status_flags & FAKEDEATH)) lying = 1 canmove = 0 @@ -905,7 +901,7 @@ note dizziness decrements automatically in the mob's Life() proc. /mob/proc/facedir(var/ndir) if(!canface()) return 0 set_dir(ndir) - if(buckled && buckled.movable) + if(buckled && buckled.buckle_movable) buckled.set_dir(ndir) client.move_delay += movement_delay() return 1 diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_teleport.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_teleport.dm index 8eca5f355d2..b8d1c9a87cd 100644 --- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_teleport.dm +++ b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_teleport.dm @@ -8,7 +8,7 @@ if(prob(100 * weakness)) user << "\red You are suddenly zapped away elsewhere!" if (user.buckled) - user.buckled.unbuckle() + user.buckled.unbuckle_mob() var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread() sparks.set_up(3, 0, get_turf(user)) @@ -28,7 +28,7 @@ if(prob(100 * weakness)) M << "\red You are displaced by a strange force!" if(M.buckled) - M.buckled.unbuckle() + M.buckled.unbuckle_mob() var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread() sparks.set_up(3, 0, get_turf(M)) @@ -47,7 +47,7 @@ if(prob(100 * weakness)) M << "\red You are displaced by a strange force!" if(M.buckled) - M.buckled.unbuckle() + M.buckled.unbuckle_mob() var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread() sparks.set_up(3, 0, get_turf(M)) diff --git a/code/modules/vehicles/vehicle.dm b/code/modules/vehicles/vehicle.dm index df2286f70ef..85e923e08c4 100644 --- a/code/modules/vehicles/vehicle.dm +++ b/code/modules/vehicles/vehicle.dm @@ -13,6 +13,10 @@ animate_movement=1 luminosity = 3 + can_buckle = 1 + buckle_movable = 1 + buckle_lying = 0 + var/attack_log = null var/on = 0 var/health = 0 //do not forget to set health for your vehicle! @@ -25,7 +29,6 @@ var/emagged = 0 var/powered = 0 //set if vehicle is powered and should use fuel when moving var/move_delay = 1 //set this to limit the speed of the vehicle - var/movable = 1 var/obj/item/weapon/cell/cell var/charge_use = 5 //set this to adjust the amount of power the vehicle uses per move @@ -298,9 +301,7 @@ C.layer = layer + 0.1 //so it sits above the vehicle if(ismob(C)) - var/mob/M = C - M.buckled = src - M.update_canmove() + buckle_mob(C) return 1 @@ -343,10 +344,7 @@ load.layer = initial(load.layer) if(ismob(load)) - var/mob/M = load - M.buckled = null - M.anchored = initial(M.anchored) - M.update_canmove() + unbuckle_mob(load) load = null From 70f67409d548eebbca6c8cd01d8bac3d43791a8d Mon Sep 17 00:00:00 2001 From: Mloc-Argent Date: Mon, 12 Jan 2015 21:22:22 +0000 Subject: [PATCH 15/51] HE pipe changes HE pipes will now change colour as they heat up, the procs for calculating this are in type2type.dm. Mobs buckled to HE pipes will be forced to lie down and will share heat with and get burned by the pipe network. Signed-off-by: Mloc-Argent --- code/ATMOSPHERICS/he_pipes.dm | 43 +++++++++++++++++- code/__HELPERS/type2type.dm | 30 +++++++++++- .../living/carbon/human/species/species.dm | 2 +- icons/atmos/heat.dmi | Bin 4949 -> 4827 bytes icons/atmos/junction.dmi | Bin 2847 -> 2799 bytes 5 files changed, 71 insertions(+), 4 deletions(-) diff --git a/code/ATMOSPHERICS/he_pipes.dm b/code/ATMOSPHERICS/he_pipes.dm index c22c483e8c4..f9dbef84cf0 100644 --- a/code/ATMOSPHERICS/he_pipes.dm +++ b/code/ATMOSPHERICS/he_pipes.dm @@ -3,18 +3,23 @@ obj/machinery/atmospherics/pipe/simple/heat_exchanging icon = 'icons/atmos/heat.dmi' icon_state = "intact" pipe_icon = "hepipe" + color = "#404040" level = 2 var/initialize_directions_he var/surface = 2 //surface area in m^2 + var/icon_temperature = T20C //stop small changes in temperature causing an icon refresh minimum_temperature_difference = 20 thermal_conductivity = OPEN_HEAT_TRANSFER_COEFFICIENT + buckle_lying = 1 + // BubbleWrap New() ..() initialize_directions_he = initialize_directions // The auto-detection from /pipe is good enough for a simple HE pipe // BubbleWrap END + color = "#404040" //we don't make use of the fancy overlay system for colours, use this to set the default. initialize() normalize_dir() @@ -48,19 +53,53 @@ obj/machinery/atmospherics/pipe/simple/heat_exchanging if(!parent) ..() else - var/environment_temperature = 0 + var/datum/gas_mixture/pipe_air = return_air() if(istype(loc, /turf/simulated/)) + var/environment_temperature = 0 if(loc:blocks_air) environment_temperature = loc:temperature else var/datum/gas_mixture/environment = loc.return_air() environment_temperature = environment.temperature - var/datum/gas_mixture/pipe_air = return_air() if(abs(environment_temperature-pipe_air.temperature) > minimum_temperature_difference) parent.temperature_interact(loc, volume, thermal_conductivity) else if(istype(loc, /turf/space/)) parent.radiate_heat_to_space(surface, 1) + if(buckled_mob) + var/hc = pipe_air.heat_capacity() + var/avg_temp = (pipe_air.temperature * hc + buckled_mob.bodytemperature * 3500) / (hc + 3500) + pipe_air.temperature = avg_temp + buckled_mob.bodytemperature = avg_temp + + var/heat_limit = 1000 + + var/mob/living/carbon/human/H = buckled_mob + if(istype(H) && H.species) + heat_limit = H.species.heat_level_3 + + if(pipe_air.temperature > heat_limit + 1) + buckled_mob.apply_damage(4 * log(pipe_air.temperature - heat_limit), BURN, "chest", used_weapon = "Excessive Heat") + + //fancy radiation glowing + if(pipe_air.temperature && (icon_temperature > 500 || pipe_air.temperature > 500)) //start glowing at 500K + if(abs(pipe_air.temperature - icon_temperature) > 10) + icon_temperature = pipe_air.temperature + + var/h_r = heat2color_r(icon_temperature) + var/h_g = heat2color_g(icon_temperature) + var/h_b = heat2color_b(icon_temperature) + + if(icon_temperature < 2000) //scale up overlay until 2000K + var/scale = (icon_temperature - 500) / 1500 + h_r = 64 + (h_r - 64)*scale + h_g = 64 + (h_g - 64)*scale + h_b = 64 + (h_b - 64)*scale + + animate(src, color = rgb(h_r, h_g, h_b), time = 20, easing = SINE_EASING) + + + obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction icon = 'icons/atmos/junction.dmi' diff --git a/code/__HELPERS/type2type.dm b/code/__HELPERS/type2type.dm index cfac858e252..87b63f71203 100644 --- a/code/__HELPERS/type2type.dm +++ b/code/__HELPERS/type2type.dm @@ -194,7 +194,7 @@ proc/tg_list2text(list/list, glue=",") . += copytext(text, last_found, found) last_found = found + delim_len while(found) - + /proc/text2numlist(text, delimiter="\n") var/list/num_list = list() for(var/x in text2list(text, delimiter)) @@ -339,3 +339,31 @@ proc/tg_list2text(list/list, glue=",") if("Orange") return 'icons/mob/screen1_Orange.dmi' if("Midnight") return 'icons/mob/screen1_Midnight.dmi' else return 'icons/mob/screen1_White.dmi' + +//adapted from http://www.tannerhelland.com/4435/convert-temperature-rgb-algorithm-code/ +/proc/heat2color(temp) + return rgb(heat2color_r(temp), heat2color_g(temp), heat2color_b(temp)) + +/proc/heat2color_r(temp) + temp /= 100 + if(temp <= 66) + . = 255 + else + . = max(0, min(255, 329.698727446 * (temp - 60) ** -0.1332047592)) + +/proc/heat2color_g(temp) + temp /= 100 + if(temp <= 66) + . = max(0, min(255, 99.4708025861 * log(temp) - 161.1195681661)) + else + . = max(0, min(255, 288.1221695283 * ((temp - 60) ** -0.0755148492))) + +/proc/heat2color_b(temp) + temp /= 100 + if(temp >= 66) + . = 255 + else + if(temp <= 16) + . = 0 + else + . = max(0, min(255, 138.5177312231 * log(temp - 10) - 305.0447927307)) diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 8bdfa8a59d2..edbb204be20 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -56,7 +56,7 @@ var/cold_level_3 = 120 // Cold damage level 3 below this point. var/heat_level_1 = 360 // Heat damage level 1 above this point. var/heat_level_2 = 400 // Heat damage level 2 above this point. - var/heat_level_3 = 1000 // Heat damage level 2 above this point. + var/heat_level_3 = 1000 // Heat damage level 3 above this point. var/synth_temp_gain = 0 // IS_SYNTHETIC species will gain this much temperature every second var/hazard_high_pressure = HAZARD_HIGH_PRESSURE // Dangerously high pressure. var/warning_high_pressure = WARNING_HIGH_PRESSURE // High pressure warning. diff --git a/icons/atmos/heat.dmi b/icons/atmos/heat.dmi index 6d1ed47e7ef869a5947c3f9a26f0d36a4ca1615f..1014c2015b0530e63190c50fd363fdf51ae96873 100644 GIT binary patch literal 4827 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 literal 4949 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 diff --git a/icons/atmos/junction.dmi b/icons/atmos/junction.dmi index 70286bde155d30de04911477296cdde32faa7b1d..892f5823f2e512291e3bb0a5c4a49afb33370d74 100644 GIT binary patch delta 2791 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 delta 2840 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 Date: Wed, 14 Jan 2015 21:25:28 -0500 Subject: [PATCH 16/51] Adds visible emote shortcut to complement the audible emote shortcut. --- code/modules/mob/living/carbon/human/say.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm index 3f89f5b230e..60d18aee6e7 100644 --- a/code/modules/mob/living/carbon/human/say.dm +++ b/code/modules/mob/living/carbon/human/say.dm @@ -25,6 +25,8 @@ if(copytext(message,1,2) == "*") return emote(copytext(message,2)) + else if(copytext(message,1,2) == "^") + return custom_emote(1, copytext(message,2)) if(name != GetVoice()) alt_name = "(as [get_id_name("Unknown")])" From dc23588a81dd39304d76b9e01cd781e3afb4c2c1 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Wed, 14 Jan 2015 23:03:21 -0500 Subject: [PATCH 17/51] Less calls to copytext() --- code/modules/mob/living/carbon/human/say.dm | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm index 60d18aee6e7..cf49b823649 100644 --- a/code/modules/mob/living/carbon/human/say.dm +++ b/code/modules/mob/living/carbon/human/say.dm @@ -23,10 +23,9 @@ var/message_mode = parse_message_mode(message, "headset") - if(copytext(message,1,2) == "*") - return emote(copytext(message,2)) - else if(copytext(message,1,2) == "^") - return custom_emote(1, copytext(message,2)) + switch(copytext(message,1,2)) + if("*") return emote(copytext(message,2)) + if("^") return custom_emote(1, copytext(message,2)) if(name != GetVoice()) alt_name = "(as [get_id_name("Unknown")])" From 95e4f53258e7696fc43ff692956555f8305d9a03 Mon Sep 17 00:00:00 2001 From: Chinsky Date: Thu, 15 Jan 2015 23:47:07 +0300 Subject: [PATCH 18/51] Ported TG's code for burny mobs, by ergoslavi. --- code/game/machinery/cryo.dm | 1 + .../objects/items/weapons/cigs_lighters.dm | 7 ++++ .../objects/items/weapons/extinguisher.dm | 7 +++- code/game/objects/items/weapons/tools.dm | 5 ++- code/game/objects/structures/watercloset.dm | 5 +++ .../mob/living/carbon/human/examine.dm | 5 ++- code/modules/mob/living/carbon/human/life.dm | 25 +++++++++++++ .../mob/living/carbon/human/update_icons.dm | 12 +++++- code/modules/mob/living/carbon/monkey/life.dm | 9 +++++ .../mob/living/carbon/monkey/update_icons.dm | 11 +++++- code/modules/mob/living/living.dm | 15 +++++++- code/modules/mob/living/living_defense.dm | 35 ++++++++++++++++++ code/modules/mob/living/living_defines.dm | 5 ++- code/modules/reagents/Chemistry-Reagents.dm | 25 ++++++++++++- icons/mob/OnFire.dmi | Bin 0 -> 1845 bytes 15 files changed, 158 insertions(+), 9 deletions(-) create mode 100644 icons/mob/OnFire.dmi diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm index 32543822b99..7d10bd9a6fa 100644 --- a/code/game/machinery/cryo.dm +++ b/code/game/machinery/cryo.dm @@ -288,6 +288,7 @@ M.client.eye = src M.stop_pulling() M.loc = src + M.ExtinguishMob() if(M.health > -100 && (M.health < 0 || M.sleeping)) M << "\blue You feel a cold liquid surround you. Your skin starts to freeze up." occupant = M diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm index 4d09a26bcfc..cc05de93a7a 100644 --- a/code/game/objects/items/weapons/cigs_lighters.dm +++ b/code/game/objects/items/weapons/cigs_lighters.dm @@ -31,6 +31,9 @@ CIGARETTE PACKETS ARE IN FANCY.DM attack_verb = list("burnt", "singed") /obj/item/weapon/flame/match/process() + if(isliving(loc)) + var/mob/living/M = loc + M.IgniteMob() var/turf/location = get_turf(src) smoketime-- if(smoketime < 1) @@ -162,6 +165,9 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/clothing/mask/cigarette/process() + if(isliving(loc)) + var/mob/living/M = loc + M.IgniteMob() var/turf/location = get_turf(src) smoketime-- if(smoketime < 1) @@ -444,6 +450,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/weapon/flame/lighter/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob) if(!istype(M, /mob)) return + M.IgniteMob() if(istype(M.wear_mask, /obj/item/clothing/mask/cigarette) && user.zone_sel.selecting == "mouth" && lit) var/obj/item/clothing/mask/cigarette/cig = M.wear_mask diff --git a/code/game/objects/items/weapons/extinguisher.dm b/code/game/objects/items/weapons/extinguisher.dm index f6758e53e67..3ba9e2971cc 100644 --- a/code/game/objects/items/weapons/extinguisher.dm +++ b/code/game/objects/items/weapons/extinguisher.dm @@ -13,7 +13,7 @@ force = 10.0 matter = list("metal" = 90) attack_verb = list("slammed", "whacked", "bashed", "thunked", "battered", "bludgeoned", "thrashed") - + var/spray_particles = 6 var/spray_amount = 2 //units of liquid per particle var/max_water = 120 @@ -124,7 +124,7 @@ R.my_atom = W if(!W || !src) return src.reagents.trans_to(W, spray_amount) - + for(var/b=0, b<5, b++) step_towards(W,my_target) if(!W || !W.reagents) return @@ -135,6 +135,9 @@ if(!W.reagents) break W.reagents.reaction(atm) + if(isliving(atm)) //For extinguishing mobs on fire + var/mob/living/M = atm + M.ExtinguishMob() if(W.loc == my_target) break sleep(2) W.delete() diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index 62793f0b2cd..f2a504bb50e 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -259,6 +259,9 @@ if (src.welding) remove_fuel(1) var/turf/location = get_turf(user) + if(isliving(O)) + var/mob/living/L = O + L.IgniteMob() if (istype(location, /turf)) location.hotspot_expose(700, 50, 1) return @@ -531,4 +534,4 @@ if(!resolved && tool && target) tool.afterattack(target,user,1) if(tool) - tool.loc = src*/ + tool.loc = src*/ diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index 33235ae124b..e77f1e602ca 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -211,6 +211,11 @@ /obj/machinery/shower/proc/wash(atom/movable/O as obj|mob) if(!on) return + if(isliving(O)) + var/mob/living/L = O + L.ExtinguishMob() + L.fire_stacks = -20 //Douse ourselves with water to avoid fire more easily + if(iscarbon(O)) var/mob/living/carbon/M = O if(M.r_hand) diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 777c17fdbcb..e93bdf0c79b 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -219,7 +219,10 @@ usr << "[t_He] has no pulse[src.client ? "" : " and [t_his] soul has departed"]..." else usr << "[t_He] has a pulse!" - + if(fire_stacks) + msg += "[t_He] [t_is] covered in some liquid.\n" + if(fire_stacks) + msg += "[t_He] [t_is] on fire!.\n" msg += "" if(nutrition < 100) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 0f13a6dbfdb..44908eed00a 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -112,6 +112,9 @@ //Handle temperature/pressure differences between body and environment handle_environment(environment) //Optimized a good bit. + //Check if we're on fire + handle_fire() + //Status updates, death etc. handle_regular_status_updates() //Optimized a bit update_canmove() @@ -784,6 +787,8 @@ if (abs(body_temperature_difference) < 0.5) return //fuck this precision + if (on_fire) + return //too busy for pesky convection if(bodytemperature < species.cold_level_1) //260.15 is 310.15 - 50, the temperature where you start to feel effects. if(nutrition >= 2) //If we are very, very cold we'll use up quite a bit of nutriment to heat us up. @@ -1774,5 +1779,25 @@ speech_problem_flag = 1 return stuttering +/mob/living/carbon/human/handle_fire() + if(..()) + return + var/thermal_protection = 0 //Simple check to estimate how protected we are against multiple temperatures + if(wear_suit) + if(wear_suit.max_heat_protection_temperature >= FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE) + thermal_protection += (wear_suit.max_heat_protection_temperature*0.7) + if(head) + if(head.max_heat_protection_temperature >= FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE) + thermal_protection += (head.max_heat_protection_temperature*THERMAL_PROTECTION_HEAD) + thermal_protection = round(thermal_protection) + if(thermal_protection >= FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE) + return + if(thermal_protection >= FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE) + bodytemperature += 11 + return + else + bodytemperature += BODYTEMP_HEATING_MAX + return + #undef HUMAN_MAX_OXYLOSS #undef HUMAN_CRIT_MAX_OXYLOSS diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index cc053f219d5..6d609026e56 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -127,7 +127,8 @@ Please contact me on #coderbus IRC. ~Carn x #define L_HAND_LAYER 20 #define R_HAND_LAYER 21 #define TARGETED_LAYER 22 //BS12: Layer for the target overlay from weapon targeting system -#define TOTAL_LAYERS 22 +#define FIRE_LAYER 23 //If you're on fire +#define TOTAL_LAYERS 23 ////////////////////////////////// /mob/living/carbon/human @@ -508,6 +509,7 @@ proc/get_damage_icon_part(damage_state, body_part) update_inv_handcuffed(0) update_inv_legcuffed(0) update_inv_pockets(0) + update_fire(0) UpdateDamageIcon() update_icons() //Hud Stuff @@ -911,6 +913,13 @@ proc/get_damage_icon_part(damage_state, body_part) if(update_icons) update_icons() +/mob/living/carbon/human/update_fire(var/update_icons=1) + overlays_standing[FIRE_LAYER] = null + if(on_fire) + overlays_standing[FIRE_LAYER] = image("icon"='icons/mob/OnFire.dmi', "icon_state"="Standing", "layer"=-FIRE_LAYER) + + if(update_icons) update_icons() + // Used mostly for creating head items /mob/living/carbon/human/proc/generate_head_icon() //gender no longer matters for the mouth, although there should probably be seperate base head icons. @@ -969,4 +978,5 @@ proc/get_damage_icon_part(damage_state, body_part) #undef L_HAND_LAYER #undef R_HAND_LAYER #undef TARGETED_LAYER +#undef FIRE_LAYER #undef TOTAL_LAYERS diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index 20b80c9c890..016f57f18f1 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -57,6 +57,9 @@ if(environment) // More error checking -- TLE handle_environment(environment) + //Check if we're on fire + handle_fire() + //Status updates, death etc. handle_regular_status_updates() update_canmove() @@ -629,3 +632,9 @@ proc/handle_changeling() if(mind && mind.changeling) mind.changeling.regenerate() + +/mob/living/carbon/monkey/handle_fire() + if(..()) + return + adjustFireLoss(6) + return \ No newline at end of file diff --git a/code/modules/mob/living/carbon/monkey/update_icons.dm b/code/modules/mob/living/carbon/monkey/update_icons.dm index 284f9e288fc..ec69d454f6b 100644 --- a/code/modules/mob/living/carbon/monkey/update_icons.dm +++ b/code/modules/mob/living/carbon/monkey/update_icons.dm @@ -5,7 +5,8 @@ #define M_L_HAND_LAYER 4 #define M_R_HAND_LAYER 5 #define TARGETED_LAYER 6 -#define M_TOTAL_LAYERS 6 +#define M_FIRE_LAYER 6 +#define M_TOTAL_LAYERS 7 ///////////////////////////////// /mob/living/carbon/monkey @@ -19,6 +20,7 @@ update_inv_r_hand(0) update_inv_l_hand(0) update_inv_handcuffed(0) + update_fire(0) update_icons() //Hud Stuff update_hud() @@ -109,6 +111,12 @@ overlays_standing[TARGETED_LAYER] = null if(update_icons) update_icons() +/mob/living/carbon/monkey/update_fire(var/update_icons=1) + if(on_fire) + overlays_standing[M_FIRE_LAYER] = image("icon"='icons/mob/OnFire.dmi', "icon_state"="Standing", "layer"= -M_FIRE_LAYER) + else + overlays_standing[M_FIRE_LAYER] = null + if(update_icons) update_icons() //Monkey Overlays Indexes//////// #undef M_MASK_LAYER #undef M_BACK_LAYER @@ -116,5 +124,6 @@ #undef M_L_HAND_LAYER #undef M_R_HAND_LAYER #undef TARGETED_LAYER +#undef M_FIRE_LAYER #undef M_TOTAL_LAYERS diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index b9f898ab5dc..18a93203d15 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -281,6 +281,8 @@ C.legcuffed = initial(C.legcuffed) hud_updateflag |= 1 << HEALTH_HUD hud_updateflag |= 1 << STATUS_HUD + ExtinguishMob() + fire_stacks = 0 /mob/living/proc/rejuvenate() @@ -628,9 +630,20 @@ BD.attack_hand(usr) C.open() - //breaking out of handcuffs + //drop && roll or breaking out of handcuffs else if(iscarbon(L)) var/mob/living/carbon/CM = L + if(CM.on_fire && CM.canmove) + CM.fire_stacks -= 5 + CM.Weaken(3) + CM.visible_message("[CM] rolls on the floor, trying to put themselves out!", \ + "You stop, drop, and roll!") + sleep(30) + if(fire_stacks <= 0) + CM.visible_message("[CM] has successfully extinguished themselves!", \ + "You extinguish yourself.") + ExtinguishMob() + return if(CM.handcuffed && CM.canmove && (CM.last_special <= world.time)) CM.next_move = world.time + 100 CM.last_special = world.time + 100 diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 1afd5b53256..e7a542f49f3 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -191,3 +191,38 @@ src.visible_message("[user] has [attack_message] [src]!") spawn(1) updatehealth() return 1 + +/mob/living/proc/IgniteMob() + if(fire_stacks > 0 && !on_fire) + on_fire = 1 + src.AddLuminosity(3) + update_fire() + +/mob/living/proc/ExtinguishMob() + if(on_fire) + on_fire = 0 + fire_stacks = 0 + src.AddLuminosity(-3) + update_fire() + +/mob/living/proc/update_fire() + return + +/mob/living/proc/adjust_fire_stacks(add_fire_stacks) //Adjusting the amount of fire_stacks we have on person + fire_stacks = Clamp(fire_stacks + add_fire_stacks, min = -20, max = 20) + +/mob/living/proc/handle_fire() + if(fire_stacks < 0) + fire_stacks = max(0, fire_stacks++) //If we've doused ourselves in water to avoid fire, dry off slowly + if(!on_fire) + return 1 + var/datum/gas_mixture/G = loc.return_air() // Check if we're standing in an oxygenless environment + if(G.gas["oxygen"] < 1) + ExtinguishMob() //If there's no oxygen in the tile we're on, put out the fire + return + var/turf/location = get_turf(src) + location.hotspot_expose(700, 50, 1) + +/mob/living/fire_act() + adjust_fire_stacks(0.5) + IgniteMob() \ No newline at end of file diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 3c1c8a935c7..82cf38067c5 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -37,4 +37,7 @@ var/tod = null // Time of death var/update_slimes = 1 - var/silent = null //Can't talk. Value goes down every life proc. \ No newline at end of file + var/silent = null //Can't talk. Value goes down every life proc. + + var/on_fire = 0 //The "Are we on fire?" var + var/fire_stacks = 0 //Tracks how many stacks of fire we have on, max is usually 20 diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 6fd9de29f78..e295c5e3afe 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -258,10 +258,15 @@ datum if(!cube.wrapped) cube.Expand() - reaction_mob(var/mob/M, var/method=TOUCH, var/volume) + reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume) if (istype(M, /mob/living/carbon/slime)) var/mob/living/carbon/slime/S = M S.apply_water() + if(method == TOUCH && isliving(M)) + M.adjust_fire_stacks(-(volume / 10)) + if(M.fire_stacks <= 0) + M.ExtinguishMob() + return water/holywater name = "Holy Water" @@ -933,6 +938,12 @@ datum M.adjustToxLoss(1) ..() return + reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)//Splashing people with welding fuel to make them easy to ignite! + if(!istype(M, /mob/living)) + return + if(method == TOUCH) + M.adjust_fire_stacks(volume / 10) + return space_cleaner name = "Space cleaner" @@ -1615,6 +1626,12 @@ datum src = null T.assume_gas("volatile_fuel", volume, T20C) return + reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)//Splashing people with plasma is stronger than fuel! + if(!istype(M, /mob/living)) + return + if(method == TOUCH) + M.adjust_fire_stacks(volume / 5) + return toxin/lexorin name = "Lexorin" @@ -3287,6 +3304,12 @@ datum usr << "It wasn't enough..." return + reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)//Splashing people with ethanol isn't quite as good as fuel. + if(!istype(M, /mob/living)) + return + if(method == TOUCH) + M.adjust_fire_stacks(volume / 15) + return ethanol/beer name = "Beer" id = "beer" diff --git a/icons/mob/OnFire.dmi b/icons/mob/OnFire.dmi new file mode 100644 index 0000000000000000000000000000000000000000..8bf6e2c7749edd55c903e98d06314dad2297ee16 GIT binary patch literal 1845 zcmV-52g>+~P)V=-0C=2J zR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex6#a*U0*I5Sc+(=$pSoZ^zil2jm5 zDYzstFC{ZCU5Se`C9|j)q>qa;ttc@!6~s0Lil*iyRsxxZI#7tv>zPeEaeK7*tiU6`?OikQf~RXb?yz%>bT~L} z@1o+TvehB-J5hT9@3QYRc8kw%klz@D=jM$rdWY}WM6>6-oCK%%OCw}mZq%0*X!#Sr z?jsq!;*)4GtrM4`LGb)0It9-a%|{0Mvp{3!VCY+t*OuBH|w0pOX#Pm@n8Cj!64)|Mu@Lj$Wr>nGbP zozd$yr`v}2P%qwVgEa98?9)%!yk;Rqu=jdiO><5-RNdu86CWRve@MQx4{5OjLYIoy z3TStHbsXk7hIYYM_FjHIsD~PO@A2zV$iI<;@!ssLz3&iCZlg?c?sF8(%VYdtjZp4s z_U#YV0l9iVz$tZ#;Ke*|fe_?2jMQtY`4V~yAa@OovO8ff=BENVLRAGvh(YYy0Z*`oxb z1G^1c)z!Z6L~Cko(o0n<-@{1{ir0jc-jjMTZBgV>sQBQr7h7>>={@1V(2LyM@{Rc1 z9}h47!1WvjLoY_gm>N)ekqtS?45b$%K2_f3vwAVd|LVjG)%9X#5*E+VEWFXATFm!O zYE1qrP_pST*b9KNm+-`HeG)+hT7Mx%b<9mg{TCr=$lz0(Z=2kxcbQ)gA6_l)1L zfbR^w7t8LEA2aoT1Wuk}S8!e+-;4^o3X?34L47{9{bdDix)Xa2eTuYmu4FW>#YL++ z!B@Ig%d-Z)4!TFo-ZskNhw6iPE#-Tg9w0kca^`r2UGI4$Ux_zkgxbXpQf=`)M7|~H z-anE)z&8Y4X4}^YS#MMr`H{3TpVfPB@c%H*%dg9!PmFg9vfa&`zFmG6hw(%5YG*5# zQawV+&yDb*d(78@iQn>1x*vmVGPsY(@BOdLL$&lCH(T*Res9GWcl})*A4I!CM(p znc1svS6EARd~&c>doI7MjjfPx23Ed~PYz1Y5!ZW9{W&1>6te*lpg}O~P-Y*MI)Sdq!pU zQoiX5N*0KR)@v;qy|FOd{T%{&fTk;PwHfRawgQyCxz3z>iML|zk#^oNc!9v z_B$vDNS+R8&i4g+uQ;C+VJ zh3fgF7@w@3Pm1x$>iMJwzji(;+HYKq)AGv-yYHZWKB?kY&L>qPs+~`&USeN@ON{Vw Date: Fri, 16 Jan 2015 11:30:24 +0300 Subject: [PATCH 19/51] Fixed a few derps, added spinning --- .../mob/living/carbon/human/examine.dm | 2 +- code/modules/mob/living/carbon/human/life.dm | 3 --- .../mob/living/carbon/human/update_icons.dm | 4 ++-- code/modules/mob/living/living.dm | 21 ++++++++++++++++++- 4 files changed, 23 insertions(+), 7 deletions(-) diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index e93bdf0c79b..1ecd1479a63 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -221,7 +221,7 @@ usr << "[t_He] has a pulse!" if(fire_stacks) msg += "[t_He] [t_is] covered in some liquid.\n" - if(fire_stacks) + if(on_fire) msg += "[t_He] [t_is] on fire!.\n" msg += "" diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 44908eed00a..cee6fe6e4ee 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1790,11 +1790,8 @@ if(head.max_heat_protection_temperature >= FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE) thermal_protection += (head.max_heat_protection_temperature*THERMAL_PROTECTION_HEAD) thermal_protection = round(thermal_protection) - if(thermal_protection >= FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE) - return if(thermal_protection >= FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE) bodytemperature += 11 - return else bodytemperature += BODYTEMP_HEATING_MAX return diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 6d609026e56..19736bad3f4 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -126,8 +126,8 @@ Please contact me on #coderbus IRC. ~Carn x #define LEGCUFF_LAYER 19 #define L_HAND_LAYER 20 #define R_HAND_LAYER 21 -#define TARGETED_LAYER 22 //BS12: Layer for the target overlay from weapon targeting system -#define FIRE_LAYER 23 //If you're on fire +#define FIRE_LAYER 22 //If you're on fire +#define TARGETED_LAYER 23 //BS12: Layer for the target overlay from weapon targeting system #define TOTAL_LAYERS 23 ////////////////////////////////// diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 18a93203d15..8aa07aafc4c 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -636,6 +636,7 @@ if(CM.on_fire && CM.canmove) CM.fire_stacks -= 5 CM.Weaken(3) + CM.spin(32,2) CM.visible_message("[CM] rolls on the floor, trying to put themselves out!", \ "You stop, drop, and roll!") sleep(30) @@ -854,4 +855,22 @@ return 1 /mob/living/proc/slip(var/slipped_on,stun_duration=8) - return 0 \ No newline at end of file + return 0 + +/mob/living/carbon/proc/spin(spintime, speed) + spawn() + var/D = dir + while(spintime >= speed) + sleep(speed) + switch(D) + if(NORTH) + D = EAST + if(SOUTH) + D = WEST + if(EAST) + D = SOUTH + if(WEST) + D = NORTH + set_dir(D) + spintime -= speed + return \ No newline at end of file From 37962065ae85d6e46a1cfb7ebfafbc818763abd7 Mon Sep 17 00:00:00 2001 From: Kelenius Date: Fri, 16 Jan 2015 23:02:55 +0300 Subject: [PATCH 20/51] Adds oxygen and nitrogen to air alarm scrubber list --- code/ATMOSPHERICS/components/unary/vent_scrubber.dm | 12 ++++++++++++ code/game/machinery/alarm.dm | 6 ++++++ 2 files changed, 18 insertions(+) diff --git a/code/ATMOSPHERICS/components/unary/vent_scrubber.dm b/code/ATMOSPHERICS/components/unary/vent_scrubber.dm index 7b74ed8b736..068f7efdb3e 100644 --- a/code/ATMOSPHERICS/components/unary/vent_scrubber.dm +++ b/code/ATMOSPHERICS/components/unary/vent_scrubber.dm @@ -99,6 +99,8 @@ "power" = use_power, "scrubbing" = scrubbing, "panic" = panic, + "filter_o2" = ("oxygen" in scrubbing_gas), + "filter_n2" = ("nitrogen" in scrubbing_gas), "filter_co2" = ("carbon_dioxide" in scrubbing_gas), "filter_phoron" = ("phoron" in scrubbing_gas), "filter_n2o" = ("sleeping_agent" in scrubbing_gas), @@ -192,6 +194,16 @@ var/list/toggle = list() + if(!isnull(signal.data["o2_scrub"]) && text2num(signal.data["o2_scrub"]) != ("oxygen" in scrubbing_gas)) + toggle += "oxygen" + else if(signal.data["toggle_o2_scrub"]) + toggle += "oxygen" + + if(!isnull(signal.data["n2_scrub"]) && text2num(signal.data["n2_scrub"]) != ("nitrogen" in scrubbing_gas)) + toggle += "nitrogen" + else if(signal.data["toggle_n2_scrub"]) + toggle += "nitrogen" + if(!isnull(signal.data["co2_scrub"]) && text2num(signal.data["co2_scrub"]) != ("carbon_dioxide" in scrubbing_gas)) toggle += "carbon_dioxide" else if(signal.data["toggle_co2_scrub"]) diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index 3819c2d9d53..0d195691ba7 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -696,6 +696,10 @@ siphoning if(data["scrubbing"]) sensor_data += {" Filtering: +Oxygen +
[data["filter_o2"]?"on":"off"]; +Nitrogen +[data["filter_n2"]?"on":"off"]; Carbon Dioxide [data["filter_co2"]?"on":"off"]; Toxins @@ -817,6 +821,8 @@ table tr:first-child th:first-child { border: none;} "adjust_external_pressure", "set_external_pressure", "checks", + "o2_scrub", + "n2_scrub", "co2_scrub", "tox_scrub", "n2o_scrub", From 746e1acf8d02fe257505b0647974b54889ec8eae Mon Sep 17 00:00:00 2001 From: Kelenius Date: Sat, 17 Jan 2015 20:52:06 +0300 Subject: [PATCH 21/51] Added variety (uid) field to seed vendors --- code/modules/hydroponics/seed_storage.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/hydroponics/seed_storage.dm b/code/modules/hydroponics/seed_storage.dm index 4abb4abe05a..17cab40d8a1 100644 --- a/code/modules/hydroponics/seed_storage.dm +++ b/code/modules/hydroponics/seed_storage.dm @@ -70,6 +70,7 @@ dat += "No seeds" else dat += "" + dat += "" if ("stats" in scanner) dat += "" if ("produce" in scanner) @@ -85,6 +86,7 @@ var/datum/seed/seed = S.seed_type dat += "" dat += "" + dat += "" if ("stats" in scanner) dat += "" if(seed.harvest_repeat) From c28d3f5b1af8ab586859fe7591d04ac20990573f Mon Sep 17 00:00:00 2001 From: SparklySheep Date: Sat, 17 Jan 2015 14:29:06 -0600 Subject: [PATCH 22/51] Adds medical belts to sterile equipment crate. --- code/datums/supplypacks.dm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm index 70c418172da..938d74caa97 100755 --- a/code/datums/supplypacks.dm +++ b/code/datums/supplypacks.dm @@ -956,7 +956,10 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee contains = list(/obj/item/clothing/under/rank/medical/green, /obj/item/clothing/under/rank/medical/green, /obj/item/weapon/storage/box/masks, - /obj/item/weapon/storage/box/gloves) + /obj/item/weapon/storage/box/gloves, + /obj/item/weapon/storage/belt/medical, + /obj/item/weapon/storage/belt/medical, + /obj/item/weapon/storage/belt/medical) cost = 15 containertype = "/obj/structure/closet/crate" containername = "Sterile equipment crate" From 691c51f45baf24e43d51e22127647e61d1c6ba91 Mon Sep 17 00:00:00 2001 From: SparklySheep Date: Sat, 17 Jan 2015 22:38:10 -0600 Subject: [PATCH 23/51] Adds surgical caps too. --- code/datums/supplypacks.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm index 938d74caa97..5f70d430836 100755 --- a/code/datums/supplypacks.dm +++ b/code/datums/supplypacks.dm @@ -955,6 +955,8 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee name = "Sterile equipment crate" contains = list(/obj/item/clothing/under/rank/medical/green, /obj/item/clothing/under/rank/medical/green, + /obj/item/clothing/head/surgery/green + /obj/item/clothing/head/surgery/green /obj/item/weapon/storage/box/masks, /obj/item/weapon/storage/box/gloves, /obj/item/weapon/storage/belt/medical, From 093c8db3b6516576659833da27244eb1bf074e77 Mon Sep 17 00:00:00 2001 From: SparklySheep Date: Sun, 18 Jan 2015 00:00:16 -0600 Subject: [PATCH 24/51] Fixes stupid mistake. --- code/datums/supplypacks.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm index 5f70d430836..216004c330b 100755 --- a/code/datums/supplypacks.dm +++ b/code/datums/supplypacks.dm @@ -955,8 +955,8 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee name = "Sterile equipment crate" contains = list(/obj/item/clothing/under/rank/medical/green, /obj/item/clothing/under/rank/medical/green, - /obj/item/clothing/head/surgery/green - /obj/item/clothing/head/surgery/green + /obj/item/clothing/head/surgery/green, + /obj/item/clothing/head/surgery/green, /obj/item/weapon/storage/box/masks, /obj/item/weapon/storage/box/gloves, /obj/item/weapon/storage/belt/medical, From 6f4f7200162b103069862fccde8057cc1177e102 Mon Sep 17 00:00:00 2001 From: Kelenius Date: Mon, 19 Jan 2015 20:36:05 +0300 Subject: [PATCH 25/51] Removes empty crates and replaces minigame with mastermind --- code/modules/mining/abandonedcrates.dm | 72 +++++++++++++------------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/code/modules/mining/abandonedcrates.dm b/code/modules/mining/abandonedcrates.dm index f71b7f9d350..311454414a9 100644 --- a/code/modules/mining/abandonedcrates.dm +++ b/code/modules/mining/abandonedcrates.dm @@ -6,15 +6,21 @@ icon_closed = "securecrate" var/code = null var/lastattempt = null - var/attempts = 3 + var/attempts = 10 + var/codelen = 4 locked = 1 - var/min = 1 - var/max = 10 /obj/structure/closet/crate/secure/loot/New() ..() - code = rand(min,max) - var/loot = rand(1,30) + var/list/digits = list("1", "2", "3", "4", "5", "6", "7", "8", "9", "0") + + code = "" + for(var/i = 0, i < codelen, i++) + var/dig = pick(digits) + code += dig + digits -= dig // Player can enter codes with matching digits, but there are never matching digits in the answer + + var/loot = rand(1, 13) switch(loot) if(1) new/obj/item/weapon/reagent_containers/food/drinks/bottle/rum(src) @@ -27,53 +33,40 @@ new/obj/item/clothing/suit/space(src) new/obj/item/clothing/head/helmet/space(src) if(3) - return - if(4) new/obj/item/weapon/reagent_containers/glass/beaker/bluespace(src) - if(5 to 6) + if(4 to 5) for(var/i = 0, i < 10, i++) new/obj/item/weapon/ore/diamond(src) - if(7) - return - if(8) - return - if(9) + if(6) for(var/i = 0, i < 3, i++) new/obj/machinery/portable_atmospherics/hydroponics(src) - if(10) + if(7) for(var/i = 0, i < 3, i++) new/obj/item/weapon/reagent_containers/glass/beaker/noreact(src) - if(11 to 13) + if(8 to 10) new/obj/item/weapon/melee/classic_baton(src) - if(14) - return - if(15) + if(11) new/obj/item/clothing/under/chameleon(src) for(var/i = 0, i < 7, i++) new/obj/item/clothing/tie/horrible(src) - if(16) + if(12) new/obj/item/clothing/under/shorts(src) new/obj/item/clothing/under/shorts/red(src) new/obj/item/clothing/under/shorts/blue(src) - //Dummy crates start here. - if(17 to 29) - return - //Dummy crates end here. - if(30) + if(13) new/obj/item/weapon/melee/baton(src) /obj/structure/closet/crate/secure/loot/togglelock(mob/user as mob) if(locked) user << "The crate is locked with a Deca-code lock." - var/input = input(usr, "Enter digit from [min] to [max].", "Deca-Code Lock", "") as num + var/input = input(usr, "Enter [codelen] digits.", "Deca-Code Lock", "") as text if(in_range(src, user)) - input = Clamp(input, 0, 10) if (input == code) user << "The crate unlocks!" locked = 0 overlays.Cut() overlays += greenlight - else if (input == null || input > max || input < min) + else if (input == null || length(input) != codelen) user << "You leave the crate alone." else user << "A red light flashes." @@ -96,19 +89,26 @@ if (istype(W, /obj/item/weapon/card/emag)) user << "The crate unlocks!" locked = 0 - if (istype(W, /obj/item/device/multitool)) + if (istype(W, /obj/item/device/multitool)) // Greetings Urist McProfessor, how about a nice game of cows and bulls? user << "DECA-CODE LOCK REPORT:" if (attempts == 1) user << "* Anti-Tamper Bomb will activate on next failed access attempt." else user << "* Anti-Tamper Bomb will activate after [src.attempts] failed access attempts." - if (lastattempt == null) - user << " has been made to open the crate thus far." - return - // hot and cold - if (code > lastattempt) - user << "* Last access attempt lower than expected code." - else - user << "* Last access attempt higher than expected code." + if (lastattempt != null) + var/list/guess = list() + var/bulls = 0 + var/cows = 0 + for(var/i = 1, i < codelen + 1, i++) + var/a = copytext(lastattempt, i, i+1) // Stuff the code into the list + guess += a + guess[a] = i + for(var/i in guess) // Go through list and count matches + var/a = findtext(code, i) + if(a == guess[i]) + ++bulls + else if(a) + ++cows + user << "Last code attempt had [bulls] correct digits at correct positions and [cows] correct digits at incorrect positions." else ..() else ..() From 8756bb99bd1690c982f1a05952e3d237001b1f26 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Wed, 7 Jan 2015 07:54:51 +1030 Subject: [PATCH 26/51] Adds species-specific comfort tweaks, skrell nutrition changes. --- .../mob/living/carbon/human/human_movement.dm | 2 +- code/modules/mob/living/carbon/human/life.dm | 7 +- .../living/carbon/human/species/species.dm | 35 ++++ .../carbon/human/species/station/station.dm | 25 +++ code/modules/mob/mob_grab.dm | 6 +- code/modules/reagents/Chemistry-Reagents.dm | 24 ++- .../reagent_containers/food/snacks.dm | 181 +++++++++--------- 7 files changed, 175 insertions(+), 105 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 546ec3ba839..d8b0a66c8c9 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -47,7 +47,7 @@ tally += 0.5 else if(E.status & ORGAN_BROKEN) tally += 1.5 - + if(shock_stage >= 10) tally += 3 if(FAT in src.mutations) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index de66e6bef11..497ce9ad554 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -599,8 +599,9 @@ failed_last_breath = 0 adjustOxyLoss(-5) + // Hot air hurts :( - if( (breath.temperature < species.cold_level_1 || breath.temperature > species.heat_level_1) && !(COLD_RESISTANCE in mutations)) + if((breath.temperature < species.cold_level_1 || breath.temperature > species.heat_level_1) && !(COLD_RESISTANCE in mutations)) if(breath.temperature < species.cold_level_1) if(prob(20)) @@ -644,6 +645,10 @@ //world << "Breath: [breath.temperature], [src]: [bodytemperature], Adjusting: [temp_adj]" bodytemperature += temp_adj + else if(breath.temperature >= species.heat_discomfort_level) + species.get_environment_discomfort(src,"heat") + else if(breath.temperature <= species.cold_discomfort_level) + species.get_environment_discomfort(src,"cold") breath.update_values() return 1 diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 8bdfa8a59d2..5e37b532472 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -65,6 +65,20 @@ var/light_dam // If set, mob will be damaged in light over this value and heal in light below its negative. var/body_temperature = 310.15 // Non-IS_SYNTHETIC species will try to stabilize at this temperature. // (also affects temperature processing) + + var/heat_discomfort_level = 315 // Aesthetic messages about feeling warm. + var/cold_discomfort_level = 285 // Aesthetic messages about feeling chilly. + var/list/heat_discomfort_strings = list( + "You feel sweat drip down your neck.", + "You feel uncomfortably warm.", + "Your skin prickles in the heat." + ) + var/list/cold_discomfort_strings = list( + "You feel chilly.", + "You shiver suddely.", + "Your chilly flesh stands out in goosebumps." + ) + // HUD data vars. var/datum/hud_data/hud var/hud_type @@ -100,6 +114,27 @@ for(var/u_type in unarmed_types) unarmed_attacks += new u_type() +/datum/species/proc/get_environment_discomfort(var/mob/living/carbon/human/H, var/msg_type) + + if(!prob(5)) + return + + var/covered = 0 // Basic coverage can help. + for(var/obj/item/clothing/clothes in H) + if(H.l_hand == clothes|| H.r_hand == clothes) + continue + if((clothes.body_parts_covered & UPPER_TORSO) && (clothes.body_parts_covered & LOWER_TORSO)) + covered = 1 + break + + switch(msg_type) + if("cold") + if(!covered) + H << "[pick(cold_discomfort_strings)]" + if("heat") + if(covered) + H << "[pick(heat_discomfort_strings)]" + /datum/species/proc/get_random_name(var/gender) var/datum/language/species_language = all_languages[language] return species_language.get_random_name(gender) diff --git a/code/modules/mob/living/carbon/human/species/station/station.dm b/code/modules/mob/living/carbon/human/species/station/station.dm index b7b66d2fd48..bc46cf9c45c 100644 --- a/code/modules/mob/living/carbon/human/species/station/station.dm +++ b/code/modules/mob/living/carbon/human/species/station/station.dm @@ -45,6 +45,20 @@ reagent_tag = IS_UNATHI base_color = "#066000" + heat_discomfort_level = 295 + heat_discomfort_strings = list( + "You feel soothingly warm.", + "You feel the heat sink into your bones.", + "You feel warm enough to take a nap." + ) + + cold_discomfort_level = 292 + cold_discomfort_strings = list( + "You feel chilly.", + "You feel sluggish and cold.", + "Your scales bristle against the cold." + ) + /datum/species/tajaran name = "Tajara" name_plural = "Tajaran" @@ -54,6 +68,9 @@ tail = "tajtail" unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws, /datum/unarmed_attack/bite/sharp) darksight = 8 + slowdown = -1 + brute_mod = 1.2 + blurb = "The Tajaran race is a species of feline-like bipeds hailing from the planet of Ahdomai in the \ S'randarr system. They have been brought up into the space age by the Humans and Skrell, and have been \ influenced heavily by their long history of Slavemaster rule. They have a structured, clan-influenced way \ @@ -75,6 +92,14 @@ flesh_color = "#AFA59E" base_color = "#333333" + heat_discomfort_level = 292 + heat_discomfort_strings = list( + "Your fur prickles in the heat.", + "You feel uncomfortably warm.", + "Your overheated skin itches." + ) + cold_discomfort_level = 275 + /datum/species/skrell name = "Skrell" name_plural = "Skrell" diff --git a/code/modules/mob/mob_grab.dm b/code/modules/mob/mob_grab.dm index d6e6496f9da..ed11358838f 100644 --- a/code/modules/mob/mob_grab.dm +++ b/code/modules/mob/mob_grab.dm @@ -193,16 +193,16 @@ return if(M == assailant && state >= GRAB_AGGRESSIVE) - var/can_eat + var/can_eat if((FAT in user.mutations) && ismonkey(affecting)) can_eat = 1 else var/mob/living/carbon/human/H = user - if(istype(H) && iscarbon(affecting) && H.species.gluttonous) + if(istype(H) && H.species.gluttonous) if(H.species.gluttonous == 2) can_eat = 2 - else if(!ishuman(affecting)) + else if(!ishuman(affecting) && !ismonkey(affecting) && (affecting.small || iscarbon(affecting))) can_eat = 1 if(can_eat) diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 6fd9de29f78..2caa542e12b 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -2040,22 +2040,20 @@ datum if(!M) M = holder.my_atom if(prob(50)) M.heal_organ_damage(1,0) M.nutrition += nutriment_factor // For hunger and fatness -/* - // If overeaten - vomit and fall down - // Makes you feel bad but removes reagents and some effect - // from your body - if (M.nutrition > 650) - M.nutrition = rand (250, 400) - M.weakened += rand(2, 10) - M.jitteriness += rand(0, 5) - M.dizziness = max (0, (M.dizziness - rand(0, 15))) - M.druggy = max (0, (M.druggy - rand(0, 15))) - M.adjustToxLoss(rand(-15, -5))) - M.updatehealth() -*/ ..() return + nutriment/protein // Bad for Skrell! + name = "animal protein" + id = "protein" + color = "#440000" + + on_mob_life(var/mob/living/M, var/alien) + if(alien && alien == IS_SKRELL) + M.adjustToxLoss(0.5) + M.nutrition -= nutriment_factor + ..() + lipozine name = "Lipozine" // The anti-nutriment. id = "lipozine" diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index 7aaad7a6785..292f998318d 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -469,7 +469,7 @@ New() ..() - reagents.add_reagent("nutriment", 1) + reagents.add_reagent("protein", 2) throw_impact(atom/hit_atom) ..() @@ -533,7 +533,7 @@ New() ..() - reagents.add_reagent("nutriment", 2) + reagents.add_reagent("protein", 3) reagents.add_reagent("sodiumchloride", 1) reagents.add_reagent("blackpepper", 1) bitesize = 1 @@ -546,7 +546,7 @@ New() ..() - reagents.add_reagent("nutriment", 2) + reagents.add_reagent("protein", 2) /obj/item/weapon/reagent_containers/food/snacks/flour name = "flour" @@ -566,7 +566,7 @@ New() ..() - reagents.add_reagent("nutriment", rand(3,5)) + reagents.add_reagent("protein", rand(3,5)) reagents.add_reagent("toxin", rand(1,3)) src.bitesize = 3 @@ -612,7 +612,7 @@ New() ..() - reagents.add_reagent("nutriment", 3) + reagents.add_reagent("protein", 3) reagents.add_reagent("carpotoxin", 3) src.bitesize = 6 @@ -624,7 +624,7 @@ New() ..() - reagents.add_reagent("nutriment", 4) + reagents.add_reagent("protein", 4) reagents.add_reagent("carpotoxin", 3) bitesize = 3 @@ -659,7 +659,7 @@ New() ..() - reagents.add_reagent("nutriment", 12) + reagents.add_reagent("protein", 12) reagents.add_reagent("hyperzine", 5) src.bitesize = 3 @@ -671,7 +671,7 @@ New() ..() - reagents.add_reagent("nutriment", 3) + reagents.add_reagent("protein", 3) src.bitesize = 6 /obj/item/weapon/reagent_containers/food/snacks/meatball @@ -682,7 +682,7 @@ New() ..() - reagents.add_reagent("nutriment", 3) + reagents.add_reagent("protein", 3) bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/sausage @@ -693,7 +693,7 @@ New() ..() - reagents.add_reagent("nutriment", 6) + reagents.add_reagent("protein", 6) bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/donkpocket @@ -704,7 +704,8 @@ New() ..() - reagents.add_reagent("nutriment", 4) + reagents.add_reagent("nutriment", 2) + reagents.add_reagent("protein", 2) var/warm = 0 proc/cooltime() //Not working, derp? @@ -723,7 +724,7 @@ New() ..() - reagents.add_reagent("nutriment", 6) + reagents.add_reagent("protein", 6) reagents.add_reagent("alkysine", 6) bitesize = 2 @@ -750,7 +751,7 @@ icon_state = "hburger" New() ..() - reagents.add_reagent("nutriment", 6) + reagents.add_reagent("protein", 6) bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/cheeseburger @@ -759,6 +760,7 @@ icon_state = "cheeseburger" New() ..() + reagents.add_reagent("protein", 2) reagents.add_reagent("nutriment", 2) /obj/item/weapon/reagent_containers/food/snacks/monkeyburger @@ -769,7 +771,8 @@ New() ..() - reagents.add_reagent("nutriment", 6) + reagents.add_reagent("protein", 3) + reagents.add_reagent("nutriment", 3) bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/fishburger @@ -780,7 +783,7 @@ New() ..() - reagents.add_reagent("nutriment", 6) + reagents.add_reagent("protein", 6) reagents.add_reagent("carpotoxin", 3) bitesize = 3 @@ -828,7 +831,7 @@ New() ..() - reagents.add_reagent("nutriment", 8) + reagents.add_reagent("protein", 8) bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/clownburger @@ -839,11 +842,6 @@ New() ..() -/* - var/datum/disease/F = new /datum/disease/pierrot_throat(0) - var/list/data = list("viruses"= list(F)) - reagents.add_reagent("blood", 4, data) -*/ reagents.add_reagent("nutriment", 6) bitesize = 2 @@ -868,7 +866,7 @@ //var/herp = 0 New() ..() - reagents.add_reagent("nutriment", 8) + reagents.add_reagent("protein", 8) bitesize = 1 /obj/item/weapon/reagent_containers/food/snacks/muffin @@ -945,7 +943,7 @@ New() ..() - reagents.add_reagent("nutriment", 10) + reagents.add_reagent("protein", 10) bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/soylenviridians @@ -970,7 +968,7 @@ New() ..() - reagents.add_reagent("nutriment", 10) + reagents.add_reagent("protein", 10) bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/tofupie @@ -1025,7 +1023,7 @@ New() ..() - reagents.add_reagent("nutriment", 10) + reagents.add_reagent("protein", 10) bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/wingfangchu @@ -1037,7 +1035,7 @@ New() ..() - reagents.add_reagent("nutriment", 6) + reagents.add_reagent("protein", 6) bitesize = 2 @@ -1050,7 +1048,7 @@ New() ..() - reagents.add_reagent("nutriment", 8) + reagents.add_reagent("protein", 8) bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/monkeykabob @@ -1062,7 +1060,7 @@ New() ..() - reagents.add_reagent("nutriment", 8) + reagents.add_reagent("protein", 8) bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/tofukabob @@ -1079,14 +1077,15 @@ /obj/item/weapon/reagent_containers/food/snacks/cubancarp name = "Cuban Carp" - desc = "A grifftastic sandwich that burns your tongue and then leaves it numb!" + desc = "A sandwich that burns your tongue and then leaves it numb!" icon_state = "cubancarp" trash = /obj/item/trash/plate filling_color = "#E9ADFF" New() ..() - reagents.add_reagent("nutriment", 6) + reagents.add_reagent("protein", 3) + reagents.add_reagent("nutriment", 3) reagents.add_reagent("carpotoxin", 3) reagents.add_reagent("capsaicin", 3) bitesize = 3 @@ -1120,7 +1119,7 @@ New() ..() - reagents.add_reagent("nutriment", 4) + reagents.add_reagent("protein", 4) bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/no_raisin @@ -1178,7 +1177,8 @@ New() ..() - reagents.add_reagent("nutriment", 6) + reagents.add_reagent("nutriment", 3) + reagents.add_reagent("protein", 3) bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/fries @@ -1225,7 +1225,8 @@ New() ..() - reagents.add_reagent("nutriment", 6) + reagents.add_reagent("protein", 2) + reagents.add_reagent("nutriment", 4) bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/fortunecookie @@ -1260,7 +1261,7 @@ New() ..() - reagents.add_reagent("nutriment", 4) + reagents.add_reagent("protein", 4) reagents.add_reagent("sodiumchloride", 1) reagents.add_reagent("blackpepper", 1) bitesize = 3 @@ -1314,7 +1315,7 @@ New() ..() - reagents.add_reagent("nutriment", 8) + reagents.add_reagent("protein", 8) reagents.add_reagent("water", 5) bitesize = 5 @@ -1332,13 +1333,13 @@ /obj/item/weapon/reagent_containers/food/snacks/bloodsoup name = "Tomato soup" - desc = "Smells like copper" + desc = "Smells like copper." icon_state = "tomatosoup" filling_color = "#FF0000" New() ..() - reagents.add_reagent("nutriment", 2) + reagents.add_reagent("protein", 2) reagents.add_reagent("blood", 10) reagents.add_reagent("water", 5) bitesize = 5 @@ -1454,7 +1455,8 @@ New() ..() - reagents.add_reagent("nutriment", 6) + reagents.add_reagent("protein", 3) + reagents.add_reagent("nutriment", 3) reagents.add_reagent("capsaicin", 3) reagents.add_reagent("tomatojuice", 2) bitesize = 5 @@ -1469,7 +1471,8 @@ trash = /obj/item/trash/snack_bowl New() ..() - reagents.add_reagent("nutriment", 6) + reagents.add_reagent("protein", 3) + reagents.add_reagent("nutriment", 3) reagents.add_reagent("frostoil", 3) reagents.add_reagent("tomatojuice", 2) bitesize = 5 @@ -1503,7 +1506,7 @@ New() ..() - reagents.add_reagent("nutriment",10) + reagents.add_reagent("protein", 10) afterattack(obj/O as obj, mob/user as mob, proximity) if(!proximity) return @@ -1568,24 +1571,18 @@ desc = "Still wrapped in some paper." icon_state = "monkeycubewrap" wrapped = 1 - - /obj/item/weapon/reagent_containers/food/snacks/monkeycube/farwacube name = "farwa cube" monkey_type = /mob/living/carbon/monkey/tajara /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/farwacube name = "farwa cube" monkey_type =/mob/living/carbon/monkey/tajara - - /obj/item/weapon/reagent_containers/food/snacks/monkeycube/stokcube name = "stok cube" monkey_type = /mob/living/carbon/monkey/unathi /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/stokcube name = "stok cube" monkey_type =/mob/living/carbon/monkey/unathi - - /obj/item/weapon/reagent_containers/food/snacks/monkeycube/neaeracube name = "neaera cube" monkey_type = /mob/living/carbon/monkey/skrell @@ -1613,7 +1610,8 @@ New() ..() - reagents.add_reagent("nutriment", 14) + reagents.add_reagent("protein", 10) + reagents.add_reagent("nutriment", 4) bitesize = 3 /obj/item/weapon/reagent_containers/food/snacks/enchiladas @@ -1625,7 +1623,8 @@ New() ..() - reagents.add_reagent("nutriment",8) + reagents.add_reagent("protein", 6) + reagents.add_reagent("nutriment",2) reagents.add_reagent("capsaicin", 6) bitesize = 4 @@ -1638,7 +1637,7 @@ New() ..() - reagents.add_reagent("nutriment", 10) + reagents.add_reagent("protein", 10) reagents.add_reagent("banana", 5) reagents.add_reagent("blackpepper", 1) reagents.add_reagent("sodiumchloride", 1) @@ -1665,7 +1664,8 @@ New() ..() - reagents.add_reagent("nutriment", 6) + reagents.add_reagent("protein", 3) + reagents.add_reagent("nutriment", 3) reagents.add_reagent("carpotoxin", 3) bitesize = 3 @@ -1678,7 +1678,8 @@ New() ..() - reagents.add_reagent("nutriment", 6) + reagents.add_reagent("protein", 3) + reagents.add_reagent("nutriment", 3) bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/toastedsandwich @@ -1690,7 +1691,8 @@ New() ..() - reagents.add_reagent("nutriment", 6) + reagents.add_reagent("protein", 3) + reagents.add_reagent("nutriment", 3) reagents.add_reagent("carbon", 2) bitesize = 2 @@ -1703,7 +1705,8 @@ New() ..() - reagents.add_reagent("nutriment", 7) + reagents.add_reagent("protein", 4) + reagents.add_reagent("nutriment", 3) bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/tomatosoup @@ -1740,7 +1743,8 @@ New() ..() - reagents.add_reagent("nutriment", 10) + reagents.add_reagent("protein", 4) + reagents.add_reagent("nutriment", 6) reagents.add_reagent("tomatojuice", 5) reagents.add_reagent("imidazoline", 5) reagents.add_reagent("water", 5) @@ -1836,7 +1840,7 @@ /obj/item/weapon/reagent_containers/food/snacks/ricepudding name = "Rice Pudding" - desc = "Where's the Jam!" + desc = "Where's the jam?" icon_state = "rpudding" trash = /obj/item/trash/snack_bowl filling_color = "#FFFBDB" @@ -1868,7 +1872,8 @@ New() ..() - reagents.add_reagent("nutriment", 8) + reagents.add_reagent("protein", 4) + reagents.add_reagent("nutriment", 4) bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/spesslaw @@ -1879,7 +1884,8 @@ New() ..() - reagents.add_reagent("nutriment", 8) + reagents.add_reagent("protein", 4) + reagents.add_reagent("nutriment", 4) bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/poppypretzel @@ -1914,7 +1920,8 @@ New() ..() - reagents.add_reagent("nutriment", 50) + reagents.add_reagent("protein", 25) + reagents.add_reagent("nutriment", 25) bitesize = 10 /obj/item/weapon/reagent_containers/food/snacks/candiedapple @@ -2043,7 +2050,7 @@ New() ..() - reagents.add_reagent("nutriment", 5) + reagents.add_reagent("protein", 5) bitesize = 1 /obj/item/weapon/reagent_containers/food/snacks/beetsoup @@ -2055,19 +2062,7 @@ New() ..() - switch(rand(1,6)) - if(1) - name = "borsch" - if(2) - name = "bortsch" - if(3) - name = "borstch" - if(4) - name = "borsh" - if(5) - name = "borshch" - if(6) - name = "borscht" + name = pick(list("borsch","bortsch","borstch","borsh","borshch","borscht")) reagents.add_reagent("nutriment", 8) bitesize = 2 @@ -2092,7 +2087,8 @@ New() ..() - reagents.add_reagent("nutriment", 8) + reagents.add_reagent("protein", 2) + reagents.add_reagent("nutriment", 6) bitesize = 3 /obj/item/weapon/reagent_containers/food/snacks/appletart @@ -2125,7 +2121,8 @@ filling_color = "#FF7575" New() ..() - reagents.add_reagent("nutriment", 30) + reagents.add_reagent("protein", 20) + reagents.add_reagent("nutriment", 10) bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/meatbreadslice @@ -2145,7 +2142,8 @@ filling_color = "#8AFF75" New() ..() - reagents.add_reagent("nutriment", 30) + reagents.add_reagent("protein", 20) + reagents.add_reagent("nutriment", 10) bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/xenomeatbreadslice @@ -2228,7 +2226,8 @@ filling_color = "#E6AEDB" New() ..() - reagents.add_reagent("nutriment", 25) + reagents.add_reagent("protein", 25) + reagents.add_reagent("nutriment", 5) reagents.add_reagent("alkysine", 10) bitesize = 2 @@ -2249,7 +2248,8 @@ filling_color = "#FAF7AF" New() ..() - reagents.add_reagent("nutriment", 25) + reagents.add_reagent("protein", 15) + reagents.add_reagent("nutriment", 10) bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/cheesecakeslice @@ -2364,7 +2364,7 @@ filling_color = "#FFF700" New() ..() - reagents.add_reagent("nutriment", 20) + reagents.add_reagent("protein", 20) bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/cheesewedge @@ -2389,7 +2389,7 @@ /obj/item/weapon/reagent_containers/food/snacks/birthdaycakeslice name = "Birthday Cake slice" - desc = "A slice of your birthday" + desc = "A slice of your birthday." icon_state = "birthdaycakeslice" trash = /obj/item/trash/plate filling_color = "#FFD6D6" @@ -2426,7 +2426,8 @@ filling_color = "#FFF896" New() ..() - reagents.add_reagent("nutriment", 20) + reagents.add_reagent("protein", 15) + reagents.add_reagent("nutriment", 5) bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/creamcheesebreadslice @@ -2511,7 +2512,8 @@ slices_num = 6 New() ..() - reagents.add_reagent("nutriment", 40) + reagents.add_reagent("nutriment", 35) + reagents.add_reagent("protein", 5) reagents.add_reagent("tomatojuice", 6) bitesize = 2 @@ -2530,7 +2532,7 @@ slices_num = 6 New() ..() - reagents.add_reagent("nutriment", 50) + reagents.add_reagent("protein", 50) reagents.add_reagent("tomatojuice", 6) bitesize = 2 @@ -2550,6 +2552,7 @@ New() ..() reagents.add_reagent("nutriment", 35) + reagents.add_reagent("protein", 5) bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/mushroompizzaslice @@ -2568,6 +2571,7 @@ New() ..() reagents.add_reagent("nutriment", 30) + reagents.add_reagent("protein", 5) reagents.add_reagent("tomatojuice", 6) reagents.add_reagent("imidazoline", 12) bitesize = 2 @@ -2799,6 +2803,7 @@ bitesize = 2 New() ..() + reagents.add_reagent("protein", 1) reagents.add_reagent("nutriment", 3) // Dough + rolling pin = flat dough @@ -2818,6 +2823,7 @@ slices_num = 3 New() ..() + reagents.add_reagent("protein", 1) reagents.add_reagent("nutriment", 3) /obj/item/weapon/reagent_containers/food/snacks/doughslice @@ -2891,7 +2897,8 @@ bitesize = 3 New() ..() - reagents.add_reagent("nutriment", 7) + reagents.add_reagent("protein", 3) + reagents.add_reagent("nutriment", 4) /obj/item/weapon/reagent_containers/food/snacks/rawcutlet name = "raw cutlet" @@ -2901,7 +2908,7 @@ bitesize = 1 New() ..() - reagents.add_reagent("nutriment", 1) + reagents.add_reagent("protein", 1) /obj/item/weapon/reagent_containers/food/snacks/cutlet name = "cutlet" @@ -2911,7 +2918,7 @@ bitesize = 2 New() ..() - reagents.add_reagent("nutriment", 2) + reagents.add_reagent("protein", 2) /obj/item/weapon/reagent_containers/food/snacks/rawmeatball name = "raw meatball" @@ -2921,7 +2928,7 @@ bitesize = 2 New() ..() - reagents.add_reagent("nutriment", 2) + reagents.add_reagent("protein", 2) /obj/item/weapon/reagent_containers/food/snacks/hotdog name = "hotdog" @@ -2930,7 +2937,7 @@ bitesize = 2 New() ..() - reagents.add_reagent("nutriment", 6) + reagents.add_reagent("protein", 6) /obj/item/weapon/reagent_containers/food/snacks/flatbread name = "flatbread" From 5e7133dd08675d9167e981287611440cea7222c6 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Tue, 30 Dec 2014 23:29:47 +1030 Subject: [PATCH 27/51] Converted baseball bats to twohanded weapons. --- .../items/stacks/sheets/sheet_types.dm | 4 +- code/game/objects/items/weapons/twohanded.dm | 51 +++++++++++++----- code/game/objects/items/weapons/weaponry.dm | 24 --------- code/modules/clothing/head/misc_special.dm | 9 +++- icons/mob/head.dmi | Bin 124484 -> 125397 bytes icons/mob/items_lefthand.dmi | Bin 155827 -> 149336 bytes icons/mob/items_righthand.dmi | Bin 159011 -> 148825 bytes icons/obj/clothing/hats.dmi | Bin 61427 -> 61697 bytes icons/obj/weapons.dmi | Bin 24988 -> 25217 bytes 9 files changed, 49 insertions(+), 39 deletions(-) diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index a5336c07978..46889cdf5cb 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -29,7 +29,7 @@ var/global/list/datum/stack_recipe/metal_recipes = list ( \ null, \ new/datum/stack_recipe("table parts", /obj/item/weapon/table_parts, 2), \ new/datum/stack_recipe("rack parts", /obj/item/weapon/table_parts/rack), \ - new/datum/stack_recipe("metal baseball bat", /obj/item/weapon/baseballbat/metal, 10, time = 20, one_per_turf = 0, on_floor = 1), \ + new/datum/stack_recipe("metal baseball bat", /obj/item/weapon/twohanded/baseballbat/metal, 10, time = 20, one_per_turf = 0, on_floor = 1), \ new/datum/stack_recipe("closet", /obj/structure/closet, 2, time = 15, one_per_turf = 1, on_floor = 1), \ null, \ new/datum/stack_recipe("canister", /obj/machinery/portable_atmospherics/canister, 10, time = 15, one_per_turf = 1, on_floor = 1), \ @@ -137,7 +137,7 @@ var/global/list/datum/stack_recipe/wood_recipes = list ( \ new/datum/stack_recipe("crossbow frame", /obj/item/weapon/crossbowframe, 5, time = 25, one_per_turf = 0, on_floor = 0), \ new/datum/stack_recipe("wooden door", /obj/structure/mineral_door/wood, 10, time = 20, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("coffin", /obj/structure/closet/coffin, 5, time = 15, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("baseball bat", /obj/item/weapon/baseballbat, 10, time = 20, one_per_turf = 0, on_floor = 1) \ + new/datum/stack_recipe("baseball bat", /obj/item/weapon/twohanded/baseballbat, 10, time = 20, one_per_turf = 0, on_floor = 1) \ // new/datum/stack_recipe("apiary", /obj/item/apiary, 10, time = 25, one_per_turf = 0, on_floor = 0) ) diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm index c8e67078b2e..d24f4a01404 100644 --- a/code/game/objects/items/weapons/twohanded.dm +++ b/code/game/objects/items/weapons/twohanded.dm @@ -21,6 +21,7 @@ var/force_wielded = 0 var/wieldsound = null var/unwieldsound = null + var/base_icon /obj/item/weapon/twohanded/proc/unwield() wielded = 0 @@ -34,6 +35,10 @@ name = "[initial(name)] (Wielded)" update_icon() +/obj/item/weapon/twohanded/New() + ..() + update_icon() + /obj/item/weapon/twohanded/mob_can_equip(M as mob, slot) //Cannot equip wielded items. if(wielded) @@ -51,7 +56,8 @@ return unwield() /obj/item/weapon/twohanded/update_icon() - return + icon_state = "[base_icon][wielded]" + item_state = icon_state /obj/item/weapon/twohanded/pickup(mob/user) unwield() @@ -106,11 +112,15 @@ wield() del(src) +/obj/item/weapon/twohanded/offhand/update_icon() + return + /* * Fireaxe */ /obj/item/weapon/twohanded/fireaxe // DEM AXES MAN, marker -Agouri icon_state = "fireaxe0" + base_icon = "fireaxe" name = "fire axe" desc = "Truly, the weapon of a madman. Who would think to fight fire with an axe?" force = 10 @@ -121,10 +131,6 @@ force_wielded = 40 attack_verb = list("attacked", "chopped", "cleaved", "torn", "cut") -/obj/item/weapon/twohanded/fireaxe/update_icon() //Currently only here to fuck with the on-mob icons. - icon_state = "fireaxe[wielded]" - return - /obj/item/weapon/twohanded/fireaxe/afterattack(atom/A as mob|obj|turf|area, mob/user as mob, proximity) if(!proximity) return ..() @@ -146,6 +152,7 @@ */ /obj/item/weapon/twohanded/dualsaber icon_state = "dualsaber0" + base_icon = "dualsaber" name = "double-bladed energy sword" desc = "Handle with care." force = 3 @@ -162,10 +169,6 @@ sharp = 1 edge = 1 -/obj/item/weapon/twohanded/dualsaber/update_icon() - icon_state = "dualsaber[wielded]" - return - /obj/item/weapon/twohanded/dualsaber/attack(target as mob, mob/living/user as mob) ..() if((CLUMSY in user.mutations) && (wielded) &&prob(40)) @@ -187,6 +190,7 @@ //spears, bay edition /obj/item/weapon/twohanded/spear icon_state = "spearglass0" + base_icon = "spearglass" name = "spear" desc = "A haphazardly-constructed yet still deadly weapon of ancient design." force = 14 @@ -201,6 +205,29 @@ hitsound = 'sound/weapons/bladeslice.ogg' attack_verb = list("attacked", "poked", "jabbed", "torn", "gored") -/obj/item/weapon/twohanded/spear/update_icon() - icon_state = "spearglass[wielded]" - return +/obj/item/weapon/twohanded/baseballbat + name = "wooden bat" + desc = "HOME RUN!" + icon_state = "woodbat0" + base_icon = "woodbat" + item_state = "woodbat" + sharp = 0 + edge = 0 + w_class = 3 + force = 15 + throw_speed = 3 + throw_range = 7 + throwforce = 7 + attack_verb = list("smashed", "beaten", "slammed", "smacked", "striked", "battered", "bonked") + hitsound = 'sound/weapons/genhit3.ogg' + force_wielded = 30 + +/obj/item/weapon/twohanded/baseballbat/metal + name = "metal bat" + desc = "A shiny metal bat." + icon_state = "metalbat0" + base_icon = "metalbat" + item_state = "metalbat" + force = 18 + w_class = 3.0 + force_wielded = 36 \ No newline at end of file diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm index a584f3db4b0..c9669c7ae6d 100644 --- a/code/game/objects/items/weapons/weaponry.dm +++ b/code/game/objects/items/weapons/weaponry.dm @@ -156,30 +156,6 @@ w_class = 3 attack_verb = list("jabbed","stabbed","ripped") -/obj/item/weapon/baseballbat - name = "wooden bat" - desc = "HOME RUN!" - icon_state = "woodbat" - item_state = "woodbat" - sharp = 0 - edge = 0 - w_class = 3 - force = 15 - throw_speed = 3 - throw_range = 7 - throwforce = 7 - attack_verb = list("smashed", "beaten", "slammed", "smacked", "striked", "battered", "bonked") - hitsound = 'sound/weapons/genhit3.ogg' - - -/obj/item/weapon/baseballbat/metal - name = "metal bat" - desc = "A shiny metal bat." - icon_state = "metalbat" - item_state = "metalbat" - force = 18 - w_class = 3.0 - /obj/item/weapon/butterfly name = "butterfly knife" desc = "A basic metal blade concealed in a lightweight plasteel grip. Small enough when folded to fit in a pocket." diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index ba72b92754b..e3701e91202 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -153,4 +153,11 @@ var/icon/earbit = new/icon("icon" = 'icons/mob/head.dmi', "icon_state" = "kittyinner") var/icon/earbit2 = new/icon("icon" = 'icons/mob/head.dmi', "icon_state" = "kittyinner2") mob.Blend(earbit, ICON_OVERLAY) - mob2.Blend(earbit2, ICON_OVERLAY) \ No newline at end of file + mob2.Blend(earbit2, ICON_OVERLAY) + +/obj/item/clothing/head/richard + name = "chicken mask" + desc = "You can hear the distant sounds of rhythmic electronica." + icon_state = "richard" + body_parts_covered = HEAD|FACE + flags = FPRINT|TABLEPASS|HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR \ No newline at end of file diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index b3a24f07c713cc0bab6f59d9ae0ca9d7466695fe..c66d9cceba1f827ad8373198925ebd5deca57818 100644 GIT binary patch delta 8750 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 delta 7830 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 Idk)Y44H*@9L;wH) diff --git a/icons/mob/items_lefthand.dmi b/icons/mob/items_lefthand.dmi index 9d7c3845d9c6b0635b69b49a5ed44aef0d7a7662..b70af9c656ed1822dd3b2805ae7a83a11c5f35d6 100644 GIT binary patch literal 149336 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 MCt)Yv+Fy?Q4@PY8Pyhe` literal 155827 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�!Ft^qWNf(;M_QE3V& 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 z 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≠gd=@p_J>8DXrxT;)^9E>J^K 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%0A=k7pcqA0&|Y&0v%gpX$=fl* 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 literal 159011 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

+jy-3mZPxGkp!GxRwI`< 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 z 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

_MlDqM~iNJPvy?n?Bzcb$6MIiC+hwhRpo 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 diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index a899995b256b9f8694cd6ef81097e9eaf02e7fea..2aba03d266400ddcfa6575859dc98a3334750957 100644 GIT binary patch delta 5688 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 YP3>oli4jt=2Hg&Ab$vCMie2>o0YAjToB#j- diff --git a/icons/obj/weapons.dmi b/icons/obj/weapons.dmi index 92b3aed2b9f95488fa75a4f75cc65dd6fb6da7a2..ffad059da4389cff7197ccd8f25cdb1bda82438b 100644 GIT binary patch delta 5099 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 delta 4868 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 qfJKjqAUGsoqU_-kCixOp Date: Wed, 31 Dec 2014 16:04:49 +1030 Subject: [PATCH 28/51] Adjusting twohanded values as discussed in diff. --- code/game/objects/items/weapons/twohanded.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm index d24f4a01404..3a025492726 100644 --- a/code/game/objects/items/weapons/twohanded.dm +++ b/code/game/objects/items/weapons/twohanded.dm @@ -220,7 +220,7 @@ throwforce = 7 attack_verb = list("smashed", "beaten", "slammed", "smacked", "striked", "battered", "bonked") hitsound = 'sound/weapons/genhit3.ogg' - force_wielded = 30 + force_wielded = 23 /obj/item/weapon/twohanded/baseballbat/metal name = "metal bat" @@ -230,4 +230,4 @@ item_state = "metalbat" force = 18 w_class = 3.0 - force_wielded = 36 \ No newline at end of file + force_wielded = 27 \ No newline at end of file From 398696122658eda847609f3f46cc14c4155e5660 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Fri, 9 Jan 2015 05:02:44 +1030 Subject: [PATCH 29/51] Readds moonwalking. --- code/modules/mob/death.dm | 2 + code/modules/mob/living/carbon/human/life.dm | 3 +- code/modules/mob/mob.dm | 64 ++++++++++++++++++-- code/modules/mob/mob_defines.dm | 3 +- html/changelog.html | 3 + interface/skin.dmf | 16 +++++ 6 files changed, 84 insertions(+), 7 deletions(-) diff --git a/code/modules/mob/death.dm b/code/modules/mob/death.dm index 3d96e3d9c0c..a97d616dee7 100644 --- a/code/modules/mob/death.dm +++ b/code/modules/mob/death.dm @@ -52,6 +52,8 @@ if(stat == DEAD) return 0 + facing_dir = null + if(!gibbed && deathmessage != "no message") // This is gross, but reliable. Only brains use it. src.visible_message("\The [src.name] [deathmessage]") diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index de66e6bef11..1d0986510ac 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1040,8 +1040,7 @@ if(halloss > 100) src << "You're in too much pain to keep going..." - for(var/mob/O in oviewers(src, null)) - O.show_message("[src] slumps to the ground, too weak to continue fighting.", 1) + src.visible_message("[src] slumps to the ground, too weak to continue fighting.") Paralyse(10) setHalLoss(99) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 5088f98108e..592d971f838 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -839,9 +839,7 @@ note dizziness decrements automatically in the mob's Life() proc. // facing verbs /mob/proc/canface() if(!canmove) return 0 - if(client.moving) return 0 - if(world.time < client.move_delay) return 0 - if(stat==2) return 0 + if(stat) return 0 if(anchored) return 0 if(monkeyizing) return 0 return 1 @@ -903,7 +901,8 @@ note dizziness decrements automatically in the mob's Life() proc. /mob/proc/facedir(var/ndir) - if(!canface()) return 0 + if(!canface() || client.moving || world.time < client.move_delay) + return 0 set_dir(ndir) if(buckled && buckled.movable) buckled.set_dir(ndir) @@ -937,6 +936,7 @@ note dizziness decrements automatically in the mob's Life() proc. /mob/proc/Stun(amount) if(status_flags & CANSTUN) + facing_dir = null stunned = max(max(stunned,amount),0) //can't go below 0, getting a low amount of stun doesn't lower your current stun return @@ -952,6 +952,7 @@ note dizziness decrements automatically in the mob's Life() proc. /mob/proc/Weaken(amount) if(status_flags & CANWEAKEN) + facing_dir = null weakened = max(max(weakened,amount),0) update_canmove() //updates lying, canmove and icons return @@ -970,6 +971,7 @@ note dizziness decrements automatically in the mob's Life() proc. /mob/proc/Paralyse(amount) if(status_flags & CANPARALYSE) + facing_dir = null paralysis = max(max(paralysis,amount),0) return @@ -984,6 +986,7 @@ note dizziness decrements automatically in the mob's Life() proc. return /mob/proc/Sleeping(amount) + facing_dir = null sleeping = max(max(sleeping,amount),0) return @@ -996,6 +999,7 @@ note dizziness decrements automatically in the mob's Life() proc. return /mob/proc/Resting(amount) + facing_dir = null resting = max(max(resting,amount),0) return @@ -1159,3 +1163,55 @@ mob/proc/yank_out_object() /mob/proc/updateicon() return + +/mob/verb/face_direction() + + set name = "Face Direction" + set category = "IC" + set src = usr + + set_face_dir() + + if(!facing_dir) + usr << "You are now not facing anything." + else + usr << "You are now facing [dir2text(facing_dir)]." + +/mob/proc/set_face_dir(var/newdir) + if(newdir) + set_dir(newdir) + facing_dir = newdir + else if(facing_dir) + facing_dir = null + else + set_dir(dir) + facing_dir = dir + +/mob/set_dir() + if(facing_dir) + if(!canface() || lying || buckled || restrained()) + facing_dir = null + else if(dir != facing_dir) + return ..(facing_dir) + else + return ..() + +/mob/verb/northfaceperm() + set hidden = 1 + facing_dir = null + set_face_dir(NORTH) + +/mob/verb/southfaceperm() + set hidden = 1 + facing_dir = null + set_face_dir(SOUTH) + +/mob/verb/eastfaceperm() + set hidden = 1 + facing_dir = null + set_face_dir(EAST) + +/mob/verb/westfaceperm() + set hidden = 1 + facing_dir = null + set_face_dir(WEST) diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 296d58d0786..1b9f1c1b764 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -90,6 +90,7 @@ var/list/languages = list() // For speaking/listening. var/list/speak_emote = list("says") // Verbs used when speaking. Defaults to 'say' if speak_emote is null. var/emote_type = 1 // Define emote default type, 1 for seen emotes, 2 for heard emotes + var/facing_dir = null // Used for the ancient art of moonwalking. var/name_archive //For admin things like possession @@ -214,7 +215,7 @@ var/universal_understand = 0 // Set to 1 to enable the mob to understand everyone, not necessarily speak var/stance_damage = 0 //Whether this mob's ability to stand has been affected - + //SSD var, changed it up some so people can have special things happen for different mobs when SSD. var/player_logged = 0 diff --git a/html/changelog.html b/html/changelog.html index b534169136d..ceb98702291 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -61,6 +61,9 @@ should be listed in the changelog upon commit though. Thanks. -->

updated:

" - - progdat += "" - - if(P in src.processing_programs) - progdat += "" - else - progdat += "" - - progdat += "" - - continue - - dat += "Disk Space: \[[src.hd.file_used]/[src.hd.file_amount]\]
" - dat += "Programs on Fixed Disk:
" - - if(!progdat) - progdat = "No programs found.
" - dat += "
NameVarietyEYLMPrPtHarvest
[S.name]#[seed.uid][seed.endurance][seed.yield][seed.lifespan][seed.maturation][seed.production][seed.potency]
[P.name]Size: [P.size]RunHaltLoadDel
[progdat]
" - - else - - dat += "Programs on Fixed Disk:
" - dat += "
No fixed disk detected.

" - - dat += "
" - - progdat = null - if((src.diskette) && (src.diskette.root)) - - dat += "Eject
" - - for(var/datum/computer/file/computer_program/P in src.diskette.root.contents) - progdat += "[P.name]Size: [P.size]" - progdat += "Run" - - if(P in src.processing_programs) - progdat += "Halt" - else - progdat += "Load" - - progdat += "Install" - - continue - - dat += "Disk Space: \[[src.diskette.file_used]/[src.diskette.file_amount]\]
" - dat += "Programs on Disk:
" - - if(!progdat) - progdat = "No data found.
" - dat += "
[progdat]
" - - else - - dat += "Programs on Disk:
" - dat += "
No diskette loaded.

" - - dat += "
" - - user << browse(dat,"window=comp2") - onclose(user,"comp2") - return - -/obj/machinery/computer2/Topic(href, href_list) - if(..()) - return - - if(!src.active_program) - if((href_list["prog"]) && (href_list["function"])) - var/datum/computer/file/computer_program/newprog = locate(href_list["prog"]) - if(newprog && istype(newprog)) - switch(href_list["function"]) - if("run") - src.run_program(newprog) - if("load") - src.load_program(newprog) - if("unload") - src.unload_program(newprog) - if((href_list["file"]) && (href_list["function"])) - var/datum/computer/file/newfile = locate(href_list["file"]) - if(!newfile) - return - switch(href_list["function"]) - if("install") - if((src.hd) && (src.hd.root) && (src.allowed(usr))) - newfile.copy_file_to_folder(src.hd.root) - - if("delete") - if(src.allowed(usr)) - src.delete_file(newfile) - - //If there is already one loaded eject, or if not and they have one insert it. - if (href_list["id"]) - switch(href_list["id"]) - if("auth") - if(!isnull(src.authid)) - src.authid.loc = get_turf(src) - src.authid = null - else - var/obj/item/I = usr.equipped() - if (istype(I, /obj/item/weapon/card/id)) - usr.drop_item() - I.loc = src - src.authid = I - if("aux") - if(!isnull(src.auxid)) - src.auxid.loc = get_turf(src) - src.auxid = null - else - var/obj/item/I = usr.equipped() - if (istype(I, /obj/item/weapon/card/id)) - usr.drop_item() - I.loc = src - src.auxid = I - - //Same but for a data disk - else if (href_list["disk"]) - if(!isnull(src.diskette)) - src.diskette.loc = get_turf(src) - src.diskette = null -/* else - var/obj/item/I = usr.equipped() - if (istype(I, /obj/item/weapon/disk/data)) - usr.drop_item() - I.loc = src - src.diskette = I -*/ - src.add_fingerprint(usr) - src.updateUsrDialog() - return - -/obj/machinery/computer2/process() - if(stat & (NOPOWER|BROKEN)) - return - use_power(250) - - for(var/datum/computer/file/computer_program/P in src.processing_programs) - P.process() - - return - -/obj/machinery/computer2/power_change() - if(stat & BROKEN) - icon_state = src.base_icon_state - src.icon_state += "b" - - else if(powered()) - icon_state = src.base_icon_state - stat &= ~NOPOWER - else - spawn(rand(0, 15)) - icon_state = src.base_icon_state - src.icon_state += "0" - stat |= NOPOWER - - -/obj/machinery/computer2/attackby(obj/item/W as obj, mob/user as mob) - if (istype(W, /obj/item/weapon/disk/data)) //INSERT SOME DISKETTES - if ((!src.diskette) && W:portable) - user.machine = src - user.drop_item() - W.loc = src - src.diskette = W - user << "You insert [W]." - src.updateUsrDialog() - return - - else if (istype(W, /obj/item/weapon/screwdriver)) - playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) - if(do_after(user, 20)) - var/obj/computer2frame/A = new /obj/computer2frame( src.loc ) - A.created_icon_state = src.base_icon_state - if (src.stat & BROKEN) - user << "\blue The broken glass falls out." - new /obj/item/weapon/shard( src.loc ) - A.state = 3 - A.icon_state = "3" - else - user << "\blue You disconnect the monitor." - A.state = 4 - A.icon_state = "4" - - for (var/obj/item/weapon/peripheral/C in src.peripherals) - C.loc = A - A.peripherals.Add(C) - - if(src.diskette) - src.diskette.loc = src.loc - - //TO-DO: move card reading to peripheral cards instead - if(src.authid) - src.authid.loc = src.loc - - if(src.auxid) - src.auxid.loc = src.loc - - if(src.hd) - src.hd.loc = A - A.hd = src.hd - - A.mainboard = new /obj/item/weapon/motherboard(A) - A.mainboard.created_name = src.name - - - A.anchored = 1 - del(src) - - else - src.attack_hand(user) - return - -/obj/machinery/computer2/proc/send_command(command, datum/signal/signal) - for(var/obj/item/weapon/peripheral/P in src.peripherals) - P.receive_command(src, command, signal) - - del(signal) - -/obj/machinery/computer2/proc/receive_command(obj/source, command, datum/signal/signal) - if(source in src.contents) - - for(var/datum/computer/file/computer_program/P in src.processing_programs) - P.receive_command(src, command, signal) - - del(signal) - - return - - -/obj/machinery/computer2/proc/run_program(datum/computer/file/computer_program/program,datum/computer/file/computer_program/host) - if(!program) - return 0 - -// src.unload_program(src.active_program) - - if(src.load_program(program)) - if(host && istype(host)) - src.host_program = host - else - src.host_program = null - - src.active_program = program - return 1 - - return 0 - -/obj/machinery/computer2/proc/load_program(datum/computer/file/computer_program/program) - if((!program) || (!program.holder)) - return 0 - - if(!(program.holder in src)) -// world << "Not in src" - program = new program.type - program.transfer_holder(src.hd) - - if(program.master != src) - program.master = src - - if(program in src.processing_programs) - return 1 - else - src.processing_programs.Add(program) - return 1 - - return 0 - -/obj/machinery/computer2/proc/unload_program(datum/computer/file/computer_program/program) - if((!program) || (!src.hd)) - return 0 - - if(program in src.processing_programs) - src.processing_programs.Remove(program) - return 1 - - return 0 - -/obj/machinery/computer2/proc/delete_file(datum/computer/file/file) - //world << "Deleting [file]..." - if((!file) || (!file.holder) || (file.holder.read_only)) - //world << "Cannot delete :(" - return 0 - - if(file in src.processing_programs) - src.processing_programs.Remove(file) - - if(src.active_program == file) - src.active_program = null - -// file.holder.root.remove_file(file) - - //world << "Now calling del on [file]..." - del(file) - return 1 \ No newline at end of file diff --git a/code/unused/computer2/filebrowse.dm b/code/unused/computer2/filebrowse.dm deleted file mode 100644 index 9ddbb9403c2..00000000000 --- a/code/unused/computer2/filebrowse.dm +++ /dev/null @@ -1,164 +0,0 @@ -/datum/computer/file/computer_program/progman - name = "ProgManager" - size = 16.0 - var/datum/computer/folder/current_folder - var/mode = 0 - var/datum/computer/file/clipboard - - - return_text() - if(..()) - return - - if((!src.current_folder) || !(src.current_folder.holder in src.master)) - src.current_folder = src.holder.root - - var/dat = "Close | " - dat += "Quit" - - switch(mode) - if(0) - dat += " |Create Folder" - //dat += " | Create File" - dat += " | Paste" - dat += " | Root" - dat += " | Drive
" - - dat += "Contents of [current_folder] | Drive:\[[src.current_folder.holder.title]]
" - dat += "Used: \[[src.current_folder.holder.file_used]/[src.current_folder.holder.file_amount]\]
" - - dat += "" - for(var/datum/computer/P in current_folder.contents) - if(P == src) - dat += "" - continue - dat += "" - dat += "" - - dat += "" - - dat += "" - dat += "" - - - if(istype(P,/datum/computer/file)) - dat += "" - - dat += "" - - dat += "
SystemSize: [src.size]SYSTEM
[P.name]Size: [P.size][(istype(P,/datum/computer/folder)) ? "FOLDER" : "[P:extension]"]DelRenameCopy
" - - if(1) - dat += " | Main" - dat += " | Eject
" - - for(var/obj/item/weapon/disk/data/D in src.master) - if(D == current_folder.holder) - dat += "[D.name]
" - else - dat += "[D.title]
" - - - return dat - - Topic(href, href_list) - if(..()) - return - - if(href_list["create"]) - if(current_folder) - var/datum/computer/F = null - switch(href_list["create"]) - if("folder") - F = new /datum/computer/folder - if(!current_folder.add_file(F)) - //world << "Couldn't add folder :(" - del(F) - if("file") - F = new /datum/computer/file - if(!current_folder.add_file(F)) - //world << "Couldn't add file :(" - del(F) - - if(href_list["file"] && href_list["function"]) - var/datum/computer/F = locate(href_list["file"]) - if(!F || !istype(F)) - return - switch(href_list["function"]) - if("open") - if(istype(F,/datum/computer/folder)) - src.current_folder = F - else if(istype(F,/datum/computer/file/computer_program)) - src.master.run_program(F,src) - src.master.updateUsrDialog() - return - - if("delete") - src.master.delete_file(F) - - if("copy") - if(istype(F,/datum/computer/file) && (!F.holder || (F.holder in src.master.contents))) - src.clipboard = F - - if("paste") - if(istype(F,/datum/computer/folder)) - if(!src.clipboard || !src.clipboard.holder || !(src.clipboard.holder in src.master.contents)) - return - - if(!istype(src.clipboard)) - return - - src.clipboard.copy_file_to_folder(F) - - if("rename") - spawn(0) - var/t = input(usr, "Please enter new name", F.name, null) as text - t = sanitize(copytext(t, 1, 16)) - if (!t) - return - if (!in_range(src.master, usr) || !(F.holder in src.master)) - return - if(F.holder.read_only) - return - F.name = capitalize(lowertext(t)) - src.master.updateUsrDialog() - return - - -/* - if(href_list["open"]) - var/datum/computer/F = locate(href_list["open"]) - if(!F || !istype(F)) - return - - if(istype(F,/datum/computer/folder)) - src.current_folder = F - else if(istype(F,/datum/computer/file/computer_program)) - src.master.run_program(F) - src.master.updateUsrDialog() - return - - if(href_list["delete"]) - var/datum/computer/F = locate(href_list["delete"]) - if(!F || !istype(F)) - return - - src.master.delete_file(F) -*/ - if(href_list["top_folder"]) - src.current_folder = src.current_folder.holder.root - - if(href_list["mode"]) - var/newmode = text2num(href_list["mode"]) - newmode = max(newmode,0) - src.mode = newmode - - if(href_list["drive"]) - var/obj/item/weapon/disk/data/D = locate(href_list["drive"]) - if(D && istype(D) && D.root) - current_folder = D.root - src.mode = 0 - - src.master.add_fingerprint(usr) - src.master.updateUsrDialog() - return \ No newline at end of file diff --git a/code/unused/computer2/med_rec.dm b/code/unused/computer2/med_rec.dm deleted file mode 100644 index 92e42e19e1b..00000000000 --- a/code/unused/computer2/med_rec.dm +++ /dev/null @@ -1,463 +0,0 @@ -/datum/computer/file/computer_program/med_data - name = "Medical Records" - size = 32.0 - active_icon = "dna" - req_access = list(ACCESS_MEDICAL) - var/authenticated = null - var/rank = null - var/screen = null - var/datum/data/record/active1 = null - var/datum/data/record/active2 = null - var/a_id = null - var/temp = null - -/datum/computer/file/computer_program/med_data/return_text() - if(..()) - return - var/dat - if (src.temp) - dat = text("[src.temp]

Clear Screen") - else - dat = text("Confirm Identity: []
", master, (src.master.authid ? text("[]", src.master.authid.name) : "----------")) - if (src.authenticated) - switch(src.screen) - if(1.0) - dat += {" -Search Records -
List Records -
-
Virus Database -
Medbot Tracking -
-
Record Maintenance -
{Log Out}
-"} - if(2.0) - dat += "Record List:
" - for(var/datum/data/record/R in data_core.general) - dat += text("[]: []
", src, R, R.fields["id"], R.fields["name"]) - //Foreach goto(132) - dat += text("
Back", src) - if(3.0) - dat += text("Records Maintenance
\nBackup To Disk
\nUpload From disk
\nDelete All Records
\n
\nBack", src, src, src, src) - if(4.0) - dat += "
Medical Record

" - if ((istype(src.active1, /datum/data/record) && data_core.general.Find(src.active1))) - dat += text("Name: [] ID: []
\nSex: []
\nAge: []
\nFingerprint: []
\nPhysical Status: []
\nMental Status: []
", src.active1.fields["name"], src.active1.fields["id"], src, src.active1.fields["sex"], src, src.active1.fields["age"], src, src.active1.fields["fingerprint"], src, src.active1.fields["p_stat"], src, src.active1.fields["m_stat"]) - else - dat += "General Record Lost!
" - if ((istype(src.active2, /datum/data/record) && data_core.medical.Find(src.active2))) - dat += text("
\n
Medical Data

\nBlood Type: []
\n
\nMinor Disabilities: []
\nDetails: []
\n
\nMajor Disabilities: []
\nDetails: []
\n
\nAllergies: []
\nDetails: []
\n
\nCurrent Diseases: [] (per disease info placed in log/comment section)
\nDetails: []
\n
\nImportant Notes:
\n\t[]
\n
\n
Comments/Log

", src, src.active2.fields["b_type"], src, src.active2.fields["mi_dis"], src, src.active2.fields["mi_dis_d"], src, src.active2.fields["ma_dis"], src, src.active2.fields["ma_dis_d"], src, src.active2.fields["alg"], src, src.active2.fields["alg_d"], src, src.active2.fields["cdi"], src, src.active2.fields["cdi_d"], src, src.active2.fields["notes"]) - var/counter = 1 - while(src.active2.fields[text("com_[]", counter)]) - dat += text("[]
Delete Entry

", src.active2.fields[text("com_[]", counter)], src, counter) - counter++ - dat += text("Add Entry

", src) - dat += text("Delete Record (Medical Only)

", src) - else - dat += "Medical Record Lost!
" - dat += text("New Record

") - dat += text("\nPrint Record
\nBack
", src, src) - if(5.0) - dat += {"
Virus Database
-
GBS -
Common Cold -
Flu -
Jungle Fever -
Clowning Around -
Plasmatoid -
Space Rhinovirus -
Robot Transformation -
Back"} - if(6.0) - dat += "
Medical Robot Monitor
" - dat += "Back" - dat += "
Medical Robots:" - var/bdat = null - for(var/obj/machinery/bot/medbot/M in world) - var/turf/bl = get_turf(M) - bdat += "[M.name] - \[[bl.x],[bl.y]\] - [M.on ? "Online" : "Offline"]
" - if(!isnull(M.reagent_glass)) - bdat += "Reservoir: \[[M.reagent_glass.reagents.total_volume]/[M.reagent_glass.reagents.maximum_volume]\]" - else - bdat += "Using Internal Synthesizer." - - if(!bdat) - dat += "
None detected
" - else - dat += "[bdat]" - - else - else - dat += text("{Log In}", src) - dat += "
{Quit}" - - return dat - -/datum/computer/file/computer_program/med_data/Topic(href, href_list) - if(..()) - return - if (!( data_core.general.Find(src.active1) )) - src.active1 = null - if (!( data_core.medical.Find(src.active2) )) - src.active2 = null - if (href_list["temp"]) - src.temp = null - else if (href_list["logout"]) - src.authenticated = null - src.screen = null - src.active1 = null - src.active2 = null - else if (href_list["login"]) - if (istype(usr, /mob/living/silicon)) - src.active1 = null - src.active2 = null - src.authenticated = 1 - src.rank = "AI" - src.screen = 1 - else if (istype(src.master.authid, /obj/item/weapon/card/id)) - src.active1 = null - src.active2 = null - if (src.check_access(src.master.authid)) - src.authenticated = src.master.authid.registered_name - src.rank = src.master.authid.assignment - src.screen = 1 - if (src.authenticated) - - if(href_list["screen"]) - src.screen = text2num(href_list["screen"]) - if(src.screen < 1) - src.screen = 1 - - src.active1 = null - src.active2 = null - - if(href_list["vir"]) - switch(href_list["vir"]) - if("gbs") - src.temp = {"Name: GBS -
Number of stages: 5 -
Spread: Airborne Transmission -
Possible Cure: Spaceacillin -
Affected Species: Human -
-
Notes: If left untreated death will occur. -
-
Severity: Major"} - if("cc") - src.temp = {"Name: Common Cold -
Number of stages: 3 -
Spread: Airborne Transmission -
Possible Cure: Rest -
Affected Species: Human -
-
Notes: If left untreated the subject will contract the flu. -
-
Severity: Minor"} - if("f") - src.temp = {"Name: The Flu -
Number of stages: 3 -
Spread: Airborne Transmission -
Possible Cure: Rest -
Affected Species: Human -
-
Notes: If left untreated the subject will feel quite unwell. -
-
Severity: Medium"} - if("jf") - src.temp = {"Name: Jungle Fever -
Number of stages: 1 -
Spread: Airborne Transmission -
Possible Cure: None -
Affected Species: Monkey -
-
Notes: monkeys with this disease will bite humans, causing humans to spontaneously to mutate into a monkey. -
-
Severity: Medium"} - if("ca") - src.temp = {"Name: Clowning Around -
Number of stages: 4 -
Spread: Airborne Transmission -
Possible Cure: Spaceacillin -
Affected Species: Human -
-
Notes: Subjects are affected by rampant honking and a fondness for shenanigans. They may also spontaneously phase through closed airlocks. -
-
Severity: Laughable"} - if("p") - src.temp = {"Name: Plasmatoid -
Number of stages: 3 -
Spread: Airborne Transmission -
Possible Cure: Inaprovaline -
Affected Species: Human and Monkey -
-
Notes: With this disease the victim will need phoron to breathe. -
-
Severity: Major"} - if("dna") - src.temp = {"Name: Space Rhinovirus -
Number of stages: 4 -
Spread: Airborne Transmission -
Possible Cure: Spaceacillin -
Affected Species: Human -
-
Notes: This disease transplants the genetic code of the intial vector into new hosts. -
-
Severity: Medium"} - if("bot") - src.temp = {"Name: Robot Transformation -
Number of stages: 5 -
Spread: Infected food -
Possible Cure: None -
Affected Species: Human -
-
Notes: This disease, actually acute nanomachine infection, converts the victim into a cyborg. -
-
Severity: Major"} - - if (href_list["del_all"]) - src.temp = text("Are you sure you wish to delete all records?
\n\tYes
\n\tNo
", src, src) - - if (href_list["del_all2"]) - for(var/datum/data/record/R in data_core.medical) - del(R) - src.temp = "All records deleted." - - if (href_list["field"]) - var/a1 = src.active1 - var/a2 = src.active2 - switch(href_list["field"]) - if("fingerprint") - if (istype(src.active1, /datum/data/record)) - var/t1 = input("Please input fingerprint hash:", "Med. records", src.active1.fields["id"], null) as text - if ((!( t1 ) || !( src.authenticated ) || (!src.master) || usr.stat || usr.restrained() || (!in_range(src.master, usr) && (!istype(usr, /mob/living/silicon))) || src.active1 != a1)) - return - src.active1.fields["fingerprint"] = t1 - if("sex") - if (istype(src.active1, /datum/data/record)) - if (src.active1.fields["sex"] == "Male") - src.active1.fields["sex"] = "Female" - else - src.active1.fields["sex"] = "Male" - if("age") - if (istype(src.active1, /datum/data/record)) - var/t1 = input("Please input age:", "Med. records", src.active1.fields["age"], null) as text - if ((!( t1 ) || !( src.authenticated ) || (!src.master) || usr.stat || usr.restrained() || (!in_range(src.master, usr) && (!istype(usr, /mob/living/silicon))) || src.active1 != a1)) - return - src.active1.fields["age"] = t1 - if("mi_dis") - if (istype(src.active2, /datum/data/record)) - var/t1 = input("Please input minor disabilities list:", "Med. records", src.active2.fields["mi_dis"], null) as text - if ((!( t1 ) || !( src.authenticated ) || (!src.master) || usr.stat || usr.restrained() || (!in_range(src.master, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) - return - src.active2.fields["mi_dis"] = t1 - if("mi_dis_d") - if (istype(src.active2, /datum/data/record)) - var/t1 = input("Please summarize minor dis.:", "Med. records", src.active2.fields["mi_dis_d"], null) as message - if ((!( t1 ) || !( src.authenticated ) || (!src.master) || usr.stat || usr.restrained() || (!in_range(src.master, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) - return - src.active2.fields["mi_dis_d"] = t1 - if("ma_dis") - if (istype(src.active2, /datum/data/record)) - var/t1 = input("Please input major diabilities list:", "Med. records", src.active2.fields["ma_dis"], null) as text - if ((!( t1 ) || !( src.authenticated ) || (!src.master) || usr.stat || usr.restrained() || (!in_range(src.master, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) - return - src.active2.fields["ma_dis"] = t1 - if("ma_dis_d") - if (istype(src.active2, /datum/data/record)) - var/t1 = input("Please summarize major dis.:", "Med. records", src.active2.fields["ma_dis_d"], null) as message - if ((!( t1 ) || !( src.authenticated ) || (!src.master) || usr.stat || usr.restrained() || (!in_range(src.master, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) - return - src.active2.fields["ma_dis_d"] = t1 - if("alg") - if (istype(src.active2, /datum/data/record)) - var/t1 = input("Please state allergies:", "Med. records", src.active2.fields["alg"], null) as text - if ((!( t1 ) || !( src.authenticated ) || (!src.master) || usr.stat || usr.restrained() || (!in_range(src.master, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) - return - src.active2.fields["alg"] = t1 - if("alg_d") - if (istype(src.active2, /datum/data/record)) - var/t1 = input("Please summarize allergies:", "Med. records", src.active2.fields["alg_d"], null) as message - if ((!( t1 ) || !( src.authenticated ) || (!src.master) || usr.stat || usr.restrained() || (!in_range(src.master, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) - return - src.active2.fields["alg_d"] = t1 - if("cdi") - if (istype(src.active2, /datum/data/record)) - var/t1 = input("Please state diseases:", "Med. records", src.active2.fields["cdi"], null) as text - if ((!( t1 ) || !( src.authenticated ) || (!src.master) || usr.stat || usr.restrained() || (!in_range(src.master, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) - return - src.active2.fields["cdi"] = t1 - if("cdi_d") - if (istype(src.active2, /datum/data/record)) - var/t1 = input("Please summarize diseases:", "Med. records", src.active2.fields["cdi_d"], null) as message - if ((!( t1 ) || !( src.authenticated ) || (!src.master) || usr.stat || usr.restrained() || (!in_range(src.master, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) - return - src.active2.fields["cdi_d"] = t1 - if("notes") - if (istype(src.active2, /datum/data/record)) - var/t1 = input("Please summarize notes:", "Med. records", src.active2.fields["notes"], null) as message - if ((!( t1 ) || !( src.authenticated ) || (!src.master) || usr.stat || usr.restrained() || (!in_range(src.master, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) - return - src.active2.fields["notes"] = t1 - if("p_stat") - if (istype(src.active1, /datum/data/record)) - src.temp = text("Physical Condition:
\n\t*Deceased*
\n\t*Unconscious*
\n\tActive
\n\tPhysically Unfit
", src, src, src, src) - if("m_stat") - if (istype(src.active1, /datum/data/record)) - src.temp = text("Mental Condition:
\n\t*Insane*
\n\t*Unstable*
\n\t*Watch*
\n\tStable
", src, src, src, src) - if("b_type") - if (istype(src.active2, /datum/data/record)) - src.temp = text("Blood Type:
\n\tA- A+
\n\tB- B+
\n\tAB- AB+
\n\tO- O+
", src, src, src, src, src, src, src, src) - else - - if (href_list["p_stat"]) - if (src.active1) - switch(href_list["p_stat"]) - if("deceased") - src.active1.fields["p_stat"] = "*Deceased*" - if("unconscious") - src.active1.fields["p_stat"] = "*Unconscious*" - if("active") - src.active1.fields["p_stat"] = "Active" - if("unfit") - src.active1.fields["p_stat"] = "Physically Unfit" - - if (href_list["m_stat"]) - if (src.active1) - switch(href_list["m_stat"]) - if("insane") - src.active1.fields["m_stat"] = "*Insane*" - if("unstable") - src.active1.fields["m_stat"] = "*Unstable*" - if("watch") - src.active1.fields["m_stat"] = "*Watch*" - if("stable") - src.active2.fields["m_stat"] = "Stable" - - - if (href_list["b_type"]) - if (src.active2) - switch(href_list["b_type"]) - if("an") - src.active2.fields["b_type"] = "A-" - if("bn") - src.active2.fields["b_type"] = "B-" - if("abn") - src.active2.fields["b_type"] = "AB-" - if("on") - src.active2.fields["b_type"] = "O-" - if("ap") - src.active2.fields["b_type"] = "A+" - if("bp") - src.active2.fields["b_type"] = "B+" - if("abp") - src.active2.fields["b_type"] = "AB+" - if("op") - src.active2.fields["b_type"] = "O+" - - - if (href_list["del_r"]) - if (src.active2) - src.temp = "Are you sure you wish to delete the record (Medical Portion Only)?
\n\tYes
\n\tNo
" - - if (href_list["del_r2"]) - if (src.active2) - del(src.active2) - - if (href_list["d_rec"]) - var/datum/data/record/R = locate(href_list["d_rec"]) - var/datum/data/record/M = locate(href_list["d_rec"]) - if (!( data_core.general.Find(R) )) - src.temp = "Record Not Found!" - return - for(var/datum/data/record/E in data_core.medical) - if ((E.fields["name"] == R.fields["name"] || E.fields["id"] == R.fields["id"])) - M = E - else - //Foreach continue //goto(2540) - src.active1 = R - src.active2 = M - src.screen = 4 - - if (href_list["new"]) - if ((istype(src.active1, /datum/data/record) && !( istype(src.active2, /datum/data/record) ))) - var/datum/data/record/R = new /datum/data/record( ) - R.fields["name"] = src.active1.fields["name"] - R.fields["id"] = src.active1.fields["id"] - R.name = text("Medical Record #[]", R.fields["id"]) - R.fields["b_type"] = "Unknown" - R.fields["mi_dis"] = "None" - R.fields["mi_dis_d"] = "No minor disabilities have been declared." - R.fields["ma_dis"] = "None" - R.fields["ma_dis_d"] = "No major disabilities have been diagnosed." - R.fields["alg"] = "None" - R.fields["alg_d"] = "No allergies have been detected in this patient." - R.fields["cdi"] = "None" - R.fields["cdi_d"] = "No diseases have been diagnosed at the moment." - R.fields["notes"] = "No notes." - data_core.medical += R - src.active2 = R - src.screen = 4 - - if (href_list["add_c"]) - if (!( istype(src.active2, /datum/data/record) )) - return - var/a2 = src.active2 - var/t1 = input("Add Comment:", "Med. records", null, null) as message - if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src.master, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) - return - var/counter = 1 - while(src.active2.fields[text("com_[]", counter)]) - counter++ - src.active2.fields[text("com_[]", counter)] = text("Made by [] ([]) on [], 2556
[]", src.authenticated, src.rank, time2text(world.realtime, "DDD MMM DD hh:mm:ss"), t1) - - if (href_list["del_c"]) - if ((istype(src.active2, /datum/data/record) && src.active2.fields[text("com_[]", href_list["del_c"])])) - src.active2.fields[text("com_[]", href_list["del_c"])] = "Deleted" - - if (href_list["search"]) - var/t1 = input("Search String: (Name or ID)", "Med. records", null, null) as text - if ((!( t1 ) || usr.stat || (!src.master) || !( src.authenticated ) || usr.restrained() || ((!in_range(src.master, usr)) && (!istype(usr, /mob/living/silicon))))) - return - src.active1 = null - src.active2 = null - t1 = lowertext(t1) - for(var/datum/data/record/R in data_core.general) - if ((lowertext(R.fields["name"]) == t1 || t1 == lowertext(R.fields["id"]))) - src.active1 = R - else - - if (!( src.active1 )) - src.temp = text("Could not locate record [].", t1) - else - for(var/datum/data/record/E in data_core.medical) - if ((E.fields["name"] == src.active1.fields["name"] || E.fields["id"] == src.active1.fields["id"])) - src.active2 = E - else - - src.screen = 4 - - if (href_list["print_p"]) - var/info = "
Medical Record

" - if ((istype(src.active1, /datum/data/record) && data_core.general.Find(src.active1))) - info += text("Name: [] ID: []
\nSex: []
\nAge: []
\nFingerprint: []
\nPhysical Status: []
\nMental Status: []
", src.active1.fields["name"], src.active1.fields["id"], src.active1.fields["sex"], src.active1.fields["age"], src.active1.fields["fingerprint"], src.active1.fields["p_stat"], src.active1.fields["m_stat"]) - else - info += "General Record Lost!
" - if ((istype(src.active2, /datum/data/record) && data_core.medical.Find(src.active2))) - info += text("
\n
Medical Data

\nBlood Type: []
\n
\nMinor Disabilities: []
\nDetails: []
\n
\nMajor Disabilities: []
\nDetails: []
\n
\nAllergies: []
\nDetails: []
\n
\nCurrent Diseases: [] (per disease info placed in log/comment section)
\nDetails: []
\n
\nImportant Notes:
\n\t[]
\n
\n
Comments/Log

", src.active2.fields["b_type"], src.active2.fields["mi_dis"], src.active2.fields["mi_dis_d"], src.active2.fields["ma_dis"], src.active2.fields["ma_dis_d"], src.active2.fields["alg"], src.active2.fields["alg_d"], src.active2.fields["cdi"], src.active2.fields["cdi_d"], src.active2.fields["notes"]) - var/counter = 1 - while(src.active2.fields[text("com_[]", counter)]) - info += text("[]
", src.active2.fields[text("com_[]", counter)]) - counter++ - else - info += "Medical Record Lost!
" - info += "" - - var/datum/signal/signal = new - signal.data["data"] = info - signal.data["title"] = "Medical Record" - src.peripheral_command("print",signal) - - src.master.add_fingerprint(usr) - src.master.updateUsrDialog() - return \ No newline at end of file diff --git a/code/unused/computer2/messenger.dm b/code/unused/computer2/messenger.dm deleted file mode 100644 index 5b57783d953..00000000000 --- a/code/unused/computer2/messenger.dm +++ /dev/null @@ -1,97 +0,0 @@ -/datum/computer/file/computer_program/messenger - name = "Messenger" - size = 8.0 - var/messages = null - var/screen_name = "User" - -//To-do: take screen_name from inserted id card?? -//Saving log to file datum - - return_text() - if(..()) - return - - var/dat = "Close | " - dat += "Quit
" - - dat += "SpaceMessenger V4.1.2
" - - dat += "Send Message" - - dat += " | Clear" - dat += " | Print" - - dat += " | Name:[src.screen_name]
" - - dat += messages - - dat += "" - - return dat - - Topic(href, href_list) - if(..()) - return - - if(href_list["send_msg"]) - var/t = input(usr, "Please enter messenger", src.id_tag, null) as text - t = sanitize(copytext(t, 1, MAX_MESSAGE_LEN)) - if (!t) - return - if (!in_range(src.master, usr)) - return - - var/datum/signal/signal = new - signal.data["type"] = "message" - signal.data["data"] = t - signal.data["sender"] = src.screen_name - src.messages += "→ You:
[t]
" - - peripheral_command("send signal", signal) - - if(href_list["func_msg"]) - switch(href_list["func_msg"]) - if("clear") - src.messages = null - - if("print") - var/datum/signal/signal = new - signal.data["data"] = src.messages - signal.data["title"] = "Chatlog" - peripheral_command("print", signal) - - //if("save") - //TO-DO - - - if(href_list["set_name"]) - var/t = input(usr, "Please enter screen name", src.id_tag, null) as text - t = sanitize(copytext(t, 1, 20)) - if (!t) - return - if (!in_range(src.master, usr)) - return - - src.screen_name = t - - src.master.add_fingerprint(usr) - src.master.updateUsrDialog() - return - - receive_command(obj/source, command, datum/signal/signal) - if(..() || !signal) - return - - if(command == "radio signal") - switch(signal.data["type"]) - if("message") - var/sender = signal.data["sender"] - if(!sender) - sender = "Unknown" - - src.messages += "← From [sender]:
[signal.data["data"]]
" - if(src.master.active_program == src) - playsound(src.master.loc, 'sound/machines/twobeep.ogg', 50, 1) - src.master.updateUsrDialog() - - return \ No newline at end of file diff --git a/code/unused/computer2/peripherals.dm b/code/unused/computer2/peripherals.dm deleted file mode 100644 index 2316e3b10e3..00000000000 --- a/code/unused/computer2/peripherals.dm +++ /dev/null @@ -1,209 +0,0 @@ -/obj/item/weapon/peripheral - name = "Peripheral card" - desc = "A computer circuit board." - icon = 'icons/obj/module.dmi' - icon_state = "id_mod" - item_state = "electronic" - w_class = 2 - var/obj/machinery/computer2/host - var/id = null - - New() - ..() - spawn(2) - if(istype(src.loc,/obj/machinery/computer2)) - host = src.loc - host.peripherals.Add(src) -// var/setup_id = "\ref[src]" -// src.id = copytext(setup_id,4,(length(setup_id)-1) ) - - Del() - if(host) - host.peripherals.Remove(src) - ..() - - - proc - receive_command(obj/source, command, datum/signal/signal) - if((source != host) || !(src in host)) - return 1 - - if(!command) - return 1 - - return 0 - - send_command(command, datum/signal/signal) - if(!command || !host) - return - - src.host.receive_command(src, command, signal) - - return - -/obj/item/weapon/peripheral/radio - name = "Wireless card" - var/frequency = 1419 - var/code = null - var/datum/radio_frequency/radio_connection - New() - ..() - if(radio_controller) - initialize() - - initialize() - set_frequency(frequency) - - proc - set_frequency(new_frequency) - radio_controller.remove_object(src, frequency) - frequency = new_frequency - radio_connection = radio_controller.add_object(src, frequency) - - receive_command(obj/source, command, datum/signal/signal) - if(..()) - return - - if(!signal || !radio_connection) - return - - switch(command) - if("send signal") - src.radio_connection.post_signal(src, signal) - - return - - receive_signal(datum/signal/signal) - if(!signal || (signal.encryption && signal.encryption != code)) - return - - var/datum/signal/newsignal = new - newsignal.data = signal.data - if(src.code) - newsignal.encryption = src.code - - send_command("radio signal",newsignal) - return - -/obj/item/weapon/peripheral/printer - name = "Printer module" - desc = "A small printer designed to fit into a computer casing." - icon_state = "card_mod" - var/printing = 0 - - receive_command(obj/source,command, datum/signal/signal) - if(..()) - return - - if(!signal) - return - - if((command == "print") && !src.printing) - src.printing = 1 - - var/print_data = signal.data["data"] - var/print_title = signal.data["title"] - if(!print_data) - src.printing = 0 - return - spawn(50) - var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( src.host.loc ) - P.info = print_data - if(print_title) - P.name = "[print_title]" - - src.printing = 0 - return - - return - -/obj/item/weapon/peripheral/prize_vendor - name = "Prize vending module" - desc = "An arcade prize dispenser designed to fit inside a computer casing." - icon_state = "power_mod" - var/last_vend = 0 //Delay between vends if manually activated(ie a dude is holding it and shaking stuff out) - - receive_command(obj/source,command, datum/signal/signal) - if(..()) - return - - if(command == "vend prize") - src.vend_prize() - - return - - attack_self(mob/user as mob) - if( (last_vend + 400) < world.time) - user << "You shake something out of [src]!" - src.vend_prize() - src.last_vend = world.time - else - user << "\red [src] isn't ready to dispense a prize yet." - - return - - proc/vend_prize() - var/obj/item/prize - var/prizeselect = rand(1,4) - var/turf/prize_location = null - - if(src.host) - prize_location = src.host.loc - else - prize_location = get_turf(src) - - switch(prizeselect) - if(1) - prize = new /obj/item/weapon/money( prize_location ) - prize.name = "space ticket" - prize.desc = "It's almost like actual currency!" - if(2) - prize = new /obj/item/device/radio/beacon( prize_location ) - prize.name = "electronic blink toy game" - prize.desc = "Blink. Blink. Blink." - if(3) - prize = new /obj/item/weapon/flame/lighter/zippo( prize_location ) - prize.name = "Burno Lighter" - prize.desc = "Almost like a decent lighter!" - if(4) - prize = new /obj/item/weapon/c_tube( prize_location ) - prize.name = "toy sword" - prize.icon = 'icons/obj/weapons.dmi' - prize.icon_state = "sword1" - prize.desc = "A sword made of cheap plastic." - -/* -/obj/item/weapon/peripheral/card_scanner - name = "ID scanner module" - icon_state = "card_mod" - var/obj/item/weapon/card/id/authid = null - - attack_self(mob/user as mob) - if(authid) - user << "The card falls out." - src.authid.loc = get_turf(user) - src.authid = null - - return - - receive_command(obj/source,command, datum/signal/signal) - if(..()) - return - - if(!signal || (signal.data["ref_id"] != "\ref[src]") ) - return - - switch(command) - if("eject card") - if(src.authid) - src.authid.loc = src.host.loc - src.authid = null - if("add card access") - var/new_access = signal.data["access"] - if(!new_access) - return - - - - return -*/ \ No newline at end of file diff --git a/code/unused/conveyor.dm b/code/unused/conveyor.dm deleted file mode 100644 index 5001660d7fe..00000000000 --- a/code/unused/conveyor.dm +++ /dev/null @@ -1,398 +0,0 @@ -// converyor belt - -// moves items/mobs/movables in set direction every ptick - - -/obj/machinery/conveyor - icon = 'icons/obj/recycling.dmi' - icon_state = "conveyor0" - name = "conveyor belt" - desc = "A conveyor belt." - anchored = 1 - var/operating = 0 // 1 if running forward, -1 if backwards, 0 if off - var/operable = 1 // true if can operate (no broken segments in this belt run) - var/basedir // this is the default (forward) direction, set by the map dir - // note dir var can vary when the direction changes - - var/list/affecting // the list of all items that will be moved this ptick - var/id = "" // the control ID - must match controller ID - // following two only used if a diverter is present - var/divert = 0 // if non-zero, direction to divert items - var/divdir = 0 // if diverting, will be conveyer dir needed to divert (otherwise dense) - - - - // create a conveyor - -/obj/machinery/conveyor/New() - ..() - basedir = dir - setdir() - - // set the dir and target turf depending on the operating direction - -/obj/machinery/conveyor/proc/setdir() - if(operating == -1) - set_dir(turn(basedir,180)) - else - set_dir(basedir) - update() - - - // update the icon depending on the operating condition - -/obj/machinery/conveyor/proc/update() - if(stat & BROKEN) - icon_state = "conveyor-b" - operating = 0 - return - if(!operable) - operating = 0 - icon_state = "conveyor[(operating != 0) && !(stat & NOPOWER)]" - - - // machine process - // move items to the target location -/obj/machinery/conveyor/process() - if(stat & (BROKEN | NOPOWER)) - return - if(!operating) - return - use_power(100) - - var/movedir = dir // base movement dir - if(divert && dir==divdir) // update if diverter present - movedir = divert - - - affecting = loc.contents - src // moved items will be all in loc - spawn(1) // slight delay to prevent infinite propagation due to map order - var/items_moved = 0 - for(var/atom/movable/A in affecting) - if(!A.anchored) - if(isturf(A.loc)) // this is to prevent an ugly bug that forces a player to drop what they're holding if they recently pick it up from the conveyer belt - if(ismob(A)) - var/mob/M = A - if(M.buckled == src) - var/obj/machinery/conveyor/C = locate() in get_step(src, dir) - M.buckled = null - step(M,dir) - if(C) - M.buckled = C - else - new/obj/item/stack/cable_coil/cut(M.loc) - else - step(M,movedir) - else - step(A,movedir) - items_moved++ - if(items_moved >= 10) - break - -// attack with item, place item on conveyor - -/obj/machinery/conveyor/attackby(var/obj/item/I, mob/user) - if(istype(I, /obj/item/weapon/grab)) // special handling if grabbing a mob - var/obj/item/weapon/grab/G = I - G.affecting.Move(src.loc) - del(G) - return - else if(istype(I, /obj/item/stack/cable_coil)) // if cable, see if a mob is present - var/mob/M = locate() in src.loc - if(M) - if (M == user) - src.visible_message("\blue [M] ties \himself to the conveyor.") - // note don't check for lying if self-tying - else - if(M.lying) - user.visible_message("\blue [M] has been tied to the conveyor by [user].", "\blue You tie [M] to the converyor!") - else - user << "\blue [M] must be lying down to be tied to the converyor!" - return - M.buckled = src - src.add_fingerprint(user) - I:use(1) - M.lying = 1 - return - - // else if no mob in loc, then allow coil to be placed - - else if(istype(I, /obj/item/weapon/wirecutters)) - var/mob/M = locate() in src.loc - if(M && M.buckled == src) - M.buckled = null - src.add_fingerprint(user) - if (M == user) - src.visible_message("\blue [M] cuts \himself free from the conveyor.") - else - src.visible_message("\blue [M] had been cut free from the conveyor by [user].") - return - - if(isrobot(user)) - return - - // otherwise drop and place on conveyor - user.drop_item() - if(I && I.loc) I.loc = src.loc - return - -// attack with hand, move pulled object onto conveyor - -/obj/machinery/conveyor/attack_hand(mob/user as mob) - if ((!( user.canmove ) || user.restrained() || !( user.pulling ))) - return - if (user.pulling.anchored) - return - if ((user.pulling.loc != user.loc && get_dist(user, user.pulling) > 1)) - return - if (ismob(user.pulling)) - var/mob/M = user.pulling - M.stop_pulling() - step(user.pulling, get_dir(user.pulling.loc, src)) - user.stop_pulling() - else - step(user.pulling, get_dir(user.pulling.loc, src)) - user.stop_pulling() - return - - -// make the conveyor broken -// also propagate inoperability to any connected conveyor with the same ID -/obj/machinery/conveyor/proc/broken() - stat |= BROKEN - update() - - var/obj/machinery/conveyor/C = locate() in get_step(src, basedir) - if(C) - C.set_operable(basedir, id, 0) - - C = locate() in get_step(src, turn(basedir,180)) - if(C) - C.set_operable(turn(basedir,180), id, 0) - - -//set the operable var if ID matches, propagating in the given direction - -/obj/machinery/conveyor/proc/set_operable(stepdir, match_id, op) - - if(id != match_id) - return - operable = op - - update() - var/obj/machinery/conveyor/C = locate() in get_step(src, stepdir) - if(C) - C.set_operable(stepdir, id, op) - -/* -/obj/machinery/conveyor/verb/destroy() - set src in view() - src.broken() -*/ - -/obj/machinery/conveyor/power_change() - ..() - update() - - -// converyor diverter -// extendable arm that can be switched so items on the conveyer are diverted sideways -// situate in same turf as conveyor -// only works if belts is running proper direction -// -// -/obj/machinery/diverter - icon = 'icons/obj/recycling.dmi' - icon_state = "diverter0" - name = "diverter" - desc = "A diverter arm for a conveyor belt." - anchored = 1 - layer = FLY_LAYER - var/obj/machinery/conveyor/conv // the conveyor this diverter works on - var/deployed = 0 // true if diverter arm is extended - var/operating = 0 // true if arm is extending/contracting - var/divert_to // the dir that diverted items will be moved - var/divert_from // the dir items must be moving to divert - - -// create a diverter -// set up divert_to and divert_from directions depending on dir state -/obj/machinery/diverter/New() - - ..() - - switch(dir) - if(NORTH) - divert_to = WEST // stuff will be moved to the west - divert_from = NORTH // if entering from the north - if(SOUTH) - divert_to = EAST - divert_from = NORTH - if(EAST) - divert_to = EAST - divert_from = SOUTH - if(WEST) - divert_to = WEST - divert_from = SOUTH - if(NORTHEAST) - divert_to = NORTH - divert_from = EAST - if(NORTHWEST) - divert_to = NORTH - divert_from = WEST - if(SOUTHEAST) - divert_to = SOUTH - divert_from = EAST - if(SOUTHWEST) - divert_to = SOUTH - divert_from = WEST - spawn(2) - // wait for map load then find the conveyor in this turf - conv = locate() in src.loc - if(conv) // divert_from dir must match possible conveyor movement - if(conv.basedir != divert_from && conv.basedir != turn(divert_from,180) ) - del(src) // if no dir match, then delete self - set_divert() - update() - -// update the icon state depending on whether the diverter is extended -/obj/machinery/diverter/proc/update() - icon_state = "diverter[deployed]" - -// call to set the diversion vars of underlying conveyor -/obj/machinery/diverter/proc/set_divert() - if(conv) - if(deployed) - conv.divert = divert_to - conv.divdir = divert_from - else - conv.divert= 0 - - -// *** TESTING click to toggle -/obj/machinery/diverter/Click() - toggle() - - -// toggle between arm deployed and not deployed, showing animation -// -/obj/machinery/diverter/proc/toggle() - if( stat & (NOPOWER|BROKEN)) - return - - if(operating) - return - - use_power(50) - operating = 1 - if(deployed) - flick("diverter10",src) - icon_state = "diverter0" - sleep(10) - deployed = 0 - else - flick("diverter01",src) - icon_state = "diverter1" - sleep(10) - deployed = 1 - operating = 0 - update() - set_divert() - -// don't allow movement into the 'backwards' direction if deployed -/obj/machinery/diverter/CanPass(atom/movable/O, var/turf/target) - var/direct = get_dir(O, target) - if(direct == divert_to) // prevent movement through body of diverter - return 0 - if(!deployed) - return 1 - return(direct != turn(divert_from,180)) - -// don't allow movement through the arm if deployed -/obj/machinery/diverter/CheckExit(atom/movable/O, var/turf/target) - var/direct = get_dir(O, target) - if(direct == turn(divert_to,180)) // prevent movement through body of diverter - return 0 - if(!deployed) - return 1 - return(direct != divert_from) - - - - - -// the conveyor control switch -// -// - -/obj/machinery/conveyor_switch - - name = "conveyor switch" - desc = "A conveyor control switch." - icon = 'icons/obj/recycling.dmi' - icon_state = "switch-off" - var/position = 0 // 0 off, -1 reverse, 1 forward - var/last_pos = -1 // last direction setting - var/operated = 1 // true if just operated - - var/id = "" // must match conveyor IDs to control them - - var/list/conveyors // the list of converyors that are controlled by this switch - anchored = 1 - - - -/obj/machinery/conveyor_switch/New() - ..() - update() - - spawn(5) // allow map load - conveyors = list() - for(var/obj/machinery/conveyor/C in world) - if(C.id == id) - conveyors += C - -// update the icon depending on the position - -/obj/machinery/conveyor_switch/proc/update() - if(position<0) - icon_state = "switch-rev" - else if(position>0) - icon_state = "switch-fwd" - else - icon_state = "switch-off" - - -// timed process -// if the switch changed, update the linked conveyors - -/obj/machinery/conveyor_switch/process() - if(!operated) - return - operated = 0 - - for(var/obj/machinery/conveyor/C in conveyors) - C.operating = position - C.setdir() - -// attack with hand, switch position -/obj/machinery/conveyor_switch/attack_hand(mob/user) - if(position == 0) - if(last_pos < 0) - position = 1 - last_pos = 0 - else - position = -1 - last_pos = 0 - else - last_pos = position - position = 0 - - operated = 1 - update() - - // find any switches with same id as this one, and set their positions to match us - for(var/obj/machinery/conveyor_switch/S in world) - if(S.id == src.id) - S.position = position - S.update() diff --git a/code/unused/disease2/cureimplanter.dm b/code/unused/disease2/cureimplanter.dm deleted file mode 100644 index 45064954561..00000000000 --- a/code/unused/disease2/cureimplanter.dm +++ /dev/null @@ -1,42 +0,0 @@ -/obj/item/weapon/cureimplanter - name = "Hypospray injector" - icon = 'icons/obj/items.dmi' - icon_state = "implanter1" - var/datum/disease2/resistance/resistance = null - var/works = 0 - var/datum/disease2/disease/virus2 = null - item_state = "syringe_0" - throw_speed = 1 - throw_range = 5 - w_class = 2.0 - - -/obj/item/weapon/cureimplanter/attack(mob/target as mob, mob/user as mob) - if(ismob(target)) - for(var/mob/O in viewers(world.view, user)) - if (target != user) - O.show_message(text("\red [] is trying to inject [] with [src.name]!", user, target), 1) - else - O.show_message("\red [user] is trying to inject themselves with [src.name]!", 1) - if(!do_mob(user, target,60)) return - - - for(var/mob/O in viewers(world.view, user)) - if (target != user) - O.show_message(text("\red [] injects [] with [src.name]!", user, target), 1) - else - O.show_message("\red [user] injects themself with [src.name]!", 1) - - - var/mob/living/carbon/M = target - - if(works == 0 && prob(25)) - M.resistances2 += resistance - if(M.virus2) - M.virus2.cure_added(resistance) - else if(works == 1) - M.adjustToxLoss(rand(20,50)) - else if(works == 2) - M.adjustToxLoss(rand(50,100)) - else if(works == 3) - infect_virus2(M,virus2,1) diff --git a/code/unused/disease2/curer.dm b/code/unused/disease2/curer.dm deleted file mode 100644 index dab15f4967e..00000000000 --- a/code/unused/disease2/curer.dm +++ /dev/null @@ -1,154 +0,0 @@ -/obj/machinery/computer/curer - name = "Cure Research Machine" - icon = 'icons/obj/computer.dmi' - icon_state = "dna" -// brightnessred = 0 -// brightnessgreen = 2 //Used for multicoloured lighting on BS12 -// brightnessblue = 2 - var/curing - var/virusing - circuit = "/obj/item/weapon/circuitboard/mining" - - var/obj/item/weapon/virusdish/dish = null - -/obj/machinery/computer/curer/attackby(var/obj/I as obj, var/mob/user as mob) - /*if(istype(I, /obj/item/weapon/screwdriver)) - playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) - if(do_after(user, 20)) - if (src.stat & BROKEN) - user << "\blue The broken glass falls out." - var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc ) - new /obj/item/weapon/shard( src.loc ) - var/obj/item/weapon/circuitboard/curer/M = new /obj/item/weapon/circuitboard/curer( A ) - for (var/obj/C in src) - C.loc = src.loc - A.circuit = M - A.state = 3 - A.icon_state = "3" - A.anchored = 1 - del(src) - else - user << "\blue You disconnect the monitor." - var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc ) - var/obj/item/weapon/circuitboard/curer/M = new /obj/item/weapon/circuitboard/curer( A ) - for (var/obj/C in src) - C.loc = src.loc - A.circuit = M - A.state = 4 - A.icon_state = "4" - A.anchored = 1 - del(src)*/ - if(istype(I,/obj/item/weapon/virusdish)) - var/mob/living/carbon/c = user - if(!dish) - - dish = I - c.drop_item() - I.loc = src - - //else - src.attack_hand(user) - return - -/obj/machinery/computer/curer/attack_ai(var/mob/user as mob) - return src.attack_hand(user) - -/obj/machinery/computer/curer/attack_paw(var/mob/user as mob) - - return src.attack_hand(user) - return - -/obj/machinery/computer/curer/attack_hand(var/mob/user as mob) - if(..()) - return - user.machine = src - var/dat - if(curing) - dat = "Antibody production in progress" - else if(virusing) - dat = "Virus production in progress" - else if(dish) - dat = "Virus dish inserted" - if(dish.virus2) - if(dish.growth >= 100) - dat += "
Begin antibody production" - dat += "
Begin virus production" - else - dat += "
Insufficent cells to attempt to create cure" - else - dat += "
Please check dish contents" - - dat += "
Eject disk" - else - dat = "Please insert dish" - - user << browse(dat, "window=computer;size=400x500") - onclose(user, "computer") - return - -/obj/machinery/computer/curer/process() - ..() - - if(stat & (NOPOWER|BROKEN)) - return - use_power(500) - src.updateDialog() - - if(curing) - curing -= 1 - if(curing == 0) - icon_state = "dna" - if(dish.virus2) - createcure(dish.virus2) - if(virusing) - virusing -= 1 - if(virusing == 0) - icon_state = "dna" - if(dish.virus2) - createvirus(dish.virus2) - - return - -/obj/machinery/computer/curer/Topic(href, href_list) - if(..()) - return - if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon))) - usr.machine = src - - if (href_list["antibody"]) - curing = 30 - dish.growth -= 50 - src.icon_state = "dna" - if (href_list["virus"]) - virusing = 30 - dish.growth -= 100 - src.icon_state = "dna" - else if(href_list["eject"]) - dish.loc = src.loc - dish = null - - src.add_fingerprint(usr) - src.updateUsrDialog() - return - - -/obj/machinery/computer/curer/proc/createcure(var/datum/disease2/disease/virus2) - var/obj/item/weapon/cureimplanter/implanter = new /obj/item/weapon/cureimplanter(src.loc) - implanter.resistance = new /datum/disease2/resistance(dish.virus2) - if(probG("Virus curing",3)) - implanter.works = 0 - else - implanter.works = rand(1,2) - state("The [src.name] Buzzes") - -/obj/machinery/computer/curer/proc/createvirus(var/datum/disease2/disease/virus2) - var/obj/item/weapon/cureimplanter/implanter = new /obj/item/weapon/cureimplanter(src.loc) - implanter.name = "Viral implanter (MAJOR BIOHAZARD)" - implanter.virus2 = dish.virus2.getcopy() - implanter.works = 3 - state("The [src.name] Buzzes") - - -/obj/machinery/computer/curer/proc/state(var/msg) - for(var/mob/O in hearers(src, null)) - O.show_message("\icon[src] \blue [msg]", 2) diff --git a/code/unused/disease2/monkeydispensor.dm b/code/unused/disease2/monkeydispensor.dm deleted file mode 100644 index 13d1b9806f6..00000000000 --- a/code/unused/disease2/monkeydispensor.dm +++ /dev/null @@ -1,30 +0,0 @@ -/obj/machinery/disease2/monkeycloner - name = "Monkey dispensor" - icon = 'icons/obj/cloning.dmi' - icon_state = "pod_0" - density = 1 - anchored = 1 - - var/cloning = 0 - -/obj/machinery/disease2/monkeycloner/attack_hand() - if(!cloning) - cloning = 150 - - icon_state = "pod_g" - -/obj/machinery/disease2/monkeycloner/process() - if(stat & (NOPOWER|BROKEN)) - return - use_power(500) - src.updateDialog() - - if(cloning) - cloning -= 1 - if(!cloning) - new /mob/living/carbon/monkey(src.loc) - icon_state = "pod_0" - - - - return diff --git a/code/unused/dna.dm b/code/unused/dna.dm deleted file mode 100644 index 604acbefc6b..00000000000 --- a/code/unused/dna.dm +++ /dev/null @@ -1,962 +0,0 @@ -/proc/scram(n) - var/t = "" - var/p = null - p = 1 - while(p <= n) - t = text("[][]", t, rand(1, 9)) - p++ - return t - -/obj/machinery/computer/dna - name = "DNA operations computer" - desc = "A Computer used to advanced DNA stuff." - icon_state = "dna" - var/obj/item/weapon/card/data/scan = null - var/obj/item/weapon/card/data/modify = null - var/obj/item/weapon/card/data/modify2 = null - var/mode = null - var/temp = null - -/obj/machinery/computer/dna/attack_ai(mob/user as mob) - return src.attack_hand(user) - -/obj/machinery/computer/dna/attack_paw(mob/user as mob) - return src.attack_hand(user) - -/obj/machinery/computer/dna/attack_hand(mob/user as mob) - if(..()) - return - user.machine = src - if (istype(user, /mob/living/carbon/human) || istype(user, /mob/living/silicon/ai)) - var/dat = text("Please Insert the cards into the slots
\n\t\t\t\tFunction Disk: []
\n\t\t\t\tTarget Disk: []
\n\t\t\t\tAux. Data Disk: []
\n\t\t\t\t\t(Not always used!)
\n\t\t\t\t[]", src, (src.scan ? text("[]", src.scan.name) : "----------"), src, (src.modify ? text("[]", src.modify.name) : "----------"), src, (src.modify2 ? text("[]", src.modify2.name) : "----------"), (src.scan ? text("Execute Function", src) : "No function disk inserted!")) - if (src.temp) - dat = text("[]

Clear Message", src.temp, src) - user << browse(dat, "window=dna_comp") - onclose(user, "dna_comp") - else - var/dat = text("[]
\n\t\t\t\t[] []
\n\t\t\t\t[] []
\n\t\t\t\t[] []
\n\t\t\t\t\t(Not always used!)
\n\t\t\t\t[]", stars("Please Insert the cards into the slots"), stars("Function Disk:"), src, (src.scan ? text("[]", src.scan.name) : "----------"), stars("Target Disk:"), src, (src.modify ? text("[]", src.modify.name) : "----------"), stars("Aux. Data Disk:"), src, (src.modify2 ? text("[]", src.modify2.name) : "----------"), (src.scan ? text("[]", src, stars("Execute Function")) : stars("No function disk inserted!"))) - if (src.temp) - dat = text("[]

[]", stars(src.temp), src, stars("Clear Message")) - user << browse(dat, "window=dna_comp") - onclose(user, "dna_comp") - return - -/obj/machinery/computer/dna/Topic(href, href_list) - if(..()) - return - if ((usr.contents.Find(src) || ((get_dist(src, usr) <= 1 || usr.telekinesis == 1) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon/ai))) - usr.machine = src - if (href_list["modify"]) - if (src.modify) - src.modify.loc = src.loc - src.modify = null - src.mode = null - else - var/obj/item/I = usr.equipped() - if (istype(I, /obj/item/weapon/card/data)) - usr.drop_item() - I.loc = src - src.modify = I - src.mode = null - if (href_list["modify2"]) - if (src.modify2) - src.modify2.loc = src.loc - src.modify2 = null - src.mode = null - else - var/obj/item/I = usr.equipped() - if (istype(I, /obj/item/weapon/card/data)) - usr.drop_item() - I.loc = src - src.modify2 = I - src.mode = null - if (href_list["scan"]) - if (src.scan) - src.scan.loc = src.loc - src.scan = null - src.mode = null - else - var/obj/item/I = usr.equipped() - if (istype(I, /obj/item/weapon/card/data)) - usr.drop_item() - I.loc = src - src.scan = I - src.mode = null - if (href_list["clear"]) - src.temp = null - if (href_list["execute"]) - if ((src.scan && src.scan.function)) - switch(src.scan.function) - if("data_mutate") - if (src.modify) - if (!( findtext(src.scan.data, "-", 1, null) )) - if ((src.modify.data && src.scan.data && length(src.modify.data) >= length(src.scan.data))) - src.modify.data = text("[][]", src.scan.data, (length(src.modify.data) > length(src.scan.data) ? copytext(src.modify.data, length(src.scan.data) + 1, length(src.modify.data) + 1) : null)) - else - src.temp = "Disk Failure: Cannot examine data! (Null or wrong format)" - else - var/d = findtext(src.modify.data, "-", 1, null) - var/t = copytext(src.modify.data, d + 1, length(src.modify.data) + 1) - d = text2num(copytext(1, d, null)) - if ((d && t && src.modify.data && src.scan.data && length(src.modify.data) >= (length(t) + d - 1) )) - src.modify.data = text("[][][]", copytext(src.modify.data, 1, d), t, (length(src.modify.data) > length(t) + d ? copytext(src.modify.data, length(t) + d, length(src.modify.data) + 1) : null)) - else - src.temp = "Disk Failure: Cannot examine data! (Null or wrong format)" - else - src.temp = "Disk Failure: Cannot read target disk!" - if("dna_seq") - src.temp = "DNA Systems Help:\nHuman DNA sequences: (Compressed in *.dna format version 10.76)\n\tSpecies Identification Marker: (28 chromosomes)\n\t\t5BDFE293BA5500F9FFFD500AAFFE\n\tStructural Enzymes:\n\t\tCDE375C9A6C25A7DBDA50EC05AC6CEB63\n\t\tNote: The first id set is used for DNA clean up operations.\n\tUsed Enzymes:\n\t\t493DB249EB6D13236100A37000800AB71\n\tSpecies/Genus Classification: Homo Sapien\n\nMonkey DNA sequences: (Compressed in *.dna format version 10.76)\n\tSpecies Identification Marker: (16 chromosomes)\n\t\t2B6696D2B127E5A4\n\tStructural Enzymes:\n\t\tCDEAF5B90AADBC6BA8033DB0A7FD613FA\n\t\tNote: The first id set is used for DNA clean up operations.\n\tUsed Enzymes:\n\t\tC8FFFE7EC09D80AEDEDB9A5A0B4085B61\n\tSpecies/Genus Classification: Generic Monkey\n>" - if("dna_help") - src.temp = "DNA Systems Help:\nThe DNA systems consists 3 systems.\nI. DNA Scanner/Implanter - This system is slightly advanced to use. It accepts\n\t1 disk. Before you wish to run a function/program you must implant the\n\tdisk data into the temporary memory. Note that once this is done the disk can\n\tbe removed to place a data disk in.\nII. DNA computer - This is a simple yet fast computer that basically operates on data.\nIII. Restructurer - This device reorganizes the anatomical structure of the subject\n\taccording to the DNA sequences. Please note that it is illegal to perform a\n\ttransfer from one species to or from the Homo sapiens species but\n\thuman to human is acceptable under UNSD guidlines.\n\tNote: This machine is programmed to operate on specific preprogrammed species with\n\tspecialized anatomical blueprints hard coded into its databanks. It cannot operate\n\ton other species. (Current: Human, Monkey)\n\nData Disks:\n\tThese run on 2 (or 3) types: DNA scanner program disks and data modification\nfunctions (and disk modification functions)\n\nDisk-Copy\n\tThis erases the target disk and completely copies the data from the aux. disk.\nDisk-Erase\n\tThis erases everything on the target disk.\nData-Clear\n\tThis erases (clears) only the data.\n\nData-Trunicate\n\tThis removes data from the target disk (parameters gathered from data slot on target\n\tdisk). This fuction has 4 modes (a,b,c,default) defined by this way. (mode id)(#)\n\ta - This cuts # data from the end. (ex a1 on ABCD = ABC)\n\tb - This cuts # data from the beginning. (ex b1 on ABCD = BCD)\n\tc - This limits the data from the end. (ex c1 on ABCD = A)\n\tdefault - This limits the data from the end. (ex 1 on ABCD = D)\nData-Add\n\tThis adds thedata on the aux. disk to the data on the target disk.\nData-Sramble\n\tThis scrambles the data on the target disk. The length is equal to\n\tthe length of the original data.\nData-Input\n\tThis lets you input data into the data slot of any data disk.\n\tNote: This doesn't work only on storage.\nData-Mutate\n\tThis basically inserts text. You follow this format:\n\tpos-text (or just text for automatic pos 1)\n\tie 2-IVE on FOUR yields FIVE\n" - if("data_add") - if (src.modify) - if (src.modify2) - if ((src.modify.data && src.modify2.data)) - src.modify.data += src.modify2.data - src.temp = text("Done!
New Data:
[]", src.modify.data) - else - src.temp = "Cannot read data! (may be null)" - else - src.temp = "Disk Failure: Cannot read aux. data disk!" - else - src.temp = "Disk Failure: Cannot read target disk!" - if("data_scramble") - if (src.modify) - if (length(text("[]", src.modify.data)) >= 1) - src.modify.data = scram(length(text("[]", src.modify.data))) - src.temp = text("Data scrambled: []", src.modify.data) - else - src.temp = "No data to scramble" - else - src.temp = "Disk Failure: Cannot read target disk!" - if("data_input") - if (src.modify) - var/dat = input(usr, ">", text("[]", src.name), null) as text - var/s = src.scan - var/m = src.modify - if ((usr.stat || usr.restrained() || src.modify != m || src.scan != s)) - return - if (((get_dist(src, usr) <= 1 || usr.telekinesis == 1) && istype(src.loc, /turf))) - src.modify.data = dat - else - src.temp = "Disk Failure: Cannot read target disk!" - if("disk_copy") - if (src.modify) - if (src.modify2) - src.modify.function = src.modify2.function - src.modify.data = src.modify2.data - src.modify.special = src.modify2.special - src.temp = "All disk data/programs copied." - else - src.temp = "Disk Failure: Cannot read aux. data disk!" - else - src.temp = "Disk Failure: Cannot read target disk!" - if("disk_dis") - if (src.modify) - src.temp = text("Function: [][]
Data: []", src.modify.function, (src.modify.special ? text("-[]", src.modify.special) : null), src.modify.data) - else - src.temp = "Disk Failure: Cannot read target disk!" - if("disk_erase") - if (src.modify) - src.modify.data = null - src.modify.function = "storage" - src.modify.special = null - src.temp = "All Disk contents deleted." - else - src.temp = "Disk Failure: Cannot read target disk!" - if("data_clear") - if (src.modify) - src.modify.data = null - src.temp = "Disk data cleared." - else - src.temp = "Disk Failure: Cannot read target disk!" - if("data_trun") - if (src.modify) - if ((src.modify.data && src.scan.data)) - var/l1 = length(src.modify.data) - var/l2 = max(round(text2num(src.scan.data)), 1) - switch(copytext(src.modify.data, 1, 2)) - if("a") - if (l1 > l2) - src.modify.data = copytext(src.modify.data, 1, (l1 - l2) + 1) - else - src.modify.data = "" - src.temp = text("Done!
New Data:
[]", src.modify.data) - if("b") - if (l1 > l2) - src.modify.data = copytext(src.modify.data, l2, l1 + 1) - else - src.modify.data = "" - src.temp = text("Done!
New Data:
[]", src.modify.data) - if("c") - if (l1 >= l2) - src.modify.data = copytext(src.modify.data, l1 - l2, l1 + 1) - src.temp = text("Done!
New Data:
[]", src.modify.data) - else - if (l1 >= l2) - src.modify.data = copytext(src.modify.data, 1, l2 + 1) - src.temp = text("Done!
New Data:
[]", src.modify.data) - else - src.temp = "Cannot read data! (may be null and note that function data slot is used instead of aux disk!!)" - else - src.temp = "Disk Failure: Cannot read target disk!" - else - else - src.temp = "System Failure: Cannot read disk function!" - src.add_fingerprint(usr) - src.updateUsrDialog() - return - -/obj/machinery/computer/dna/ex_act(severity) - switch(severity) - if(1.0) - //SN src = null - del(src) - return - if(2.0) - if (prob(50)) - //SN src = null - del(src) - return - else - return - -/obj/machinery/dna_scanner/allow_drop() - return 0 - -/obj/machinery/dna_scanner/relaymove(mob/user as mob) - if (user.stat) - return - src.go_out() - return - -/obj/machinery/dna_scanner/verb/eject() - set src in oview(1) - - if (usr.stat != 0) - return - src.go_out() - add_fingerprint(usr) - return - -/obj/machinery/dna_scanner/verb/move_inside() - set src in oview(1) - - if (usr.stat != 0) - return - if (src.occupant) - usr << "\blue The scanner is already occupied!" - return - if (usr.abiotic()) - usr << "\blue Subject cannot have abiotic items on." - return - usr.stop_pulling() - usr.client.perspective = EYE_PERSPECTIVE - usr.client.eye = src - usr.loc = src - src.occupant = usr - src.icon_state = "scanner_1" - for(var/obj/O in src) - //O = null - del(O) - //Foreach goto(124) - src.add_fingerprint(usr) - return - -/obj/machinery/dna_scanner/attackby(obj/item/weapon/grab/G as obj, user as mob) - if ((!( istype(G, /obj/item/weapon/grab) ) || !( ismob(G.affecting) ))) - return - if (src.occupant) - user << "\blue The scanner is already occupied!" - return - if (G.affecting.abiotic()) - user << "\blue Subject cannot have abiotic items on." - return - var/mob/M = G.affecting - if (M.client) - M.client.perspective = EYE_PERSPECTIVE - M.client.eye = src - M.loc = src - src.occupant = M - src.icon_state = "scanner_1" - for(var/obj/O in src) - O.loc = src.loc - //Foreach goto(154) - src.add_fingerprint(user) - //G = null - del(G) - return - -/obj/machinery/dna_scanner/proc/go_out() - if ((!( src.occupant ) || src.locked)) - return - for(var/obj/O in src) - O.loc = src.loc - //Foreach goto(30) - if (src.occupant.client) - src.occupant.client.eye = src.occupant.client.mob - src.occupant.client.perspective = MOB_PERSPECTIVE - src.occupant.loc = src.loc - src.occupant = null - src.icon_state = "scanner_0" - return - -/obj/machinery/dna_scanner/ex_act(severity) - switch(severity) - if(1.0) - for(var/atom/movable/A as mob|obj in src) - A.loc = src.loc - ex_act(severity) - //Foreach goto(35) - //SN src = null - del(src) - return - if(2.0) - if (prob(50)) - for(var/atom/movable/A as mob|obj in src) - A.loc = src.loc - ex_act(severity) - //Foreach goto(108) - //SN src = null - del(src) - return - if(3.0) - if (prob(25)) - for(var/atom/movable/A as mob|obj in src) - A.loc = src.loc - ex_act(severity) - //Foreach goto(181) - //SN src = null - del(src) - return - else - return - - -/obj/machinery/dna_scanner/blob_act() - if(prob(75)) - for(var/atom/movable/A as mob|obj in src) - A.loc = src.loc - del(src) - -/obj/machinery/scan_console/ex_act(severity) - - switch(severity) - if(1.0) - //SN src = null - del(src) - return - if(2.0) - if (prob(50)) - //SN src = null - del(src) - return - else - return - -/obj/machinery/scan_console/blob_act() - - if(prob(75)) - del(src) - -/obj/machinery/scan_console/power_change() - if(stat & BROKEN) - icon_state = "broken" - else if(powered()) - icon_state = initial(icon_state) - stat &= ~NOPOWER - else - spawn(rand(0, 15)) - src.icon_state = "c_unpowered" - stat |= NOPOWER - -/obj/machinery/scan_console/New() - ..() - spawn( 5 ) - src.connected = locate(/obj/machinery/dna_scanner, get_step(src, WEST)) - return - return - -/obj/machinery/scan_console/process() - if(stat & (NOPOWER|BROKEN)) - return - use_power(250) - - var/mob/M - if (!( src.status )) - return - if (!( src.func )) - src.temp = "No function loaded into memory core!" - src.status = null - if ((src.connected && src.connected.occupant)) - M = src.connected.occupant - if (src.status == "load") - src.prog_p1 = null - src.prog_p2 = null - src.prog_p3 = null - src.prog_p4 = null - switch(src.func) - if("dna_trun") - if (src.data) - src.prog_p1 = copytext(src.data, 1, 2) - src.prog_p2 = text2num(src.data) - src.prog_p3 = src.special - src.status = "dna_trun" - src.temp = "Executing trunication function on occupant." - else - src.temp = "No data implanted in core memory." - src.status = null - if("dna_scan") - if (src.special) - if (src.scan) - if (istype(M, /mob)) - switch(src.special) - if("UI") - src.temp = text("Scan Complete:
Data downloaded to disk!
Unique Identifier: []", M.primary.uni_identity) - src.scan.data = M.primary.uni_identity - if("SE") - src.temp = text("Scan Complete:
Data downloaded to disk!
Structural Enzymes: []", M.primary.struc_enzyme) - src.scan.data = M.primary.struc_enzyme - if("UE") - src.temp = text("Scan Complete:
Data downloaded to disk!
Used Enzynmes: []", M.primary.use_enzyme) - src.scan.data = M.primary.use_enzyme - if("SI") - src.temp = text("Scan Complete:
Data downloaded to disk!
Species Identifier: []", M.primary.spec_identity) - src.scan.data = M.primary.spec_identity - else - else - src.temp = "No occupant to scan!" - else - src.temp = "Error: No disk to upload data to." - else - src.temp = "Error: Function program errors." - src.status = null - if("dna_replace") - if ((src.data && src.special)) - src.prog_p1 = src.special - src.prog_p2 = src.data - src.status = "dna_replace" - src.temp = "Executing repalcement function on occupant." - else - src.temp = "Error: No DNA data loaded into core or function program errors." - src.status = null - if("dna_add") - if ((src.data && src.special)) - src.prog_p1 = src.special - src.prog_p2 = src.data - src.status = "dna_add" - src.temp = "Executing addition function on occupant." - else - src.temp = "Error: No DNA data loaded into core or function program errors." - src.status = null - else - src.temp = "Cannot execute program!" - src.status = null - else - if (src.status == "dna_trun") - if (istype(M, /mob)) - var/t = null - switch(src.prog_p3) - if("UI") - t = M.primary.uni_identity - if("SE") - t = M.primary.struc_enzyme - if("UE") - t = M.primary.use_enzyme - if("SI") - t = M.primary.spec_identity - else - if (!( src.prog_p4 )) - switch(src.prog_p1) - if("a") - src.prog_p4 = length(t) - if("b") - src.prog_p4 = 1 - else - else - if (src.prog_p1 == "a") - src.prog_p4-- - else - if (src.prog_p1 == "b") - src.prog_p4-- - switch(src.prog_p1) - if("a") - if (src.prog_p4 <= 0) - src.temp = "Trunication complete" - src.status = null - else - t = copytext(t, 1, length(t)) - src.temp = text("Trunicating []'s DNA sequence...
[]
Status: [] units left.

Emergency Abort", M.name, t, src.prog_p4, src) - if("b") - if (src.prog_p4 <= 0) - src.temp = "Trunication complete" - src.status = null - else - t = copytext(t, 2, length(t) + 1) - src.temp = text("Trunicating []'s DNA sequence...
[]
Status: [] units left.

Emergency Abort", M.name, t, src.prog_p4, src) - if("c") - if (length(t) <= src.prog_p2) - src.temp = "Limitation complete" - src.status = null - else - t = copytext(t, 1, length(t)) - src.temp = text("Limiting []'s DNA sequence...
[]
Status: [] units converting to [] units.

Emergency Abort", M.name, t, length(t), src.prog_p2, src) - else - if (length(t) <= src.prog_p2) - src.temp = "Limitation complete" - src.status = null - else - t = copytext(t, 2, length(t) + 1) - src.temp = text("Limiting []'s DNA sequence...
[]
Status: [] units converting to [] units.

Emergency Abort", M.name, t, length(t), src.prog_p2, src) - switch(src.prog_p3) - if("UI") - M.primary.uni_identity = t - if("SE") - M.primary.struc_enzyme = t - if("UE") - M.primary.use_enzyme = t - if("SI") - M.primary.spec_identity = t - else - else - src.temp = "Process terminated due to lack of occupant in DNA chamber." - src.status = null - else - if (src.status == "dna_replace") - if (istype(M, /mob)) - var/t = null - switch(src.prog_p1) - if("UI") - t = M.primary.uni_identity - if("SE") - t = M.primary.struc_enzyme - if("UE") - t = M.primary.use_enzyme - if("SI") - t = M.primary.spec_identity - else - if (!( src.prog_p4 )) - src.prog_p4 = 1 - else - src.prog_p4++ - if ((src.prog_p4 > length(t) || src.prog_p4 > length(src.prog_p2))) - src.temp = "Replacement complete" - src.status = null - else - t = text("[][][]", copytext(t, 1, src.prog_p4), copytext(src.prog_p2, src.prog_p4, src.prog_p4 + 1), (src.prog_p4 < length(t) ? copytext(t, src.prog_p4 + 1, length(t) + 1) : null)) - src.temp = text("Replacing []'s DNA sequence...
[]
Target: []
Status: At position []

Emergency Abort", M.name, t, src.prog_p2, src.prog_p4, src) - switch(src.prog_p1) - if("UI") - M.primary.uni_identity = t - if("SE") - M.primary.struc_enzyme = t - if("UE") - M.primary.use_enzyme = t - if("SI") - M.primary.spec_identity = t - else - else - src.temp = "Process terminated due to lack of occupant in DNA chamber." - src.status = null - else - if (src.status == "dna_add") - if (istype(M, /mob)) - var/t = null - switch(src.prog_p1) - if("UI") - t = M.primary.uni_identity - if("SE") - t = M.primary.struc_enzyme - if("UE") - t = M.primary.use_enzyme - if("SI") - t = M.primary.spec_identity - else - if (!( src.prog_p4 )) - src.prog_p4 = 1 - else - src.prog_p4++ - if (src.prog_p4 > length(src.prog_p2)) - src.temp = "Addition complete" - src.status = null - else - t = text("[][]", t, copytext(src.prog_p2, src.prog_p4, src.prog_p4 + 1)) - src.temp = text("Adding to []'s DNA sequence...
[]
Adding: []
Position: []

Emergency Abort", M.name, t, src.prog_p2, src.prog_p4, src) - switch(src.prog_p1) - if("UI") - M.primary.uni_identity = t - if("SE") - M.primary.struc_enzyme = t - if("UE") - M.primary.use_enzyme = t - if("SI") - M.primary.spec_identity = t - else - else - src.temp = "Process terminated due to lack of occupant in DNA chamber." - src.status = null - else - src.status = null - src.temp = "Unknown system error." - src.updateDialog() - return - -/obj/machinery/scan_console/attack_paw(user as mob) - return src.attack_hand(user) - -/obj/machinery/scan_console/attack_ai(user as mob) - return src.attack_hand(user) - -/obj/machinery/scan_console/attack_hand(user as mob) - if(..()) - return - var/dat - if (src.temp) - dat = text("[]

Clear Message", src.temp, src) - else - if (src.connected) - var/mob/occupant = src.connected.occupant - dat = "Occupant Statistics:
" - if (occupant) - var/t1 - switch(occupant.stat) - if(0) - t1 = "Conscious" - if(1) - t1 = "Unconscious" - else - t1 = "*dead*" - dat += text("[]\tHealth %: [] ([])

", (occupant.health > 50 ? "" : ""), occupant.health, t1) - else - dat += "The scanner is empty.
" - if (!( src.connected.locked )) - dat += text("Lock (Unlocked)
", src) - else - dat += text("Unlock (Locked)
", src) - dat += text("Disk: []
\n[]
\n[]
", src, - (src.scan ? text("[]", src.scan.name) : "----------"), - (src.scan ? text("Upload Data", src) : "No disk to upload"), - ((src.data || src.func || src.special) ? text("Clear Data
Execute Data
Function Type: [][]
Data: []", src, src, src.func, (src.special ? text("-[]", src.special) : null), src.data) : "No data uploaded")) - dat += text("

Close", user) - user << browse(dat, "window=scanner;size=400x500") - onclose(user, "scanner") - return - -/obj/machinery/scan_console/Topic(href, href_list) - if(..()) - return - if ((usr.contents.Find(src) || (get_dist(src, usr) <= 1 || usr.telekinesis == 1) && istype(src.loc, /turf)) || (istype(usr, /mob/living/silicon/ai))) - usr.machine = src - if (href_list["locked"]) - if ((src.connected && src.connected.occupant)) - src.connected.locked = !( src.connected.locked ) - if (href_list["scan"]) - if (src.scan) - src.scan.loc = src.loc - src.scan = null - else - var/obj/item/I = usr.equipped() - if (istype(I, /obj/item/weapon/card/data)) - usr.drop_item() - I.loc = src - src.scan = I - if (href_list["u_dat"]) - if ((src.scan && !( src.status ))) - if ((src.scan.function && src.scan.function != "storage")) - src.func = src.scan.function - src.special = src.scan.special - if (src.scan.data) - src.data = src.scan.data - else - src.temp = "No disk found or core data access lock out!" - if (href_list["c_dat"]) - if (!src.status) - src.func = null - src.data = null - src.special = null - else - src.temp = "No disk found or core data access lock out!" - if (href_list["clear"]) - src.temp = null - if (href_list["abort"]) - src.status = null - if (href_list["e_dat"]) - if (!( src.status )) - src.status = "load" - src.temp = "Loading..." - src.add_fingerprint(usr) - src.updateUsrDialog() - return - -/obj/machinery/restruct/allow_drop() - return 0 - -/obj/machinery/restruct/verb/eject() - set src in oview(1) - - if (usr.stat != 0) - return - src.go_out() - add_fingerprint(usr) - return - -/obj/machinery/restruct/verb/operate() - set src in oview(1) - - src.add_fingerprint(usr) - if ((src.occupant && src.occupant.primary)) - switch(src.occupant.primary.spec_identity) - if("5BDFE293BA5500F9FFFD500AAFFE") - if (!istype(src.occupant, /mob/living/carbon/human)) - for(var/obj/O in src.occupant) - del(O) - - var/mob/living/carbon/human/O = new /mob/living/carbon/human( src ) - if(ticker.killer == src.occupant) - O.memory = src.occupant.memory - ticker.killer = O - var/mob/M = src.occupant - O.start = 1 - O.primary = M.primary - M.primary = null - var/t1 = hex2num(copytext(O.primary.uni_identity, 25, 28)) - if (t1 < 125) - O.gender = MALE - else - O.gender = FEMALE - M << "Genetic Transversal Complete!" - if (M.client) - M << "Transferring..." - M.client.mob = O - O << "Neural Sequencing Complete!" - O.loc = src - src.occupant = O - //M = null - del(M) - src.occupant = O - src.occupant << "Done!" - if("2B6696D2B127E5A4") - if (!istype(src.occupant, /mob/living/carbon/monkey)) - for(var/obj/O in src.occupant) - del(O) - var/mob/living/carbon/monkey/O = new /mob/living/carbon/monkey(src) - if(ticker.killer == src.occupant) - O.memory = src.occupant.memory - ticker.killer = O - var/mob/M = src.occupant - O.start = 1 - O.primary = M.primary - M.primary = null - M << "Genetic Transversal Complete!" - if (M.client) - M << "Transferring..." - M.client.mob = O - O << "Neural Sequencing Complete!" - O.loc = src - O << "Genetic Transversal Complete!" - src.occupant = O - del(M) - O.name = text("monkey ([])", copytext(md5(src.occupant.primary.uni_identity), 2, 6)) - src.occupant << "Done!" - else - if (istype(src.occupant, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = src.occupant - - var/speak = (length(H.primary.struc_enzyme) >= 25 ? hex2num(copytext(H.primary.struc_enzyme, 22, 25)) : 9999) - var/ears = (length(H.primary.struc_enzyme) >= 10 ? hex2num(copytext(H.primary.struc_enzyme, 7, 10)) : 9999) - var/vision = (length(H.primary.struc_enzyme) >= 16 ? hex2num(copytext(H.primary.struc_enzyme, 13, 16)) : 1) - var/mental1 = (length(H.primary.struc_enzyme) >= 31 ? hex2num(copytext(H.primary.struc_enzyme, 28, 31)) : 1) - var/mental2 = (length(H.primary.struc_enzyme) >= 28 ? hex2num(copytext(H.primary.struc_enzyme, 25, 28)) : 1) - var/speak2 = (length(H.primary.struc_enzyme) >= 22 ? hex2num(copytext(H.primary.struc_enzyme, 19, 22)) : 1) - H.sdisabilities = 0 - H.disabilities = 0 - if (speak < 3776) - H.disabilities = H.disabilities | 4 - else - if (speak > 3776) - H.sdisabilities = H.sdisabilities | 2 - if (speak2 < 2640) - H.disabilities = H.disabilities | 16 - if (ears > 3226) - H.sdisabilities = H.sdisabilities | 4 - if (vision < 1447) - H.sdisabilities = H.sdisabilities | 1 - else - if (vision > 1447) - H.disabilities = H.disabilities | 1 - if (mental1 < 1742) - H.disabilities = H.disabilities | 2 - if (mental2 < 1452) - H.disabilities = H.disabilities | 8 - var/t1 = null - if (length(H.primary.uni_identity) >= 20) - t1 = copytext(H.primary.uni_identity, 19, 21) - if (hex2num(t1) > 127) - H.gender = FEMALE - else - H.gender = MALE - else - H.gender = NEUTER - if (length(H.primary.uni_identity) >= 18) - t1 = copytext(H.primary.uni_identity, 17, 19) - H.ns_tone = hex2num(t1) - H.ns_tone = -H.ns_tone + 35 - else - H.ns_tone = 1 - H.ns_tone = -H.ns_tone + 35 - if (length(H.primary.uni_identity) >= 16) - t1 = copytext(H.primary.uni_identity, 15, 17) - H.b_eyes = hex2num(t1) - else - H.b_eyes = 255 - if (length(H.primary.uni_identity) >= 14) - t1 = copytext(H.primary.uni_identity, 13, 15) - H.g_eyes = hex2num(t1) - else - H.g_eyes = 255 - if (length(H.primary.uni_identity) >= 12) - t1 = copytext(H.primary.uni_identity, 11, 13) - H.r_eyes = hex2num(t1) - else - H.r_eyes = 255 - if (length(H.primary.uni_identity) >= 10) - t1 = copytext(H.primary.uni_identity, 9, 11) - H.nb_hair = hex2num(t1) - else - H.nb_hair = 255 - if (length(H.primary.uni_identity) >= 8) - t1 = copytext(H.primary.uni_identity, 7, 9) - H.ng_hair = hex2num(t1) - else - H.ng_hair = 255 - if (length(H.primary.uni_identity) >= 6) - t1 = copytext(H.primary.uni_identity, 5, 7) - H.nr_hair = hex2num(t1) - else - H.nr_hair = 255 - H.r_hair = H.nr_hair - H.g_hair = H.ng_hair - H.b_hair = H.nb_hair - H.s_tone = H.ns_tone - H.update_face() - H.update_body() - - if (reg_dna[H.primary.uni_identity]) - H.real_name = reg_dna[H.primary.uni_identity] - else - var/i - while (!i) - var/randomname - if (src.gender == MALE) - randomname = capitalize(pick(first_names_male) + " " + capitalize(pick(last_names))) - else - randomname = capitalize(pick(first_names_female) + " " + capitalize(pick(last_names))) - if (findname(randomname)) - continue - else - H.real_name = randomname - i++ - reg_dna[H.primary.uni_identity] = H.real_name - H << text("\red Your name is now [].", H.real_name) - return - -/obj/machinery/restruct/verb/move_inside() - set src in oview(1) - - if (usr.stat != 0) - return - if (src.occupant) - usr << "\blue The scanner is already occupied!" - return - if (usr.abiotic()) - usr << "\blue Subject cannot have abiotic items on." - return - usr.stop_pulling() - usr.client.perspective = EYE_PERSPECTIVE - usr.client.eye = src - usr.loc = src - src.occupant = usr - src.icon_state = "restruct_1" - for(var/obj/O in src) - //O = null - del(O) - //Foreach goto(124) - src.add_fingerprint(usr) - return - -/obj/machinery/restruct/relaymove(mob/user as mob) - if (user.stat) - return - src.go_out() - return - -/obj/machinery/restruct/attackby(obj/item/weapon/grab/G as obj, user as mob) - if(..()) - return - if ((!( istype(G, /obj/item/weapon/grab) ) || !( ismob(G.affecting) ))) - return - if (src.occupant) - user << "\blue The machine is already occupied!" - return - if (G.affecting.abiotic()) - user << "\blue Subject cannot have abiotic items on." - return - var/mob/M = G.affecting - if (M.client) - M.client.perspective = EYE_PERSPECTIVE - M.client.eye = src - M.loc = src - src.occupant = M - src.icon_state = "restruct_1" - for(var/obj/O in src) - O.loc = src.loc - //Foreach goto(154) - src.add_fingerprint(user) - //G = null - del(G) - return - -/obj/machinery/restruct/proc/go_out() - if ((!( src.occupant ) || src.locked)) - return - for(var/obj/O in src) - O.loc = src.loc - //Foreach goto(30) - if (src.occupant.client) - src.occupant.client.eye = src.occupant.client.mob - src.occupant.client.perspective = MOB_PERSPECTIVE - src.occupant.loc = src.loc - src.occupant = null - src.icon_state = "restruct_0" - return - -/obj/machinery/restruct/ex_act(severity) - switch(severity) - if(1.0) - for(var/atom/movable/A as mob|obj in src) - A.loc = src.loc - ex_act(severity) - del(src) - return - if(2.0) - if (prob(50)) - for(var/atom/movable/A as mob|obj in src) - A.loc = src.loc - ex_act(severity) - del(src) - return - if(3.0) - if (prob(25)) - for(var/atom/movable/A as mob|obj in src) - A.loc = src.loc - ex_act(severity) - del(src) - return - else - return - -/obj/machinery/restruct/blob_act() - if(prob(75)) - for(var/atom/movable/A as mob|obj in src) - A.loc = src.loc - del(src) \ No newline at end of file diff --git a/code/unused/dna_mutations.dm b/code/unused/dna_mutations.dm deleted file mode 100644 index 006a57eff41..00000000000 --- a/code/unused/dna_mutations.dm +++ /dev/null @@ -1,101 +0,0 @@ - - -/* NOTES: - -This system could be expanded to migrate all of our current mutations to. Maybe. - - -*/ - - -/* /datum/mutations : - * - * A /datum representation of "hidden" mutations. - * - */ -/datum/mutations - - var/list/requirements = list() // list of randomly-genned requirements - var/required = 1 // the number of requirements to generate - - var/list/races = list("Human") // list of races the mutation effect - - proc/get_mutation(var/mob/living/carbon/M) // Called when check_mutation() is successful - ..() - - proc/check_mutation(var/mob/living/carbon/M) // Called in dna.dm, when a target's SE is modified - - if(! ("all" in races)) // "all" means it affects everyone! - if(istype(M, /mob/living/carbon/human)) - if(! ("Human" in races)) - return - if(istype(M, /mob/living/carbon/monkey)) - if(! ("monkey" in races)) - return - // TODO: add more races maybe?? - - - var/passes = 0 - for(var/datum/mutationreq/require in requirements) - - var/se_block[] = getblockbuffer(M.dna.struc_enzymes, require.block, 3) // focus onto the block - if(se_block.len == 3) // we want to make sure there are exactly 3 entries - - if(se_block[require.subblock] == require.reqID) - - passes++ - - if(passes == required) // all requirements met - get_mutation(M) - - - Lasereyes - /* - Lets you shoot laser beams through your eyes. Fancy! - */ - required = 2 - - get_mutation(var/mob/living/carbon/M) - M << "\blue You feel a searing heat inside your eyes!" - M.mutations.Add(LASER) - - Healing - /* - Lets you heal other people, and yourself. But it doesn't let you heal dead people. - */ - required = 2 - - get_mutation(var/mob/living/carbon/M) - M << "\blue You feel a pleasant warmth pulse throughout your body..." - M.mutations.Add(HEAL) - -/* /datum/mutationreq : - * - * A /datum representation of a requirement in order for a mutation to happen. - * - */ - -/datum/mutationreq - var/block // The block to read - var/subblock // The sub-block to read - var/reqID // The required hexadecimal identifier to be equal to the sub-block being read. - - - - -/* -HEY: If you want to be able to get superpowers easily just uncomment this shit. -mob/verb/checkmuts() - for(var/datum/mutations/mut in global_mutations) - - for(var/datum/mutationreq/R in mut.requirements) - src << "Block: [R.block]" - src << "Sub-Block: [R.subblock]" - src << "Required ID: [R.reqID]" - src << "" - -mob/verb/editSE(t as text) - src:dna:struc_enzymes = t - domutcheck(src) - -*/ diff --git a/code/unused/filter_control.dm b/code/unused/filter_control.dm deleted file mode 100644 index 2e7188bd104..00000000000 --- a/code/unused/filter_control.dm +++ /dev/null @@ -1,162 +0,0 @@ -// Currently only used to control /obj/machinery/inlet/filter -// todo: expand to vent control as well? - -/obj/machinery/filter_control/New() - ..() - spawn(5) //wait for world - for(var/obj/machinery/inlet/filter/F in machines) - if(F.control == src.control) - F.f_mask = src.f_mask - desc = "A remote control for a filter: [control]" - -/obj/machinery/filter_control/attack_ai(mob/user as mob) - return src.attack_hand(user) - -/obj/machinery/filter_control/attack_paw(mob/user as mob) - return src.attack_hand(user) - -/obj/machinery/filter_control/attackby(obj/item/weapon/W, mob/user as mob) - if(istype(W, /obj/item/weapon/detective_scanner)) - return ..() - if(istype(W, /obj/item/weapon/screwdriver)) - src.add_fingerprint(user) - user.show_message(text("\red Now [] the panel...", (src.locked) ? "unscrewing" : "reattaching"), 1) - sleep(30) - src.locked =! src.locked - src.updateicon() - return - if(istype(W, /obj/item/weapon/wirecutters) && !src.locked) - stat ^= BROKEN - src.add_fingerprint(user) - for(var/mob/O in viewers(user, null)) - O.show_message(text("\red [] has []activated []!", user, (stat&BROKEN) ? "de" : "re", src), 1) - src.updateicon() - return - if(istype(W, /obj/item/weapon/card/emag) && !emagged) - emagged++ - for(var/mob/O in viewers(user, null)) - O.show_message(text("\red [] has shorted out the []'s access system with an electromagnetic card!", user, src), 1) - src.updateicon() - return src.attack_hand(user) - return src.attack_hand(user) - -/obj/machinery/filter_control/process() - if(!(stat & NOPOWER)) - use_power(5,ENVIRON) - AutoUpdateAI(src) - src.updateUsrDialog() - src.updateicon() - -/obj/machinery/filter_control/attack_hand(mob/user as mob) - if(stat & NOPOWER) - user << browse(null, "window=filter_control") - user.machine = null - return - if(user.stat || user.lying) - return - if ((get_dist(src, user) > 1 || !istype(src.loc, /turf)) && !istype(user, /mob/living/silicon/ai)) - return 0 - - var/list/gases = list("O2", "N2", "Plasma", "CO2", "N2O") - var/dat - user.machine = src - - var/IGoodConnection = 0 - var/IBadConnection = 0 - - for(var/obj/machinery/inlet/filter/F in machines) - if((F.control == src.control) && !(F.stat && (NOPOWER|BROKEN))) - IGoodConnection++ - else if(F.control == src.control) - IBadConnection++ - var/ITotalConnections = IGoodConnection+IBadConnection - - if(ITotalConnections && !(stat & BROKEN)) //ugly - dat += "Connection status: Inlets:[ITotalConnections]/[IGoodConnection]
\n Control ID: [control]

\n" - else - dat += "No Connections Detected!
\n Control ID: [control]
\n" - if(!stat & BROKEN) - for (var/i = 1; i <= gases.len; i++) - dat += "[gases[i]]: [(src.f_mask & 1 << (i - 1)) ? "Siphoning" : "Passing"]
\n" - else - dat += "Warning! Severe Internal Memory Corruption!
\n
\nConsult a qualified station technician immediately!

\n" - dat += "
\nError codes: 0x0000001E 0x0000007B
\n" - - dat += "
\nClose
\n" - user << browse(dat, "window=filter_control;size=300x225") - onclose(user, "filter_control") -/obj/machinery/filter_control/Topic(href, href_list) - if (href_list["close"]) - usr << browse(null, "window=filter_control;") - usr.machine = null - return //Who cares if we're dead or whatever let us close the fucking window - if(..()) - return - if ((((get_dist(src, usr) <= 1 || usr.telekinesis == 1) || istype(usr, /mob/living/silicon/ai)) && istype(src.loc, /turf))) - usr.machine = src - if (src.allowed(usr) || src.emagged && !(stat & BROKEN)) - if (href_list["tg"]) //someone modified the html so I added a check here - // toggle gas - src.f_mask ^= text2num(href_list["tg"]) - for(var/obj/machinery/inlet/filter/FI in machines) - if(FI.control == src.control) - FI.f_mask ^= text2num(href_list["tg"]) - else - usr.see("\red Access Denied ([src.name] operation restricted to authorized atmospheric technicians.)") - AutoUpdateAI(src) - src.updateUsrDialog() - src.add_fingerprint(usr) - else - usr << browse(null, "window=filter_control") - usr.machine = null - return - -/obj/machinery/filter_control/proc/updateicon() - overlays.Cut() - if(stat & NOPOWER) - icon_state = "filter_control-nopower" - return - icon_state = "filter_control" - if(src.locked && (stat & BROKEN)) - overlays += image('icons/obj/stationobjs.dmi', "filter_control00") - return - else if(!src.locked) - icon_state = "filter_control-unlocked" - if(stat & BROKEN) - overlays += image('icons/obj/stationobjs.dmi', "filter_control-wirecut") - overlays += image('icons/obj/stationobjs.dmi', "filter_control00") - return - - var/GoodConnection = 0 - for(var/obj/machinery/inlet/filter/F in machines) - if((F.control == src.control) && !(F.stat && (NOPOWER|BROKEN))) - GoodConnection++ - break - - if(GoodConnection && src.f_mask) - overlays += image('icons/obj/stationobjs.dmi', "filter_control1") - else if(GoodConnection) - overlays += image('icons/obj/stationobjs.dmi', "filter_control10") - else if(src.f_mask) - overlays += image('icons/obj/stationobjs.dmi', "filter_control0") - else - overlays += image('icons/obj/stationobjs.dmi', "filter_control00") - - if (src.f_mask & (GAS_N2O|GAS_PL)) - src.overlays += image('icons/obj/stationobjs.dmi', "filter_control-tox") - if (src.f_mask & GAS_O2) - src.overlays += image('icons/obj/stationobjs.dmi', "filter_control-o2") - if (src.f_mask & GAS_N2) - src.overlays += image('icons/obj/stationobjs.dmi', "filter_control-n2") - if (src.f_mask & GAS_CO2) - src.overlays += image('icons/obj/stationobjs.dmi', "filter_control-co2") - return - -/obj/machinery/filter_control/power_change() - if(powered(ENVIRON)) - stat &= ~NOPOWER - else - stat |= NOPOWER - spawn(rand(1,15)) - src.updateicon() - return \ No newline at end of file diff --git a/code/unused/game_kit.dm b/code/unused/game_kit.dm deleted file mode 100644 index 3a96d168788..00000000000 --- a/code/unused/game_kit.dm +++ /dev/null @@ -1,138 +0,0 @@ -/* -CONTAINS: -THAT STUPID GAME KIT -Which I am commenting out /N -*/ -/* -/obj/item/weapon/game_kit/New() - src.board_stat = "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB" - src.selected = "CR" - -/obj/item/weapon/game_kit/attack_paw(mob/user as mob) - return src.attack_hand(user) - -/obj/item/weapon/game_kit/MouseDrop(mob/user as mob) - if (user == usr && !usr.restrained() && !usr.stat && (usr.contents.Find(src) || in_range(src, usr))) - if (usr.hand) - if (!usr.l_hand) - spawn (0) - src.attack_hand(usr, 1, 1) - else - if (!usr.r_hand) - spawn (0) - src.attack_hand(usr, 0, 1) - -/obj/item/weapon/game_kit/proc/update() - var/dat = text("
Game Board

[] remove
", src, (src.selected ? text("Selected: []", src.selected) : "Nothing Selected"), src) - for (var/y = 1 to 8) - dat += "" - - for (var/x = 1 to 8) - var/color = (y + x) % 2 ? "#ffffff" : "#999999" - var/piece = copytext(src.board_stat, ((y - 1) * 8 + x) * 2 - 1, ((y - 1) * 8 + x) * 2 + 1) - - dat += "" - - dat += "" - - dat += "
" - dat += "" - if (piece != "BB") - dat += "" - else - dat += "" - dat += "

Chips:
" - for (var/piece in list("CB", "CR")) - dat += "" - - dat += "
Chess pieces:
" - for (var/piece in list("WP", "WK", "WQ", "WI", "WN", "WR")) - dat += "" - dat += "
" - for (var/piece in list("BP", "BK", "BQ", "BI", "BN", "BR")) - dat += "" - src.data = dat - -/obj/item/weapon/game_kit/attack_hand(mob/user as mob, unused, flag) - - if (flag) - return ..() - else - user.machine = src - if (!( src.data )) - update() - user << browse(src.data, "window=game_kit") - onclose(user, "game_kit") - return - return - -/obj/item/weapon/game_kit/Topic(href, href_list) - ..() - if ((usr.stat || usr.restrained())) - return - - if (usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) - if (href_list["s_piece"]) - src.selected = href_list["s_piece"] - else if (href_list["mode"]) - if (href_list["mode"] == "remove") - src.selected = "remove" - else - src.selected = null - else if (href_list["s_board"]) - if (!( src.selected )) - src.selected = href_list["s_board"] - else - var/tx = text2num(copytext(href_list["s_board"], 1, 2)) - var/ty = text2num(copytext(href_list["s_board"], 3, 4)) - if ((copytext(src.selected, 2, 3) == " " && length(src.selected) == 3)) - var/sx = text2num(copytext(src.selected, 1, 2)) - var/sy = text2num(copytext(src.selected, 3, 4)) - var/place = ((sy - 1) * 8 + sx) * 2 - 1 - src.selected = copytext(src.board_stat, place, place + 2) - if (place == 1) - src.board_stat = text("BB[]", copytext(src.board_stat, 3, 129)) - else - if (place == 127) - src.board_stat = text("[]BB", copytext(src.board_stat, 1, 127)) - else - if (place) - src.board_stat = text("[]BB[]", copytext(src.board_stat, 1, place), copytext(src.board_stat, place + 2, 129)) - place = ((ty - 1) * 8 + tx) * 2 - 1 - if (place == 1) - src.board_stat = text("[][]", src.selected, copytext(src.board_stat, 3, 129)) - else - if (place == 127) - src.board_stat = text("[][]", copytext(src.board_stat, 1, 127), src.selected) - else - if (place) - src.board_stat = text("[][][]", copytext(src.board_stat, 1, place), src.selected, copytext(src.board_stat, place + 2, 129)) - src.selected = null - else - if (src.selected == "remove") - var/place = ((ty - 1) * 8 + tx) * 2 - 1 - if (place == 1) - src.board_stat = text("BB[]", copytext(src.board_stat, 3, 129)) - else - if (place == 127) - src.board_stat = text("[]BB", copytext(src.board_stat, 1, 127)) - else - if (place) - src.board_stat = text("[]BB[]", copytext(src.board_stat, 1, place), copytext(src.board_stat, place + 2, 129)) - else - if (length(src.selected) == 2) - var/place = ((ty - 1) * 8 + tx) * 2 - 1 - if (place == 1) - src.board_stat = text("[][]", src.selected, copytext(src.board_stat, 3, 129)) - else - if (place == 127) - src.board_stat = text("[][]", copytext(src.board_stat, 1, 127), src.selected) - else - if (place) - src.board_stat = text("[][][]", copytext(src.board_stat, 1, place), src.selected, copytext(src.board_stat, place + 2, 129)) - src.add_fingerprint(usr) - update() - for(var/mob/M in viewers(1, src)) - if ((M.client && M.machine == src)) - src.attack_hand(M) -*/ \ No newline at end of file diff --git a/code/unused/gamemodes/ctf.dm b/code/unused/gamemodes/ctf.dm deleted file mode 100644 index 5a464c0ce26..00000000000 --- a/code/unused/gamemodes/ctf.dm +++ /dev/null @@ -1,141 +0,0 @@ -/* -/datum/game_mode/ctf - name = "ctf" - config_tag = "ctf" - -/datum/game_mode/ctf/announce() - world << "The current game mode is - Capture the Flag!" - world << "Capture the other teams flag and bring it back to your base!" - world << "Respawn is on" - -/datum/game_mode/ctf/pre_setup() - - config.allow_ai = 0 - var/list/mobs = list() - var/total_mobs - for(var/mob/living/carbon/human/M in world) - if (M.client) - mobs += M - total_mobs++ - - var/obj/R = locate("landmark*Red-Spawn") - var/obj/G = locate("landmark*Green-Spawn") - - var/mob_check - for(var/mob/living/carbon/human/M in mobs) - if(!M) - continue - mob_check++ - if(mob_check <= total_mobs/2) //add to red team else to green - spawn() - if(M.client) - M << "You are in the Red Team!" - del(M.wear_suit) - M.w_uniform = new /obj/item/clothing/under/color/red(M) - M.w_uniform.layer = 20 - del(M.shoes) - M.wear_suit = new /obj/item/clothing/suit/armor/tdome/red(M) - M.wear_suit.layer = 20 - M.shoes = new /obj/item/clothing/shoes/black(M) - M.shoes.layer = 20 - M.wear_mask = new /obj/item/clothing/mask/gas/emergency(M) - M.wear_mask.layer = 20 - M.gloves = new /obj/item/clothing/gloves/swat(M) - M.gloves.layer = 20 - M.glasses = new /obj/item/clothing/glasses/thermal(M) - M.glasses.layer = 20 - var/obj/item/device/radio/headset/H = new /obj/item/device/radio/headset(M) - H.set_frequency(1465) - M.w_radio = H - M.w_radio.layer = 20 - var/obj/item/weapon/tank/air/O = new /obj/item/weapon/tank/air(M) - M.back = O - M.back.layer = 20 - M.internal = O - - del(M.wear_id) - var/obj/item/weapon/card/id/W = new(M) - W.name = "[M.real_name]'s ID card (Red Team)" - W.access = access_red - W.assignment = "Red Team" - W.registered_name = M.real_name - M.wear_id = W - M.wear_id.layer = 20 - if(R) - M.loc = R.loc - else - world << "No red team spawn point detected" - M.client.team = "Red" - else - spawn() - if(M.client) - M << "You are in the Green Team!" - del(M.wear_suit) - M.w_uniform = new /obj/item/clothing/under/color/green(M) - M.w_uniform.layer = 20 - del(M.shoes) - M.wear_suit = new /obj/item/clothing/suit/armor/tdome/green(M) - M.wear_suit.layer = 20 - M.shoes = new /obj/item/clothing/shoes/black(M) - M.shoes.layer = 20 - M.wear_mask = new /obj/item/clothing/mask/gas/emergency(M) - M.wear_mask.layer = 20 - M.gloves = new /obj/item/clothing/gloves/swat(M) - M.gloves.layer = 20 - M.glasses = new /obj/item/clothing/glasses/thermal(M) - M.glasses.layer = 20 - var/obj/item/device/radio/headset/H = new /obj/item/device/radio/headset(M) - H.set_frequency(1449) - M.w_radio = H - M.w_radio.layer = 20 - var/obj/item/weapon/tank/air/O = new /obj/item/weapon/tank/air(M) - M.back = O - M.back.layer = 20 - M.internal = O - - del(M.wear_id) - var/obj/item/weapon/card/id/W = new(M) - W.name = "[M.real_name]'s ID card (Green Team)" - W.access = access_green - W.assignment = "Green Team" - W.registered_name = M.real_name - M.wear_id = W - M.wear_id.layer = 20 - if(G) - M.loc = G.loc - else - world << "No green team spawn point detected" - M.client.team = "Green" - - -/datum/game_mode/ctf/post_setup() - abandon_allowed = 1 - setup_game() - - spawn (50) - var/obj/L = locate("landmark*Red-Flag") - if (L) - new /obj/item/weapon/ctf_flag/red(L.loc) - else - world << "No red flag spawn point detected" - - L = locate("landmark*Green-Flag") - if (L) - new /obj/item/weapon/ctf_flag/green(L.loc) - else - world << "No green flag spawn point detected" - - L = locate("landmark*The-Red-Team") - if (L) - new /obj/machinery/red_injector(L.loc) - else - world << "No red team spawn injector point detected" - - L = locate("landmark*The-Green-Team") - if (L) - new /obj/machinery/green_injector(L.loc) - else - world << "No green team injector spawn point detected" - ..() - -*/ \ No newline at end of file diff --git a/code/unused/gamemodes/ctf_items.dm b/code/unused/gamemodes/ctf_items.dm deleted file mode 100644 index 74c907826b6..00000000000 --- a/code/unused/gamemodes/ctf_items.dm +++ /dev/null @@ -1,139 +0,0 @@ -/obj/item/weapon/ctf_flag - name = "Flag" - desc = "Its a flag" - w_class = 5 - icon = 'flags.dmi' - icon_state = "flag_neutral" - item_state = "paper" - -/obj/item/weapon/ctf_flag/red - name = "The Red Flag" - desc = "Catch dat fukken flag" - icon_state = "flag_red" - -/obj/item/weapon/ctf_flag/green - name = "The Green Flag" - desc = "Catch dat fukken flag" - icon_state = "flag_green" - -/obj/item/weapon/ctf_flag/New() - ..() - spawn(200) - process() - return - -/obj/item/weapon/ctf_flag/process() - if(istype(src, /obj/item/weapon/ctf_flag/green)) - var/obj/L = locate("landmark*Green-Flag") - if(locate("landmark*Green-Flag", src)) - spawn(200) - process() - return - else if(!src.check_if_equipped() && L) - new /obj/item/weapon/ctf_flag/green(L.loc) - del(src) - if(istype(src, /obj/item/weapon/ctf_flag/red)) - var/obj/L = locate("landmark*Red-Flag") - if(locate("landmark*Red-Flag", src)) - spawn(200) - process() - return - else if(!src.check_if_equipped() && L) - new /obj/item/weapon/ctf_flag/red(L.loc) - del(src) - return - -/obj/item/weapon/ctf_flag/proc/check_if_equipped() - var/equipped = 0 - for(var/mob/M in living_mob_list) - if(M &&!M.stat) - var/list/L = M.get_contents() - if(src in L) - equipped = 1 - break - return equipped - -/obj/machinery/red_injector - name = "Red Team Flag Injector" - desc = "Insert flag here" - anchored = 1 - density = 1 - var/score = 0 - var/operating = 0 - icon = 'flags.dmi' - icon_state = "red_injector" -/* -/obj/machinery/red_injector/ex_act(severity) - return - -/obj/machinery/red_injector/attackby(var/obj/item/weapon/ctf_flag/C, mob/user) - if(src.operating) - user << "Cannot put a flag in right now" - return - src.operating = 1 - if(istype(C, /obj/item/weapon/ctf_flag/green)) - if(locate("landmark*Red-Flag", /obj/item/weapon/ctf_flag/red)) - src.score++ - world << "[user.real_name] has scored for the red team!" - if(ticker.mode.name == "ctf") - ticker.red_score++ - var/obj/L = locate("landmark*Green-Flag") - if (L) - del(C) - new /obj/item/weapon/ctf_flag/green(L.loc) - else - world << "No green flag spawn point detected" - if(src.score >= 15) - world << "The Red Team has won!" - world << "They have scored [score] times with the flag!" - sleep(300) - world.Reboot() - else - user << "\red You need to have your flag in the beginning position!" - else if(istype(C, /obj/item/weapon/ctf_flag/red)) - world << "[user.real_name] has tried to score with their own flag! Idiot!" - src.operating = 0 - return -*/ -/obj/machinery/green_injector - name = "Green Team Flag Injector" - desc = "Insert flag here" - anchored = 1 - density = 1 - var/operating = 0 - var/score = 0 - icon = 'flags.dmi' - icon_state = "green_injector" - -/obj/machinery/green_injector/ex_act(severity) - return -/* -/obj/machinery/green_injector/attackby(var/obj/item/weapon/ctf_flag/C, mob/user) - if(src.operating) - user << "Cannot put a flag in right now" - return - src.operating = 1 - if(istype(C, /obj/item/weapon/ctf_flag/red)) - if(locate("landmark*Green-Flag", /obj/item/weapon/ctf_flag/green)) - src.score++ - world << "[user.real_name] has scored for the green team!" - if(ticker.mode.name == "ctf") - ticker.green_score++ - var/obj/L = locate("landmark*Red-Flag") - if (L) - del(C) - new /obj/item/weapon/ctf_flag/red(L.loc) - else - world << "No red flag spawn point detected" - if(src.score >= 15) - world << "The Green Team has won!" - world << "They have scored [score] times with the flag!" - sleep(300) - world.Reboot() - else - user << "\red You need to have your flag in the beginning position!" - else if(istype(C, /obj/item/weapon/ctf_flag/green)) - world << "[user.real_name] has tried to score with their own flag! Idiot!" - src.operating = 0 - return -*/ \ No newline at end of file diff --git a/code/unused/gamemodes/deathmatch.dm b/code/unused/gamemodes/deathmatch.dm deleted file mode 100644 index e748eb4f20d..00000000000 --- a/code/unused/gamemodes/deathmatch.dm +++ /dev/null @@ -1,67 +0,0 @@ -/* -/datum/game_mode/deathmatch - name = "deathmatch" - config_tag = "deathmatch" - var/startedat - var/const/gamelength = 15 * 600 // 1/10 second - - announce() - world << "The current game mode is - Death Commando Deathmatch!" - world << "Just kill everyone else. They're gonna try to kill you, after all. Respawning is enabled." - - post_setup() - startedat = world.realtime - abandon_allowed = 1 - setup_game() - - // TODO: DEFERRED Make this massively cleaner. It should hook before spawning, not after. - var/list/mobs = list() - for(var/mob/living/carbon/human/M in world) - if (M.client) - mobs += M - for(var/mob/living/carbon/human/M in mobs) - spawn() - if(M.client) - for(var/obj/item/weapon/W in list(M.wear_suit, M.w_uniform, M.r_store, M.l_store, M.wear_id, M.belt, - M.gloves, M.glasses, M.head, M.ears, M.shoes, M.wear_mask, M.back, - M.handcuffed, M.r_hand, M.l_hand)) - M.u_equip(W) - del(W) - - var/randomname = "Killiam Shakespeare" - if(commando_names.len) - randomname = pick(commando_names) - commando_names -= randomname - var/newname = input(M,"You are a death commando. Would you like to change your name?", "Character Creation", randomname) - if(!length(newname)) - newname = randomname - newname = strip_html(newname,40) - - M.real_name = newname - M.name = newname // there are WAY more things than this to change, I'm almost certain - - M.equip_to_slot_or_del(new /obj/item/clothing/under/color/black(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes) - M.equip_to_slot_or_del(new /obj/item/clothing/suit/swat_suit/death_commando(M), slot_wear_suit) - M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/death_commando(M), slot_wear_mask) - M.equip_to_slot_or_del(new /obj/item/clothing/gloves/swat(M), slot_gloves) - M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal(M), slot_glasses) - M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/pulse_rifle(M), slot_l_hand) - M.equip_to_slot_or_del(new /obj/item/weapon/m_pill/cyanide(M), slot_l_store) - M.equip_to_slot_or_del(new /obj/item/weapon/flashbang(M), slot_r_store) - - var/obj/item/weapon/tank/air/O = new(M) - M.equip_to_slot_or_del(O, slot_back) - M.internal = O - - var/obj/item/weapon/card/id/W = new(M) - W.access = get_all_accesses() - W.name = "[newname]'s ID card (Death Commando)" - W.assignment = "Death Commando" - W.registered_name = newname - M.equip_to_slot_or_del(W, slot_wear_id) - ..() - - check_win() - return 1 -*/ \ No newline at end of file diff --git a/code/unused/gamemodes/restructuring.dm b/code/unused/gamemodes/restructuring.dm deleted file mode 100644 index eff8acb7248..00000000000 --- a/code/unused/gamemodes/restructuring.dm +++ /dev/null @@ -1,77 +0,0 @@ -/datum/game_mode/restructuring - name = "Corporate Restructuring" - config_tag = "restructuring" -/* -/datum/game_mode/restructuring/announce() - world << "\red GLOBAL TRANSMISSION FROM HEAD OFFICE: A CORPORATE RESTRUCTURING IS TO TAKE PLACE" - world << "\red Stay tuned for further news; note that we do care for our employees and any layoffs will be dealt with discretion and compassion" - - -/datum/game_mode/restructuring/post_setup() - setup_game() - var/list/mobs = get_mob_list() - while (mobs.len == 0) - sleep 30 - mobs = get_mob_list() - spawn (120) - pick_target() - ..() - -/datum/game_mode/restructuring/proc/pick_target(who) - var/mob/target - var/mob/target_desc - - if (!who) - target = pick(get_mob_list()) - target_desc = get_target_desc(target) - world << "\red HEAD OFFICE: [target_desc] is accused of attempting to start a Union and is now considered a threat to the station. Terminate the employee immediately." - else - target = who - target_desc = get_target_desc(target) - world << "\red HEAD OFFICE: [target_desc] is accused of fornicating with staff of the same sex. Terminate the employee immediately." - ticker.target = target - - target.store_memory("Head office has ordered your downsizing. Ruh roh", 0) - - for(var/mob/living/silicon/ai/M in world) - M << "These are your laws now:" - M.set_zeroth_law("[target_desc] is not human.") - M.show_laws() - -/datum/game_mode/restructuring/check_win() - var/list/left_alive = get_mob_list() - if (left_alive.len == 1) - var/thewinner = the_winner() - world << "\red HEAD OFFICE: Thanks to his superior brown-nosing abilities, [thewinner] has been promoted to senior management! Congratulations!" - return 1 - else if (left_alive.len == 0) - world << "\red HEAD OFFICE: Cost cutting measures have achieved 100% efficiency. Thank you for understanding our position during this volatile economic downturn." - return 1 - else - if(ticker.target.stat != 2) - return 0 - world << "\red HEAD OFFICE: It seems we have made a mistake in our paperwork. The previous target for termination was chosen based on race, sex, and/or religious beliefs, which is against company policy. Please cancel previous termination request." - pick_target() - return 0 - -/datum/game_mode/restructuring/proc/get_mob_list() - var/list/mobs = list() - for(var/mob/M in world) - if (M.stat<2 && M.client && istype(M, /mob/living/carbon/human)) - mobs += M - return mobs - -/datum/game_mode/restructuring/proc/the_winner() - for(var/mob/M in world) - if (M.stat<2 && M.client && istype(M, /mob/living/carbon/human)) - return M.name - -/datum/game_mode/restructuring/proc/get_target_desc(mob/target) //return a useful string describing the target - var/targetrank = null - for(var/datum/data/record/R in data_core.general) - if (R.fields["name"] == target.real_name) - targetrank = R.fields["rank"] - if(!targetrank) - return "[target.name]" - return "[target.name] the [targetrank]" -*/ \ No newline at end of file diff --git a/code/unused/gamemodes/ruby.dm b/code/unused/gamemodes/ruby.dm deleted file mode 100644 index 5636bcb575b..00000000000 --- a/code/unused/gamemodes/ruby.dm +++ /dev/null @@ -1,289 +0,0 @@ -// RUBY MODE -// There is a weapon of some sort that spawns on the station -// It calls out to crew members in an effort to find a wielder -// The wielder is made an abomination - they're given a grotesque mask and special powers -// The Abomination wins by murdering the entire crew, then himself -// The crew wins by destroying the weapon - - -/datum/game_mode/ruby - name = "ruby" - config_tag = "ruby" - - var/datum/mind/abomination - var/finished = 0 - var/abominationwins = 0 - var/winnerkey - var/obj/macguffin - var/list/killed = list() - var/respawns = 0 - - - -/datum/game_mode/ruby/post_setup() - var/list/possible_abominations = get_possible_abominations() - - if(possible_abominations.len>0) - abomination = pick(possible_abominations) - /* - if(istype(ruby)) - abomination.special_role = "abomination" - if(wizardstart.len == 0) - wizard.current << "\red A starting location for you could not be found, please report this bug!" - else - var/starting_loc = pick(wizardstart) - wizard.current.loc = starting_loc - - for (var/obj/effect/landmark/A in world) - if (A.name == "Teleport-Scroll") - new /obj/item/weapon/teleportation_scroll(A.loc) - del(A) - continue - */ - ..() - -/datum/game_mode/ruby/check_finished() - if(!macguffin || abominationwins) - return 1 - else - return 0 - -/datum/game_mode/ruby/declare_completion() - if(abominationwins) - feedback_set_details("round_end_result","win - abomination win") - world << "The Abomination has murdered the station and sacrificed himself to Cjopaze! (played by [winnerkey])" - else - feedback_set_details("round_end_result","loss - abomination killed") - world << "The Abomination has been stopped and Cjopaze's influence resisted! The station lives another day," - if(killed.len > 0) - world << "Those who were sacrificed shall be remembered: " - for(var/mob/M in killed) - if(M) - world << "[M.real_name]" - /* - for(var/datum/mind/traitor in traitors) - var/traitorwin = 1 - var/traitor_name - - if(traitor.current) - traitor_name = "[traitor.current.real_name] (played by [traitor.key])" - else - traitor_name = "[traitor.key] (character destroyed)" - - world << "The syndicate traitor was [traitor_name]" - var/count = 1 - for(var/datum/objective/objective in traitor.objectives) - if(objective.check_completion()) - world << "Objective #[count]: [objective.explanation_text] \green Success" - else - world << "Objective #[count]: [objective.explanation_text] \red Failed" - traitorwin = 0 - count++ - - if(traitorwin) - world << "The traitor was successful!" - else - world << "The traitor has failed!" - */ - ..() - return 1 - - -/datum/game_mode/ruby/proc/spawn_macguffin() - -/datum/game_mode/ruby/proc/get_possible_abominations() - - -/mob/proc/make_abomination() - src.see_in_dark = 20 - src.verbs += /client/proc/planar_shift - src.verbs += /client/proc/vile_ressurection - src.verbs += /client/proc/defile_corpse - src.verbs += /client/proc/summon_weapon - src.verbs += /client/proc/sacrifice_self - src.verbs += /client/proc/hunt - src.verbs += /client/proc/howl - var/datum/game_mode/ruby/rmode = ticker.mode - rmode.abomination = src.mind - return - - -/client/proc/planar_shift() - set name = "Planar Shift" - set category = "Abomination" - // This is a pretty shitty way to do this. Should use the spell_holder method from Wizard mode - /* - if(!usr.incorporeal_move) - usr.sight |= SEE_MOBS - usr.sight |= SEE_OBJS - usr.sight |= SEE_TURFS - //usr.density = 0 - usr.incorporeal_move = 1 - else - usr.sight &= ~SEE_MOBS - usr.sight &= ~SEE_TURFS - usr.sight &= ~SEE_OBJS - usr.density = 1 - usr.incorporeal_move = 0 - src.verbs -= /client/proc/planar_shift - spawn(300) src.verbs += /client/proc/planar_shift - */ - -/client/proc/vile_ressurection() - set name = "Vile Ressurection" - set category = "Abomination" - if(src.mob.stat != 2 || !src.mob) - return - if(ticker.mode:respawns > 0) - // spawn a new body - ticker.mode:respawns -= 1 - else - // nope - -/client/proc/defile_corpse(var/mob/living/carbon/human/H in view()) - set name = "Defile Corpse" - set category = "Abomination" - if(istype(H, /mob/living/carbon/human)) - var/datum/game_mode/ruby/rmode = ticker.mode - rmode.killed.Add(H) - ticker.mode:respawns += 1 - var/fluffmessage = pick("\red [usr] rips the flesh from [H]'s corpse and plucks their eyes from their sockets!", "\red [usr] does unspeakable things to [H]'s corpse!", "\red [usr] binds [H]'s corpse with their own entrails!") - usr.visible_message(fluffmessage) - // play sound - -/client/proc/summon_weapon() - set name = "Summon Weapon" - set category = "Abomination" - - for(var/obj/item/weapon/rubyweapon/w in world) - if(istype(w, /obj/item/weapon/rubyweapon)) - if(istype(w.loc, /mob)) - var/mob/M = w.loc - M.drop_item() - w.loc = usr.loc - else - w.loc = usr.loc - src.verbs -= /client/proc/summon_weapon - spawn(300) src.verbs += /client/proc/summon_weapon - return - -/client/proc/sacrifice_self() - set name = "Sacrifice Self" - set category = "Abomination" - set desc = "Everything must come to an end. After you have freed them, you must free yourself." - - for(var/mob/living/carbon/human/H in player_list) - if(!H.client || H.client == src) - continue - src << "Your work is not done. You will not find release until they are all free." - return - usr.gib(1) - ticker.mode:abominationwins = 1 - -/client/proc/hunt() - set name = "Hunt" - set category = "Abomination" - set desc = "" - - var/list/candidates = list() - - for(var/mob/living/carbon/human/H in player_list) - if(!H.client || H.client == src) continue - //if(!H.client) continue - candidates.Add(H) - - usr.visible_message(text("\red [usr]'s flesh ripples and parts, revealing dozens of eyes poking from its surface. They all glance wildly around for a few moments before receding again.")) - - var/mob/living/carbon/human/H = pick(candidates) - - if(!H) return - - var/filename="crmap[ckey].tmp" - var/html="" - var/denytypes[0] - var/tilesizex=32 - var/tilesizey=32 - //If the temp. file exists, delete it - src << browse("

Sensing prey...

", "window=hunt") - if (fexists(filename)) fdel(filename) - - //Display everything in the world - for (var/y=H.y-3,y<=H.y+3,y++) - html+="" - text2file(html,filename) - html="" - sleep(-1) - //for (var/x=H.x-5,x<=H.x+5,x++) - for(var/x=H.x-3, x<=H.x+3, x++) - //Turfs - var/turf/T=locate(x,y,H.z) - if (!T) continue - var/icon/I=icon(T.icon,T.icon_state) - var/imgstring=replacetext("[T.type]-[T.icon_state]","/","_") - - //Movable atoms - for (var/atom/movable/A in T) - //Make sure it's allowed to be displayed - var/allowed=1 - for (var/X in denytypes) - if (istype(A,X)) - allowed=0 - break - if (!allowed) continue - - if (A.icon) I.Blend(icon(A.icon,A.icon_state,A.dir),ICON_OVERLAY) - imgstring+=replacetext("__[A.type]_[A.icon_state]","/","_") - - //Output it - src << browse_rsc(I,"[imgstring].dmi") - html+="" - - text2file("
",filename) - - //Display it - src << browse(file(filename),"window=hunt") - - - -/client/proc/howl() // This is just a way for the Abomination to make the game more atmospheric periodically. - set name = "Howl" - set category = "Abomination" - set desc = "" - - usr.visible_message(text("\red [usr]'s form warbles and distorts before settling back into its grotesque shape once more.")) - // Play a random spooky sound - maybe cause some visual, non-mechanical effects to appear at random for a few seconds. - - src.verbs -= /client/proc/howl - spawn(rand(300,1800)) src.verbs += /client/proc/howl - -/obj/item/weapon/rubyweapon - desc = "" - name = "wepon" - icon_state = "wepon" - w_class = 3.0 - throwforce = 60.0 - throw_speed = 2 - throw_range = 20 - force = 24.0 - var/mob/owner - - proc/check_owner() - if(!owner) - sleep(300) - if(!owner) - spawn() search_for_new_owner() - else - spawn(1800) check_owner() - - proc/search_for_new_owner() - var/list/possible_owners = list() - for(var/mob/living/carbon/human/H in mob_list) - possible_owners.Add(H) - - var/mob/living/carbon/human/H = pick(possible_owners) - // Send message to H - // Take a snapshot of the item's location, browse it to H - spawn(rand(600,1800)) search_for_new_owner() - - attack_self(mob/user as mob) - // Blow all lights nearby \ No newline at end of file diff --git a/code/unused/heater.dm b/code/unused/heater.dm deleted file mode 100644 index 3af7770a066..00000000000 --- a/code/unused/heater.dm +++ /dev/null @@ -1,201 +0,0 @@ -/obj/machinery/atmoalter/heater/proc/setstate() - - if(stat & NOPOWER) - icon_state = "heater-p" - return - - if (src.holding) - src.icon_state = "heater1-h" - else - src.icon_state = "heater1" - return - -/obj/machinery/atmoalter/heater/process() - /* - if(stat & NOPOWER) return - use_power(5) - - var/turf/T = src.loc - if (istype(T, /turf)) - if (locate(/obj/move, T)) - T = locate(/obj/move, T) - else - T = null - if (src.h_status) - var/t1 = src.gas.total_moles() - if ((t1 > 0 && src.gas.temperature < (src.h_tar+T0C))) - var/increase = src.heatrate / t1 - var/n_temp = src.gas.temperature + increase - src.gas.temperature = min(n_temp, (src.h_tar+T0C)) - use_power( src.h_tar*8) - switch(src.t_status) - if(1.0) - if (src.holding) - var/t1 = src.gas.total_moles() - var/t2 = t1 - var/t = src.t_per - if (src.t_per > t2) - t = t2 - src.holding.gas.transfer_from(src.gas, t) - else - src.t_status = 3 - if(2.0) - if (src.holding) - var/t1 = src.gas.total_moles() - var/t2 = src.maximum - t1 - var/t = src.t_per - if (src.t_per > t2) - t = t2 - src.gas.transfer_from(src.holding.gas, t) - else - src.t_status = 3 - else - - src.updateDialog() - src.setstate() - return - */ - -/obj/machinery/atmoalter/heater/New() - ..() - src.gas = new /datum/gas_mixture() - return - -/obj/machinery/atmoalter/heater/attack_ai(mob/user as mob) - return src.attack_hand(user) - -/obj/machinery/atmoalter/heater/attack_paw(mob/user as mob) - return src.attack_hand(user) - -/obj/machinery/atmoalter/heater/attack_hand(var/mob/user as mob) - /* - if(stat & (BROKEN|NOPOWER)) - return - - user.machine = src - var/tt - switch(src.t_status) - if(1.0) - tt = text("Releasing Siphon Stop", src, src) - if(2.0) - tt = text("Release SiphoningStop", src, src) - if(3.0) - tt = text("Release Siphon Stopped", src, src) - else - var/ht = null - if (src.h_status) - ht = text("Heating Stop", src) - else - ht = text("Heat Stopped", src) - var/ct = null - switch(src.c_status) - if(1.0) - ct = text("Releasing Accept Stop", src, src) - if(2.0) - ct = text("Release Accepting Stop", src, src) - if(3.0) - ct = text("Release Accept Stopped", src, src) - else - ct = "Disconnected" - var/dat = text("Canister Valves
\nContains/Capacity [] / []
\nUpper Valve Status: [][]
\n\tM - - - - [] + + + + M
\nHeater Status: [] - []
\n\tTrg Tmp: - - - [] + + +
\n
\nPipe Valve Status: []
\n\tM - - - - [] + + + + M
\n
\nClose
\n
", src.gas.total_moles(), src.maximum, tt, (src.holding ? text("
Tank ([])", src, src.holding.gas.total_moles()) : null), src, num2text(1000000.0, 7), src, src, src, src, src.t_per, src, src, src, src, src, num2text(1000000.0, 7), ht, (src.gas.total_moles() ? (src.gas.temperature-T0C) : 20), src, src, src, src.h_tar, src, src, src, ct, src, num2text(1000000.0, 7), src, src, src, src, src.c_per, src, src, src, src, src, num2text(1000000.0, 7), user) - user << browse(dat, "window=canister;size=600x300") - onclose(user, "canister") - return */ //TODO: FIX - -/obj/machinery/atmoalter/heater/Topic(href, href_list) - ..() - if (stat & (BROKEN|NOPOWER)) - return - if (usr.stat || usr.restrained()) - return - if (((get_dist(src, usr) <= 1 || usr.telekinesis == 1) && istype(src.loc, /turf)) || (istype(usr, /mob/living/silicon/ai))) - usr.machine = src - if (href_list["c"]) - var/c = text2num(href_list["c"]) - switch(c) - if(1.0) - src.c_status = 1 - if(2.0) - src.c_status = 2 - if(3.0) - src.c_status = 3 - else - else - if (href_list["t"]) - var/t = text2num(href_list["t"]) - if (src.t_status == 0) - return - switch(t) - if(1.0) - src.t_status = 1 - if(2.0) - src.t_status = 2 - if(3.0) - src.t_status = 3 - else - else - if (href_list["h"]) - var/h = text2num(href_list["h"]) - if (h == 1) - src.h_status = 1 - else - src.h_status = null - else - if (href_list["tp"]) - var/tp = text2num(href_list["tp"]) - src.t_per += tp - src.t_per = min(max(round(src.t_per), 0), 1000000.0) - else - if (href_list["cp"]) - var/cp = text2num(href_list["cp"]) - src.c_per += cp - src.c_per = min(max(round(src.c_per), 0), 1000000.0) - else - if (href_list["ht"]) - var/cp = text2num(href_list["ht"]) - src.h_tar += cp - src.h_tar = min(max(round(src.h_tar), 0), 500) - else - if (href_list["tank"]) - var/cp = text2num(href_list["tank"]) - if ((cp == 1 && src.holding)) - src.holding.loc = src.loc - src.holding = null - if (src.t_status == 2) - src.t_status = 3 - src.updateUsrDialog() - src.add_fingerprint(usr) - else - usr << browse(null, "window=canister") - return - return - -/obj/machinery/atmoalter/heater/attackby(var/obj/W as obj, var/mob/user as mob) - - if (istype(W, /obj/item/weapon/tank)) - if (src.holding) - return - var/obj/item/weapon/tank/T = W - user.drop_item() - T.loc = src - src.holding = T - else - if (istype(W, /obj/item/weapon/wrench)) - var/obj/machinery/connector/con = locate(/obj/machinery/connector, src.loc) - - if (src.c_status) - src.anchored = initial(src.anchored) - src.c_status = 0 - user.show_message("\blue You have disconnected the heater.", 1) - if(con) - con.connected = null - else - if (con && !con.connected) - src.anchored = 1 - src.c_status = 3 - user.show_message("\blue You have connected the heater.", 1) - con.connected = src - else - user.show_message("\blue There is no connector here to attach the heater to.", 1) - return - diff --git a/code/unused/hivebot/death.dm b/code/unused/hivebot/death.dm deleted file mode 100644 index 43e7c257a53..00000000000 --- a/code/unused/hivebot/death.dm +++ /dev/null @@ -1,24 +0,0 @@ -/mob/living/silicon/hivebot/death(gibbed) - if(src.mainframe) - src.mainframe.return_to(src) - src.stat = 2 - src.canmove = 0 - - if(src.blind) - src.blind.layer = 0 - src.sight |= SEE_TURFS - src.sight |= SEE_MOBS - src.sight |= SEE_OBJS - - src.see_in_dark = 8 - src.see_invisible = SEE_INVISIBLE_LEVEL_TWO - src.updateicon() - - var/tod = time2text(world.realtime,"hh:mm:ss") //weasellos time of death patch - store_memory("Time of death: [tod]", 0) - - if (src.key) - spawn(50) - if(src.key && src.stat == 2) - src.verbs += /client/proc/ghost - return ..(gibbed) \ No newline at end of file diff --git a/code/unused/hivebot/emote.dm b/code/unused/hivebot/emote.dm deleted file mode 100644 index 239a8647395..00000000000 --- a/code/unused/hivebot/emote.dm +++ /dev/null @@ -1,139 +0,0 @@ -/mob/living/silicon/hivebot/emote(var/act) - var/param = null - if (findtext(act, "-", 1, null)) - var/t1 = findtext(act, "-", 1, null) - param = copytext(act, t1 + 1, length(act) + 1) - act = copytext(act, 1, t1) - var/m_type = 1 - var/message - - switch(act) - if ("salute") - if (!src.buckled) - var/M = null - if (param) - for (var/mob/A in view(null, null)) - if (param == A.name) - M = A - break - if (!M) - param = null - - if (param) - message = "[src] salutes to [param]." - else - message = "[src] salutes." - m_type = 1 - if ("bow") - if (!src.buckled) - var/M = null - if (param) - for (var/mob/A in view(null, null)) - if (param == A.name) - M = A - break - if (!M) - param = null - - if (param) - message = "[src] bows to [param]." - else - message = "[src] bows." - m_type = 1 - - if ("clap") - if (!src.restrained()) - message = "[src] claps." - m_type = 2 - if ("flap") - if (!src.restrained()) - message = "[src] flaps his wings." - m_type = 2 - - if ("aflap") - if (!src.restrained()) - message = "[src] flaps his wings ANGRILY!" - m_type = 2 - - if ("custom") - var/input = sanitize(copytext(input("Choose an emote to display.") as text|null, 1, MAX_MESSAGE_LEN)) - if (!input) - return - var/input2 = input("Is this a visible or hearable emote?") in list("Visible","Hearable") - if (input2 == "Visible") - m_type = 1 - else if (input2 == "Hearable") - m_type = 2 - else - alert("Unable to use this emote, must be either hearable or visible.") - return - message = "[src] [input]" - - if ("twitch") - message = "[src] twitches violently." - m_type = 1 - - if ("twitch_s") - message = "[src] twitches." - m_type = 1 - - if ("nod") - message = "[src] nods." - m_type = 1 - - if ("glare") - var/M = null - if (param) - for (var/mob/A in view(null, null)) - if (param == A.name) - M = A - break - if (!M) - param = null - - if (param) - message = "[src] glares at [param]." - else - message = "[src] glares." - - if ("stare") - var/M = null - if (param) - for (var/mob/A in view(null, null)) - if (param == A.name) - M = A - break - if (!M) - param = null - - if (param) - message = "[src] stares at [param]." - else - message = "[src] stares." - - if ("look") - var/M = null - if (param) - for (var/mob/A in view(null, null)) - if (param == A.name) - M = A - break - - if (!M) - param = null - - if (param) - message = "[src] looks at [param]." - else - message = "[src] looks." - m_type = 1 - else - src << text("Invalid Emote: []", act) - if ((message && src.stat == 0)) - if (m_type & 1) - for(var/mob/O in viewers(src, null)) - O.show_message(message, m_type) - else - for(var/mob/O in hearers(src, null)) - O.show_message(message, m_type) - return \ No newline at end of file diff --git a/code/unused/hivebot/examine.dm b/code/unused/hivebot/examine.dm deleted file mode 100644 index 2b9f3b3c4b9..00000000000 --- a/code/unused/hivebot/examine.dm +++ /dev/null @@ -1,18 +0,0 @@ -/mob/living/silicon/hivebot/examine(mob/user) - ..(user) - - if (src.stat == 2) - user << text("\red [src.name] is powered-down.") - if (src.getBruteLoss()) - if (src.getBruteLoss() < 75) - user << text("\red [src.name] looks slightly dented") - else - user << text("\red [src.name] looks severely dented!") - if (src.getFireLoss()) - if (src.getFireLoss() < 75) - user << text("\red [src.name] looks slightly burnt!") - else - user << text("\red [src.name] looks severely burnt!") - if (src.stat == 1) - user << text("\red [src.name] doesn't seem to be responding.") - return \ No newline at end of file diff --git a/code/unused/hivebot/hive_modules.dm b/code/unused/hivebot/hive_modules.dm deleted file mode 100644 index 69ffb9d62fb..00000000000 --- a/code/unused/hivebot/hive_modules.dm +++ /dev/null @@ -1,57 +0,0 @@ -/obj/item/weapon/hive_module - name = "hive robot module" - icon = 'icons/obj/module.dmi' - icon_state = "std_module" - w_class = 2.0 - item_state = "electronic" - flags = CONDUCT - var/list/modules = list() - -/obj/item/weapon/hive_module/standard - name = "give standard robot module" - -/obj/item/weapon/hive_module/engineering - name = "HiveBot engineering robot module" - -/obj/item/weapon/hive_module/New()//Shit all the mods have - src.modules += new /obj/item/device/flash(src) - - -/obj/item/weapon/hive_module/standard/New() - ..() - src.modules += new /obj/item/weapon/melee/baton(src) - src.modules += new /obj/item/weapon/extinguisher(src) - //var/obj/item/weapon/gun/mp5/M = new /obj/item/weapon/gun/mp5(src) - //M.weapon_lock = 0 - //src.modules += M - - -/obj/item/weapon/hive_module/engineering/New() - - src.modules += new /obj/item/weapon/extinguisher(src) - src.modules += new /obj/item/weapon/screwdriver(src) - src.modules += new /obj/item/weapon/weldingtool(src) - src.modules += new /obj/item/weapon/wrench(src) - src.modules += new /obj/item/device/analyzer(src) - src.modules += new /obj/item/device/flashlight(src) - - var/obj/item/weapon/rcd/R = new /obj/item/weapon/rcd(src) - R.matter = 30 - src.modules += R - - src.modules += new /obj/item/device/t_scanner(src) - src.modules += new /obj/item/weapon/crowbar(src) - src.modules += new /obj/item/weapon/wirecutters(src) - src.modules += new /obj/item/device/multitool(src) - - var/obj/item/stack/sheet/metal/M = new /obj/item/stack/sheet/metal(src) - M.amount = 50 - src.modules += M - - var/obj/item/stack/sheet/glass/reinforced/G = new (src) - G.amount = 50 - src.modules += G - - var/obj/item/stack/cable_coil/W = new /obj/item/stack/cable_coil(src) - W.amount = 50 - src.modules += W diff --git a/code/unused/hivebot/hivebot.dm b/code/unused/hivebot/hivebot.dm deleted file mode 100644 index ade7dab091a..00000000000 --- a/code/unused/hivebot/hivebot.dm +++ /dev/null @@ -1,503 +0,0 @@ -/mob/living/silicon/hivebot/New(loc,mainframe) - src << "\blue Your icons have been generated!" - updateicon() - - if(mainframe) - dependent = 1 - src.real_name = mainframe:name - src.name = src.real_name - else - src.real_name = "Robot [pick(rand(1, 999))]" - src.name = src.real_name - - src.radio = new /obj/item/device/radio(src) - ..() - - -/mob/living/silicon/hivebot/proc/pick_module() - if(src.module) - return - var/mod = input("Please, select a module!", "Robot", null, null) in list("Combat", "Engineering") - if(src.module) - return - switch(mod) - if("Combat") - src.module = new /obj/item/weapon/hive_module/standard(src) - - if("Engineering") - src.module = new /obj/item/weapon/hive_module/engineering(src) - - - src.hands.icon_state = "malf" - updateicon() - - -/mob/living/silicon/hivebot/blob_act() - if (src.stat != 2) - src.adjustBruteLoss(60) - src.updatehealth() - return 1 - return 0 - -/mob/living/silicon/hivebot/Stat() - ..() - statpanel("Status") - if (src.client.statpanel == "Status") - if(emergency_shuttle) - if(emergency_shuttle.has_eta() && !emergency_shuttle.returned()) - var/timeleft = emergency_shuttle.estimate_arrival_time() - if (timeleft) - stat(null, "ETA-[(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]") -/* - if(ticker.mode.name == "AI malfunction") - stat(null, "Points left until the AI takes over: [AI_points]/[AI_points_win]") -*/ - - stat(null, text("Charge Left: [src.energy]/[src.energy_max]")) - -/mob/living/silicon/hivebot/restrained() - return 0 - -/mob/living/silicon/hivebot/ex_act(severity) - if(!blinded) - flick("flash", src.flash) - - if (src.stat == 2 && src.client) - src.gib(1) - return - - else if (src.stat == 2 && !src.client) - del(src) - return - - switch(severity) - if(1.0) - if (src.stat != 2) - adjustBruteLoss(100) - adjustFireLoss(100) - src.gib(1) - return - if(2.0) - if (src.stat != 2) - adjustBruteLoss(60) - adjustFireLoss(60) - if(3.0) - if (src.stat != 2) - adjustBruteLoss(30) - - src.updatehealth() - -/mob/living/silicon/hivebot/meteorhit(obj/O as obj) - for(var/mob/M in viewers(src, null)) - M.show_message(text("\red [src] has been hit by [O]"), 1) - //Foreach goto(19) - if (src.health > 0) - src.adjustBruteLoss(30) - if ((O.icon_state == "flaming")) - src.adjustFireLoss(40) - src.updatehealth() - return - -/mob/living/silicon/hivebot/bullet_act(flag) -/* - if (flag == PROJECTILE_BULLET) - if (src.stat != 2) - src.bruteloss += 60 - src.updatehealth() - - else if (flag == PROJECTILE_MEDBULLET) - if (src.stat != 2) - src.bruteloss += 30 - src.updatehealth() - - else if (flag == PROJECTILE_WEAKBULLET) - if (src.stat != 2) - src.bruteloss += 15 - src.updatehealth() - - else if (flag == PROJECTILE_MPBULLET) - if (src.stat != 2) - src.bruteloss += 20 - src.updatehealth() - - else if (flag == PROJECTILE_SLUG) - if (src.stat != 2) - src.bruteloss += 40 - src.updatehealth() - - else if (flag == PROJECTILE_BAG) - if (src.stat != 2) - src.bruteloss += 2 - src.updatehealth() - - - else if (flag == PROJECTILE_TASER) - return - - else if (flag == PROJECTILE_WAVE) - if (src.stat != 2) - src.bruteloss += 25 - src.updatehealth() - return - - else if(flag == PROJECTILE_LASER) - if (src.stat != 2) - src.bruteloss += 20 - src.updatehealth() - else if(flag == PROJECTILE_PULSE) - if (src.stat != 2) - src.bruteloss += 40 - src.updatehealth() -*/ - return - - - -/mob/living/silicon/hivebot/Bump(atom/movable/AM as mob|obj, yes) - spawn( 0 ) - if ((!( yes ) || src.now_pushing)) - return - src.now_pushing = 1 - if(ismob(AM)) - var/mob/tmob = AM - /*if(istype(tmob, /mob/living/carbon/human) && (FAT in tmob.mutations)) - if(prob(20)) - for(var/mob/M in viewers(src, null)) - if(M.client) - M << M << "\red [src] fails to push [tmob]'s fat ass out of the way." - src.now_pushing = 0 - //src.unlock_medal("That's No Moon, That's A Gourmand!", 1) - return*/ - src.now_pushing = 0 - ..() - if (!istype(AM, /atom/movable)) - return - if (!src.now_pushing) - src.now_pushing = 1 - if (!AM.anchored) - var/t = get_dir(src, AM) - step(AM, t) - src.now_pushing = null - return - return - - -/mob/living/silicon/hivebot/attackby(obj/item/weapon/W as obj, mob/user as mob) - if (istype(W, /obj/item/weapon/weldingtool) && W:welding) - if (W:remove_fuel(0)) - src.adjustBruteLoss(-30) - src.updatehealth() - src.add_fingerprint(user) - for(var/mob/O in viewers(user, null)) - O.show_message(text("\red [user] has fixed some of the dents on [src]!"), 1) - else - user << "Need more welding fuel!" - return - -/mob/living/silicon/hivebot/attack_alien(mob/living/carbon/alien/humanoid/M as mob) - - if (M.a_intent == "grab") - if (M == src) - return - var/obj/item/weapon/grab/G = new /obj/item/weapon/grab( M ) - G.assailant = M - if (M.hand) - M.l_hand = G - else - M.r_hand = G - G.layer = 20 - G.affecting = src - G.synch() - playsound(src.loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) - for(var/mob/O in viewers(src, null)) - O.show_message(text("\red [] has grabbed [] passively!", M, src), 1) - - else if (M.a_intent == "hurt") - var/damage = rand(5, 10) - if (prob(90)) - /* - if (M.class == "combat") - damage += 15 - if(prob(20)) - src.weakened = max(src.weakened,4) - src.stunned = max(src.stunned,4) - */ - playsound(src.loc, 'sound/weapons/slash.ogg', 25, 1, -1) - for(var/mob/O in viewers(src, null)) - O.show_message(text("\red [] has slashed at []!", M, src), 1) - if(prob(8)) - flick("noise", src.flash) - src.adjustBruteLoss(damage) - src.updatehealth() - else - playsound(src.loc, 'sound/weapons/slashmiss.ogg', 25, 1, -1) - for(var/mob/O in viewers(src, null)) - O.show_message(text("\red [] took a swipe at []!", M, src), 1) - return - - else if (M.a_intent == "disarm") - if(!(src.lying)) - var/randn = rand(1, 100) - if (randn <= 40) - src.stunned = 5 - step(src,get_dir(M,src)) - spawn(5) step(src,get_dir(M,src)) - playsound(src.loc, 'sound/weapons/slash.ogg', 50, 1, -1) - for(var/mob/O in viewers(src, null)) - O.show_message(text("\red [] has pushed back []!", M, src), 1) - else - playsound(src.loc, 'sound/weapons/slashmiss.ogg', 25, 1, -1) - for(var/mob/O in viewers(src, null)) - O.show_message(text("\red [] attempted to push back []!", M, src), 1) - return - -/mob/living/silicon/hivebot/attack_hand(mob/user) - ..() - return - - -/mob/living/silicon/hivebot/proc/allowed(mob/M) - //check if it doesn't require any access at all - if(src.check_access(null)) - return 1 - return 0 - -/mob/living/silicon/hivebot/proc/check_access(obj/item/weapon/card/id/I) - if(!istype(src.req_access, /list)) //something's very wrong - return 1 - - var/list/L = src.req_access - if(!L.len) //no requirements - return 1 - if(!I || !istype(I, /obj/item/weapon/card/id) || !I.access) //not ID or no access - return 0 - for(var/req in src.req_access) - if(!(req in I.access)) //doesn't have this access - return 0 - return 1 - -/mob/living/silicon/hivebot/proc/updateicon() - - src.overlays.Cut() - - if(src.stat == 0) - src.overlays += "eyes" - else - src.overlays -= "eyes" - - -/mob/living/silicon/hivebot/proc/installed_modules() - - if(!src.module) - src.pick_module() - return - var/dat = "Modules\n" - dat += {"Close -
-
- Activated Modules -
- Module 1: [module_state_1 ? "[module_state_1]" : "No Module"]
- Module 2: [module_state_2 ? "
[module_state_2]" : "No Module"]
- Module 3: [module_state_3 ? "
[module_state_3]" : "No Module"]
-
- Installed Modules

"} - - for (var/obj in src.module.modules) - if(src.activated(obj)) - dat += text("[obj]: Activated
") - else - dat += text("[obj]:
Activate
") -/* - if(src.activated(obj)) - dat += text("[obj]: \[Activated | Deactivate\]
") - else - dat += text("[obj]: \[Activate | Deactivated\]
") -*/ - src << browse(dat, "window=robotmod&can_close=0") - - -/mob/living/silicon/hivebot/Topic(href, href_list) - ..() - if (href_list["mach_close"]) - var/t1 = text("window=[href_list["mach_close"]]") - src.machine = null - src << browse(null, t1) - return - - if (href_list["mod"]) - var/obj/item/O = locate(href_list["mod"]) - O.attack_self(src) - - if (href_list["act"]) - var/obj/item/O = locate(href_list["act"]) - if(activated(O)) - src << "Already activated" - return - if(!src.module_state_1) - src.module_state_1 = O - O.layer = 20 - src.contents += O - else if(!src.module_state_2) - src.module_state_2 = O - O.layer = 20 - src.contents += O - else if(!src.module_state_3) - src.module_state_3 = O - O.layer = 20 - src.contents += O - else - src << "You need to disable a module first!" - src.installed_modules() - - if (href_list["deact"]) - var/obj/item/O = locate(href_list["deact"]) - if(activated(O)) - if(src.module_state_1 == O) - src.module_state_1 = null - src.contents -= O - else if(src.module_state_2 == O) - src.module_state_2 = null - src.contents -= O - else if(src.module_state_3 == O) - src.module_state_3 = null - src.contents -= O - else - src << "Module isn't activated." - else - src << "Module isn't activated" - src.installed_modules() - return - -/mob/living/silicon/hivebot/proc/uneq_active() - if(isnull(src.module_active)) - return - if(src.module_state_1 == src.module_active) - if (src.client) - src.client.screen -= module_state_1 - src.contents -= module_state_1 - src.module_active = null - src.module_state_1 = null - src.inv1.icon_state = "inv1" - else if(src.module_state_2 == src.module_active) - if (src.client) - src.client.screen -= module_state_2 - src.contents -= module_state_2 - src.module_active = null - src.module_state_2 = null - src.inv2.icon_state = "inv2" - else if(src.module_state_3 == src.module_active) - if (src.client) - src.client.screen -= module_state_3 - src.contents -= module_state_3 - src.module_active = null - src.module_state_3 = null - src.inv3.icon_state = "inv3" - - -/mob/living/silicon/hivebot/proc/activated(obj/item/O) - if(src.module_state_1 == O) - return 1 - else if(src.module_state_2 == O) - return 1 - else if(src.module_state_3 == O) - return 1 - else - return 0 - -/mob/living/silicon/hivebot/proc/radio_menu() - var/dat = {" - -Microphone: [src.radio.broadcasting ? "Engaged" : "Disengaged"]
-Speaker: [src.radio.listening ? "Engaged" : "Disengaged"]
-Frequency: -- -- -[format_frequency(src.radio.frequency)] -+ -+
-------- -
"} - src << browse(dat, "window=radio") - onclose(src, "radio") - return - - -/mob/living/silicon/hivebot/Move(a, b, flag) - - if (src.buckled) - return - - if (src.restrained()) - src.stop_pulling() - - var/t7 = 1 - if (src.restrained()) - for(var/mob/M in range(src, 1)) - if ((M.pulling == src && M.stat == 0 && !( M.restrained() ))) - t7 = null - if ((t7 && (src.pulling && ((get_dist(src, src.pulling) <= 1 || src.pulling.loc == src.loc) && (src.client && src.client.moving))))) - var/turf/T = src.loc - . = ..() - - if (src.pulling && src.pulling.loc) - if(!( isturf(src.pulling.loc) )) - src.stop_pulling() - return - else - if(Debug) - diary <<"src.pulling disappeared? at [__LINE__] in mob.dm - src.pulling = [src.pulling]" - diary <<"REPORT THIS" - - ///// - if(src.pulling && src.pulling.anchored) - src.stop_pulling() - return - - if (!src.restrained()) - var/diag = get_dir(src, src.pulling) - if ((diag - 1) & diag) - else - diag = null - if ((get_dist(src, src.pulling) > 1 || diag)) - if (ismob(src.pulling)) - var/mob/M = src.pulling - var/ok = 1 - if (locate(/obj/item/weapon/grab, M.grabbed_by)) - if (prob(75)) - var/obj/item/weapon/grab/G = pick(M.grabbed_by) - if (istype(G, /obj/item/weapon/grab)) - for(var/mob/O in viewers(M, null)) - O.show_message(text("\red [G.affecting] has been pulled from [G.assailant]'s grip by [src]"), 1) - del(G) - else - ok = 0 - if (locate(/obj/item/weapon/grab, M.grabbed_by.len)) - ok = 0 - if (ok) - var/atom/movable/t = M.pulling - M.stop_pulling() - step(src.pulling, get_dir(src.pulling.loc, T)) - M.start_pulling(t) - else - if (src.pulling) - step(src.pulling, get_dir(src.pulling.loc, T)) - else - src.stop_pulling() - . = ..() - if ((src.s_active && !( s_active in src.contents ) )) - src.s_active.close(src) - return - - -/mob/living/silicon/hivebot/verb/cmd_return_mainframe() - set category = "Robot Commands" - set name = "Recall to Mainframe." - return_mainframe() - -/mob/living/silicon/hivebot/proc/return_mainframe() - if(mainframe) - mainframe.return_to(src) - else - src << "\red You lack a dedicated mainframe!" - return \ No newline at end of file diff --git a/code/unused/hivebot/hivebotdefine.dm b/code/unused/hivebot/hivebotdefine.dm deleted file mode 100644 index 902c2304710..00000000000 --- a/code/unused/hivebot/hivebotdefine.dm +++ /dev/null @@ -1,46 +0,0 @@ -/mob/living/silicon/hivebot - name = "Robot" - icon = 'icons/mob/hivebot.dmi' - icon_state = "basic" - health = 80 - var/health_max = 80 - robot_talk_understand = 2 - -//HUD - var/obj/screen/cells = null - var/obj/screen/inv1 = null - var/obj/screen/inv2 = null - var/obj/screen/inv3 = null - -//3 Modules can be activated at any one time. - var/obj/item/weapon/robot_module/module = null - var/module_active = null - var/module_state_1 = null - var/module_state_2 = null - var/module_state_3 = null - - var/obj/item/device/radio/radio = null - - var/list/req_access = list(ACCESS_ROBOTICS) - var/energy = 4000 - var/energy_max = 4000 - var/jetpack = 0 - - var/mob/living/silicon/hive_mainframe/mainframe = null - var/dependent = 0 - var/shell = 1 - -/mob/living/silicon/hive_mainframe - name = "Robot Mainframe" - voice_name = "synthesized voice" - - icon_state = "hive_main" - health = 200 - var/health_max = 200 - robot_talk_understand = 2 - - anchored = 1 - var/online = 1 - var/mob/living/silicon/hivebot = null - var/hivebot_name = null - var/force_mind = 0 \ No newline at end of file diff --git a/code/unused/hivebot/hud.dm b/code/unused/hivebot/hud.dm deleted file mode 100644 index 3cc862c65d0..00000000000 --- a/code/unused/hivebot/hud.dm +++ /dev/null @@ -1,251 +0,0 @@ - -/obj/hud/proc/hivebot_hud() - - src.adding = list( ) - src.other = list( ) - src.intents = list( ) - src.mon_blo = list( ) - src.m_ints = list( ) - src.mov_int = list( ) - src.vimpaired = list( ) - src.darkMask = list( ) - - src.g_dither = new src.h_type( src ) - src.g_dither.screen_loc = "WEST,SOUTH to EAST,NORTH" - src.g_dither.name = "Mask" - src.g_dither.icon_state = "dither12g" - src.g_dither.layer = 18 - src.g_dither.mouse_opacity = 0 - - src.alien_view = new src.h_type(src) - src.alien_view.screen_loc = "WEST,SOUTH to EAST,NORTH" - src.alien_view.name = "Alien" - src.alien_view.icon_state = "alien" - src.alien_view.layer = 18 - src.alien_view.mouse_opacity = 0 - - src.blurry = new src.h_type( src ) - src.blurry.screen_loc = "WEST,SOUTH to EAST,NORTH" - src.blurry.name = "Blurry" - src.blurry.icon_state = "blurry" - src.blurry.layer = 17 - src.blurry.mouse_opacity = 0 - - src.druggy = new src.h_type( src ) - src.druggy.screen_loc = "WEST,SOUTH to EAST,NORTH" - src.druggy.name = "Druggy" - src.druggy.icon_state = "druggy" - src.druggy.layer = 17 - src.druggy.mouse_opacity = 0 - - // station explosion cinematic - src.station_explosion = new src.h_type( src ) - src.station_explosion.icon = 'icons/effects/station_explosion.dmi' - src.station_explosion.icon_state = "start" - src.station_explosion.layer = 20 - src.station_explosion.mouse_opacity = 0 - src.station_explosion.screen_loc = "1,3" - - var/obj/screen/using - - -//Radio - using = new src.h_type( src ) - using.name = "radio" - using.set_dir(SOUTHWEST) - using.icon = 'icons/mob/screen1_robot.dmi' - using.icon_state = "radio" - using.screen_loc = ui_movi_old - using.layer = 20 - src.adding += using - -//Generic overlays - - using = new src.h_type(src) //Right hud bar - using.set_dir(SOUTH) - using.icon = 'icons/mob/screen1_robot.dmi' - using.screen_loc = "EAST+1,SOUTH to EAST+1,NORTH" - using.layer = 19 - src.adding += using - - using = new src.h_type(src) //Lower hud bar - using.set_dir(EAST) - using.icon = 'icons/mob/screen1_robot.dmi' - using.screen_loc = "WEST,SOUTH-1 to EAST,SOUTH-1" - using.layer = 19 - src.adding += using - - using = new src.h_type(src) //Corner Button - using.set_dir(NORTHWEST) - using.icon = 'icons/mob/screen1_robot.dmi' - using.screen_loc = "EAST+1,SOUTH-1" - using.layer = 19 - src.adding += using - - -//Module select - - using = new src.h_type( src ) - using.name = "module1" - using.set_dir(SOUTHWEST) - using.icon = 'icons/mob/screen1_robot.dmi' - using.icon_state = "inv1" - using.screen_loc = ui_inv1 - using.layer = 20 - src.adding += using - mymob:inv1 = using - - using = new src.h_type( src ) - using.name = "module2" - using.set_dir(SOUTHWEST) - using.icon = 'icons/mob/screen1_robot.dmi' - using.icon_state = "inv2" - using.screen_loc = ui_inv2 - using.layer = 20 - src.adding += using - mymob:inv2 = using - - using = new src.h_type( src ) - using.name = "module3" - using.set_dir(SOUTHWEST) - using.icon = 'icons/mob/screen1_robot.dmi' - using.icon_state = "inv3" - using.screen_loc = ui_inv3 - using.layer = 20 - src.adding += using - mymob:inv3 = using - -//End of module select - -//Intent - using = new src.h_type( src ) - using.name = "act_intent" - using.set_dir(SOUTHWEST) - using.icon = 'icons/mob/screen1_robot.dmi' - using.icon_state = (mymob.a_intent == "hurt" ? "harm" : mymob.a_intent) - using.screen_loc = ui_acti - using.layer = 20 - src.adding += using - action_intent = using - - using = new src.h_type( src ) - using.name = "arrowleft" - using.icon = 'icons/mob/screen1_robot.dmi' - using.icon_state = "s_arrow" - using.set_dir(WEST) - using.screen_loc = ui_iarrowleft - using.layer = 19 - src.adding += using - - using = new src.h_type( src ) - using.name = "arrowright" - using.icon = 'icons/mob/screen1_robot.dmi' - using.icon_state = "s_arrow" - using.set_dir(EAST) - using.screen_loc = ui_iarrowright - using.layer = 19 - src.adding += using -//End of Intent - -//Cell - mymob:cells = new /obj/screen( null ) - mymob:cells.icon = 'icons/mob/screen1_robot.dmi' - mymob:cells.icon_state = "charge-empty" - mymob:cells.name = "cell" - mymob:cells.screen_loc = ui_toxin - -//Health - mymob.healths = new /obj/screen( null ) - mymob.healths.icon = 'icons/mob/screen1_robot.dmi' - mymob.healths.icon_state = "health0" - mymob.healths.name = "health" - mymob.healths.screen_loc = ui_health - -//Installed Module - mymob.hands = new /obj/screen( null ) - mymob.hands.icon = 'icons/mob/screen1_robot.dmi' - mymob.hands.icon_state = "nomod" - mymob.hands.name = "module" - mymob.hands.screen_loc = ui_dropbutton - -//Module Panel - using = new src.h_type( src ) - using.name = "panel" - using.icon = 'icons/mob/screen1_robot.dmi' - using.icon_state = "panel" - using.screen_loc = ui_throw - using.layer = 19 - src.adding += using - -//Store - mymob.throw_icon = new /obj/screen(null) - mymob.throw_icon.icon = 'icons/mob/screen1_robot.dmi' - mymob.throw_icon.icon_state = "store" - mymob.throw_icon.name = "store" - mymob.throw_icon.screen_loc = ui_hand - -//Temp - mymob.bodytemp = new /obj/screen( null ) - mymob.bodytemp.icon_state = "temp0" - mymob.bodytemp.name = "body temperature" - mymob.bodytemp.screen_loc = ui_temp - -//does nothing (fire and oxy) - mymob.oxygen = new /obj/screen( null ) - mymob.oxygen.icon = 'icons/mob/screen1_robot.dmi' - mymob.oxygen.icon_state = "oxy0" - mymob.oxygen.name = "oxygen" - mymob.oxygen.screen_loc = ui_oxygen - - mymob.fire = new /obj/screen( null ) - mymob.fire.icon = 'icons/mob/screen1_robot.dmi' - mymob.fire.icon_state = "fire0" - mymob.fire.name = "fire" - mymob.fire.screen_loc = ui_fire - - - - mymob.pullin = new /obj/screen( null ) - mymob.pullin.icon = 'icons/mob/screen1_robot.dmi' - mymob.pullin.icon_state = "pull0" - mymob.pullin.name = "pull" - mymob.pullin.screen_loc = ui_pull - - mymob.blind = new /obj/screen( null ) - mymob.blind.icon = 'icons/mob/screen1_full.dmi'' - mymob.blind.icon_state = "blackimageoverlay" - mymob.blind.name = " " - mymob.blind.screen_loc = "1,1" - mymob.blind.layer = 0 - mymob.blind.mouse_opacity = 0 - - mymob.flash = new /obj/screen( null ) - mymob.flash.icon = 'icons/mob/screen1_robot.dmi' - mymob.flash.icon_state = "blank" - mymob.flash.name = "flash" - mymob.flash.screen_loc = "1,1 to 15,15" - mymob.flash.layer = 17 - - mymob.sleep = new /obj/screen( null ) - mymob.sleep.icon = 'icons/mob/screen1_robot.dmi' - mymob.sleep.icon_state = "sleep0" - mymob.sleep.name = "sleep" - mymob.sleep.screen_loc = ui_sleep - - mymob.rest = new /obj/screen( null ) - mymob.rest.icon = 'icons/mob/screen1_robot.dmi' - mymob.rest.icon_state = "rest0" - mymob.rest.name = "rest" - mymob.rest.screen_loc = ui_rest - - - mymob.zone_sel = new /obj/screen/zone_sel( null ) - mymob.zone_sel.overlays.Cut() - mymob.zone_sel.overlays += image("icon" = 'icons/mob/zone_sel.dmi', "icon_state" = text("[]", mymob.zone_sel.selecting)) - - mymob.client.screen = null - - mymob.client.screen += list(mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.fire, mymob.hands, mymob.healths, mymob:cells, mymob.pullin, mymob.blind, mymob.flash, mymob.rest, mymob.sleep) //, mymob.mach ) - mymob.client.screen += src.adding + src.other - - return diff --git a/code/unused/hivebot/life.dm b/code/unused/hivebot/life.dm deleted file mode 100644 index 362328cb4dd..00000000000 --- a/code/unused/hivebot/life.dm +++ /dev/null @@ -1,227 +0,0 @@ -/mob/living/silicon/hivebot/Life() - set invisibility = 0 - set background = 1 - - if (src.monkeyizing) - return - - if (src.stat != 2) - use_power() - - src.blinded = null - - clamp_values() - - handle_regular_status_updates() - - if(client) - src.shell = 0 - handle_regular_hud_updates() - update_items() - if(dependent) - mainframe_check() - - update_canmove() - - -/mob/living/silicon/hivebot - proc - clamp_values() - - stunned = max(min(stunned, 10),0) - paralysis = max(min(paralysis, 1), 0) - weakened = max(min(weakened, 15), 0) - sleeping = max(min(sleeping, 1), 0) - setToxLoss(0) - setOxyLoss(0) - - use_power() - - if (src.energy) - if(src.energy <= 0) - death() - - else if (src.energy <= 10) - src.module_active = null - src.module_state_1 = null - src.module_state_2 = null - src.module_state_3 = null - src.energy -=1 - else - if(src.module_state_1) - src.energy -=1 - if(src.module_state_2) - src.energy -=1 - if(src.module_state_3) - src.energy -=1 - src.energy -=1 - src.blinded = 0 - src.stat = 0 - else - src.blinded = 1 - src.stat = 1 - - update_canmove() - if(paralysis || stunned || weakened || buckled) canmove = 0 - else canmove = 1 - - - handle_regular_status_updates() - - health = src.health_max - (getFireLoss() + getBruteLoss()) - - if(health <= 0) - death() - - if (src.stat != 2) //Alive. - - if (src.paralysis || src.stunned || src.weakened) //Stunned etc. - if (src.stunned > 0) - src.stunned-- - src.stat = 0 - if (src.weakened > 0) - src.weakened-- - src.lying = 0 - src.stat = 0 - if (src.paralysis > 0) - src.paralysis-- - src.blinded = 0 - src.lying = 0 - src.stat = 1 - - else //Not stunned. - src.lying = 0 - src.stat = 0 - - else //Dead. - src.blinded = 1 - src.stat = 2 - - src.density = !( src.lying ) - - if ((src.sdisabilities & 1)) - src.blinded = 1 - if ((src.sdisabilities & 4)) - src.ear_deaf = 1 - - if (src.eye_blurry > 0) - src.eye_blurry-- - src.eye_blurry = max(0, src.eye_blurry) - - if (src.druggy > 0) - src.druggy-- - src.druggy = max(0, src.druggy) - - return 1 - - handle_regular_hud_updates() - - if (src.stat == 2 || XRAY in src.mutations) - src.sight |= SEE_TURFS - src.sight |= SEE_MOBS - src.sight |= SEE_OBJS - src.see_in_dark = 8 - src.see_invisible = SEE_INVISIBLE_LEVEL_TWO - else if (src.stat != 2) - src.sight &= ~SEE_MOBS - src.sight &= ~SEE_TURFS - src.sight &= ~SEE_OBJS - src.see_in_dark = 8 - src.see_invisible = SEE_INVISIBLE_LEVEL_TWO - - if (src.healths) - if (src.stat != 2) - switch(health) - if(health_max to INFINITY) - src.healths.icon_state = "health0" - if(src.health_max*0.80 to src.health_max) - src.healths.icon_state = "health1" - if(src.health_max*0.60 to src.health_max*0.80) - src.healths.icon_state = "health2" - if(src.health_max*0.40 to src.health_max*0.60) - src.healths.icon_state = "health3" - if(src.health_max*0.20 to src.health_max*0.40) - src.healths.icon_state = "health4" - if(0 to health_max*0.20) - src.healths.icon_state = "health5" - else - src.healths.icon_state = "health6" - else - src.healths.icon_state = "health7" - - if (src.cells) - switch(src.energy) - if(src.energy_max*0.75 to INFINITY) - src.cells.icon_state = "charge4" - if(0.5*src.energy_max to 0.75*src.energy_max) - src.cells.icon_state = "charge3" - if(0.25*src.energy_max to 0.5*src.energy_max) - src.cells.icon_state = "charge2" - if(0 to 0.25*src.energy_max) - src.cells.icon_state = "charge1" - else - src.cells.icon_state = "charge0" - - switch(src.bodytemperature) //310.055 optimal body temp - - if(335 to INFINITY) - src.bodytemp.icon_state = "temp2" - if(320 to 335) - src.bodytemp.icon_state = "temp1" - if(300 to 320) - src.bodytemp.icon_state = "temp0" - if(260 to 300) - src.bodytemp.icon_state = "temp-1" - else - src.bodytemp.icon_state = "temp-2" - - - if(src.pullin) src.pullin.icon_state = "pull[src.pulling ? 1 : 0]" - - src.client.screen -= src.hud_used.blurry - src.client.screen -= src.hud_used.druggy - src.client.screen -= src.hud_used.vimpaired - - if ((src.blind && src.stat != 2)) - if ((src.blinded)) - src.blind.layer = 18 - else - src.blind.layer = 0 - - if (src.disabilities & 1) - src.client.screen += src.hud_used.vimpaired - - if (src.eye_blurry) - src.client.screen += src.hud_used.blurry - - if (src.druggy) - src.client.screen += src.hud_used.druggy - - if (src.stat != 2) - if (src.machine) - if (!( src.machine.check_eye(src) )) - src.reset_view(null) - else - if(!client.adminobs) - reset_view(null) - - return 1 - - - update_items() - if (src.client) - src.client.screen -= src.contents - src.client.screen += src.contents - if(src.module_state_1) - src.module_state_1:screen_loc = ui_inv1 - if(src.module_state_2) - src.module_state_2:screen_loc = ui_inv2 - if(src.module_state_3) - src.module_state_3:screen_loc = ui_inv3 - - mainframe_check() - if(mainframe) - if(mainframe.stat == 2) - mainframe.return_to(src) - else - death() \ No newline at end of file diff --git a/code/unused/hivebot/login.dm b/code/unused/hivebot/login.dm deleted file mode 100644 index 3a811b4c8a9..00000000000 --- a/code/unused/hivebot/login.dm +++ /dev/null @@ -1,15 +0,0 @@ -/mob/living/silicon/hivebot/Login() - ..() - - update_clothing() - - if (!isturf(src.loc)) - src.client.eye = src.loc - src.client.perspective = EYE_PERSPECTIVE - if (src.stat == 2) - src.verbs += /client/proc/ghost - if(src.real_name == "Hiveborg") - src.real_name += " " - src.real_name += "-[rand(1, 999)]" - src.name = src.real_name - return \ No newline at end of file diff --git a/code/unused/hivebot/mainframe.dm b/code/unused/hivebot/mainframe.dm deleted file mode 100644 index 6e07b5b4576..00000000000 --- a/code/unused/hivebot/mainframe.dm +++ /dev/null @@ -1,181 +0,0 @@ -/mob/living/silicon/hive_mainframe/New() - Namepick() - -/mob/living/silicon/hive_mainframe/Life() - if (src.stat == 2) - return - else - src.updatehealth() - - if (src.health <= 0) - death() - return - - if(src.force_mind) - if(!src.mind) - if(src.client) - src.mind = new - src.mind.key = src.key - src.mind.current = src - src.force_mind = 0 - -/mob/living/silicon/hive_mainframe/Stat() - ..() - statpanel("Status") - if (src.client.statpanel == "Status") - if(emergency_shuttle) - if(emergency_shuttle.has_eta() && !emergency_shuttle.returned()) - var/timeleft = emergency_shuttle.estimate_arrival_time() - if (timeleft) - stat(null, "ETA-[(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]") -/* - if(ticker.mode.name == "AI malfunction") - stat(null, "Points left until the AI takes over: [AI_points]/[AI_points_win]") -*/ - -/mob/living/silicon/hive_mainframe/updatehealth() - if (src.nodamage == 0) - src.health = 100 - src.getFireLoss() - src.getBruteLoss() - else - src.health = 100 - src.stat = 0 - -/mob/living/silicon/hive_mainframe/death(gibbed) - src.stat = 2 - src.canmove = 0 - if(src.blind) - src.blind.layer = 0 - src.sight |= SEE_TURFS - src.sight |= SEE_MOBS - src.sight |= SEE_OBJS - src.see_in_dark = 8 - src.see_invisible = SEE_INVISIBLE_LEVEL_TWO - src.lying = 1 - src.icon_state = "hive_main-crash" - - var/tod = time2text(world.realtime,"hh:mm:ss") //weasellos time of death patch - mind.store_memory("Time of death: [tod]", 0) - - if (src.key) - spawn(50) - if(src.key && src.stat == 2) - src.verbs += /client/proc/ghost - return ..(gibbed) - - -/mob/living/silicon/hive_mainframe/say_understands(var/other) - //These only pertain to common. Languages are handled by mob/say_understands() - if (!speaking) - if (istype(other, /mob/living/carbon/human)) - return 1 - if (istype(other, /mob/living/silicon/robot)) - return 1 - if (istype(other, /mob/living/silicon/hivebot)) - return 1 - if (istype(other, /mob/living/silicon/ai)) - return 1 - return ..() - -/mob/living/silicon/hive_mainframe/say_quote(var/text) - var/ending = copytext(text, length(text)) - - if (ending == "?") - return "queries, \"[text]\""; - else if (ending == "!") - return "declares, \"[copytext(text, 1, length(text))]\""; - - return "states, \"[text]\""; - - -/mob/living/silicon/hive_mainframe/proc/return_to(var/mob/user) - if(user.mind) - user.mind.transfer_to(src) - spawn(20) - user:shell = 1 - user:real_name = "Robot [pick(rand(1, 999))]" - user:name = user:real_name - - - return - -/mob/living/silicon/hive_mainframe/verb/cmd_deploy_to() - set category = "Mainframe Commands" - set name = "Deploy to shell." - deploy_to() - -/mob/living/silicon/hive_mainframe/verb/deploy_to() - - if(usr.stat == 2) - usr << "You can't deploy because you are dead!" - return - - var/list/bodies = new/list() - - for(var/mob/living/silicon/hivebot/H in mob_list) - if(H.z == src.z) - if(H.shell) - if(!H.stat) - bodies += H - - var/target_shell = input(usr, "Which body to control?") as null|anything in bodies - - if (!target_shell) - return - - else if(src.mind) - spawn(30) - target_shell:mainframe = src - target_shell:dependent = 1 - target_shell:real_name = src.name - target_shell:name = target_shell:real_name - src.mind.transfer_to(target_shell) - return - - -/client/proc/MainframeMove(n,direct,var/mob/living/silicon/hive_mainframe/user) - return -/obj/hud/proc/hive_mainframe_hud() - return - - - - - -/mob/living/silicon/hive_mainframe/Login() - ..() - update_clothing() - for(var/S in src.client.screen) - del(S) - src.flash = new /obj/screen( null ) - src.flash.icon_state = "blank" - src.flash.name = "flash" - src.flash.screen_loc = "1,1 to 15,15" - src.flash.layer = 17 - src.blind = new /obj/screen( null ) - src.blind.icon_state = "black" - src.blind.name = " " - src.blind.screen_loc = "1,1 to 15,15" - src.blind.layer = 0 - src.client.screen += list( src.blind, src.flash ) - if(!isturf(src.loc)) - src.client.eye = src.loc - src.client.perspective = EYE_PERSPECTIVE - if (src.stat == 2) - src.verbs += /client/proc/ghost - return - - - -/mob/living/silicon/hive_mainframe/proc/Namepick() - var/randomname = pick(ai_names) - var/newname = input(src,"You are the a Mainframe Unit. Would you like to change your name to something else?", "Name change",randomname) - - if (length(newname) == 0) - newname = randomname - - if (newname) - if (length(newname) >= 26) - newname = copytext(newname, 1, 26) - newname = replacetext(newname, ">", "'") - src.real_name = newname - src.name = newname \ No newline at end of file diff --git a/code/unused/jobs.dm b/code/unused/jobs.dm deleted file mode 100644 index e56a7e54f66..00000000000 --- a/code/unused/jobs.dm +++ /dev/null @@ -1,291 +0,0 @@ -//WORK IN PROGRESS CONTENT - -//Project coder: Errorage - -//Readme: As part of the UI upgrade project, the intention here is for each job to have -//somewhat customizable loadouts. Players will be able to pick between jumpsuits, shoes, -//and other items. This datum will be used for all jobs and code will reference it. -//adding new jobs will be a matter of adding this datum.to a list of jobs. - -#define VITAL_PRIORITY_JOB 5 -#define HIGH_PRIORITY_JOB 4 -#define PRIORITY_JOB 3 -#define LOW_PRIORITY_JOB 2 -#define ASSISTANT_PRIORITY_JOB 1 -#define NO_PRIORITY_JOB 0 - -/datum/job - //Basic information - var/title = "Untitled" //The main (default) job title/name - var/list/alternative_titles = list() //Alternative job titles/names (alias) - var/job_number_at_round_start = 0 //Number of jobs that can be assigned at round start - var/job_number_total = 0 //Number of jobs that can be assigned total - var/list/bosses = list() //List of jobs which have authority over this job by default. - var/admin_only = 0 //If this is set to 1, the job is not available on the spawn screen - var/description = "" //A description of the job to be displayed when requested on the spawn screen - var/guides = "" //A string with links to relevent guides (likely the wiki) - var/department = "" //This is used to group jobs into departments, which means that if you don't get your desired jobs, you get another job from the same department - var/job_type = "SS13" //SS13, NT or ANTAGONIST - var/can_be_traitor = 1 - var/can_be_changeling = 1 - var/can_be_wizard = 1 - var/can_be_cultist = 1 - var/can_be_rev_head = 1 - var/is_head_position = 0 - - //Job conditions - var/change_to_mob = "Human" //The type of mob which this job will change you to (alien,cyborg,human...) - var/change_to_mutantrace = "" //What mutantrace you will be once you get this job - - //Random job assignment priority - var/assignment_priority = NO_PRIORITY_JOB //This variable determins the priority of assignment - //VITAL_PRIORITY_JOB = Absolutely vital (Someone will get assigned every round) - Use VERY, VERY lightly - //HIGH_PRIORITY_JOB = High priority - Assibned before the other jobs, candidates compete on equal terms - //PRIORITY_JOB = Priorized (Standard priority) - Candidates compete by virtue of priority (choice 1 > choice 2 > choice 3...) - //LOW_PRIORITY_JOB = Low priority (Low-priority (librarian)) - //ASSISTANT_PRIORITY_JOB = Assistant-level (Only filled when all the other jobs have been assigned) - //NO_PRIORITY_JOB = Skipped om assignment (Admin-only jobs should have this level) - - - - //Available equipment - The first thing listed is understood as the default setup. - var/list/equipment_ears = list() //list of possible ear-wear items - var/list/equipment_glasses = list() //list of possible glasses - var/list/equipment_gloves = list() //list of possible gloves - var/list/equipment_head = list() //list of possible headgear/helmets/hats - var/list/equipment_mask = list() //list of possible masks - var/list/equipment_shoes = list() //list of possible shoes - var/list/equipment_suit = list() //list of possible suits - var/list/equipment_under = list() //list of possible jumpsuits - var/list/equipment_belt = list() //list of possible belt-slot items - var/list/equipment_back = list() //list of possible back-slot items - var/obj/equipment_pda //default pda type - var/obj/equipment_id //default id type - - New(var/param_title, var/list/param_alternative_titles = list(), var/param_jobs_at_round_start = 0, var/param_global_max = 0, var/list/param_bosses = list(), var/param_admin_only = 0) - title = param_title - alternative_titles = param_alternative_titles - job_number_at_round_start = param_jobs_at_round_start - job_number_total = param_global_max - bosses = param_bosses - admin_only = param_admin_only - - //This proc tests to see if the given alias (job title/alternative job title) corresponds to this job. - //Returns 1 if it is, else returns 0 - proc/is_job_alias(var/alias) - if(alias == title) - return 1 - if(alias in alternative_titles) - return 1 - return 0 - -/datum/jobs - var/list/datum/job/all_jobs = list() - - proc/get_all_jobs() - return all_jobs - - //This proc returns all the jobs which are NOT admin only - proc/get_normal_jobs() - var/list/datum/job/normal_jobs = list() - for(var/datum/job/J in all_jobs) - if(!J.admin_only) - normal_jobs += J - return normal_jobs - - //This proc returns all the jobs which are admin only - proc/get_admin_jobs() - var/list/datum/job/admin_jobs = list() - for(var/datum/job/J in all_jobs) - if(J.admin_only) - admin_jobs += J - return admin_jobs - - //This proc returns the job datum of the job with the alias or job title given as the argument. Returns an empty string otherwise. - proc/get_job(var/alias) - for(var/datum/job/J in all_jobs) - if(J.is_job_alias(alias)) - return J - return "" - - //This proc returns a string with the default job title for the job with the given alias. Returns an empty string otherwise. - proc/get_job_title(var/alias) - for(var/datum/job/J in all_jobs) - if(J.is_job_alias(alias)) - return J.title - return "" - - //This proc returns all the job datums of the workers whose boss has the alias provided. (IE Engineer under Chief Engineer, etc.) - proc/get_jobs_under(var/boss_alias) - var/boss_title = get_job_title(boss_alias) - var/list/datum/job/employees = list() - for(var/datum/job/J in all_jobs) - if(boss_title in J.bosses) - employees += J - return employees - - //This proc returns the chosen vital and high priority jobs that the person selected. It goes from top to bottom of the list, until it finds a job which does not have such priority. - //Example: Choosing (in this order): CE, Captain, Engineer, RD will only return CE and Captain, as RD is assumed as being an unwanted choice. - //This proc is used in the allocation algorithm when deciding vital and high priority jobs. - proc/get_prefered_high_priority_jobs() - var/list/datum/job/hp_jobs = list() - for(var/datum/job/J in all_jobs) - if(J.assignment_priority == HIGH_PRIORITY_JOB || J.assignment_priority == VITAL_PRIORITY_JOB) - hp_jobs += J - else - break - return hp_jobs - - //If only priority is given, it will return the jobs of only that priority, if end_priority is set it will return the jobs with their priority higher or equal to var/priority and lower or equal to end_priority. end_priority must be higher than 0. - proc/get_jobs_by_priority(var/priority, var/end_priority = 0) - var/list/datum/job/priority_jobs = list() - if(end_priority) - if(end_priority < priority) - return - for(var/datum/job/J in all_jobs) - if(J.assignment_priority >= priority && J.assignment_priority <= end_priority) - priority_jobs += J - else - for(var/datum/job/J in all_jobs) - if(J.assignment_priority == priority) - priority_jobs += J - return priority_jobs - -//This datum is used in the plb allocation algorithm to make life easier, not used anywhere else. -/datum/player_jobs - var/mob/new_player/player - var/datum/jobs/selected_jobs - -var/datum/jobs/jobs = new/datum/jobs() - -proc/setup_jobs() - var/datum/job/JOB - - JOB = new/datum/job("Station Engineer") - JOB.alternative_titles = list("Structural Engineer","Engineer","Student of Engineering") - JOB.job_number_at_round_start = 5 - JOB.job_number_total = 5 - JOB.bosses = list("Chief Engineer") - JOB.admin_only = 0 - JOB.description = "Engineers are tasked with the maintenance of the station. Be it maintaining the power grid or rebuilding damaged sections." - JOB.guides = "" - JOB.equipment_ears = list(/obj/item/device/radio/headset/headset_eng) - JOB.equipment_glasses = list() - JOB.equipment_gloves = list() - JOB.equipment_head = list(/obj/item/clothing/head/helmet/hardhat) - JOB.equipment_mask = list() - JOB.equipment_shoes = list(/obj/item/clothing/shoes/orange,/obj/item/clothing/shoes/brown,/obj/item/clothing/shoes/black) - JOB.equipment_suit = list(/obj/item/clothing/suit/storage/hazardvest) - JOB.equipment_under = list(/obj/item/clothing/under/rank/engineer,/obj/item/clothing/under/color/yellow) - JOB.equipment_belt = list(/obj/item/weapon/storage/belt/utility/full) - JOB.equipment_back = list(/obj/item/weapon/storage/backpack/industrial,/obj/item/weapon/storage/backpack) - JOB.equipment_pda = /obj/item/device/pda/engineering - JOB.equipment_id = /obj/item/weapon/card/id - - jobs.all_jobs += JOB - -//This proc will dress the mob (employee) in the default way for the specified job title/job alias -proc/dress_for_job_default(var/mob/living/carbon/human/employee as mob, var/job_alias) - if(!ishuman(employee)) - return - - //TODO ERRORAGE - UNFINISHED - var/datum/job/JOB = jobs.get_job(job_alias) - if(JOB) - var/item = JOB.equipment_ears[1] - employee.equip_to_slot_or_del(new item(employee), employee.slot_ears) - item = JOB.equipment_under[1] - employee.equip_to_slot_or_del(new item(employee), employee.slot_w_uniform) - - - /* - src.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/industrial (src), slot_back) - src.equip_to_slot_or_del(new /obj/item/weapon/storage/box/engineer(src), slot_in_backpack) - src.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_eng (src), slot_ears) // -- TLE - src.equip_to_slot_or_del(new /obj/item/device/pda/engineering(src), slot_belt) - src.equip_to_slot_or_del(new /obj/item/clothing/under/rank/engineer(src), slot_w_uniform) - src.equip_to_slot_or_del(new /obj/item/clothing/shoes/orange(src), slot_shoes) - src.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/hardhat(src), slot_head) - src.equip_to_slot_or_del(new /obj/item/weapon/storage/utilitybelt/full(src), slot_l_hand) //currently spawns in hand due to traitor assignment requiring a PDA to be on the belt. --Errorage - //src.equip_to_slot_or_del(new /obj/item/clothing/gloves/yellow(src), slot_gloves) removed as part of Dangercon 2011, approved by Urist_McDorf --Errorage - src.equip_to_slot_or_del(new /obj/item/device/t_scanner(src), slot_r_store) - */ - - -//This algorithm works in 5 steps: -//1: Assignment of wizard / nuke members (if appropriate game mode) -//2: Assignment of jobs based on preferenes -// 2.1: Assignment of vital and high priority jobs. Candidates compete on equal terms. If the vital jobs are not filled, a random candidate is chosen to fill them, -// 2.2: Assignment of the rest of the jobs based on player preference, -//3: Assignment of remaining jobs for remaining players based on chosen departments -//4: Random assignment of remaining jobs for remaining players based on assignment priority -//5: Assignment of traitor / changeling to assigned roles (if appropriate game mode) -proc/assignment_algorithm(var/list/mob/new_player/players) - for(var/mob/new_player/PLAYER in players) - if(!PLAYER.client) - players -= PLAYER - continue - if(!PLAYER.ready) - players -= PLAYER - continue - - var/list/datum/job/vital_jobs = list() - var/list/datum/job/high_priority_jobs = list() - var/list/datum/job/priority_jobs = list() - var/list/datum/job/low_priority_jobs = list() - var/list/datum/job/assistant_jobs = list() - var/list/datum/job/not_assigned_jobs = list() - - for(var/datum/job/J in jobs) - switch(J.assignment_priority) - if(5) - vital_jobs += J - if(4) - high_priority_jobs += J - if(3) - priority_jobs += J - if(2) - low_priority_jobs += J - if(1) - assistant_jobs += J - if(0) - not_assigned_jobs += J - - var/list/datum/player_jobs/player_jobs = list() //This datum only holds a mob/new_player and a datum/jobs. The first is the player, the 2nd is the player's selected jobs, from the preferences datum. - - for(var/mob/new_player/NP in players) - var/datum/player_jobs/PJ = new/datum/player_jobs - PJ.player = NP - PJ.selected_jobs = NP.preferences.wanted_jobs - player_jobs += PJ - - //At this point we have the player_jobs list filled. Next up we have to assign all vital and high priority positions. - - var/list/datum/job/hp_jobs = jobs.get_jobs_by_priority( HIGH_PRIORITY_JOB, VITAL_PRIORITY_JOB ) - - for(var/datum/job/J in hp_jobs) - var/list/mob/new_player/candidates = list() - for(var/datum/player_jobs/PJ in player_jobs) - if(J in PJ.selected_jobs) - candidates += PJ.player - var/mob/new_player/chosen_player - if(candidates) - chosen_player = pick(candidates) - else - if(J.assignment_priority == VITAL_PRIORITY_JOB) - if(players) //Just in case there are more vital jobs than there are players. - chosen_player = pick(players) - if(chosen_player) - chosen_player.mind.assigned_job = J - players -= chosen_player - //TODO ERRORAGE - add capability for hp jobs with more than one slots. - - - - - //1: vital and high priority jobs, assigned on equal terms - - //TODO ERRORAGE - UNFINISHED - - -//END OF WORK IN PROGRESS CONTENT diff --git a/code/unused/mining/datum_processing_recipe.dm b/code/unused/mining/datum_processing_recipe.dm deleted file mode 100644 index 656e38f0ad5..00000000000 --- a/code/unused/mining/datum_processing_recipe.dm +++ /dev/null @@ -1,22 +0,0 @@ -/**********************Ore to material recipes datum**************************/ - -var/list/AVAILABLE_ORES = typesof(/obj/item/weapon/ore) - -/datum/material_recipe - var/name - var/list/obj/item/weapon/ore/recipe - var/obj/prod_type //produced material/object type - - New(var/param_name, var/param_recipe, var/param_prod_type) - name = param_name - recipe = param_recipe - prod_type = param_prod_type - -var/list/datum/material_recipe/MATERIAL_RECIPES = list( - new/datum/material_recipe("Metal",list(/obj/item/weapon/ore/iron),/obj/item/stack/sheet/metal), - new/datum/material_recipe("Glass",list(/obj/item/weapon/ore/glass),/obj/item/stack/sheet/glass), - new/datum/material_recipe("Gold",list(/obj/item/weapon/ore/gold),/obj/item/stack/sheet/mineral/gold), - new/datum/material_recipe("Silver",list(/obj/item/weapon/ore/silver),/obj/item/stack/sheet/mineral/silver), - new/datum/material_recipe("Diamond",list(/obj/item/weapon/ore/diamond),/obj/item/stack/sheet/mineral/diamond), - new/datum/material_recipe("Phoron",list(/obj/item/weapon/ore/phoron),/obj/item/stack/sheet/mineral/phoron), - ) \ No newline at end of file diff --git a/code/unused/mining/machine_craftlathe_unused.dm b/code/unused/mining/machine_craftlathe_unused.dm deleted file mode 100644 index 564e3a1f715..00000000000 --- a/code/unused/mining/machine_craftlathe_unused.dm +++ /dev/null @@ -1,233 +0,0 @@ -/*********************NEW AUTOLATHE / CRAFT LATHE***********************/ - -var/list/datum/craftlathe_item/CRAFT_ITEMS = list() -var/CRAFT_ITEMS_SETUP = 1 //this should probably be a pre-game thing, but i'll do it so the first lathe2 that's created will set-up the recipes. - -proc/check_craftlathe_recipe(var/list/param_recipe) - if(param_recipe.len != 9) - return - var/i - var/match = 0 //this one counts if there is at least one non-"" ingredient. - for(var/datum/craftlathe_item/CI in CRAFT_ITEMS) - match = 0 - for(i = 1; i <= 9; i++) - if(CI.recipe[i] != param_recipe[i]) - match = 0 //use this so it passes by the match > 0 check below, otherwise i'd need a new variable to tell the return CI below that the check failed - break - if(CI.recipe[i] != "") - match++ - if(match > 0) - return CI - return 0 - -/datum/craftlathe_item - var/id = "" //must be unique for each item type. used to create recipes - var/name = "unknown" //what the lathe will show as it's contents - var/list/recipe = list("","","","","","","","","") //the 9 items here represent what items need to be placed in the lathe to produce this item. - var/item_type = null //this is used on items like sheets which are added when inserted into the lathe. - var/amount = 1 - var/amount_attackby = 1 - -/datum/craftlathe_item/New(var/param_id,var/param_name,var/param_amount,var/param_ammount_per_attackby,var/list/param_recipe,var/param_type = null) - ..() - id = param_id - name = param_name - recipe = param_recipe - item_type = param_type - amount = param_amount; - amount_attackby = param_ammount_per_attackby - return - -//this proc checks the recipe you give in it's parameter with the entire list of available items. If any match, it returns the item from CRAFT_ITEMS. the returned item should not be changed!! - -/obj/machinery/autolathe2 - name = "Craft lathe" - icon_state = "autolathe" - density = 1 - anchored = 1 - var/datum/craftlathe_item/selected = null - var/datum/craftlathe_item/make = null - var/list/datum/craftlathe_item/craft_contents = list() - var/list/current_recipe = list("","","","","","","","","") - -/obj/machinery/autolathe2/New() - ..() - if(CRAFT_ITEMS_SETUP) - CRAFT_ITEMS_SETUP = 0 - build_recipes() - return - -/obj/machinery/autolathe2/attack_hand(mob/user as mob) - var/dat - dat = text("

Craft Lathe

") - dat += text("
") - - dat += text("Materials

") - var/datum/craftlathe_item/CI - var/i - for(i = 1; i <= craft_contents.len; i++) - CI = craft_contents[i] - if (CI == selected) - dat += text("[CI.name] ([CI.amount])
") - else - dat += text("[CI.name] ([CI.amount])
") - - dat += text("

") - - dat += text("Crafting Table

") - - dat += text(" ") - - var/j = 0 - var/k = 0 - for (i = 0; i < 3; i++) - dat += text(" ") - for (j = 1; j <= 3; j++) - k = i * 3 + j - if (current_recipe[k]) - dat += text(" ") - else - dat += text(" ") - dat += text(" ") - dat += text("
[current_recipe[k]]----
") - - dat += text("

") - dat += text("Will make: ") - if (make) - dat += text("[make.name]") - else - dat += text("nothing useful") - - dat += text("

") - user << browse("[dat]", "window=craft") - -/obj/machinery/autolathe2/Topic(href, href_list) - if(..()) - return - usr.machine = src - src.add_fingerprint(usr) - if(href_list["remove"]) - var/n = text2num(href_list["remove"]) - if(!n || n < 1 || n > 9) - return - current_recipe[n] = "" - if(href_list["select"]) - var/n = text2num(href_list["select"]) - if(!n || n < 1 || n > 9) - return - selected = craft_contents[n] - if(href_list["add"]) - var/n = text2num(href_list["add"]) - if(!n || n < 1 || n > 9) - return - if(selected) - current_recipe[n] = selected.id - if(href_list["make"]) - var/datum/craftlathe_item/MAKE = check_craftlathe_recipe(src.current_recipe) - if(MAKE) - for (var/datum/craftlathe_item/CI2 in craft_contents) - if(CI2.id == MAKE.id) - CI2.amount += CI2.amount_attackby - src.updateUsrDialog() - return - craft_contents += new/datum/craftlathe_item(MAKE.id,MAKE.name,MAKE.amount,MAKE.amount_attackby,MAKE.recipe,MAKE.item_type) - var/datum/craftlathe_item/CI = check_craftlathe_recipe(src.current_recipe) - if(CI) - make = CI - else - make = null - src.updateUsrDialog() - - - -/obj/machinery/autolathe2/attackby(obj/item/weapon/W as obj, mob/user as mob) - usr.machine = src - src.add_fingerprint(usr) - for (var/datum/craftlathe_item/CI in CRAFT_ITEMS) - if(W.type == CI.item_type) - for (var/datum/craftlathe_item/CI2 in craft_contents) - if(CI2.item_type == W.type) - CI2.amount += CI2.amount_attackby - rmv_item(W) - return - craft_contents += new/datum/craftlathe_item(CI.id,CI.name,CI.amount,CI.amount_attackby,CI.recipe,CI.item_type) - rmv_item(W) - return - src.updateUsrDialog() - return - -/obj/machinery/autolathe2/proc/rmv_item(obj/item/W as obj) - if(istype(W,/obj/item/stack)) - var/obj/item/stack/S = W - S.amount-- - if (S.amount <= 0) - del(S) - else - del(W) - -/obj/machinery/autolathe2/proc/build_recipes() - //Parameters: ID, Name, Amount, Amount_added_per_attackby, Recipe, Object type - CRAFT_ITEMS += new/datum/craftlathe_item("METAL","Metal",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/metal) - CRAFT_ITEMS += new/datum/craftlathe_item("R METAL","Reinforced Metal",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/r_metal) - CRAFT_ITEMS += new/datum/craftlathe_item("GLASS","Glass",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/glass) - CRAFT_ITEMS += new/datum/craftlathe_item("R GLASS","Reinforced Glass",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/glass/reinforced) - CRAFT_ITEMS += new/datum/craftlathe_item("GOLD","Gold",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/mineral/gold) - CRAFT_ITEMS += new/datum/craftlathe_item("SILVER","Silver",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/mineral/silver) - CRAFT_ITEMS += new/datum/craftlathe_item("DIAMOND","Diamond",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/mineral/diamond) - CRAFT_ITEMS += new/datum/craftlathe_item("PLASMA","Plasma",1,1,list("","","","","","","","",""),/obj/item/stack/sheet/mineral/plasma) - CRAFT_ITEMS += new/datum/craftlathe_item("URANIUM","Uranium",1,1,list("","","","","","","","",""),/obj/item/weapon/ore/mineral/uranium) - CRAFT_ITEMS += new/datum/craftlathe_item("SCREWS","Screws",9,9,list("","","","","METAL","","","METAL","")) - CRAFT_ITEMS += new/datum/craftlathe_item("COGS","Cogs",9,9,list("","METAL","","METAL","METAL","METAL","","METAL","")) - CRAFT_ITEMS += new/datum/craftlathe_item("SWITCH","Switch",12,12,list("METAL","","METAL","METAL","METAL","","METAL","","")) - CRAFT_ITEMS += new/datum/craftlathe_item("KEYBOARD","Keyboard",1,1,list("","","","SWITCH","SWITCH","SWITCH","SWITCH","SWITCH","SWITCH")) - CRAFT_ITEMS += new/datum/craftlathe_item("M PANEL","Metal Panel",10,10,list("","","","","METAL","METAL","","METAL","METAL")) - CRAFT_ITEMS += new/datum/craftlathe_item("CASE","Equipment Case",1,1,list("M PANEL","M PANEL","M PANEL","M PANEL","","M PANEL","M PANEL","M PANEL","M PANEL")) - CRAFT_ITEMS += new/datum/craftlathe_item("G PANEL","Glass Panel",10,10,list("","","","","GLASS","GLASS","","GLASS","GLASS")) - CRAFT_ITEMS += new/datum/craftlathe_item("SCREEN","Screen",1,1,list("","GLASS","","GLASS","PLASMA","GLASS","","GLASS","")) - CRAFT_ITEMS += new/datum/craftlathe_item("EL SILVER","Electronics Silver",30,30,list("","","","","SILVER","","","","")) - CRAFT_ITEMS += new/datum/craftlathe_item("EL GOLD","Electronics Gold",6,6,list("","","","","GOLD","","","","")) - CRAFT_ITEMS += new/datum/craftlathe_item("TINTED GL","Tinted Glass",2,2,list("","METAL","","","GLASS","","","","")) - CRAFT_ITEMS += new/datum/craftlathe_item("TANK VALVE","Tank Transfer Valuve",1,1,list("","PIPE","","","PIPE","SWITCH","","PIPE","")) - CRAFT_ITEMS += new/datum/craftlathe_item("PIPE","Pipe",1,1,list("","M PANEL","","","M PANEL","","","M PANEL","")) - - CRAFT_ITEMS += new/datum/craftlathe_item("CB FRAME","Circuitboard Frame",1,1,list("","","","M PANEL","G PANEL","M PANEL","G PANEL","M PANEL","G PANEL")) - CRAFT_ITEMS += new/datum/craftlathe_item("ROM","ROM Module",1,1,list("EL SILVER","EL SILVER","EL SILVER","EL SILVER","","EL SILVER","EL SILVER","EL SILVER","EL SILVER")) - CRAFT_ITEMS += new/datum/craftlathe_item("RAM","RAM Module",1,1,list("EL SILVER","EL SILVER","EL SILVER","EL SILVER","EL GOLD","EL SILVER","EL SILVER","EL SILVER","EL SILVER")) - CRAFT_ITEMS += new/datum/craftlathe_item("PROCESSOR","Processor",1,1,list("EL GOLD","EL SILVER","EL GOLD","EL SILVER","EL SILVER","EL SILVER","EL SILVER","EL GOLD","EL SILVER")) - CRAFT_ITEMS += new/datum/craftlathe_item("ANTENNA","Antenna",1,1,list("","","EL SILVER","","","EL SILVER","EL SILVER","EL SILVER","EL SILVER")) - CRAFT_ITEMS += new/datum/craftlathe_item("OP RECEPTOR","Optic Receptor",1,1,list("G PANEL","G PANEL","G PANEL","","EL GOLD","","G PANEL","G PANEL","G PANEL")) - CRAFT_ITEMS += new/datum/craftlathe_item("THERMAL OP R","Thermal Optic Receptor",1,1,list("","OP RECEPTOR","","ROM","DIAMOND","DIAMOND","","OP RECEPTOR","")) - CRAFT_ITEMS += new/datum/craftlathe_item("MASON OP R","Mason Optic Receptor",1,1,list("","OP RECEPTOR","","ROM","EL SILVER","EL SILVER","","OP RECEPTOR","")) - CRAFT_ITEMS += new/datum/craftlathe_item("EAR FRAME","Earpiece Frame",1,1,list("M PANEL","M PANEL","M PANEL","M PANEL","","M PANEL","M PANEL","M PANEL","")) - CRAFT_ITEMS += new/datum/craftlathe_item("RADIO M","Radio Module",1,1,list("","ANTENNA","","","ROM","","CB FRAME","CB FRAME","CB FRAME")) - CRAFT_ITEMS += new/datum/craftlathe_item("EARPIECE","Radio Earpiece",1,1,list("","","","","RADIO M","","","EAR FRAME","")) - CRAFT_ITEMS += new/datum/craftlathe_item("EARMUFFS","Earmuffs",1,1,list("","M PANEL","","EAR FRAME","","EAR FRAME","","","")) - - CRAFT_ITEMS += new/datum/craftlathe_item("GLASSES FRAME","Glasses Frame",1,1,list("M PANEL","","M PANEL","M PANEL","","M PANEL","M PANEL","M PANEL","M PANEL")) - CRAFT_ITEMS += new/datum/craftlathe_item("MASONS","Mason Scanners",1,1,list("","","","MASON OP R","GLASSES FRAME","MASON OP R","","","")) - CRAFT_ITEMS += new/datum/craftlathe_item("THERMALS","Thermal Scanners",1,1,list("","","","THERMAL OP R","GLASSES FRAME","THERMAL OP R","","","")) - CRAFT_ITEMS += new/datum/craftlathe_item("SUNGLASSES","Sunglasses",1,1,list("","","","TINTED GL","GLASSES FRAME","TINTED GL","","","")) - - CRAFT_ITEMS += new/datum/craftlathe_item("HELMET FR","Helmet Frame",1,1,list("METAL","METAL","METAL","METAL","","METAL","","","")) - CRAFT_ITEMS += new/datum/craftlathe_item("HELMET","Security Helmet",1,1,list("R METAL","R METAL","R METAL","R METAL","HELMET FR","R METAL","","GLASS","")) - CRAFT_ITEMS += new/datum/craftlathe_item("HOS HELMET","HoS Helmet",1,1,list("SILVER","GOLD","SILVER","SILVER","HELMET","SILVER","","","")) - CRAFT_ITEMS += new/datum/craftlathe_item("HARDHAT","Hardhat",1,1,list("","FLASHLIGHT","","","HELMET FR","","","","")) - CRAFT_ITEMS += new/datum/craftlathe_item("SWAT HELMET","SWAT Helmet",1,1,list("","","","","HELMET","","R GLASS","R GLASS","R GLASS")) - CRAFT_ITEMS += new/datum/craftlathe_item("WELDING HELM","Welding Helmet",1,1,list("","","","","HELMET FR","","TINTED GL","TINTED GL","TINTED GL")) - CRAFT_ITEMS += new/datum/craftlathe_item("SPACE HELMET","Space Helmet",1,1,list("R METAL","SILVER","R METAL","SILVER","HELMET FR","SILVER","R GLASS","R GLASS","R GLASS")) - CRAFT_ITEMS += new/datum/craftlathe_item("RIG HELMET","RIG Helmet",1,1,list("R METAL","SILVER","R METAL","SILVER","SPACE HELMET","SILVER","R GLASS","R GLASS","R GLASS")) - CRAFT_ITEMS += new/datum/craftlathe_item("GAS MASK","Gas Mask",1,1,list("","","","","HELMET FR","TANK VALVE","","G PANEL","")) - - CRAFT_ITEMS += new/datum/craftlathe_item("ARMOR FRAME","Armor Frame",1,1,list("R METAL","","R METAL","R METAL","R METAL","R METAL","R METAL","R METAL","R METAL")) - CRAFT_ITEMS += new/datum/craftlathe_item("ARMOR","Armored Vest",1,1,list("R METAL","","R METAL","R METAL","ARMOR FRAME","R METAL","R METAL","R METAL","R METAL")) - CRAFT_ITEMS += new/datum/craftlathe_item("HOS ARMOR","HoS Armor",1,1,list("DIAMOND","","DIAMOND","URANIUM","ARMOR","URANIUM","URANIUM","R METAL","URANIUM")) - CRAFT_ITEMS += new/datum/craftlathe_item("CAP ARMOR","Captain Armor",1,1,list("DIAMOND","","DIAMOND","URANIUM","HOS ARMOR","URANIUM","URANIUM","R METAL","URANIUM")) - CRAFT_ITEMS += new/datum/craftlathe_item("SPACE S FR","Space Suit Frame",1,1,list("SILVER","","SILVER","SILVER","SILVER","SILVER","SILVER","SILVER","SILVER")) - CRAFT_ITEMS += new/datum/craftlathe_item("SPACE SUIT","Space Suit",1,1,list("SILVER","","SILVER","RAM","SPACE S FR","RADIO M","SILVER","SILVEr","SILVER")) - CRAFT_ITEMS += new/datum/craftlathe_item("RIG SUIT","RIG Suit",1,1,list("SILVER","","SILVER","SILVER","SPACE SUIT","SILVER","SILVER","SILVER","SILVER")) - //TODO: Flashlight, type paths - return - - - - return diff --git a/code/unused/mining/machine_gas_extractor_unused.dm b/code/unused/mining/machine_gas_extractor_unused.dm deleted file mode 100644 index 7a833016cf4..00000000000 --- a/code/unused/mining/machine_gas_extractor_unused.dm +++ /dev/null @@ -1,78 +0,0 @@ -/**********************Gas extractor**************************/ - -/obj/machinery/mineral/gasextractor - name = "Gas extractor" - desc = "A machine which extracts gasses from ores" - icon = 'icons/obj/computer.dmi' - icon_state = "aiupload" - var/obj/machinery/mineral/input = null - var/obj/machinery/mineral/output = null - var/message = ""; - var/processing = 0 - var/newtoxins = 0 - density = 1 - anchored = 1.0 - -/obj/machinery/mineral/gasextractor/New() - ..() - spawn( 5 ) - for (var/dir in cardinal) - src.input = locate(/obj/machinery/mineral/input, get_step(src, dir)) - if(src.input) break - for (var/dir in cardinal) - src.output = locate(/obj/machinery/mineral/output, get_step(src, dir)) - if(src.output) break - return - return - -/obj/machinery/mineral/gasextractor/attack_hand(user as mob) - - if(processing == 1) - user << "The machine is processing" - return - - var/dat - dat = text("input connection status: ") - if (input) - dat += text("CONNECTED") - else - dat += text("NOT CONNECTED") - dat += text("
output connection status: ") - if (output) - dat += text("CONNECTED") - else - dat += text("NOT CONNECTED") - - dat += text("

Extract gas") - - dat += text("

Message: [message]") - - user << browse("[dat]", "window=purifier") - -/obj/machinery/mineral/gasextractor/Topic(href, href_list) - if(..()) - return - - usr.machine = src - src.add_fingerprint(usr) - if(href_list["extract"]) - if (src.output) - if (locate(/obj/machinery/portable_atmospherics/canister,output.loc)) - newtoxins = 0 - processing = 1 - var/obj/item/weapon/ore/O - while(locate(/obj/item/weapon/ore/plasma, input.loc) && locate(/obj/machinery/portable_atmospherics/canister,output.loc)) - O = locate(/obj/item/weapon/ore/plasma, input.loc) - if (istype(O,/obj/item/weapon/ore/plasma)) - var/obj/machinery/portable_atmospherics/canister/C - C = locate(/obj/machinery/portable_atmospherics/canister,output.loc) - C.air_contents.toxins += 100 - newtoxins += 100 - del(O) - sleep(5); - processing = 0; - message = "Canister filled with [newtoxins] units of toxins" - else - message = "No canister found" - src.updateUsrDialog() - return diff --git a/code/unused/mining/machine_purifier_unused.dm b/code/unused/mining/machine_purifier_unused.dm deleted file mode 100644 index d467dbcbd26..00000000000 --- a/code/unused/mining/machine_purifier_unused.dm +++ /dev/null @@ -1,85 +0,0 @@ -/**********************Mineral purifier (not used, replaced with mineral processing unit)**************************/ - -/obj/machinery/mineral/purifier - name = "Ore Purifier" - desc = "A machine which makes building material out of ores" - icon = 'icons/obj/computer.dmi' - icon_state = "aiupload" - var/obj/machinery/mineral/input = null - var/obj/machinery/mineral/output = null - var/processed = 0 - var/processing = 0 - density = 1 - anchored = 1.0 - -/obj/machinery/mineral/purifier/attack_hand(user as mob) - - if(processing == 1) - user << "The machine is processing" - return - - var/dat - dat = text("input connection status: ") - if (input) - dat += text("CONNECTED") - else - dat += text("NOT CONNECTED") - dat += text("
output connection status: ") - if (output) - dat += text("CONNECTED") - else - dat += text("NOT CONNECTED") - - dat += text("

Purify") - - dat += text("

found: [processed]") - user << browse("[dat]", "window=purifier") - -/obj/machinery/mineral/purifier/Topic(href, href_list) - if(..()) - return - usr.machine = src - src.add_fingerprint(usr) - if(href_list["purify"]) - if (src.output) - processing = 1; - var/obj/item/weapon/ore/O - processed = 0; - while(locate(/obj/item/weapon/ore, input.loc)) - O = locate(/obj/item/weapon/ore, input.loc) - if (istype(O,/obj/item/weapon/ore/iron)) - new /obj/item/stack/sheet/metal(output.loc) - del(O) - if (istype(O,/obj/item/weapon/ore/diamond)) - new /obj/item/stack/sheet/mineral/diamond(output.loc) - del(O) - if (istype(O,/obj/item/weapon/ore/plasma)) - new /obj/item/stack/sheet/mineral/plasma(output.loc) - del(O) - if (istype(O,/obj/item/weapon/ore/gold)) - new /obj/item/stack/sheet/mineral/gold(output.loc) - del(O) - if (istype(O,/obj/item/weapon/ore/silver)) - new /obj/item/stack/sheet/mineral/silver(output.loc) - del(O) - if (istype(O,/obj/item/weapon/ore/uranium)) - new /obj/item/weapon/ore/mineral/uranium(output.loc) - del(O) - processed++ - sleep(5); - processing = 0; - src.updateUsrDialog() - return - - -/obj/machinery/mineral/purifier/New() - ..() - spawn( 5 ) - for (var/dir in cardinal) - src.input = locate(/obj/machinery/mineral/input, get_step(src, dir)) - if(src.input) break - for (var/dir in cardinal) - src.output = locate(/obj/machinery/mineral/output, get_step(src, dir)) - if(src.output) break - return - return diff --git a/code/unused/mining/mine_generator_unused.dm b/code/unused/mining/mine_generator_unused.dm deleted file mode 100644 index 9cc7f54ce69..00000000000 --- a/code/unused/mining/mine_generator_unused.dm +++ /dev/null @@ -1,174 +0,0 @@ -/**********************Random mine generator************************/ - -//this item is intended to give the effect of entering the mine, so that light gradually fades -/obj/effect/mine_generator - name = "Random mine generator" - anchored = 1 - unacidable = 1 - var/turf/last_loc - var/turf/target_loc - var/turf/start_loc - var/randXParam //the value of these two parameters are generated by the code itself and used to - var/randYParam //determine the random XY parameters - var/mineDirection = 3 - /* - 0 = none - 1 = N - 2 = NNW - 3 = NW - 4 = WNW - 5 = W - 6 = WSW - 7 = SW - 8 = SSW - 9 = S - 10 = SSE - 11 = SE - 12 = ESE - 13 = E - 14 = ENE - 15 = NE - 16 = NNE - */ - -/obj/effect/mine_generator/New() - last_loc = src.loc - var/i - for(i = 0; i < 50; i++) - gererateTargetLoc() - //target_loc = locate(last_loc.x + rand(5), last_loc.y + rand(5), src.z) - fillWithAsteroids() - del(src) - return - - -/obj/effect/mine_generator/proc/gererateTargetLoc() //this proc determines where the next square-room will end. - switch(mineDirection) - if(1) - randXParam = 0 - randYParam = 4 - if(2) - randXParam = 1 - randYParam = 3 - if(3) - randXParam = 2 - randYParam = 2 - if(4) - randXParam = 3 - randYParam = 1 - if(5) - randXParam = 4 - randYParam = 0 - if(6) - randXParam = 3 - randYParam = -1 - if(7) - randXParam = 2 - randYParam = -2 - if(8) - randXParam = 1 - randYParam = -3 - if(9) - randXParam = 0 - randYParam = -4 - if(10) - randXParam = -1 - randYParam = -3 - if(11) - randXParam = -2 - randYParam = -2 - if(12) - randXParam = -3 - randYParam = -1 - if(13) - randXParam = -4 - randYParam = 0 - if(14) - randXParam = -3 - randYParam = 1 - if(15) - randXParam = -2 - randYParam = 2 - if(16) - randXParam = -1 - randYParam = 3 - target_loc = last_loc - if (randXParam > 0) - target_loc = locate(target_loc.x+rand(randXParam),target_loc.y,src.z) - if (randYParam > 0) - target_loc = locate(target_loc.x,target_loc.y+rand(randYParam),src.z) - if (randXParam < 0) - target_loc = locate(target_loc.x-rand(-randXParam),target_loc.y,src.z) - if (randYParam < 0) - target_loc = locate(target_loc.x,target_loc.y-rand(-randXParam),src.z) - if (mineDirection == 1 || mineDirection == 5 || mineDirection == 9 || mineDirection == 13) //if N,S,E,W, turn quickly - if(prob(50)) - mineDirection += 2 - else - mineDirection -= 2 - if(mineDirection < 1) - mineDirection += 16 - else - if(prob(50)) - if(prob(50)) - mineDirection += 1 - else - mineDirection -= 1 - if(mineDirection < 1) - mineDirection += 16 - return - - -/obj/effect/mine_generator/proc/fillWithAsteroids() - - if(last_loc) - start_loc = last_loc - - if(start_loc && target_loc) - var/x1 - var/y1 - - var/turf/line_start = start_loc - var/turf/column = line_start - - if(start_loc.x <= target_loc.x) - if(start_loc.y <= target_loc.y) //GOING NORTH-EAST - for(y1 = start_loc.y; y1 <= target_loc.y; y1++) - for(x1 = start_loc.x; x1 <= target_loc.x; x1++) - new/turf/simulated/floor/plating/airless/asteroid(column) - column = get_step(column,EAST) - line_start = get_step(line_start,NORTH) - column = line_start - last_loc = target_loc - return - else //GOING NORTH-WEST - for(y1 = start_loc.y; y1 >= target_loc.y; y1--) - for(x1 = start_loc.x; x1 <= target_loc.x; x1++) - new/turf/simulated/floor/plating/airless/asteroid(column) - column = get_step(column,WEST) - line_start = get_step(line_start,NORTH) - column = line_start - last_loc = target_loc - return - else - if(start_loc.y <= target_loc.y) //GOING SOUTH-EAST - for(y1 = start_loc.y; y1 <= target_loc.y; y1++) - for(x1 = start_loc.x; x1 >= target_loc.x; x1--) - new/turf/simulated/floor/plating/airless/asteroid(column) - column = get_step(column,EAST) - line_start = get_step(line_start,SOUTH) - column = line_start - last_loc = target_loc - return - else //GOING SOUTH-WEST - for(y1 = start_loc.y; y1 >= target_loc.y; y1--) - for(x1 = start_loc.x; x1 >= target_loc.x; x1--) - new/turf/simulated/floor/plating/airless/asteroid(column) - column = get_step(column,WEST) - line_start = get_step(line_start,SOUTH) - column = line_start - last_loc = target_loc - return - - - return \ No newline at end of file diff --git a/code/unused/mining/rail_unused.dm b/code/unused/mining/rail_unused.dm deleted file mode 100644 index 2bd37671bcd..00000000000 --- a/code/unused/mining/rail_unused.dm +++ /dev/null @@ -1,338 +0,0 @@ -/**********************Rail track**************************/ - -/obj/machinery/rail_track - name = "Rail track" - icon = 'icons/obj/mining.dmi' - icon_state = "rail" - set_dir(2) - var/id = null //this is needed for switches to work Set to the same on the whole length of the track - anchored = 1 - -/**********************Rail intersection**************************/ - -/obj/machinery/rail_track/intersections - name = "Rail track intersection" - icon_state = "rail_intersection" - -/obj/machinery/rail_track/intersections/attack_hand(user as mob) - switch (dir) - if (1) set_dir(5) - if (5) set_dir(4) - if (4) set_dir(9) - if (9) set_dir(2) - if (2) set_dir(10) - if (10) set_dir(8) - if (8) set_dir(6) - if (6) set_dir(1) - return - -/obj/machinery/rail_track/intersections/NSE - name = "Rail track T intersection" - icon_state = "rail_intersection_NSE" - set_dir(2) - -/obj/machinery/rail_track/intersections/NSE/attack_hand(user as mob) - switch (dir) - if (1) set_dir(5) - if (2) set_dir(5) - if (5) set_dir(9) - if (9) set_dir(2) - return - -/obj/machinery/rail_track/intersections/SEW - name = "Rail track T intersection" - icon_state = "rail_intersection_SEW" - set_dir(8) - -/obj/machinery/rail_track/intersections/SEW/attack_hand(user as mob) - switch (dir) - if (8) set_dir(6) - if (4) set_dir(6) - if (6) set_dir(5) - if (5) set_dir(8) - return - -/obj/machinery/rail_track/intersections/NSW - name = "Rail track T intersection" - icon_state = "rail_intersection_NSW" - set_dir(2) - -/obj/machinery/rail_track/intersections/NSW/attack_hand(user as mob) - switch (dir) - if (1) set_dir(10) - if (2) set_dir(10) - if (10) set_dir(6) - if (6) set_dir(2) - return - -/obj/machinery/rail_track/intersections/NEW - name = "Rail track T intersection" - icon_state = "rail_intersection_NEW" - set_dir(8) - -/obj/machinery/rail_track/intersections/NEW/attack_hand(user as mob) - switch (dir) - if (4) set_dir(9) - if (8) set_dir(9) - if (9) set_dir(10) - if (10) set_dir(8) - return - -/**********************Rail switch**************************/ - -/obj/machinery/rail_switch - name = "Rail switch" - icon = 'icons/obj/mining.dmi' - icon_state = "rail" - set_dir(2) - icon = 'icons/obj/recycling.dmi' - icon_state = "switch-off" - var/obj/machinery/rail_track/track = null - var/id //used for to change the track pieces - -/obj/machinery/rail_switch/New() - spawn(10) - src.track = locate(/obj/machinery/rail_track, get_step(src, NORTH)) - if(track) - id = track.id - return - -/obj/machinery/rail_switch/attack_hand(user as mob) - user << "You switch the rail track's direction" - for (var/obj/machinery/rail_track/T in world) - if (T.id == src.id) - var/obj/machinery/rail_car/C = locate(/obj/machinery/rail_car, T.loc) - if (C) - switch (T.dir) - if(1) - switch(C.direction) - if("N") C.direction = "S" - if("S") C.direction = "N" - if("E") C.direction = "S" - if("W") C.direction = "S" - if(2) - switch(C.direction) - if("N") C.direction = "S" - if("S") C.direction = "N" - if("E") C.direction = "S" - if("W") C.direction = "S" - if(4) - switch(C.direction) - if("N") C.direction = "E" - if("S") C.direction = "E" - if("E") C.direction = "W" - if("W") C.direction = "E" - if(8) - switch(C.direction) - if("N") C.direction = "E" - if("S") C.direction = "E" - if("E") C.direction = "W" - if("W") C.direction = "E" - if(5) - switch(C.direction) - if("N") C.direction = "S" - if("S") C.direction = "E" - if("E") C.direction = "S" - if("W") C.direction = "S" - if(6) - switch(C.direction) - if("N") C.direction = "S" - if("S") C.direction = "W" - if("E") C.direction = "S" - if("W") C.direction = "S" - if(9) - switch(C.direction) - if("N") C.direction = "E" - if("S") C.direction = "E" - if("E") C.direction = "N" - if("W") C.direction = "E" - if(10) - switch(C.direction) - if("N") C.direction = "W" - if("S") C.direction = "W" - if("E") C.direction = "W" - if("W") C.direction = "N" - return - -/**********************Rail car**************************/ - -/obj/machinery/rail_car - name = "Rail car" - icon = 'icons/obj/storage.dmi' - icon_state = "miningcar" - var/direction = "S" //S = south, N = north, E = east, W = west. Determines whichw ay it'll look first - var/moving = 0; - anchored = 1 - density = 1 - var/speed = 0 - var/slowing = 0 - var/atom/movable/load = null //what it's carrying - -/obj/machinery/rail_car/attack_hand(user as mob) - if (moving == 0) - processing_items.Add(src) - moving = 1 - else - processing_items.Remove(src) - moving = 0 - return - -/* -for (var/client/C) - C << "Dela." -*/ - -/obj/machinery/rail_car/MouseDrop_T(var/atom/movable/C, mob/user) - - if(user.stat) - return - - if (!istype(C) || C.anchored || get_dist(user, src) > 1 || get_dist(src,C) > 1 ) - return - - if(ismob(C)) - load(C) - - -/obj/machinery/rail_car/proc/load(var/atom/movable/C) - - if(get_dist(C, src) > 1) - return - //mode = 1 - - C.loc = src.loc - sleep(2) - C.loc = src - load = C - - C.pixel_y += 9 - if(C.layer < layer) - C.layer = layer + 0.1 - overlays += C - - if(ismob(C)) - var/mob/M = C - if(M.client) - M.client.perspective = EYE_PERSPECTIVE - M.client.eye = src - - //mode = 0 - //send_status() - -/obj/machinery/rail_car/proc/unload(var/dirn = 0) - if(!load) - return - - overlays.Cut() - - load.loc = src.loc - load.pixel_y -= 9 - load.layer = initial(load.layer) - if(ismob(load)) - var/mob/M = load - if(M.client) - M.client.perspective = MOB_PERSPECTIVE - M.client.eye = src - - - if(dirn) - step(load, dirn) - - load = null - - // in case non-load items end up in contents, dump every else too - // this seems to happen sometimes due to race conditions - // with items dropping as mobs are loaded - - for(var/atom/movable/AM in src) - AM.loc = src.loc - AM.layer = initial(AM.layer) - AM.pixel_y = initial(AM.pixel_y) - if(ismob(AM)) - var/mob/M = AM - if(M.client) - M.client.perspective = MOB_PERSPECTIVE - M.client.eye = src - -/obj/machinery/rail_car/relaymove(var/mob/user) - if(user.stat) - return - if(load == user) - unload(0) - return - -/obj/machinery/rail_car/process() - if (moving == 1) - if (slowing == 1) - if (speed > 0) - speed--; - if (speed == 0) - slowing = 0 - else - if (speed < 10) - speed++; - var/i = 0 - for (i = 0; i < speed; i++) - if (moving == 1) - switch (direction) - if ("S") - for (var/obj/machinery/rail_track/R in locate(src.x,src.y-1,src.z)) - if (R.dir == 10) - direction = "W" - if (R.dir == 9) - direction = "E" - if (R.dir == 2 || R.dir == 1 || R.dir == 10 || R.dir == 9) - for (var/mob/living/M in locate(src.x,src.y-1,src.z)) - step(M,get_dir(src,R)) - step(src,get_dir(src,R)) - break - else - moving = 0 - speed = 0 - if ("N") - for (var/obj/machinery/rail_track/R in locate(src.x,src.y+1,src.z)) - if (R.dir == 5) - direction = "E" - if (R.dir == 6) - direction = "W" - if (R.dir == 5 || R.dir == 1 || R.dir == 6 || R.dir == 2) - for (var/mob/living/M in locate(src.x,src.y+1,src.z)) - step(M,get_dir(src,R)) - step(src,get_dir(src,R)) - break - else - moving = 0 - speed = 0 - if ("E") - for (var/obj/machinery/rail_track/R in locate(src.x+1,src.y,src.z)) - if (R.dir == 6) - direction = "S" - if (R.dir == 10) - direction = "N" - if (R.dir == 4 || R.dir == 8 || R.dir == 10 || R.dir == 6) - for (var/mob/living/M in locate(src.x+1,src.y,src.z)) - step(M,get_dir(src,R)) - step(src,get_dir(src,R)) - break - else - moving = 0 - speed = 0 - if ("W") - for (var/obj/machinery/rail_track/R in locate(src.x-1,src.y,src.z)) - if (R.dir == 9) - direction = "N" - if (R.dir == 5) - direction = "S" - if (R.dir == 8 || R.dir == 9 || R.dir == 5 || R.dir == 4) - for (var/mob/living/M in locate(src.x-1,src.y,src.z)) - step(M,get_dir(src,R)) - step(src,get_dir(src,R)) - break - else - moving = 0 - speed = 0 - sleep(1) - else - processing_items.Remove(src) - moving = 0 - return \ No newline at end of file diff --git a/code/unused/mining/spaceship_builder_unused.dm b/code/unused/mining/spaceship_builder_unused.dm deleted file mode 100644 index 42b4f4e3af1..00000000000 --- a/code/unused/mining/spaceship_builder_unused.dm +++ /dev/null @@ -1,173 +0,0 @@ -/**********************Spaceship builder area definitions**************************/ - -/area/shipbuilder - requires_power = 0 - luminosity = 1 - sd_lighting = 0 - -/area/shipbuilder/station - name = "shipbuilder station" - icon_state = "teleporter" - -/area/shipbuilder/ship1 - name = "shipbuilder ship1" - icon_state = "teleporter" - -/area/shipbuilder/ship2 - name = "shipbuilder ship2" - icon_state = "teleporter" - -/area/shipbuilder/ship3 - name = "shipbuilder ship3" - icon_state = "teleporter" - -/area/shipbuilder/ship4 - name = "shipbuilder ship4" - icon_state = "teleporter" - -/area/shipbuilder/ship5 - name = "shipbuilder ship5" - icon_state = "teleporter" - -/area/shipbuilder/ship6 - name = "shipbuilder ship6" - icon_state = "teleporter" - - -/**********************Spaceship builder**************************/ - -/obj/machinery/spaceship_builder - name = "Robotic Fabricator" - icon = 'icons/obj/surgery.dmi' - icon_state = "fab-idle" - density = 1 - anchored = 1 - var/metal_amount = 0 - var/operating = 0 - var/area/currentShuttleArea = null - var/currentShuttleName = null - -/obj/machinery/spaceship_builder/proc/buildShuttle(var/shuttle) - - var/shuttleat = null - var/shuttleto = "/area/shipbuilder/station" - - var/req_metal = 0 - switch(shuttle) - if("hopper") - shuttleat = "/area/shipbuilder/ship1" - currentShuttleName = "Planet hopper" - req_metal = 25000 - if("bus") - shuttleat = "/area/shipbuilder/ship2" - currentShuttleName = "Blnder Bus" - req_metal = 60000 - if("dinghy") - shuttleat = "/area/shipbuilder/ship3" - currentShuttleName = "Space dinghy" - req_metal = 100000 - if("van") - shuttleat = "/area/shipbuilder/ship4" - currentShuttleName = "Boxvan MMDLVI" - req_metal = 120000 - if("secvan") - shuttleat = "/area/shipbuilder/ship5" - currentShuttleName = "Boxvan MMDLVI - Security edition" - req_metal = 125000 - if("station4") - shuttleat = "/area/shipbuilder/ship6" - currentShuttleName = "Space station 4" - req_metal = 250000 - - if (metal_amount - req_metal < 0) - return - - if (!shuttleat) - return - - var/area/from = locate(shuttleat) - var/area/dest = locate(shuttleto) - - if(!from || !dest) - return - - currentShuttleArea = shuttleat - from.move_contents_to(dest) - return - -/obj/machinery/spaceship_builder/proc/scrapShuttle() - - var/shuttleat = "/area/shipbuilder/station" - var/shuttleto = currentShuttleArea - - if (!shuttleto) - return - - var/area/from = locate(shuttleat) - var/area/dest = locate(shuttleto) - - if(!from || !dest) - return - - currentShuttleArea = null - currentShuttleName = null - from.move_contents_to(dest) - return - -/obj/machinery/spaceship_builder/attackby(obj/item/weapon/W as obj, mob/user as mob) - - if(operating == 1) - user << "The machine is processing" - return - - if (!(istype(usr, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey") - usr << "\red You don't have the dexterity to do this!" - return - - if (istype(W, /obj/item/stack/sheet/metal)) - - var/obj/item/stack/sheet/metal/M = W - user << "\blue You insert all the metal into the machine." - metal_amount += M.amount * 100 - del(M) - - else - return attack_hand(user) - return - -/obj/machinery/spaceship_builder/attack_hand(user as mob) - if(operating == 1) - user << "The machine is processing" - return - - var/dat - dat = text("Ship fabricator

") - dat += text("Current ammount of Metal: [metal_amount]

") - - if (currentShuttleArea) - dat += text("Currently building

[currentShuttleName]

") - dat += text("Build the shuttle to your liking.
This shuttle will be sent to the station in the event of an emergency along with a centcom emergency shuttle.") - dat += text("


Scrap current shuttle") - else - dat += text("Available ships to build:

") - dat += text("Planet hopper - Tiny, Slow, 25000 metal
") - dat += text("Blunder Bus - Small, Decent speed, 60000 metal
") - dat += text("Space dinghy - Medium size, Decent speed, 100000 metal
") - dat += text("Boxvan MMDLVIr - Medium size, Decent speed, 120000 metal
") - dat += text("Boxvan MMDLVI - Security eidition - Large, Rather slow, 125000 metal
") - dat += text("Space station 4 - Huge, Slow, 250000 metal
") - - user << browse("[dat]", "window=shipbuilder") - - -/obj/machinery/spaceship_builder/Topic(href, href_list) - if(..()) - return - usr.machine = src - src.add_fingerprint(usr) - if(href_list["ship"]) - buildShuttle(href_list["ship"]) - if(href_list["scrap"]) - scrapShuttle(href_list["ship"]) - src.updateUsrDialog() - return \ No newline at end of file diff --git a/code/unused/musicplayer.dm b/code/unused/musicplayer.dm deleted file mode 100644 index ced7630e882..00000000000 --- a/code/unused/musicplayer.dm +++ /dev/null @@ -1,15 +0,0 @@ -// this toggle doesn't save across rounds -/mob/verb/musictoggle() - set name = "Music Toggle" - if(src.be_music == 0) - src.be_music = 1 - src << "\blue Music toggled on!" - return - src.be_music = 0 - src << "\blue Music toggled off!" - -// This checks a var on each area and plays that var -/area/Entered(mob/A as mob) - if (A && src.music != "" && A.client && A.be_music != 0 && (A.music_lastplayed != src.music)) - A.music_lastplayed = src.music - A << sound(src.music, repeat = 0, wait = 0, volume = 20, channel = 1) diff --git a/code/unused/new_year.dm b/code/unused/new_year.dm deleted file mode 100644 index 0f2bdca1c35..00000000000 --- a/code/unused/new_year.dm +++ /dev/null @@ -1,138 +0,0 @@ - -/obj/effect/new_year_tree - name = "The fir" - desc = "This is a fir. Real fir on dammit spess station. You smell pine-needles." - icon = 'icons/effects/160x160.dmi' - icon_state = "new-year-tree" - anchored = 1 - opacity = 1 - density = 1 - layer = 5 - pixel_x = -64 - //pixel_y = -64 - -/obj/effect/new_year_tree/attackby(obj/item/W, mob/user) - if (istype(W, /obj/item/weapon/grab)) - return - W.loc = src - if (user.client) - user.client.screen -= W - user.u_equip(W) - var/const/bottom_right_x = 115.0 - var/const/bottom_right_y = 150.0 - var/const/top_left_x = 15.0 - var/const/top_left_y = 15.0 - var/const/bottom_med_x = top_left_x+(bottom_right_x-top_left_x)/2 - var/x = rand(top_left_x,bottom_med_x) //point in half of circumscribing rectangle - var/y = rand(top_left_y,bottom_right_y) - /* - y1=a*x1+b - y2=a*x2+b b = y2-a*x2 - - y1=a*x1+ y2-a*x2 - a*(x1-x2)+y2-y1=0 - a = (y1-y2)/(x1-x2) - */ - var/a = (top_left_y-bottom_right_y)/(top_left_x-bottom_med_x) - var/b = bottom_right_y-a*bottom_med_x - - if (a*x+b < y) //if point is above diagonal top_left -> bottom_median - x = bottom_med_x + x - top_left_x - y = bottom_right_y - y + top_left_y - var/image/I = image(W.icon, W, icon_state = W.icon_state) - I.pixel_x = x - I.pixel_y = y - overlays += I -/* -/obj/item/weapon/firbang - desc = "It is set to detonate in 10 seconds." - name = "firbang" - icon = 'icons/obj/grenade.dmi' - icon_state = "flashbang" - var/state = null - var/det_time = 100.0 - w_class = 2.0 - item_state = "flashbang" - throw_speed = 4 - throw_range = 20 - flags = CONDUCT - slot_flags = SLOT_BELT - -/obj/item/weapon/firbang/afterattack(atom/target as mob|obj|turf|area, mob/user as mob) - if (user.get_active_hand() == src) - if ((CLUMSY in usr.mutations) && prob(50)) - user << "\red Huh? How does this thing work?!" - src.state = 1 - src.icon_state = "flashbang1" - playsound(src.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3) - spawn( 5 ) - prime() - return - else if (!( src.state )) - user << "\red You prime the [src]! [det_time/10] seconds!" - src.state = 1 - src.icon_state = "flashbang1" - playsound(src.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3) - spawn( src.det_time ) - prime() - return - user.set_dir(get_dir(user, target)) - user.drop_item() - var/t = (isturf(target) ? target : target.loc) - walk_towards(src, t, 3) - src.add_fingerprint(user) - return - -/obj/item/weapon/firbang/attack_paw(mob/user as mob) - return src.attack_hand(user) - -/obj/item/weapon/firbang/attack_hand() - walk(src, null, null) - ..() - return - -/obj/item/weapon/firbang/proc/prime() - playsound(src.loc, 'sound/effects/bang.ogg', 25, 1) - var/turf/T = get_turf(src) - if(T) - var/datum/effect/effect/system/smoke_spread/smoke = new - smoke.set_up(3, 0, src.loc) - smoke.attach(src) - smoke.start() - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread - s.set_up(3, 1, src) - s.start() - new /obj/effect/new_year_tree(T) - del(src) - return - -/obj/item/weapon/firbang/attack_self(mob/user as mob) - if (!src.state) - if (CLUMSY in user.mutations) - user << "\red Huh? How does this thing work?!" - spawn( 5 ) - prime() - return - else - user << "\red You prime the [src]! [det_time/10] seconds!" - src.state = 1 - src.icon_state = "flashbang1" - add_fingerprint(user) - spawn( src.det_time ) - prime() - return - return - -/* -/datum/supply_packs/new_year - name = "New Year Celebration Equipment" - contains = list("/obj/item/weapon/firbang", - "/obj/item/weapon/firbang", - "/obj/item/weapon/firbang", - "/obj/item/weapon/wrapping_paper", - "/obj/item/weapon/wrapping_paper", - "/obj/item/weapon/wrapping_paper") - cost = 20 - containertype = "/obj/structure/closet/crate" - containername = "New Year Celebration crate" -*/ \ No newline at end of file diff --git a/code/unused/newcombatsystem.dm b/code/unused/newcombatsystem.dm deleted file mode 100644 index 274581a04e1..00000000000 --- a/code/unused/newcombatsystem.dm +++ /dev/null @@ -1,191 +0,0 @@ -//It's not a very big change, but I think melee will benefit from it. -//Currently will only be restricted to special training weapons to test the balancedness of the system. -//1)Knockdown, stun and weaken chances are separate and dependant on the part of the body you're aiming at -//eg a mop will be better applied to legs since it has a higher base knockdown chance than the other disabling states -//while an energy gun would be better applied to the chest because of the stunning chance. -//2)Weapons also have a parry chance which is checked every time the one wielding the weapon is attacked in melee -//in the area is currently aiming at and is able to defend himself. -//More ideas to come. - -//NOTES: doesn't work with armor yet - -/obj/item/weapon/training //subclass of weapons that is currently the only one that uses the alternate combat system - name = "training weapon" - desc = "A weapon for training the advanced fighting technicues" - var/chance_parry = 0 - var/chance_weaken = 0 - var/chance_stun = 0 - var/chance_knockdown = 0 - var/chance_knockout = 0 - var/chance_disarm = 0 - -//chances - 5 is low, 10 is medium, 15 is good - -/obj/item/weapon/training/axe //hard-hitting, but doesn't have much in terms of disabling people (except by killing) - name = "training axe" - icon_state = "training_axe" - /*combat stats*/ - force = 15 - chance_parry = 5 - chance_weaken = 10 - chance_stun = 5 - chance_knockdown = 5 - chance_knockout = 5 - chance_disarm = 0 - -/obj/item/weapon/training/sword //not bad attack, good at parrying and disarming - name = "training sword" - icon_state = "training_sword" - /*combat stats*/ - force = 10 - chance_parry = 15 - chance_weaken = 5 - chance_stun = 0 - chance_knockdown = 5 - chance_knockout = 0 - chance_disarm = 15 - -/obj/item/weapon/training/staff //not bad attack either, good at tripping and parrying - name = "training staff" - icon_state = "training_staff" - /*combat stats*/ - force = 10 - chance_parry = 15 - chance_weaken = 5 - chance_stun = 0 - chance_knockdown = 15 - chance_knockout = 0 - chance_disarm = 5 - -/obj/item/weapon/training/mace //worst attack, but has a good chance of stun, knockout or weaken - name = "training mace" - icon_state = "training_mace" - /*combat stats*/ - force = 5 - chance_parry = 0 - chance_weaken = 15 - chance_stun = 10 - chance_knockdown = 0 - chance_knockout = 10 - chance_disarm = 0 - -/obj/item/weapon/training/attack(target as mob, mob/user as mob) - var/target_area = attack_location(user.zone_sel.selecting) - for(var/mob/O in viewers(src,7)) - O << "\red \b [user.name] attacks [target.name] in the [target_area] with [src.name]!" - if(!target.stat && target.zone_sel.selecting == target_area) //parrying occurs here - if(istype(target.r_hand,/obj/item/weapon/training) - if(prob(target.r_hand:chance_parry)) - for(var/mob/O in viewers(src,7)) - O << "\red \b [target.name] deftly parries the attack with [target.r_hand.name]!" - return - if(istype(target.l_hand,/obj/item/weapon/training) - if(prob(target.l_hand:chance_parry)) - for(var/mob/O in viewers(src,7)) - O << "\red \b [target.name] deftly parries the attack with [target.l_hand.name]!" - return - target.adjustBruteLoss(-src.force) - - var/modifier_knockdown = 1.0 - var/modifier_knockout = 1.0 - var/modifier_stun = 1.0 - var/modifier_weaken = 1.0 - var/modifier_disarm = 0.0 - - switch(target_area) - if("eyes") - modifier_weaken = 2.0 - modifier_stun = 0.5 - modifier_knockdown = 0.0 - if("head") - modifier_stun = 0.8 - modifier_knockout = 1.5 - modifier_weaken = 1.2 - modifier_knockdown = 0.0 - if("chest") - if("right arm","r_arm") - if("left arm","l_arm") - if("right hand","r_hand") - if("left hand","l_hand") - if("groin") - if("right leg","r_leg") - if("left leg","l_leg") - if("right foot","r_foot") - if("left foot","l_foot") - - -/proc/attack_location(var/initloc = "chest") //proc to randomise actual hit loc based on where you're aiming at - var/resultloc = "chest" //also forgot hands/feet. bleh - var/percentage = rand(1,100) - switch(initloc) - if("eyes") - switch(percentage) - if(1 to 10) - resultloc = "eyes" - if(11 to 30) - resultloc = "head" - if(31 to 100) - resultloc = "chest" - if("head") - switch(percentage) - if(1 to 5) - resultloc = "eyes" - if(6 to 40) - resultloc = "head" - if(41 to 100) - resultloc = "chest" - if("chest") - switch(percentage) - if(1 to 80) - resultloc = "chest" - if(81 to 84) - resultloc = "right arm" - if(85 to 88) - resultloc = "left arm" - if(89 to 92) - resultloc = "right leg" - if(93 to 96) - resultloc = "left leg" - if(97 to 98) - resultloc = "groin" - if(99 to 100) - resultloc = "head" - if("l_arm") - switch(percentage) - if(1 to 60) - resultloc = "left arm" - if(61 to 100) - resultloc = "chest" - if("r_arm") - switch(percentage) - if(1 to 60) - resultloc = "right arm" - if(61 to 100) - resultloc = "chest" - if("groin") - switch(percentage) - if(1 to 35) - resultloc = "groin" - if(36 to 50) - resultloc = "left leg" - if(51 to 65) - resultloc = "right leg" - if(66 to 100) - resultloc = "chest" - if("l_leg") - switch(percentage) - if(1 to 60) - resultloc = "left leg" - if(61 to 70) - resultloc = "groin" - if(71 to 100) - resultloc = "chest" - if("r_leg") - switch(percentage) - if(1 to 60) - resultloc = "right leg" - if(61 to 70) - resultloc = "groin" - if(71 to 100) - resultloc = "chest" - return resultloc \ No newline at end of file diff --git a/code/unused/optics/beam.dm b/code/unused/optics/beam.dm deleted file mode 100644 index 2e4f87e367d..00000000000 --- a/code/unused/optics/beam.dm +++ /dev/null @@ -1,177 +0,0 @@ -// the laser beam - - -/obj/effect/beam/laser - name = "laser beam" - icon = 'icons/effects/beam.dmi' - icon_state = "full" - density = 0 - mouse_opacity = 0 - pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE - var/wavelength // the (vaccuum) wavelength of the beam - var/width = 1 // 1=thin, 2=medium, 3=wide - - var/obj/effect/beam/laser/next - var/obj/effect/beam/laser/prev - var/obj/master - - New(var/atom/newloc, var/dirn, var/lambda, var/omega=1, var/half=0) - - if(!isturf(loc)) - return - - //world << "creating beam at ([newloc.x],[newloc.y]) with [dirn] [lambda] [omega] [half]" - - icon_state = "[omega]-[half ? "half" : "full"]" - set_dir(dirn) - set_wavelength(lambda) - ..(newloc) - spawn(0) - src.propagate() - src.verbs -= /atom/movable/verb/pull - - - - proc/propagate() - var/turf/T = get_step(src, dir) - if(T) - if(T.Enter(src)) - next = new(T, dir, wavelength, width, 0) - next.prev = src - next.master = src.master - else - spawn(5) - propagate() - - - proc/remove() - if(next) - next.remove() - del(src) - - - - proc/blocked(var/atom/A) - return density || opacity -/* -/turf/Enter(atom/movable/mover as mob|obj) - if (!mover || !isturf(mover.loc)) - return 1 - - - //First, check objects to block exit that are not on the border - for(var/obj/obstacle in mover.loc) - if((obstacle.flags & ~ON_BORDER) && (mover != obstacle) && (forget != obstacle)) - if(!obstacle.CheckExit(mover, src)) - mover.Bump(obstacle, 1) - return 0 - - //Now, check objects to block exit that are on the border - for(var/obj/border_obstacle in mover.loc) - if((border_obstacle.flags & ON_BORDER) && (mover != border_obstacle) && (forget != border_obstacle)) - if(!border_obstacle.CheckExit(mover, src)) - mover.Bump(border_obstacle, 1) - return 0 - - //Next, check objects to block entry that are on the border - for(var/obj/border_obstacle in src) - if(border_obstacle.flags & ON_BORDER) - if(!border_obstacle.CanPass(mover, mover.loc, 1, 0) && (forget != border_obstacle)) - mover.Bump(border_obstacle, 1) - return 0 - - //Then, check the turf itself - if (!src.CanPass(mover, src)) - mover.Bump(src, 1) - return 0 - - //Finally, check objects/mobs to block entry that are not on the border - for(var/atom/movable/obstacle in src) - if(obstacle.flags & ~ON_BORDER) - if(!obstacle.CanPass(mover, mover.loc, 1, 0) && (forget != obstacle)) - mover.Bump(obstacle, 1) - return 0 - return 1 //Nothing found to block so return success! -*/ - - - HasEntered(var/atom/movable/AM) - if(istype(AM, /obj/effect/beam)) - return - if(blocked(AM)) - remove(src) - if(prev) - prev.propagate() - else if(master) - master:turn_on() - - proc/set_wavelength(var/lambda) - - var/w = round(lambda,1) // integer wavelength - wavelength = lambda - // first look for cached version of the icon at this wavelength - var/icon/cached = beam_icons["[w]"] - if(cached) - icon = cached - - return - - // no cached version, so generate a new one - - // this maps a wavelength in the range 380-780 nm to an R,G,B,A value - var/red = 0 - var/green = 0 - var/blue = 0 - var/alpha = 0 - - switch(w) - if(380 to 439) - red = (440-w) / 60 - green = 0 - blue = 1 - if(440 to 489) - red = 0 - green = (w-440) / 50 - blue = 1 - if(490 to 509) - red = 0 - green = 1 - blue = (510 - w) / 20 - if(510 to 579) - red = (w-510) / 70 - green = 1 - blue = 0 - if(580 to 644) - red = 1 - green = (645-w) / 65 - blue = 0 - if(645 to 780) - red = 1 - green = 0 - blue = 0 - - // colour is done, now calculate intensity - switch(w) - if(380 to 419) - alpha = 0.75*(w-380)/40 - if(420 to 700) - alpha = 0.75 - if(701 to 780) - alpha = 0.75*(780-w)/80 - - // remap alpha by intensity gamma - if(alpha != 0) - alpha = alpha**0.80 - - var/icon/I = icon('icons/effects/beam.dmi') - I.MapColors(red,0,0,0, 0,green,0,0, 0,0,blue,0, 0,0,0,alpha, 0,0,0,0) - icon = I - - beam_icons["[w]"] = I - - - -// global cache of beam icons -// this is an assoc list mapping (integer) wavelength to icons - -var/list/beam_icons = new() \ No newline at end of file diff --git a/code/unused/optics/laser-pointer.dm b/code/unused/optics/laser-pointer.dm deleted file mode 100644 index f25e5f3bb1c..00000000000 --- a/code/unused/optics/laser-pointer.dm +++ /dev/null @@ -1,73 +0,0 @@ -// A laser pointer. Emits a (tunable) low-power laser beam -// Used for alignment and testing of the optics system - -/obj/item/device/laser_pointer - name = "laser pointer" - desc = "A portable low-power laser used for optical system alignment. The label reads: 'Danger: Class IIIa laser device. Avoid direct eye exposure." - icon = 'optics.dmi' - icon_state = "pointer0" - var/on = 0 // true if operating - var/wavelength = 632 // operation wavelength (nm) - - var/gain_peak = 632 // gain peak (nm) - var/gain_width = 35 // gain bandwidth (nm) - var/peak_output = 0.005 // max output 5 mW - layer = OBJ_LAYER + 0.1 - - w_class = 4 - m_amt = 500 - g_amt = 100 - w_amt = 200 - - var/obj/effect/beam/laser/beam // the created beam - - flags = CONDUCT - - attack_ai() - return - - attack_paw() - return - - attack_self(var/mob/user) - - - on = !on - if(on) - turn_on() - else - turn_off() - - updateicon() - - verb/rotate() - set name = "Rotate" - set src in view(1) - turn_off() - set_dir(turn(dir, -90)) - if(on) turn_on() - - Move(var/atom/newloc,var/newdir) - . = ..(newloc,newdir) - if(on && . && isturf(newloc)) - turn_off() - turn_on() - return . - - proc/turn_on() - if(!isturf(loc)) - return - - beam = new(loc, dir, wavelength, 1, 1) - beam.master = src - - proc/turn_off() - if(beam) - beam.remove() - - dropped() - turn_off() - turn_on() - - proc/updateicon() - icon_state = "pointer[on]" \ No newline at end of file diff --git a/code/unused/optics/mirror.dm b/code/unused/optics/mirror.dm deleted file mode 100644 index 6570874b1f2..00000000000 --- a/code/unused/optics/mirror.dm +++ /dev/null @@ -1,82 +0,0 @@ -// Mirror object -// Part of the optics system -// -// reflects laser beams -// 16 directional states 0/22.5/45/67.5deg to allow for 0/45deg beam angles - - -// ideas: -// frame/stand icon w/ mirror directional overlay -// two sets of overlay icons for 0/45 and 22.5/67.5 deg angles - -// can rotate cw/acw - need screwdriver to loosen/tighten mirror -// use wrench to anchor/unanchor frame -// if touched, gets dirty - fingerprints, which reduce reflectivity -// if dirty and hit with high-power beam, mirror may shatter -// some kind of dust accumulation with HasProximity? Could check for mob w/o labcoat etc. -// can clean with acetone+wipes - -/obj/optical/mirror - icon = 'optical.dmi' - icon_state = "mirrorA" - set_dir(1) - desc = "A large, optical-grade mirror firmly mounted on a stand." - anchored = 0 - var/rotatable = 0 // true if mirror can be rotated - var/angle = 0 // normal of mirror, 0-15. 0=N, 1=NNE, 2=NE, 3=ENE, 4=E etc - - - New() - ..() - set_angle() - - - - //set the angle from icon_state and dir - proc/set_angle() - switch(dir) - if(1) - angle = 0 - if(5) - angle = 2 - if(4) - angle = 4 - if(6) - angle = 6 - if(2) - angle = 8 - if(10) - angle = 10 - if(8) - angle = 12 - if(9) - angle = 14 - - if(icon_state == "mirrorB") // 22.5deg turned states - angle++ - return - - // set the dir and icon_state from the angle - proc/set_dir() - if(angle%2 == 1) - icon_state = "mirrorB" - else - icon_state = "mirrorA" - switch(round(angle/2)*2) - if(0) - set_dir(1) - if(2) - set_dir(5) - if(4) - set_dir(4) - if(6) - set_dir(6) - if(8) - set_dir(2) - if(10) - set_dir(10) - if(12) - set_dir(8) - if(14) - set_dir(9) - return \ No newline at end of file diff --git a/code/unused/pda2/base_os.dm b/code/unused/pda2/base_os.dm deleted file mode 100644 index 59f616c62bb..00000000000 --- a/code/unused/pda2/base_os.dm +++ /dev/null @@ -1,446 +0,0 @@ -/datum/computer/file/pda_program/os - proc - receive_os_command(list/command_list) - if((!src.holder) || (!src.master) || (!command_list) || !(command_list["command"])) - return 1 - - if((!istype(holder)) || (!istype(master))) - return 1 - - if(!(holder in src.master.contents)) - if(master.active_program == src) - master.active_program = null - return 1 - - return 0 - -//Main os program: Provides old pda interface and four programs including file browser, notes, messenger, and atmos scan - main_os - name = "ThinkOS 7" - size = 8.0 - var/mode = 0 - //Note vars - var/note = "Congratulations, your station has chosen the Thinktronic 5150 Personal Data Assistant!" - var/note_mode = 0 //0 For note editor, 1 for note browser - var/datum/computer/file/text/note_file = null //If set, save to this file. - //Messenger vars - var/list/detected_pdas = list() - var/message_on = 1 - var/message_silent = 0 //To beep or not to beep, that is the question - var/message_mode = 0 //0 for pda list, 1 for messages - var/message_tone = "beep" //Custom ringtone - var/message_note = null //Current messages in memory (Store as separate file only later??) - //File browser vars - var/datum/computer/folder/browse_folder = null - var/datum/computer/file/clipboard = null //Current file to copy - - - - receive_os_command(list/command_list) - if(..()) - return - - //world << "[command_list["command"]]" - return - - return_text() - if(..()) - return - - var/dat = src.return_text_header() - - switch(src.mode) - if(0) - dat += "

PERSONAL DATA ASSISTANT

" - dat += "Owner: [src.master.owner]

" - - dat += "

General Functions

" - dat += "" - - dat += "

Utilities

" - dat += "" - - if(1) - //Note Program. Can save/load note files. - dat += "

Notekeeper V2.5

" - - if(!src.note_mode) - dat += "Edit" - dat += " | New File" - dat += " | Save" - dat += " | Load
" - - dat += src.note - else - dat += " Back" - dat += " | \[[src.holding_folder.holder.file_amount - src.holding_folder.holder.file_used]\] Free
" - dat += "" - - for(var/datum/computer/file/text/T in src.holding_folder.contents) - dat += "" - dat += "" - dat += "" - - dat += "
[T.name][T.extension]Length: [T.data ? (length(T.data)) : "0"]
" - - if(2) - //Messenger. Uses Radio. Is a messenger. - //TO-DO: ~file sharing~ - src.master.overlays.Cut() //Remove existing alerts - dat += "

SpaceMessenger V4.0.5

" - - if (!src.message_mode) - - dat += "Ringer: [src.message_silent == 1 ? "Off" : "On"] | " - dat += "Send / Receive: [src.message_on == 1 ? "On" : "Off"] | " - dat += "Set Ringtone | " - dat += "Messages
" - - dat += "Scan
" - dat += "Detected PDAs
" - - dat += "
    " - - var/count = 0 - - if (src.message_on) - for (var/obj/item/device/pda2/P in src.detected_pdas) - if (!P.owner) - src.detected_pdas -= P - continue - else if (P == src) //I guess this can happen if somebody copies the system file. - src.detected_pdas -= P - continue - - dat += "
  • [P]" - - dat += "
  • " - count++ - - dat += "
" - - if (count == 0) - dat += "None detected.
" - - else - dat += "Clear | " - dat += "Back
" - - dat += "

Messages

" - - dat += src.message_note - dat += "
" - - if(3) - //File Browser. - //To-do(?): Setting "favorite" programs to access straight from main menu - //Not sure how needed it is, not like they have to go through 500 subfolders or whatever - if((!src.browse_folder) || !(src.browse_folder.holder in src.master)) - src.browse_folder = src.holding_folder - - dat += " | Paste" - dat += " | Drive: " - dat += "\[[src.browse_folder.holder == src.master.hd ? "MAIN" : "CART"]\]
" - - dat += "Contents of [browse_folder] | Drive ID:\[[src.browse_folder.holder.title]]
" - dat += "Used: \[[src.browse_folder.holder.file_used]/[src.browse_folder.holder.file_amount]\]
" - - dat += "" - for(var/datum/computer/file/F in browse_folder.contents) - if(F == src) - dat += "" - continue - dat += "" - dat += "" - - dat += "" - - dat += "" - dat += "" - - dat += "" - - dat += "" - - dat += "
SystemSize: [src.size]SYSTEM
[F.name]Size: [F.size][F.extension]DelRenameCopy
" - - if(4) - //Atmos Scanner - dat += "

Atmospheric Readings

" - - var/turf/T = get_turf_or_move(get_turf(src.master)) - if (isnull(T)) - dat += "Unable to obtain a reading.
" - else - var/datum/gas_mixture/environment = T.return_air() - - var/pressure = environment.return_pressure() - var/total_moles = environment.total_moles() - - dat += "Air Pressure: [round(pressure,0.1)] kPa
" - - if (total_moles()) - var/o2_level = environment.oxygen/total_moles() - var/n2_level = environment.nitrogen/total_moles() - var/co2_level = environment.carbon_dioxide/total_moles() - var/plasma_level = environment.toxins/total_moles() - var/unknown_level = 1-(o2_level+n2_level+co2_level+plasma_level) - - dat += "Nitrogen: [round(n2_level*100)]%
" - - dat += "Oxygen: [round(o2_level*100)]%
" - - dat += "Carbon Dioxide: [round(co2_level*100)]%
" - - dat += "Plasma: [round(plasma_level*100)]%
" - - if(unknown_level > 0.01) - dat += "OTHER: [round(unknown_level)]%
" - - dat += "Temperature: [round(environment.temperature-T0C)]°C
" - - dat += "
" - - return dat - - Topic(href, href_list) - if(..()) - return - - if(href_list["mode"]) - var/newmode = text2num(href_list["mode"]) - src.mode = max(newmode, 0) - - else if(href_list["flight"]) - src.master.toggle_light() - - else if(href_list["scanner"]) - if(src.master.scan_program) - src.master.scan_program = null - - else if(href_list["input"]) - switch(href_list["input"]) - if("tone") - var/t = input(usr, "Please enter new ringtone", src.name, src.message_tone) as text - if (!t) - return - - if (!src.master || !in_range(src.master, usr) && src.master.loc != usr) - return - - if(!(src.holder in src.master)) - return - - t = sanitize(copytext(t, 1, 20)) - src.message_tone = t - - if("note") - var/t = input(usr, "Please enter note", src.name, src.note) as message - if (!t) - return - - if (!src.master || !in_range(src.master, usr) && src.master.loc != usr) - return - - if(!(src.holder in src.master)) - return - - t = copytext(adminscrub(t), 1, MAX_MESSAGE_LEN) - src.note = t - - - if("message") - var/obj/item/device/pda2/P = locate(href_list["target"]) - if(!P || !istype(P)) - return - - var/t = input(usr, "Please enter message", P.name, null) as text - if (!t) - return - - if (!src.master || !in_range(src.master, usr) && src.master.loc != usr) - return - - if(!(src.holder in src.master)) - return - - - var/datum/signal/signal = new - signal.data["command"] = "text message" - signal.data["message"] = t - signal.data["sender"] = src.master.owner - signal.data["tag"] = "\ref[P]" - src.post_signal(signal) - src.message_note += "→ To [P.owner]:
[t]
" - log_pda("[usr] sent [t] to [P.owner]") - - if("rename") - var/datum/computer/file/F = locate(href_list["target"]) - if(!F || !istype(F)) - return - - var/t = input(usr, "Please enter new name", src.name, F.name) as text - t = sanitize(copytext(t, 1, 16)) - if (!t) - return - if (!in_range(src.master, usr) || !(F.holder in src.master)) - return - if(F.holder.read_only) - return - F.name = capitalize(lowertext(t)) - - - else if(href_list["message_func"]) //Messenger specific topic junk - switch(href_list["message_func"]) - if("ringer") - src.message_silent = !src.message_silent - if("on") - src.message_on = !src.message_on - if("clear") - src.message_note = null - if("scan") - if(src.message_on) - src.detected_pdas = list() - var/datum/signal/signal = new - signal.data["command"] = "report pda" - src.post_signal(signal) - - else if(href_list["note_func"]) //Note program specific topic junk - switch(href_list["note_func"]) - if("new") - src.note_file = null - src.note = null - if("save") - if(src.note_file && src.note_file.holder in src.master) - src.note_file.data = src.note - else - var/datum/computer/file/text/F = new /datum/computer/file/text - if(!src.holding_folder.add_file(F)) - del(F) - else - src.note_file = F - F.data = src.note - - if("load") - var/datum/computer/file/text/T = locate(href_list["target"]) - if(!T || !istype(T)) - return - - src.note_file = T - src.note = note_file.data - src.note_mode = 0 - - if("switchmenu") - src.note_mode = !src.note_mode - - else if(href_list["browse_func"]) //File browser specific topic junk - var/datum/computer/target = locate(href_list["target"]) - switch(href_list["browse_func"]) - if("drive") - if(src.browse_folder.holder == src.master.hd && src.master.cartridge && (src.master.cartridge.root)) - src.browse_folder = src.master.cartridge.root - else - src.browse_folder = src.holding_folder - if("open") - if(!target || !istype(target)) - return - if(istype(target, /datum/computer/file/pda_program)) - if(istype(target,/datum/computer/file/pda_program/os) && (src.master.host_program)) - return - else - src.master.run_program(target) - src.master.updateSelfDialog() - return - - if("delete") - if(!target || !istype(target)) - return - src.master.delete_file(target) - - if("copy") - if(istype(target,/datum/computer/file) && (!target.holder || (target.holder in src.master.contents))) - src.clipboard = target - - if("paste") - if(istype(target,/datum/computer/folder)) - if(!src.clipboard || !src.clipboard.holder || !(src.clipboard.holder in src.master.contents)) - return - - if(!istype(src.clipboard)) - return - - src.clipboard.copy_file_to_folder(target) - - - else if(href_list["message_mode"]) - var/newmode = text2num(href_list["message_mode"]) - src.message_mode = max(newmode, 0) - - src.master.add_fingerprint(usr) - src.master.updateSelfDialog() - return - - receive_signal(datum/signal/signal) - if(..()) - return - - switch(signal.data["command"]) - if("text message") - if(!message_on || !signal.data["message"]) - return - var/sender = signal.data["sender"] - if(!sender) - sender = "!Unknown!" - - src.message_note += "← From [sender]:
[signal.data["message"]]
" - var/alert_beep = null //Don't beep if set to silent. - if(!src.message_silent) - alert_beep = src.message_tone - - src.master.display_alert(alert_beep) - src.master.updateSelfDialog() - - if("report pda") - if(!message_on) - return - - var/datum/signal/newsignal = new - newsignal.data["command"] = "reporting pda" - newsignal.data["tag"] = "\ref[signal.source]" - src.post_signal(newsignal) - - if("reporting pda") - if(!detected_pdas) - detected_pdas = new() - - if(!(signal.source in detected_pdas)) - detected_pdas += signal.source - - src.master.updateSelfDialog() - - return - - return_text_header() - if(!src.master) - return - - var/dat - - if(src.mode) - dat += " | Main Menu" - - else if (!isnull(src.master.cartridge)) - dat += " | Eject [src.master.cartridge]" - - dat += " | Refresh" - - return dat \ No newline at end of file diff --git a/code/unused/pda2/base_program.dm b/code/unused/pda2/base_program.dm deleted file mode 100644 index f5c11efc077..00000000000 --- a/code/unused/pda2/base_program.dm +++ /dev/null @@ -1,185 +0,0 @@ -//Eventual plan: Convert all datum/data to datum/computer/file -/datum/computer/file/text - name = "text" - extension = "TEXT" - size = 2.0 - var/data = null - -/datum/computer/file/record - name = "record" - extension = "REC" - - var/list/fields = list( ) - - -//base pda program - -/datum/computer/file/pda_program - name = "blank program" - extension = "PPROG" - var/obj/item/device/pda2/master = null - var/id_tag = null - - os - name = "blank system program" - extension = "PSYS" - - scan - name = "blank scan program" - extension = "PSCAN" - - New(obj/holding as obj) - if(holding) - src.holder = holding - - if(istype(src.holder.loc,/obj/item/device/pda2)) - src.master = src.holder.loc - - proc - return_text() - if((!src.holder) || (!src.master)) - return 1 - - if((!istype(holder)) || (!istype(master))) - return 1 - - if(!(holder in src.master.contents)) - //world << "Holder [holder] not in [master] of prg:[src]" - if(master.active_program == src) - master.active_program = null - return 1 - - if(!src.holder.root) - src.holder.root = new /datum/computer/folder - src.holder.root.holder = src - src.holder.root.name = "root" - - return 0 - - process() //This isn't actually used at the moment - if((!src.holder) || (!src.master)) - return 1 - - if((!istype(holder)) || (!istype(master))) - return 1 - - if(!(holder in src.master.contents)) - if(master.active_program == src) - master.active_program = null - return 1 - - if(!src.holder.root) - src.holder.root = new /datum/computer/folder - src.holder.root.holder = src - src.holder.root.name = "root" - - return 0 - - //maybe remove this, I haven't found a good use for it yet - send_os_command(list/command_list) - if(!src.master || !src.holder || src.master.host_program || !command_list) - return 1 - - if(!istype(src.master.host_program) || src.master.host_program == src) - return 1 - - src.master.host_program.receive_os_command() - - return 0 - - return_text_header() - if(!src.master || !src.holder) - return - - var/dat = " | Main Menu" - dat += " | Refresh" - - return dat - - post_signal(datum/signal/signal, newfreq) - if(master) - master.post_signal(signal, newfreq) - else - del(signal) - - transfer_holder(obj/item/weapon/disk/data/newholder,datum/computer/folder/newfolder) - - if((newholder.file_used + src.size) > newholder.file_amount) - return 0 - - if(!newholder.root) - newholder.root = new /datum/computer/folder - newholder.root.holder = newholder - newholder.root.name = "root" - - if(!newfolder) - newfolder = newholder.root - - if((src.holder && src.holder.read_only) || newholder.read_only) - return 0 - - if((src.holder) && (src.holder.root)) - src.holder.root.remove_file(src) - - newfolder.add_file(src) - - if(istype(newholder.loc,/obj/item/device/pda2)) - src.master = newholder.loc - - //world << "Setting [src.holder] to [newholder]" - src.holder = newholder - return 1 - - - receive_signal(datum/signal/signal) - if((!src.holder) || (!src.master)) - return 1 - - if((!istype(holder)) || (!istype(master))) - return 1 - - if(!(holder in src.master.contents)) - if(master.active_program == src) - master.active_program = null - return 1 - - return 0 - - - Topic(href, href_list) - if((!src.holder) || (!src.master)) - return 1 - - if((!istype(holder)) || (!istype(master))) - return 1 - - if(src.master.active_program != src) - return 1 - - if ((!usr.contents.Find(src.master) && (!in_range(src.master, usr) || !istype(src.master.loc, /turf))) && (!istype(usr, /mob/living/silicon))) - return 1 - - if(!(holder in src.master.contents)) - if(master.active_program == src) - master.active_program = null - return 1 - - usr.machine = src.master - - if (href_list["close"]) - usr.machine = null - usr << browse(null, "window=pda2") - return 0 - - if (href_list["quit"]) -// src.master.processing_programs.Remove(src) - if(src.master.host_program && src.master.host_program.holder && (src.master.host_program.holder in src.master.contents)) - src.master.run_program(src.master.host_program) - src.master.updateSelfDialog() - return 1 - else - src.master.active_program = null - src.master.updateSelfDialog() - return 1 - - return 0 \ No newline at end of file diff --git a/code/unused/pda2/pda2.dm b/code/unused/pda2/pda2.dm deleted file mode 100644 index 7f451c0d39a..00000000000 --- a/code/unused/pda2/pda2.dm +++ /dev/null @@ -1,297 +0,0 @@ -//The advanced pea-green monochrome lcd of tomorrow. - - -//TO-DO: rearrange all this disk/data stuff so that fixed disks are the parent type -//because otherwise you have carts going into floppy drives and it's ALL MAD -/obj/item/weapon/disk/data/cartridge - name = "Cart 2.0" - desc = "A data cartridge for portable microcomputers." - icon = 'icons/obj/pda.dmi' - icon_state = "cart" - item_state = "electronic" - file_amount = 80.0 - title = "ROM Cart" - - pda2test - name = "Test Cart" - New() - ..() - src.root.add_file( new /datum/computer/file/computer_program/arcade(src)) - src.root.add_file( new /datum/computer/file/pda_program/manifest(src)) - src.root.add_file( new /datum/computer/file/pda_program/status_display(src)) - src.root.add_file( new /datum/computer/file/pda_program/signaler(src)) - src.root.add_file( new /datum/computer/file/pda_program/qm_records(src)) - src.root.add_file( new /datum/computer/file/pda_program/scan/health_scan(src)) - src.root.add_file( new /datum/computer/file/pda_program/records/security(src)) - src.root.add_file( new /datum/computer/file/pda_program/records/medical(src)) - src.read_only = 1 - - -/obj/item/device/pda2 - name = "PDA" - desc = "A portable microcomputer by Thinktronic Systems, LTD. Functionality determined by an EEPROM cartridge." - icon = 'icons/obj/pda.dmi' - icon_state = "pda" - item_state = "electronic" - w_class = 2.0 - slow_flags = SLOT_BELT - - var/owner = null - var/default_cartridge = null // Access level defined by cartridge - var/obj/item/weapon/disk/data/cartridge/cartridge = null //current cartridge - var/datum/computer/file/pda_program/active_program = null - var/datum/computer/file/pda_program/os/host_program = null - var/datum/computer/file/pda_program/scan/scan_program = null - var/obj/item/weapon/disk/data/fixed_disk/hd = null - var/fon = 0 //Is the flashlight function on? - var/f_lum = 3 //Luminosity for the flashlight function -// var/datum/data/record/active1 = null //General -// var/datum/data/record/active2 = null //Medical -// var/datum/data/record/active3 = null //Security -// var/obj/item/weapon/integrated_uplink/uplink = null //Maybe replace uplink with some remote ~syndicate~ server - var/frequency = 1149 - var/datum/radio_frequency/radio_connection - - var/setup_default_cartridge = null //Cartridge contains job-specific programs - var/setup_drive_size = 24.0 //PDAs don't have much work room at all, really. - var/setup_system_os_path = /datum/computer/file/pda_program/os/main_os //Needs an operating system to...operate!! - - -/obj/item/device/pda2/pickup(mob/user) - if (src.fon) - src.sd_SetLuminosity(0) - user.sd_SetLuminosity(user.luminosity + src.f_lum) - -/obj/item/device/pda2/dropped(mob/user) - if (src.fon) - user.sd_SetLuminosity(user.luminosity - src.f_lum) - src.sd_SetLuminosity(src.f_lum) - -/obj/item/device/pda2/New() - ..() - spawn(5) - src.hd = new /obj/item/weapon/disk/data/fixed_disk(src) - src.hd.file_amount = src.setup_drive_size - src.hd.name = "Minidrive" - src.hd.title = "Minidrive" - - if(src.setup_system_os_path) - src.host_program = new src.setup_system_os_path - - src.hd.file_amount = max(src.hd.file_amount, src.host_program.size) - - src.host_program.transfer_holder(src.hd) - - if(radio_controller) - radio_controller.add_object(src, frequency) - - - if (src.default_cartridge) - src.cartridge = new src.setup_default_cartridge(src) -// if(src.owner) -// processing_items.Add(src) - -/obj/item/device/pda2/attack_self(mob/user as mob) - user.machine = src - - var/dat = "Personal Data Assistant" - - dat += "Close" - - if (!src.owner) - if(src.cartridge) - dat += " | Eject [src.cartridge]" - dat += "
Warning: No owner information entered. Please swipe card.

" - dat += "Retry" - else - if(src.active_program) - dat += src.active_program.return_text() - else - if(src.host_program) - src.run_program(src.host_program) - dat += src.active_program.return_text() - else - if(src.cartridge) - dat += " | Eject [src.cartridge]
" - dat += "
Fatal Error 0x17
" - dat += "No System Software Loaded
" - //To-do: System recovery shit (maybe have a dedicated computer for this kind of thing) - - - user << browse(dat,"window=pda2") - onclose(user,"pda2") - return - -/obj/item/device/pda2/Topic(href, href_list) - ..() - - if (usr.contents.Find(src) || usr.contents.Find(src.master) || (istype(src.loc, /turf) && get_dist(src, usr) <= 1)) - if (usr.stat || usr.restrained()) - return - - src.add_fingerprint(usr) - usr.machine = src - - - if(href_list["return_to_host"]) - if(src.host_program) - src.active_program = src.host_program - src.host_program = null - - else if (href_list["eject_cart"]) - src.eject_cartridge() - - else if (href_list["refresh"]) - src.updateSelfDialog() - - else if (href_list["close"]) - usr << browse(null, "window=pda2") - usr.machine = null - - src.updateSelfDialog() - return - -/obj/item/device/pda2/attackby(obj/item/weapon/C as obj, mob/user as mob) - if (istype(C, /obj/item/weapon/disk/data/cartridge) && isnull(src.cartridge)) - user.drop_item() - C.loc = src - user << "\blue You insert [C] into [src]." - src.cartridge = C - src.updateSelfDialog() - - else if (istype(C, /obj/item/weapon/card/id) && !src.owner && C:registered_name) - src.owner = C:registered_name - src.name = "PDA-[src.owner]" - user << "\blue Card scanned." - src.updateSelfDialog() - -/obj/item/device/pda2/receive_signal(datum/signal/signal) - if(!signal || signal.encryption || !src.owner) return - - if(signal.data["tag"] && signal.data["tag"] != "\ref[src]") return - - if(src.host_program) - src.host_program.receive_signal(signal) - - if(src.active_program && (src.active_program != src.host_program)) - src.host_program.receive_signal(signal) - - return - -/obj/item/device/pda2/attack(mob/M as mob, mob/user as mob) - if(src.scan_program) - return - else - ..() - -/obj/item/device/pda2/afterattack(atom/A as mob|obj|turf|area, mob/user as mob) - var/scan_dat = null - if(src.scan_program && istype(src.scan_program)) - scan_dat = src.scan_program.scan_atom(A) - - if(scan_dat) - A.visible_message("\red [user] has scanned [A]!") - user.show_message(scan_dat, 1) - - return - - -/obj/item/device/pda2/proc - - post_signal(datum/signal/signal,var/newfreq) - if(!signal) - return - var/freq = newfreq - if(!freq) - freq = src.frequency - - signal.source = src - - var/datum/radio_frequency/frequency = radio_controller.return_frequency(freq) - - signal.transmission_method = TRANSMISSION_RADIO - if(frequency) - return frequency.post_signal(src, signal) - else - del(signal) - - eject_cartridge() - if(src.cartridge) - var/turf/T = get_turf(src) - - if(src.active_program && (src.active_program.holder == src.cartridge)) - src.active_program = null - - if(src.host_program && (src.host_program.holder == src.cartridge)) - src.host_program = null - - if(src.scan_program && (src.scan_program.holder == src.cartridge)) - src.scan_program = null - - src.cartridge.loc = T - src.cartridge = null - - return - - //Toggle the built-in flashlight - toggle_light() - src.fon = (!src.fon) - - if (ismob(src.loc)) - if (src.fon) - src.loc.sd_SetLuminosity(src.loc.luminosity + src.f_lum) - else - src.loc.sd_SetLuminosity(src.loc.luminosity - src.f_lum) - else - src.sd_SetLuminosity(src.fon * src.f_lum) - - src.updateSelfDialog() - - display_alert(var/alert_message) //Add alert overlay and beep - if (alert_message) - playsound(src.loc, 'sound/machines/twobeep.ogg', 50, 1) - for (var/mob/O in hearers(3, src.loc)) - O.show_message(text("\icon[src] *[alert_message]*")) - - src.overlays.Cut() - src.overlays += image('icons/obj/pda.dmi', "pda-r") - return - - run_program(datum/computer/file/pda_program/program) - if((!program) || (!program.holder)) - return 0 - - if(!(program.holder in src)) - // world << "Not in src" - program = new program.type - program.transfer_holder(src.hd) - - if(program.master != src) - program.master = src - - if(!src.host_program && istype(program, /datum/computer/file/pda_program/os)) - src.host_program = program - - if(istype(program, /datum/computer/file/pda_program/scan)) - if(program == src.scan_program) - src.scan_program = null - else - src.scan_program = program - return 1 - - src.active_program = program - return 1 - - delete_file(datum/computer/file/file) - //world << "Deleting [file]..." - if((!file) || (!file.holder) || (file.holder.read_only)) - //world << "Cannot delete :(" - return 0 - - //Don't delete the running program you jerk - if(src.active_program == file || src.host_program == file) - src.active_program = null - - //world << "Now calling del on [file]..." - del(file) - return 1 \ No newline at end of file diff --git a/code/unused/pda2/record_progs.dm b/code/unused/pda2/record_progs.dm deleted file mode 100644 index 2ea856c93e2..00000000000 --- a/code/unused/pda2/record_progs.dm +++ /dev/null @@ -1,181 +0,0 @@ -//CONTENTS: -//Generic records -//Security records -//Medical records - - -/datum/computer/file/pda_program/records - var/mode = 0 - var/datum/data/record/active1 = null //General - var/datum/data/record/active2 = null //Security/Medical/Whatever - -//To-do: editing arrest status/etc from pda. -/datum/computer/file/pda_program/records/security - name = "Security Records" - size = 12.0 - - return_text() - if(..()) - return - - var/dat = src.return_text_header() - - switch(src.mode) - if(0) - dat += "

Security Record List

" - - for (var/datum/data/record/R in data_core.general) - dat += "[R.fields["id"]]: [R.fields["name"]]
" - - dat += "
" - - if(1) - - dat += "

Security Record

" - - dat += "
Back
" - - if (istype(src.active1, /datum/data/record) && data_core.general.Find(src.active1)) - dat += "Name: [src.active1.fields["name"]] ID: [src.active1.fields["id"]]
" - dat += "Sex: [src.active1.fields["sex"]]
" - dat += "Age: [src.active1.fields["age"]]
" - dat += "Fingerprint: [src.active1.fields["fingerprint"]]
" - dat += "Physical Status: [src.active1.fields["p_stat"]]
" - dat += "Mental Status: [src.active1.fields["m_stat"]]
" - else - dat += "Record Lost!
" - - dat += "
" - - dat += "

Security Data

" - if (istype(src.active2, /datum/data/record) && data_core.security.Find(src.active2)) - dat += "Criminal Status: [src.active2.fields["criminal"]]
" - - dat += "Minor Crimes: [src.active2.fields["mi_crim"]]
" - dat += "Details: [src.active2.fields["mi_crim"]]

" - - dat += "Major Crimes: [src.active2.fields["ma_crim"]]
" - dat += "Details: [src.active2.fields["ma_crim_d"]]

" - - dat += "Important Notes:
" - dat += "[src.active2.fields["notes"]]" - else - dat += "Record Lost!
" - - dat += "
" - - return dat - - Topic(href, href_list) - if(..()) - return - - if(href_list["mode"]) - var/newmode = text2num(href_list["mode"]) - src.mode = max(newmode, 0) - - else if(href_list["select_rec"]) - var/datum/data/record/R = locate(href_list["select_rec"]) - var/datum/data/record/S = locate(href_list["select_rec"]) - - if (data_core.general.Find(R)) - for (var/datum/data/record/E in data_core.security) - if ((E.fields["name"] == R.fields["name"] || E.fields["id"] == R.fields["id"])) - S = E - break - - src.active1 = R - src.active2 = S - - src.mode = 1 - - src.master.add_fingerprint(usr) - src.master.updateSelfDialog() - return - -/datum/computer/file/pda_program/records/medical - name = "Medical Records" - size = 8.0 - - return_text() - if(..()) - return - - var/dat = src.return_text_header() - - switch(src.mode) - if(0) - - dat += "

Medical Record List

" - for (var/datum/data/record/R in data_core.general) - dat += "[R.fields["id"]]: [R.fields["name"]]
" - dat += "
" - - if(1) - - dat += "

Medical Record

" - - dat += "
Back
" - - if (istype(src.active1, /datum/data/record) && data_core.general.Find(src.active1)) - dat += "Name: [src.active1.fields["name"]] ID: [src.active1.fields["id"]]
" - dat += "Sex: [src.active1.fields["sex"]]
" - dat += "Age: [src.active1.fields["age"]]
" - dat += "Fingerprint: [src.active1.fields["fingerprint"]]
" - dat += "Physical Status: [src.active1.fields["p_stat"]]
" - dat += "Mental Status: [src.active1.fields["m_stat"]]
" - else - dat += "Record Lost!
" - - dat += "
" - - dat += "

Medical Data

" - if (istype(src.active2, /datum/data/record) && data_core.medical.Find(src.active2)) - dat += "Blood Type: [src.active2.fields["b_type"]]

" - - dat += "Minor Disabilities: [src.active2.fields["mi_dis"]]
" - dat += "Details: [src.active2.fields["mi_dis_d"]]

" - - dat += "Major Disabilities: [src.active2.fields["ma_dis"]]
" - dat += "Details: [src.active2.fields["ma_dis_d"]]

" - - dat += "Allergies: [src.active2.fields["alg"]]
" - dat += "Details: [src.active2.fields["alg_d"]]

" - - dat += "Current Diseases: [src.active2.fields["cdi"]]
" - dat += "Details: [src.active2.fields["cdi_d"]]

" - - dat += "Important Notes: [src.active2.fields["notes"]]
" - else - dat += "Record Lost!
" - - dat += "
" - - return dat - - Topic(href, href_list) - if(..()) - return - - if(href_list["mode"]) - var/newmode = text2num(href_list["mode"]) - src.mode = max(newmode, 0) - - else if(href_list["select_rec"]) - var/datum/data/record/R = locate(href_list["select_rec"]) - var/datum/data/record/M = locate(href_list["select_rec"]) - - if (data_core.general.Find(R)) - for (var/datum/data/record/E in data_core.medical) - if ((E.fields["name"] == R.fields["name"] || E.fields["id"] == R.fields["id"])) - M = E - break - - src.active1 = R - src.active2 = M - - src.mode = 1 - - src.master.add_fingerprint(usr) - src.master.updateSelfDialog() - return \ No newline at end of file diff --git a/code/unused/pda2/scanners.dm b/code/unused/pda2/scanners.dm deleted file mode 100644 index 499b8679542..00000000000 --- a/code/unused/pda2/scanners.dm +++ /dev/null @@ -1,103 +0,0 @@ -//CONTENTS: -//Base scanner stuff -//Health scanner -//Forensic scanner -//Reagent scanner - -/datum/computer/file/pda_program/scan - return_text() - return src.return_text_header() - - proc/scan_atom(atom/A as mob|obj|turf|area) - - if( !A || (!src.holder) || (!src.master)) - return 1 - - if((!istype(holder)) || (!istype(master))) - return 1 - - if(!(holder in src.master.contents)) - if(master.scan_program == src) - master.scan_program = null - return 1 - - return 0 - - //Health analyzer program - health_scan - name = "Health Scan" - size = 8.0 - - scan_atom(atom/A as mob|obj|turf|area) - if(..()) - return - - var/mob/living/carbon/C = A - if(!istype(C)) - return - - var/dat = "\blue Analyzing Results for [C]:\n" - dat += "\blue \t Overall Status: [C.stat > 1 ? "dead" : "[C.health]% healthy"]\n" - dat += "\blue \t Damage Specifics: [C.getOxyLoss() > 50 ? "\red" : "\blue"][C.getOxyLoss()]-[C.getToxLoss() > 50 ? "\red" : "\blue"][C.getToxLoss()]-[C.getFireLoss() > 50 ? "\red" : "\blue"][C.getFireLoss()]-[C.getBruteLoss() > 50 ? "\red" : "\blue"][C.getBruteLoss()]\n" - dat += "\blue \t Key: Suffocation/Toxin/Burns/Brute\n" - dat += "\blue \t Body Temperature: [C.bodytemperature-T0C]°C ([C.bodytemperature*1.8-459.67]°F)" - if(C.virus) - dat += "\red \nWarning Virus Detected.\nName: [C.virus.name].\nType: [C.virus.spread].\nStage: [C.virus.stage]/[C.virus.max_stages].\nPossible Cure: [C.virus.cure]" - - return dat - - //Forensic scanner - forensic_scan - name = "Forensic Scan" - size = 8.0 - - scan_atom(atom/A as mob|obj|turf|area) - if(..()) - return - var/dat = null - - if(istype(A,/mob/living/carbon/human)) - var/mob/living/carbon/human/H = A - if (!istype(H.dna, /datum/dna) || !isnull(H.gloves)) - dat += "\blue Unable to scan [A]'s fingerprints.\n" - else - dat += "\blue [H]'s Fingerprints: [md5(H.dna.uni_identity)]\n" - if ( !(H.blood_DNA.len) ) - dat += "\blue No blood found on [H]\n" - else - for(var/i = 1, i < H.blood_DNA.len, i++) - var/list/templist = H.blood_DNA[i] - user << "\blue Blood type: [templist[2]]\nDNA: [templist[1]]" - - if (!A.fingerprints) - dat += "\blue Unable to locate any fingerprints on [A]!\n" - else - var/list/L = params2list(A:fingerprints) - dat += "\blue Isolated [L.len] fingerprints.\n" - for(var/i in L) - dat += "\blue \t [i]\n" - - return dat - - - //Reagent scanning program - reagent_scan - name = "Reagent Scan" - size = 6.0 - - scan_atom(atom/A as mob|obj|turf|area) - if(..()) - return - var/dat = null - if(!isnull(A.reagents)) - if(A.reagents.reagent_list.len > 0) - var/reagents_length = A.reagents.reagent_list.len - dat += "\blue [reagents_length] chemical agent[reagents_length > 1 ? "s" : ""] found.\n" - for (var/datum/reagent/re in A.reagents.reagent_list) - dat += "\blue \t [re] - [re.volume]\n" - else - dat = "\blue No active chemical agents found in [A]." - else - dat = "\blue No significant chemical agents found in [A]." - - return dat diff --git a/code/unused/pda2/smallprogs.dm b/code/unused/pda2/smallprogs.dm deleted file mode 100644 index 1f8a1a74bf9..00000000000 --- a/code/unused/pda2/smallprogs.dm +++ /dev/null @@ -1,207 +0,0 @@ -//Assorted small programs not worthy of their own file -//CONTENTS: -//Crew Manifest viewer -//Status display controller -//Remote signaling program -//Cargo orders monitor - -//Manifest -/datum/computer/file/pda_program/manifest - name = "Manifest" - - return_text() - if(..()) - return - - var/dat = src.return_text_header() - - dat += "

Crew Manifest

" - dat += "Entries cannot be modified from this terminal.

" - - for (var/datum/data/record/t in data_core.general) - dat += "[t.fields["name"]] - [t.fields["rank"]]
" - dat += "
" - - return dat - -//Status Display -/datum/computer/file/pda_program/status_display - name = "Status Controller" - size = 8.0 - var/message1 // For custom messages on the displays. - var/message2 - - return_text() - if(..()) - return - - var/dat = src.return_text_header() - - dat += "

Station Status Display Interlink

" - - dat += "\[ Clear \]
" - dat += "\[ Station Time \]
" - dat += "\[ Shuttle ETA \]
" - dat += "\[ Message \]" - - dat += "
" - dat += "\[ Alert: None |" - - dat += " Red Alert |" - dat += " Lockdown |" - dat += " Biohazard \]
" - - return dat - - - Topic(href, href_list) - if(..()) - return - - if(href_list["statdisp"]) - switch(href_list["statdisp"]) - if("message") - post_status("message", message1, message2) - if("alert") - post_status("alert", href_list["alert"]) - if("time") - post_status("time") - - if("setmsg1") - message1 = input("Line 1", "Enter Message Text", message1) as text|null - if (!src.master || !in_range(src.master, usr) && src.master.loc != usr) - return - - if(!(src.holder in src.master)) - return - src.master.updateSelfDialog() - - if("setmsg2") - message2 = input("Line 2", "Enter Message Text", message2) as text|null - if (!src.master || !in_range(src.master, usr) && src.master.loc != usr) - return - - if(!(src.holder in src.master)) - return - - src.master.updateSelfDialog() - else - post_status(href_list["statdisp"]) - - src.master.add_fingerprint(usr) - src.master.updateSelfDialog() - return - - proc/post_status(var/command, var/data1, var/data2) - if(!src.master) - return - - var/datum/signal/status_signal = new - status_signal.source = src.master - status_signal.transmission_method = 1 - status_signal.data["command"] = command - - switch(command) - if("message") - status_signal.data["msg1"] = data1 - status_signal.data["msg2"] = data2 - if("alert") - status_signal.data["picture_state"] = data1 - - src.post_signal(status_signal,"1435") - -//Signaler -/datum/computer/file/pda_program/signaler - name = "Signalix 5" - size = 8.0 - var/send_freq = 1457 //Frequency signal is sent at, should be kept within normal radio ranges. - var/send_code = 30 - var/last_transmission = 0 //No signal spamming etc - - return_text() - if(..()) - return - - var/dat = src.return_text_header() - - dat += "

Remote Signaling System

" - dat += {" -Send Signal
- -Frequency: -- -- -[format_frequency(send_freq)] -+ -+
-
-Code: -- -- -[send_code] -+ -+
"} - - return dat - - Topic(href, href_list) - if(..()) - return - - if (href_list["send"]) - if(last_transmission && world.time < (last_transmission + 5)) - return - last_transmission = world.time - spawn( 0 ) - var/time = time2text(world.realtime,"hh:mm:ss") - lastsignalers.Add("[time] : [usr.key] used [src.master] @ location ([src.master.loc.x],[src.master.loc.y],[src.master.loc.z]) : [format_frequency(send_freq)]/[send_code]") - - var/datum/signal/signal = new - signal.source = src - signal.encryption = send_code - signal.data["message"] = "ACTIVATE" - - src.post_signal(signal,"[send_freq]") - return - - else if (href_list["adj_freq"]) - src.send_freq = sanitize_frequency(src.send_freq + text2num(href_list["adj_freq"])) - - else if (href_list["adj_code"]) - src.send_code += text2num(href_list["adj_code"]) - src.send_code = round(src.send_code) - src.send_code = min(100, src.send_code) - src.send_code = max(1, src.send_code) - - src.master.add_fingerprint(usr) - src.master.updateSelfDialog() - return - -//Supply record monitor -/datum/computer/file/pda_program/qm_records - name = "Supply Records" - size = 8.0 - - return_text() - if(..()) - return - - var/dat = src.return_text_header() - dat += "

Supply Record Interlink

" - - dat += "
Supply shuttle
" - dat += "Location: [supply_shuttle_moving ? "Moving to station ([supply_shuttle_timeleft] Mins.)":supply_shuttle_at_station ? "Station":"Dock"]
" - dat += "Current approved orders:
    " - for(var/S in supply_shuttle_shoppinglist) - var/datum/supply_order/SO = S - dat += "
  1. [SO.object.name] approved by [SO.orderedby] [SO.comment ? "([SO.comment])":""]
  2. " - dat += "
" - - dat += "Current requests:
    " - for(var/S in supply_shuttle_requestlist) - var/datum/supply_order/SO = S - dat += "
  1. [SO.object.name] requested by [SO.orderedby]
  2. " - dat += "
Upgrade NOW to Space Parts & Space Vendors PLUS for full remote order control and inventory management." - - return dat diff --git a/code/unused/pipe.dm b/code/unused/pipe.dm deleted file mode 100644 index 2a3e0b90e19..00000000000 --- a/code/unused/pipe.dm +++ /dev/null @@ -1,1828 +0,0 @@ -// pipeline datum for storing inter-machine links -// create a pipeline - -//number of pipelines -var/linenums = 0 - -/obj/machinery/pipeline/New() - ..() - - gas = new /datum/gas_mixture() - ngas = new /datum/gas_mixture() - - gasflowlist += src - -// find the pipeline that contains the /obj/machine (including pipe) -/proc/findline(var/obj/machinery/M) - - for(var/obj/machinery/pipeline/P in plines) - - for(var/obj/machinery/O in P.nodes) - - if(M==O) - return P - - return null - -// sets the vnode1&2 terminators to the joining machines (or null) -/obj/machinery/pipeline/proc/setterm() - - //first make sure pipes are oriented correctly - - var/obj/machinery/M = null - - for(var/obj/machinery/pipes/P in nodes) - if(!M) // special case for 1st pipe - if(P.node1 && P.node1.ispipe()) - P.flip() // flip if node1 is a pipe - else - if(P.node1 != M) //other cases, flip if node1 doesn't point to previous node - P.flip() // (including if it is null) - - - M = P - - - // pipes are now ordered so that n1/n2 is in same order as pipeline list - - var/obj/machinery/pipes/P = nodes[1] // 1st node in list - vnode1 = P.node1 // n1 points to 1st machine - P = nodes[nodes.len] // last node in list - vnode2 = P.node2 // n2 points to last machine - - if(vnode1) - vnode1.buildnodes() - if(vnode2) - vnode2.buildnodes() - - return - -/* -/obj/machinery/pipeline/get_gas_moles(from) - return gas.total_moles()/capmult -*/ -/obj/machinery/pipeline/get_gas(from) - return gas - -/obj/machinery/pipeline/gas_flow() - //if(suffix == "d" && Debug) world.log << "PLF1 [gas.total_moles()] ~ [ngas.total_moles()]" - - gas.copy_from(ngas) - - //if(suffix == "d" && Debug) world.log << "PLF2 [gas.total_moles()] ~ [ngas.total_moles()]" - -/obj/machinery/pipeline/process() - /* - // heat exchange for whole pipeline - - //if(suffix=="dbgp") - // world.log << "PLP" - // Plasma() - -// var/dbg = (suffix == "d") && Debug - - //if(dbg) world.log << "PLP1 [gas.total_moles()] ~ [ngas.total_moles()]" - - if(!numnodes) - return //dividing by zero is bad okay? - - var/gtemp = ngas.temperature // cached temperature for heat exch calc - var/tot_node = ngas.total_moles() / numnodes // fraction of gas in this node - - //if(dbg) world.log << "PLHE: [gtemp] [tot_node]" - - if(tot_node>0.1) // no pipe contents, don't heat - for(var/obj/machinery/pipes/P in src.nodes) // for each segment of pipe - P.heat_exchange(ngas, tot_node, numnodes, gtemp) //, dbg) // exchange heat with its turf - if(!istype(P, /obj/machinery/pipes/heat_exch) && ((100*tot_node/P.capacity > 15000) || (gtemp > 8000)) ) - P.rupture() - //Commenting this out because it spams on endlessly - //for (var/mob/M in viewers(P)) - //M.show_message("\red The pipe has ruptured!", 3) - //so this is changed to pipe rupturing instead of explosions - //i.e. it ruptures if the pressure over 15000% - //and temperature over 8000K - //it also doesn't work on heat_exchange pipes - // now do standard gas flow proc - - - //if(dbg) world.log << "PLP2 [ngas.total_moles()]" - - var/delta_gt - - if(vnode1 && !(vnode1.stat & BROKEN)) - delta_gt = FLOWFRAC * ( vnode1.get_gas_val(src) - gas.total_moles() / capmult) - calc_delta( src, gas, ngas, vnode1, delta_gt)//, dbg) - - //if(dbg) world.log << "PLT1 [delta_gt] >> [gas.total_moles()] ~ [ngas.total_moles()]" - - flow = delta_gt - else - leak_to_turf(1) - - if(vnode2 && !(vnode2.stat & BROKEN)) - delta_gt = FLOWFRAC * ( vnode2.get_gas_val(src) - gas.total_moles() / capmult) - calc_delta( src, gas, ngas, vnode2, delta_gt)//, dbg) - - //if(dbg) world.log << "PLT2 [delta_gt] >> [gas.total_moles()] ~ [ngas.total_moles()]" - - flow -= delta_gt - else - leak_to_turf(2) - - */ //TODO: FIX - -/obj/machinery/pipeline/proc/leak_to_turf(var/port) - /* - var/turf/T - var/obj/machinery/pipes/P - var/list/ndirs - - switch(port) - if(1) - P = nodes[1] // 1st node in list - if (P==null) - T = src.loc - else - ndirs = P.get_node_dirs() - - T = get_step(P, ndirs[1]) - - - if(2) - P = nodes[nodes.len] // last node in list - if (P==null) - T = src.loc - else - - ndirs = P.get_node_dirs() - T = get_step(P, ndirs[2]) - if (T==null) - return - if(T.density) - return - - flow_to_turf(gas, ngas, T) - */ //TODO: FIX - - -// build the pipelines (THIS HAPPENS ONCE!) -/proc/makepipelines() - - for(var/obj/machinery/pipes/P in machines) // look for a pipe - - if(!P.plnum) // if not already part of a line - P.buildnodes(++linenums) // add it, and spread to all connected pipes - - //world.log<<"Line #[linecount] started at [P] ([P.x],[P.y],[P.z])" - - for(var/L = 1 to linenums) // for count of lines found - var/obj/machinery/pipeline/PL = new() // make a pipeline virtual object - PL.name = "pipeline #[L]" - plines += PL // and add it to the list - PL.linenumber = L - - - - for(var/obj/machinery/pipes/P in machines) // look for pipes - - if(P.termination) // true if pipe is terminated (ends in blank or a machine) - var/obj/machinery/pipeline/PL = plines[P.plnum] // get the pipeline from the pipe's pl-number - - var/list/pipes = pipelist(null, P) // get a list of pipes from P until terminated - - PL.nodes = pipes // pipeline is this list of nodes - PL.numnodes = pipes.len // with this many nodes - PL.capmult = PL.numnodes+1 // with this flow multiplier - - - - for(var/obj/machinery/pipes/P in machines) // all pipes - P.setline() // set the pipeline object for this pipe - - if(P.tag == "dbg") //add debug tag to line containing debug pipe - P.parent.tag = "dbg" - - if(P.suffix == "dbgpp") //add debug tag to line containing debug pipe - P.parent.suffix = "dbgp" - - if(P.suffix == "d") //add debug tag to line containing debug pipe - P.parent.suffix = "d" - - - for(var/obj/machinery/M in machines) // for all machines - if(M.p_dir) // which are pipe-connected - if(!M.ispipe()) // is not a pipe itself - M.buildnodes() // build the nodes, setting the links to the virtual pipelines - // also sets the vnodes for the pipelines - - for(var/obj/machinery/pipeline/PL in plines) // for all lines - PL.setterm() // orient the pipes and set the pipeline vnodes to the terminating machines - -// return a list of pipes (not including terminating machine) - -/proc/pipelist(var/obj/machinery/source, var/obj/machinery/startnode) - - var/list/L = list() - - var/obj/machinery/node = startnode - var/obj/machinery/prev = source - var/obj/machinery/newnode - - while(node) - L += node - newnode = node.next(prev) - prev = node - - if(newnode && newnode.ispipe()) - node = newnode - else - break - - return L - -// new pipes system - -// flip the nodes of a pipe -/obj/machinery/pipes/proc/flip() - var/obj/machinery/tempnode = node1 - node1 = node2 - node2 = tempnode - return - - -// return the next pipe in the node chain -/obj/machinery/pipes/next(var/obj/machinery/from) - - if(from == null) // if from null, then return the next actual pipe - if(node1 && node1.ispipe() ) - return node1 - if(node2 && node2.ispipe() ) - return node2 - return null // else return null if no real pipe connected - - else if(from == node1) // otherwise, return the node opposite the incoming one - return node2 - else - return node1 - - -// set the pipeline obj from the pl-number and global list of pipelines - -/obj/machinery/pipes/setline() - src.parent = plines[plnum] - return - -// returns the pipeline that this line is in - -/obj/machinery/pipes/getline() - return parent - -/obj/machinery/pipes/orient_pipe(P as obj) - if (!( src.node1 )) - src.node1 = P - else - if (!( src.node2 )) - src.node2 = P - else - return 0 - return 1 - -// returns a list of dir1, dir2 & p_dir for a pipe - -/obj/machinery/pipes/proc/get_dirs() - var/b1 - var/b2 - - for(var/d in cardinal) - if(p_dir & d) - if(!b1) - b1 = d - else if(!b2) - b2 = d - - return list(b1, b2, p_dir) - -// returns a list of the directions of a pipe, matched to nodes (if present) - -/obj/machinery/pipes/proc/get_node_dirs() - var/list/dirs = get_dirs() - - - if(!node1 && !node2) // no nodes - just return the standard dirs - return dirs // note extra p_dir on end of list is unimportant - else - if(node1) - var/d1 = get_dir(src, node1) // find the direction of node1 - if(d1==dirs[1]) // if it matches - return dirs // then dirs list is correct - else - return list(dirs[2], dirs[1]) // otherwise return the list swapped - - else // node2 must be valid - var/d2 = get_dir(src, node2) // direction of node2 - if(d2==dirs[2]) // matches - return dirs // dirs list is correct - else - return list(dirs[2], dirs[1]) // otherwise swap order - - -/obj/machinery/pipes/proc/update() - - var/turf/T = src.loc - - var/list/dirs = get_dirs() - - var/is = "[dirs[3]]" - - if(stat & BROKEN) - is += "-b" - - if ((src.level == 1 && isturf(src.loc) && T.intact)) - src.invisibility = 101 - is += "-f" - - else - src.invisibility = 0 - - src.icon_state = is - - if(node1 && node2) - overlays.Cut() - else if(!node1 && !node2) - overlays += image('icons/obj/pipes.dmi', "discon", FLY_LAYER, dirs[1]) - overlays += image('icons/obj/pipes.dmi', "discon", FLY_LAYER, dirs[2]) - else if(!node1) - var/d2 = get_dir(src, node2) - if(dirs[1] == d2) - overlays += image('icons/obj/pipes.dmi', "discon", FLY_LAYER, dirs[2]) - else - overlays += image('icons/obj/pipes.dmi', "discon", FLY_LAYER, dirs[1]) - else if(!node2) - var/d1 = get_dir(src, node1) - if(dirs[1] == d1) - overlays += image('icons/obj/pipes.dmi', "discon", FLY_LAYER, dirs[2]) - else - overlays += image('icons/obj/pipes.dmi', "discon", FLY_LAYER, dirs[1]) - - - return - -/obj/machinery/pipes/hide(var/i) - update() - - //its lazy right now but wait until after my exams and I'll redo it. - //redid it, oh shit - -/obj/machinery/pipes/proc/rupture() - - stat |= BROKEN - update() - -/obj/machinery/pipes/Del() - stat |= BROKEN - update() - ..() - - -/obj/machinery/pipes/attackby(obj/item/weapon/W as obj, mob/user as mob) - - if (istype(W, /obj/item/weapon/weldingtool) && W:welding) - if(!(stat & BROKEN)) - return - if (W:weldfuel < 2) - user << "\blue You need more welding fuel to complete this task." - return - W:weldfuel -= 2 - stat &= ~BROKEN - update() - for (var/mob/M in viewers(src)) - M.show_message("\red The pipe has been mended by [user.name] with the weldingtool.", 3, "\red You hear welding.", 2) - return - -/obj/machinery/pipes/ex_act(severity) - switch(severity) - if(1.0) - del(src) - return - if(2.0) - stat |= BROKEN - update() - if (prob(50)) - del(src) - return - if(3.0) - if(prob(75)) - stat |= BROKEN - update() - if (prob(25)) - del(src) - return - else - return -/* - var/strength = (((plasma + oxygen/2.0) / 1600000.0) * sqrt(temp) ) / 10 - message_admins("CODER: Pipe explosion strength: [strength], Temperature: [temp], Plasma: [plasma], Oxygen: [oxygen]") - //lets say hypothetically it uses up 9/10 of its energy in bursting the pipe - - if (strength < 773.0) - var/turf/T = get_turf(src.loc) - T.poison += plasma - T.firelevel = T.poison - T.res_vars() - - //if ((src.gas.temperature > (450+T0C) && src.gas.plasma == 1600000.0)) - - if (strength > (450+T0C)) - var/turf/sw = locate(max(T.x - 4, 1), max(T.y - 4, 1), T.z) - var/turf/ne = locate(min(T.x + 4, world.maxx), min(T.y + 4, world.maxy), T.z) - defer_powernet_rebuild = 1 - - for(var/turf/U in block(sw, ne)) - var/zone = 4 - if ((U.y <= (T.y + 1) && U.y >= (T.y - 1) && U.x <= (T.x + 2) && U.x >= (T.x - 2)) ) - zone = 3 - if ((U.y <= (T.y + 1) && U.y >= (T.y - 1) && U.x <= (T.x + 1) && U.x >= (T.x - 1) )) - zone = 2 - for(var/atom/A in U) - A.ex_act(zone) - //Foreach goto(342) - U.ex_act(zone) - U.buildlinks() - //Foreach goto(170) - defer_powernet_rebuild = 0 - makepowernets() - - else - //if ((src.gas.temperature > (300+T0C) && src.gas.plasma == 1600000.0)) - if (strength > (300+T0C)) - var/turf/sw = locate(max(T.x - 4, 1), max(T.y - 4, 1), T.z) - var/turf/ne = locate(min(T.x + 4, world.maxx), min(T.y + 4, world.maxy), T.z) - defer_powernet_rebuild = 1 - - for(var/turf/U in block(sw, ne)) - var/zone = 4 - if ((U.y <= (T.y + 2) && U.y >= (T.y - 2) && U.x <= (T.x + 2) && U.x >= (T.x - 2)) ) - zone = 3 - for(var/atom/A in U) - A.ex_act(zone) - //Foreach goto(598) - U.ex_act(zone) - U.buildlinks() - //Foreach goto(498) - defer_powernet_rebuild = 0 - makepowernets() - - //src.master = null - //SN src = null - del(src) - return - - var/turf/T = src.loc - while(!( istype(T, /turf) )) - T = T.loc - - for(var/mob/M in range(T)) - flick("flash", M.flash) - //Foreach goto(732) - //var/m_range = 2 - - var/m_range = round(strength / 387) - for(var/obj/machinery/atmoalter/canister/C in range(2, T)) - if (!( C.destroyed )) - if (C.gas.plasma >= 35000) - C.destroyed = 1 - m_range++ - - //Foreach goto(776) - var/min = m_range - var/med = m_range * 2 - var/max = m_range * 3 - var/u_max = m_range * 4 - - var/turf/sw = locate(max(T.x - u_max, 1), max(T.y - u_max, 1), T.z) - var/turf/ne = locate(min(T.x + u_max, world.maxx), min(T.y + u_max, world.maxy), T.z) - - defer_powernet_rebuild = 1 - - for(var/turf/U in block(sw, ne)) - - var/zone = 4 - if ((U.y <= (T.y + max) && U.y >= (T.y - max) && U.x <= (T.x + max) && U.x >= (T.x - max) )) - zone = 3 - if ((U.y <= (T.y + med) && U.y >= (T.y - med) && U.x <= (T.x + med) && U.x >= (T.x - med) )) - zone = 2 - if ((U.y <= (T.y + min) && U.y >= (T.y - min) && U.x <= (T.x + min) && U.x >= (T.x - min) )) - zone = 1 - for(var/atom/A in U) - A.ex_act(zone) - //Foreach goto(1217) - U.ex_act(zone) - U.buildlinks() - //U.mark(zone) - - //Foreach goto(961) - //src.master = null - defer_powernet_rebuild = 0 - makepowernets() - - //SN src = null - del(src) - return -*/ -/* -/obj/machinery/pipes/process() -*/ - -/obj/machinery/pipes/New() - - ..() - - if(istype(src, /obj/machinery/pipes/heat_exch)) - h_dir = text2num(icon_state) - else - p_dir = text2num(icon_state) - - -/obj/machinery/pipes/ispipe() // return true since this is a pipe - return 1 - -/obj/machinery/pipes/buildnodes(var/linenum) - - var/list/dirs = get_dirs() - - node1 = get_machine(level, src.loc, dirs[1]) - node2 = get_machine(level, src.loc, dirs[2]) - - if(plnum) - return - - update() - - plnum = linenum - - termination = 0 - - if(node1 && node1.ispipe() ) - - node1.buildnodes(linenum) - else - termination++ - - if(node2 && node2.ispipe() ) - node2.buildnodes(linenum) - else - termination++ - - -/obj/machinery/pipes/heat_exch/get_dirs() - var/b1 - var/b2 - - for(var/d in cardinal) - if(h_dir & d) - if(!b1) - b1 = d - else if(!b2) - b2 = d - - return list(b1, b2, h_dir) - -/obj/machinery/pipes/heat_exch/buildnodes(var/linenum) - - src.level = 2 // h/e pipe cannot be put underfloor - - var/list/dirs = get_dirs() - - node1 = get_he_machine(level, src.loc, dirs[1]) - node2 = get_he_machine(level, src.loc, dirs[2]) - - if(plnum) - return - - update() - - plnum = linenum - - termination = 0 - - if(node1 && node1.ispipe() ) - - node1.buildnodes(linenum) - else - termination++ - - if(node2 && node2.ispipe() ) - node2.buildnodes(linenum) - else - termination++ - - -/obj/machinery/pipes/proc/heat_exchange(var/datum/gas_mixture/gas, var/tot_node, var/numnodes, var/temp, var/dbg=0) - -/* var/turf/T = src.loc // turf location of pipe - if(T.density) return - if(istype(src, /obj/machinery/pipes/flexipipe)) return - - if( level != 1) // no heat exchange for under-floor pipes - if(istype(T,/turf/space)) // heat exchange less efficient in space (no conduction) - gas.temperature += ( T.temp - temp) / (3.0 * insulation * numnodes) - else - - // if(dbg) world.log << "PHE: ([x],[y]) [T.temp]-> \..." - var/delta_T = (T.temp - temp) / (insulation) // normal turf - - gas.temperature += delta_T / numnodes // heat the pipe due to turf temperature - - /* - if(abs(delta_T*tot_node/T.total_moles()) > 1) - world.log << "Turf [T] at [T.x],[T.y]: gt=[temp] tt=[T.temp]" - world.log << "dT = [delta_T] tn=[tot_node] ttg=[T.total_moles()] tt-=[delta_T*tot_node/T.total_moles()]" - - */ - var/tot_turf = max(1, T.total_moles()) - T.temp -= delta_T*min(10,tot_node/tot_turf) // also heat the turf due to pipe temp - // clamp max temp change to prevent thermal runaway - // if low amount of gas in turf - // if(dbg) world.log << "[T.temp] [tot_turf] #[delta_T]" - T.res_vars() // ensure turf tmp vars are updated - - else // if level 1 but in space, perform cooling anyway - exposed pipes - if(istype(T,/turf/space)) - gas.temperature += ( T.temp - temp) / (3.0 * insulation * numnodes) -*/ //TODO FIX -// finds the machine with compatible p_dir in 1 step in dir from S -/proc/get_machine(var/level, var/turf/S, mdir) - - var/flip = turn(mdir, 180) - - var/turf/T = get_step(S, mdir) - - for(var/obj/machinery/M in T.contents) - if(M.level == level) - if(M.p_dir & flip) - return M - - return null - -// finds the machine with compatible h_dir in 1 step in dir from S -/proc/get_he_machine(var/level, var/turf/S, mdir) - - var/flip = turn(mdir, 180) - - var/turf/T = get_step(S, mdir) - - for(var/obj/machinery/M in T.contents) - if(M.level == level) - if(M.h_dir & flip) - return M - - return null - -// ***** circulator - -/obj/machinery/circulator/New() - ..() - gas1 = new /datum/gas_mixture() - gas2 = new /datum/gas_mixture() - - ngas1 = new /datum/gas_mixture() - ngas2 = new /datum/gas_mixture() - - gasflowlist += src - - //gas.co2 = capacity - - updateicon() - -/obj/machinery/circulator/buildnodes() - - var/turf/TS = get_step(src, SOUTH) - var/turf/TN = get_step(src, NORTH) - - for(var/obj/machinery/M in TS) - - if(M && (M.p_dir & 1)) - node1 = M - break - - for(var/obj/machinery/M in TN) - - if(M && (M.p_dir & 2)) - node2 = M - break - - - if(node1) vnode1 = node1.getline() - - if(node2) vnode2 = node2.getline() - - -/* -/obj/machinery/circulator/verb/toggle_power() - set src in view(1) - - if(status == 1) - status = 2 - spawn(30) // 3 second delay for slow-off - if(status == 2) - status = 0 - updateicon() - else if(status == 0) - status =1 - - updateicon() - - - -/obj/machinery/circulator/verb/set_rate(r as num) - set src in view(1) - rate = r/100.0*capacity -*/ - -/obj/machinery/circulator/proc/control(var/on, var/prate) - - rate = prate/100*capacity - - if(status == 1) - if(!on) - status = 2 - spawn(30) - if(status == 2) - status = 0 - updateicon() - else if(status == 0) - if(on) - status = 1 - else // status ==2 - if(on) - status = 1 - - updateicon() - - -/obj/machinery/circulator/proc/updateicon() - - if(stat & NOPOWER) - icon_state = "circ[side]-p" - return - - var/is - switch(status) - if(0) - is = "off" - if(1) - is = "run" - if(2) - is = "slow" - - icon_state = "circ[side]-[is]" - - - -/obj/machinery/circulator/power_change() - ..() - updateicon() - -/* -/obj/machinery/circulator/receive_gas(var/obj/substance/gas/t_gas as obj, from as obj, amount) - - - if(from != src.node1) - return - - amount = min(receive_amount(src), amount) - - - //src.gas.transfer_from(t_gas, amount) - - return -*/ -/obj/machinery/circulator/gas_flow() - - gas1.copy_from(ngas1) - gas2.copy_from(ngas2) - -/obj/machinery/circulator/process() - /* - // if operating, pump from resv1 to resv2 - - if(! (stat & NOPOWER) ) // only do circulator step if powered; still do rest of gas flow at all times - if(status==1 || status==2) - gas2.transfer_from(gas1, status==1? rate : rate/2) - use_power(rate/capacity * 100) - ngas1.copy_from(gas1) - ngas2.copy_from(gas2) - - - // now do standard process - - var/delta_gt - - if(vnode1) - delta_gt = FLOWFRAC * ( vnode1.get_gas_val(src) - gas1.total_moles() / capmult) - calc_delta( src, gas1, ngas1, vnode1, delta_gt) - else - leak_to_turf(1) - - if(vnode2) - delta_gt = FLOWFRAC * ( vnode2.get_gas_val(src) - gas2.total_moles() / capmult) - calc_delta( src, gas2, ngas2, vnode2, delta_gt) - else - leak_to_turf(2)*/ //TODO FIX - -/obj/machinery/circulator/proc/leak_to_turf(var/port) - /* - var/turf/T - - switch(port) - if(1) - T = get_step(src, SOUTH) - if(2) - T = get_step(src, NORTH) - - if(T.density) - T = src.loc - if(T.density) - return - - switch(port) - if(1) - flow_to_turf(gas1, ngas1, T) - if(2) - flow_to_turf(gas2, ngas2, T) - - - // do leak - */ //TODO: FIX - -/* -/obj/machinery/circulator/get_gas_moles(from) - if(from == vnode1) - return gas1.total_moles()/capmult - else - return gas2.total_moles()/capmult -*/ //TODO: FIX -/obj/machinery/circulator/get_gas(from) - if(from == vnode1) - return gas1 - else - return gas2 - -/* -/obj/machinery/connector/New() - ..() - - gas = new /datum/gas_mixture() - ngas = new /datum/gas_mixture() - //agas = new/obj/substance/gas() - - gasflowlist += src - spawn(5) - var/obj/machinery/atmoalter/A = locate(/obj/machinery/atmoalter, src.loc) - - if(A && A.c_status != 0) - connected = A - A.anchored = 1 - - - - -/obj/machinery/connector/buildnodes() - var/turf/T = get_step(src.loc, src.dir) - var/fdir = turn(src.p_dir, 180) - - for(var/obj/machinery/M in T) - if(M.p_dir & fdir) - src.node = M - break - - if(node) vnode = node.getline() - - - return - - - -/obj/machinery/connector/examine(mob/user) - if(..(user, 1)) - if(connected) - usr << "It is connected to \an [connected.name]." - else - usr << "It is unconnected." - - - -/obj/machinery/connector/get_gas_val(from) - return gas.total_moles()/capmult - -/obj/machinery/connector/get_gas(from) - return gas - - -/obj/machinery/connector/gas_flow() - -// var/dbg = (suffix == "d") && Debug - //if(dbg) world.log << "CF0: ngas=[ngas.total_moles()]" - - //ngas.transfer_from(agas, -1) - - //if(dbg) world.log << "CF1: ngas=[gas.total_moles()]" - gas.copy_from(ngas) - //if(dbg) world.log << "CF2: gas=[gas.total_moles()]" - flag = 0 - -/obj/machinery/connector/process() - //if(suffix=="dbgp") - // world.log << "CP" - // Plasma() - - var/delta_gt -// var/dbg = (suffix == "d") && Debug - - //if(dbg) world.log << "C[tag]P: [gas.total_moles()] ~ [ngas.total_moles()]" - //if(dbg && connected) world.log << "C[tag]PC: [connected.gas.total_moles()]" - - if(vnode) - - delta_gt = FLOWFRAC * ( vnode.get_gas_val(src) - gas.total_moles() / capmult) - //if(dbg) world.log << "C[tag]P0: [delta_gt]" - - //var/obj/substance/gas/vgas = vnode.get_gas(src) - - //if(dbg) world.log << "C[tag]P1: [gas.total_moles()], [ngas.total_moles()] -> [vgas.total_moles()]" - calc_delta( src, gas, ngas, vnode, delta_gt)//, dbg) - //if(dbg) world.log << "C[tag]P2: [gas.total_moles()], [ngas.total_moles()] -> [vgas.total_moles()]" - - else - leak_to_turf() - - if(connected) - var/amount - if(connected.c_status == 1) // canister set to release - - //if(dbg) world.log << "C[tag]PC1: [gas.total_moles()], [ngas.total_moles()] <- [connected.gas.total_moles()]" - amount = min(connected.c_per, capacity - gas.total_moles() ) // limit to space in connector - amount = max(0, min(amount, connected.gas.total_moles() ) ) // limit to amount in canister, or 0 - //if(dbg) world.log << "C[tag]PC2: a=[amount]" - //var/ng = ngas.total_moles() - ngas.transfer_from( connected.gas, amount) - //if(dbg) world.log <<"[ngas.total_moles()-ng] from siph to connector" - //if(dbg) world.log << "C[tag]PC3: [gas.total_moles()], [ngas.total_moles()] <- [connected.gas.total_moles()]" - else if(connected.c_status == 2) // canister set to accept - - amount = min(connected.c_per, connected.gas.maximum - connected.gas.total_moles()) //limit to space in canister - amount = max(0, min(amount, gas.total_moles() ) ) // limit to amount in connector, or 0 - - connected.gas.transfer_from( ngas, amount) - - //flag = 1 - - //if(suffix=="dbgp") - // world.log << "CP" - // Plasma() -*/ //TODO: FIX - - -/obj/machinery/connector/proc/leak_to_turf() - /* - //var/dbg = (tag == "dbg") && Debug - - var/turf/T = get_step(src, dir) - if(T && !T.density) - - //if(dbg) world.log << "CLT1: [gas.tostring()] ~ [ngas.tostring()]\nTg = [T.tostring()]" - - - flow_to_turf(gas, ngas, T) - - //if(dbg) world.log << "CLT2: [gas.tostring()] ~ [ngas.tostring()]\nTg = [T.tostring()]" - */ - - -/obj/machinery/junction/New() - ..() - gas = new/datum/gas_mixture(src) - ngas = new/datum/gas_mixture() - gasflowlist += src - - h_dir = dir // the h/e pipe is in obj dir - p_dir = turn(dir, 180) // the reg pipe is in opposite dir - - -/obj/machinery/junction/buildnodes() - - var/turf/T = src.loc - - node1 = get_he_machine(level, T, h_dir ) // the h/e pipe - - node2 = get_machine(level, T , p_dir ) // the regular pipe - - if(node1) vnode1 = node1.getline() - if(node2) vnode2 = node2.getline() - - return - - -/obj/machinery/junction/gas_flow() - - //var/dbg - //if(tag == "dbg1") - // dbg = 1 - //else if(tag == "dbg2") - // dbg = 2 - - //if(dbg) world.log << "J[dbg]F1: [gas.tostring()] ~ [ngas.tostring()]" - - - gas.copy_from(ngas) - - //if(dbg) world.log << "J[dbg]F2: [gas.tostring()] ~ [ngas.tostring()]" - -/obj/machinery/junction/process() -/* - //var/dbg - //if(tag == "dbg1") - // dbg = 1 - //else if(tag == "dbg2") - // dbg = 2 - - //if(dbg) world.log << "J[dbg]P: [gas.tostring()] ~ [ngas.tostring()]" - - var/delta_gt - - if(vnode1) - delta_gt = FLOWFRAC * ( vnode1.get_gas_val(src) - gas.total_moles() / capmult) - calc_delta( src, gas, ngas, vnode1, delta_gt) //, dbg) - - // if(dbg) world.log << "J[dbg]T1: [delta_gt] >> [gas.tostring()] ~ [ngas.tostring()]" - else - leak_to_turf(1) - - if(vnode2) - delta_gt = FLOWFRAC * ( vnode2.get_gas_val(src) - gas.total_moles() / capmult) - calc_delta( src, gas, ngas, vnode2, delta_gt) //, dbg) - - // if(dbg) world.log << "J[dbg]T2: [delta_gt] >> [gas.tostring()] ~ [ngas.tostring()]" - else - leak_to_turf(2) -*/ //TODO: FIX - -/obj/machinery/junction/get_gas_val(from) - return gas.total_moles()/capmult - -/obj/machinery/junction/get_gas(from) - return gas - -/obj/machinery/junction/proc/leak_to_turf(var/port) - - var/turf/T - - - switch(port) - if(1) - T = get_step(src, dir) - if(2) - T = get_step(src, turn(dir, 180) ) - - if(T.density) - T = src.loc - if(T.density) - return - - flow_to_turf(gas, ngas, T) - - -/obj/machinery/vent/New() - - ..() - p_dir = dir - gas = new /datum/gas_mixture(src) - ngas = new /datum/gas_mixture() - gasflowlist += src - - -/obj/machinery/vent/buildnodes() - - var/turf/T = get_step(src.loc, src.dir) - var/fdir = turn(src.p_dir, 180) - - for(var/obj/machinery/M in T) - if(M.p_dir & fdir) - src.node = M - break - - if(node) vnode = node.getline() - - return - - -/obj/machinery/vent/get_gas_val(from) - return gas.total_moles()/2 - -/obj/machinery/vent/get_gas(from) - return gas - - -/obj/machinery/vent/gas_flow() - -// var/dbg = (suffix=="d") && Debug - //if(dbg) world.log << "V[tag]F1: [gas.total_moles()] ~ [ngas.total_moles()]" - gas.copy_from(ngas) - //if(dbg) world.log << "V[tag]F2: [gas.total_moles()] ~ [ngas.total_moles()]" - -/obj/machinery/vent/process() - /* - -// var/dbg = (suffix=="d") && Debug - //if(dbg) world.log << "V[tag]T1: [gas.total_moles()] ~ [ngas.total_moles()]" - - //if(suffix=="dbgp") - // world.log << "VP" - // Plasma() - - var/delta_gt - - var/turf/T = src.loc - - delta_gt = FLOWFRAC * (gas.total_moles() / capmult) - //var/ng = ngas.total_moles() - ngas.turf_add(T, delta_gt) - - //if(dbg) world.log << "[num2text(ng-ngas.total_moles(),10)] from vent to turf" - //if(dbg) world.log << "V[tag]T2: [gas.total_moles()] ~ [ngas.total_moles()]" - - if(vnode) - - //if(dbg) world.log << "V[tag]N1: [gas.total_moles()] ~ [ngas.total_moles()]" - - delta_gt = FLOWFRAC * ( vnode.get_gas_val(src) - gas.total_moles() / capmult) - - calc_delta( src, gas, ngas, vnode, delta_gt)//, dbg) - - //if(dbg) world.log << "V[tag]N2: [gas.total_moles()] ~ [ngas.total_moles()]" - - else - leak_to_turf() - */ //TODO: FIX - - -/obj/machinery/vent/proc/leak_to_turf() -// note this is a leak from the node, not the vent itself -// thus acts as a link between the vent turf and the turf in step(dir) - - var/turf/T = get_step(src, dir) - if(T && !T.density) - flow_to_turf(gas, ngas, T) - - -// inlet - equilibrates between pipe contents and turf -// very similar to vent, except that a vent always dumps pipe gas into turf -/obj/machinery/inlet/New() - - ..() - - p_dir = dir - gas = new /datum/gas_mixture(src) - ngas = new /datum/gas_mixture() - gasflowlist += src - - -/obj/machinery/inlet/buildnodes() - - var/turf/T = get_step(src.loc, src.dir) - var/fdir = turn(src.p_dir, 180) - - for(var/obj/machinery/M in T) - if(M.p_dir & fdir) - src.node = M - break - - if(node) vnode = node.getline() - - return - - -/obj/machinery/inlet/get_gas_val(from) - return gas.total_moles()/2 - -/obj/machinery/inlet/get_gas(from) - return gas - - -/obj/machinery/inlet/gas_flow() - - gas.copy_from(ngas) - -/obj/machinery/inlet/process() - /* - //if(suffix=="dbgp") - // world.log << "VP" - // Plasma() - - var/delta_gt - - var/turf/T = src.loc - - // this is the difference between vent and inlet - - if(T && !T.density) - flow_to_turf(gas, ngas, T, dbg) // act as gas leak - - if(dbg) world.log << "I[tag]T2: [gas.total_moles()] ~ [ngas.total_moles()]" - - if(vnode) - - //if(dbg) world.log << "V[tag]N1: [gas.total_moles()] ~ [ngas.total_moles()]" - - delta_gt = FLOWFRAC * ( vnode.get_gas_val(src) - gas.total_moles() / capmult) - - calc_delta( src, gas, ngas, vnode, delta_gt)//, dbg) - - //if(dbg) world.log << "V[tag]N2: [gas.total_moles()] ~ [ngas.total_moles()]" - - else - leak_to_turf() - */ //TODO: FIX - - - -/obj/machinery/inlet/proc/leak_to_turf() -// note this is a leak from the node, not the inlet itself -// thus acts as a link between the inlet turf and the turf in step(dir) - - var/turf/T = get_step(src, dir) - if(T && !T.density) - flow_to_turf(gas, ngas, T) - - - -// standard proc for all machines - passed gas/ngas as arguments -// equilibrate a pipe object and a turf's gas content - -/obj/machinery/proc/flow_to_turf(var/datum/gas_mixture/sgas, var/datum/gas_mixture/sngas, var/turf/T, var/dbg = 0) -/* - if(dbg) world.log << "FTT: G=[sgas.tostring()] ~ N=[sngas.tostring()]" - if(dbg) world.log << "T=[T.tostring()]" - - - - var/t_tot = T.total_moles() * 0.2 // partial pressure of turf gas at pipe, for the moment - - var/delta_gt = FLOWFRAC * ( t_tot - sgas.total_moles() / capmult ) - - if(dbg) world.log << "FTT: dgt=[delta_gt]" - - var/datum/gas_mixture/ndelta = new() - - if(delta_gt < 0) // flow from pipe to turf - - //world.log << "FTT<0" - ndelta.set_frac(sgas, -delta_gt) // ndelta contains gas to transfer to turf - //world.log << "ND=[ndelta.tostring()]" - sngas.sub_delta(ndelta) // update new gas to remove the amount transfered - //world.log << "SN=[sngas.tostring()]" - ndelta.turf_add(T, -1) // add all of ndelta to turf - //world.log << "T=[T.tostring()]" - - //world.log << "LTT: [num2text(-delta_gt,10)] from [sgas.loc] to turf" - - - else // flow from turf to pipe - if(dbg) world.log << "FTT>0" - - sngas.turf_take(T, delta_gt) // grab gas from turf and direcly add it to the new gas - if(dbg) world.log << "SN=[sngas.tostring()]" - if(dbg) world.log << "T=[T.tostring()]" - - if(dbg) world.log << "LTT: [num2text(delta_gt,10)] from turf to [sgas.loc]" - - T.res_vars() // update turf gas vars for both cases -*/ //TODO: FIX - -// on-off valve - -/obj/machinery/valve/mvalve/New() - ..() - gas1 = new/datum/gas_mixture/(src) - ngas1 = new/datum/gas_mixture/() - gas2 = new/datum/gas_mixture/(src) - ngas2 = new/datum/gas_mixture/() - - gasflowlist += src - switch(dir) - if(1, 2) - p_dir = 3 - if(4,8) - p_dir = 12 - - icon_state = "valve[open]" - -/obj/machinery/valve/mvalve/examine(mob/user) - if(..(user, 1)) - user << "[desc] It is [ open? "open" : "closed"]." - - - -/obj/machinery/valve/mvalve/buildnodes() - var/turf/T = src.loc - - node1 = get_machine(level, T, dir ) // the h/e pipe - - node2 = get_machine(level, T , turn(dir, 180) ) // the regular pipe - - if(node1) vnode1 = node1.getline() - if(node2) vnode2 = node2.getline() - - return - - -/obj/machinery/valve/mvalve/gas_flow() - gas1.copy_from(ngas1) - gas2.copy_from(ngas2) - - -/obj/machinery/valve/mvalve/process() -/* var/delta_gt - - if(vnode1) - delta_gt = FLOWFRAC * ( vnode1.get_gas_val(src) - gas1.total_moles() / capmult) - calc_delta( src, gas1, ngas1, vnode1, delta_gt) - - else - leak_to_turf(1) - - if(vnode2) - delta_gt = FLOWFRAC * ( vnode2.get_gas_val(src) - gas2.total_moles() / capmult) - calc_delta( src, gas2, ngas2, vnode2, delta_gt) - - else - leak_to_turf(2) - - - if(open) // valve operating, so transfer btwen resv1 & 2 - - delta_gt = FLOWFRAC * (gas1.total_moles() / capmult - gas2.total_moles() / capmult) - - var/datum/gas_mixture//ndelta = new() - - if(delta_gt < 0) // then flowing from R2 to R1 - - ndelta.set_frac(gas2, -delta_gt) - - ngas2.sub_delta(ndelta) - ngas1.add_delta(ndelta) - - else // flowing from R1 to R2 - ndelta.set_frac(gas1, delta_gt) - ngas2.add_delta(ndelta) - ngas1.sub_delta(ndelta)*/ //TODO: FIX - - - - -/obj/machinery/valve/mvalve/get_gas_val(from) - if(from == vnode2) - return gas2.total_moles()/capmult - else - return gas1.total_moles()/capmult - -/obj/machinery/valve/mvalve/get_gas(from) - if(from == vnode2) - return gas2 - return gas1 - -/obj/machinery/valve/mvalve/proc/leak_to_turf(var/port) - - var/turf/T - - - switch(port) - if(1) - T = get_step(src, dir) - if(2) - T = get_step(src, turn(dir, 180) ) - - if(T.density) - T = src.loc - if(T.density) - return - - if(port==1) - flow_to_turf(gas1, ngas1, T) - else - flow_to_turf(gas2, ngas2, T) - -/obj/machinery/valve/mvalve/attack_paw(mob/user) - attack_hand(user) - -/obj/machinery/valve/mvalve/attack_ai(mob/user) - user << "\red You are unable to use this as it is physically operated." - return - -/obj/machinery/valve/mvalve/attack_hand(mob/user) - ..() - add_fingerprint(user) - if(stat & BROKEN) - return - - if(!open) // now opening - flick("valve01", src) - icon_state = "valve1" - sleep(10) - else // now closing - flick("valve10", src) - icon_state = "valve0" - sleep(10) - open = !open - -// Digital Valve - -/obj/machinery/valve/dvalve/New() - ..() - gas1 = new/datum/gas_mixture/(src) - ngas1 = new/datum/gas_mixture/() - gas2 = new/datum/gas_mixture/(src) - ngas2 = new/datum/gas_mixture/() - - gasflowlist += src - switch(dir) - if(1, 2) - p_dir = 3 - if(4,8) - p_dir = 12 - - icon_state = "dvalve[open]" - -/obj/machinery/valve/dvalve/examine(mob/user) - if(..(user, 1)) - if(NOPOWER) - user << "It is unpowered! It is [ open? "open" : "closed"]." - return - user << "It is [ open? "open" : "closed"]." - -/obj/machinery/valve/dvalve/buildnodes() - var/turf/T = src.loc - - node1 = get_machine(level, T, dir ) // the h/e pipe - - node2 = get_machine(level, T , turn(dir, 180) ) // the regular pipe - - if(node1) vnode1 = node1.getline() - if(node2) vnode2 = node2.getline() - - return - - -/obj/machinery/valve/dvalve/gas_flow() - gas1.copy_from(ngas1) - gas2.copy_from(ngas2) - -/obj/machinery/valve/dvalve/power_change() - ..() - if(stat & NOPOWER) - icon_state = "dvalve[open]nopower" - return - icon_state = "dvalve[open]" - - -/obj/machinery/valve/dvalve/process() - /* - var/delta_gt - - if(vnode1) - delta_gt = FLOWFRAC * ( vnode1.get_gas_val(src) - gas1.total_moles() / capmult) - calc_delta( src, gas1, ngas1, vnode1, delta_gt) - - else - leak_to_turf(1) - - if(vnode2) - delta_gt = FLOWFRAC * ( vnode2.get_gas_val(src) - gas2.total_moles() / capmult) - calc_delta( src, gas2, ngas2, vnode2, delta_gt) - - else - leak_to_turf(2) - - - if(open) // valve operating, so transfer btwen resv1 & 2 - - delta_gt = FLOWFRAC * (gas1.total_moles() / capmult - gas2.total_moles() / capmult) - - var/datum/gas_mixture/ndelta = new() - - if(delta_gt < 0) // then flowing from R2 to R1 - - ndelta.set_frac(gas2, -delta_gt) - - ngas2.sub_delta(ndelta) - ngas1.add_delta(ndelta) - - else // flowing from R1 to R2 - ndelta.set_frac(gas1, delta_gt) - ngas2.add_delta(ndelta) - ngas1.sub_delta(ndelta) - */ //TODO: FIX - - - -/obj/machinery/valve/dvalve/get_gas_val(from) - if(from == vnode2) - return gas2.total_moles()/capmult - else - return gas1.total_moles()/capmult - -/obj/machinery/valve/dvalve/get_gas(from) - if(from == vnode2) - return gas2 - return gas1 - -/obj/machinery/valve/dvalve/proc/leak_to_turf(var/port) - - var/turf/T - - - switch(port) - if(1) - T = get_step(src, dir) - if(2) - T = get_step(src, turn(dir, 180) ) - - if(T.density) - T = src.loc - if(T.density) - return - - if(port==1) - flow_to_turf(gas1, ngas1, T) - else - flow_to_turf(gas2, ngas2, T) - -/obj/machinery/valve/dvalve/attack_paw(mob/user) - return src.attack_hand(user) - -/obj/machinery/valve/dvalve/attack_ai(var/mob/user as mob) - return src.attack_hand(user) - -/obj/machinery/valve/dvalve/attack_hand(mob/user) - ..() - add_fingerprint(user) - if(stat & (BROKEN|NOPOWER)) - return - - if(!open) // now opening - flick("dvalve01", src) - icon_state = "dvalve1" - sleep(10) - else // now closing - flick("dvalve10", src) - icon_state = "dvalve0" - sleep(10) - open = !open - -// one way pipe - -/obj/machinery/oneway/New() - ..() - gas1 = new/datum/gas_mixture/(src) - ngas1 = new/datum/gas_mixture/() - gas2 = new/datum/gas_mixture/(src) - ngas2 = new/datum/gas_mixture/() - - gasflowlist += src - p_dir = dir|turn(dir, 180) - -/obj/machinery/oneway/buildnodes() - var/turf/T = src.loc - - node1 = get_machine(level, T, dir ) - node2 = get_machine(level, T , turn(dir, 180) ) - - if(node1) vnode1 = node1.getline() - if(node2) vnode2 = node2.getline() - - return - -/obj/machinery/oneway/gas_flow() - gas1.copy_from(ngas1) - gas2.copy_from(ngas2) - -/obj/machinery/oneway/process() -/* - var/delta_gt - - if(vnode1) - delta_gt = FLOWFRAC * ( vnode1.get_gas_val(src) - gas1.total_moles() / capmult) - calc_delta( src, gas1, ngas1, vnode1, delta_gt) - - else - leak_to_turf(1) - - if(vnode2) - delta_gt = FLOWFRAC * ( vnode2.get_gas_val(src) - gas2.total_moles() / capmult) - calc_delta( src, gas2, ngas2, vnode2, delta_gt) - - else - leak_to_turf(2) - - - delta_gt = FLOWFRAC * (gas1.total_moles() / capmult - gas2.total_moles() / capmult) - var/datum/gas_mixture/ndelta = new() - - if(delta_gt < 0) // then flowing from R2 to R1 - ndelta.set_frac(gas2, -delta_gt) - ngas2.sub_delta(ndelta) - ngas1.add_delta(ndelta)*/ //TODO: FIX - -/obj/machinery/oneway/get_gas_val(from) - if(from == vnode2) - return gas2.total_moles()/capmult - else - return gas1.total_moles()/capmult - -/obj/machinery/oneway/get_gas(from) - if(from == vnode2) - return gas2 - return gas1 - -/obj/machinery/oneway/proc/leak_to_turf(var/port) - var/turf/T - - switch(port) - if(1) - T = get_step(src, dir) - if(2) - T = get_step(src, turn(dir, 180) ) - - if(T.density) - T = src.loc - if(T.density) - return - - if(port==1) - flow_to_turf(gas1, ngas1, T) - else - flow_to_turf(gas2, ngas2, T) - -/obj/machinery/oneway/pipepump/process() - /* - if(! (stat & NOPOWER) ) // pump if power - gas1.transfer_from(gas2, rate) - use_power(25, ENVIRON) - ngas1.copy_from(gas1) - ngas2.copy_from(gas2) - - var/delta_gt - - if(vnode1) - delta_gt = FLOWFRAC * ( vnode1.get_gas_val(src) - gas1.total_moles() / capmult) - calc_delta( src, gas1, ngas1, vnode1, delta_gt) - - else - leak_to_turf(1) - - if(vnode2) - delta_gt = FLOWFRAC * ( vnode2.get_gas_val(src) - gas2.total_moles() / capmult) - calc_delta( src, gas2, ngas2, vnode2, delta_gt) - - else - leak_to_turf(2) - */ //TODO: FIX - -/obj/machinery/oneway/pipepump/proc/updateicon() - icon_state = "pipepump-[(stat & NOPOWER) ? "stop" : "run"]" - -/obj/machinery/oneway/pipepump/power_change() - if(powered(ENVIRON)) - stat &= ~NOPOWER - else - - stat |= NOPOWER - spawn(rand(1,15)) // So they don't all turn off at the same time - updateicon() - -// Filter inlet -// works with filter_control - -/obj/machinery/inlet/filter/New() - ..() - src.gas = new /datum/gas_mixture() - src.ngas = new /datum/gas_mixture() - -/obj/machinery/inlet/filter/buildnodes() - var/turf/T = get_step(src.loc, src.dir) - var/fdir = turn(src.p_dir, 180) - - for(var/obj/machinery/M in T) - if(M.p_dir & fdir) - src.node = M - break - - if(node) vnode = node.getline() - return - -/obj/machinery/inlet/filter/get_gas_val(from) - return gas.total_moles()/2 - -/obj/machinery/inlet/filter/get_gas(from) - return gas - -/obj/machinery/inlet/filter/gas_flow() - gas.copy_from(ngas) - -/obj/machinery/inlet/filter/process() - src.updateicon() - if(!(stat & NOPOWER)) - /* var/turf/T = src.loc - if(!T || T.density) return - - if(!vnode) return leak_to_turf() - var/obj/substance/gas/exterior = new() - exterior.oxygen = T.oxygen - exterior.n2 = T.n2 - exterior.plasma = T.poison - exterior.co2 = T.co2 - exterior.sl_gas = T.sl_gas - exterior.temperature = T.temp - var/obj/substance/gas/interior = gas - var/obj/substance/gas/flowing = new() - - var/flow_rate = (exterior.total_moles()-interior.total_moles())*FLOWFRAC - if(flow_rate <= 0) - return - flowing.set_frac(exterior,flow_rate) - if(!(src.f_mask & GAS_O2)) flowing.oxygen = 0 - if(!(src.f_mask & GAS_N2)) flowing.n2 = 0 - if(!(src.f_mask & GAS_PL)) flowing.plasma = 0 - if(!(src.f_mask & GAS_CO2)) flowing.co2 = 0 - if(!(src.f_mask & GAS_N2O)) flowing.sl_gas = 0 - use_power(5,ENVIRON) - exterior.sub_delta(flowing) - interior.add_delta(flowing)*/ //TODO: FIX - else - ..() - return - -/obj/machinery/inlet/filter/leak_to_turf() -// note this is a leak from the node, not the inlet itself -// thus acts as a link between the inlet turf and the turf in step(dir) - var/turf/T = get_step(src, dir) - if(T && !T.density) - flow_to_turf(gas, ngas, T) - -/obj/machinery/inlet/filter/power_change() - if(powered(ENVIRON)) - stat &= ~NOPOWER - else - stat |= NOPOWER - spawn(rand(1,15)) - updateicon() - return - -/obj/machinery/inlet/filter/proc/updateicon() - /* - if(stat & NOPOWER) - icon_state = "inlet_filter-0" - return - if(src.gas.total_moles() > src.gas.maximum/2) - icon_state = "inlet_filter-4" - else if(src.gas.total_moles() > src.gas.maximum/3) - icon_state = "inlet_filter-3" - else if(src.gas.total_moles() > src.gas.maximum/4) - icon_state = "inlet_filter-2" - else if(src.gas.total_moles() >= 1 || src.f_mask >= 1) - icon_state = "inlet_filter-1" - else - icon_state = "inlet_filter-0" - return - */ //TODO FIX - -// Filter vent -// doesn't do anything yet - -/obj/machinery/vent/filter/power_change() - if(powered(ENVIRON)) - stat &= ~NOPOWER - else - stat |= NOPOWER - spawn(rand(1,15)) - updateicon() - return - -/obj/machinery/vent/filter/proc/updateicon() - /* - if(stat & NOPOWER) - icon_state = "vent_filter-0" - return - if(src.gas.total_moles() > src.gas.maximum/2) - icon_state = "vent_filter-4" - else if(src.gas.total_moles() > src.gas.maximum/3) - icon_state = "vent_filter-3" - else if(src.gas.total_moles() > src.gas.maximum/4) - icon_state = "vent_filter-2" - else if(src.gas.total_moles() >= 1 || src.f_mask >= 1) - icon_state = "vent_filter-1" - else - icon_state = "vent_filter-0" - return - */ //TODO FIX \ No newline at end of file diff --git a/code/unused/pipe_filter.dm b/code/unused/pipe_filter.dm deleted file mode 100644 index 10f0673728a..00000000000 --- a/code/unused/pipe_filter.dm +++ /dev/null @@ -1,243 +0,0 @@ -// *** pipefilter - -/obj/machinery/pipefilter/New() - ..() - p_dir = (NORTH|SOUTH|EAST|WEST) ^ turn(dir, 180) - - src.gas = new /datum/gas_mixture/() - src.ngas = new /datum/gas_mixture/() - - src.f_gas = new /datum/gas_mixture/() - src.f_ngas = new /datum/gas_mixture/() - - gasflowlist += src - -/obj/machinery/pipefilter/buildnodes() - var/turf/T = src.loc - - n1dir = turn(dir, 90) - n2dir = turn(dir,-90) - - node1 = get_machine( level, T , n1dir ) // the main flow dir - node2 = get_machine( level, T , n2dir ) - node3 = get_machine( level, T, dir ) // the ejector port - - if(node1) vnode1 = node1.getline() - if(node2) vnode2 = node2.getline() - if(node3) vnode3 = node3.getline() - -/obj/machinery/pipefilter/gas_flow() - gas.copy_from(ngas) - f_gas.copy_from(f_ngas) - -/obj/machinery/pipefilter/process() -/* var/delta_gt - - if(vnode1) - delta_gt = FLOWFRAC * ( vnode1.get_gas_val(src) - gas.total_moles() / capmult) - calc_delta( src, gas, ngas, vnode1, delta_gt) - else - leak_to_turf(1) - if(vnode2) - delta_gt = FLOWFRAC * ( vnode2.get_gas_val(src) - gas.total_moles() / capmult) - calc_delta( src, gas, ngas, vnode2, delta_gt) - else - leak_to_turf(2) - if(vnode3) - delta_gt = FLOWFRAC * ( vnode3.get_gas_val(src) - f_gas.total_moles() / capmult) - calc_delta( src, f_gas, f_ngas, vnode3, delta_gt) - else - leak_to_turf(3) - - // transfer gas from ngas->f_ngas according to extraction rate, but only if we have power - if(! (stat & NOPOWER) ) - use_power(min(src.f_per, 100),ENVIRON) - var/datum/gas_mixture/ndelta = src.get_extract() - ngas.sub_delta(ndelta) - f_ngas.add_delta(ndelta) - AutoUpdateAI(src) - src.updateUsrDialog()*/ //TODO: FIX - -/obj/machinery/pipefilter/get_gas_val(from) - return ((from == vnode3) ? f_gas.total_moles() : gas.total_moles())/capmult - -/obj/machinery/pipefilter/get_gas(from) - return (from == vnode3) ? f_gas : gas - -/obj/machinery/pipefilter/proc/leak_to_turf(var/port) - var/turf/T - - switch(port) - if(1) - T = get_step(src, n1dir) - if(2) - T = get_step(src, n2dir) - if(3) - T = get_step(src, dir) - if(T.density) - T = src.loc - if(T.density) - return - flow_to_turf(f_gas, f_ngas, T) - return - - if(T.density) - T = src.loc - if(T.density) - return - - flow_to_turf(gas, ngas, T) - -/obj/machinery/pipefilter/proc/get_extract() - /* - var/datum/gas_mixture/ndelta = new() - if (src.f_mask & GAS_O2) - ndelta.oxygen = min(src.f_per, src.ngas.oxygen) - if (src.f_mask & GAS_N2) - ndelta.n2 = min(src.f_per, src.ngas.n2) - if (src.f_mask & GAS_PL) - ndelta.plasma = min(src.f_per, src.ngas.plasma) - if (src.f_mask & GAS_CO2) - ndelta.co2 = min(src.f_per, src.ngas.co2) - if (src.f_mask & GAS_N2O) - ndelta.sl_gas = min(src.f_per, src.ngas.sl_gas) - return ndelta - */ //TODO: FIX - -/obj/machinery/pipefilter/attackby(obj/item/weapon/W, mob/user as mob) - if(istype(W, /obj/item/weapon/detective_scanner)) - return ..() - if(istype(W, /obj/item/weapon/screwdriver)) - if(bypassed) - user.show_message(text("\red Remove the foreign wires first!"), 1) - return - src.add_fingerprint(user) - user.show_message(text("\red Now []securing the access system panel...", (src.locked) ? "un" : "re"), 1) - sleep(30) - locked =! locked - user.show_message(text("\red Done!"),1) - src.updateicon() - return - if(istype(W, /obj/item/stack/cable_coil) && !bypassed) - if(src.locked) - user.show_message(text("\red You must remove the panel first!"),1) - return - var/obj/item/stack/cable_coil/C = W - if(C.use(4)) - user.show_message(text("\red You unravel some cable.."),1) - else - user.show_message(text("\red Not enough cable! (Requires four pieces)"),1) - src.add_fingerprint(user) - user.show_message(text("\red Now bypassing the access system... (This may take a while)"), 1) - sleep(100) - bypassed = 1 - src.updateicon() - return - if(istype(W, /obj/item/weapon/wirecutters) && bypassed) - src.add_fingerprint(user) - user.show_message(text("\red Now removing the bypass wires... (This may take a while)"), 1) - sleep(50) - bypassed = 0 - src.updateicon() - return - if(istype(W, /obj/item/weapon/card/emag) && (!emagged)) - emagged++ - src.add_fingerprint(user) - for(var/mob/O in viewers(user, null)) - O.show_message(text("\red [] has shorted out the [] with an electromagnetic card!", user, src), 1) - src.overlays += image('icons/obj/pipes2.dmi', "filter-spark") - sleep(6) - src.updateicon() - return src.attack_hand(user) - return src.attack_hand(user) - -// pipefilter interact/topic -/obj/machinery/pipefilter/attack_paw(mob/user as mob) - return src.attack_hand(user) - -/obj/machinery/pipefilter/attack_ai(mob/user as mob) - return src.attack_hand(user) - -/obj/machinery/pipefilter/attack_hand(mob/user as mob) -/* if(stat & NOPOWER) - user << browse(null, "window=pipefilter") - user.machine = null - return - - var/list/gases = list("O2", "N2", "Plasma", "CO2", "N2O") - user.machine = src - var/dat = "Filter Release Rate:
\nM - - - - - [src.f_per] + + + + + M
\n" - for (var/i = 1; i <= gases.len; i++) - dat += "[gases[i]]: [(src.f_mask & 1 << (i - 1)) ? "Releasing" : "Passing"]
\n" - if(gas.total_moles()) - var/totalgas = gas.total_moles() - var/pressure = round(totalgas / gas.maximum * 100) - var/nitrogen = gas.n2 / totalgas * 100 - var/oxygen = gas.oxygen / totalgas * 100 - var/plasma = gas.plasma / totalgas * 100 - var/co2 = gas.co2 / totalgas * 100 - var/no2 = gas.sl_gas / totalgas * 100 - - dat += "
Gas Levels:
\nPressure: [pressure]%
\nNitrogen: [nitrogen]%
\nOxygen: [oxygen]%
\nPlasma: [plasma]%
\nCO2: [co2]%
\nN2O: [no2]%
\n" - else - dat += "
Gas Levels:
\nPressure: 0%
\nNitrogen: 0%
\nOxygen: 0%
\nPlasma: 0%
\nCO2: 0%
\nN2O: 0%
\n" - dat += "
\nClose
\n" - - user << browse(dat, "window=pipefilter;size=300x365")*/ //TODO: FIX - //onclose(user, "pipefilter") - -/obj/machinery/pipefilter/Topic(href, href_list) - ..() - if(usr.restrained() || usr.lying) - return - if ((((get_dist(src, usr) <= 1 || usr.telekinesis == 1) || istype(usr, /mob/living/silicon/ai)) && istype(src.loc, /turf))) - usr.machine = src - if (href_list["close"]) - usr << browse(null, "window=pipefilter;") - usr.machine = null - return - if (src.allowed(usr) || src.emagged || src.bypassed) - if (href_list["fp"]) - src.f_per = min(max(round(src.f_per + text2num(href_list["fp"])), 0), src.maxrate) - else if (href_list["tg"]) - // toggle gas - src.f_mask ^= text2num(href_list["tg"]) - src.updateicon() - else - usr.see("\red Access Denied ([src.name] operation restricted to authorized atmospheric technicians.)") - AutoUpdateAI(src) - src.updateUsrDialog() - src.add_fingerprint(usr) - else - usr << browse(null, "window=pipefilter") - usr.machine = null - return - -/obj/machinery/pipefilter/power_change() - if(powered(ENVIRON)) - stat &= ~NOPOWER - else - stat |= NOPOWER - spawn(rand(1,15)) //so all the filters don't come on at once - updateicon() - -/obj/machinery/pipefilter/proc/updateicon() - src.overlays.Cut() - if(stat & NOPOWER) - icon_state = "filter-off" - else - icon_state = "filter" - if(emagged) //only show if powered because presumeably its the interface that has been fried - src.overlays += image('icons/obj/pipes2.dmi', "filter-emag") - if (src.f_mask & (GAS_N2O|GAS_PL)) - src.overlays += image('icons/obj/pipes2.dmi', "filter-tox") - if (src.f_mask & GAS_O2) - src.overlays += image('icons/obj/pipes2.dmi', "filter-o2") - if (src.f_mask & GAS_N2) - src.overlays += image('icons/obj/pipes2.dmi', "filter-n2") - if (src.f_mask & GAS_CO2) - src.overlays += image('icons/obj/pipes2.dmi', "filter-co2") - if(!locked) - src.overlays += image('icons/obj/pipes2.dmi', "filter-open") - if(bypassed) //should only be bypassed if unlocked - src.overlays += image('icons/obj/pipes2.dmi', "filter-bypass") \ No newline at end of file diff --git a/code/unused/powerarmor/powerarmor.dm b/code/unused/powerarmor/powerarmor.dm deleted file mode 100644 index 36b066ffe94..00000000000 --- a/code/unused/powerarmor/powerarmor.dm +++ /dev/null @@ -1,278 +0,0 @@ -/obj/item/clothing/suit/powered - name = "Powered armor" - desc = "Not for rookies." - icon_state = "swat" - item_state = "swat" - w_class = 4//bulky item - - protective_temperature = 1000 - body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS - armor = list(melee = 40, bullet = 30, laser = 20,energy = 15, bomb = 25, bio = 10, rad = 10) - allowed = list(/obj/item/device/flashlight,/obj/item/weapon/gun,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen) - slowdown = 9 - var/fuel = 0 - - var/list/togglearmor = list(melee = 90, bullet = 70, laser = 60,energy = 40, bomb = 75, bio = 75, rad = 75) - var/active = 0 - - var/helmrequired = 1 - var/obj/item/clothing/head/powered/helm - - var/glovesrequired = 0 - var/obj/item/clothing/gloves/powered/gloves - - var/shoesrequired = 0 - var/obj/item/clothing/shoes/powered/shoes - //Adding gloves and shoes as possible armor components. --NEO - - var/obj/item/powerarmor/servos/servos - var/obj/item/powerarmor/reactive/reactive - var/obj/item/powerarmor/atmoseal/atmoseal - var/obj/item/powerarmor/power/power - - New() - verbs += /obj/item/clothing/suit/powered/proc/poweron - - proc/poweron() - set category = "Object" - set name = "Activate armor systems" - - var/mob/living/carbon/human/user = usr - - if(user.stat) - return //if you're unconscious or dead, no dicking with your armor. --NEO - - if(!istype(user)) - user << "\red This suit was engineered for human use only." - return - - if(user.wear_suit!=src) - user << "\red The suit functions best if you are inside of it." - return - - if(helmrequired && !istype(user.head, /obj/item/clothing/head/powered)) - user << "\red Helmet missing, unable to initiate power-on procedure." - return - - if(glovesrequired && !istype(user.gloves, /obj/item/clothing/gloves/powered)) - user << "\red Gloves missing, unable to initiate power-on procedure." - return - - if(shoesrequired && !istype(user.shoes, /obj/item/clothing/shoes/powered)) - user << "\red Shoes missing, unable to initiate power-on procedure." - return - - if(active) - user << "\red The suit is already on, you can't turn it on twice." - return - - if(!power || !power.checkpower()) - user << "\red Powersource missing or depleted." - return - - verbs -= /obj/item/clothing/suit/powered/proc/poweron - - user << "\blue Suit interlocks engaged." - if(helmrequired) - helm = user.head - helm.canremove = 0 - if(glovesrequired) - gloves = user.gloves - gloves.canremove = 0 - if(shoesrequired) - shoes = user.shoes - shoes.canremove = 0 - canremove = 0 - sleep(20) - - if(atmoseal) - atmoseal.toggle() - sleep(20) - - if(reactive) - reactive.toggle() - sleep(20) - - if(servos) - servos.toggle() - sleep(20) - - user << "\blue All systems online." - active = 1 - power.process() - - verbs += /obj/item/clothing/suit/powered/proc/poweroff - - - proc/poweroff() - set category = "Object" - set name = "Deactivate armor systems" - powerdown() //BYOND doesn't seem to like it if you try using a proc with vars in it as a verb, hence this. --NEO - - proc/powerdown(sudden = 0) - - var/delay = sudden?0:20 - - var/mob/living/carbon/human/user = usr - - if(user.stat && !sudden) - return //if you're unconscious or dead, no dicking with your armor. --NEO - - if(!active) - return - - verbs -= /obj/item/clothing/suit/powered/proc/poweroff - - if(sudden) - user << "\red Your armor loses power!" - - if(servos) - servos.toggle(sudden) - sleep(delay) - - if(reactive) - reactive.toggle(sudden) - sleep(delay) - - if(atmoseal) - if(istype(atmoseal, /obj/item/powerarmor/atmoseal/optional) && helm) - atmoseal:helmtoggle(sudden) - atmoseal.toggle(sudden) - - sleep(delay) - - if(!sudden) - usr << "\blue Suit interlocks disengaged." - if(helm) - helm.canremove = 1 - helm = null - if(gloves) - gloves.canremove = 1 - gloves = null - if(shoes) - shoes.canremove = 1 - gloves = null - canremove = 1 - //Not a tabbing error, the thing only unlocks if you intentionally power-down the armor. --NEO - sleep(delay) - - if(!sudden) - usr << "\blue All systems disengaged." - - active = 0 - verbs += /obj/item/clothing/suit/powered/proc/poweron - - - - attackby(obj/item/weapon/W as obj, mob/user as mob) - if(power && istype(power,/obj/item/powerarmor/power/plasma)) - switch(W.type) - if(/obj/item/stack/sheet/mineral/plasma) - if(fuel < 50) - user << "\blue You feed some refined plasma into the armor's generator." - power:fuel += 25 - W:amount-- - if (W:amount <= 0) - del(W) - return - else - user << "\red The generator already has plenty of plasma." - return - - if(/obj/item/weapon/ore/plasma) //raw plasma has impurities, so it doesn't provide as much fuel. --NEO - if(fuel < 50) - user << "\blue You feed some plasma into the armor's generator." - power:fuel += 15 - del(W) - return - else - user << "\red The generator already has plenty of plasma." - return - - ..() - -/obj/item/clothing/head/powered - name = "Powered armor" - icon_state = "swat" - desc = "Not for rookies." - flags = HEADCOVERSEYES | HEADCOVERSMOUTH - see_face = 0.0 - item_state = "swat" - armor = list(melee = 40, bullet = 30, laser = 20,energy = 15, bomb = 25, bio = 10, rad = 10) - var/obj/item/clothing/suit/powered/parent - - proc/atmotoggle() - set category = "Object" - set name = "Toggle helmet seals" - - var/mob/living/carbon/human/user = usr - - if(!istype(user)) - user << "\red This helmet is not rated for nonhuman use." - return - - if(user.head != src) - user << "\red Can't engage the seals without wearing the helmet." - return - - if(!user.wear_suit || !istype(user.wear_suit,/obj/item/clothing/suit/powered)) - user << "\red This helmet can only couple with powered armor." - return - - var/obj/item/clothing/suit/powered/armor = user.wear_suit - - if(!armor.atmoseal || !istype(armor.atmoseal, /obj/item/powerarmor/atmoseal/optional)) - user << "\red This armor's atmospheric seals are missing or incompatible." - return - - armor.atmoseal:helmtoggle(0,1) - - - - -/obj/item/clothing/gloves/powered - name = "Powered armor" - icon_state = "swat" - desc = "Not for rookies." - item_state = "swat" - armor = list(melee = 40, bullet = 30, laser = 20,energy = 15, bomb = 25, bio = 10, rad = 10) - -/obj/item/clothing/shoes/powered - name = "Powered armor" - icon_state = "swat" - desc = "Not for rookies." - item_state = "swat" - armor = list(melee = 40, bullet = 30, laser = 20,energy = 15, bomb = 25, bio = 10, rad = 10) - - -obj/item/clothing/suit/powered/spawnable/badmin - New() - servos = new /obj/item/powerarmor/servos(src) - servos.parent = src - reactive = new /obj/item/powerarmor/reactive(src) - reactive.parent = src - atmoseal = new /obj/item/powerarmor/atmoseal/optional/adminbus(src) - atmoseal.parent = src - power = new /obj/item/powerarmor/power(src) - power.parent = src - - verbs += /obj/item/clothing/suit/powered/proc/poweron - - var/obj/item/clothing/head/powered/helm = new /obj/item/clothing/head/powered(src.loc) - helm.verbs += /obj/item/clothing/head/powered/proc/atmotoggle - -obj/item/clothing/suit/powered/spawnable/regular - New() - servos = new /obj/item/powerarmor/servos(src) - servos.parent = src - reactive = new /obj/item/powerarmor/reactive/centcomm(src) - reactive.parent = src - atmoseal = new /obj/item/powerarmor/atmoseal/optional/adminbus(src) - atmoseal.parent = src - power = new /obj/item/powerarmor/power(src) - power.parent = src - - verbs += /obj/item/clothing/suit/powered/proc/poweron - - var/obj/item/clothing/head/powered/helm = new /obj/item/clothing/head/powered(src.loc) - helm.verbs += /obj/item/clothing/head/powered/proc/atmotoggle diff --git a/code/unused/powerarmor/powerarmorcomponents.dm b/code/unused/powerarmor/powerarmorcomponents.dm deleted file mode 100644 index 8d09536f9c1..00000000000 --- a/code/unused/powerarmor/powerarmorcomponents.dm +++ /dev/null @@ -1,246 +0,0 @@ -/obj/item/powerarmor - name = "Generic power armor component" - desc = "This is the base object, you should never see one." - var/obj/item/clothing/suit/powered/parent //so the component knows which armor it belongs to. - var/slowdown = 0 //how much the component slows down the wearer - - proc/toggle() - return - //The child objects will use this proc - - - -/obj/item/powerarmor/power - name = "Adminbus power armor power source" - desc = "Runs on the rare Badminium molecule." - - process() - return - - proc/checkpower() - return 1 - - plasma - name = "Miniaturized plasma generator" - desc = "Runs on plasma." - slowdown = 1 - var/fuel = 0 - - process() - if (fuel > 0 && parent.active) - fuel-- - spawn(50) - process() - return - else if (parent.active) - parent.powerdown(1) - return - - checkpower() - return fuel - - powercell - name = "Powercell interface" - desc = "Boring, but reliable." - var/obj/item/weapon/cell/cell - slowdown = 0.5 - - process() - if (cell && cell.charge > 0 && parent.active) - cell.use(50) - spawn(50) - process() - return - else if (parent.active) - parent.powerdown(1) - return - - checkpower() - return max(cell.charge, 0) - - nuclear - name = "Miniaturized nuclear generator" - desc = "For all your radioactive needs." - slowdown = 1.5 - - process() - if(!crit_fail) - if (prob(src.reliability)) return 1 //No failure - if (prob(src.reliability)) - for (var/mob/M in range(0,src.parent)) //Only a minor failure, enjoy your radiation. - if (src.parent in M.contents) - M << "\red Your armor feels pleasantly warm for a moment." - else - M << "\red You feel a warm sensation." - M.radiation += rand(1,40) - else - for (var/mob/M in range(rand(1,4),src.parent)) //Big failure, TIME FOR RADIATION BITCHES - if (src.parent in M.contents) - M << "\red Your armor's reactor overloads!" - M << "\red You feel a wave of heat wash over you." - M.radiation += 100 - crit_fail = 1 //broken~ - parent.powerdown(1) - spawn(50) - process() - - checkpower() - return !crit_fail - -/obj/item/powerarmor/reactive - name = "Adminbus power armor reactive plating" - desc = "Made with the rare Badminium molecule." - var/list/togglearmor = list(melee = 250, bullet = 100, laser = 100,energy = 100, bomb = 100, bio = 100, rad = 100) - //Good lord an active energy axe does 150 damage a swing? Anyway, barring var editing, this armor loadout should be impervious to anything. Enjoy, badmins~ --NEO - - toggle(sudden = 0) - switch(parent.active) - if(1) - if(!sudden) - usr << "\blue Reactive armor systems disengaged." - if(0) - usr << "\blue Reactive armor systems engaged." - var/list/switchover = list() - for (var/armorvar in parent.armor) - switchover[armorvar] = togglearmor[armorvar] - togglearmor[armorvar] = parent.armor[armorvar] - parent.armor[armorvar] = switchover[armorvar] - //Probably not the most elegant way to have the vars switch over, but it works. Also propagates the values to the other objects. - if(parent.helm) - parent.helm.armor[armorvar] = parent.armor[armorvar] - if(parent.gloves) - parent.gloves.armor[armorvar] = parent.armor[armorvar] - if(parent.shoes) - parent.shoes.armor[armorvar] = parent.armor[armorvar] - - centcomm - name = "CentComm power armor reactive plating" - desc = "Pretty effective against everything, not perfect though." - togglearmor = list(melee = 90, bullet = 70, laser = 60,energy = 40, bomb = 75, bio = 75, rad = 75) - slowdown = 2 - - -/obj/item/powerarmor/servos - name = "Adminbus power armor movement servos" - desc = "Made with the rare Badminium molecule." - var/toggleslowdown = 9 - - toggle(sudden = 0) - switch(parent.active) - if(1) - if(!sudden) - usr << "\blue Movement assist servos disengaged." - parent.slowdown += toggleslowdown - if(0) - usr << "\blue Movement assist servos engaged." - parent.slowdown -= toggleslowdown - -/obj/item/powerarmor/atmoseal - name = "Power armor atmospheric seals" - desc = "Keeps the bad stuff out." - slowdown = 1 - var/sealed = 0 - - toggle(sudden = 0) - switch(parent.active) - if(1) - if(!sudden) - usr << "\blue Atmospheric seals disengaged." - parent.gas_transfer_coefficient = 1 - parent.permeability_coefficient = 1 - parent.heat_transfer_coefficient = 1 - parent.flags &= ~SUITSPACE - if(parent.helmrequired) - parent.helm.gas_transfer_coefficient = 1 - parent.helm.permeability_coefficient = 1 - parent.helm.heat_transfer_coefficient = 1 - parent.helm.flags &= ~HEADSPACE - if(parent.glovesrequired) - parent.gloves.gas_transfer_coefficient = 1 - parent.gloves.permeability_coefficient = 1 - parent.gloves.heat_transfer_coefficient = 1 - if(parent.shoesrequired) - parent.shoes.gas_transfer_coefficient = 1 - parent.shoes.permeability_coefficient = 1 - parent.shoes.heat_transfer_coefficient = 1 - sealed = 0 - - if(0) - usr << "\blue Atmospheric seals engaged." - parent.gas_transfer_coefficient = 0.01 - parent.permeability_coefficient = 0.02 - parent.heat_transfer_coefficient = 0.02 - parent.flags |= SUITSPACE - if(parent.helmrequired) - parent.helm.gas_transfer_coefficient = 0.01 - parent.helm.permeability_coefficient = 0.02 - parent.helm.heat_transfer_coefficient = 0.02 - parent.helm.flags |= HEADSPACE - if(parent.glovesrequired) - parent.gloves.gas_transfer_coefficient = 0.01 - parent.gloves.permeability_coefficient = 0.02 - parent.gloves.heat_transfer_coefficient = 0.02 - if(parent.shoesrequired) - parent.shoes.gas_transfer_coefficient = 0.01 - parent.shoes.permeability_coefficient = 0.02 - parent.shoes.heat_transfer_coefficient = 0.02 - sealed = 1 - - adminbus - name = "Adminbus power armor atmospheric seals" - desc = "Made with the rare Badminium molecule." - slowdown = 0 - - optional - name = "Togglable power armor atmospheric seals" - desc = "Keeps the bad stuff out, but lets you remove your helmet without having to turn the whole suit off." - - proc/helmtoggle(sudden = 0, manual = 0) - var/mob/living/carbon/human/user = usr - var/obj/item/clothing/head/powered/helm - if(user.head && istype(user.head,/obj/item/clothing/head/powered)) - helm = user.head - - if(!sealed) - user << "\red Unable to initialize helmet seal, armor seals not active." - return - if(!helm.parent) - user << "\blue Helmet locked." - helm.canremove = 0 - parent.helm = helm - helm.parent = parent - sleep(20) - parent.helm.gas_transfer_coefficient = 0.01 - parent.helm.permeability_coefficient = 0.02 - parent.helm.heat_transfer_coefficient = 0.02 - parent.helm.flags |= HEADSPACE - user << "\blue Helmet atmospheric seals engaged." - if(manual) - for (var/armorvar in helm.armor) - helm.armor[armorvar] = parent.armor[armorvar] - return - else - if(manual) - user << "\blue Helmet atmospheric seals disengaged." - parent.helm.gas_transfer_coefficient = 1 - parent.helm.permeability_coefficient = 1 - parent.helm.heat_transfer_coefficient = 1 - parent.helm.flags &= ~HEADSPACE - if(manual) - for (var/armorvar in helm.armor) - helm.armor[armorvar] = parent.reactive.togglearmor[armorvar] - if(!sudden) - if(manual) - sleep(20) - user << "\blue Helmet unlocked." - helm.canremove = 1 - parent.helm = null - helm.parent = null - - adminbus - name = "Adminbus togglable power armor atmospheric seals" - desc = "Made with the rare Badminium molecule." - slowdown = 0 - - - diff --git a/code/unused/scrap.dm b/code/unused/scrap.dm deleted file mode 100644 index 271f8b131d0..00000000000 --- a/code/unused/scrap.dm +++ /dev/null @@ -1,289 +0,0 @@ -// The scrap item -// a single object type represents all combinations of size and composition of scrap -// - - -/obj/item/scrap - name = "scrap" - icon = 'scrap.dmi' - icon_state = "1metal0" - item_state = "scrap-metal" - desc = "A piece of scrap" - var/classtext = "" - throwforce = 14.0 - m_amt = 0 - g_amt = 0 - w_amt = 0 - var/size = 1 // 1=piece, 2= few pieces, 3=small pile, 4=large pile - var/blood = 0 // 0=none, 1=blood-stained, 2=bloody - - throwforce = 8.0 - throw_speed = 1 - throw_range = 4 - w_class = 1 - flags = CONDUCT - -#define MAX_SCRAP 15000 // maximum content amount of a scrap pile - - -/obj/item/scrap/New() - src.verbs -= /atom/movable/verb/pull - ..() - update() - -// return a copy -/obj/item/scrap/proc/copy() - var/obj/item/scrap/ret = new() - ret.set_components(m_amt, g_amt, w_amt) - return ret - - -// set the metal, glass and waste content -/obj/item/scrap/proc/set_components(var/m, var/g, var/w) - m_amt = m - g_amt = g - w_amt = w - update() - -// returns the total amount of scrap in this pile -/obj/item/scrap/proc/total() - return m_amt + g_amt + w_amt - - -// sets the size, appearance, and description of the scrap depending on component amounts -/obj/item/scrap/proc/update() - var/total = total() - - - // determine size of pile - if(total<=400) - size = 1 - else if(total<=1600) - size = 2 - else - size = 3 - - w_class = size - - var/sizetext = "" - - switch(size) - if(1) - sizetext = "A piece of" - if(2) - sizetext = "A few pieces of" - if(3) - sizetext = "A pile of" - - // determine bloodiness - var/bloodtext = "" - switch(blood) - if(0) - bloodtext = "" - if(1) - bloodtext = "blood-stained " - if(2) - bloodtext = "bloody " - - - // find mixture and composition - var/class = 0 // 0 = mixed, 1=mostly. 2=pure - var/major = "waste" // the major component type - - var/max = 0 - - if(m_amt > max) - max = m_amt - else if(g_amt > max) - max = g_amt - else if(w_amt > max) - max = w_amt - - if(max == total) - class = 2 // pure - else if(max/total > 0.6) - class = 1 // mostly - else - class = 0 // mixed - - if(class>0) - var/remain = total - max - if(m_amt > remain) - major = "metal" - else if(g_amt > remain) - major = "glass" - else - major = "waste" - - - if(class == 1) - desc = "[sizetext] mostly [major] [bloodtext]scrap." - classtext = "mostly [major] [bloodtext]" - else - desc = "[sizetext] [bloodtext][major] scrap." - classtext = "[bloodtext][major] " - icon_state = "[size][major][blood]" - else - desc = "[sizetext] [bloodtext]mixed scrap." - classtext = "[bloodtext]mixed" - icon_state = "[size]mixed[blood]" - - if(size==0) - pixel_x = rand(-5,5) - pixel_y = rand(-5,5) - else - pixel_x = 0 - pixel_y = 0 - - // clear or set conduction flag depending on whether scrap is mostly metal - if(major=="metal") - flags |= CONDUCT - else - flags &= ~CONDUCT - - item_state = "scrap-[major]" - -// add a scrap item to this one -// if the resulting pile is too big, transfer only what will fit -// otherwise add them and deleted the added pile - -/obj/item/scrap/proc/add_scrap(var/obj/item/scrap/other, var/limit = MAX_SCRAP) - var/total = total() - var/other_total = other.total() - - if( (total + other_total) <= limit ) - m_amt += other.m_amt - g_amt += other.g_amt - w_amt += other.w_amt - - blood = (total*blood + other_total*other.blood) / (total + other_total) - del(other) - - else - var/space = limit - total - - var/m = round(other.m_amt/other_total*space, 1) - var/g = round(other.g_amt/other_total*space, 1) - var/w = round(other.w_amt/other_total*space, 1) - - m_amt += m - g_amt += g - w_amt += w - - other.m_amt -= m - other.g_amt -= g - other.w_amt -= w - - var/other_trans = m + g + w - other.update() - blood = (total*blood + other_trans*other.blood) / (total + other_trans) - - - blood = round(blood,1) - src.update() - -// limit this pile to maximum size -// return any remainder as a new scrap item (or null if none) -// note return item is not necessarily smaller than max size - -/obj/item/scrap/proc/remainder(var/limit = MAX_SCRAP) - var/total = total() - if(total > limit) - var/m = round( m_amt/total * limit, 1) - var/g = round( g_amt/total * limit, 1) - var/w = round( w_amt/total * limit, 1) - - var/obj/item/scrap/S = new() - S.set_components(m_amt - m,g_amt - g,w_amt - w) - src.set_components(m,g,w) - - return S - return null - -// if other pile of scrap tries to enter the same turf, then add that pile to this one - -/obj/item/scrap/CanPass(var/obj/item/scrap/O) - - if(istype(O)) - - src.add_scrap(O) - if(O) - return 0 // O still exists if not all could be transfered, so block it - return 1 - -/obj/item/scrap/proc/to_text() - return "[m_amt],[g_amt],[w_amt] ([total()])" - - -// attack with hand removes a single piece from a pile -/obj/item/scrap/attack_hand(mob/user) - add_fingerprint(user) - if(src.is_single_piece()) - return ..(user) - var/obj/item/scrap/S = src.get_single_piece() - S.attack_hand(user) - return - - -/obj/item/scrap/attackby(obj/item/I, mob/user) - ..() - if(istype(I, /obj/item/scrap)) - var/obj/item/scrap/S = I - if( (S.total()+src.total() ) > MAX_SCRAP ) - user << "The pile is full." - return - if(ismob(src.loc)) // can't combine scrap in hand - return - - src.add_scrap(S) - -// when dropped, try to make a pile if scrap is already there -/obj/item/scrap/dropped() - - spawn(2) // delay to allow drop postprocessing (since src may be destroyed) - for(var/obj/item/scrap/S in oview(0,src)) // excludes src itself - S.add_scrap(src) - -// return true if this is a single piece of scrap -// must be total<=400 and of single composition -/obj/item/scrap/proc/is_single_piece() - if(total() > 400) - return 0 - - var/empty = (m_amt == 0) + (g_amt == 0) + (w_amt == 0) - - return (empty==2) // must be 2 components with zero amount - - -// get a single piece of scrap from a pile -/obj/item/scrap/proc/get_single_piece() - - var/obj/item/scrap/S = new() - - var/cmp = pick(m_amt;1 , g_amt;2, w_amt;3) - - var/amount = 400 - switch(cmp) - if(1) - if(m_amt < amount) - amount = m_amt - - S.set_components(amount, 0, 0) - src.set_components(m_amt - amount, g_amt, w_amt) - - if(2) - if(g_amt < amount) - amount = g_amt - S.set_components(0, amount, 0) - src.set_components(m_amt, g_amt - amount, w_amt) - - if(3) - if(w_amt < amount) - amount = w_amt - S.set_components(0, 0, amount) - src.set_components(m_amt, g_amt, w_amt - amount) - - - return S - - diff --git a/code/unused/shuttle_engines.dm b/code/unused/shuttle_engines.dm deleted file mode 100644 index 457154db0f2..00000000000 --- a/code/unused/shuttle_engines.dm +++ /dev/null @@ -1,37 +0,0 @@ - -/obj/structure/shuttle - name = "shuttle" - icon = 'icons/turf/shuttle.dmi' - -/obj/structure/shuttle/engine - name = "engine" - density = 1 - anchored = 1.0 - -/obj/structure/shuttle/engine/heater - name = "heater" - icon_state = "heater" - -/obj/structure/shuttle/engine/platform - name = "platform" - icon_state = "platform" - -/obj/structure/shuttle/engine/propulsion - name = "propulsion" - icon_state = "propulsion" - opacity = 1 - -/obj/structure/shuttle/engine/propulsion/burst - name = "burst" - -/obj/structure/shuttle/engine/propulsion/burst/left - name = "left" - icon_state = "burst_l" - -/obj/structure/shuttle/engine/propulsion/burst/right - name = "right" - icon_state = "burst_r" - -/obj/structure/shuttle/engine/router - name = "router" - icon_state = "router" diff --git a/code/unused/siphs.dm b/code/unused/siphs.dm deleted file mode 100644 index 6104b3bc2d6..00000000000 --- a/code/unused/siphs.dm +++ /dev/null @@ -1,515 +0,0 @@ -/obj/machinery/atmoalter/siphs/New() - ..() - src.gas = new /datum/gas_mixture() - - return - -/obj/machinery/atmoalter/siphs/proc/releaseall() - src.t_status = 1 - src.t_per = max_valve - return - -/obj/machinery/atmoalter/siphs/proc/reset(valve, auto) - if(c_status!=0) - return - - if (valve < 0) - src.t_per = -valve - src.t_status = 1 - else - if (valve > 0) - src.t_per = valve - src.t_status = 2 - else - src.t_status = 3 - if (auto) - src.t_status = 4 - src.setstate() - return - -/obj/machinery/atmoalter/siphs/proc/release(amount, flag) - /* - var/T = src.loc - if (!( istype(T, /turf) )) - return - if (locate(/obj/move, T)) - T = locate(/obj/move, T) - if (!( amount )) - return - if (!( flag )) - amount = min(amount, max_valve) - src.gas.turf_add(T, amount) - return - */ //TODO: FIX - -/obj/machinery/atmoalter/siphs/proc/siphon(amount, flag) - /* - var/T = src.loc - if (!( istype(T, /turf) )) - return - if (locate(/obj/move, T)) - T = locate(/obj/move, T) - if (!( amount )) - return - if (!( flag )) - amount = min(amount, 900000.0) - src.gas.turf_take(T, amount) - return - */ //TODO: FIX - -/obj/machinery/atmoalter/siphs/proc/setstate() - - if(stat & NOPOWER) - icon_state = "siphon:0" - return - - if (src.holding) - src.icon_state = "siphon:T" - else - if (src.t_status != 3) - src.icon_state = "siphon:1" - else - src.icon_state = "siphon:0" - return - -/obj/machinery/atmoalter/siphs/fullairsiphon/New() - /* - ..() - if(!empty) - src.gas.oxygen = 2.73E7 - src.gas.n2 = 1.027E8 - return - */ //TODO: FIX - -/obj/machinery/atmoalter/siphs/fullairsiphon/port/reset(valve, auto) - - if (valve < 0) - src.t_per = -valve - src.t_status = 1 - else - if (valve > 0) - src.t_per = valve - src.t_status = 2 - else - src.t_status = 3 - if (auto) - src.t_status = 4 - src.setstate() - return - -/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent/attackby(W as obj, user as mob) - - if (istype(W, /obj/item/weapon/screwdriver)) - if (src.c_status) - src.anchored = 1 - src.c_status = 0 - else - if (locate(/obj/machinery/connector, src.loc)) - src.anchored = 1 - src.c_status = 3 - else - if (istype(W, /obj/item/weapon/wrench)) - src.alterable = !( src.alterable ) - return - -/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent/setstate() - - - if(stat & NOPOWER) - icon_state = "vent-p" - return - - if (src.t_status == 4) - src.icon_state = "vent2" - else - if (src.t_status == 3) - src.icon_state = "vent0" - else - src.icon_state = "vent1" - return - -/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent/reset(valve, auto) - - if (auto) - src.t_status = 4 - return - -/obj/machinery/atmoalter/siphs/scrubbers/process() - /* - if(stat & NOPOWER) return - - if(src.gas.temperature >= 3000) - src.melt() - - if (src.t_status != 3) - var/turf/T = src.loc - if (istype(T, /turf)) - if (locate(/obj/move, T)) - T = locate(/obj/move, T) - if (T.firelevel < 900000.0) - src.gas.turf_add_all_oxy(T) - - else - T = null - switch(src.t_status) - if(1.0) - if( !portable() ) use_power(50, ENVIRON) - if (src.holding) - var/t1 = src.gas.total_moles() - var/t2 = t1 - var/t = src.t_per - if (src.t_per > t2) - t = t2 - src.holding.gas.transfer_from(src.gas, t) - else - if (T) - var/t1 = src.gas.total_moles() - var/t2 = t1 - var/t = src.t_per - if (src.t_per > t2) - t = t2 - src.gas.turf_add(T, t) - if(2.0) - if( !portable() ) use_power(50, ENVIRON) - if (src.holding) - var/t1 = src.gas.total_moles() - var/t2 = src.maximum - t1 - var/t = src.t_per - if (src.t_per > t2) - t = t2 - src.gas.transfer_from(src.holding.gas, t) - else - if (T) - var/t1 = src.gas.total_moles() - var/t2 = src.maximum - t1 - var/t = src.t_per - if (t > t2) - t = t2 - src.gas.turf_take(T, t) - if(4.0) - if( !portable() ) use_power(50, ENVIRON) - if (T) - if (T.firelevel > 900000.0) - src.f_time = world.time + 400 - else - if (world.time > src.f_time) - src.gas.extract_toxs(T) - if( !portable() ) use_power(150, ENVIRON) - var/contain = src.gas.total_moles() - if (contain > 1.3E8) - src.gas.turf_add(T, 1.3E8 - contain) - - src.setstate() - src.updateDialog() - return - */ //TODO: FIX - -/obj/machinery/atmoalter/siphs/scrubbers/air_filter/setstate() - - if(stat & NOPOWER) - icon_state = "vent-p" - return - - if (src.t_status == 4) - src.icon_state = "vent2" - else - if (src.t_status == 3) - src.icon_state = "vent0" - else - src.icon_state = "vent1" - return - -/obj/machinery/atmoalter/siphs/scrubbers/air_filter/attackby(W as obj, user as mob) - - if (istype(W, /obj/item/weapon/screwdriver)) - if (src.c_status) - src.anchored = 1 - src.c_status = 0 - else - if (locate(/obj/machinery/connector, src.loc)) - src.anchored = 1 - src.c_status = 3 - else - if (istype(W, /obj/item/weapon/wrench)) - src.alterable = !( src.alterable ) - return - -/obj/machinery/atmoalter/siphs/scrubbers/air_filter/reset(valve, auto) - - if (auto) - src.t_status = 4 - src.setstate() - return - -/obj/machinery/atmoalter/siphs/scrubbers/port/setstate() - - if(stat & NOPOWER) - icon_state = "scrubber:0" - return - - if (src.holding) - src.icon_state = "scrubber:T" - else - if (src.t_status != 3) - src.icon_state = "scrubber:1" - else - src.icon_state = "scrubber:0" - return - -/obj/machinery/atmoalter/siphs/scrubbers/port/reset(valve, auto) - - if (valve < 0) - src.t_per = -valve - src.t_status = 1 - else - if (valve > 0) - src.t_per = valve - src.t_status = 2 - else - src.t_status = 3 - if (auto) - src.t_status = 4 - src.setstate() - return - -//true if the siphon is portable (therfore no power needed) - -/obj/machinery/proc/portable() - return istype(src, /obj/machinery/atmoalter/siphs/fullairsiphon/port) || istype(src, /obj/machinery/atmoalter/siphs/scrubbers/port) - -/obj/machinery/atmoalter/siphs/power_change() - - if( portable() ) - return - - if(!powered(ENVIRON)) - spawn(rand(0,15)) - stat |= NOPOWER - setstate() - else - stat &= ~NOPOWER - setstate() - - -/obj/machinery/atmoalter/siphs/process() - /* -// var/dbg = (suffix=="d") && Debug - - if(stat & NOPOWER) return - - if (src.t_status != 3) - var/turf/T = src.loc - if (istype(T, /turf)) - if (locate(/obj/move, T)) - T = locate(/obj/move, T) - else - T = null - switch(src.t_status) - if(1.0) - if( !portable() ) use_power(50, ENVIRON) - if (src.holding) - var/t1 = src.gas.total_moles() - var/t2 = t1 - var/t = src.t_per - if (src.t_per > t2) - t = t2 - src.holding.gas.transfer_from(src.gas, t) - else - if (T) - var/t1 = src.gas.total_moles() - var/t2 = t1 - var/t = src.t_per - if (src.t_per > t2) - t = t2 - src.gas.turf_add(T, t) - if(2.0) - if( !portable() ) use_power(50, ENVIRON) - if (src.holding) - var/t1 = src.gas.total_moles() - var/t2 = src.maximum - t1 - var/t = src.t_per - if (src.t_per > t2) - t = t2 - src.gas.transfer_from(src.holding.gas, t) - else - if (T) - var/t1 = src.gas.total_moles() - var/t2 = src.maximum - t1 - var/t = src.t_per - if (t > t2) - t = t2 - //var/g = gas.total_moles() - //if(dbg) world.log << "VP0 : [t] from turf: [gas.total_moles()]" - //if(dbg) Air() - - src.gas.turf_take(T, t) - //if(dbg) world.log << "VP1 : now [gas.total_moles()]" - - //if(dbg) world.log << "[gas.total_moles()-g] ([t]) from turf to siph" - - //if(dbg) Air() - if(4.0) - if( !portable() ) - use_power(50, ENVIRON) - - if (T) - if (T.firelevel > 900000.0) - src.f_time = world.time + 300 - else - if (world.time > src.f_time) - var/difference = CELLSTANDARD - (T.oxygen + T.n2) - if (difference > 0) - var/t1 = src.gas.total_moles() - if (difference > t1) - difference = t1 - src.gas.turf_add(T, difference) - - src.updateDialog() - - src.setstate() - return - */ //TODO: FIX - -/obj/machinery/atmoalter/siphs/attack_ai(user as mob) - return src.attack_hand(user) - -/obj/machinery/atmoalter/siphs/attack_paw(user as mob) - - return src.attack_hand(user) - return - -/obj/machinery/atmoalter/siphs/attack_hand(var/mob/user as mob) - - if(stat & NOPOWER) return - - if(src.portable() && istype(user, /mob/living/silicon/ai)) //AI can't use portable siphons - return - - user.machine = src - var/tt - switch(src.t_status) - if(1.0) - tt = text("Releasing Siphon Stop", src, src) - if(2.0) - tt = text("Release Siphoning Stop", src, src) - if(3.0) - tt = text("Release Siphon Stopped Automatic", src, src, src) - else - tt = "Automatic equalizers are on!" - var/ct = null - switch(src.c_status) - if(1.0) - ct = text("Releasing Accept Stop", src, src) - if(2.0) - ct = text("Release Accepting Stop", src, src) - if(3.0) - ct = text("Release Accept Stopped", src, src) - else - ct = "Disconnected" - var/at = null - if (src.t_status == 4) - at = text("Automatic On Stop", src) - var/dat = text("Canister Valves []
\n\tContains/Capacity [] / []
\n\tUpper Valve Status: [] []
\n\t\tM - - - - [] + + + + M
\n\tPipe Valve Status: []
\n\t\tM - - - - [] + + + + M
\n
\n\nClose
\n\t
", (!( src.alterable ) ? "Valves are locked. Unlock with wrench!" : "You can lock this interface with a wrench."), num2text(src.gas.return_pressure(), 10), num2text(src.maximum, 10), (src.t_status == 4 ? text("[]", at) : text("[]", tt)), (src.holding ? text("
(Tank ([])", src, src.holding.air_contents.return_pressure()) : null), src, num2text(max_valve, 7), src, src, src, src, src.t_per, src, src, src, src, src, num2text(max_valve, 7), ct, src, num2text(max_valve, 7), src, src, src, src, src.c_per, src, src, src, src, src, num2text(max_valve, 7), user) - user << browse(dat, "window=siphon;size=600x300") - onclose(user, "siphon") - return - -/obj/machinery/atmoalter/siphs/Topic(href, href_list) - ..() - - if (usr.stat || usr.restrained()) - return - if ((!( src.alterable )) && (!istype(usr, /mob/living/silicon/ai))) - return - if (((get_dist(src, usr) <= 1 || usr.telekinesis == 1) && istype(src.loc, /turf)) || (istype(usr, /mob/living/silicon/ai))) - usr.machine = src - if (href_list["c"]) - var/c = text2num(href_list["c"]) - switch(c) - if(1.0) - src.c_status = 1 - if(2.0) - src.c_status = 2 - if(3.0) - src.c_status = 3 - else - else - if (href_list["t"]) - var/t = text2num(href_list["t"]) - if (src.t_status == 0) - return - switch(t) - if(1.0) - src.t_status = 1 - if(2.0) - src.t_status = 2 - if(3.0) - src.t_status = 3 - if(4.0) - src.t_status = 4 - src.f_time = 1 - else - else - if (href_list["tp"]) - var/tp = text2num(href_list["tp"]) - src.t_per += tp - src.t_per = min(max(round(src.t_per), 0), max_valve) - else - if (href_list["cp"]) - var/cp = text2num(href_list["cp"]) - src.c_per += cp - src.c_per = min(max(round(src.c_per), 0), max_valve) - else - if (href_list["tank"]) - var/cp = text2num(href_list["tank"]) - if (cp == 1) - src.holding.loc = src.loc - src.holding = null - if (src.t_status == 2) - src.t_status = 3 - src.updateUsrDialog() - - src.add_fingerprint(usr) - else - usr << browse(null, "window=canister") - return - return - -/obj/machinery/atmoalter/siphs/attackby(var/obj/W as obj, mob/user as mob) - - if (istype(W, /obj/item/weapon/tank)) - if (src.holding) - return - var/obj/item/weapon/tank/T = W - user.drop_item() - T.loc = src - src.holding = T - else - if (istype(W, /obj/item/weapon/screwdriver)) - var/obj/machinery/connector/con = locate(/obj/machinery/connector, src.loc) - if (src.c_status) - src.anchored = 0 - src.c_status = 0 - user.show_message("\blue You have disconnected the siphon.") - if(con) - con.connected = null - else - if (con && !con.connected) - src.anchored = 1 - src.c_status = 3 - user.show_message("\blue You have connected the siphon.") - con.connected = src - else - user.show_message("\blue There is nothing here to connect to the siphon.") - - - else - if (istype(W, /obj/item/weapon/wrench)) - src.alterable = !( src.alterable ) - if (src.alterable) - user << "\blue You unlock the interface!" - else - user << "\blue You lock the interface!" - return - - diff --git a/code/unused/spacecraft/manufacturing.dm b/code/unused/spacecraft/manufacturing.dm deleted file mode 100644 index 9036407ac5e..00000000000 --- a/code/unused/spacecraft/manufacturing.dm +++ /dev/null @@ -1,247 +0,0 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33 - -// Entirely unfinished. Mostly just bouncing ideas off the code. - - -// Smelting -// Grinding -// Spraying -// Crate - -/obj/deploycrate - icon = 'icons/obj/mining.dmi' - icon_state = "deploycrate" - density = 1 - var/payload - -/obj/deploycrate/attack_hand(mob/user as mob) - switch(payload) - if(null) - return - //if("cloner") - // make a cloner - // blah blah - for (var/mob/V in hearers(src)) - V.show_message("[src] lets out a pneumatic hiss, its panels rapdily unfolding and expanding to produce its payload.", 2) - del(src) - - -/obj/machinery/nanosprayer - icon = 'icons/obj/mining.dmi' - icon_state = "sprayer" - density = 1 - anchored = 1 - var/payload - var/hacked = 0 - var/temp = 100 - - var/usr_density = 5 - var/usr_lastupdate = 0 - - var/time_started = 0 - - var/points = 0 - var/totalpoints = 0 - - var/state = 0 // 0 - Idle, 1 - Spraying, 2 - Done, 3 - Overheated - -obj/machinery/nanosprayer/proc/update_temp() - // 1 second : 1 degree - if(src.state == 0) - var/diff = (world.time - usr_lastupdate) * 10 - temp -= diff - if(temp < 100) - temp = 100 - usr_lastupdate = world.time - return temp - else if(src.state == 1) - var/diff = (world.time - usr_lastupdate) * 10 - diff = diff * usr_density - temp += diff - usr_lastupdate = world.time - return temp - -obj/machinery/nanosprayer/process() - src.time_started = world.time - totalpoints = lentext(payload) * rand(5,10) - if(!totalpoints) - totalpoints = 1 - while(src.state == 1) - // Each unit of cost is 20 seconds - density - temp += density * rand(1,4) - sleep(200 - (usr_density * 10)) - if(src.temp > 350) - src.state = 3 - src.overheat() - return 0 - points += usr_density - if(points >= totalpoints) - src.state = 2 - src.complete() - return 1 - - -obj/machinery/nanosprayer/proc/cooldown() - while(state != 1) - sleep(200) - temp -= rand(5,20) - if(temp < 100) - temp = 100 - return - -obj/machinery/nanosprayer/proc/overheat() - return - -obj/machinery/nanosprayer/proc/complete() - src.totalpoints = 0 - src.points = 0 - spawn() cooldown() - return - -obj/machinery/nanosprayer/attack_hand(user as mob) - var/dat - if(..()) - return - dat += text("Core Temp: [temp]�C
") - dat += text("Nanocloud Density: [usr_density] million
") - dat += text("\[- / +\]
") - if(payload) - dat += text("
Task: [payload]
") - switch(state) - if(0) - dat += text("Status: Idling
") - if(1) - dat += text("Status: Spraying
") - if(2) - dat += text("Status: Spray Task Complete
") - if(3) - dat += text("Status: OVERHEATED
") - if(state == 1) - if(points <= 0) - points = 1 - var/complete = (points * 100)/totalpoints - if(complete < 0) - complete = 0 - if(complete > 100) - complete = 100 - dat += text("Progress: [complete]%
") - if(state == 2) - dat += text("Progress: 100%
") - dat += text("\[Release Payload\]
") - dat += text("

Set Task
") - dat += text("Start Spray
") - dat += text("Cancel Spray") - dat += text("

Refresh") - user << browse("NANO SPRAY 1.1[dat]", "window=nanosprayer") - onclose(user, "nanosprayer") - -obj/machinery/nanosprayer/Topic(href, href_list) - if(..()) - return - usr.machine = src - src.add_fingerprint(usr) - if(href_list["plus"]) - usr_density += 1 - if(href_list["minus"]) - usr_density -= 1 - if(usr_density < 1) - usr_density = 1 - if(href_list["start"]) - if(state == 0) - state = 1 - spawn() src.process() - if(href_list["stop"]) - if(state == 1) - state = 0 - points = 0 - totalpoints = 0 - spawn() cooldown() - if(href_list["settask"]) - if(state == 0) - var/temppayload = input("Set a Task:", "Job Assignment") as text|null - if(temppayload) - payload = temppayload - //if(href_list["release"]) - // if(state == 2) - // Create the crate somewhere - src.updateUsrDialog() - -/obj/machinery/smelter - icon = 'icons/obj/mining.dmi' - icon_state = "sprayer" - density = 1 - anchored = 1 - var/locked = 0 - var/closed = 0 - var/state = 0 // 0 - Idle, 1 - Smelt, 2 - Cool, 3 - Clean - var/slag = 0 - var/hacked = 0 - -obj/machinery/smelter/attack_hand(user as mob) - var/dat - if(..()) - return - dat += text("

Smelt-o-Matic Control Interface

") - dat += text("The red light is [src.closed ? "off" : "on"].
") - dat += text("The green light is [src.locked ? "on" : "off"].
") - switch(slag) - if(0) - dat += text("The meter is resting at zero.
") - if(1 to 2) - dat += text("The meter is wobbling at the mid-point marker.
") - if(3) - dat += text("The meter strains, displaying its maximum value.
") - else - dat += text("The meter has broken.
") - switch(state) - if(0) - dat += text("Status:Idle
") - if(1) - dat += text("Status:Smelting
") - if(2) - dat += text("Status:Cooling
") - if(3) - dat += text("Status:Cleaning
") - dat += text("

Turn key [src.locked ? "to upper-left position" : "to upper-right position"]
") - dat += text("Flip switch [src.closed ? "up" : "down"]
") - dat += text("Push large flashing yellow button
") - user << browse("SMELTOMATIC[dat]", "window=smelter") - onclose(user, "smelter") - - -obj/machinery/smelter/Topic(href, href_list) - if(..()) - return - usr.machine = src - src.add_fingerprint(usr) - if(href_list["key"]) - src.locked = !src.locked - if(href_list["switch"]) - src.closed = !src.closed - if(href_list["button"]) - //Do stuff to actually smelt shit or something I don't know - return - src.updateUsrDialog() - - -/obj/machinery/slaggrinder - icon = 'icons/obj/mining.dmi' - - density = 1 - anchored = 1 - - - -/obj/machinery/adminmachine - icon = 'icons/obj/mining.dmi' - icon_state = "sprayer" - density = 1 - anchored = 1 - - var/gameticker - var/gameworld - - New() - ..() - gameticker = ticker - gameworld = world diff --git a/code/unused/spacecraft/shipcore.dm b/code/unused/spacecraft/shipcore.dm deleted file mode 100644 index 6df889c0b1b..00000000000 --- a/code/unused/spacecraft/shipcore.dm +++ /dev/null @@ -1,348 +0,0 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33 - -/obj/machinery/shipcore - icon = 'craft.dmi' - icon_state = "core" - density = 1 - - var/width = 6 - var/height = 8 - var/list/turfs = list() - var/list/builders - var/list/components = list() - var/build_status = "unbuilt" - - - proc/group_self() - builders = list() - turfs = list() - components = list() - - src.anchored = 1 - - var/obj/ship_builder/L = new(locate(src.x, src.y, src.z)) - L.set_dir(WEST) - L.distance = width/2 - L.core = src - - var/obj/ship_builder/R = new(locate(src.x+1, src.y, src.z)) - R.set_dir(EAST) - R.distance = (width/2)-1 - R.core = src - - builders.Add(L, R) - - spawn() L.scan() - spawn() R.scan() - - var/h - for(h=1, h[src.wires[wire] ? "Mend" : "Cut"] Pulse
") - - dat += text("The red light is [src.disabled ? "off" : "on"].
") - dat += text("The green light is [src.shocked ? "off" : "on"].
") - dat += text("The blue light is [src.hacked ? "off" : "on"].
") -*/ - switch(src.build_status) - if("unbuilt") - dat += "

Core Status: Undeployed


" - dat += "Build Ship
" - if("built") - dat += "

Core Status: Deployed


" - dat += "Move
" - if("rebuilding") - dat += "

Core Status: Recalibrating


" - user << browse("Ship Core[dat]","window=shipcore") - onclose(user, "shipcore") - return - user << browse("Ship Core Control Panel[dat]", "window=shipcore") - onclose(user, "shipcore") - return - -obj/machinery/shipcore/Topic(href, href_list) - if(..()) - return - usr.machine = src - src.add_fingerprint(usr) - if(href_list["groupself"]) - src.group_self() - if (href_list["move"]) - var/list/beacons = list() - for(var/obj/effect/ship_landing_beacon/b in world) - if(istype(b, /obj/effect/ship_landing_beacon)) - if(b.active) - beacons.Add(b) - if(!beacons.len) - return - var/obj/choice = input("Choose a beacon to land at.", "Beacon Selection") in beacons - if(choice) - src.MoveShip(choice.loc) - - for(var/mob/M in viewers(1, src)) - if ((M.client && M.machine == src)) - src.attack_hand(M) - src.updateUsrDialog() - return - - - -obj/machinery/ship_component - name = "ship component" - icon = 'craft.dmi' - var/obj/machinery/shipcore/core - var/required_draw = 0 - var/active = 1 - - proc - draw_power(var/n as num) - if(!n) - n = required_draw - if(core.draw_power(n)) - return 1 - else - return 0 - -obj/machinery/ship_component/thruster - name = "thruster" - icon_state = "thruster" - density = 1 - opacity = 1 - - var/cooldown = 600 // In 1/10th seconds - var/lastused - var/ready = 0 - required_draw = 100 - - proc - check_ready() - if(ready) - return 1 - if(lastused + cooldown <= world.time) - for(var/turf/T in range(1,src)) - if(istype(T, /turf/space)) - src.ready = 1 - break - else - src.ready = 0 - return src.ready - - fire() - src.check_ready() - if(!ready) - return 0 - if(src.draw_power()) - src.ready = 0 - src.lastused = world.time - return 1 - else - return 0 - -obj/machinery/ship_component/engine - name = "engine" - icon_state = "engine" - density = 1 - opacity = 1 - - var/charge = 1000 - var/capacity = 1000 - - draw_power(var/n as num) - if(charge >= n) - charge -= n - return 1 - else - return 0 - -obj/machinery/ship_component/control_panel - name = "control panel" - icon_state = "controlpanel" - density = 1 - opacity = 0 - - attack_hand(user as mob) - var/dat - if(..()) - return - if(!src.core) - dat += "No linked core found. Deploy ship core first." - else - dat += "Ship Status: [src.core.build_status]

" - dat += "

Installed Components:



" - dat += "" - for(var/obj/machinery/ship_component/C in core.components) - dat += "" - if(istype(C, /obj/machinery/ship_component/engine)) - dat += "" - if(istype(C, /obj/machinery/ship_component/thruster)) - dat += "" - dat += "
[C.name][C.active ? "Active" : "Inactive"]
Fuel: [C:charge]/[C:capacity]
Status: [C:check_ready() ? "Ready" : "On Cooldown"]
" - user << browse("Ship Controls[dat]","window=shipcontrols") - onclose(user, "shipcontrols") - - Topic(href, href_list) - if(..()) - return - usr.machine = src - src.add_fingerprint(usr) - - - - - - - - -/obj/ship_builder - icon = 'craft.dmi' - icon_state = "builder" - density = 0 - opacity = 0 - - var/obj/machinery/shipcore/core - var/distance = 0 - - proc/scan() - if(distance < 0) - cleanup_self() - var/i - for(i=0, iworld.maxx-4 || T.x<4) continue //putting them at the edge is dumb - if(T.y>world.maxy-4 || T.y<4) continue - turfs += T - if(!turfs.len) turfs += pick(/turf in orange(6)) - var/datum/effect/effect/system/smoke_spread/smoke = new /datum/effect/effect/system/smoke_spread() - smoke.set_up(10, 0, usr.loc) - smoke.start() - var/turf/picked = pick(turfs) - if(!isturf(picked)) return - usr.loc = picked - usr.verbs -= /client/proc/blink - spawn(40) - usr.verbs += /client/proc/blink - -//TELEPORT - -/mob/proc/teleport() - set category = "Spells" - set name = "Teleport" - set desc = "This spell teleports you to a type of area of your selection." - if(usr.stat) - src << "Not when you are incapacitated." - return - if(!usr.casting()) return - var/A - usr.verbs -= /mob/proc/teleport -/* - var/list/theareas = new/list() - for(var/area/AR in world) - if(istype(AR, /area/shuttle) || istype(AR, /area/syndicate_station)) continue - if(theareas.Find(AR.name)) continue - var/turf/picked = pick(get_area_turfs(AR.type)) - if (picked.z == src.z) - theareas += AR.name - theareas[AR.name] = AR -*/ - - A = input("Area to jump to", "BOOYEA", A) in teleportlocs - - spawn(600) - usr.verbs += /mob/proc/teleport - - var/area/thearea = teleportlocs[A] - - usr.say("SCYAR NILA [uppertext(A)]") - - var/datum/effect/effect/system/smoke_spread/smoke = new /datum/effect/effect/system/smoke_spread() - smoke.set_up(5, 0, usr.loc) - smoke.attach(usr) - smoke.start() - var/list/L = list() - for(var/turf/T in get_area_turfs(thearea.type)) - if(!T.density) - var/clear = 1 - for(var/obj/O in T) - if(O.density) - clear = 0 - break - if(clear) - L+=T - - if(!L.len) - usr <<"The spell matrix was unable to locate a suitable teleport destination for an unknown reason. Sorry." - return - - var/attempt = 0 - var/success = 0 - while(!success) - success = Move(pick(L)) - if(attempt > 20) break //Failsafe - if(!success) - usr.loc = pick(L) - - smoke.start() - - -//JAUNT - -/client/proc/jaunt() - set category = "Spells" - set name = "Ethereal Jaunt" - set desc = "This spell creates your ethereal form, temporarily making you invisible and able to pass through walls." - if(usr.stat) - src << "Not when you are incapacitated." - return - if(!usr.casting()) return - usr.verbs -= /client/proc/jaunt - spawn(300) - usr.verbs += /client/proc/jaunt - spell_jaunt(usr) - -/proc/spell_jaunt(var/mob/H, time = 50) - if(H.stat) return - spawn(0) - var/mobloc = get_turf(H.loc) - var/obj/effect/dummy/spell_jaunt/holder = new /obj/effect/dummy/spell_jaunt( mobloc ) - var/atom/movable/overlay/animation = new /atom/movable/overlay( mobloc ) - animation.name = "water" - animation.density = 0 - animation.anchored = 1 - animation.icon = 'icons/mob/mob.dmi' - animation.icon_state = "liquify" - animation.layer = 5 - animation.master = holder - flick("liquify",animation) - H.loc = holder - H.client.eye = holder - var/datum/effect/effect/system/steam_spread/steam = new /datum/effect/effect/system/steam_spread() - steam.set_up(10, 0, mobloc) - steam.start() - sleep(time) - mobloc = get_turf(H.loc) - animation.loc = mobloc - steam.location = mobloc - steam.start() - H.canmove = 0 - sleep(20) - flick("reappear",animation) - sleep(5) - if(!H.Move(mobloc)) - for(var/direction in list(1,2,4,8,5,6,9,10)) - var/turf/T = get_step(mobloc, direction) - if(T) - if(H.Move(T)) - break - H.canmove = 1 - H.client.eye = H - del(animation) - del(holder) -/* -/obj/effect/dummy/spell_jaunt - name = "water" - icon = 'icons/effects/effects.dmi' - icon_state = "nothing" - var/canmove = 1 - density = 0 - anchored = 1 - -/obj/effect/dummy/spell_jaunt/relaymove(var/mob/user, direction) - if (!src.canmove) return - switch(direction) - if(NORTH) - src.y++ - if(SOUTH) - src.y-- - if(EAST) - src.x++ - if(WEST) - src.x-- - if(NORTHEAST) - src.y++ - src.x++ - if(NORTHWEST) - src.y++ - src.x-- - if(SOUTHEAST) - src.y-- - src.x++ - if(SOUTHWEST) - src.y-- - src.x-- - src.canmove = 0 - spawn(2) src.canmove = 1 - -/obj/effect/dummy/spell_jaunt/ex_act(blah) - return -/obj/effect/dummy/spell_jaunt/bullet_act(blah,blah) - return -*/ -//MUTATE - -/client/proc/mutate() - set category = "Spells" - set name = "Mutate" - set desc = "This spell causes you to turn into a hulk and gain laser vision for a short while." - if(usr.stat) - src << "Not when you are incapacitated." - return - if(!usr.casting()) return - usr.verbs -= /client/proc/mutate - spawn(400) - usr.verbs += /client/proc/mutate - - usr.say("BIRUZ BENNAR") - - usr << text("\blue You feel strong! You feel pressure building behind your eyes!") - if (!(HULK in usr.mutations)) - usr.mutations.Add(HULK) - if (!(LASER in usr.mutations)) - usr.mutations.Add(LASER) - spawn (300) - if (LASER in usr.mutations) usr.mutations.Remove(LASER) - if (HULK in usr.mutations) usr.mutations.Remove(HULK) - return - -//BODY SWAP /N - -/mob/proc/swap(mob/living/M as mob in oview()) - set category = "Spells" - set name = "Mind Transfer" - set desc = "This spell allows the user to switch bodies with a target." - if(usr.stat) - src << "Not when you are incapacitated." - return - - if(M.client && M.mind) - if(M.mind.special_role != "Wizard" || "Fake Wizard" || "Changeling" || "Cultist" || "Space Ninja")//Wizards, changelings, ninjas, and cultists are protected. - if( (istype(M, /mob/living/carbon/human)) || (istype(M, /mob/living/carbon/monkey)) && M.stat != 2) - var/mob/living/carbon/human/H = M //so it does not freak out when looking at the variables. - var/mob/living/carbon/human/U = src - - U.whisper("GIN'YU CAPAN") - U.verbs -= /mob/proc/swap - //Remove special verbs from both mobs - if(U.mind.special_verbs.len) - for(var/V in U.mind.special_verbs) - U.verbs -= V - if(H.mind.special_verbs.len) - for(var/V in H.mind.special_verbs) - H.verbs -= V - - //empty out H - var/mob/dead/observer/G = H.ghostize(0) //Transfers H to a temporary mob - - //Start the Transfer - U.mind.transfer_to(H) - G.mind.transfer_to(U) - U.key = G.key //has to be called explicitly since ghostize() set the datum/mind/var/active = 0 - - //Re-add those special verbs and stuff - if(H.mind.special_verbs.len) - var/spell_loss = 1//Can lose only one spell during transfer. - var/probability = 95 //To determine the chance of wizard losing their spell. - for(var/V in H.mind.special_verbs) - if(spell_loss == 0) - H.verbs += V - else - if(prob(probability)) - H.verbs += V - probability -= 7//Chance of of keeping spells goes down each time a spell is added. Less spells means less chance of losing them. - else - spell_loss = 0 - H.mind.special_verbs -= V - spawn(500) - H << "The mind transfer has robbed you of a spell." - - if(U.mind.special_verbs.len)//Basic fix to swap verbs for any mob if needed. - for(var/V in U.mind.special_verbs) - U.verbs += V - - spawn(500) - U << "Something about your body doesn't seem quite right..." - - U.Paralyse(20) - H.Paralyse(20) - - spawn(600) - H.verbs += /mob/proc/swap - - else - src << "Their mind is not compatible." - return - else - src << "Their mind is resisting your spell." - return - - else - src << "They appear to be brain-dead." - return \ No newline at end of file diff --git a/code/unused/tensioner.dm b/code/unused/tensioner.dm deleted file mode 100644 index 1cf5eb2acd8..00000000000 --- a/code/unused/tensioner.dm +++ /dev/null @@ -1,876 +0,0 @@ -#define PLAYER_WEIGHT 5 -#define HUMAN_DEATH -5000 -#define OTHER_DEATH -5000 -#define EXPLO_SCORE -10000 //boum - -#define COOLDOWN_TIME 12000 // Twenty minutes -#define MIN_ROUND_TIME 18000 - - -#define FLAT_PERCENT 0 - -//estimated stats -//80 minute round -//60 player server -//48k player-ticks - -//60 deaths (ideally) -//20 explosions - - -var/global/datum/tension/tension_master - -/datum/tension - var/score - - var/deaths - var/human_deaths - var/explosions - var/adminhelps - var/air_alarms - - var/nuketeam = 0 - var/malfAI = 0 - var/wizard = 0 - - var/forcenexttick = 0 - var/supress = 0 - var/eversupressed = 0 - var/cooldown = 0 - - var/round1 = 0 - var/round2 = 0 - var/round3 = 0 - var/round4 = 0 - - var/list/antagonistmodes = null - - - - var/list/potentialgames = list() - - New() - score = 0 - deaths=0 - human_deaths=0 - explosions=0 - adminhelps=0 - air_alarms=0 - - if(FLAT_PERCENT) // I cannot into balance - antagonistmodes = list ( - "POINTS_FOR_TRATIOR" = 6, - "POINTS_FOR_CHANGLING" = 6, - "POINTS_FOR_REVS" = 3, - "POINTS_FOR_MALF" = 1, - "POINTS_FOR_WIZARD" = 2, - "POINTS_FOR_CULT" = 3, - "POINTS_FOR_NUKETEAM" = 2, - "POINTS_FOR_ALIEN" = 5, - "POINTS_FOR_NINJA" = 3, - "POINTS_FOR_DEATHSQUAD" = 2, - "POINTS_FOR_BORGDEATHSQUAD" = 2 - ) - - else - antagonistmodes = list ( - "POINTS_FOR_TRATIOR" = 100000, - "POINTS_FOR_CHANGLING" = 120000, - "POINTS_FOR_REVS" = 150000, - "POINTS_FOR_MALF" = 250000, - "POINTS_FOR_WIZARD" = 150000, - "POINTS_FOR_CULT" = 150000, - "POINTS_FOR_NUKETEAM" = 250000, - "POINTS_FOR_ALIEN" = 200000, - "POINTS_FOR_NINJA" = 200000, - "POINTS_FOR_DEATHSQUAD" = 500000, - "POINTS_FOR_BORGDEATHSQUAD" = 500000 - ) - - proc/process() - score += get_num_players()*PLAYER_WEIGHT - - if(config.Tensioner_Active) - if(world.time > MIN_ROUND_TIME) - round1++ - if(!supress && !cooldown) - if(prob(1) || forcenexttick) - round2++ - if(prob(10) || forcenexttick) - round3++ - if(forcenexttick) - forcenexttick = 0 - - for (var/client/C in admin_list) - C << " The tensioner wishes to create additional antagonists! Press (this) in 60 seconds to abort!" - - spawn(600) - if(!supress) - cooldown = 1 - spawn(COOLDOWN_TIME) - cooldown = 0 - round4++ - - if(!antagonistmodes.len) - return - - var/thegame = null - - if(FLAT_PERCENT) - thegame = pickweight(antagonistmodes) - antagonistmodes.Remove(thegame) - - else - for(var/V in antagonistmodes) // OH SHIT SOMETHING IS GOING TO HAPPEN NOW - if(antagonistmodes[V] < score) - potentialgames.Add(V) - antagonistmodes.Remove(V) - if(potentialgames.len) - thegame = pick(potentialgames) - - - if(thegame) - - - log_admin("The tensioner fired, and decided on [thegame]") - - switch(thegame) - if("POINTS_FOR_TRATIOR") - if(!makeTratiors()) - forcenexttick = 1 - else - potentialgames.Remove(thegame) - if("POINTS_FOR_CHANGLING") - if(!makeChanglings()) - forcenexttick = 1 - else - potentialgames.Remove(thegame) - if("POINTS_FOR_REVS") - if(!makeRevs()) - forcenexttick = 1 - else - potentialgames.Remove(thegame) - if("POINTS_FOR_MALF") - if(!makeMalfAImode()) - forcenexttick = 1 - else - potentialgames.Remove(thegame) - if("POINTS_FOR_WIZARD") - if(!makeWizard()) - forcenexttick = 1 - else - potentialgames.Remove(thegame) - - if("POINTS_FOR_CULT") - if(!makeCult()) - forcenexttick = 1 - else - potentialgames.Remove(thegame) - - if("POINTS_FOR_NUKETEAM") - if(!makeNukeTeam()) - forcenexttick = 1 - else - potentialgames.Remove(thegame) - - if("POINTS_FOR_ALIEN") - if(!makeAliens()) - forcenexttick = 1 - else - potentialgames.Remove(thegame) - - if("POINTS_FOR_NINJA") - if(!makeSpaceNinja()) - forcenexttick = 1 - else - potentialgames.Remove(thegame) - - if("POINTS_FOR_DEATHSQUAD") - if(!makeDeathsquad()) - forcenexttick = 1 - else - potentialgames.Remove(thegame) - - if("POINTS_FOR_BORG_DEATHSQUAD") - if(!makeBorgDeathsquad()) - forcenexttick = 1 - else - potentialgames.Remove(thegame) - - - proc/get_num_players() - var/peeps = 0 - for (var/mob/M in player_list) - if (!M.client) - continue - peeps += 1 - - return peeps - - proc/death(var/mob/M) - if (!M) return - deaths++ - - if (istype(M,/mob/living/carbon/human)) - score += HUMAN_DEATH - human_deaths++ - else - score += OTHER_DEATH - - - proc/explosion() - score += EXPLO_SCORE - explosions++ - - proc/new_adminhelp() - adminhelps++ - - proc/new_air_alarm() - air_alarms++ - - - Topic(href, href_list) - - if(!usr || !usr.client) - return //This shouldnt happen - - if(!usr.client.holder) - message_admins("\red [key_name(usr)] tried to use the tensioner without authorization.") - log_admin("[key_name(usr)] tried to use the tensioner without authorization.") - return - - log_admin("[key_name(usr)] used a tensioner override. The override was [href]") - message_admins("[key_name(usr)] used a tensioner override. The override was [href]") - - - if(href_list["addScore"]) - score += 50000 - - if (href_list["makeTratior"]) - makeTratiors() - - else if (href_list["makeChanglings"]) - makeChanglings() - - else if (href_list["makeRevs"]) - makeRevs() - - else if (href_list["makeWizard"]) - makeWizard() - - else if (href_list["makeCult"]) - makeCult() - - else if (href_list["makeMalf"]) - makeMalfAImode() - - else if (href_list["makeNukeTeam"]) - makeNukeTeam() - - else if (href_list["makeAliens"]) - makeAliens() - - else if (href_list["makeSpaceNinja"]) - makeSpaceNinja() - - else if (href_list["makeDeathsquad"]) - makeDeathsquad() - - else if (href_list["makeBorgDeathsquad"]) - makeBorgDeathsquad() - - else if (href_list["Supress"]) - supress = 1 - eversupressed++ - spawn(6000) - supress = 0 - - else if (href_list["ToggleStatus"]) - config.Tensioner_Active = !config.Tensioner_Active - - - proc/makeMalfAImode() - - var/list/mob/living/silicon/AIs = list() - var/mob/living/silicon/malfAI = null - var/datum/mind/themind = null - - for(var/mob/living/silicon/ai/ai in player_list) - if(ai.client) - AIs += ai - - if(AIs.len) - malfAI = pick(AIs) - - else - return 0 - - if(malfAI) - themind = malfAI.mind - themind.make_AI_Malf() - return 1 - -/* - if(BE_CHANGELING) roletext="changeling" - if(BE_TRAITOR) roletext="traitor" - if(BE_OPERATIVE) roletext="operative" - if(BE_WIZARD) roletext="wizard" - if(BE_REV) roletext="revolutionary" - if(BE_CULTIST) roletext="cultist" - - - for(var/mob/new_player/player in world) - if(player.client && player.ready) - if(player.preferences.be_special & role) -*/ - - - proc/makeTratiors() - - var/datum/game_mode/traitor/temp = new - - if(config.protect_roles_from_antagonist) - temp.restricted_jobs += temp.protected_jobs - - var/list/mob/living/carbon/human/candidates = list() - var/mob/living/carbon/human/H = null - - for(var/mob/living/carbon/human/applicant in player_list) - - var/datum/preferences/preferences = new - - if(applicant.stat < 2) - if(applicant.mind) - if (!applicant.mind.special_role) - if(!jobban_isbanned(applicant, "traitor") && !jobban_isbanned(applicant, "Syndicate")) - if(!(applicant.job in temp.restricted_jobs)) - if(applicant.client) - if(preferences.savefile_load(applicant, 0)) - if(preferences.be_special & BE_TRAITOR) - candidates += applicant - - if(candidates.len) - var/numTratiors = min(candidates.len, 3) - - for(var/i = 0, i300)//If more than 30 game seconds passed. - return - candidates += G - if("No") - return - - sleep(300) - - for(var/mob/dead/observer/G in candidates) - if(!G.client) - candidates.Remove(G) - - spawn(0) - if(candidates.len) - while((!theghost || !theghost.client) && candidates.len) - theghost = pick(candidates) - candidates.Remove(theghost) - if(!theghost) - return 0 - var/mob/living/carbon/human/new_character=makeBody(theghost) - new_character.mind.make_Wizard() - - return 1 // Has to return one before it knows if there's a wizard to prevent the parent from automatically selecting another game mode. - - - proc/makeCult() - - var/datum/game_mode/cult/temp = new - if(config.protect_roles_from_antagonist) - temp.restricted_jobs += temp.protected_jobs - - var/list/mob/living/carbon/human/candidates = list() - var/mob/living/carbon/human/H = null - - for(var/mob/living/carbon/human/applicant in player_list) - - var/datum/preferences/preferences = new - - if(applicant.stat < 2) - if(applicant.mind) - if (!applicant.mind.special_role) - if(!jobban_isbanned(applicant, "cultist") && !jobban_isbanned(applicant, "Syndicate")) - if(!(applicant.job in temp.restricted_jobs)) - if(applicant.client) - if(preferences.savefile_load(applicant, 0)) - if(preferences.be_special & BE_CULTIST) - candidates += applicant - - if(candidates.len) - var/numCultists = min(candidates.len, 4) -// var/list/runeWords = list() - - for(var/i = 0, i300)//If more than 30 game seconds passed. - return - candidates += G - if("No") - return - - sleep(300) - - for(var/mob/dead/observer/G in candidates) - if(!G.client) - candidates.Remove(G) - - spawn(0) - if(candidates.len) - var/numagents = 5 - syndicate_begin() - - for(var/i = 0, iAlert: The shuttle is going back!
" - - var/syndicate_commando_number = syndicate_commandos_possible //for selecting a leader - - */ - var/syndicate_leader_selected = 0 //when the leader is chosen. The last person spawned. - - //Generates a list of commandos from active ghosts. Then the user picks which characters to respawn as the commandos. - - - for(var/mob/dead/observer/G in player_list) - spawn(0) - switch(alert(G,"Do you wish to be considered for an elite syndicate strike team being sent in?","Please answer in 30 seconds!","Yes","No")) - if("Yes") - if((world.time-time_passed)>300)//If more than 30 game seconds passed. - return - candidates += G - if("No") - return - sleep(300) - - for(var/mob/dead/observer/G in candidates) - if(!G.key) - candidates.Remove(G) - - if(candidates.len) - var/numagents = 6 - //Spawns commandos and equips them. - for (var/obj/effect/landmark/L in /area/syndicate_mothership/elite_squad) - if(numagents<=0) - break - if (L.name == "Syndicate-Commando") - syndicate_leader_selected = numagents == 1?1:0 - - var/mob/living/carbon/human/new_syndicate_commando = create_syndicate_death_commando(L, syndicate_leader_selected) - - - while((!theghost || !theghost.client) && candidates.len) - theghost = pick(candidates) - candidates.Remove(theghost) - - if(!theghost) - del(new_syndicate_commando) - break - - new_syndicate_commando.key = theghost.key - new_syndicate_commando.internal = new_syndicate_commando.s_store - new_syndicate_commando.internals.icon_state = "internal1" - - //So they don't forget their code or mission. - - - new_syndicate_commando << "\blue You are an Elite Syndicate. [!syndicate_leader_selected?"commando":"LEADER"] in the service of the Syndicate. \nYour current mission is: \red [input]" - - numagents-- - - //Spawns the rest of the commando gear. - // for (var/obj/effect/landmark/L) - // if (L.name == "Commando_Manual") - //new /obj/item/weapon/gun/energy/pulse_rifle(L.loc) - // var/obj/item/weapon/paper/P = new(L.loc) - // P.info = "

Good morning soldier!. This compact guide will familiarize you with standard operating procedure. There are three basic rules to follow:
#1 Work as a team.
#2 Accomplish your objective at all costs.
#3 Leave no witnesses.
You are fully equipped and stocked for your mission--before departing on the Spec. Ops. Shuttle due South, make sure that all operatives are ready. Actual mission objective will be relayed to you by Central Command through your headsets.
If deemed appropriate, Central Command will also allow members of your team to equip assault power-armor for the mission. You will find the armor storage due West of your position. Once you are ready to leave, utilize the Special Operations shuttle console and toggle the hull doors via the other console.

In the event that the team does not accomplish their assigned objective in a timely manner, or finds no other way to do so, attached below are instructions on how to operate a Nanotrasen Nuclear Device. Your operations LEADER is provided with a nuclear authentication disk and a pin-pointer for this reason. You may easily recognize them by their rank: Lieutenant, Captain, or Major. The nuclear device itself will be present somewhere on your destination.

Hello and thank you for choosing Nanotrasen for your nuclear information needs. Today's crash course will deal with the operation of a Fission Class Nanotrasen made Nuclear Device.
First and foremost, DO NOT TOUCH ANYTHING UNTIL THE BOMB IS IN PLACE. Pressing any button on the compacted bomb will cause it to extend and bolt itself into place. If this is done to unbolt it one must completely log in which at this time may not be possible.
To make the device functional:
#1 Place bomb in designated detonation zone
#2 Extend and anchor bomb (attack with hand).
#3 Insert Nuclear Auth. Disk into slot.
#4 Type numeric code into keypad ([nuke_code]).
Note: If you make a mistake press R to reset the device.
#5 Press the E button to log onto the device.
You now have activated the device. To deactivate the buttons at anytime, for example when you have already prepped the bomb for detonation, remove the authentication disk OR press the R on the keypad. Now the bomb CAN ONLY be detonated using the timer. A manual detonation is not an option.
Note: Toggle off the SAFETY.
Use the - - and + + to set a detonation time between 5 seconds and 10 minutes. Then press the timer toggle button to start the countdown. Now remove the authentication disk so that the buttons deactivate.
Note: THE BOMB IS STILL SET AND WILL DETONATE
Now before you remove the disk if you need to move the bomb you can: Toggle off the anchor, move it, and re-anchor.

The nuclear authorization code is: [nuke_code ? nuke_code : "None provided"]

Good luck, soldier!

" - // P.name = "Spec. Ops. Manual" - - for (var/obj/effect/landmark/L in /area/shuttle/syndicate_elite) - if (L.name == "Syndicate-Commando-Bomb") - new /obj/effect/spawner/newbomb/timer/syndicate(L.loc) - // del(L) - - return 1 // Has to return one before it knows if there's a wizard to prevent the parent from automatically selecting another game mode. - - - proc/makeBorgDeathsquad() - var/list/mob/dead/observer/candidates = list() - var/mob/dead/observer/theghost = null - var/time_passed = world.time - var/list/namelist = list("Tyr","Fenrir","Lachesis","Clotho","Atropos","Nyx") - - //Generates a list of commandos from active ghosts. Then the user picks which characters to respawn as the commandos. - - for(var/mob/dead/observer/G in player_list) - spawn(0) - switch(alert(G,"Do you wish to be considered for a cyborg strike team being sent in?","Please answer in 30 seconds!","Yes","No")) - if("Yes") - if((world.time-time_passed)>300)//If more than 30 game seconds passed. - return - candidates += G - if("No") - return - sleep(300) - - for(var/mob/dead/observer/G in candidates) - if(!G.client || !G.key) - candidates.Remove(G) - - if(candidates.len) - var/numagents = 3 - - //Spawns commandos and equips them. - for (var/obj/effect/landmark/L in /area/borg_deathsquad) - if(numagents<=0) - break - if (L.name == "Borg-Deathsquad") - - var/name = pick(namelist) - namelist.Remove(name) - - var/mob/living/silicon/robot/new_borg_deathsquad = create_borg_death_commando(L, name) - - - - while((!theghost || !theghost.client) && candidates.len) - theghost = pick(candidates) - candidates.Remove(theghost) - - if(!theghost) - del(new_borg_deathsquad) - break - - new_borg_deathsquad.key = theghost.key - - //So they don't forget their code or mission. - - - new_borg_deathsquad << "You are a borg deathsquad operative. Follow your laws." - numagents-- - - //Spawns the rest of the commando gear. - // for (var/obj/effect/landmark/L) - // if (L.name == "Commando_Manual") - //new /obj/item/weapon/gun/energy/pulse_rifle(L.loc) - // var/obj/item/weapon/paper/P = new(L.loc) - // P.info = "

Good morning soldier!. This compact guide will familiarize you with standard operating procedure. There are three basic rules to follow:
#1 Work as a team.
#2 Accomplish your objective at all costs.
#3 Leave no witnesses.
You are fully equipped and stocked for your mission--before departing on the Spec. Ops. Shuttle due South, make sure that all operatives are ready. Actual mission objective will be relayed to you by Central Command through your headsets.
If deemed appropriate, Central Command will also allow members of your team to equip assault power-armor for the mission. You will find the armor storage due West of your position. Once you are ready to leave, utilize the Special Operations shuttle console and toggle the hull doors via the other console.

In the event that the team does not accomplish their assigned objective in a timely manner, or finds no other way to do so, attached below are instructions on how to operate a Nanotrasen Nuclear Device. Your operations LEADER is provided with a nuclear authentication disk and a pin-pointer for this reason. You may easily recognize them by their rank: Lieutenant, Captain, or Major. The nuclear device itself will be present somewhere on your destination.

Hello and thank you for choosing Nanotrasen for your nuclear information needs. Today's crash course will deal with the operation of a Fission Class Nanotrasen made Nuclear Device.
First and foremost, DO NOT TOUCH ANYTHING UNTIL THE BOMB IS IN PLACE. Pressing any button on the compacted bomb will cause it to extend and bolt itself into place. If this is done to unbolt it one must completely log in which at this time may not be possible.
To make the device functional:
#1 Place bomb in designated detonation zone
#2 Extend and anchor bomb (attack with hand).
#3 Insert Nuclear Auth. Disk into slot.
#4 Type numeric code into keypad ([nuke_code]).
Note: If you make a mistake press R to reset the device.
#5 Press the E button to log onto the device.
You now have activated the device. To deactivate the buttons at anytime, for example when you have already prepped the bomb for detonation, remove the authentication disk OR press the R on the keypad. Now the bomb CAN ONLY be detonated using the timer. A manual detonation is not an option.
Note: Toggle off the SAFETY.
Use the - - and + + to set a detonation time between 5 seconds and 10 minutes. Then press the timer toggle button to start the countdown. Now remove the authentication disk so that the buttons deactivate.
Note: THE BOMB IS STILL SET AND WILL DETONATE
Now before you remove the disk if you need to move the bomb you can: Toggle off the anchor, move it, and re-anchor.

The nuclear authorization code is: [nuke_code ? nuke_code : "None provided"]

Good luck, soldier!

" - // P.name = "Spec. Ops. Manual" - - - return 1 // Has to return one before it knows if there's a wizard to prevent the parent from automatically selecting another game mode. - - - proc/makeBody(var/mob/dead/observer/G_found) // Uses stripped down and bastardized code from respawn character - if(!G_found || !G_found.key) return - - //First we spawn a dude. - var/mob/living/carbon/human/new_character = new(pick(latejoin))//The mob being spawned. - - new_character.gender = pick(MALE,FEMALE) - - var/datum/preferences/A = new() - A.randomize_appearance_for(new_character) - if(new_character.gender == MALE) - new_character.real_name = "[pick(first_names_male)] [pick(last_names)]" - else - new_character.real_name = "[pick(first_names_female)] [pick(last_names)]" - new_character.name = new_character.real_name - new_character.age = rand(17,45) - - new_character.dna.ready_dna(new_character) - new_character.key = G_found.key - - return new_character - - /proc/create_syndicate_death_commando(obj/spawn_location, syndicate_leader_selected = 0) - var/mob/living/carbon/human/new_syndicate_commando = new(spawn_location.loc) - var/syndicate_commando_leader_rank = pick("Lieutenant", "Captain", "Major") - var/syndicate_commando_rank = pick("Corporal", "Sergeant", "Staff Sergeant", "Sergeant 1st Class", "Master Sergeant", "Sergeant Major") - var/syndicate_commando_name = pick(last_names) - - new_syndicate_commando.gender = pick(MALE, FEMALE) - - var/datum/preferences/A = new()//Randomize appearance for the commando. - A.randomize_appearance_for(new_syndicate_commando) - - new_syndicate_commando.real_name = "[!syndicate_leader_selected ? syndicate_commando_rank : syndicate_commando_leader_rank] [syndicate_commando_name]" - new_syndicate_commando.name = new_syndicate_commando.real_name - new_syndicate_commando.age = !syndicate_leader_selected ? rand(23,35) : rand(35,45) - - new_syndicate_commando.dna.ready_dna(new_syndicate_commando)//Creates DNA. - - //Creates mind stuff. - new_syndicate_commando.mind_initialize() - new_syndicate_commando.mind.assigned_role = "MODE" - new_syndicate_commando.mind.special_role = "Syndicate Commando" - - //Adds them to current traitor list. Which is really the extra antagonist list. - ticker.mode.traitors += new_syndicate_commando.mind - new_syndicate_commando.equip_syndicate_commando(syndicate_leader_selected) - - return new_syndicate_commando - - - - - - /proc/create_borg_death_commando(obj/spawn_location, name) - - var/mob/living/silicon/robot/new_borg_deathsquad = new(spawn_location.loc, 1) - - new_borg_deathsquad.real_name = name - new_borg_deathsquad.name = name - - //Creates mind stuff. - new_borg_deathsquad.mind_initialize() - new_borg_deathsquad.mind.assigned_role = "MODE" - new_borg_deathsquad.mind.special_role = "Borg Commando" - - //Adds them to current traitor list. Which is really the extra antagonist list. - ticker.mode.traitors += new_borg_deathsquad.mind - //del(spawn_location) // Commenting this out for multiple commando teams. - return new_borg_deathsquad - - - - - -/obj/machinery/computer/Borg_station - name = "Cyborg Station Terminal" - icon = 'icons/obj/computer.dmi' - icon_state = "syndishuttle" - req_access = list() - var/temp = null - var/hacked = 0 - var/jumpcomplete = 0 - -/obj/machinery/computer/Borg_station/attack_hand() - if(jumpcomplete) - return - if(alert(usr, "Are you sure you want to send a cyborg deathsquad?", "Confirmation", "Yes", "No") == "Yes") - var/area/start_location = locate(/area/borg_deathsquad/start) - var/area/end_location = locate(/area/borg_deathsquad/station) - - var/list/dstturfs = list() - var/throwy = world.maxy - - for(var/turf/T in end_location) - dstturfs += T - if(T.y < throwy) - throwy = T.y - - // hey you, get out of the way! - for(var/turf/T in dstturfs) - // find the turf to move things to - var/turf/D = locate(T.x, throwy - 1, 1) - //var/turf/E = get_step(D, SOUTH) - for(var/atom/movable/AM as mob|obj in T) - AM.Move(D) - if(istype(T, /turf/simulated)) - del(T) - - start_location.move_contents_to(end_location) - - for(var/obj/machinery/door/poddoor/P in end_location) - P.open() - jumpcomplete = 1 - command_alert("DRADIS contact! Set condition one throughout the station!") diff --git a/code/unused/toilets.dm b/code/unused/toilets.dm deleted file mode 100644 index f943a1cc548..00000000000 --- a/code/unused/toilets.dm +++ /dev/null @@ -1,96 +0,0 @@ -/* -CONTAINS: -TOILET - -/obj/item/weapon/storage/toilet - name = "toilet" - w_class = 4.0 - anchored = 1.0 - density = 0.0 - var/status = 0.0 - var/clogged = 0.0 - anchored = 1.0 - icon = 'icons/obj/stationobjs.dmi' - icon_state = "toilet" - item_state = "syringe_kit" - -/obj/item/weapon/storage/toilet/attackby(obj/item/weapon/W as obj, mob/user as mob) - ..() - if (src.contents.len >= 7) - user << "The toilet is clogged!" - return - if (istype(W, /obj/item/weapon/disk/nuclear)) - user << "This is far too important to flush!" - return - if (istype(W, /obj/item/weapon/storage/)) - return - if (istype(W, /obj/item/weapon/grab)) - playsound(src.loc, 'sound/effects/slosh.ogg', 50, 1) - for(var/mob/O in viewers(user, null)) - O << text("\blue [] gives [] a swirlie!", user, W) - return - var/t - for(var/obj/item/weapon/O in src) - t += O.w_class - t += W.w_class - if (t > 30) - user << "You cannot fit the item inside." - return - user.u_equip(W) - W.loc = src - if ((user.client && user.s_active != src)) - user.client.screen -= W - src.orient2hud(user) - W.dropped(user) - add_fingerprint(user) - for(var/mob/O in viewers(user, null)) - O.show_message(text("\blue [] has put [] in []!", user, W, src), 1) - return - -/obj/item/weapon/storage/toilet/MouseDrop_T(mob/M as mob, mob/user as mob) - if (!ticker) - user << "You can't help relieve anyone before the game starts." - return - if ((!( istype(M, /mob) ) || get_dist(src, user) > 1 || M.loc != src.loc || user.restrained() || usr.stat)) - return - if (M == usr) - for(var/mob/O in viewers(user, null)) - if ((O.client && !( O.blinded ))) - O << text("\blue [] sits on the toilet.", user) - else - for(var/mob/O in viewers(user, null)) - if ((O.client && !( O.blinded ))) - O << text("\blue [] is seated on the toilet by []!", M, user) - M.anchored = 1 - M.buckled = src - M.loc = src.loc - src.add_fingerprint(user) - return - -/obj/item/weapon/storage/toilet/attack_hand(mob/user as mob) - for(var/mob/M in src.loc) - if (M.buckled) - if (M != user) - for(var/mob/O in viewers(user, null)) - if ((O.client && !( O.blinded ))) - O << text("\blue [] is zipped up by [].", M, user) - else - for(var/mob/O in viewers(user, null)) - if ((O.client && !( O.blinded ))) - O << text("\blue [] zips up.", M) -// world << "[M] is no longer buckled to [src]" - M.anchored = 0 - M.buckled = null - src.add_fingerprint(user) - if((src.clogged < 1) || (src.contents.len < 7) || (user.loc != src.loc)) - for(var/mob/O in viewers(user, null)) - O << text("\blue [] flushes the toilet.", user) - src.clogged = 0 - src.contents.len = 0 - else if((src.clogged >= 1) || (src.contents.len >= 7) || (user.buckled != src.loc)) - for(var/mob/O in viewers(user, null)) - O << text("\blue The toilet is clogged!") - return - - -*/ \ No newline at end of file diff --git a/code/unused/traps.dm b/code/unused/traps.dm deleted file mode 100644 index 94681d1929d..00000000000 --- a/code/unused/traps.dm +++ /dev/null @@ -1,225 +0,0 @@ -/obj/effect/pressure_plate - name = "pressure plate" - desc = "A pressure plate that triggers a trap or a few of them." - density = 0 - var/list/connected_traps_names = list() //mappers, edit this when you place pressure plates on the map. don't forget to make the connected traps have an UNIQUE name - var/list/connected_traps = list() //actual references to the connected traps. leave empty, it is generated at runtime from connected_traps_names - var/trigger_type = "mob and obj" //can be "mob", "obj" or "mob and obj", the only moveable types - -/obj/effect/pressure_plate/New() - ..() - src:visibility = 0 - refresh() - -/obj/effect/pressure_plate/verb/refresh() - set name = "Refresh Pressure Plate Links" - set category = "Object" - set src in view() - connected_traps = list() //emptying the list first - for(var/trap_name in connected_traps_names) - for(var/obj/effect/trap/the_trap in world) - if(the_trap.name == trap_name) - connected_traps += the_trap //adding the trap with the matching name - -/obj/effect/pressure_plate/HasEntered(atom/victim as mob|obj) - if(victim.density && (trigger_type == "mob and obj" || (trigger_type == "mob" && istype(victim,/mob)) || (trigger_type == "obj" && istype(victim,/obj)))) - for(var/obj/effect/trap/T in connected_traps) - T.trigger(victim) - -/obj/effect/pressure_plate/Bumped(atom/victim as mob|obj) - if(victim.density && (trigger_type == "mob and obj" || (trigger_type == "mob" && istype(victim,/mob)) || (trigger_type == "obj" && istype(victim,/obj)))) - for(var/obj/effect/trap/T in connected_traps) - T.trigger(victim) - -/obj/effect/trap //has three subtypes - /aoe, /area (ie affects an entire area), /single (only the victim is affected) - name = "trap" - desc = "It's a trap!" - density = 0 - var/uses = 1 //how many times it can be triggered - var/trigger_type = "mob and obj" //can be "mob", "obj" or "mob and obj", the only moveable types. can also be "none" to not be triggered by entering its square (needs to have a pressure plate attached in that case) - var/target_type = "mob" //if it targets mobs, turfs or objs - var/include_dense = 1 //if it includes dense targets in the aoe (may be important for some reason). you'll probably want to change it to 1 if you target mobs or objs - -/obj/effect/trap/New() - ..() - src:visibility = 0 //seriously, it keeps saying "undefined var" when I try to do it in the define - -/obj/effect/trap/HasEntered(victim as mob|obj) - if(trigger_type == "mob and obj" || (trigger_type == "mob" && istype(victim,/mob)) || (trigger_type == "obj" && istype(victim,/obj))) - trigger(victim) - -/obj/effect/trap/Bumped(victim as mob|obj) - if(trigger_type == "mob and obj" || (trigger_type == "mob" && istype(victim,/mob)) || (trigger_type == "obj" && istype(victim,/obj))) - trigger(victim) - -/obj/effect/trap/proc/trigger(victim) - if(!uses) - return - uses-- - activate(victim) - -/obj/effect/trap/proc/activate() - -/obj/effect/trap/aoe - name = "aoe trap" - desc = "This trap affects a number of mobs, turfs or objs in an aoe" - var/aoe_radius = 3 //radius of aoe - var/aoe_range_or_view = "view" //if it includes all tiles in [radius] range or view - -/obj/effect/trap/aoe/proc/picktargets() - - var/list/targets = list() - - switch(target_type) - if("turf") - switch(aoe_range_or_view) - if("view") - for(var/turf/T in view(src,aoe_radius)) - if(!T.density || include_dense) - targets += T - if("range") - for(var/turf/T in range(src,aoe_radius)) - if(!T.density || include_dense) - targets += T - if("mob") - switch(aoe_range_or_view) - if("view") - for(var/mob/living/M in view(src,aoe_radius)) - if(!M.density || include_dense) - targets += M - if("range") - for(var/mob/living/M in range(src,aoe_radius)) - if(!M.density || include_dense) - targets += M - if("obj") - switch(aoe_range_or_view) - if("view") - for(var/obj/O in view(src,aoe_radius)) - if(!O.density || include_dense) - targets += O - if("range") - for(var/obj/O in range(src,aoe_radius)) - if(!O.density || include_dense) - targets += O - - return targets - -/obj/effect/trap/aoe/rocksfall - name = "rocks fall trap" - desc = "Your DM must really hate you." - target_type = "turf" - include_dense = 0 - var/rocks_amt = 10 //amount of rocks falling - var/rocks_min_dmg = 50 //min damage per rock - var/rocks_max_dmg = 100 //max damage per rock - var/rocks_hit_chance = 100 //the chance for a rock to hit you - var/list/rocks_type = list() //what rocks might it drop on the target. with var editing, not even limited to rocks. - -/obj/effect/trap/aoe/rocksfall/New() - - ..() - - rocks_type = pick_rock_types() - -/obj/effect/trap/aoe/rocksfall/proc/pick_rock_types() //since we may want subtypes of the trap with completely different rock types, which is best done this way - - var/list/varieties = list() - - varieties = typesof(/obj/item/weapon/ore) - varieties -= /obj/item/weapon/ore/diamond //don't want easily available rare ores, hmm? - varieties -= /obj/item/weapon/ore/uranium - varieties -= /obj/item/weapon/ore/slag //that'd be just stupid - - return varieties - -/obj/effect/trap/aoe/rocksfall/activate() - - var/list/targets = list() - targets = picktargets() - - if(target_type == "turf") - for(var/i=0,i 0) - step(src, src.dir) - sleep(1) - t1-- - else - var/t1 = round(src.speed / 5) - while(t1 > 0) - step(src, src.dir) - t1-- - return - -/obj/machinery/vehicle/meteorhit(var/obj/O as obj) - for (var/obj/item/I in src) - I.loc = src.loc - - for (var/mob/M in src) - M.loc = src.loc - if (M.client) - M.client.eye = M.client.mob - M.client.perspective = MOB_PERSPECTIVE - del(src) - -/obj/machinery/vehicle/ex_act(severity) - switch (severity) - if (1.0) - for(var/atom/movable/A as mob|obj in src) - A.loc = src.loc - ex_act(severity) - //SN src = null - del(src) - if(2.0) - if (prob(50)) - for(var/atom/movable/A as mob|obj in src) - A.loc = src.loc - ex_act(severity) - //SN src = null - del(src) - -/obj/machinery/vehicle/blob_act() - for(var/atom/movable/A as mob|obj in src) - A.loc = src.loc - del(src) - -/obj/machinery/vehicle/Bump(var/atom/A) - //world << "[src] bumped into [A]" - spawn (0) - ..() - src.speed = 0 - return - return - -/obj/machinery/vehicle/relaymove(mob/user as mob, direction) - if (user.stat) - return - - if ((user in src)) - if (direction & 1) - src.speed = max(src.speed - 1, 1) - else if (direction & 2) - src.speed = min(src.maximum_speed, src.speed + 1) - else if (src.can_rotate && direction & 4) - src.set_dir(turn(src.dir, -90.0)) - else if (src.can_rotate && direction & 8) - src.set_dir(turn(src.dir, 90)) - else if (direction & 16 && src.can_maximize_speed) - src.speed = src.maximum_speed - -/obj/machinery/vehicle/verb/eject() - set src = usr.loc - - if (usr.stat) - return - - var/mob/M = usr - M.loc = src.loc - if (M.client) - M.client.eye = M.client.mob - M.client.perspective = MOB_PERSPECTIVE - step(M, turn(src.dir, 180)) - return - -/obj/machinery/vehicle/verb/board() - set src in oview(1) - - if (usr.stat) - return - - if (src.one_person_only && locate(/mob, src)) - usr << "There is no room! You can only fit one person." - return - - var/mob/M = usr - if (M.client) - M.client.perspective = EYE_PERSPECTIVE - M.client.eye = src - - M.loc = src - -/obj/machinery/vehicle/verb/unload(var/atom/movable/A in src) - set src in oview(1) - - if (usr.stat) - return - - if (istype(A, /atom/movable)) - A.loc = src.loc - for(var/mob/O in view(src, null)) - if ((O.client && !(O.blinded))) - O << text("\blue [] unloads [] from []!", usr, A, src) - - if (ismob(A)) - var/mob/M = A - if (M.client) - M.client.perspective = MOB_PERSPECTIVE - M.client.eye = M - -/obj/machinery/vehicle/verb/load() - set src in oview(1) - - if (usr.stat) - return - - if (((istype(usr, /mob/living/carbon/human)) && (!(ticker) || (ticker && ticker.mode != "monkey")))) - var/mob/living/carbon/human/H = usr - - if ((H.pulling && !(H.pulling.anchored))) - if (src.one_person_only && !(istype(H.pulling, /obj/item/weapon))) - usr << "You may only place items in." - else - H.pulling.loc = src - if (ismob(H.pulling)) - var/mob/M = H.pulling - if (M.client) - M.client.perspective = EYE_PERSPECTIVE - M.client.eye = src - - for(var/mob/O in viewers(src, null)) - if ((O.client && !( O.blinded ))) - O << text("\blue [] loads [] into []!", H, H.pulling, src) - - H.stop_pulling() - - -/obj/machinery/vehicle/space_ship - icon = 'escapepod.dmi' - icon_state = "pod" - var/datum/global_iterator/space_ship_inertial_movement/pr_inertial_movement - var/datum/global_iterator/space_ship_speed_increment/pr_speed_increment - var/last_relay = 0 - var/obj/machinery/portable_atmospherics/canister/internal_tank - var/health = 100 - var/datum/effects/system/spark_spread/spark_system = new - - New() - ..() - internal_tank = new /obj/machinery/portable_atmospherics/canister/air(src) - pr_inertial_movement = new /datum/global_iterator/space_ship_inertial_movement(list(src),0) - pr_speed_increment = new /datum/global_iterator/space_ship_speed_increment(list(src),0) - src.spark_system.set_up(2, 0, src) - src.spark_system.attach(src) - return - - proc/inspace() - if(istype(src.loc, /turf/space)) - return 1 - return 0 - - remove_air(amount) - if(src.internal_tank) - return src.internal_tank.air_contents.remove(amount) - else - var/turf/T = get_turf(src) - return T.remove_air(amount) - - return_air() - if(src.internal_tank) - return src.internal_tank.return_air() - return - - proc/return_pressure() - if(src.internal_tank) - return src.internal_tank.return_pressure() - return 0 - - proc/return_temperature() - if(src.internal_tank) - return src.internal_tank.return_temperature() - return 0 - - Bump(var/atom/movable/A) - if(istype(A)) - step(A, src.dir) - else - if(pr_inertial_movement.cur_delay<2) - take_damage(25) - pr_speed_increment.stop() - pr_inertial_movement.stop() - return - - proc/take_damage(value) - if(isnum(value)) - src.health -= value - if(src.health>0) - src.spark_system.start() -// world << "[src] health is [health]" - else - src.ex_act(1) - return - - process() - return - - proc/get_desired_speed() - return (pr_inertial_movement.max_delay-pr_inertial_movement.desired_delay)/(pr_inertial_movement.max_delay-pr_inertial_movement.min_delay)*100 - - proc/get_current_speed() - return (pr_inertial_movement.max_delay-pr_inertial_movement.cur_delay)/(pr_inertial_movement.max_delay-pr_inertial_movement.min_delay)*100 - -/obj/machinery/vehicle/space_ship/relaymove(mob/user as mob, direction) - spawn() - if (user.stat || world.time-last_relay<2) - return - last_relay = world.time - var/speed_change = 0 - if(direction & NORTH) - pr_inertial_movement.desired_delay = between(pr_inertial_movement.min_delay, pr_inertial_movement.desired_delay-1, pr_inertial_movement.max_delay) - speed_change = 1 - else if (direction & SOUTH) - pr_inertial_movement.desired_delay = between(pr_inertial_movement.min_delay, pr_inertial_movement.desired_delay+1, pr_inertial_movement.max_delay) - speed_change = 1 - else if (src.can_rotate && direction & 4) - src.set_dir(turn(src.dir, -90.0)) - else if (src.can_rotate && direction & 8) - src.set_dir(turn(src.dir, 90)) - if(speed_change) -// user << "Desired speed: [get_desired_speed()]%" - src.pr_speed_increment.start() - src.pr_inertial_movement.start() - return - -//should try two directional iterator datums, one for vertical, one for horizontal movement. -/datum/global_iterator/space_ship_inertial_movement - delay = 1 - var/min_delay = 0 - var/max_delay = 15 - var/desired_delay - var/cur_delay - var/last_move - - New() - ..() - desired_delay = max_delay - cur_delay = max_delay - - stop() - src.cur_delay = max_delay - src.desired_delay = max_delay - return ..() - - process(var/obj/machinery/vehicle/space_ship/SS as obj) - if(cur_delay >= max_delay) - return src.stop() - if(world.time - last_move < cur_delay) - return - last_move = world.time -/* - if(src.delay>=SS.max_delay) - return src.stop() -*/ - if(!step(SS, SS.dir) || !SS.inspace()) - src.stop() - return - - proc/set_desired_delay(var/num as num) - src.desired_delay = num - return - -/datum/global_iterator/space_ship_speed_increment - delay = 5 - - process(var/obj/machinery/vehicle/space_ship/SS as obj) - if(SS.pr_inertial_movement.desired_delay!=SS.pr_inertial_movement.cur_delay) - var/delta = SS.pr_inertial_movement.desired_delay - SS.pr_inertial_movement.cur_delay - SS.pr_inertial_movement.cur_delay += delta>0?1:-1 -/* - for(var/mob/M in SS) - M << "Current speed: [SS.get_current_speed()]" -*/ - else - src.stop() - return From 71b19d5d8f2e7bca5d410a09dd8bf54858169628 Mon Sep 17 00:00:00 2001 From: Chinsky Date: Tue, 3 Feb 2015 18:44:26 +0300 Subject: [PATCH 51/51] Stupid typo & missing constants --- code/modules/clothing/head/misc_special.dm | 2 +- code/modules/mob/living/living_defines.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index 22f9295b82f..5eb7e0c65bc 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -159,4 +159,4 @@ desc = "You can hear the distant sounds of rhythmic electronica." icon_state = "richard" body_parts_covered = HEAD|FACE - flags = FPRINT|TABLEPASS|HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR \ No newline at end of file + flags = HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR \ No newline at end of file diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index d265e8fc15a..a9cbcbe0dde 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -40,4 +40,4 @@ var/silent = null // Can't talk. Value goes down every life proc. var/mob_size // Used by lockers. var/on_fire = 0 //The "Are we on fire?" var - var/fire_st + var/fire_stacks